From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 09:55:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 09:55:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJa5T-0006eB-1w; Wed, 01 Apr 2020 09:55:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJa5S-0006e4-MM
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:06 +0000
X-Inumbo-ID: dc0f6713-73fe-11ea-ba8a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dc0f6713-73fe-11ea-ba8a-12813bfff9fa;
 Wed, 01 Apr 2020 09:55:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=fIDaBrNElUR70ykhbGKtKPnx4Q9NOdkLSeqbtAmtfjc=; b=ZS0AOfeTwOoLBAlwVPIR6LADDz
 anaCmId+SfqR6OrzZk6zkX9/ZpNCByFPZQfiuzdlX5k65iXQhYWj6bhufAaNuqFuc6tCpxOVTK1rA
 zdTOUuQMiZgWjbzcTffAbhl8bbxb0J1iDtW7LQrm/MXZN0/VTPrNQO/WpM1HmiZ+Y+tk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJa5Q-0007Rb-Ok
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJa5Q-0002uK-Nz
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJa5Q-0002uK-Nz@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 09:55:04 +0000
Subject: [Xen-changelog] [xen staging] xen/arm: Rename all early printk macro
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDM3MGY0NGZhNzMwMDRlOWUxOWNmZjliMWU2NWVlN2VhNjFiNTU3MDAKQXV0aG9yOiAg
ICAgQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CkF1dGhvckRhdGU6
IFR1ZSBNYXIgMzEgMTE6MzA6NDUgMjAyMCArMDEwMApDb21taXQ6ICAgICBKdWxpZW4gR3JhbGwg
PGpncmFsbEBhbWF6b24uY29tPgpDb21taXREYXRlOiBXZWQgQXByIDEgMTA6NDk6MjkgMjAyMCAr
MDEwMAoKICAgIHhlbi9hcm06IFJlbmFtZSBhbGwgZWFybHkgcHJpbnRrIG1hY3JvCiAgICAKICAg
IFdlIGFyZSBnb2luZyB0byBtb3ZlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBlYXJseSBwcmludGsg
bWFjcm8gaW50bwogICAgS2NvbmZpZy4gVGhpcyBtZWFucyBhbGwgbWFjcm8gd2lsbCBiZSBwcmVm
aXggd2l0aCBDT05GSUdfLiBXZSBkbyB0aGF0CiAgICBhaGVhZCBvZiB0aGUgY2hhbmdlLgogICAg
CiAgICBXZSBhbHNvIHRha2UgdGhlIG9wcG9ydHVuaXR5IHRvIGJldHRlciBuYW1lIHNvbWUgdmFy
aWFibGVzLCB3aGljaCBhcmUKICAgIHVzZWQgYnkgb25seSBvbmUgZHJpdmVyIGFuZCB3b3VsZG4n
dCBtYWtlIHNlbnMgZm9yIG90aGVyIFVBUlQgZHJpdmVyLgogICAgVGh1cywKICAgICAgICAtIEVB
UkxZX1VBUlRfUkVHX1NISUZUIGJlY2FtZSBDT05GSUdfRUFSTFlfVUFSVF84MjUwX1JFR19TSElG
VAogICAgICAgIC0gRUFSTFlfUFJJTlRLX1ZFUlNJT05fKiBiZWNhbWUgQ09ORklHX0VBUkxZX1VB
UlRfU0NJRl9WRVJTSU9OXyoKICAgIAogICAgVGhlIG90aGVyIHZhcmlhYmxlcyBhcmUgY2hhbmdl
IHRvIGhhdmUgdGhlIHByZWZpeCBDT05GSUdfRUFSTFlfVUFSVF8KICAgIHdoZW4gdGhleSBjaGFu
Z2UgYSBwYXJhbWV0ZXIgb2YgdGhlIGRyaXZlci4gU28gd2UgaGF2ZSBub3c6CiAgICAgICAgLSBD
T05GSUdfRUFSTFlfVUFSVF9CQVVEX1JBVEUKICAgICAgICAtIENPTkZJR19FQVJMWV9VQVJUX0JB
U0VfQUREUkVTUwogICAgICAgIC0gQ09ORklHX0VBUkxZX1VBUlRfSU5JVAogICAgCiAgICBTaWdu
ZWQtb2ZmLWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KICAg
IEFja2VkLWJ5OiBKdWxpZW4gR3JhbGwgPGpncmFsbEBhbWF6b24uY29tPgogICAgVGVzdGVkLWJ5
OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Ci0tLQogeGVuL2Fy
Y2gvYXJtL1J1bGVzLm1rICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCiB4ZW4vYXJj
aC9hcm0vYXJtMzIvZGVidWctODI1MC5pbmMgIHwgIDIgKy0KIHhlbi9hcmNoL2FybS9hcm0zMi9k
ZWJ1Zy1wbDAxMS5pbmMgfCAgNCArKy0tCiB4ZW4vYXJjaC9hcm0vYXJtMzIvZGVidWctc2NpZi5p
bmMgIHwgIDQgKystLQogeGVuL2FyY2gvYXJtL2FybTMyL2RlYnVnLlMgICAgICAgICB8ICA0ICsr
LS0KIHhlbi9hcmNoL2FybS9hcm0zMi9oZWFkLlMgICAgICAgICAgfCAxMCArKysrKy0tLS0tCiB4
ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWctODI1MC5pbmMgIHwgIDQgKystLQogeGVuL2FyY2gvYXJt
L2FybTY0L2RlYnVnLXBsMDExLmluYyB8ICA0ICsrLS0KIHhlbi9hcmNoL2FybS9hcm02NC9kZWJ1
Zy5TICAgICAgICAgfCAgNCArKy0tCiB4ZW4vYXJjaC9hcm0vYXJtNjQvaGVhZC5TICAgICAgICAg
IHwgMTAgKysrKystLS0tLQogeGVuL2luY2x1ZGUvYXNtLWFybS9lYXJseV9wcmludGsuaCB8ICAy
ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vUnVsZXMubWsgYi94ZW4vYXJjaC9hcm0vUnVsZXMu
bWsKaW5kZXggMDIyYTNhNmY4Mi4uZmFhMDllYTExMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt
L1J1bGVzLm1rCisrKyBiL3hlbi9hcmNoL2FybS9SdWxlcy5tawpAQCAtNjYsOSArNjYsOSBAQCBl
bmRpZgogZW5kaWYKIGlmZXEgKCQoRUFSTFlfUFJJTlRLX0lOQyksc2NpZikKIGlmbmVxICgkKHdv
cmQgMywkKEVBUkxZX1BSSU5US19DRkcpKSwpCi1DRkxBR1MteSArPSAtREVBUkxZX1BSSU5US19W
RVJTSU9OXyQod29yZCAzLCQoRUFSTFlfUFJJTlRLX0NGRykpCitDRkxBR1MteSArPSAtRENPTkZJ
R19FQVJMWV9VQVJUX1NDSUZfVkVSU0lPTl8kKHdvcmQgMywkKEVBUkxZX1BSSU5US19DRkcpKQog
ZWxzZQotQ0ZMQUdTLXkgKz0gLURFQVJMWV9QUklOVEtfVkVSU0lPTl9OT05FCitDRkxBR1MteSAr
PSAtRENPTkZJR19FQVJMWV9VQVJUX1NDSUZfVkVSU0lPTl9OT05FCiBlbmRpZgogZW5kaWYKIApA
QCAtNzcsMTEgKzc3LDExIEBAIEVBUkxZX1BSSU5USyA6PSB5CiBlbmRpZgogCiBDRkxBR1MtJChF
QVJMWV9QUklOVEspICs9IC1EQ09ORklHX0VBUkxZX1BSSU5USwotQ0ZMQUdTLSQoRUFSTFlfUFJJ
TlRLX0lOSVRfVUFSVCkgKz0gLURFQVJMWV9QUklOVEtfSU5JVF9VQVJUCi1DRkxBR1MtJChFQVJM
WV9QUklOVEspICs9IC1ERUFSTFlfUFJJTlRLX0lOQz1cImRlYnVnLSQoRUFSTFlfUFJJTlRLX0lO
QykuaW5jXCIKLUNGTEFHUy0kKEVBUkxZX1BSSU5USykgKz0gLURFQVJMWV9QUklOVEtfQkFVRD0k
KEVBUkxZX1BSSU5US19CQVVEKQotQ0ZMQUdTLSQoRUFSTFlfUFJJTlRLKSArPSAtREVBUkxZX1VB
UlRfQkFTRV9BRERSRVNTPSQoRUFSTFlfVUFSVF9CQVNFX0FERFJFU1MpCi1DRkxBR1MtJChFQVJM
WV9QUklOVEspICs9IC1ERUFSTFlfVUFSVF9SRUdfU0hJRlQ9JChFQVJMWV9VQVJUX1JFR19TSElG
VCkKK0NGTEFHUy0kKEVBUkxZX1BSSU5US19JTklUX1VBUlQpICs9IC1EQ09ORklHX0VBUkxZX1VB
UlRfSU5JVAorQ0ZMQUdTLSQoRUFSTFlfUFJJTlRLKSArPSAtRENPTkZJR19FQVJMWV9QUklOVEtf
SU5DPVwiZGVidWctJChFQVJMWV9QUklOVEtfSU5DKS5pbmNcIgorQ0ZMQUdTLSQoRUFSTFlfUFJJ
TlRLKSArPSAtRENPTkZJR19FQVJMWV9VQVJUX1BMMDExX0JBVURfUkFURT0kKEVBUkxZX1BSSU5U
S19CQVVEKQorQ0ZMQUdTLSQoRUFSTFlfUFJJTlRLKSArPSAtRENPTkZJR19FQVJMWV9VQVJUX0JB
U0VfQUREUkVTUz0kKEVBUkxZX1VBUlRfQkFTRV9BRERSRVNTKQorQ0ZMQUdTLSQoRUFSTFlfUFJJ
TlRLKSArPSAtRENPTkZJR19FQVJMWV9VQVJUXzgyNTBfUkVHX1NISUZUPSQoRUFSTFlfVUFSVF9S
RUdfU0hJRlQpCiAKIGVsc2UgIyAhQ09ORklHX0RFQlVHCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNo
L2FybS9hcm0zMi9kZWJ1Zy04MjUwLmluYyBiL3hlbi9hcmNoL2FybS9hcm0zMi9kZWJ1Zy04MjUw
LmluYwppbmRleCAwNzU5YTI3ZWUxLi5jNDdlOGJlNGFhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9h
cm0vYXJtMzIvZGVidWctODI1MC5pbmMKKysrIGIveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVnLTgy
NTAuaW5jCkBAIC0yMyw3ICsyMyw3IEBACiAgKi8KIC5tYWNybyBlYXJseV91YXJ0X3JlYWR5IHJi
IHJjCiAxOgotICAgICAgICBsZHIgICAgIFxyYywgW1xyYiwgIyhVQVJUX0xTUiA8PCBFQVJMWV9V
QVJUX1JFR19TSElGVCldIC8qIFJlYWQgTFNSICovCisgICAgICAgIGxkciAgICAgXHJjLCBbXHJi
LCAjKFVBUlRfTFNSIDw8IENPTkZJR19FQVJMWV9VQVJUXzgyNTBfUkVHX1NISUZUKV0gLyogUmVh
ZCBMU1IgKi8KICAgICAgICAgdHN0ICAgICBccmMsICNVQVJUX0xTUl9USFJFICAgICAvKiBDaGVj
ayBYbWl0IGhvbGRpbmcgcmVnaXN0ZXIgZmxhZyAqLwogICAgICAgICBiZXEgICAgIDFiICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIFdhaXQgZm9yIHRoZSBVQVJUIHRvIGJlIHJlYWR5ICovCiAu
ZW5kbQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVnLXBsMDExLmluYyBiL3hl
bi9hcmNoL2FybS9hcm0zMi9kZWJ1Zy1wbDAxMS5pbmMKaW5kZXggZWM0NjJlYWJhYi4uMjE0ZjY4
ZGM5NSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVnLXBsMDExLmluYworKysg
Yi94ZW4vYXJjaC9hcm0vYXJtMzIvZGVidWctcGwwMTEuaW5jCkBAIC0yNSw5ICsyNSw5IEBACiAg
KiByZDogc2NyYXRjaCByZWdpc3RlciAyICh1bnVzZWQgaGVyZSkKICAqLwogLm1hY3JvIGVhcmx5
X3VhcnRfaW5pdCByYiwgcmMsIHJkCi0gICAgICAgIG1vdiAgIFxyYywgIyg3MzcyODAwIC8gRUFS
TFlfUFJJTlRLX0JBVUQgJSAxNikKKyAgICAgICAgbW92ICAgXHJjLCAjKDczNzI4MDAgLyBDT05G
SUdfRUFSTFlfVUFSVF9QTDAxMV9CQVVEX1JBVEUgJSAxNikKICAgICAgICAgc3RyICAgXHJjLCBb
XHJiLCAjRkJSRF0gICAgIC8qIC0+IFVBUlRGQlJEIChCYXVkIGRpdmlzb3IgZnJhY3Rpb24pICov
Ci0gICAgICAgIG1vdiAgIFxyYywgIyg3MzcyODAwIC8gRUFSTFlfUFJJTlRLX0JBVUQgLyAxNikK
KyAgICAgICAgbW92ICAgXHJjLCAjKDczNzI4MDAgLyBDT05GSUdfRUFSTFlfVUFSVF9QTDAxMV9C
QVVEX1JBVEUgLyAxNikKICAgICAgICAgc3RyICAgXHJjLCBbXHJiLCAjSUJSRF0gICAgIC8qIC0+
IFVBUlRJQlJEIChCYXVkIGRpdmlzb3IgaW50ZWdlcikgKi8KICAgICAgICAgbW92ICAgXHJjLCAj
MHg2MCAgICAgICAgICAgIC8qIDhuMSAqLwogICAgICAgICBzdHIgICBccmMsIFtccmIsICNMQ1Jf
SF0gICAgIC8qIC0+IFVBUlRMQ1JfSCAoTGluZSBjb250cm9sKSAqLwpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gvYXJtL2FybTMyL2RlYnVnLXNjaWYuaW5jIGIveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVn
LXNjaWYuaW5jCmluZGV4IDNmMDFjOTA5YzIuLmIyYjgyNTAxZTcgMTAwNjQ0Ci0tLSBhL3hlbi9h
cmNoL2FybS9hcm0zMi9kZWJ1Zy1zY2lmLmluYworKysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvZGVi
dWctc2NpZi5pbmMKQEAgLTE5LDEwICsxOSwxMCBAQAogCiAjaW5jbHVkZSA8YXNtL3NjaWYtdWFy
dC5oPgogCi0jaWZkZWYgRUFSTFlfUFJJTlRLX1ZFUlNJT05fTk9ORQorI2lmZGVmIENPTkZJR19F
QVJMWV9VQVJUX1NDSUZfVkVSU0lPTl9OT05FCiAjZGVmaW5lIFNUQVRVU19SRUcgICAgU0NJRl9T
Q0ZTUgogI2RlZmluZSBUWF9GSUZPX1JFRyAgIFNDSUZfU0NGVERSCi0jZWxpZiBFQVJMWV9QUklO
VEtfVkVSU0lPTl9BCisjZWxpZiBDT05GSUdfRUFSTFlfVUFSVF9TQ0lGX1ZFUlNJT05fQQogI2Rl
ZmluZSBTVEFUVVNfUkVHICAgIFNDSUZBX1NDQVNTUgogI2RlZmluZSBUWF9GSUZPX1JFRyAgIFND
SUZBX1NDQUZURFIKICNlbmRpZgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVn
LlMgYi94ZW4vYXJjaC9hcm0vYXJtMzIvZGVidWcuUwppbmRleCAxODI5YjI5OTE1Li5lNzdjNzZk
MGRlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtMzIvZGVidWcuUworKysgYi94ZW4vYXJj
aC9hcm0vYXJtMzIvZGVidWcuUwpAQCAtMTksOCArMTksOCBAQAogCiAjaW5jbHVkZSA8YXNtL2Vh
cmx5X3ByaW50ay5oPgogCi0jaWZkZWYgRUFSTFlfUFJJTlRLX0lOQwotI2luY2x1ZGUgRUFSTFlf
UFJJTlRLX0lOQworI2lmIGRlZmluZWQgKENPTkZJR19FQVJMWV9QUklOVEtfSU5DKQorI2luY2x1
ZGUgQ09ORklHX0VBUkxZX1BSSU5US19JTkMKICNlbmRpZgogCiAvKgpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gvYXJtL2FybTMyL2hlYWQuUyBiL3hlbi9hcmNoL2FybS9hcm0zMi9oZWFkLlMKaW5kZXgg
ZTlkMzU2ZjA1Yy4uYzQwNGZhOTczZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTMyL2hl
YWQuUworKysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvaGVhZC5TCkBAIC0zNiw4ICszNiw4IEBACiAj
ZGVmaW5lIFhFTl9GSVJTVF9TTE9UICAgICAgZmlyc3RfdGFibGVfb2Zmc2V0KFhFTl9WSVJUX1NU
QVJUKQogI2RlZmluZSBYRU5fU0VDT05EX1NMT1QgICAgIHNlY29uZF90YWJsZV9vZmZzZXQoWEVO
X1ZJUlRfU1RBUlQpCiAKLSNpZiAoZGVmaW5lZCAoQ09ORklHX0VBUkxZX1BSSU5USykpICYmIChk
ZWZpbmVkIChFQVJMWV9QUklOVEtfSU5DKSkKLSNpbmNsdWRlIEVBUkxZX1BSSU5US19JTkMKKyNp
ZiBkZWZpbmVkKENPTkZJR19FQVJMWV9QUklOVEspICYmIGRlZmluZWQoQ09ORklHX0VBUkxZX1BS
SU5US19JTkMpCisjaW5jbHVkZSBDT05GSUdfRUFSTFlfUFJJTlRLX0lOQwogI2VuZGlmCiAKIC8q
CkBAIC0yMjMsNyArMjIzLDcgQEAgR0xPQkFMKGluaXRfc2Vjb25kYXJ5KQogMToKIAogI2lmZGVm
IENPTkZJR19FQVJMWV9QUklOVEsKLSAgICAgICAgbW92X3cgcjExLCBFQVJMWV9VQVJUX0JBU0Vf
QUREUkVTUyAgIC8qIHIxMSA6PSBVQVJUIGJhc2UgYWRkcmVzcyAqLworICAgICAgICBtb3ZfdyBy
MTEsIENPTkZJR19FQVJMWV9VQVJUX0JBU0VfQUREUkVTUyAgIC8qIHIxMSA6PSBVQVJUIGJhc2Ug
YWRkcmVzcyAqLwogICAgICAgICBQUklOVCgiLSBDUFUgIikKICAgICAgICAgcHJpbnRfcmVnIHI3
CiAgICAgICAgIFBSSU5UKCIgYm9vdGluZyAtXHJcbiIpCkBAIC03MDYsOCArNzA2LDggQEAgRU5U
Ulkoc3dpdGNoX3R0YnIpCiAgKiBDbG9iYmVycyByMCAtIHIzCiAgKi8KIGluaXRfdWFydDoKLSAg
ICAgICAgbW92X3cgcjExLCBFQVJMWV9VQVJUX0JBU0VfQUREUkVTUwotI2lmZGVmIEVBUkxZX1BS
SU5US19JTklUX1VBUlQKKyAgICAgICAgbW92X3cgcjExLCBDT05GSUdfRUFSTFlfVUFSVF9CQVNF
X0FERFJFU1MKKyNpZmRlZiBDT05GSUdfRUFSTFlfVUFSVF9JTklUCiAgICAgICAgIGVhcmx5X3Vh
cnRfaW5pdCByMTEsIHIxLCByMgogI2VuZGlmCiAgICAgICAgIFBSSU5UKCItIFVBUlQgZW5hYmxl
ZCAtXHJcbiIpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWctODI1MC5pbmMg
Yi94ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWctODI1MC5pbmMKaW5kZXggNTNkNjgyOGJmYS4uMzBl
YTEzMDc3ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L2RlYnVnLTgyNTAuaW5jCisr
KyBiL3hlbi9hcmNoL2FybS9hcm02NC9kZWJ1Zy04MjUwLmluYwpAQCAtMjUsNyArMjUsNyBAQAog
ICovCiAubWFjcm8gZWFybHlfdWFydF9yZWFkeSB4YiBjCiAxOgotICAgICAgIGxkcmIgIHdcYywg
W1x4YiwgI1VBUlRfTFNSIDw8IEVBUkxZX1VBUlRfUkVHX1NISUZUXQorICAgICAgIGxkcmIgIHdc
YywgW1x4YiwgI1VBUlRfTFNSIDw8IENPTkZJR19FQVJMWV9VQVJUXzgyNTBfUkVHX1NISUZUXQog
ICAgICAgIGFuZCB3XGMsIHdcYywgI1VBUlRfTFNSX1RIUkUKICAgICAgICBjbXAgd1xjLCAjVUFS
VF9MU1JfVEhSRQogICAgICAgIGIubmUgMWIKQEAgLTM4LDcgKzM4LDcgQEAKICAqLwogLm1hY3Jv
IGVhcmx5X3VhcnRfdHJhbnNtaXQgeGIgd3QKICAgICAgICAgLyogVUFSVF9USFIgIHRyYW5zbWl0
IGhvbGRpbmcgKi8KLSAgICAgICAgc3RyYiAgIFx3dCwgW1x4YiwgI1VBUlRfVEhSIDw8IEVBUkxZ
X1VBUlRfUkVHX1NISUZUXQorICAgICAgICBzdHJiICAgXHd0LCBbXHhiLCAjVUFSVF9USFIgPDwg
Q09ORklHX0VBUkxZX1VBUlRfODI1MF9SRUdfU0hJRlRdCiAuZW5kbQogCiAvKgpkaWZmIC0tZ2l0
IGEveGVuL2FyY2gvYXJtL2FybTY0L2RlYnVnLXBsMDExLmluYyBiL3hlbi9hcmNoL2FybS9hcm02
NC9kZWJ1Zy1wbDAxMS5pbmMKaW5kZXggNTY5YzNkZmJjZi4uMzg1ZGVmZjQ5YiAxMDA2NDQKLS0t
IGEveGVuL2FyY2gvYXJtL2FybTY0L2RlYnVnLXBsMDExLmluYworKysgYi94ZW4vYXJjaC9hcm0v
YXJtNjQvZGVidWctcGwwMTEuaW5jCkBAIC0yNCw5ICsyNCw5IEBACiAgKiBjOiBzY3JhdGNoIHJl
Z2lzdGVyIG51bWJlcgogICovCiAubWFjcm8gZWFybHlfdWFydF9pbml0IHhiLCBjCi0gICAgICAg
IG1vdiAgIHhcYywgIyg3MzcyODAwIC8gRUFSTFlfUFJJTlRLX0JBVUQgJSAxNikKKyAgICAgICAg
bW92ICAgeFxjLCAjKDczNzI4MDAgLyBDT05GSUdfRUFSTFlfVUFSVF9QTDAxMV9CQVVEX1JBVEUg
JSAxNikKICAgICAgICAgc3RyaCAgd1xjLCBbXHhiLCAjMHgyOF0gICAgICAvKiAtPiBVQVJURkJS
RCAoQmF1ZCBkaXZpc29yIGZyYWN0aW9uKSAqLwotICAgICAgICBtb3YgICB4XGMsICMoNzM3Mjgw
MCAvIEVBUkxZX1BSSU5US19CQVVEIC8gMTYpCisgICAgICAgIG1vdiAgIHhcYywgIyg3MzcyODAw
IC8gQ09ORklHX0VBUkxZX1VBUlRfUEwwMTFfQkFVRF9SQVRFIC8gMTYpCiAgICAgICAgIHN0cmgg
IHdcYywgW1x4YiwgIzB4MjRdICAgICAgLyogLT4gVUFSVElCUkQgKEJhdWQgZGl2aXNvciBpbnRl
Z2VyKSAqLwogICAgICAgICBtb3YgICB4XGMsICMweDYwICAgICAgICAgICAgIC8qIDhuMSAqLwog
ICAgICAgICBzdHIgICB3XGMsIFtceGIsICMweDJDXSAgICAgIC8qIC0+IFVBUlRMQ1JfSCAoTGlu
ZSBjb250cm9sKSAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTY0L2RlYnVnLlMgYi94
ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWcuUwppbmRleCBiN2Y1M2FjMDUxLi43MWNhZDlkNzYyIDEw
MDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWcuUworKysgYi94ZW4vYXJjaC9hcm0v
YXJtNjQvZGVidWcuUwpAQCAtMTksOCArMTksOCBAQAogCiAjaW5jbHVkZSA8YXNtL2Vhcmx5X3By
aW50ay5oPgogCi0jaWZkZWYgRUFSTFlfUFJJTlRLX0lOQwotI2luY2x1ZGUgRUFSTFlfUFJJTlRL
X0lOQworI2lmZGVmIENPTkZJR19FQVJMWV9QUklOVEtfSU5DCisjaW5jbHVkZSBDT05GSUdfRUFS
TFlfUFJJTlRLX0lOQwogI2VuZGlmCiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJt
NjQvaGVhZC5TIGIveGVuL2FyY2gvYXJtL2FybTY0L2hlYWQuUwppbmRleCBlNTAxNWY5M2EyLi41
ZDQ0NjY3YmQ4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtNjQvaGVhZC5TCisrKyBiL3hl
bi9hcmNoL2FybS9hcm02NC9oZWFkLlMKQEAgLTQ1LDggKzQ1LDggQEAKICNkZWZpbmUgX19IRUFE
X0ZMQUdTICAgICAgICAgICAgKChfX0hFQURfRkxBR19QQUdFX1NJWkUgPDwgMSkgfCBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IRUFEX0ZMQUdfUEhZU19CQVNFIDw8IDMp
KQogCi0jaWYgKGRlZmluZWQgKENPTkZJR19FQVJMWV9QUklOVEspKSAmJiAoZGVmaW5lZCAoRUFS
TFlfUFJJTlRLX0lOQykpCi0jaW5jbHVkZSBFQVJMWV9QUklOVEtfSU5DCisjaWYgZGVmaW5lZChD
T05GSUdfRUFSTFlfUFJJTlRLKSAmJiBkZWZpbmVkKENPTkZJR19FQVJMWV9QUklOVEtfSU5DKQor
I2luY2x1ZGUgQ09ORklHX0VBUkxZX1BSSU5US19JTkMKICNlbmRpZgogCiAvKgpAQCAtMzYzLDcg
KzM2Myw3IEBAIEdMT0JBTChpbml0X3NlY29uZGFyeSkKIDE6CiAKICNpZmRlZiBDT05GSUdfRUFS
TFlfUFJJTlRLCi0gICAgICAgIGxkciAgIHgyMywgPUVBUkxZX1VBUlRfQkFTRV9BRERSRVNTIC8q
IHgyMyA6PSBVQVJUIGJhc2UgYWRkcmVzcyAqLworICAgICAgICBsZHIgICB4MjMsID1DT05GSUdf
RUFSTFlfVUFSVF9CQVNFX0FERFJFU1MgLyogeDIzIDo9IFVBUlQgYmFzZSBhZGRyZXNzICovCiAg
ICAgICAgIFBSSU5UKCItIENQVSAiKQogICAgICAgICBwcmludF9yZWcgeDI0CiAgICAgICAgIFBS
SU5UKCIgYm9vdGluZyAtXHJcbiIpCkBAIC04NDMsOCArODQzLDggQEAgRU5UUlkoc3dpdGNoX3R0
YnIpCiAgKiBDbG9iYmVycyB4MCAtIHgxCiAgKi8KIGluaXRfdWFydDoKLSAgICAgICAgbGRyICAg
eDIzLCA9RUFSTFlfVUFSVF9CQVNFX0FERFJFU1MKLSNpZmRlZiBFQVJMWV9QUklOVEtfSU5JVF9V
QVJUCisgICAgICAgIGxkciAgIHgyMywgPUNPTkZJR19FQVJMWV9VQVJUX0JBU0VfQUREUkVTUwor
I2lmZGVmIENPTkZJR19FQVJMWV9VQVJUX0lOSVQKICAgICAgICAgZWFybHlfdWFydF9pbml0IHgy
MywgMAogI2VuZGlmCiAgICAgICAgIFBSSU5UKCItIFVBUlQgZW5hYmxlZCAtXHJcbiIpCmRpZmYg
LS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2Vhcmx5X3ByaW50ay5oIGIveGVuL2luY2x1ZGUv
YXNtLWFybS9lYXJseV9wcmludGsuaAppbmRleCAwNzhjZjcwMWRjLi5kNTQ4NWRlY2ZhIDEwMDY0
NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2Vhcmx5X3ByaW50ay5oCisrKyBiL3hlbi9pbmNs
dWRlL2FzbS1hcm0vZWFybHlfcHJpbnRrLmgKQEAgLTE1LDcgKzE1LDcgQEAKIAogLyogbmVlZCB0
byBhZGQgdGhlIHVhcnQgYWRkcmVzcyBvZmZzZXQgaW4gcGFnZSB0byB0aGUgZml4bWFwIGFkZHJl
c3MgKi8KICNkZWZpbmUgRUFSTFlfVUFSVF9WSVJUVUFMX0FERFJFU1MgXAotICAgIChGSVhNQVBf
QUREUihGSVhNQVBfQ09OU09MRSkgKyhFQVJMWV9VQVJUX0JBU0VfQUREUkVTUyAmIH5QQUdFX01B
U0spKQorICAgIChGSVhNQVBfQUREUihGSVhNQVBfQ09OU09MRSkgKyAoQ09ORklHX0VBUkxZX1VB
UlRfQkFTRV9BRERSRVNTICYgflBBR0VfTUFTSykpCiAKICNlbmRpZiAvKiAhQ09ORklHX0VBUkxZ
X1BSSU5USyAqLwogCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9n
aXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxv
Zw==

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 09:55:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 09:55:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJa5e-0006gP-42; Wed, 01 Apr 2020 09:55:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJa5d-0006gB-2f
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:17 +0000
X-Inumbo-ID: e2a60626-73fe-11ea-ba8a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e2a60626-73fe-11ea-ba8a-12813bfff9fa;
 Wed, 01 Apr 2020 09:55:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=34S7X8VNVZZFXj2RpSH8fcsfylVpDVOB+lMRsZHMqYY=; b=nxtJONfb6e0k/QT3+8z+794d2V
 +cjuru3p+y4stByW+9NO2nqdRsDko/a8z6cZLoFTWgsbiDsutNev9DyEwZZn+4cIR2QiwnJfU4ve/
 lqGy9q+PXDrCpinDNi24JWc4A3lbctCglBHFFkSgqg8dcdUCWGcsnjRMjjaRVzwgQy+M=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJa5a-0007Rh-RT
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJa5a-0002un-QX
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJa5a-0002un-QX@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 09:55:14 +0000
Subject: [Xen-changelog] [xen staging] xen/arm: Configure early printk via
 Kconfig
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGY0MWViN2JhM2U1MDcwYjRhN2E0ZjU0Y2FjMjM2YmY5ZmY5M2Q3OTgKQXV0aG9yOiAg
ICAgQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CkF1dGhvckRhdGU6
IFR1ZSBNYXIgMzEgMTE6MzA6NDYgMjAyMCArMDEwMApDb21taXQ6ICAgICBKdWxpZW4gR3JhbGwg
PGpncmFsbEBhbWF6b24uY29tPgpDb21taXREYXRlOiBXZWQgQXByIDEgMTA6NDk6MzMgMjAyMCAr
MDEwMAoKICAgIHhlbi9hcm06IENvbmZpZ3VyZSBlYXJseSBwcmludGsgdmlhIEtjb25maWcKICAg
IAogICAgQXQgdGhlIG1vbWVudCwgZWFybHkgcHJpbnRrIGNhbiBvbmx5IGJlIGNvbmZpZ3VyZWQg
b24gdGhlIG1ha2UgY29tbWFuZAogICAgbGluZS4gSXQgaXMgbm90IHZlcnkgaGFuZHkgYmVjYXVz
ZSBhIHVzZXIgaGFzIHRvIHJlbW92ZSB0aGUgb3B0aW9uCiAgICBldmVyeXRpbWUgaXQgaXMgdXNp
bmcgYW5vdGhlciBjb21tYW5kIG90aGVyIHRoYW4gY29tcGlsaW5nIHRoZQogICAgaHlwZXJ2aXNv
ci4KICAgIAogICAgRnVydGhlcm1vcmUsIGVhcmx5IHByaW50ayBpcyBvbmUgb2YgdGhlIGZldyBv
ZGRzIG9uZSB0aGF0IGFyZSBub3QKICAgIHVzaW5nIEtjb25maWcuCiAgICAKICAgIFNvIHRoaXMg
aXMgYWJvdXQgdGltZSB0byBtb3ZlIGl0IHRvIEtjb25maWcuCiAgICAKICAgIFRoZSBuZXcga2Nv
bmZpZ3Mgb3B0aW9ucyBhbGxvdyBhIHVzZXIgdG8gZWF0aGVyIHNlbGVjdCBhIFVBUlQgZHJpdmVy
CiAgICB0byB1c2UgYXQgYm9vdCB0aW1lLCBhbmQgc2V0IHRoZSBwYXJhbWV0ZXJzLCBvciBpdCBp
cyBzdGlsbCBwb3NzaWJsZQogICAgdG8gc2VsZWN0IGEgcGxhdGZvcm0gd2hpY2ggd2lsbCBzZXQg
dGhlIHBhcmFtZXRlcnMuCiAgICAKICAgIElmIENPTkZJR19FQVJMWV9QUklOVEsgaXMgcHJlc2Vu
dCBpbiB0aGUgZW52aXJvbm1lbnQgb3Igb24gdGhlIG1ha2UKICAgIGNvbW1hbmQgbGluZSwgbWFr
ZSB3aWxsIHJldHVybiBhbiBlcnJvci4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogSnVsaWVuIEdy
YWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFudGhvbnkgUEVS
QVJEIDxhbnRob255LnBlcmFyZEBjaXRyaXguY29tPgogICAgVGVzdGVkLWJ5OiBTdGVmYW5vIFN0
YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CiAgICBSZXZpZXdlZC1ieTogSnVsaWVu
IEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KLS0tCiBkb2NzL21pc2MvYXJtL2Vhcmx5LXByaW50
ay50eHQgfCAgNzEgKysrKy0tLS0tLQogeGVuL0tjb25maWcuZGVidWcgICAgICAgICAgICAgIHwg
ICAyICsKIHhlbi9hcmNoL2FybS9LY29uZmlnLmRlYnVnICAgICB8IDI4OSArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJtL01ha2VmaWxlICAgICAg
ICAgIHwgICAyICstCiB4ZW4vYXJjaC9hcm0vUnVsZXMubWsgICAgICAgICAgfCAgNzQgKy0tLS0t
LS0tLS0KIHhlbi9hcmNoL2FybS9hcm0zMi9NYWtlZmlsZSAgICB8ICAgMiArLQogeGVuL2FyY2gv
YXJtL2FybTY0L01ha2VmaWxlICAgIHwgICAyICstCiB4ZW4vYXJjaC94ODYvS2NvbmZpZy5kZWJ1
ZyAgICAgfCAgIDAKIDggZmlsZXMgY2hhbmdlZCwgMzE5IGluc2VydGlvbnMoKyksIDEyMyBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2NzL21pc2MvYXJtL2Vhcmx5LXByaW50ay50eHQgYi9k
b2NzL21pc2MvYXJtL2Vhcmx5LXByaW50ay50eHQKaW5kZXggODllMDgxZTUxZS4uYWEyMjgyNjA3
NSAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL2FybS9lYXJseS1wcmludGsudHh0CisrKyBiL2RvY3Mv
bWlzYy9hcm0vZWFybHktcHJpbnRrLnR4dApAQCAtMSw2NCArMSwzOSBAQAogSG93IHRvIGVuYWJs
ZSBlYXJseSBwcmludGsKIAotRWFybHkgcHJpbnRrIGNhbiBvbmx5IGJlIGVuYWJsZWQgaWYgZGVi
dWc9eS4gWW91IG1heSB3YW50IHRvIGVuYWJsZSBpdCBpZgoteW91IGFyZSBkZWJidWdpbmcgY29k
ZSB0aGF0IGV4ZWN1dGVzIGJlZm9yZSB0aGUgY29uc29sZSBpcyBpbml0aWFsaXplZC4KK0Vhcmx5
IHByaW50ayBjYW4gb25seSBiZSBlbmFibGVkIGlmIENPTkZJR19ERUJVRz15IG9yIGluIEVYUEVS
VCBtb2RlLiBZb3UKK21heSB3YW50IHRvIGVuYWJsZSBpdCBpZiB5b3UgYXJlIGRlYnVnZ2luZyBj
b2RlIHRoYXQgZXhlY3V0ZXMgYmVmb3JlIHRoZQorY29uc29sZSBpcyBpbml0aWFsaXplZC4KIAog
Tm90ZSB0aGF0IHNlbGVjdGluZyB0aGlzIG9wdGlvbiB3aWxsIGxpbWl0IFhlbiB0byBhIHNpbmds
ZSBVQVJUIGRlZmluaXRpb24uCiBBdHRlbXB0aW5nIHRvIGJvb3QgWGVuIGltYWdlIG9uIGEgZGlm
ZmVyZW50IHBsYXRmb3JtICp3aWxsIG5vdCB3b3JrKiwgc28gdGhpcwogb3B0aW9uIHNob3VsZCBu
b3QgYmUgZW5hYmxlIGZvciBYZW5zIHRoYXQgYXJlIGludGVuZGVkIHRvIGJlIHBvcnRhYmxlLgog
Ci1DT05GSUdfRUFSTFlfUFJJTlRLPTxJTkM+LDxCQVNFX0FERFJFU1M+LDxPVEhFUl9PUFRJT05T
PgorU2VsZWN0IG9uZSBvZiB0aGUgIkVhcmx5IHByaW50ayB2aWEgKiBVQVJUIiBpbiB0aGUgY2hv
aWNlIHBvc3NpYmxlIGZvcgorIkVhcmx5IHByaW50ayIgaW4gdGhlICJEZWJ1Z2dpbmcgb3B0aW9u
cyIgb2YgS2NvbmZpZy4gWW91IHdpbGwgdGhlbiBuZWVkIHRvCitzZXQgb3RoZXIgb3B0aW9ucywg
d2hpY2ggZGVwZW5kcyBvbiB0aGUgZHJpdmVyIHNlbGVjdGVkLgogCi08SU5DPiBhbmQgPEJBU0Vf
QUREUkVTUz4gYXJlIG1hbmRhdG9yeSBhcmd1bWVudHM6CitDT05GSUdfRUFSTFlfVUFSVF9CQVNF
X0FERFJFU1MgaXMgYSBtYW5kYXRvcnkgYXJndW1lbnQsIGl0IGlzIHRoZSBiYXNlCitwaHlzaWNh
bCBhZGRyZXNzIG9mIHRoZSBVQVJUIHRvIHVzZS4KIAotICAtIDxJTkM+IGlzIHRoZSBuYW1lIG9m
IHRoZSBkcml2ZXIsIHNlZSB4ZW4vYXJjaC9hcm0vYXJtezMyLDY0fS9kZWJ1Zy0qLmluYwotICAg
ICh3aGVyZSA8SU5DPiBjb3JyZXNwb25kcyB0byB0aGUgd2lsZGNhcmRlZCAqKS4KLSAgLSA8QkFT
RV9BRERSRVNTPiBpcyB0aGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBVQVJUIHRvIHVz
ZQorT3RoZXIgb3B0aW9ucyBkZXBlbmRzIG9uIHRoZSBkcml2ZXIgc2VsZWN0ZWQ6CisgIC0gODI1
MAorICAgIC0gQ09ORklHX0VBUkxZX1VBUlRfODI1MF9SRUdfU0hJRlQgaXMsIG9wdGlvbmFsbHks
IHRoZSBsZWZ0LXNoaWZ0IHRvCisgICAgICBhcHBseSB0byB0aGUgcmVnaXN0ZXIgb2Zmc2V0cyB3
aXRoaW4gdGhlIHVhcnQuCisgIC0gcGwwMTEKKyAgICAtIENPTkZJR19FQVJMWV9VQVJUX1BMMDEx
X0JBVURfUkFURSBpcywgb3B0aW9uYWxseSwgYSBiYXVkIHJhdGUgd2hpY2gKKyAgICAgIHNob3Vs
ZCBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgVUFSVCBhdCBzdGFydCBvZiBkYXkuCiAKLTxPVEhF
Ul9PUFRJT05TPiB2YXJpZXMgZGVwZW5kaW5nIG9uIDxJTkM+OgorICAgICAgSWYgQ09ORklHX0VB
UkxZX1VBUlRfUEwwMTFfQkFVRF9SQVRFICBpcyBzZXQgdG8gMCB0aGVuIHRoZSBjb2RlIHdpbGwK
KyAgICAgIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSB0aGUgVUFSVCwgc28gdGhhdCBib290bG9hZGVy
IG9yIGZpcm13YXJlCisgICAgICBzZXR0aW5ncyBjYW4gYmUgdXNlZCBmb3IgbWF4aW11bSBjb21w
YXRpYmlsaXR5LgorICAtIHNjaWYKKyAgICAtIENPTkZJR19FQVJMWV9VQVJUX1NDSUZfVkVSU0lP
Tl8qIGlzLCBvcHRpb25hbGx5LCB0aGUgaW50ZXJmYWNlIHZlcnNpb24KKyAgICAgIG9mIHRoZSBV
QVJULiBEZWZhdWx0IHRvIHZlcnNpb24gTk9ORS4KIAotICAtIDgyNTAsPEJBU0VfQUREUkVTUz4s
PFJFR19TSElGVD4KLSAgICAtIDxSRUdfU0hJRlQ+IGlzLCBvcHRpb25hbGx5LCB0aGUgbGVmdC1z
aGlmdCB0byBhcHBseSB0byB0aGUKLSAgICAgIHJlZ2lzdGVyIG9mZnNldHMgd2l0aGluIHRoZSB1
YXJ0LgotICAtIHBsMDExLDxCQVNFX0FERFJFU1M+LDxCQVVEX1JBVEU+Ci0gICAgLSA8QkFVRF9S
QVRFPiBpcywgb3B0aW9uYWxseSBhIGJhdWQgcmF0ZSB3aGljaCBzaG91bGQgYmUgdXNlZCB0bwot
ICAgICAgY29uZmlndXJlIHRoZSBVQVJUIGF0IHN0YXJ0IG9mIGRheS4KLQotICAgICAgSWYgPEJB
VURfUkFURT4gaXMgbm90IGdpdmVuIHRoZW4gdGhlIGNvZGUgd2lsbCBub3QgdHJ5IHRvCi0gICAg
ICBpbml0aWFsaXplIHRoZSBVQVJULCBzbyB0aGF0IGJvb3Rsb2FkZXIgb3IgZmlybXdhcmUgc2V0
dGluZ3MgY2FuCi0gICAgIGJlIHVzZWQgZm9yIG1heGltdW0gY29tcGF0aWJpbGl0eS4KLSAgLSBz
Y2lmLDxCQVNFX0FERFJFU1M+LDxWRVJTSU9OPgotICAgIC0gU0NJRjxWRVJTSU9OPiBpcywgb3B0
aW9uYWxseSwgdGhlIGludGVyZmFjZSB2ZXJzaW9uIG9mIHRoZSBVQVJULgotCi0gICAgICBJZiA8
VkVSU0lPTj4gaXMgbm90IGdpdmVuIHRoZW4gdGhlIGRlZmF1bHQgaW50ZXJmYWNlIHZlcnNpb24g
KFNDSUYpCi0gICAgICB3aWxsIGJlIHVzZWQuCiAgIC0gRm9yIGFsbCBvdGhlciB1YXJ0cyB0aGVy
ZSBhcmUgbm8gYWRkaXRpb25hbCBvcHRpb25zLgogCiBBcyBhIGNvbnZlbmllbmNlIGl0IGlzIGFs
c28gcG9zc2libGUgdG8gc2VsZWN0IGZyb20gYSBsaXN0IG9mCi1wcmVkZWZpbmVkIGNvbmZpZ3Vy
YXRpb25zIHVzaW5nIENPTkZJR19FQVJMWV9QUklOVEs9bWFjaCB3aGVyZSBtYWNoIGlzCi10aGUg
bmFtZSBvZiB0aGUgbWFjaGluZToKLQotICAtIGJyY206IHByaW50ayB3aXRoIDgyNTAgb24gQnJv
YWRjb20gNzQ0NUQwIGJvYXJkcyB3aXRoIEExNSBwcm9jZXNzb3JzLgotICAtIGRyYTc6IHByaW50
ayB3aXRoIDgyNTAgb24gRFJBNyBwbGF0Zm9ybQotICAtIGV4eW5vczUyNTA6IHByaW50ayB3aXRo
IHRoZSBzZWNvbmQgVUFSVAotICAtIGZhc3Rtb2RlbDogcHJpbnRrIG9uIEFSTSBGYXN0bW9kZWwg
c29mdHdhcmUgZW11bGF0b3JzCi0gIC0gaGlrZXk5NjA6IHByaW50ayB3aXRoIHBsMDExIHdpdGgg
SGlrZXkgOTYwCi0gIC0ganVubzogcHJpbnRrIHdpdGggcGwwMTEgb24gSnVubyBwbGF0Zm9ybQot
ICAtIGxhZ2VyOiBwcmludGsgd2l0aCBTQ0lGMCBvbiBSZW5lc2FzIExhZ2VyIGJvYXJkIChSLUNh
ciBIMiBwcm9jZXNzb3IpCi0gIC0gbWlkd2F5OiBwcmludGsgd2l0aCB0aGUgcGwwMTEgb24gQ2Fs
eGVkYSBNaWR3YXkgcHJvY2Vzc29ycwotICAtIG12ZWJ1OiBwcmludGsgd2l0aCB0aGUgTVZFQlUg
Zm9yIE1hcnZlbGwgQXJtYWRhIDM3MDAgU29DcwotICAtIG9tYXA1NDMyOiBwcmludGsgd2l0aCBV
QVJUMyBvbiBUSSBPTUFQNTQzMiBwcm9jZXNzb3JzCi0gIC0gcmNhcjM6IHByaW50ayB3aXRoIFND
SUYyIG9uIFJlbmVzYXMgUi1DYXIgR2VuMyBwcm9jZXNzb3JzCi0gIC0gc2VhdHRsZTogcHJpbnRr
IHdpdGggcGwwMTEgZm9yIEFNRCBTZWF0dGxlIHByb2Nlc3NvcgotICAtIHN1bjZpOiBwcmludGsg
d2l0aCA4MjUwIG9uIEFsbHdpbm5lciBBMzEgcHJvY2Vzc29ycwotICAtIHN1bjdpOiBwcmludGsg
d2l0aCA4MjUwIG9uIEFsbHdpbm5lciBBMjAgcHJvY2Vzc29ycwotICAtIHRodW5kZXJ4OiBwcmlu
dGsgd2l0aCBwbDAxMSBmb3IgQ2F2aXVtIFRodW5kZXJYIHByb2Nlc3NvcgotICAtIHZleHByZXNz
OiBwcmludGsgd2l0aCBwbDAxMSBmb3IgdmVyc2F0aWxlIGV4cHJlc3MKLSAgLSB4Z2VuZS1tY2Rp
dml0dDogcHJpbnRrIHdpdGggODIwIG9uIFhnZW5lIG1jZGl2aXR0IHBsYXRmb3JtCi0gIC0geGdl
bmUtc3Rvcm06IHByaW50ayB3aXRoIDgyMCBvbiBYZ2VuZSBzdG9ybSBwbGF0Zm9ybQotICAtIHp5
bnFtcDogcHJpbnRrIHdpdGggQ2FkZW5jZSBVQVJUIGZvciBYaWxpbnggWnlucU1QIFNvQ3MKLQot
VGhlc2Ugc2V0dGluZ3MgYXJlIGlzIGhhcmRjb2RlZCBpbiB4ZW4vYXJjaC9hcm0vUnVsZXMubWss
Ci1zZWUgdGhlcmUgd2hlbiBhZGRpbmcgc3VwcG9ydCBmb3IgbmV3IG1hY2hpbmVzLgorcHJlZGVm
aW5lZCBjb25maWd1cmF0aW9ucyBhdmFpbGFibGUgaW4gdGhlIGxpc3Qgb2YgY2hvaWNlIGZvciAi
RWFybHkKK3ByaW50ayIgZm9yIHNwZWNpZmljIHBsYXRmb3JtLgogCiBCeSBkZWZhdWx0IGVhcmx5
IHByaW50ayBpcyBkaXNhYmxlZC4KZGlmZiAtLWdpdCBhL3hlbi9LY29uZmlnLmRlYnVnIGIveGVu
L0tjb25maWcuZGVidWcKaW5kZXggYjM1MTFlODFhMi4uZWU2ZWUzM2I2OSAxMDA2NDQKLS0tIGEv
eGVuL0tjb25maWcuZGVidWcKKysrIGIveGVuL0tjb25maWcuZGVidWcKQEAgLTEyOCw2ICsxMjgs
OCBAQCBjb25maWcgWE1FTV9QT09MX1BPSVNPTgogCSAgUG9pc29uIGZyZWUgYmxvY2tzIHdpdGgg
MHhBQSBieXRlcyBhbmQgdmVyaWZ5IHRoZW0gd2hlbiBhIGJsb2NrIGlzCiAJICBhbGxvY2F0ZWQg
aW4gb3JkZXIgdG8gc3BvdCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMuCiAKK3NvdXJjZSAiYXJjaC8k
KFNSQ0FSQ0gpL0tjb25maWcuZGVidWciCisKIGVuZGlmICMgREVCVUcgfHwgRVhQRVJUCiAKIGVu
ZG1lbnUKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9LY29uZmlnLmRlYnVnIGIveGVuL2FyY2gv
YXJtL0tjb25maWcuZGVidWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u
MzVjY2QxMzI3MwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2FybS9LY29uZmlnLmRlYnVn
CkBAIC0wLDAgKzEsMjg5IEBACitjaG9pY2UKKwlib29sICJFYXJseSBwcmludGsiCisJb3B0aW9u
YWwKKwloZWxwCisJCVlvdSBtYXkgd2FudCB0byBlbmFibGUgZWFybHkgcHJpbnRrIGlmIHlvdSBh
cmUgZGVidWdnaW5nIGNvZGUKKwkJdGhhdCBleGVjdXRlcyBiZWZvcmUgdGhlIGNvbnNvbGUgaXMg
aW5pdGlhbGl6ZWQuCisKKwkJTm90ZSB0aGF0IHNlbGVjdGluZyB0aGlzIG9wdGlvbiB3aWxsIGxp
bWl0IFhlbiB0byBhIHNpbmdsZSBVQVJUCisJCWRlZmluaXRpb24uIEF0dGVtcHRpbmcgdG8gYm9v
dCBYZW4gaW1hZ2Ugb24gYSBkaWZmZXJlbnQKKwkJcGxhdGZvcm0gKndpbGwgbm90IHdvcmsqLCBz
byB0aGlzIG9wdGlvbiBzaG91bGQgbm90IGJlIGVuYWJsZQorCQlmb3IgWGVucyB0aGF0IGFyZSBp
bnRlbmRlZCB0byBiZSBwb3J0YWJsZS4KKworCQlDaG9vc2Ugb25lIG9mIHRoZSBVQVJUIGRyaXZl
cnMgZm9yIGVhcmx5IHByaW50aywgdGhlbiB5b3UnbGwKKwkJaGF2ZSB0byBzcGVjaWZ5IHRoZSBw
YXJhbWV0ZXJzLCBsaWtlIHRoZSBiYXNlIGFkZHJlc3MuCisKKwkJRGVwcmVjYXRlZDogQWx0ZXJu
YXRpdmVseSwgdGhlcmUgYXJlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMKKwkJd2hpY2ggd2ls
bCBoYXZlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgdmFyaW91cyBwYXJhbWV0ZXJzLiBCdXQKKwkJ
c3VjaCBvcHRpb24gd2lsbCBzb29uIGJlIHJlbW92ZWQuCisKKwljb25maWcgRUFSTFlfVUFSVF9D
SE9JQ0VfODI1MAorCQlzZWxlY3QgRUFSTFlfVUFSVF84MjUwCisJCWJvb2wgIkVhcmx5IHByaW50
ayB2aWEgODI1MCBVQVJUIgorCQloZWxwCisJCQlTYXkgWSBoZXJlIGlmIHlvdSB3aXNoIHRoZSBl
YXJseSBwcmludGsgdG8gZGlyZWN0IHRoZWlyCisJCQlvdXRwdXQgdG8gYSA4MjUwIFVBUlQuIFlv
dSBjYW4gdXNlIHRoaXMgb3B0aW9uIHRvCisJCQlwcm92aWRlIHRoZSBwYXJhbWV0ZXJzIGZvciB0
aGUgODI1MCBVQVJUIHJhdGhlciB0aGFuCisJCQlzZWxlY3Rpbmcgb25lIG9mIHRoZSBwbGF0Zm9y
bSBzcGVjaWZpYyBvcHRpb25zIGJlbG93IGlmCisJCQl5b3Uga25vdyB0aGUgcGFyYW1ldGVycyBm
b3IgdGhlIHBvcnQuCisKKwkJCVRoaXMgb3B0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYworCQkJb3B0aW9uczsgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMg
YXJlIGRlcHJlY2F0ZWQKKwkJCWFuZCB3aWxsIHNvb24gYmUgcmVtb3ZlZC4KKwljb25maWcgRUFS
TFlfVUFSVF9DSE9JQ0VfQ0FERU5DRQorCQlzZWxlY3QgRUFSTFlfVUFSVF9DQURFTkNFCisJCWRl
cGVuZHMgb24gQVJNXzY0CisJCWJvb2wgIkVhcmx5IHByaW50ayB2aWEgQ2FkZW5jZSBVQVJUIgor
CQloZWxwCisJCQlTYXkgWSBoZXJlIGlmIHlvdSB3aXNoIHRoZSBlYXJseSBwcmludGsgdG8gZGly
ZWN0IHRoZWlyCisJCQlvdXRwdXQgdG8gYSBDYWRlbmNlIFVBUlQuIFlvdSBjYW4gdXNlIHRoaXMg
b3B0aW9uIHRvCisJCQlwcm92aWRlIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgQ2FkZW5jZSBVQVJU
IHJhdGhlciB0aGFuCisJCQlzZWxlY3Rpbmcgb25lIG9mIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBv
cHRpb25zIGJlbG93IGlmCisJCQl5b3Uga25vdyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIHBvcnQu
CisKKwkJCVRoaXMgb3B0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHRoZSBwbGF0Zm9ybSBzcGVjaWZp
YworCQkJb3B0aW9uczsgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMgYXJlIGRlcHJlY2F0
ZWQKKwkJCWFuZCB3aWxsIHNvb24gYmUgcmVtb3ZlZC4KKwljb25maWcgRUFSTFlfVUFSVF9DSE9J
Q0VfRVhZTk9TNDIxMAorCQlzZWxlY3QgRUFSTFlfVUFSVF9FWFlOT1M0MjEwCisJCWRlcGVuZHMg
b24gQVJNXzMyCisJCWJvb2wgIkVhcmx5IHByaW50ayB2aWEgRXh5bm9zNDIxMCBVQVJUIgorCQlo
ZWxwCisJCQlTYXkgWSBoZXJlIGlmIHlvdSB3aXNoIHRoZSBlYXJseSBwcmludGsgdG8gZGlyZWN0
IHRoZWlyCisJCQlvdXRwdXQgdG8gYSBFeHlub3MgNDIxMCBVQVJULiBZb3UgY2FuIHVzZSB0aGlz
IG9wdGlvbiB0bworCQkJcHJvdmlkZSB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIEV4eW5vcyA0MjEw
IFVBUlQgcmF0aGVyIHRoYW4KKwkJCXNlbGVjdGluZyBvbmUgb2YgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIG9wdGlvbnMgYmVsb3cgaWYKKwkJCXlvdSBrbm93IHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUg
cG9ydC4KKworCQkJVGhpcyBvcHRpb24gaXMgcHJlZmVycmVkIG92ZXIgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljCisJCQlvcHRpb25zOyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgb3B0aW9ucyBhcmUgZGVw
cmVjYXRlZAorCQkJYW5kIHdpbGwgc29vbiBiZSByZW1vdmVkLgorCWNvbmZpZyBFQVJMWV9VQVJU
X0NIT0lDRV9NRVNPTgorCQlzZWxlY3QgRUFSTFlfVUFSVF9NRVNPTgorCQlkZXBlbmRzIG9uIEFS
TV82NAorCQlib29sICJFYXJseSBwcmludGsgdmlhIE1FU09OIFVBUlQiCisJCWhlbHAKKwkJCVNh
eSBZIGhlcmUgaWYgeW91IHdpc2ggdGhlIGVhcmx5IHByaW50ayB0byBkaXJlY3QgdGhlaXIKKwkJ
CW91dHB1dCB0byBhIE1FU09OIFVBUlQuIFlvdSBjYW4gdXNlIHRoaXMgb3B0aW9uIHRvCisJCQlw
cm92aWRlIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgTUVTT04gVUFSVCByYXRoZXIgdGhhbgorCQkJ
c2VsZWN0aW5nIG9uZSBvZiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgb3B0aW9ucyBiZWxvdyBpZgor
CQkJeW91IGtub3cgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwb3J0LgorCisJCQlUaGlzIG9wdGlv
biBpcyBwcmVmZXJyZWQgb3ZlciB0aGUgcGxhdGZvcm0gc3BlY2lmaWMKKwkJCW9wdGlvbnM7IHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBvcHRpb25zIGFyZSBkZXByZWNhdGVkCisJCQlhbmQgd2lsbCBz
b29uIGJlIHJlbW92ZWQuCisJY29uZmlnIEVBUkxZX1VBUlRfQ0hPSUNFX01WRUJVCisJCXNlbGVj
dCBFQVJMWV9VQVJUX01WRUJVCisJCWRlcGVuZHMgb24gQVJNXzY0CisJCWJvb2wgIkVhcmx5IHBy
aW50ayB2aWEgTVZFQlUgVUFSVCIKKwkJaGVscAorCQkJU2F5IFkgaGVyZSBpZiB5b3Ugd2lzaCB0
aGUgZWFybHkgcHJpbnRrIHRvIGRpcmVjdCB0aGVpcgorCQkJb3V0cHV0IHRvIGEgTVZFQlUgVUFS
VC4gWW91IGNhbiB1c2UgdGhpcyBvcHRpb24gdG8KKwkJCXByb3ZpZGUgdGhlIHBhcmFtZXRlcnMg
Zm9yIHRoZSBNVkVCVSBVQVJUIHJhdGhlciB0aGFuCisJCQlzZWxlY3Rpbmcgb25lIG9mIHRoZSBw
bGF0Zm9ybSBzcGVjaWZpYyBvcHRpb25zIGJlbG93IGlmCisJCQl5b3Uga25vdyB0aGUgcGFyYW1l
dGVycyBmb3IgdGhlIHBvcnQuCisKKwkJCVRoaXMgb3B0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYworCQkJb3B0aW9uczsgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9w
dGlvbnMgYXJlIGRlcHJlY2F0ZWQKKwkJCWFuZCB3aWxsIHNvb24gYmUgcmVtb3ZlZC4KKwljb25m
aWcgRUFSTFlfVUFSVF9DSE9JQ0VfUEwwMTEKKwkJc2VsZWN0IEVBUkxZX1VBUlRfUEwwMTEKKwkJ
Ym9vbCAiRWFybHkgcHJpbnRrIHZpYSBQTDAxMSBVQVJUIgorCQloZWxwCisJCQlTYXkgWSBoZXJl
IGlmIHlvdSB3aXNoIHRoZSBlYXJseSBwcmludGsgdG8gZGlyZWN0IHRoZWlyCisJCQlvdXRwdXQg
dG8gYSBQTDAxMSBVQVJULiBZb3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0bworCQkJcHJvdmlkZSB0
aGUgcGFyYW1ldGVycyBmb3IgdGhlIFBMMDExIFVBUlQgcmF0aGVyIHRoYW4KKwkJCXNlbGVjdGlu
ZyBvbmUgb2YgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMgYmVsb3cgaWYKKwkJCXlvdSBr
bm93IHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcG9ydC4KKworCQkJVGhpcyBvcHRpb24gaXMgcHJl
ZmVycmVkIG92ZXIgdGhlIHBsYXRmb3JtIHNwZWNpZmljCisJCQlvcHRpb25zOyB0aGUgcGxhdGZv
cm0gc3BlY2lmaWMgb3B0aW9ucyBhcmUgZGVwcmVjYXRlZAorCQkJYW5kIHdpbGwgc29vbiBiZSBy
ZW1vdmVkLgorCWNvbmZpZyBFQVJMWV9VQVJUX0NIT0lDRV9TQ0lGCisJCXNlbGVjdCBFQVJMWV9V
QVJUX1NDSUYKKwkJYm9vbCAiRWFybHkgcHJpbnRrIHZpYSBTQ0lGIFVBUlQiCisJCWhlbHAKKwkJ
CVNheSBZIGhlcmUgaWYgeW91IHdpc2ggdGhlIGVhcmx5IHByaW50ayB0byBkaXJlY3QgdGhlaXIK
KwkJCW91dHB1dCB0byBhIFNDSUYgVUFSVC4gWW91IGNhbiB1c2UgdGhpcyBvcHRpb24gdG8KKwkJ
CXByb3ZpZGUgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBTQ0lGIFVBUlQgcmF0aGVyIHRoYW4KKwkJ
CXNlbGVjdGluZyBvbmUgb2YgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMgYmVsb3cgaWYK
KwkJCXlvdSBrbm93IHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcG9ydC4KKworCQkJVGhpcyBvcHRp
b24gaXMgcHJlZmVycmVkIG92ZXIgdGhlIHBsYXRmb3JtIHNwZWNpZmljCisJCQlvcHRpb25zOyB0
aGUgcGxhdGZvcm0gc3BlY2lmaWMgb3B0aW9ucyBhcmUgZGVwcmVjYXRlZAorCQkJYW5kIHdpbGwg
c29vbiBiZSByZW1vdmVkLgorCisJY29uZmlnIEVBUkxZX1BSSU5US19CUkNNCisJCWJvb2wgIkVh
cmx5IHByaW50ayB3aXRoIDgyNTAgb24gQnJvYWRjb20gNzQ0NUQwIGJvYXJkcyB3aXRoIEExNSBw
cm9jZXNzb3JzIgorCQlzZWxlY3QgRUFSTFlfVUFSVF84MjUwCisJY29uZmlnIEVBUkxZX1BSSU5U
S19EUkE3CisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRoIDgyNTAgb24gRFJBNyBwbGF0Zm9ybSIK
KwkJc2VsZWN0IEVBUkxZX1VBUlRfODI1MAorCWNvbmZpZyBFQVJMWV9QUklOVEtfRVhZTk9TNTI1
MAorCQlib29sICJFYXJseSBwcmludGsgd2l0aCB0aGUgc2Vjb25kIFVBUlQgb24gRXh5bm9zNTI1
MCIKKwkJc2VsZWN0IEVBUkxZX1VBUlRfRVhZTk9TNDIxMAorCQlkZXBlbmRzIG9uIEFSTV8zMgor
CWNvbmZpZyBFQVJMWV9QUklOVEtfRkFTVE1PREVMCisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRo
IHBsMDExIG9uIEFSTSBGYXN0bW9kZWwgc29mdHdhcmUgZW11bGF0b3JzIgorCQlzZWxlY3QgRUFS
TFlfVUFSVF9QTDAxMQorCWNvbmZpZyBFQVJMWV9QUklOVEtfSElLRVk5NjAKKwkJYm9vbCAiRWFy
bHkgcHJpbnRrIHdpdGggcGwwMTEgd2l0aCBIaWtleSA5NjAiCisJCXNlbGVjdCBFQVJMWV9VQVJU
X1BMMDExCisJY29uZmlnIEVBUkxZX1BSSU5US19KVU5PCisJCWJvb2wgIkVhcmx5IHByaW50ayB3
aXRoIHBsMDExIG9uIEp1bm8gcGxhdGZvcm0iCisJCXNlbGVjdCBFQVJMWV9VQVJUX1BMMDExCisJ
Y29uZmlnIEVBUkxZX1BSSU5US19MQUdFUgorCQlib29sICJFYXJseSBwcmludGsgd2l0aCBTQ0lG
MCBvbiBSZW5lc2FzIExhZ2VyIGJvYXJkIChSLUNhciBIMiBwcm9jZXNzb3IpIgorCQlzZWxlY3Qg
RUFSTFlfVUFSVF9TQ0lGCisJY29uZmlnIEVBUkxZX1BSSU5US19NSURXQVkKKwkJYm9vbCAiRWFy
bHkgcHJpbnRrIHdpdGggcGwwMTEgb24gQ2FseGVkYSBNaWR3YXkgcHJvY2Vzc29ycyIKKwkJc2Vs
ZWN0IEVBUkxZX1VBUlRfUEwwMTEKKwljb25maWcgRUFSTFlfUFJJTlRLX01WRUJVCisJCWJvb2wg
IkVhcmx5IHByaW50ayB3aXRoIE1WRUJVIGZvciBNYXJ2ZWxsIEFybWFkYSAzNzAwIFNvQ3MiCisJ
CXNlbGVjdCBFQVJMWV9VQVJUX01WRUJVCisJCWRlcGVuZHMgb24gQVJNXzY0CisJY29uZmlnIEVB
UkxZX1BSSU5US19PTUFQNTQzMgorCQlib29sICJFYXJseSBwcmludGsgd2l0aCBVQVJUMyBvbiBU
SSBPTUFQNTQzMiBwcm9jZXNzb3JzIgorCQlzZWxlY3QgRUFSTFlfVUFSVF84MjUwCisJY29uZmln
IEVBUkxZX1BSSU5US19SQ0FSMworCQlib29sICJFYXJseSBwcmludGsgd2l0aCBTQ0lGMiBvbiBS
ZW5lc2FzIFItQ2FyIEdlbjMgcHJvY2Vzc29ycyIKKwkJc2VsZWN0IEVBUkxZX1VBUlRfU0NJRgor
CWNvbmZpZyBFQVJMWV9QUklOVEtfU0VBVFRMRQorCQlib29sICJFYXJseSBwcmludGsgd2l0aCBw
bDAxMSBmb3IgQU1EIFNlYXR0bGUgcHJvY2Vzc29yIgorCQlzZWxlY3QgRUFSTFlfVUFSVF9QTDAx
MQorCWNvbmZpZyBFQVJMWV9QUklOVEtfU1VONkkKKwkJYm9vbCAiRWFybHkgcHJpbnRrIHdpdGgg
ODI1MCBvbiBBbGx3aW5uZXIgQTMxIHByb2Nlc3NvcnMiCisJCXNlbGVjdCBFQVJMWV9VQVJUXzgy
NTAKKwljb25maWcgRUFSTFlfUFJJTlRLX1NVTjdJCisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRo
IDgyNTAgb24gQWxsd2lubmVyIEEyMCBwcm9jZXNzb3JzIgorCQlzZWxlY3QgRUFSTFlfVUFSVF84
MjUwCisJY29uZmlnIEVBUkxZX1BSSU5US19USFVOREVSWAorCQlib29sICJFYXJseSBwcmludGsg
d2l0aCBwbDAxMSBmb3IgQ2F2aXVtIFRodW5kZXJYIHByb2Nlc3NvciIKKwkJc2VsZWN0IEVBUkxZ
X1VBUlRfUEwwMTEKKwkJZGVwZW5kcyBvbiBBUk1fNjQKKwljb25maWcgRUFSTFlfUFJJTlRLX1ZF
WFBSRVNTCisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRoIHBsMDExIGZvciB2ZXJzYXRpbGUgZXhw
cmVzcyIKKwkJc2VsZWN0IEVBUkxZX1VBUlRfUEwwMTEKKwljb25maWcgRUFSTFlfUFJJTlRLX1hH
RU5FX01DRElWSVRUCisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRoIDgyMCBvbiBYZ2VuZSBtY2Rp
dml0dCBwbGF0Zm9ybSIKKwkJc2VsZWN0IEVBUkxZX1VBUlRfODI1MAorCWNvbmZpZyBFQVJMWV9Q
UklOVEtfWEdFTkVfU1RPUk0KKwkJYm9vbCAiRWFybHkgcHJpbnRrIHdpdGggODIwIG9uIFhnZW5l
IHN0b3JtIHBsYXRmb3JtIgorCQlzZWxlY3QgRUFSTFlfVUFSVF84MjUwCisJY29uZmlnIEVBUkxZ
X1BSSU5US19aWU5RTVAKKwkJYm9vbCAiRWFybHkgcHJpbnRrIHdpdGggQ2FkZW5jZSBVQVJUIGZv
ciBYaWxpbnggWnlucU1QIFNvQ3MiCisJCXNlbGVjdCBFQVJMWV9VQVJUX0NBREVOQ0UKKwkJZGVw
ZW5kcyBvbiBBUk1fNjQKK2VuZGNob2ljZQorCisKK2NvbmZpZyBFQVJMWV9VQVJUXzgyNTAKKwlz
ZWxlY3QgRUFSTFlfUFJJTlRLCisJYm9vbAorY29uZmlnIEVBUkxZX1VBUlRfQ0FERU5DRQorCXNl
bGVjdCBFQVJMWV9QUklOVEsKKwlib29sCitjb25maWcgRUFSTFlfVUFSVF9FWFlOT1M0MjEwCisJ
c2VsZWN0IEVBUkxZX1BSSU5USworCWJvb2wKK2NvbmZpZyBFQVJMWV9VQVJUX01FU09OCisJc2Vs
ZWN0IEVBUkxZX1BSSU5USworCWJvb2wKK2NvbmZpZyBFQVJMWV9VQVJUX01WRUJVCisJc2VsZWN0
IEVBUkxZX1BSSU5USworCWJvb2wKK2NvbmZpZyBFQVJMWV9VQVJUX1BMMDExCisJc2VsZWN0IEVB
UkxZX1BSSU5USworCWJvb2wKK2NvbmZpZyBFQVJMWV9VQVJUX1NDSUYKKwlzZWxlY3QgRUFSTFlf
UFJJTlRLCisJYm9vbAorCitjb25maWcgRUFSTFlfUFJJTlRLCisJYm9vbAorCitjb25maWcgRUFS
TFlfVUFSVF9CQVNFX0FERFJFU1MKKwlkZXBlbmRzIG9uIEVBUkxZX1BSSU5USworCWhleCAiRWFy
bHkgcHJpbnRrLCBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgZGVidWcgVUFSVCIKKwlyYW5nZSAw
eDAgMHhmZmZmZmZmZiBpZiBBUk1fMzIKKwlkZWZhdWx0IDB4RjA0MEFCMDAgaWYgRUFSTFlfUFJJ
TlRLX0JSQ00KKwlkZWZhdWx0IDB4NDgwNkEwMDAgaWYgRUFSTFlfUFJJTlRLX0RSQTcKKwlkZWZh
dWx0IDB4MWMwOTAwMDAgaWYgRUFSTFlfUFJJTlRLX0ZBU1RNT0RFTAorCWRlZmF1bHQgMHgxMmMy
MDAwMCBpZiBFQVJMWV9QUklOVEtfRVhZTk9TNTI1MAorCWRlZmF1bHQgMHhmZmYzMjAwMCBpZiBF
QVJMWV9QUklOVEtfSElLRVk5NjAKKwlkZWZhdWx0IDB4N2ZmODAwMDAgaWYgRUFSTFlfUFJJTlRL
X0pVTk8KKwlkZWZhdWx0IDB4ZTZlNjAwMDAgaWYgRUFSTFlfUFJJTlRLX0xBR0VSCisJZGVmYXVs
dCAweGZmZjM2MDAwIGlmIEVBUkxZX1BSSU5US19NSURXQVkKKwlkZWZhdWx0IDB4ZDAwMTIwMDAg
aWYgRUFSTFlfUFJJTlRLX01WRUJVCisJZGVmYXVsdCAweDQ4MDIwMDAwIGlmIEVBUkxZX1BSSU5U
S19PTUFQNTQzMgorCWRlZmF1bHQgMHhlNmU4ODAwMCBpZiBFQVJMWV9QUklOVEtfUkNBUjMKKwlk
ZWZhdWx0IDB4ZTEwMTAwMDAgaWYgRUFSTFlfUFJJTlRLX1NFQVRUTEUKKwlkZWZhdWx0IDB4MDFj
MjgwMDAgaWYgRUFSTFlfUFJJTlRLX1NVTjZJCisJZGVmYXVsdCAweDAxYzI4MDAwIGlmIEVBUkxZ
X1BSSU5US19TVU43SQorCWRlZmF1bHQgMHg4N2UwMjQwMDAwMDAgaWYgRUFSTFlfUFJJTlRLX1RI
VU5ERVJYCisJZGVmYXVsdCAweDFjMDkwMDAwIGlmIEVBUkxZX1BSSU5US19WRVhQUkVTUworCWRl
ZmF1bHQgMHgxYzAyMTAwMCBpZiBFQVJMWV9QUklOVEtfWEdFTkVfTUNESVZJVFQKKwlkZWZhdWx0
IDB4MWMwMjAwMDAgaWYgRUFSTFlfUFJJTlRLX1hHRU5FX1NUT1JNCisJZGVmYXVsdCAweGZmMDAw
MDAwIGlmIEVBUkxZX1BSSU5US19aWU5RTVAKKworY29uZmlnIEVBUkxZX1VBUlRfUEwwMTFfQkFV
RF9SQVRFCisJZGVwZW5kcyBvbiBFQVJMWV9VQVJUX1BMMDExCisJaW50ICJFYXJseSBwcmludGsg
VUFSVCBiYXVkIHJhdGUgZm9yIHBsMDExIgorCWhlbHAKKwkJT3B0aW9uYWxseSBzZXRzIHRoZSBi
YXVkIHJhdGUgd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gY29uZmlndXJlCisJCXRoZSBVQVJUIGF0
IHN0YXJ0IG9mIGRheS4KKworCQlJZiBFQVJMWV9VQVJUX1BMMDExX0JBVURfUkFURSBpcyBzZXQg
dG8gMCB0aGVuIHRoZSBjb2RlIHdpbGwKKwkJbm90IHRyeSB0byBpbml0aWFsaXplIHRoZSBVQVJU
LCBzbyB0aGF0IGJvb3Rsb2FkZXIgb3IgZmlybXdhcmUKKwkJc2V0dGluZ3MgY2FuIGJlIHVzZWQg
Zm9yIG1heGltdW0gY29tcGF0aWJpbGl0eS4KKworCWRlZmF1bHQgMTE1MjAwIGlmIEVBUkxZX1BS
SU5US19GQVNUTU9ERUwKKwlkZWZhdWx0IDAKKworY29uZmlnIEVBUkxZX1VBUlRfSU5JVAorCWRl
cGVuZHMgb24gRUFSTFlfVUFSVF9QTDAxMSAmJiBFQVJMWV9VQVJUX1BMMDExX0JBVURfUkFURSAh
PSAwCisJZGVmX2Jvb2wgeQorCitjb25maWcgRUFSTFlfVUFSVF84MjUwX1JFR19TSElGVAorCWRl
cGVuZHMgb24gRUFSTFlfVUFSVF84MjUwCisJaW50ICJFYXJseSBwcmludGssIGxlZnQtc2hpZnQg
dG8gYXBwbHkgdG8gdGhlIHJlZ2lzdGVyIG9mZnNldHMgd2l0aGluIHRoZSA4MjUwIFVBUlQiCisJ
aGVscAorCQlFQVJMWV9VQVJUXzgyNTBfUkVHX1NISUZUIGlzLCBvcHRpb25hbGx5LCB0aGUgbGVm
dC1zaGlmdCB0bworCQlhcHBseSB0byB0aGUgcmVnaXN0ZXIgb2Zmc2V0cyB3aXRoaW4gdGhlIFVB
UlQgd2l0aCBlYXJseQorCQlwcmludGsuCisKKwkJRGVmYXVsdCB0byAwLgorCisJZGVmYXVsdCAy
IGlmIEVBUkxZX1BSSU5US19CUkNNCisJZGVmYXVsdCAyIGlmIEVBUkxZX1BSSU5US19EUkE3CisJ
ZGVmYXVsdCAyIGlmIEVBUkxZX1BSSU5US19PTUFQNTQzMgorCWRlZmF1bHQgMiBpZiBFQVJMWV9Q
UklOVEtfU1VONkkKKwlkZWZhdWx0IDIgaWYgRUFSTFlfUFJJTlRLX1NVTjdJCisJZGVmYXVsdCAy
IGlmIEVBUkxZX1BSSU5US19YR0VORV9NQ0RJVklUVAorCWRlZmF1bHQgMiBpZiBFQVJMWV9QUklO
VEtfWEdFTkVfU1RPUk0KKwlkZWZhdWx0IDAKKworY2hvaWNlIEVBUkxZX1VBUlRfU0NJRl9WRVJT
SU9OCisJcHJvbXB0ICJFYXJseSBwcmludGsgVUFSVCBTQ0lGIGludGVyZmFjZSB2ZXJzaW9uIgor
CWRlcGVuZHMgb24gRUFSTFlfVUFSVF9TQ0lGCisJZGVmYXVsdCBFQVJMWV9VQVJUX1NDSUZfVkVS
U0lPTl9OT05FCisJaGVscAorCQlTZWxlY3QgdGhlIGludGVyZmFjZSB2ZXJzaW9uIG9mIHRoZSBT
Q0lGIFVBUlQuCisKKwkJU2VsZWN0IEVBUkxZX1VBUlRfU0NJRl9WRVJTSU9OX05PTkUgdG8gdXNl
IHRoZSBkZWZhdWx0CisJCWludGVyZmFjZSB2ZXJzaW9uIChTQ0lGKS4KKwljb25maWcgRUFSTFlf
VUFSVF9TQ0lGX1ZFUlNJT05fTk9ORQorCQlib29sICJkZWZhdWx0IFNDSUYgVUFSVCBpbnRlcmZh
Y2UiCisJY29uZmlnIEVBUkxZX1VBUlRfU0NJRl9WRVJTSU9OX0EKKwkJYm9vbCAiU0NJRiBVQVJU
IGludGVyZmFjZSB2ZXJzaW9uIEEiCitlbmRjaG9pY2UKKworY29uZmlnIEVBUkxZX1BSSU5US19J
TkMKKwlzdHJpbmcKKwlkZWZhdWx0ICJkZWJ1Zy04MjUwLmluYyIgaWYgRUFSTFlfVUFSVF84MjUw
CisJZGVmYXVsdCAiZGVidWctY2FkZW5jZS5pbmMiIGlmIEVBUkxZX1VBUlRfQ0FERU5DRQorCWRl
ZmF1bHQgImRlYnVnLWV4eW5vczQyMTAuaW5jIiBpZiBFQVJMWV9VQVJUX0VYWU5PUzQyMTAKKwlk
ZWZhdWx0ICJkZWJ1Zy1tZXNvbi5pbmMiIGlmIEVBUkxZX1VBUlRfTUVTT04KKwlkZWZhdWx0ICJk
ZWJ1Zy1tdmVidS5pbmMiIGlmIEVBUkxZX1VBUlRfTVZFQlUKKwlkZWZhdWx0ICJkZWJ1Zy1wbDAx
MS5pbmMiIGlmIEVBUkxZX1VBUlRfUEwwMTEKKwlkZWZhdWx0ICJkZWJ1Zy1zY2lmLmluYyIgaWYg
RUFSTFlfVUFSVF9TQ0lGCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4v
YXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMTA0NGMyMjk4YS4uMTJmOTJhNGJkMyAxMDA2NDQKLS0t
IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpAQCAt
MTYsNyArMTYsNyBAQCBvYmoteSArPSBkZXZpY2Uubwogb2JqLXkgKz0gZG9tYWluLm8KIG9iai15
ICs9IGRvbWFpbl9idWlsZC5pbml0Lm8KIG9iai15ICs9IGRvbWN0bC5vCi1vYmotJChFQVJMWV9Q
UklOVEspICs9IGVhcmx5X3ByaW50ay5vCitvYmotJChDT05GSUdfRUFSTFlfUFJJTlRLKSArPSBl
YXJseV9wcmludGsubwogb2JqLXkgKz0gZ2ljLm8KIG9iai15ICs9IGdpYy12Mi5vCiBvYmotJChD
T05GSUdfR0lDVjMpICs9IGdpYy12My5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vUnVsZXMu
bWsgYi94ZW4vYXJjaC9hcm0vUnVsZXMubWsKaW5kZXggZmFhMDllYTExMS4uM2FkMjg0YWE3MSAx
MDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL1J1bGVzLm1rCisrKyBiL3hlbi9hcmNoL2FybS9SdWxl
cy5tawpAQCAtMTgsNzYgKzE4LDYgQEAgQ0ZMQUdTLSQoQ09ORklHX0FSTV8zMikgKz0gLW1jcHU9
Y29ydGV4LWExNQogQ0ZMQUdTLSQoQ09ORklHX0FSTV82NCkgKz0gLW1jcHU9Z2VuZXJpYwogQ0ZM
QUdTLSQoQ09ORklHX0FSTV82NCkgKz0gLW1nZW5lcmFsLXJlZ3Mtb25seSAjIE5vIGZwIHJlZ2lz
dGVycyBldGMKIAotRUFSTFlfUFJJTlRLIDo9IG4KLQotaWZlcSAoJChDT05GSUdfREVCVUcpLHkp
Ci0KLSMgU2VlIGRvY3MvbWlzYy9hcm0vZWFybHktcHJpbnRrLnR4dCBmb3Igc3ludGF4Ci0KLUVB
UkxZX1BSSU5US19icmNtICAgICAgICAgICA6PSA4MjUwLDB4RjA0MEFCMDAsMgotRUFSTFlfUFJJ
TlRLX2RyYTcgICAgICAgICAgIDo9IDgyNTAsMHg0ODA2QTAwMCwyCi1FQVJMWV9QUklOVEtfZmFz
dG1vZGVsICAgICAgOj0gcGwwMTEsMHgxYzA5MDAwMCwxMTUyMDAKLUVBUkxZX1BSSU5US19leHlu
b3M1MjUwICAgICA6PSBleHlub3M0MjEwLDB4MTJjMjAwMDAKLUVBUkxZX1BSSU5US19oaWtleTk2
MCAgICAgICA6PSBwbDAxMSwweGZmZjMyMDAwCi1FQVJMWV9QUklOVEtfanVubyAgICAgICAgICAg
Oj0gcGwwMTEsMHg3ZmY4MDAwMAotRUFSTFlfUFJJTlRLX2xhZ2VyICAgICAgICAgIDo9IHNjaWYs
MHhlNmU2MDAwMAotRUFSTFlfUFJJTlRLX21pZHdheSAgICAgICAgIDo9IHBsMDExLDB4ZmZmMzYw
MDAKLUVBUkxZX1BSSU5US19tdmVidSAgICAgICAgICA6PSBtdmVidSwweGQwMDEyMDAwCi1FQVJM
WV9QUklOVEtfb21hcDU0MzIgICAgICAgOj0gODI1MCwweDQ4MDIwMDAwLDIKLUVBUkxZX1BSSU5U
S19yY2FyMyAgICAgICAgICA6PSBzY2lmLDB4ZTZlODgwMDAKLUVBUkxZX1BSSU5US19zZWF0dGxl
ICAgICAgICA6PSBwbDAxMSwweGUxMDEwMDAwCi1FQVJMWV9QUklOVEtfc3VuNmkgICAgICAgICAg
Oj0gODI1MCwweDAxYzI4MDAwLDIKLUVBUkxZX1BSSU5US19zdW43aSAgICAgICAgICA6PSA4MjUw
LDB4MDFjMjgwMDAsMgotRUFSTFlfUFJJTlRLX3RodW5kZXJ4ICAgICAgIDo9IHBsMDExLDB4ODdl
MDI0MDAwMDAwCi1FQVJMWV9QUklOVEtfdmV4cHJlc3MgICAgICAgOj0gcGwwMTEsMHgxYzA5MDAw
MAotRUFSTFlfUFJJTlRLX3hnZW5lLW1jZGl2aXR0IDo9IDgyNTAsMHgxYzAyMTAwMCwyCi1FQVJM
WV9QUklOVEtfeGdlbmUtc3Rvcm0gICAgOj0gODI1MCwweDFjMDIwMDAwLDIKLUVBUkxZX1BSSU5U
S196eW5xbXAgICAgICAgICA6PSBjYWRlbmNlLDB4ZmYwMDAwMDAKLQotaWZuZXEgKCQoRUFSTFlf
UFJJTlRLXyQoQ09ORklHX0VBUkxZX1BSSU5USykpLCkKLUVBUkxZX1BSSU5US19DRkcgOj0gJChz
dWJzdCAkKGNvbW1hKSwgLCQoRUFSTFlfUFJJTlRLXyQoQ09ORklHX0VBUkxZX1BSSU5USykpKQot
ZWxzZQotRUFSTFlfUFJJTlRLX0NGRyA6PSAkKHN1YnN0ICQoY29tbWEpLCAsJChDT05GSUdfRUFS
TFlfUFJJTlRLKSkKLWVuZGlmCi0KLSMgRXh0cmFjdCBjb25maWd1cmF0aW9uIGZyb20gc3RyaW5n
Ci1FQVJMWV9QUklOVEtfSU5DIDo9ICQod29yZCAxLCQoRUFSTFlfUFJJTlRLX0NGRykpCi1FQVJM
WV9VQVJUX0JBU0VfQUREUkVTUyA6PSAkKHdvcmQgMiwkKEVBUkxZX1BSSU5US19DRkcpKQotCi0j
IFVBUlQgc3BlY2lmaWMgb3B0aW9ucwotaWZlcSAoJChFQVJMWV9QUklOVEtfSU5DKSw4MjUwKQot
RUFSTFlfVUFSVF9SRUdfU0hJRlQgOj0gJCh3b3JkIDMsJChFQVJMWV9QUklOVEtfQ0ZHKSkKLWVu
ZGlmCi1pZmVxICgkKEVBUkxZX1BSSU5US19JTkMpLHBsMDExKQotaWZuZXEgKCQod29yZCAzLCQo
RUFSTFlfUFJJTlRLX0NGRykpLCkKLUVBUkxZX1BSSU5US19JTklUX1VBUlQgOj0geQotRUFSTFlf
UFJJTlRLX0JBVUQgOj0gJCh3b3JkIDMsJChFQVJMWV9QUklOVEtfQ0ZHKSkKLWVuZGlmCi1lbmRp
ZgotaWZlcSAoJChFQVJMWV9QUklOVEtfSU5DKSxzY2lmKQotaWZuZXEgKCQod29yZCAzLCQoRUFS
TFlfUFJJTlRLX0NGRykpLCkKLUNGTEFHUy15ICs9IC1EQ09ORklHX0VBUkxZX1VBUlRfU0NJRl9W
RVJTSU9OXyQod29yZCAzLCQoRUFSTFlfUFJJTlRLX0NGRykpCi1lbHNlCi1DRkxBR1MteSArPSAt
RENPTkZJR19FQVJMWV9VQVJUX1NDSUZfVkVSU0lPTl9OT05FCi1lbmRpZgotZW5kaWYKLQotaWZu
ZXEgKCQoRUFSTFlfUFJJTlRLX0lOQyksKQotRUFSTFlfUFJJTlRLIDo9IHkKLWVuZGlmCi0KLUNG
TEFHUy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05GSUdfRUFSTFlfUFJJTlRLCi1DRkxBR1MtJChF
QVJMWV9QUklOVEtfSU5JVF9VQVJUKSArPSAtRENPTkZJR19FQVJMWV9VQVJUX0lOSVQKLUNGTEFH
Uy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05GSUdfRUFSTFlfUFJJTlRLX0lOQz1cImRlYnVnLSQo
RUFSTFlfUFJJTlRLX0lOQykuaW5jXCIKLUNGTEFHUy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05G
SUdfRUFSTFlfVUFSVF9QTDAxMV9CQVVEX1JBVEU9JChFQVJMWV9QUklOVEtfQkFVRCkKLUNGTEFH
Uy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05GSUdfRUFSTFlfVUFSVF9CQVNFX0FERFJFU1M9JChF
QVJMWV9VQVJUX0JBU0VfQUREUkVTUykKLUNGTEFHUy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05G
SUdfRUFSTFlfVUFSVF84MjUwX1JFR19TSElGVD0kKEVBUkxZX1VBUlRfUkVHX1NISUZUKQotCi1l
bHNlICMgIUNPTkZJR19ERUJVRwotCi1pZm5lcSAoJChDT05GSUdfRUFSTFlfUFJJTlRLKSwpCi0j
IEVhcmx5IHByaW50ayBpcyBkZXBlbmRhbnQgb24gYSBkZWJ1ZyBidWlsZC4KLSQoZXJyb3IgQ09O
RklHX0VBUkxZX1BSSU5USyBlbmFibGVkIGZvciBub24tZGVidWcgYnVpbGQpCi1lbmRpZgotCitp
Zm5lcSAoJChmaWx0ZXIgY29tbWFuZCBsaW5lIGVudmlyb25tZW50LCQob3JpZ2luIENPTkZJR19F
QVJMWV9QUklOVEspKSwpCisgICAgJChlcnJvciBZb3UgbXVzdCB1c2UgJ21ha2UgbWVudWNvbmZp
ZycgdG8gZW5hYmxlL2Rpc2FibGUgZWFybHkgcHJpbnRrIG5vdykKIGVuZGlmCmRpZmYgLS1naXQg
YS94ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZp
bGUKaW5kZXggNTM5YmJlZjI5OC4uOTYxMDVkMjM4MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt
L2FybTMyL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9hcm0zMi9NYWtlZmlsZQpAQCAtMSw2
ICsxLDYgQEAKIG9iai15ICs9IGxpYi8KIAotb2JqLSQoRUFSTFlfUFJJTlRLKSArPSBkZWJ1Zy5v
CitvYmotJChDT05GSUdfRUFSTFlfUFJJTlRLKSArPSBkZWJ1Zy5vCiBvYmoteSArPSBkb21jdGwu
bwogb2JqLXkgKz0gZG9tYWluLm8KIG9iai15ICs9IGVudHJ5Lm8KZGlmZiAtLWdpdCBhL3hlbi9h
cmNoL2FybS9hcm02NC9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9hcm02NC9NYWtlZmlsZQppbmRl
eCBkYjg1NjViNzFhLi40MDY0MmZmNTc0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtNjQv
TWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlCkBAIC0yLDcgKzIsNyBA
QCBvYmoteSArPSBsaWIvCiAKIG9iai15ICs9IGNhY2hlLm8KIG9iai0kKENPTkZJR19IQVJERU5f
QlJBTkNIX1BSRURJQ1RPUikgKz0gYnBpLm8KLW9iai0kKEVBUkxZX1BSSU5USykgKz0gZGVidWcu
bworb2JqLSQoQ09ORklHX0VBUkxZX1BSSU5USykgKz0gZGVidWcubwogb2JqLXkgKz0gZG9tY3Rs
Lm8KIG9iai15ICs9IGRvbWFpbi5vCiBvYmoteSArPSBlbnRyeS5vCmRpZmYgLS1naXQgYS94ZW4v
YXJjaC94ODYvS2NvbmZpZy5kZWJ1ZyBiL3hlbi9hcmNoL3g4Ni9LY29uZmlnLmRlYnVnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU2OWRlMjliYjIKLS0KZ2VuZXJhdGVk
IGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cg
bWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 09:55:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 09:55:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJa5m-0006iA-7O; Wed, 01 Apr 2020 09:55:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJa5l-0006i1-LW
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:25 +0000
X-Inumbo-ID: e8a6680e-73fe-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e8a6680e-73fe-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 09:55:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=3/Zquhnzx/P6rhboPXBFBkeckNUtZLF6bUrPj98IpJ0=; b=7J4CEPKfrGanuVk03SbamlmiZ8
 iHKFeDQTlyPnkPe79jVC2XnExFMElquux2p58frlJKK0tzvHDkgHlYrtLNPzS2HBwZVUByqU96Wzu
 3gA+XtHZfeefxpLmB7D75Sg6iKgtbechIwxA+W3ovqwVaQs7eDM+dU8F19VjgQi297vk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJa5k-0007SV-U7
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJa5k-0002vC-TD
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 09:55:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJa5k-0002vC-TD@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 09:55:24 +0000
Subject: [Xen-changelog] [xen staging] build,arm: Fix deps check of head.o
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGRjMGIzZWI1NmI5Y2UzZTJiNjFmMGM3ZDNhZjVhOThiNWE1ODYwOTkKQXV0aG9yOiAg
ICAgQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CkF1dGhvckRhdGU6
IFR1ZSBNYXIgMzEgMTE6MzA6NDcgMjAyMCArMDEwMApDb21taXQ6ICAgICBKdWxpZW4gR3JhbGwg
PGpncmFsbEBhbWF6b24uY29tPgpDb21taXREYXRlOiBXZWQgQXByIDEgMTA6NDk6NDkgMjAyMCAr
MDEwMAoKICAgIGJ1aWxkLGFybTogRml4IGRlcHMgY2hlY2sgb2YgaGVhZC5vCiAgICAKICAgIGFy
bSovaGVhZC5vIGlzbid0IGluIG9iai15IG9yIGV4dHJhLXksIHNvIG1ha2UgZG9uJ3QgbG9hZCB0
aGUKICAgIGFzc29jaWF0ZWQgLiouZCBmaWxlIChvciAuKi5jbWQgZmlsZSB3aGVuIGlmX2NoYW5n
ZWQgd2lsbCBiZSB1c2VkKS4KICAgIFRoZXJlIGlzIGEgd29ya2Fyb3VuZCB3aGVyZSAuKi5kIGZp
bGUgaXMgYWRkZWQgbWFudWFsbHkgaW50byBERVBTLgogICAgCiAgICBDaGFuZ2luZyBERVBTIGlz
bid0IG5lZWRlZCwgd2UgY2FuIHNpbXBseSBhZGQgaGVhZC5vIGludG8gZXh0cmEteSBhbmQKICAg
IHRoZSBkZXBlbmRlbmN5IGZpbGVzIHdpbGwgYmUgbG9hZGVkLgogICAgCiAgICBTaWduZWQtb2Zm
LWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KICAgIEFja2Vk
LWJ5OiBKdWxpZW4gR3JhbGwgPGpncmFsbEBhbWF6b24uY29tPgotLS0KIHhlbi9hcmNoL2FybS9N
YWtlZmlsZSB8IDMgKy0tCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJt
L01ha2VmaWxlCmluZGV4IDEyZjkyYTRiZDMuLjcyNzNmMzU2ZjEgMTAwNjQ0Ci0tLSBhL3hlbi9h
cmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTYyLDYgKzYy
LDcgQEAgb2JqLSQoQ09ORklHX1NCU0FfVlVBUlRfQ09OU09MRSkgKz0gdnBsMDExLm8KIG9iai15
ICs9IHZzbWMubwogb2JqLXkgKz0gdnBzY2kubwogb2JqLXkgKz0gdnVhcnQubworZXh0cmEteSAr
PSAkKFRBUkdFVF9TVUJBUkNIKS9oZWFkLm8KIAogI29iai1iaW4teSArPSAuLi4ubwogCkBAIC03
Miw4ICs3Myw2IEBAIGVuZGlmCiAKIEFMTF9PQkpTIDo9ICQoVEFSR0VUX1NVQkFSQ0gpL2hlYWQu
byAkKEFMTF9PQkpTKQogCi1ERVBTICs9ICQoVEFSR0VUX1NVQkFSQ0gpLy5oZWFkLm8uZAotCiBp
ZmRlZiBDT05GSUdfTElWRVBBVENICiBhbGxfc3ltYm9scyA9IC0tYWxsLXN5bWJvbHMKIGlmZGVm
IENPTkZJR19GQVNUX1NZTUJPTF9MT09LVVAKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBm
b3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1j
aGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 10:00:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 10:00:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJaAI-0007LU-Jt; Wed, 01 Apr 2020 10:00:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJaAH-0007Ce-Ns
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:05 +0000
X-Inumbo-ID: 8f603ac6-73ff-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8f603ac6-73ff-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 10:00:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ieRTU/jF+5oLmw3yjD/UG3oq039atBo6tHaQl8j0VFU=; b=vyqqYYkT/3iXmhJ37Wh6OSqCWL
 ch5ziTe5N7NnBuJgpp3EdVdy7sNVYKGry72r8Og4FF++OBWyEUO5skiEKhmTg5J2BiAW7/pL01+Gp
 BX6jw2sgdu+cVyGh9rrVbE8smmDT9+kmgwaCH5yGTzAEfVJkjMI1a0SzLeyy3rmGL7ns=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJaAG-0007dj-JX
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJaAG-0003Hc-IY
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJaAG-0003Hc-IY@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 10:00:04 +0000
Subject: [Xen-changelog] [xen staging] xen/public: sysctl:
 set_parameter.params and debug.keys should be const
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGM0MzM2YjBiMWEzNWMxYTU0YTIxYzBjYWZhZDM5NDY2NjEzYTcxNGYKQXV0aG9yOiAg
ICAgSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KQXV0aG9yRGF0ZTogTW9uIE1hciAz
MCAyMDoyMTo1MSAyMDIwICswMTAwCkNvbW1pdDogICAgIEp1bGllbiBHcmFsbCA8amdyYWxsQGFt
YXpvbi5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMDo1NTozNSAyMDIwICswMTAwCgogICAg
eGVuL3B1YmxpYzogc3lzY3RsOiBzZXRfcGFyYW1ldGVyLnBhcmFtcyBhbmQgZGVidWcua2V5cyBz
aG91bGQgYmUgY29uc3QKICAgIAogICAgVGhlIGZpZWxkcyBzZXRfcGFyYW1ldGVyLnBhcmFtcyBh
bmQgZGVidWcua2V5cyBzaG91bGQgbmV2ZXIgYmUgbW9kaWZpZWQKICAgIGJ5IHRoZSBoeXBlcnZp
c29yLiBTbyBtYXJrIHRoZW0gYXMgY29uc3QuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEp1bGll
biBHcmFsbCA8amdyYWxsQGFtYXpvbi5jb20+CiAgICBSZXZpZXdlZC1ieTogSmFuIEJldWxpY2gg
PGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCB8IDQg
KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJs
aWMvc3lzY3RsLmgKaW5kZXggM2Q3MmZhYjQ5Zi4uM2EwOGM1MTJlOCAxMDA2NDQKLS0tIGEveGVu
L2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwu
aApAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsX2dldGRvbWFpbmluZm9saXN0
IHsKIC8qIFhFTl9TWVNDVExfZGVidWdfa2V5cyAqLwogc3RydWN0IHhlbl9zeXNjdGxfZGVidWdf
a2V5cyB7CiAgICAgLyogSU4gdmFyaWFibGVzLiAqLwotICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQo
Y2hhcikga2V5czsKKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KGNvbnN0X2NoYXIpIGtleXM7CiAg
ICAgdWludDMyX3QgbnJfa2V5czsKIH07CiAKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHN0cnVjdCB4
ZW5fc3lzY3RsX2xpdmVwYXRjaF9vcCB7CiAgKi8KIAogc3RydWN0IHhlbl9zeXNjdGxfc2V0X3Bh
cmFtZXRlciB7Ci0gICAgWEVOX0dVRVNUX0hBTkRMRV82NChjaGFyKSBwYXJhbXM7ICAgICAgIC8q
IElOOiBwb2ludGVyIHRvIHBhcmFtZXRlcnMuICovCisgICAgWEVOX0dVRVNUX0hBTkRMRV82NChj
b25zdF9jaGFyKSBwYXJhbXM7IC8qIElOOiBwb2ludGVyIHRvIHBhcmFtZXRlcnMuICovCiAgICAg
dWludDE2X3Qgc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBzaXplIG9mIHBh
cmFtZXRlcnMuICovCiAgICAgdWludDE2X3QgcGFkWzNdOyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIElOOiBNVVNUIGJlIHplcm8uICovCiB9OwotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90
IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3RhZ2luZwoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVu
LWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 10:00:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 10:00:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJaAS-0007b8-La; Wed, 01 Apr 2020 10:00:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJaAR-0007ax-KM
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:15 +0000
X-Inumbo-ID: 9562cbaa-73ff-11ea-ba8a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9562cbaa-73ff-11ea-ba8a-12813bfff9fa;
 Wed, 01 Apr 2020 10:00:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=lCoZ9F/QQI/ZrRcADJsNGjX5+NLCCNJzw0ORj7Sqi1c=; b=riF/pP4bCDRG/NqKmiMCIPDR2u
 kB8od/9A3/gXfB+7qL2fHaSfPTW46W1jVlHUivLcrmin8mjVHospAzLYgoJhinWxEjDPpZzhO6MiE
 pddE6JTJvVCCS3ZahcljDms+osyrNszSe4P86+1ODMgo75xdQIeQE2v97jLn3drV+BAM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJaAQ-0007dr-Mj
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJaAQ-0003Is-LU
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJaAQ-0003Is-LU@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 10:00:14 +0000
Subject: [Xen-changelog] [xen staging] tools/libxc: misc: Mark const the
 parameter 'keys' of xc_send_debug_keys()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDJiODA3OTYxMGVjNTU0MTM2MTNhZDA3MWNjODFjZDlmOTcyMzJhN2UKQXV0aG9yOiAg
ICAgSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KQXV0aG9yRGF0ZTogTW9uIE1hciAz
MCAyMDoyMTo1MiAyMDIwICswMTAwCkNvbW1pdDogICAgIEp1bGllbiBHcmFsbCA8amdyYWxsQGFt
YXpvbi5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMDo1NjowMSAyMDIwICswMTAwCgogICAg
dG9vbHMvbGlieGM6IG1pc2M6IE1hcmsgY29uc3QgdGhlIHBhcmFtZXRlciAna2V5cycgb2YgeGNf
c2VuZF9kZWJ1Z19rZXlzKCkKICAgIAogICAgT0NhbWwgaXMgdXNpbmcgYSBzdHJpbmcgdG8gZGVz
Y3JpYmUgdGhlIHBhcmFtZXRlciAna2V5cycgb2YKICAgIHhjX3NlbmRfZGVidWdfa2V5cygpLiBT
aW5jZSBPY2FtbCA0LjA2LjAxLCBTdHJpbmdfdmFsKCkgd2lsbCByZXR1cm4gYQogICAgY29uc3Qg
Y2hhciAqIHdoZW4gdXNpbmcgLXNhZmUtc3RyaW5nLiBUaGlzIHdpbGwgcmVzdWx0IHRvIGEgYnVp
bGQKICAgIGZhaWx1cmUgYmVjYXVzZSB4Y19zZW5kX2RlYnVnX2tleXMoKSBleHBlY3RzIGEgY2hh
ciAqLgogICAgCiAgICBUaGUgZnVuY3Rpb24gc2hvdWxkIG5ldmVyIG1vZGlmeSB0aGUgcGFyYW1l
dGVyICdrZXlzJyBhbmQgdGhlcmVmb3JlIHRoZQogICAgcGFyYW1ldGVyIHNob3VsZCBiZSBjb25z
dC4gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBub3QgZGlyZWN0bHkgcG9zc2libGUKICAgIGJlY2F1
c2UgREVDTEFSRV9IWVBFUkNBTExfQk9VTkNFKCkgaXMgZXhwZWN0aW5nIGEgbm9uLWNvbnN0IHZh
cmlhYmxlLgogICAgCiAgICBBIG5ldyBtYWNybyBERUNMQVJFX0hZUEVSQ0FMTF9CT1VOQ0VfSU4o
KSBpcyBpbnRyb2R1Y2VkIGFuZCB3aWxsIHRha2UKICAgIGNhcmUgb2YgY29uc3QgcGFyYW1ldGVy
LiBUaGUgZmlyc3QgdXNlciB3aWxsIGJlIHhjX3NlbmRfZGVidWdfa2V5cygpIGJ1dAogICAgdGhp
cyBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYWNlIGluIHRoZSBmdXR1cmUuCiAgICAKICAgIFJlcG9y
dGVkLWJ5OiBEYXJpbyBGYWdnaW9saSA8ZGZhZ2dpb2xpQHN1c2UuY29tPgogICAgU2lnbmVkLW9m
Zi1ieTogSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KICAgIFJldmlld2VkLWJ5OiBJ
YW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KLS0tCiB0b29scy9saWJ4Yy9p
bmNsdWRlL3hlbmN0cmwuaCB8IDIgKy0KIHRvb2xzL2xpYnhjL3hjX21pc2MuYyAgICAgICAgIHwg
NCArKy0tCiB0b29scy9saWJ4Yy94Y19wcml2YXRlLmggICAgICB8IDggKysrKysrKysKIDMgZmls
ZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVu
Y3RybC5oCmluZGV4IGZjNmU1N2ExYTAuLmQ4ODc0ZWI4NDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp
YnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5o
CkBAIC0xMjI1LDcgKzEyMjUsNyBAQCBpbnQgeGNfcmVhZGNvbnNvbGVyaW5nKHhjX2ludGVyZmFj
ZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBucl9jaGFycywK
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsZWFyLCBpbnQgaW5jcmVtZW50YWwsIHVpbnQz
Ml90ICpwaW5kZXgpOwogCi1pbnQgeGNfc2VuZF9kZWJ1Z19rZXlzKHhjX2ludGVyZmFjZSAqeGNo
LCBjaGFyICprZXlzKTsKK2ludCB4Y19zZW5kX2RlYnVnX2tleXMoeGNfaW50ZXJmYWNlICp4Y2gs
IGNvbnN0IGNoYXIgKmtleXMpOwogaW50IHhjX3NldF9wYXJhbWV0ZXJzKHhjX2ludGVyZmFjZSAq
eGNoLCBjaGFyICpwYXJhbXMpOwogCiB0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3BoeXNpbmZv
IHhjX3BoeXNpbmZvX3Q7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19taXNjLmMgYi90b29s
cy9saWJ4Yy94Y19taXNjLmMKaW5kZXggMDkzZmE0NDA4MS4uOTU3YzAzNDE1YyAxMDA2NDQKLS0t
IGEvdG9vbHMvbGlieGMveGNfbWlzYy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX21pc2MuYwpAQCAt
MTY3LDExICsxNjcsMTEgQEAgaW50IHhjX3JlYWRjb25zb2xlcmluZyh4Y19pbnRlcmZhY2UgKnhj
aCwKICAgICByZXR1cm4gcmV0OwogfQogCi1pbnQgeGNfc2VuZF9kZWJ1Z19rZXlzKHhjX2ludGVy
ZmFjZSAqeGNoLCBjaGFyICprZXlzKQoraW50IHhjX3NlbmRfZGVidWdfa2V5cyh4Y19pbnRlcmZh
Y2UgKnhjaCwgY29uc3QgY2hhciAqa2V5cykKIHsKICAgICBpbnQgcmV0LCBsZW4gPSBzdHJsZW4o
a2V5cyk7CiAgICAgREVDTEFSRV9TWVNDVEw7Ci0gICAgREVDTEFSRV9IWVBFUkNBTExfQk9VTkNF
KGtleXMsIGxlbiwgWENfSFlQRVJDQUxMX0JVRkZFUl9CT1VOQ0VfSU4pOworICAgIERFQ0xBUkVf
SFlQRVJDQUxMX0JPVU5DRV9JTihrZXlzLCBsZW4pOwogCiAgICAgaWYgKCB4Y19oeXBlcmNhbGxf
Ym91bmNlX3ByZSh4Y2gsIGtleXMpICkKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEv
dG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCmluZGV4
IGFkYzNiNmE1NzEuLmM3N2VkYjNjNGMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZh
dGUuaAorKysgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKQEAgLTE4Miw2ICsxODIsMTQgQEAg
ZW51bSB7CiAjZGVmaW5lIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5DRShfdWJ1ZiwgX3N6LCBfZGly
KSBERUNMQVJFX05BTUVEX0hZUEVSQ0FMTF9CT1VOQ0UoX3VidWYsIF91YnVmLCBfc3osIF9kaXIp
CiAKIC8qCisgKiBEZWNsYXJlIGEgYm91bmNlIGJ1ZmZlciBzaGFkb3dpbmcgdGhlIG5hbWVkIHVz
ZXIgZGF0YSBwb2ludGVyIHRoYXQKKyAqIGNhbm5vdCBiZSBtb2RpZmllZC4KKyAqLworI2RlZmlu
ZSBERUNMQVJFX0hZUEVSQ0FMTF9CT1VOQ0VfSU4oX3VidWYsIF9zeikgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgREVDTEFSRV9OQU1FRF9IWVBFUkNBTExfQk9VTkNFKF91YnVmLCAodm9pZCAq
KShfdWJ1ZiksIF9zeiwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WENfSFlQRVJDQUxMX0JVRkZFUl9CT1VOQ0VfSU4pCisKKy8qCiAgKiBTZXQgdGhlIHNpemUgb2Yg
ZGF0YSB0byBib3VuY2UuIFVzZWZ1bCB3aGVuIHRoZSBzaXplIGlzIG5vdCBrbm93bgogICogd2hl
biB0aGUgYm91bmNlIGJ1ZmZlciBpcyBkZWNsYXJlZC4KICAqLwotLQpnZW5lcmF0ZWQgYnkgZ2l0
LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3RhZ2luZwoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5n
IGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 10:00:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 10:00:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJaAc-0007cC-Ni; Wed, 01 Apr 2020 10:00:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJaAb-0007c2-I6
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:25 +0000
X-Inumbo-ID: 9ab5439f-73ff-11ea-ba8a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9ab5439f-73ff-11ea-ba8a-12813bfff9fa;
 Wed, 01 Apr 2020 10:00:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GXQIFMQqaGxl+B2wKifJPUg/P0w3DX03wSwJQiYIMn0=; b=x88TP90sgNQD5Ej4cjVUbb5zm9
 xvOzx2jRra38nOhG8prk8KoB5sZKfbSBG/IsDGUiobIOGR3FMpOlAdto23ONc+05zZYv8saK3uxpu
 vVXfaQOik7BRYKdCTtDXATdOsHHisbckdy1Cz5Eioz0HnnLOzP3gcQ0QVV+zBhbEs+Zg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJaAa-0007em-Pj
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJaAa-0003Jl-OX
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:00:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJaAa-0003Jl-OX@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 10:00:24 +0000
Subject: [Xen-changelog] [xen staging] tools/libxc: misc: Mark const the
 parameter 'params' of xc_set_parameters()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDg5N2I2ZjRiNDMyNGI3Njk2NjAyZmUzODZiNWVhOTM1MDY0MTU0NDIKQXV0aG9yOiAg
ICAgSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KQXV0aG9yRGF0ZTogTW9uIE1hciAz
MCAyMDoyMTo1MyAyMDIwICswMTAwCkNvbW1pdDogICAgIEp1bGllbiBHcmFsbCA8amdyYWxsQGFt
YXpvbi5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMDo1NzowNyAyMDIwICswMTAwCgogICAg
dG9vbHMvbGlieGM6IG1pc2M6IE1hcmsgY29uc3QgdGhlIHBhcmFtZXRlciAncGFyYW1zJyBvZiB4
Y19zZXRfcGFyYW1ldGVycygpCiAgICAKICAgIFRoZSBwYXJhbWV0ZXIgJ3BhcmFtcycgb2YgeGNf
c2V0X3BhcmFtZXRlcnMoKSBzaG91bGQgbmV2ZXIgYmUgbW9kaWZpZWQuCiAgICBTbyBtYXJrIGl0
IGFzIGNvbnN0LgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGpncmFsbEBh
bWF6b24uY29tPgogICAgUmV2aWV3ZWQtYnk6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5j
aXRyaXguY29tPgotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgMiArLQogdG9v
bHMvbGlieGMveGNfbWlzYy5jICAgICAgICAgfCA0ICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMyBp
bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2lu
Y2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggZDg4
NzRlYjg0Ni4uNThmYTkzMWRlMSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j
dHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTEyMjYsNyArMTIy
Niw3IEBAIGludCB4Y19yZWFkY29uc29sZXJpbmcoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBjbGVhciwgaW50IGluY3JlbWVudGFsLCB1aW50MzJfdCAqcGlu
ZGV4KTsKIAogaW50IHhjX3NlbmRfZGVidWdfa2V5cyh4Y19pbnRlcmZhY2UgKnhjaCwgY29uc3Qg
Y2hhciAqa2V5cyk7Ci1pbnQgeGNfc2V0X3BhcmFtZXRlcnMoeGNfaW50ZXJmYWNlICp4Y2gsIGNo
YXIgKnBhcmFtcyk7CitpbnQgeGNfc2V0X3BhcmFtZXRlcnMoeGNfaW50ZXJmYWNlICp4Y2gsIGNv
bnN0IGNoYXIgKnBhcmFtcyk7CiAKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfcGh5c2luZm8g
eGNfcGh5c2luZm9fdDsKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfY3B1dG9wbyB4Y19jcHV0
b3BvX3Q7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19taXNjLmMgYi90b29scy9saWJ4Yy94
Y19taXNjLmMKaW5kZXggOTU3YzAzNDE1Yy4uZmU0NzdiZjM0NCAxMDA2NDQKLS0tIGEvdG9vbHMv
bGlieGMveGNfbWlzYy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX21pc2MuYwpAQCAtMTg3LDExICsx
ODcsMTEgQEAgaW50IHhjX3NlbmRfZGVidWdfa2V5cyh4Y19pbnRlcmZhY2UgKnhjaCwgY29uc3Qg
Y2hhciAqa2V5cykKICAgICByZXR1cm4gcmV0OwogfQogCi1pbnQgeGNfc2V0X3BhcmFtZXRlcnMo
eGNfaW50ZXJmYWNlICp4Y2gsIGNoYXIgKnBhcmFtcykKK2ludCB4Y19zZXRfcGFyYW1ldGVycyh4
Y19pbnRlcmZhY2UgKnhjaCwgY29uc3QgY2hhciAqcGFyYW1zKQogewogICAgIGludCByZXQsIGxl
biA9IHN0cmxlbihwYXJhbXMpOwogICAgIERFQ0xBUkVfU1lTQ1RMOwotICAgIERFQ0xBUkVfSFlQ
RVJDQUxMX0JPVU5DRShwYXJhbXMsIGxlbiwgWENfSFlQRVJDQUxMX0JVRkZFUl9CT1VOQ0VfSU4p
OworICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5DRV9JTihwYXJhbXMsIGxlbik7CiAKICAgICBp
ZiAoIHhjX2h5cGVyY2FsbF9ib3VuY2VfcHJlKHhjaCwgcGFyYW1zKSApCiAgICAgICAgIHJldHVy
biAtMTsKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4u
Z2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 10:44:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 10:44:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJaqt-0002UE-An; Wed, 01 Apr 2020 10:44:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJaqr-0002U7-Ib
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:05 +0000
X-Inumbo-ID: b4fd7734-7405-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b4fd7734-7405-11ea-b58d-bc764e2007e4;
 Wed, 01 Apr 2020 10:44:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=QYV3EjUtVA2id+idtQpTYBIGypu+BalSqjkmhRlAe2Y=; b=s8XXRuRea+aVcRGsgN9bBdnxiI
 WtMLViYt5uhquYyEOTz8byGCnQENODxC07kcC7nPtjgaaLW+AVmzZkSCeg5aD+Wd0T2TBdxMU9YcC
 kGRhxBbNge9qVCRo7hG0mls8GPphMsE/hwR+fT7iYSGWEg37Q25dnYVKf1NkserXaHNA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJaqq-0008SR-Mh
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJaqq-0006Hb-LX
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJaqq-0006Hb-LX@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 10:44:04 +0000
Subject: [Xen-changelog] [xen staging] x86/HVM: fix AMD ECS handling for
 Fam10
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDVkNTE1YjFjMjk2ZWJhZDY4ODk3NDhlYTFlNDllMDYzNDUzMjE2YTMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBXZWQgQXByIDEg
MTI6Mjg6MzAgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMjoyODozMCAyMDIwICswMjAwCgogICAgeDg2
L0hWTTogZml4IEFNRCBFQ1MgaGFuZGxpbmcgZm9yIEZhbTEwCiAgICAKICAgIFRoZSBpbnZvbHZl
ZCBjb21wYXJpc29uIHdhcywgdmVyeSBsaWtlbHkgaW5hZHZlcnRlbnRseSwgY29udmVydGVkIGZy
b20KICAgID49IHRvID4gd2hlbiBtYWtpbmcgY2hhbmdlcyB1bnJlbGF0ZWQgdG8gdGhlIGFjdHVh
bCBmYW1pbHkgcmFuZ2UuCiAgICAKICAgIEZpeGVzOiA5ODQxZWI3MWVhODcgKCJ4ODYvY3B1aWQ6
IERyb3AgYSBndWVzdHMgY2FjaGVkIHg4NiBmYW1pbHkgYW5kIG1vZGVsIGluZm9ybWF0aW9uIikK
ICAgIFNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KICAgIFJl
dmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAg
UmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bEB4ZW4ub3JnPgotLS0KIHhlbi9hcmNoL3g4
Ni9odm0vaW9yZXEuYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk
ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9h
cmNoL3g4Ni9odm0vaW9yZXEuYwppbmRleCA3MGU2MTc4OGQ3Li5jNTVjNGJjNGJjIDEwMDY0NAot
LS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3Jl
cS5jCkBAIC0xMjg1LDcgKzEyODUsNyBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3Nl
bGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgaWYgKCBDRjhfQURE
Ul9ISShjZjgpICYmCiAgICAgICAgICAgICAgZC0+YXJjaC5jcHVpZC0+eDg2X3ZlbmRvciA9PSBY
ODZfVkVORE9SX0FNRCAmJgogICAgICAgICAgICAgICh4ODZfZmFtID0gZ2V0X2NwdV9mYW1pbHko
Ci0gICAgICAgICAgICAgICAgIGQtPmFyY2guY3B1aWQtPmJhc2ljLnJhd19mbXMsIE5VTEwsIE5V
TEwpKSA+IDB4MTAgJiYKKyAgICAgICAgICAgICAgICAgZC0+YXJjaC5jcHVpZC0+YmFzaWMucmF3
X2ZtcywgTlVMTCwgTlVMTCkpID49IDB4MTAgJiYKICAgICAgICAgICAgICB4ODZfZmFtIDwgMHgx
NyApCiAgICAgICAgIHsKICAgICAgICAgICAgIHVpbnQ2NF90IG1zcl92YWw7Ci0tCmdlbmVyYXRl
ZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9n
IG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 10:44:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 10:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJar2-0002V9-Ch; Wed, 01 Apr 2020 10:44:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJar1-0002Uc-DZ
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:15 +0000
X-Inumbo-ID: bafe4bea-7405-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id bafe4bea-7405-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 10:44:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=AXRxIlNbrnYUe+AfzPZZakcW5eykcmwzcbUjyJOs3H0=; b=BCH3TINpdVQ3WjVyjThx2cpWI7
 +kRg/MbmPQBdmUG6YobcALJwniiecPCbqEtIyTWXGgxLdQ9BCas9qhFnj/CqIQqQgXHIopzFUUcGn
 0Q9W2zL0+Go/NWGb2m2UekjU15oamNbh4Nm/d5VeltgUCuRdI2TEfMvqEUYra1Fwcb5g=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJar0-0008SX-Q3
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJar0-0006I9-Op
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJar0-0006I9-Op@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 10:44:14 +0000
Subject: [Xen-changelog] [xen staging] x86emul: vendor specific SYSCALL
 behavior
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDc4Yzg3ZTQxZjBjZGQ3NWM4NDdmNDFhMjc2OGZhZjQxOTgzYmRmMTMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBXZWQgQXByIDEg
MTI6MzI6MTcgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMjozMjoxNyAyMDIwICswMjAwCgogICAgeDg2
ZW11bDogdmVuZG9yIHNwZWNpZmljIFNZU0NBTEwgYmVoYXZpb3IKICAgIAogICAgQU1EIENQVXMg
cGVybWl0IHRoZSBpbnNuIGV2ZXJ5d2hlcmUgKGV2ZW4gb3V0c2lkZSBvZiBwcm90ZWN0ZWQgbW9k
ZSksCiAgICB3aGlsZSBJbnRlbCBvbmVzIHJlc3RyaWN0IGl0IHRvIDY0LWJpdCBtb2RlLiBXaGls
ZSBhdCBpdCBhbHNvIGNvbW1lbnQKICAgIGFib3V0IHRoZSBhcHBhcmVudGx5IG1pc3NpbmcgQ1BV
SUQgYml0IGNoZWNrLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxp
Y2hAc3VzZS5jb20+CiAgICBSZXZpZXdlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl
cjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUu
YyB8IDkgKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0
ZS5jIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKaW5kZXggM2JhODBl
NzlhYi4uNzcyZDI0NWMzMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4
Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMK
QEAgLTU4OTcsMTMgKzU4OTcsMTYgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBYODZFTVVMX09QQygweDBmLCAweDA1KTogLyogc3lzY2FsbCAqLwotICAgICAgICBn
ZW5lcmF0ZV9leGNlcHRpb25faWYoIWluX3Byb3Rtb2RlKGN0eHQsIG9wcyksIEVYQ19VRCk7Ci0K
LSAgICAgICAgLyogSW5qZWN0ICNVRCBpZiBzeXNjYWxsL3N5c3JldCBhcmUgZGlzYWJsZWQuICov
CisgICAgICAgIC8qCisgICAgICAgICAqIEluamVjdCAjVUQgaWYgc3lzY2FsbC9zeXNyZXQgYXJl
IGRpc2FibGVkLiBFRkVSLlNDRSBjYW4ndCBiZSBzZXQKKyAgICAgICAgICogd2l0aCB0aGUgcmVz
cGVjdGl2ZSBDUFVJRCBiaXQgY2xlYXIsIHNvIG5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0CisgICAg
ICAgICAqIGNoZWNrIG9mIHRoYXQgb25lLgorICAgICAgICAgKi8KICAgICAgICAgZmFpbF9pZihv
cHMtPnJlYWRfbXNyID09IE5VTEwpOwogICAgICAgICBpZiAoIChyYyA9IG9wcy0+cmVhZF9tc3Io
TVNSX0VGRVIsICZtc3JfdmFsLCBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAg
IGdvdG8gZG9uZTsKICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKChtc3JfdmFsICYgRUZF
Ul9TQ0UpID09IDAsIEVYQ19VRCk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighYW1k
X2xpa2UoY3R4dCkgJiYgIW1vZGVfNjRiaXQoKSwgRVhDX1VEKTsKIAogICAgICAgICBpZiAoIChy
YyA9IG9wcy0+cmVhZF9tc3IoTVNSX1NUQVIsICZtc3JfdmFsLCBjdHh0KSkgIT0gWDg2RU1VTF9P
S0FZICkKICAgICAgICAgICAgIGdvdG8gZG9uZTsKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJv
dCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhl
bi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0
Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 10:44:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 10:44:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJarD-0002WV-Eb; Wed, 01 Apr 2020 10:44:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJarB-0002WI-VU
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:25 +0000
X-Inumbo-ID: c1057978-7405-11ea-ba90-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c1057978-7405-11ea-ba90-12813bfff9fa;
 Wed, 01 Apr 2020 10:44:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rRf5SYviz5rSi8xlqTveheHD7WvMvGiz1uyVZHNclLM=; b=4gkmIyJA4jc86nMb8x8srfPDww
 w/zcVSnUaTmk33RMDH5gUa3+qwpMXjIFpHe3xLtN69Xrl4vB8X5cqgMuBIONgbgOoxQR+x15ufy2f
 b1Uyi6uCSotgF8O3iiZ59NmtQgZ9mViYf18Z1orkzTmhYq1BJ/8OKsbjFVDeeIeT8pEw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJarA-0008Sg-T0
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJarA-0006KK-S9
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJarA-0006KK-S9@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 10:44:24 +0000
Subject: [Xen-changelog] [xen staging] x86emul: support SYSRET
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDc1M2FiNDFiOGI3NjNiNThjYzNkZDk0MGQ4NjJiY2VhZjU4ZjdhNGMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBXZWQgQXByIDEg
MTI6MzQ6MzMgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMjozNDozMyAyMDIwICswMjAwCgogICAgeDg2
ZW11bDogc3VwcG9ydCBTWVNSRVQKICAgIAogICAgVGhpcyBpcyB0byBhdWdtZW50IFNZU0NBTEws
IHdoaWNoIHdlJ3ZlIGJlZW4gc3VwcG9ydGluZyBmb3IgcXVpdGUgc29tZQogICAgdGltZS4KICAg
IAogICAgU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgogICAg
UmV2aWV3ZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0t
LQogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgfCA3NiArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygr
KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIGIv
eGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKaW5kZXggNzcyZDI0NWMzMy4u
M2VkNjRjMTNlYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs
YXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTU5
NzcsNiArNTk3Nyw4MiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAg
ICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4MDcpOiAvKiBzeXNy
ZXQgKi8KKyAgICAgICAgLyoKKyAgICAgICAgICogSW5qZWN0ICNVRCBpZiBzeXNjYWxsL3N5c3Jl
dCBhcmUgZGlzYWJsZWQuIEVGRVIuU0NFIGNhbid0IGJlIHNldAorICAgICAgICAgKiB3aXRoIHRo
ZSByZXNwZWN0aXZlIENQVUlEIGJpdCBjbGVhciwgc28gbm8gbmVlZCBmb3IgYW4gZXhwbGljaXQK
KyAgICAgICAgICogY2hlY2sgb2YgdGhhdCBvbmUuCisgICAgICAgICAqLworICAgICAgICBmYWls
X2lmKCFvcHMtPnJlYWRfbXNyKTsKKyAgICAgICAgaWYgKCAocmMgPSBvcHMtPnJlYWRfbXNyKE1T
Ul9FRkVSLCAmbXNyX3ZhbCwgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSApCisgICAgICAgICAgICBn
b3RvIGRvbmU7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighKG1zcl92YWwgJiBFRkVS
X1NDRSksIEVYQ19VRCk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighYW1kX2xpa2Uo
Y3R4dCkgJiYgIW1vZGVfNjRiaXQoKSwgRVhDX1VEKTsKKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0
aW9uX2lmKCFtb2RlX3JpbmcwKCksIEVYQ19HUCwgMCk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2Vw
dGlvbl9pZighaW5fcHJvdG1vZGUoY3R4dCwgb3BzKSwgRVhDX0dQLCAwKTsKKyNpZmRlZiBfX3g4
Nl82NF9fCisgICAgICAgIC8qCisgICAgICAgICAqIERvaW5nIHRoaXMgZm9yIGp1c3QgSW50ZWwg
KHJhdGhlciB0aGFuIGUuZy4gIWFtZF9saWtlKCkpIGFzIHRoaXMgaXMKKyAgICAgICAgICogaW4g
ZmFjdCByaXNraW5nIHRvIG1ha2UgZ3Vlc3QgT1NlcyB2dWxuZXJhYmxlIHRvIHRoZSBlcXVpdmFs
ZW50IG9mCisgICAgICAgICAqIFhTQS03IChDVkUtMjAxMi0wMjE3KS4KKyAgICAgICAgICovCisg
ICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihjdHh0LT5jcHVpZC0+eDg2X3ZlbmRvciA9PSBY
ODZfVkVORE9SX0lOVEVMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9ieXRl
cyA9PSA4ICYmICFpc19jYW5vbmljYWxfYWRkcmVzcyhfcmVncy5yY3gpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRVhDX0dQLCAwKTsKKyNlbmRpZgorCisgICAgICAgIGlmICggKHJj
ID0gb3BzLT5yZWFkX21zcihNU1JfU1RBUiwgJm1zcl92YWwsIGN0eHQpKSAhPSBYODZFTVVMX09L
QVkgKQorICAgICAgICAgICAgZ290byBkb25lOworCisgICAgICAgIHNyZWcuc2VsID0gKChtc3Jf
dmFsID4+IDQ4KSArIDgpIHwgMzsgLyogU0VMRUNUT1JfUlBMX01BU0sgKi8KKyAgICAgICAgY3Mu
c2VsID0gb3BfYnl0ZXMgPT0gOCA/IHNyZWcuc2VsICsgOCA6IHNyZWcuc2VsIC0gODsKKworICAg
ICAgICBjcy5iYXNlID0gc3JlZy5iYXNlID0gMDsgLyogZmxhdCBzZWdtZW50ICovCisgICAgICAg
IGNzLmxpbWl0ID0gc3JlZy5saW1pdCA9IH4wdTsgLyogNEdCIGxpbWl0ICovCisgICAgICAgIGNz
LmF0dHIgPSAweGNmYjsgLyogRytEQitQK0RQTDMrUytDb2RlICovCisgICAgICAgIHNyZWcuYXR0
ciA9IDB4Y2YzOyAvKiBHK0RCK1ArRFBMMytTK0RhdGEgKi8KKworICAgICAgICAvKiBPbmx5IHRo
ZSBzZWxlY3RvciBwYXJ0IG9mIFNTIGdldHMgdXBkYXRlZCBieSBBTUQgYW5kIGFsaWtlLiAqLwor
ICAgICAgICBpZiAoIGFtZF9saWtlKGN0eHQpICkKKyAgICAgICAgeworICAgICAgICAgICAgZmFp
bF9pZighb3BzLT5yZWFkX3NlZ21lbnQpOworICAgICAgICAgICAgaWYgKCAocmMgPSBvcHMtPnJl
YWRfc2VnbWVudCh4ODZfc2VnX3NzLCAmc3JlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSApCisgICAgICAgICAgICAgICAg
Z290byBkb25lOworCisgICAgICAgICAgICAvKiBUaGVyZSdzIGV4cGxpY2l0bHkgbm8gUlBMIGFk
anVzdG1lbnQgaGVyZS4gKi8KKyAgICAgICAgICAgIHNyZWcuc2VsID0gKG1zcl92YWwgPj4gNDgp
ICsgODsKKyAgICAgICAgfQorCisjaWZkZWYgX194ODZfNjRfXworICAgICAgICBpZiAoIG1vZGVf
NjRiaXQoKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggb3BfYnl0ZXMgPT0gOCApCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY3MuYXR0ciA9IDB4YWZiOyAvKiBMK0RCK1Ar
RFBMMytTK0NvZGUgKi8KKyAgICAgICAgICAgICAgICBfcmVncy5yaXAgPSBfcmVncy5yY3g7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgX3JlZ3Mucmlw
ID0gX3JlZ3MuZWN4OworCisgICAgICAgICAgICBfcmVncy5lZmxhZ3MgPSBfcmVncy5yMTEgJiB+
KFg4Nl9FRkxBR1NfUkYgfCBYODZfRUZMQUdTX1ZNKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgX3JlZ3MucihpcCkgPSBfcmVncy5lY3g7
CisgICAgICAgICAgICBfcmVncy5lZmxhZ3MgfD0gWDg2X0VGTEFHU19JRjsKKyAgICAgICAgfQor
CisgICAgICAgIGZhaWxfaWYoIW9wcy0+d3JpdGVfc2VnbWVudCk7CisgICAgICAgIGlmICggKHJj
ID0gb3BzLT53cml0ZV9zZWdtZW50KHg4Nl9zZWdfY3MsICZjcywgY3R4dCkpICE9IFg4NkVNVUxf
T0tBWSB8fAorICAgICAgICAgICAgIChyYyA9IG9wcy0+d3JpdGVfc2VnbWVudCh4ODZfc2VnX3Nz
LCAmc3JlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4dCkpICE9
IFg4NkVNVUxfT0tBWSApCisgICAgICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAgICAgc2luZ2xl
c3RlcCA9IF9yZWdzLmVmbGFncyAmIFg4Nl9FRkxBR1NfVEY7CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBYODZFTVVMX09QQygweDBmLCAweDA4KTogLyogaW52ZCAqLwogICAgIGNhc2UgWDg2
RU1VTF9PUEMoMHgwZiwgMHgwOSk6IC8qIHdiaW52ZCAvIHdibm9pbnZkICovCiAgICAgICAgIGdl
bmVyYXRlX2V4Y2VwdGlvbl9pZighbW9kZV9yaW5nMCgpLCBFWENfR1AsIDApOwotLQpnZW5lcmF0
ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3RhZ2luZwoKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxv
ZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov
L2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 10:44:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 10:44:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJarN-0002Xj-Il; Wed, 01 Apr 2020 10:44:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJarL-0002Xa-LX
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:35 +0000
X-Inumbo-ID: c7078406-7405-11ea-ba90-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c7078406-7405-11ea-ba90-12813bfff9fa;
 Wed, 01 Apr 2020 10:44:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rO6GYtNBGNSRUXMs3/npHRqbcNsDp0k/xW0XdlC3N/Y=; b=33LTdJknV3evHHg8qr67kN2B/x
 QWCN6eK8yxOJHwtv6/IaW4Of8ZA6jzCrgp4DT2DBGTSkYGfqNgXfhcyUSNdZ1Z9+mgS0UGj7jkEFG
 cKF4kZNvFgnbDisb3dPfQ/9LwG2GesYoVpXVQgoJL6oP/zP7Sg5Xk5M14390JgA4yves=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJarK-0008TU-Vd
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJarK-0006L3-Ue
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 10:44:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJarK-0006L3-Ue@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 10:44:34 +0000
Subject: [Xen-changelog] [xen staging] x86/dom0: fix copy of low 1MB data
 for PVH
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============1675400419840900599=="
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

--===============1675400419840900599==
Content-Type: text/plain

commit 3925402f5dd7ae93010c48688eb64f880c794267
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Wed Apr 1 12:36:57 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 1 12:36:57 2020 +0200

    x86/dom0: fix copy of low 1MB data for PVH
    
    The orders of start and end are inverted in order to calculate the
    size of the copy operation.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/hvm/dom0_build.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 2afd44c8a4..12a82c9d7c 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -463,7 +463,7 @@ static int __init pvh_populate_p2m(struct domain *d)
             enum hvm_translation_result res =
                  hvm_copy_to_guest_phys(mfn_to_maddr(_mfn(addr)),
                                         mfn_to_virt(addr),
-                                        d->arch.e820[i].addr - end,
+                                        end - d->arch.e820[i].addr,
                                         v);
 
             if ( res != HVMTRANS_okay )
--
generated by git-patchbot for /home/xen/git/xen.git#staging


--===============1675400419840900599==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5n
ZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

--===============1675400419840900599==--

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:11:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:11:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJd9B-0007NH-ED; Wed, 01 Apr 2020 13:11:09 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJd9A-0007NC-2K
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:08 +0000
X-Inumbo-ID: 3e0b7cba-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3e0b7cba-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:11:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=S0OMibePZDrHA2WTJ0RXcfUqiF3F0nVDIB4KghEvI30=; b=j6TJI6vLdLaE6eyLLGSAj9rOZp
 wR+yzRsMVoUtH5Ta8OSvXU4ukmYSWwjbGw4MF3Sw2OR7mGFOnYMxLL36KMxf5CF/QyTQdNnY+EgrJ
 5IUDHwr0z5bKK5U8B48e127jTBUF7CNgUlBDLw9sji01cCPgtgDXmXnZSaNoc1ZNtq9s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd96-0002uI-HU
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd96-0007zF-GC
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJd96-0007zF-GC@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:11:04 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode: Remove unnecessary
 indirection in struct microcode_patch
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGJlOTQ3NGI1NWY1YjNkMTQwOWQwYWMxZWExN2MzNTc0M2Q4ZTljOGEKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgTWFyIDI3
IDAwOjI5OjU1IDIwMjAgKzAwMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv
b3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogV2VkIEFwciAxIDE0OjAwOjEyIDIwMjAgKzAx
MDAKCiAgICB4ODYvdWNvZGU6IFJlbW92ZSB1bm5lY2Vzc2FyeSBpbmRpcmVjdGlvbiBpbiBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoCiAgICAKICAgIEN1cnJlbnRseSwgZWFjaCBjcHVfcmVxdWVzdF9t
aWNyb2NvZGUoKSBhbGxvY2F0ZXMgYSBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoLAogICAgd2hpY2gg
aXMgYSBzaW5nbGUgcG9pbnRlciB0byBhIHNlcGFyYXRlIGFsbG9jYXRlZCBzdHJ1Y3R1cmUuICBU
aGlzIGlzCiAgICB3YXN0ZWZ1bC4KICAgIAogICAgRml4aW5nIHRoaXMgaXMgY29tcGxpY2F0ZWQg
YmVjYXVzZSB0aGUgY29tbW9uIG1pY3JvY29kZV9mcmVlX3BhdGNoKCkgY29kZSBpcwogICAgcmVz
cG9uc2libGUgZm9yIGZyZWVpbmcgc3RydWN0IG1pY3JvY29kZV9wYXRjaCwgZGVzcGl0ZSB0aGlz
IGJlaW5nIGFzeW1tZXRyaWMKICAgIHdpdGggaG93IGl0IGlzIGFsbG9jYXRlZC4KICAgIAogICAg
TWFrZSBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoIGZ1bGx5IG9wYXF1ZSB0byB0aGUgY29tbW9uIGxv
Z2ljLiAgVGhpcyBpbnZvbHZlcwogICAgbW92aW5nIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZnJl
ZWluZyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoIGZ1bGx5IGludG8gdGhlCiAgICBmcmVlX3BhdGNo
KCkgaG9vay4KICAgIAogICAgSW4gZWFjaCB2ZW5kb3IgbG9naWMsIHVzZSBzb21lIHRlbXBvcmFy
eSBpZmRlZi1hcnkgKGNsZWFuZWQgdXAgaW4gc3Vic2VxdWVudAogICAgY2hhbmdlcykgdG8gcmVk
dWNlIHRoZSBjaHVybiBhcyBtdWNoIGFzIHBvc3NpYmxlLCBhbmQgZm9yZ28gYWxsb2NhdGluZyB0
aGUKICAgIGludGVybWVkaWF0ZSBwb2ludGVyIGluIGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpLgog
ICAgCiAgICBTdWdnZXN0ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KICAg
IFNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KICAgIFNpZ25l
ZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQog
eGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgICAgIHwgMzAgKysrKysrKysrKysrLS0t
LS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9jb3JlLmMgICAgfCAg
MyArLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMgICB8IDMxICsrKysrKysr
KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZh
dGUuaCB8IDExICsrKy0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyks
IDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggOWVmYzAzYzgx
MC4uNmJmM2EwNTRkMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1k
LmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTU4LDEzICs1OCwx
NiBAQCBzdHJ1Y3QgX19wYWNrZWQgbWljcm9jb2RlX2hlYWRlcl9hbWQgewogI2RlZmluZSBVQ09E
RV9FUVVJVl9DUFVfVEFCTEVfVFlQRSAweDAwMDAwMDAwCiAjZGVmaW5lIFVDT0RFX1VDT0RFX1RZ
UEUgICAgICAgICAgIDB4MDAwMDAwMDEKIAotc3RydWN0IG1pY3JvY29kZV9hbWQgeworc3RydWN0
IG1pY3JvY29kZV9wYXRjaCB7CiAgICAgdm9pZCAqbXBiOwogICAgIHNpemVfdCBtcGJfc2l6ZTsK
ICAgICBzdHJ1Y3QgZXF1aXZfY3B1X2VudHJ5ICplcXVpdl9jcHVfdGFibGU7CiAgICAgc2l6ZV90
IGVxdWl2X2NwdV90YWJsZV9zaXplOwogfTsKIAorLyogVGVtcG9yYXJ5LCB1bnRpbCB0aGUgbWlj
cm9jb2RlXyogc3RydWN0dXJlIGFyZSBkaXNlbnRhbmdsZWQuICovCisjZGVmaW5lIG1pY3JvY29k
ZV9hbWQgbWljcm9jb2RlX3BhdGNoCisKIHN0cnVjdCBtcGJoZHIgewogICAgIHVpbnQzMl90IHR5
cGU7CiAgICAgdWludDMyX3QgbGVuOwpAQCAtMTc1LDEzICsxNzgsMTEgQEAgc3RhdGljIGVudW0g
bWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfZml0cygKIAogc3RhdGljIGJvb2wgbWF0
Y2hfY3B1KGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewotICAgIHJldHVy
biBwYXRjaCAmJiAobWljcm9jb2RlX2ZpdHMocGF0Y2gtPm1jX2FtZCkgPT0gTkVXX1VDT0RFKTsK
KyAgICByZXR1cm4gcGF0Y2ggJiYgKG1pY3JvY29kZV9maXRzKHBhdGNoKSA9PSBORVdfVUNPREUp
OwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX3BhdGNoKHZvaWQgKm1jKQorc3RhdGljIHZvaWQgZnJl
ZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICptY19hbWQpCiB7Ci0gICAgc3RydWN0IG1p
Y3JvY29kZV9hbWQgKm1jX2FtZCA9IG1jOwotCiAgICAgaWYgKCBtY19hbWQgKQogICAgIHsKICAg
ICAgICAgeGZyZWUobWNfYW1kLT5lcXVpdl9jcHVfdGFibGUpOwpAQCAtMjA0LDEyICsyMDUsMTIg
QEAgc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJlX2hlYWRlcigKIHN0
YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgY29tcGFyZV9wYXRjaCgKICAgICBjb25z
dCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpuZXcsIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0
Y2ggKm9sZCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKm5ld19o
ZWFkZXIgPSBuZXctPm1jX2FtZC0+bXBiOwotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVh
ZGVyX2FtZCAqb2xkX2hlYWRlciA9IG9sZC0+bWNfYW1kLT5tcGI7CisgICAgY29uc3Qgc3RydWN0
IG1pY3JvY29kZV9oZWFkZXJfYW1kICpuZXdfaGVhZGVyID0gbmV3LT5tcGI7CisgICAgY29uc3Qg
c3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICpvbGRfaGVhZGVyID0gb2xkLT5tcGI7CiAKICAg
ICAvKiBCb3RoIHBhdGNoZXMgdG8gY29tcGFyZSBhcmUgc3VwcG9zZWQgdG8gYmUgYXBwbGljYWJs
ZSB0byBsb2NhbCBDUFUuICovCi0gICAgQVNTRVJUKG1pY3JvY29kZV9maXRzKG5ldy0+bWNfYW1k
KSAhPSBNSVNfVUNPREUpOwotICAgIEFTU0VSVChtaWNyb2NvZGVfZml0cyhvbGQtPm1jX2FtZCkg
IT0gTUlTX1VDT0RFKTsKKyAgICBBU1NFUlQobWljcm9jb2RlX2ZpdHMobmV3KSAhPSBNSVNfVUNP
REUpOworICAgIEFTU0VSVChtaWNyb2NvZGVfZml0cyhvbGQpICE9IE1JU19VQ09ERSk7CiAKICAg
ICByZXR1cm4gY29tcGFyZV9oZWFkZXIobmV3X2hlYWRlciwgb2xkX2hlYWRlcik7CiB9CkBAIC0y
MjgsNyArMjI5LDcgQEAgc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUoY29uc3Qgc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAgaWYgKCAhbWF0Y2hfY3B1KHBhdGNoKSApCiAgICAg
ICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgaGRyID0gcGF0Y2gtPm1jX2FtZC0+bXBiOworICAg
IGhkciA9IHBhdGNoLT5tcGI7CiAKICAgICBod19lcnIgPSB3cm1zcl9zYWZlKE1TUl9BTURfUEFU
Q0hMT0FERVIsICh1bnNpZ25lZCBsb25nKWhkcik7CiAKQEAgLTU1MywxNCArNTU0LDcgQEAgc3Rh
dGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2
b2lkICpidWYsCiAgICAgewogICAgICAgICBtY19hbWQtPm1wYiA9IHNhdmVkOwogICAgICAgICBt
Y19hbWQtPm1wYl9zaXplID0gc2F2ZWRfc2l6ZTsKLSAgICAgICAgcGF0Y2ggPSB4bWFsbG9jKHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2gpOwotICAgICAgICBpZiAoIHBhdGNoICkKLSAgICAgICAgICAg
IHBhdGNoLT5tY19hbWQgPSBtY19hbWQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgZnJlZV9wYXRjaChtY19hbWQpOwotICAgICAgICAgICAgZXJyb3IgPSAtRU5PTUVNOwot
ICAgICAgICB9CisgICAgICAgIHBhdGNoID0gbWNfYW1kOwogICAgIH0KICAgICBlbHNlCiAgICAg
ICAgIGZyZWVfcGF0Y2gobWNfYW1kKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWlj
cm9jb2RlL2NvcmUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUuYwppbmRleCA2
MTE1MGUwNGM4Li5iM2U1OTEzZDQ5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3Jv
Y29kZS9jb3JlLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvY29yZS5jCkBAIC0y
NDUsOCArMjQ1LDcgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhcnNlX2Jsb2Io
Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKQogCiBzdGF0aWMgdm9pZCBtaWNyb2NvZGVfZnJl
ZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICptaWNyb2NvZGVfcGF0Y2gpCiB7Ci0gICAg
bWljcm9jb2RlX29wcy0+ZnJlZV9wYXRjaChtaWNyb2NvZGVfcGF0Y2gtPm1jKTsKLSAgICB4ZnJl
ZShtaWNyb2NvZGVfcGF0Y2gpOworICAgIG1pY3JvY29kZV9vcHMtPmZyZWVfcGF0Y2gobWljcm9j
b2RlX3BhdGNoKTsKIH0KIAogLyogUmV0dXJuIHRydWUgaWYgY2FjaGUgZ2V0cyB1cGRhdGVkLiBP
dGhlcndpc2UsIHJldHVybiBmYWxzZSAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9t
aWNyb2NvZGUvaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKaW5k
ZXggNDljNDZjZDE0Ni4uOWUyM2YyYTNjNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9t
aWNyb2NvZGUvaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5j
CkBAIC01MCwxMSArNTAsMTQgQEAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgewogICAg
IHVuc2lnbmVkIGludCByZXNlcnZlZFszXTsKIH07CiAKLXN0cnVjdCBtaWNyb2NvZGVfaW50ZWwg
eworc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7CiAgICAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJf
aW50ZWwgaGRyOwogICAgIHVuc2lnbmVkIGludCBiaXRzWzBdOwogfTsKIAorLyogVGVtcG9yYXJ5
LCB1bnRpbCB0aGUgbWljcm9jb2RlXyogc3RydWN0dXJlIGFyZSBkaXNlbnRhbmdsZWQuICovCisj
ZGVmaW5lIG1pY3JvY29kZV9pbnRlbCBtaWNyb2NvZGVfcGF0Y2gKKwogLyogbWljcm9jb2RlIGZv
cm1hdCBpcyBleHRlbmRlZCBmcm9tIHByZXNjb3R0IHByb2Nlc3NvcnMgKi8KIHN0cnVjdCBleHRl
bmRlZF9zaWduYXR1cmUgewogICAgIHVuc2lnbmVkIGludCBzaWc7CkBAIC0yNDMsMTIgKzI0Niwx
MiBAQCBzdGF0aWMgYm9vbCBtYXRjaF9jcHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAq
cGF0Y2gpCiAgICAgaWYgKCAhcGF0Y2ggKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gbWljcm9jb2RlX3VwZGF0ZV9tYXRjaCgmcGF0Y2gtPm1jX2ludGVsLT5oZHIpID09IE5F
V19VQ09ERTsKKyAgICByZXR1cm4gbWljcm9jb2RlX3VwZGF0ZV9tYXRjaCgmcGF0Y2gtPmhkcikg
PT0gTkVXX1VDT0RFOwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX3BhdGNoKHZvaWQgKm1jKQorc3Rh
dGljIHZvaWQgZnJlZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKIHsKLSAg
ICB4ZnJlZShtYyk7CisgICAgeGZyZWUocGF0Y2gpOwogfQogCiBzdGF0aWMgZW51bSBtaWNyb2Nv
ZGVfbWF0Y2hfcmVzdWx0IGNvbXBhcmVfcGF0Y2goCkBAIC0yNTgsMTEgKzI2MSwxMCBAQCBzdGF0
aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNvbXBhcmVfcGF0Y2goCiAgICAgICogQm90
aCBwYXRjaGVzIHRvIGNvbXBhcmUgYXJlIHN1cHBvc2VkIHRvIGJlIGFwcGxpY2FibGUgdG8gbG9j
YWwgQ1BVLgogICAgICAqIEp1c3QgY29tcGFyZSB0aGUgcmV2aXNpb24gbnVtYmVyLgogICAgICAq
LwotICAgIEFTU0VSVChtaWNyb2NvZGVfdXBkYXRlX21hdGNoKCZvbGQtPm1jX2ludGVsLT5oZHIp
ICE9IE1JU19VQ09ERSk7Ci0gICAgQVNTRVJUKG1pY3JvY29kZV91cGRhdGVfbWF0Y2goJm5ldy0+
bWNfaW50ZWwtPmhkcikgIT0gTUlTX1VDT0RFKTsKKyAgICBBU1NFUlQobWljcm9jb2RlX3VwZGF0
ZV9tYXRjaCgmb2xkLT5oZHIpICE9IE1JU19VQ09ERSk7CisgICAgQVNTRVJUKG1pY3JvY29kZV91
cGRhdGVfbWF0Y2goJm5ldy0+aGRyKSAhPSBNSVNfVUNPREUpOwogCi0gICAgcmV0dXJuIChuZXct
Pm1jX2ludGVsLT5oZHIucmV2ID4gb2xkLT5tY19pbnRlbC0+aGRyLnJldikgPyBORVdfVUNPREUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IE9MRF9VQ09ERTsKKyAgICByZXR1cm4gKG5ldy0+aGRyLnJldiA+IG9sZC0+aGRyLnJl
dikgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CiB9CiAKIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9j
b2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQpAQCAtMjc5LDcgKzI4MSw3
IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0
Y2ggKnBhdGNoKQogICAgIGlmICggIW1hdGNoX2NwdShwYXRjaCkgKQogICAgICAgICByZXR1cm4g
LUVJTlZBTDsKIAotICAgIG1jX2ludGVsID0gcGF0Y2gtPm1jX2ludGVsOworICAgIG1jX2ludGVs
ID0gcGF0Y2g7CiAKICAgICAvKiB3cml0ZSBtaWNyb2NvZGUgdmlhIE1TUiAweDc5ICovCiAgICAg
d3Jtc3JsKE1TUl9JQTMyX1VDT0RFX1dSSVRFLCAodW5zaWduZWQgbG9uZyltY19pbnRlbC0+Yml0
cyk7CkBAIC0zNjgsMTYgKzM3MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpj
cHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAogICAgICAgICBlcnJvciA9IG9m
ZnNldDsKIAogICAgIGlmICggc2F2ZWQgKQotICAgIHsKLSAgICAgICAgcGF0Y2ggPSB4bWFsbG9j
KHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gpOwotICAgICAgICBpZiAoIHBhdGNoICkKLSAgICAgICAg
ICAgIHBhdGNoLT5tY19pbnRlbCA9IHNhdmVkOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHhmcmVlKHNhdmVkKTsKLSAgICAgICAgICAgIGVycm9yID0gLUVOT01FTTsKLSAg
ICAgICAgfQotICAgIH0KKyAgICAgICAgcGF0Y2ggPSBzYXZlZDsKIAogICAgIGlmICggZXJyb3Ig
JiYgIXBhdGNoICkKICAgICAgICAgcGF0Y2ggPSBFUlJfUFRSKGVycm9yKTsKZGlmZiAtLWdpdCBh
L3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUuaCBiL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL3ByaXZhdGUuaAppbmRleCAyMzBiOTM1Yzk0Li5kZjBkMDg1MmNkIDEwMDY0NAot
LS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9wcml2YXRlLmgKKysrIGIveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvcHJpdmF0ZS5oCkBAIC0xMSwxMyArMTEsOCBAQCBlbnVtIG1pY3Jv
Y29kZV9tYXRjaF9yZXN1bHQgewogICAgIE1JU19VQ09ERSwgLyogc2lnbmF0dXJlIG1pc21hdGNo
ZWQgKi8KIH07CiAKLXN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggewotICAgIHVuaW9uIHsKLSAgICAg
ICAgc3RydWN0IG1pY3JvY29kZV9pbnRlbCAqbWNfaW50ZWw7Ci0gICAgICAgIHN0cnVjdCBtaWNy
b2NvZGVfYW1kICptY19hbWQ7Ci0gICAgICAgIHZvaWQgKm1jOwotICAgIH07Ci19OworLyogT3Bh
cXVlLiAgSW50ZXJuYWxzIGFyZSB2ZW5kb3Itc3BlY2lmaWMuICovCitzdHJ1Y3QgbWljcm9jb2Rl
X3BhdGNoOwogCiBzdHJ1Y3QgbWljcm9jb2RlX29wcyB7CiAgICAgLyoKQEAgLTYyLDcgKzU3LDcg
QEAgc3RydWN0IG1pY3JvY29kZV9vcHMgewogICAgIHZvaWQgKCplbmRfdXBkYXRlX3BlcmNwdSko
dm9pZCk7CiAKICAgICAvKiBGcmVlIGEgcGF0Y2ggcHJldmlvdXNseSBhbGxvY2F0ZWQgYnkgY3B1
X3JlcXVlc3RfbWljcm9jb2RlKCkuICovCi0gICAgdm9pZCAoKmZyZWVfcGF0Y2gpKHZvaWQgKm1j
KTsKKyAgICB2b2lkICgqZnJlZV9wYXRjaCkoc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gp
OwogCiAgICAgLyoKICAgICAgKiBJcyB0aGUgbWljcm9jb2RlIHBhdGNoIGFwcGxpY2FibGUgZm9y
IHRoZSBjdXJyZW50IENQVSwgYW5kIG5ld2VyIHRoYW4KLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRj
aGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0
Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:11:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:11:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJd9J-0007Ni-GC; Wed, 01 Apr 2020 13:11:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJd9H-0007Nb-S1
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:15 +0000
X-Inumbo-ID: 43972a82-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 43972a82-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:11:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=EZIO7ssd9Ie8zSlzWarWOKZq9iNKYMgQ6wQbbCBRqYQ=; b=5AqyytPGCWAf4YFo1VWudf8qXF
 OIpzK4qgnmdm9Bhlvhd+8Fs4ijVA8ch97AkznG5ZGjeCmFk2dAt5WQDI73fpgE1SSV/GlF1cqBUKo
 17jYOeP0wfLVY0tNFcVl4H3cAoT7lD3+ybK/ti49agCgPDT/rr4tZI+zBUAfRRFI4A1I=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9G-0002uL-KG
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9G-00080N-JC
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJd9G-00080N-JC@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:11:14 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/intel: Adjust
 microcode_sanity_check() to not take void *
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGRkNmQwNTllMjU4ODBhYTU5ZjJmYzY4NDQ2YjY5NzhhYWJjMjViZWMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxNjowMzoyMiAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBBZGp1c3QgbWljcm9jb2RlX3Nhbml0
eV9jaGVjaygpIHRvIG5vdCB0YWtlIHZvaWQgKgogICAgCiAgICBtaWNyb2NvZGVfc2FuaXR5X2No
ZWNrKCkncyBjYWxsZXJzIGFjdHVhbGx5IGNhbGwgaXQgd2l0aCBhIG1peHR1cmUgb2YKICAgIG1p
Y3JvY29kZV9pbnRlbCgvcGF0Y2gpIGFuZCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsIHBvaW50ZXJz
LCB3aGljaCBpcyBmcmFnaWxlLgogICAgCiAgICBSZXdvcmsgaXQgdG8gdGFrZSBzdHJ1Y3QgbWlj
cm9jb2RlX3BhdGNoICosIHdoaWNoIGluIHR1cm4gcmVxdWlyZXMKICAgIG1pY3JvY29kZV91cGRh
dGVfbWF0Y2goKSdzIHR5cGUgdG8gYmUgYWx0ZXJlZC4KICAgIAogICAgTm8gZnVuY3Rpb25hbCBj
aGFuZ2UgLSBjb21waWxlZCBiaW5hcnkgaXMgaWRlbnRpY2FsLgogICAgCiAgICBTaWduZWQtb2Zm
LWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3
ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9pbnRlbC5jIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNo
YW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9j
b2RlL2ludGVsLmMKaW5kZXggOWUyM2YyYTNjNy4uNjBiMDhkMjQ0NiAxMDA2NDQKLS0tIGEveGVu
L2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21p
Y3JvY29kZS9pbnRlbC5jCkBAIC0xMTYsOSArMTE2LDkgQEAgc3RhdGljIGludCBjb2xsZWN0X2Nw
dV9pbmZvKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQogICAgIHJldHVybiAwOwogfQogCi1z
dGF0aWMgaW50IG1pY3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgdm9pZCAqbWMpCitzdGF0aWMg
aW50IG1pY3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAq
bWMpCiB7Ci0gICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgKm1jX2hlYWRl
ciA9IG1jOworICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICptY19oZWFk
ZXIgPSAmbWMtPmhkcjsKICAgICBjb25zdCBzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUgKmV4dF9o
ZWFkZXIgPSBOVUxMOwogICAgIGNvbnN0IHN0cnVjdCBleHRlbmRlZF9zaWduYXR1cmUgKmV4dF9z
aWc7CiAgICAgdW5zaWduZWQgbG9uZyB0b3RhbF9zaXplLCBkYXRhX3NpemUsIGV4dF90YWJsZV9z
aXplOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3Nhbml0eV9jaGVj
ayhjb25zdCB2b2lkICptYykKICAgICAgICAgICAgICAgICAgICAiU21hbGwgZXh0dGFibGUgc2l6
ZSBpbiBtaWNyb2NvZGUgZGF0YSBmaWxlXG4iKTsKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM
OwogICAgICAgICB9Ci0gICAgICAgIGV4dF9oZWFkZXIgPSBtYyArIE1DX0hFQURFUl9TSVpFICsg
ZGF0YV9zaXplOworICAgICAgICBleHRfaGVhZGVyID0gKHZvaWQgKiltYyArIE1DX0hFQURFUl9T
SVpFICsgZGF0YV9zaXplOwogICAgICAgICBpZiAoIGV4dF90YWJsZV9zaXplICE9IGV4dHRhYmxl
X3NpemUoZXh0X2hlYWRlcikgKQogICAgICAgICB7CiAgICAgICAgICAgICBwcmludGsoS0VSTl9F
UlIgIm1pY3JvY29kZTogZXJyb3IhICIKQEAgLTIwOCw4ICsyMDgsOSBAQCBzdGF0aWMgaW50IG1p
Y3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgdm9pZCAqbWMpCiAKIC8qIENoZWNrIGFuIHVwZGF0
ZSBhZ2FpbnN0IHRoZSBDUFUgc2lnbmF0dXJlIGFuZCBjdXJyZW50IHVwZGF0ZSByZXZpc2lvbiAq
Lwogc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfdXBkYXRlX21h
dGNoKAotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICptY19oZWFkZXIp
CisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWMpCiB7CisgICAgY29uc3Qgc3Ry
dWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgKm1jX2hlYWRlciA9ICZtYy0+aGRyOwogICAgIGNv
bnN0IHN0cnVjdCBleHRlbmRlZF9zaWd0YWJsZSAqZXh0X2hlYWRlcjsKICAgICBjb25zdCBzdHJ1
Y3QgZXh0ZW5kZWRfc2lnbmF0dXJlICpleHRfc2lnOwogICAgIHVuc2lnbmVkIGludCBpOwpAQCAt
MjIwLDcgKzIyMSw3IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgbWljcm9j
b2RlX3VwZGF0ZV9tYXRjaCgKICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc2l6ZSA9IGdldF9kYXRh
c2l6ZShtY19oZWFkZXIpOwogICAgIGNvbnN0IHZvaWQgKmVuZCA9IChjb25zdCB2b2lkICopbWNf
aGVhZGVyICsgZ2V0X3RvdGFsc2l6ZShtY19oZWFkZXIpOwogCi0gICAgQVNTRVJUKCFtaWNyb2Nv
ZGVfc2FuaXR5X2NoZWNrKG1jX2hlYWRlcikpOworICAgIEFTU0VSVCghbWljcm9jb2RlX3Nhbml0
eV9jaGVjayhtYykpOwogICAgIGlmICggc2lnbWF0Y2goc2lnLCBtY19oZWFkZXItPnNpZywgcGYs
IG1jX2hlYWRlci0+cGYpICkKICAgICAgICAgcmV0dXJuIChtY19oZWFkZXItPnJldiA+IHJldikg
PyBORVdfVUNPREUgOiBPTERfVUNPREU7CiAKQEAgLTI0Niw3ICsyNDcsNyBAQCBzdGF0aWMgYm9v
bCBtYXRjaF9jcHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAgaWYg
KCAhcGF0Y2ggKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbWljcm9jb2Rl
X3VwZGF0ZV9tYXRjaCgmcGF0Y2gtPmhkcikgPT0gTkVXX1VDT0RFOworICAgIHJldHVybiBtaWNy
b2NvZGVfdXBkYXRlX21hdGNoKHBhdGNoKSA9PSBORVdfVUNPREU7CiB9CiAKIHN0YXRpYyB2b2lk
IGZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCkBAIC0yNjEsOCArMjYy
LDggQEAgc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJlX3BhdGNoKAog
ICAgICAqIEJvdGggcGF0Y2hlcyB0byBjb21wYXJlIGFyZSBzdXBwb3NlZCB0byBiZSBhcHBsaWNh
YmxlIHRvIGxvY2FsIENQVS4KICAgICAgKiBKdXN0IGNvbXBhcmUgdGhlIHJldmlzaW9uIG51bWJl
ci4KICAgICAgKi8KLSAgICBBU1NFUlQobWljcm9jb2RlX3VwZGF0ZV9tYXRjaCgmb2xkLT5oZHIp
ICE9IE1JU19VQ09ERSk7Ci0gICAgQVNTRVJUKG1pY3JvY29kZV91cGRhdGVfbWF0Y2goJm5ldy0+
aGRyKSAhPSBNSVNfVUNPREUpOworICAgIEFTU0VSVChtaWNyb2NvZGVfdXBkYXRlX21hdGNoKG9s
ZCkgIT0gTUlTX1VDT0RFKTsKKyAgICBBU1NFUlQobWljcm9jb2RlX3VwZGF0ZV9tYXRjaChuZXcp
ICE9IE1JU19VQ09ERSk7CiAKICAgICByZXR1cm4gKG5ldy0+aGRyLnJldiA+IG9sZC0+aGRyLnJl
dikgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CiB9CkBAIC0zNTcsNyArMzU4LDcgQEAgc3RhdGlj
IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lk
ICpidWYsCiAgICAgICAgICAqIElmIHRoZSBuZXcgdXBkYXRlIGNvdmVycyBjdXJyZW50IENQVSwg
Y29tcGFyZSB1cGRhdGVzIGFuZCBzdG9yZSB0aGUKICAgICAgICAgICogb25lIHdpdGggaGlnaGVy
IHJldmlzaW9uLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCAobWljcm9jb2RlX3VwZGF0ZV9t
YXRjaCgmbWMtPmhkcikgIT0gTUlTX1VDT0RFKSAmJgorICAgICAgICBpZiAoIChtaWNyb2NvZGVf
dXBkYXRlX21hdGNoKG1jKSAhPSBNSVNfVUNPREUpICYmCiAgICAgICAgICAgICAgKCFzYXZlZCB8
fCAobWMtPmhkci5yZXYgPiBzYXZlZC0+aGRyLnJldikpICkKICAgICAgICAgewogICAgICAgICAg
ICAgeGZyZWUoc2F2ZWQpOwotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94
ZW4vZ2l0L3hlbi5naXQjc3RhZ2luZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFu
Z2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:11:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:11:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJd9S-0007PT-Hw; Wed, 01 Apr 2020 13:11:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJd9R-0007PL-OI
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:25 +0000
X-Inumbo-ID: 4a0b20f6-741a-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4a0b20f6-741a-11ea-b58d-bc764e2007e4;
 Wed, 01 Apr 2020 13:11:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=M4ICoxfgRzdnbEcFXWsPgmDg3lFFqO5RTo7hhKR+32c=; b=x007oywWGRFdbr7t3u5QvtsMwI
 tIrc1gmW5/98nIxhWj8USPgp7PKdOX1iQjT35lzvHslQWtGJJ2aCCMrLaSmhGxOZXQZxKIqcZiGcA
 nxqGXuuztBI6u6QUkXdf5C8NbsedgZeVGSc22+6Xxrh+h7c0H36AphwObsz/kZFF3SpQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9Q-0002uW-N8
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9Q-00081i-Ls
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJd9Q-00081i-Ls@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:11:24 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/intel: Remove gratuitous
 memory allocations from cpu_request_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGIzNjI0MTY2MzdkMTEyMWU0YzBiZDI1YzQ4YmVjYjhiNzM3NjU4NDQKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxNzowMTozMyAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBSZW1vdmUgZ3JhdHVpdG91cyBtZW1v
cnkgYWxsb2NhdGlvbnMgZnJvbSBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKQogICAgCiAgICBjcHVf
cmVxdWVzdF9taWNyb2NvZGUoKSBuZWVkcyB0byBzY2FuIGl0cyBjb250YWluZXIgYW5kIGR1cGxp
Y2F0ZSBvbmUgYmxvYiwKICAgIGJ1dCB0aGUgZ2V0X25leHRfdWNvZGVfZnJvbV9idWZmZXIoKSBo
ZWxwZXIgZHVwbGljYXRlcyBldmVyeSBibG9iIGluIHR1cm4uCiAgICBGdXJ0aGVybW9yZSwgdGhl
IGxlbmd0aCBjaGVja2luZyBpcyBvbmx5IHNhZmUgZnJvbSBvdmVyZmxvdyBpbiA2NGJpdCBidWls
ZHMuCiAgICAKICAgIERlbGV0ZSBnZXRfbmV4dF91Y29kZV9mcm9tX2J1ZmZlcigpIGFuZCBhbHRl
ciB0aGUgcHVycG9zZSBvZiB0aGUgc2F2ZWQKICAgIHZhcmlhYmxlIHRvIHNpbXBseSBwb2ludCBz
b21ld2hlcmUgaW4gYnVmIHVudGlsIHdlJ3JlIHJlYWR5IHRvIHJldHVybi4KICAgIAogICAgVGhp
cyBpcyBvbmx5IGEgbW9kZXN0IHJlZHVjdGlvbiBpbiBhYnNvbHV0ZSBjb2RlIHNpemUsIGJ1dCBh
dm9pZHMgbWFraW5nCiAgICBtZW1vcnkgYWxsb2NhdGlvbnMgZm9yIGV2ZXJ5IGJsb2IgaW4gdGhl
IGNvbnRhaW5lci4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3
LmNvb3BlcjNAY2l0cml4LmNvbT4KICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxp
Y2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyB8IDY1
ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg
MjUgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2lu
dGVsLmMKaW5kZXggNjBiMDhkMjQ0Ni4uOWExMTcwYTg3MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29k
ZS9pbnRlbC5jCkBAIC0zMTEsNjcgKzMxMSw1MiBAQCBzdGF0aWMgaW50IGFwcGx5X21pY3JvY29k
ZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICByZXR1cm4gMDsKIH0K
IAotc3RhdGljIGxvbmcgZ2V0X25leHRfdWNvZGVfZnJvbV9idWZmZXIoc3RydWN0IG1pY3JvY29k
ZV9pbnRlbCAqKm1jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldCkKLXsKLSAgICBzdHJ1Y3Qg
bWljcm9jb2RlX2hlYWRlcl9pbnRlbCAqbWNfaGVhZGVyOwotICAgIHVuc2lnbmVkIGxvbmcgdG90
YWxfc2l6ZTsKLQotICAgIC8qIE5vIG1vcmUgZGF0YSAqLwotICAgIGlmICggb2Zmc2V0ID49IHNp
emUgKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtY19oZWFkZXIgPSAoc3RydWN0IG1pY3JvY29k
ZV9oZWFkZXJfaW50ZWwgKikoYnVmICsgb2Zmc2V0KTsKLSAgICB0b3RhbF9zaXplID0gZ2V0X3Rv
dGFsc2l6ZShtY19oZWFkZXIpOwotCi0gICAgaWYgKCAob2Zmc2V0ICsgdG90YWxfc2l6ZSkgPiBz
aXplICkKLSAgICB7Ci0gICAgICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBlcnJvciEg
QmFkIGRhdGEgaW4gbWljcm9jb2RlIGRhdGEgZmlsZVxuIik7Ci0gICAgICAgIHJldHVybiAtRUlO
VkFMOwotICAgIH0KLQotICAgICptYyA9IHhtZW1kdXBfYnl0ZXMobWNfaGVhZGVyLCB0b3RhbF9z
aXplKTsKLSAgICBpZiAoICptYyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci0K
LSAgICByZXR1cm4gb2Zmc2V0ICsgdG90YWxfc2l6ZTsKLX0KLQogc3RhdGljIHN0cnVjdCBtaWNy
b2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBz
aXplKQogewotICAgIGxvbmcgb2Zmc2V0ID0gMDsKICAgICBpbnQgZXJyb3IgPSAwOwotICAgIHN0
cnVjdCBtaWNyb2NvZGVfaW50ZWwgKm1jLCAqc2F2ZWQgPSBOVUxMOworICAgIGNvbnN0IHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKnNhdmVkID0gTlVMTDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX3Bh
dGNoICpwYXRjaCA9IE5VTEw7CiAKLSAgICB3aGlsZSAoIChvZmZzZXQgPSBnZXRfbmV4dF91Y29k
ZV9mcm9tX2J1ZmZlcigmbWMsIGJ1Ziwgc2l6ZSwgb2Zmc2V0KSkgPiAwICkKKyAgICB3aGlsZSAo
IHNpemUgKQogICAgIHsKLSAgICAgICAgZXJyb3IgPSBtaWNyb2NvZGVfc2FuaXR5X2NoZWNrKG1j
KTsKLSAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVf
cGF0Y2ggKm1jOworICAgICAgICB1bnNpZ25lZCBpbnQgYmxvYl9zaXplOworCisgICAgICAgIGlm
ICggc2l6ZSA8IE1DX0hFQURFUl9TSVpFIHx8ICAgICAgIC8qIEluc3VmZmljaWVudCBzcGFjZSBm
b3IgaGVhZGVyPyAqLworICAgICAgICAgICAgIChtYyA9IGJ1ZiktPmhkci5oZHJ2ZXIgIT0gMSB8
fCAvKiBVbnJlY29nbmlzZWQgaGVhZGVyIHZlcnNpb24/ICAgKi8KKyAgICAgICAgICAgICBtYy0+
aGRyLmxkcnZlciAhPSAxIHx8ICAgICAgICAgLyogVW5yZWNvZ25pc2VkIGxvYWRlciB2ZXJzaW9u
PyAgICovCisgICAgICAgICAgICAgc2l6ZSA8IChibG9iX3NpemUgPSAgICAgICAgICAgIC8qIElu
c3VmZmljaWVudCBzcGFjZSBmb3IgcGF0Y2g/ICAqLworICAgICAgICAgICAgICAgICAgICAgZ2V0
X3RvdGFsc2l6ZSgmbWMtPmhkcikpICkKICAgICAgICAgewotICAgICAgICAgICAgeGZyZWUobWMp
OworICAgICAgICAgICAgZXJyb3IgPSAtRUlOVkFMOworICAgICAgICAgICAgcHJpbnRrKFhFTkxP
R19XQVJOSU5HICJtaWNyb2NvZGU6IEJhZCBkYXRhIGluIGNvbnRhaW5lclxuIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGVycm9yID0gbWljcm9jb2RlX3Nhbml0
eV9jaGVjayhtYyk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgLyoKICAgICAgICAgICogSWYgdGhlIG5ldyB1cGRhdGUgY292ZXJzIGN1cnJlbnQg
Q1BVLCBjb21wYXJlIHVwZGF0ZXMgYW5kIHN0b3JlIHRoZQogICAgICAgICAgKiBvbmUgd2l0aCBo
aWdoZXIgcmV2aXNpb24uCiAgICAgICAgICAqLwogICAgICAgICBpZiAoIChtaWNyb2NvZGVfdXBk
YXRlX21hdGNoKG1jKSAhPSBNSVNfVUNPREUpICYmCiAgICAgICAgICAgICAgKCFzYXZlZCB8fCAo
bWMtPmhkci5yZXYgPiBzYXZlZC0+aGRyLnJldikpICkKLSAgICAgICAgewotICAgICAgICAgICAg
eGZyZWUoc2F2ZWQpOwogICAgICAgICAgICAgc2F2ZWQgPSBtYzsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB4ZnJlZShtYyk7CisKKyAgICAgICAgYnVmICArPSBibG9iX3Np
emU7CisgICAgICAgIHNpemUgLT0gYmxvYl9zaXplOwogICAgIH0KLSAgICBpZiAoIG9mZnNldCA8
IDAgKQotICAgICAgICBlcnJvciA9IG9mZnNldDsKIAogICAgIGlmICggc2F2ZWQgKQotICAgICAg
ICBwYXRjaCA9IHNhdmVkOworICAgIHsKKyAgICAgICAgcGF0Y2ggPSB4bWVtZHVwX2J5dGVzKHNh
dmVkLCBnZXRfdG90YWxzaXplKCZzYXZlZC0+aGRyKSk7CisKKyAgICAgICAgaWYgKCAhcGF0Y2gg
KQorICAgICAgICAgICAgZXJyb3IgPSAtRU5PTUVNOworICAgIH0KIAogICAgIGlmICggZXJyb3Ig
JiYgIXBhdGNoICkKICAgICAgICAgcGF0Y2ggPSBFUlJfUFRSKGVycm9yKTsKLS0KZ2VuZXJhdGVk
IGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cg
bWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:11:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:11:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJd9c-0007Qi-Jw; Wed, 01 Apr 2020 13:11:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJd9b-0007QY-IR
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:35 +0000
X-Inumbo-ID: 5009d22c-741a-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5009d22c-741a-11ea-b58d-bc764e2007e4;
 Wed, 01 Apr 2020 13:11:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=28+4Pf+53AfjMY+bUeJAB1GZNkOfF4P2Xyn3dC8G8g0=; b=saO+8jVP1jGB/Fxtnu7RBJi1yA
 fWEg807CBMNoDWB/0RBFnDXayTFE9DErRxDlBS+NNq2nlpUVSE5S70HccJlUQwIek3tnJVhXVuZcn
 59Ww6NxYGAWxXVHDz2Zqx+hhmOZIsgKdspnH0Q97+zC5FbDGbT1ytG7sdMe0H0wcslBw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9a-0002v7-Pt
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9a-00082t-Or
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJd9a-00082t-Or@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:11:34 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/intel: Reimplement
 get_{data, total}size() helpers
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGQwZTVkYTY0MmM2YjMwMjRiODdmY2Y0NDVlYjg5YjA0OGU3YzgxNTAKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
VGh1IE1hciAxOSAxNTo0NzozMSAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBSZWltcGxlbWVudCBnZXRfe2RhdGEs
dG90YWx9c2l6ZSgpIGhlbHBlcnMKICAgIAogICAgRXZlcnkgY2FsbGVyIGFjdHVhbGx5IHBhc3Nl
cyBhIHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICosIGJ1dCBpdCBpcyBtb3JlCiAgICBo
ZWxwZnVsIHRvIHVzIGxvbmd0ZXJtIHRvIHRha2Ugc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqLiAg
SW1wbGVtZW50IHRoZQogICAgaGVscGVycyB3aXRoIHByb3BlciB0eXBlcywgYW5kIGxlYXZlIGEg
Y29tbWVudCBleHBsYWluaW5nIHRoZSBQZW50aXVtIFByby9JSQogICAgYmVoYXZpb3VyIHdpdGgg
ZW1wdHkge2RhdGEsdG90YWx9c2l6ZSBmaWVsZHMuCiAgICAKICAgIE5vIGZ1bmN0aW9uYWwgY2hh
bmdlLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVy
M0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl
LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIHwgMzcgKysrKysr
KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2Vy
dGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL2ludGVsLmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCmlu
ZGV4IDlhMTE3MGE4NzAuLjRkOTZmNWI3NmIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwu
YwpAQCAtNDQsNiArNDQsMTIgQEAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgewogICAg
IHVuc2lnbmVkIGludCBzaWc7CiAgICAgdW5zaWduZWQgaW50IGNrc3VtOwogICAgIHVuc2lnbmVk
IGludCBsZHJ2ZXI7CisKKyAgICAvKgorICAgICAqIE1pY3JvY29kZSBmb3IgdGhlIFBlbnRpdW0g
UHJvIGFuZCBJSSBoYWQgYWxsIGZ1cnRoZXIgZmllbGRzIGluIHRoZQorICAgICAqIGhlYWRlciBy
ZXNlcnZlZCwgaGFkIGEgZml4ZWQgZGF0YXNpemUgb2YgMjAwMCBhbmQgdG90YWxzaXplIG9mIDIw
NDgsCisgICAgICogYW5kIGRpZG4ndCB1c2UgcGxhdGZvcm0gZmxhZ3MgZGVzcGl0ZSB0aGUgYXZh
aWxhYmlsaXR5IG9mIHRoZSBNU1IuCisgICAgICovCiAgICAgdW5zaWduZWQgaW50IHBmOwogICAg
IHVuc2lnbmVkIGludCBkYXRhc2l6ZTsKICAgICB1bnNpZ25lZCBpbnQgdG90YWxzaXplOwpAQCAt
NzIsMjAgKzc4LDIxIEBAIHN0cnVjdCBleHRlbmRlZF9zaWd0YWJsZSB7CiAgICAgc3RydWN0IGV4
dGVuZGVkX3NpZ25hdHVyZSBzaWdzWzBdOwogfTsKIAotI2RlZmluZSBERUZBVUxUX1VDT0RFX0RB
VEFTSVpFICAoMjAwMCkKKyNkZWZpbmUgUFBST19VQ09ERV9EQVRBU0laRSAgICAgMjAwMAogI2Rl
ZmluZSBNQ19IRUFERVJfU0laRSAgICAgICAgICAoc2l6ZW9mKHN0cnVjdCBtaWNyb2NvZGVfaGVh
ZGVyX2ludGVsKSkKLSNkZWZpbmUgREVGQVVMVF9VQ09ERV9UT1RBTFNJWkUgKERFRkFVTFRfVUNP
REVfREFUQVNJWkUgKyBNQ19IRUFERVJfU0laRSkKICNkZWZpbmUgRVhUX0hFQURFUl9TSVpFICAg
ICAgICAgKHNpemVvZihzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUpKQogI2RlZmluZSBFWFRfU0lH
TkFUVVJFX1NJWkUgICAgICAoc2l6ZW9mKHN0cnVjdCBleHRlbmRlZF9zaWduYXR1cmUpKQogI2Rl
ZmluZSBEV1NJWkUgICAgICAgICAgICAgICAgICAoc2l6ZW9mKHUzMikpCi0jZGVmaW5lIGdldF90
b3RhbHNpemUobWMpIFwKLSAgICAgICAgKCgoc3RydWN0IG1pY3JvY29kZV9pbnRlbCAqKW1jKS0+
aGRyLnRvdGFsc2l6ZSA/IFwKLSAgICAgICAgICgoc3RydWN0IG1pY3JvY29kZV9pbnRlbCAqKW1j
KS0+aGRyLnRvdGFsc2l6ZSA6IFwKLSAgICAgICAgIERFRkFVTFRfVUNPREVfVE9UQUxTSVpFKQog
Ci0jZGVmaW5lIGdldF9kYXRhc2l6ZShtYykgXAotICAgICAgICAoKChzdHJ1Y3QgbWljcm9jb2Rl
X2ludGVsICopbWMpLT5oZHIuZGF0YXNpemUgPyBcCi0gICAgICAgICAoKHN0cnVjdCBtaWNyb2Nv
ZGVfaW50ZWwgKiltYyktPmhkci5kYXRhc2l6ZSA6IERFRkFVTFRfVUNPREVfREFUQVNJWkUpCitz
dGF0aWMgdWludDMyX3QgZ2V0X2RhdGFzaXplKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gg
KnBhdGNoKQoreworICAgIHJldHVybiBwYXRjaC0+aGRyLmRhdGFzaXplID86IFBQUk9fVUNPREVf
REFUQVNJWkU7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBnZXRfdG90YWxzaXplKGNvbnN0IHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQoreworICAgIHJldHVybiBwYXRjaC0+aGRyLnRvdGFs
c2l6ZSA/OiBQUFJPX1VDT0RFX0RBVEFTSVpFICsgTUNfSEVBREVSX1NJWkU7Cit9CiAKICNkZWZp
bmUgc2lnbWF0Y2goczEsIHMyLCBwMSwgcDIpIFwKICAgICAgICAgKCgoczEpID09IChzMikpICYm
ICgoKHAxKSAmIChwMikpIHx8ICgoKHAxKSA9PSAwKSAmJiAoKHAyKSA9PSAwKSkpKQpAQCAtMTI1
LDggKzEzMiw4IEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3Nhbml0eV9jaGVjayhjb25zdCBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoICptYykKICAgICB1bnNpZ25lZCBpbnQgZXh0X3NpZ2NvdW50ID0g
MCwgaTsKICAgICB1aW50MzJfdCBzdW0sIG9yaWdfc3VtOwogCi0gICAgdG90YWxfc2l6ZSA9IGdl
dF90b3RhbHNpemUobWNfaGVhZGVyKTsKLSAgICBkYXRhX3NpemUgPSBnZXRfZGF0YXNpemUobWNf
aGVhZGVyKTsKKyAgICB0b3RhbF9zaXplID0gZ2V0X3RvdGFsc2l6ZShtYyk7CisgICAgZGF0YV9z
aXplID0gZ2V0X2RhdGFzaXplKG1jKTsKICAgICBpZiAoIChkYXRhX3NpemUgKyBNQ19IRUFERVJf
U0laRSkgPiB0b3RhbF9zaXplICkKICAgICB7CiAgICAgICAgIHByaW50ayhLRVJOX0VSUiAibWlj
cm9jb2RlOiBlcnJvciEgIgpAQCAtMjE4LDggKzIyNSw4IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29k
ZV9tYXRjaF9yZXN1bHQgbWljcm9jb2RlX3VwZGF0ZV9tYXRjaCgKICAgICB1bnNpZ25lZCBpbnQg
c2lnID0gY3B1X3NpZy0+c2lnOwogICAgIHVuc2lnbmVkIGludCBwZiA9IGNwdV9zaWctPnBmOwog
ICAgIHVuc2lnbmVkIGludCByZXYgPSBjcHVfc2lnLT5yZXY7Ci0gICAgdW5zaWduZWQgbG9uZyBk
YXRhX3NpemUgPSBnZXRfZGF0YXNpemUobWNfaGVhZGVyKTsKLSAgICBjb25zdCB2b2lkICplbmQg
PSAoY29uc3Qgdm9pZCAqKW1jX2hlYWRlciArIGdldF90b3RhbHNpemUobWNfaGVhZGVyKTsKKyAg
ICB1bnNpZ25lZCBsb25nIGRhdGFfc2l6ZSA9IGdldF9kYXRhc2l6ZShtYyk7CisgICAgY29uc3Qg
dm9pZCAqZW5kID0gKGNvbnN0IHZvaWQgKiltY19oZWFkZXIgKyBnZXRfdG90YWxzaXplKG1jKTsK
IAogICAgIEFTU0VSVCghbWljcm9jb2RlX3Nhbml0eV9jaGVjayhtYykpOwogICAgIGlmICggc2ln
bWF0Y2goc2lnLCBtY19oZWFkZXItPnNpZywgcGYsIG1jX2hlYWRlci0+cGYpICkKQEAgLTMyNyw3
ICszMzQsNyBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWlj
cm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgICAgICAobWMgPSBidWYpLT5oZHIuaGRy
dmVyICE9IDEgfHwgLyogVW5yZWNvZ25pc2VkIGhlYWRlciB2ZXJzaW9uPyAgICovCiAgICAgICAg
ICAgICAgbWMtPmhkci5sZHJ2ZXIgIT0gMSB8fCAgICAgICAgIC8qIFVucmVjb2duaXNlZCBsb2Fk
ZXIgdmVyc2lvbj8gICAqLwogICAgICAgICAgICAgIHNpemUgPCAoYmxvYl9zaXplID0gICAgICAg
ICAgICAvKiBJbnN1ZmZpY2llbnQgc3BhY2UgZm9yIHBhdGNoPyAgKi8KLSAgICAgICAgICAgICAg
ICAgICAgIGdldF90b3RhbHNpemUoJm1jLT5oZHIpKSApCisgICAgICAgICAgICAgICAgICAgICBn
ZXRfdG90YWxzaXplKG1jKSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvciA9IC1FSU5W
QUw7CiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIm1pY3JvY29kZTogQmFkIGRh
dGEgaW4gY29udGFpbmVyXG4iKTsKQEAgLTM1Miw3ICszNTksNyBAQCBzdGF0aWMgc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKIAog
ICAgIGlmICggc2F2ZWQgKQogICAgIHsKLSAgICAgICAgcGF0Y2ggPSB4bWVtZHVwX2J5dGVzKHNh
dmVkLCBnZXRfdG90YWxzaXplKCZzYXZlZC0+aGRyKSk7CisgICAgICAgIHBhdGNoID0geG1lbWR1
cF9ieXRlcyhzYXZlZCwgZ2V0X3RvdGFsc2l6ZShzYXZlZCkpOwogCiAgICAgICAgIGlmICggIXBh
dGNoICkKICAgICAgICAgICAgIGVycm9yID0gLUVOT01FTTsKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1w
YXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBs
aXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w
cm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:11:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:11:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJd9m-0007S6-O2; Wed, 01 Apr 2020 13:11:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJd9l-0007Rx-Ot
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:45 +0000
X-Inumbo-ID: 560fec56-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 560fec56-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:11:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=DCbAC+lrJWc85CPNT6TYi6si7eOKI4LMmJm5ZI7W7hE=; b=RS2wCyIxOS+HOdUTpAeR0mgSeM
 oP5EtRx5L0AbCm1t6KvpndcVSb70IBIq9UweV98cC/ND7rfsU8rgwXECmaUH6obD1pWfTyZ5oMz9o
 r8lCaIJxPvNAaaAqY3vqhePvzrarNDaI7I1kmzCw+j6ghWogyD9VbcDR3D193AJiF+mg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9k-0002vI-Ss
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9k-00083x-Rf
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJd9k-00083x-Rf@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:11:44 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/intel: Clean up
 microcode_update_match()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGU1NGIyMGVmNTBlMTViMDg3NWY5ZmQ1MTE2NmNmNGU0ZDU5MzdjZTMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxODoxMTo1MiAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBDbGVhbiB1cCBtaWNyb2NvZGVfdXBk
YXRlX21hdGNoKCkKICAgIAogICAgSW1wbGVtZW50IGEgbmV3IGdldF9leHRfc2lndGFibGUoKSBo
ZWxwZXIgdG8gYWJzdHJhY3QgdGhlIGxvZ2ljIGZvcgogICAgaWRlbnRpZnlpbmcgd2hldGhlciBh
biBleHRlbmRlZCBzaWduYXR1cmUgdGFibGUgZXhpc3RzLiAgQXMgcGFydCBvZiB0aGlzLAogICAg
cmVuYW1lIG1pY3JvY29kZV9pbnRlbC5iaXRzIHRvIGRhdGEgYW5kIGNoYW5nZSBpdHMgdHlwZSBz
byBpdCBjYW4gYmUgdXNlZnVsbHkKICAgIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgZGF0
YXNpemUgaGVhZGVyIGZpZWxkLgogICAgCiAgICBBbHNvLCByZXBsYWNlIHRoZSBzaWdtYXRjaCgp
IG1hY3JvIHdpdGggYSBzdGF0aWMgaW5saW5lIHdpdGggYSBtb3JlIHVzZWZ1bAogICAgQVBJLCBh
bmQgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IGl0IGlzIHNhZmUgdG8gZHJvcCBvbmUgb2YgdGhlIHBy
ZXZpb3VzCiAgICBjb25kaXRpb25hbHMuCiAgICAKICAgIE5vIHByYWN0aWNhbCBjaGFuZ2UgaW4g
YmVoYXZpb3VyLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcu
Y29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGlj
aEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIHwgNzcg
KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1
MSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94
ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50
ZWwuYwppbmRleCA0ZDk2ZjViNzZiLi5hYjAzNTBhM2QyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94
ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2ludGVsLmMKQEAgLTU4LDcgKzU4LDkgQEAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwg
ewogCiBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoIHsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRl
cl9pbnRlbCBoZHI7Ci0gICAgdW5zaWduZWQgaW50IGJpdHNbMF07CisKKyAgICAvKiBNaWNyb2Nv
ZGUgcGF5bG9hZC4gIEZvcm1hdCBpcyBwcm9wcmlldHkgYW5kIGVuY3J5cHRlZC4gKi8KKyAgICB1
aW50OF90IGRhdGFbXTsKIH07CiAKIC8qIFRlbXBvcmFyeSwgdW50aWwgdGhlIG1pY3JvY29kZV8q
IHN0cnVjdHVyZSBhcmUgZGlzZW50YW5nbGVkLiAqLwpAQCAtOTQsOCArOTYsNDEgQEAgc3RhdGlj
IHVpbnQzMl90IGdldF90b3RhbHNpemUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0
Y2gpCiAgICAgcmV0dXJuIHBhdGNoLT5oZHIudG90YWxzaXplID86IFBQUk9fVUNPREVfREFUQVNJ
WkUgKyBNQ19IRUFERVJfU0laRTsKIH0KIAotI2RlZmluZSBzaWdtYXRjaChzMSwgczIsIHAxLCBw
MikgXAotICAgICAgICAoKChzMSkgPT0gKHMyKSkgJiYgKCgocDEpICYgKHAyKSkgfHwgKCgocDEp
ID09IDApICYmICgocDIpID09IDApKSkpCisvKgorICogQSBwaWVjZSBvZiBtaWNyb2NvZGUgaGFz
IGFuIGV4dGVuZGVkIHNpZ25hdHVyZSB0YWJsZSBpZiB0aGVyZSBpcyBzcGFjZQorICogYmV0d2Vl
biB0aGUgZW5kIG9mIGRhdGFbXSBhbmQgdGhlIHRvdGFsIHNpemUuICAoVGhpcyBsb2dpYyBhbHNv
IHdvcmtzCisgKiBhcHByb3ByaWF0ZWx5IGZvciBQZW50aXVtIFByby9JSSBtaWNyb2NvZGUsIHdo
aWNoIGhhcyAwIGZvciBib3RoIHNpemUKKyAqIGZpZWxkcywgYW5kIG5vIGV4dGVuZGVkIHNpZ25h
dHVyZSB0YWJsZS4pCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUg
KmdldF9leHRfc2lndGFibGUoCisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0
Y2gpCit7CisgICAgaWYgKCBwYXRjaC0+aGRyLnRvdGFsc2l6ZSA+IChNQ19IRUFERVJfU0laRSAr
IHBhdGNoLT5oZHIuZGF0YXNpemUpICkKKyAgICAgICAgcmV0dXJuIChjb25zdCB2b2lkICopJnBh
dGNoLT5kYXRhW3BhdGNoLT5oZHIuZGF0YXNpemVdOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisK
Ky8qCisgKiBBIHBpZWNlIG9mIG1pY3JvY29kZSBpcyBhcHBsaWNhYmxlIGZvciBhIENQVSBpZjoK
KyAqICAxKSB0aGUgc2lnbmF0dXJlcyAoQ1BVSUQuMS5FQVggLSBGYW1pbHkvTW9kZWwvU3RlcHBp
bmcpIG1hdGNoLCBhbmQKKyAqICAyKSBUaGUgUGxhdGZvcm0gRmxhZ3MgYml0bWFwIGludGVyc2Vj
dC4KKyAqCisgKiBBIENQVSB3aWxsIGhhdmUgYSBzaW5nbGUgUGxhdGZvcm0gRmxhZyBiaXQsIHdo
aWxlIHRoZSBtaWNyb2NvZGUgbWF5IGJlCisgKiBjb21tb24gdG8gbXVsdGlwbGUgcGxhdGZvcm1z
IGFuZCBoYXZlIG11bHRpcGxlIGJpdHMgc2V0LgorICoKKyAqIE5vdGU6IFRoZSBQZW50aXVtIFBy
by9JSSBtaWNyb2NvZGUgZGlkbid0IHVzZSBwbGF0Zm9ybSBmbGFncywgYW5kIHNob3VsZAorICog
dHJlYXQgMCBhcyBhIG1hdGNoLiAgSG93ZXZlciwgWGVuIGJlaW5nIDY0Yml0IG1lYW5zIHRoYXQg
dGhlIENQVSBzaWduYXR1cmUKKyAqIHdvbid0IG1hdGNoLCBhbGxvd2luZyB1cyB0byBzaW1wbGlm
eSB0aGUgbG9naWMuCisgKi8KK3N0YXRpYyBib29sIHNpZ25hdHVyZV9tYXRjaGVzKGNvbnN0IHN0
cnVjdCBjcHVfc2lnbmF0dXJlICpjcHVfc2lnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHVjb2RlX3NpZywgdW5zaWduZWQgaW50IHVjb2RlX3BmKQoreworICAg
IGlmICggY3B1X3NpZy0+c2lnICE9IHVjb2RlX3NpZyApCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBjcHVfc2lnLT5wZiAmIHVjb2RlX3BmOworfQogCiAjZGVmaW5lIGV4dHRh
YmxlX3NpemUoZXQpICgoZXQpLT5jb3VudCAqIEVYVF9TSUdOQVRVUkVfU0laRSArIEVYVF9IRUFE
RVJfU0laRSkKIApAQCAtMjE3LDM2ICsyNTIsMjYgQEAgc3RhdGljIGludCBtaWNyb2NvZGVfc2Fu
aXR5X2NoZWNrKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1jKQogc3RhdGljIGVudW0g
bWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKAogICAgIGNvbnN0
IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1jKQogewotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2Nv
ZGVfaGVhZGVyX2ludGVsICptY19oZWFkZXIgPSAmbWMtPmhkcjsKLSAgICBjb25zdCBzdHJ1Y3Qg
ZXh0ZW5kZWRfc2lndGFibGUgKmV4dF9oZWFkZXI7Ci0gICAgY29uc3Qgc3RydWN0IGV4dGVuZGVk
X3NpZ25hdHVyZSAqZXh0X3NpZzsKKyAgICBjb25zdCBzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUg
KmV4dDsKICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqY3B1
X3NpZyA9ICZ0aGlzX2NwdShjcHVfc2lnKTsKLSAgICB1bnNpZ25lZCBpbnQgc2lnID0gY3B1X3Np
Zy0+c2lnOwotICAgIHVuc2lnbmVkIGludCBwZiA9IGNwdV9zaWctPnBmOwotICAgIHVuc2lnbmVk
IGludCByZXYgPSBjcHVfc2lnLT5yZXY7Ci0gICAgdW5zaWduZWQgbG9uZyBkYXRhX3NpemUgPSBn
ZXRfZGF0YXNpemUobWMpOwotICAgIGNvbnN0IHZvaWQgKmVuZCA9IChjb25zdCB2b2lkICopbWNf
aGVhZGVyICsgZ2V0X3RvdGFsc2l6ZShtYyk7CiAKICAgICBBU1NFUlQoIW1pY3JvY29kZV9zYW5p
dHlfY2hlY2sobWMpKTsKLSAgICBpZiAoIHNpZ21hdGNoKHNpZywgbWNfaGVhZGVyLT5zaWcsIHBm
LCBtY19oZWFkZXItPnBmKSApCi0gICAgICAgIHJldHVybiAobWNfaGVhZGVyLT5yZXYgPiByZXYp
ID8gTkVXX1VDT0RFIDogT0xEX1VDT0RFOwogCi0gICAgZXh0X2hlYWRlciA9IChjb25zdCB2b2lk
ICopKG1jX2hlYWRlciArIDEpICsgZGF0YV9zaXplOwotICAgIGV4dF9zaWcgPSAoY29uc3Qgdm9p
ZCAqKShleHRfaGVhZGVyICsgMSk7CisgICAgLyogQ2hlY2sgdGhlIG1haW4gbWljcm9jb2RlIHNp
Z25hdHVyZS4gKi8KKyAgICBpZiAoIHNpZ25hdHVyZV9tYXRjaGVzKGNwdV9zaWcsIG1jLT5oZHIu
c2lnLCBtYy0+aGRyLnBmKSApCisgICAgICAgIGdvdG8gZm91bmQ7CiAKLSAgICAvKgotICAgICAq
IE1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgdG8gaG9sZCBhbiBleHRlbmRlZCBoZWFk
ZXIgYW5kIGVub3VnaAotICAgICAqIGFycmF5IGVsZW1lbnRzLgotICAgICAqLwotICAgIGlmICgg
ZW5kIDw9IChjb25zdCB2b2lkICopZXh0X3NpZyApCi0gICAgICAgIHJldHVybiBNSVNfVUNPREU7
Ci0KLSAgICBmb3IgKCBpID0gMDsgaSA8IGV4dF9oZWFkZXItPmNvdW50OyBpKysgKQotICAgICAg
ICBpZiAoIHNpZ21hdGNoKHNpZywgZXh0X3NpZ1tpXS5zaWcsIHBmLCBleHRfc2lnW2ldLnBmKSAp
Ci0gICAgICAgICAgICByZXR1cm4gKG1jX2hlYWRlci0+cmV2ID4gcmV2KSA/IE5FV19VQ09ERSA6
IE9MRF9VQ09ERTsKKyAgICAvKiBJZiB0aGVyZSBpcyBhbiBleHRlbmRlZCBzaWduYXR1cmUgdGFi
bGUsIGNoZWNrIGVhY2ggb2YgdGhlbS4gKi8KKyAgICBpZiAoIChleHQgPSBnZXRfZXh0X3NpZ3Rh
YmxlKG1jKSkgIT0gTlVMTCApCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZXh0LT5jb3VudDsg
KytpICkKKyAgICAgICAgICAgIGlmICggc2lnbmF0dXJlX21hdGNoZXMoY3B1X3NpZywgZXh0LT5z
aWdzW2ldLnNpZywgZXh0LT5zaWdzW2ldLnBmKSApCisgICAgICAgICAgICAgICAgZ290byBmb3Vu
ZDsKIAogICAgIHJldHVybiBNSVNfVUNPREU7CisKKyBmb3VuZDoKKyAgICByZXR1cm4gbWMtPmhk
ci5yZXYgPiBjcHVfc2lnLT5yZXYgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CiB9CiAKIHN0YXRp
YyBib29sIG1hdGNoX2NwdShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKQEAg
LTI5Miw3ICszMTcsNyBAQCBzdGF0aWMgaW50IGFwcGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3Qg
bWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICBtY19pbnRlbCA9IHBhdGNoOwogCiAgICAgLyog
d3JpdGUgbWljcm9jb2RlIHZpYSBNU1IgMHg3OSAqLwotICAgIHdybXNybChNU1JfSUEzMl9VQ09E
RV9XUklURSwgKHVuc2lnbmVkIGxvbmcpbWNfaW50ZWwtPmJpdHMpOworICAgIHdybXNybChNU1Jf
SUEzMl9VQ09ERV9XUklURSwgKHVuc2lnbmVkIGxvbmcpbWNfaW50ZWwtPmRhdGEpOwogICAgIHdy
bXNybChNU1JfSUEzMl9VQ09ERV9SRVYsIDB4MFVMTCk7CiAKICAgICAvKiBBcyBkb2N1bWVudGVk
IGluIHRoZSBTRE06IERvIGEgQ1BVSUQgMSBoZXJlICovCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0
Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlz
dApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:11:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:11:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJd9x-0007UG-Py; Wed, 01 Apr 2020 13:11:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJd9v-0007U3-Sk
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:55 +0000
X-Inumbo-ID: 5c104fba-741a-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5c104fba-741a-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 13:11:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=TclaJzDRGvPoa4X1I1L0ODAfwh/b1ZZp1OvaCt4JQ1c=; b=t0jYQAOZaarnKzBo6HDgyFwex+
 lDgzbzlVTx4BSJtsovk+Zd2vYuPoDd4O+EQ3+J/ZICR0aiIYzm647DDK+ReswWj9zVH7DXTrvk8CD
 56WQ/cb0ntzpbUGdB0e3C/TAVG+442LQ3PD2SwMlKJIGFgLWxmB9E+6Ma4LEdji0pAp4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9u-0002wT-VV
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJd9u-00085S-UY
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:11:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJd9u-00085S-UY@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:11:54 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/intel: Clean up
 microcode_sanity_check()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDVlYmI4ZTdlYTE1YjVmZjVhMDlkZWMxZDQ1Yjc3NmVjNTY3MjFlNDIKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxNzo0MTozOSAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBDbGVhbiB1cCBtaWNyb2NvZGVfc2Fu
aXR5X2NoZWNrKCkKICAgIAogICAgUmV3cml0ZSB0aGUgc2l6ZSBjaGVja3MgaW4gYSB3YXkgd2hp
Y2ggZG9lc24ndCBkZXBlbmQgb24gWGVuIGJlaW5nIGNvbXBpbGVkIGFzCiAgICA2NGJpdC4KICAg
IAogICAgSW50cm9kdWNlIGEgY2hlY2sgbWlzc2luZyBmcm9tIHRoZSBvbGQgY29kZSwgdGhhdCB0
b3RhbF9zaXplIGlzIGEgbXVsdGlwbGUgb2YKICAgIDEwMjQgYnl0ZXMsIGFuZCBkcm9wIHVubmVj
ZXNzYXJ5IGRlZmluZXMvbWFjcm9zL3N0cnVjdHVyZXMuCiAgICAKICAgIE5vIHByYWN0aWNhbCBj
aGFuZ2UgaW4gYmVoYXZpb3VyLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVy
IDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNo
IDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRl
bC5jIHwgMTQ3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj
aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNy
b2NvZGUvaW50ZWwuYwppbmRleCBhYjAzNTBhM2QyLi4wNjdkYmQzNzVlIDEwMDY0NAotLS0gYS94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL2ludGVsLmMKQEAgLTY3LDI0ICs2NywxOSBAQCBzdHJ1Y3QgbWljcm9jb2RlX3Bh
dGNoIHsKICNkZWZpbmUgbWljcm9jb2RlX2ludGVsIG1pY3JvY29kZV9wYXRjaAogCiAvKiBtaWNy
b2NvZGUgZm9ybWF0IGlzIGV4dGVuZGVkIGZyb20gcHJlc2NvdHQgcHJvY2Vzc29ycyAqLwotc3Ry
dWN0IGV4dGVuZGVkX3NpZ25hdHVyZSB7Ci0gICAgdW5zaWduZWQgaW50IHNpZzsKLSAgICB1bnNp
Z25lZCBpbnQgcGY7Ci0gICAgdW5zaWduZWQgaW50IGNrc3VtOwotfTsKLQogc3RydWN0IGV4dGVu
ZGVkX3NpZ3RhYmxlIHsKICAgICB1bnNpZ25lZCBpbnQgY291bnQ7CiAgICAgdW5zaWduZWQgaW50
IGNrc3VtOwogICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFszXTsKLSAgICBzdHJ1Y3QgZXh0ZW5k
ZWRfc2lnbmF0dXJlIHNpZ3NbMF07CisgICAgc3RydWN0IHsKKyAgICAgICAgdW5zaWduZWQgaW50
IHNpZzsKKyAgICAgICAgdW5zaWduZWQgaW50IHBmOworICAgICAgICB1bnNpZ25lZCBpbnQgY2tz
dW07CisgICAgfSBzaWdzW107CiB9OwogCiAjZGVmaW5lIFBQUk9fVUNPREVfREFUQVNJWkUgICAg
IDIwMDAKICNkZWZpbmUgTUNfSEVBREVSX1NJWkUgICAgICAgICAgKHNpemVvZihzdHJ1Y3QgbWlj
cm9jb2RlX2hlYWRlcl9pbnRlbCkpCi0jZGVmaW5lIEVYVF9IRUFERVJfU0laRSAgICAgICAgIChz
aXplb2Yoc3RydWN0IGV4dGVuZGVkX3NpZ3RhYmxlKSkKLSNkZWZpbmUgRVhUX1NJR05BVFVSRV9T
SVpFICAgICAgKHNpemVvZihzdHJ1Y3QgZXh0ZW5kZWRfc2lnbmF0dXJlKSkKLSNkZWZpbmUgRFdT
SVpFICAgICAgICAgICAgICAgICAgKHNpemVvZih1MzIpKQogCiBzdGF0aWMgdWludDMyX3QgZ2V0
X2RhdGFzaXplKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewpAQCAtMTMy
LDggKzEyNyw2IEBAIHN0YXRpYyBib29sIHNpZ25hdHVyZV9tYXRjaGVzKGNvbnN0IHN0cnVjdCBj
cHVfc2lnbmF0dXJlICpjcHVfc2lnLAogICAgIHJldHVybiBjcHVfc2lnLT5wZiAmIHVjb2RlX3Bm
OwogfQogCi0jZGVmaW5lIGV4dHRhYmxlX3NpemUoZXQpICgoZXQpLT5jb3VudCAqIEVYVF9TSUdO
QVRVUkVfU0laRSArIEVYVF9IRUFERVJfU0laRSkKLQogc3RhdGljIGludCBjb2xsZWN0X2NwdV9p
bmZvKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQogewogICAgIHVpbnQ2NF90IG1zcl9jb250
ZW50OwpAQCAtMTU4LDkzICsxNTEsODUgQEAgc3RhdGljIGludCBjb2xsZWN0X2NwdV9pbmZvKHN0
cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50
IG1pY3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWMp
CisvKgorICogU2FuaXR5IGNoZWNrIGEgYmxvYiB3aGljaCBpcyBleHBlY3RlZCB0byBiZSBhIG1p
Y3JvY29kZSBwYXRjaC4gIFRoZSA0OCBieXRlCisgKiBoZWFkZXIgaXMgb2YgYSBrbm93biBmb3Jt
YXQsIGFuZCB0b2dldGhlciB3aXRoIHRvdGFsc2l6ZSBhcmUgd2l0aGluIHRoZQorICogYm91bmRz
IG9mIHRoZSBjb250YWluZXIuICBFdmVyeXRoaW5nIGVsc2UgaXMgdW5jaGVja2VkLgorICovCitz
dGF0aWMgaW50IG1pY3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IG1pY3JvY29kZV9w
YXRjaCAqcGF0Y2gpCiB7Ci0gICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwg
Km1jX2hlYWRlciA9ICZtYy0+aGRyOwotICAgIGNvbnN0IHN0cnVjdCBleHRlbmRlZF9zaWd0YWJs
ZSAqZXh0X2hlYWRlciA9IE5VTEw7Ci0gICAgY29uc3Qgc3RydWN0IGV4dGVuZGVkX3NpZ25hdHVy
ZSAqZXh0X3NpZzsKLSAgICB1bnNpZ25lZCBsb25nIHRvdGFsX3NpemUsIGRhdGFfc2l6ZSwgZXh0
X3RhYmxlX3NpemU7Ci0gICAgdW5zaWduZWQgaW50IGV4dF9zaWdjb3VudCA9IDAsIGk7Ci0gICAg
dWludDMyX3Qgc3VtLCBvcmlnX3N1bTsKLQotICAgIHRvdGFsX3NpemUgPSBnZXRfdG90YWxzaXpl
KG1jKTsKLSAgICBkYXRhX3NpemUgPSBnZXRfZGF0YXNpemUobWMpOwotICAgIGlmICggKGRhdGFf
c2l6ZSArIE1DX0hFQURFUl9TSVpFKSA+IHRvdGFsX3NpemUgKQorICAgIGNvbnN0IHN0cnVjdCBl
eHRlbmRlZF9zaWd0YWJsZSAqZXh0OworICAgIGNvbnN0IHVpbnQzMl90ICpwdHI7CisgICAgdW5z
aWduZWQgaW50IHRvdGFsX3NpemUgPSBnZXRfdG90YWxzaXplKHBhdGNoKTsKKyAgICB1bnNpZ25l
ZCBpbnQgZGF0YV9zaXplID0gZ2V0X2RhdGFzaXplKHBhdGNoKTsKKyAgICB1bnNpZ25lZCBpbnQg
aSwgZXh0X3NpemU7CisgICAgdWludDMyX3Qgc3VtOworCisgICAgLyoKKyAgICAgKiBUb3RhbCBz
aXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxMDI0IGJ5dGVzLiAgRGF0YSBzaXplIGFuZCB0aGUg
aGVhZGVyCisgICAgICogbXVzdCBmaXQgd2l0aGluIGl0LgorICAgICAqLworICAgIGlmICggKHRv
dGFsX3NpemUgJiAxMDIzKSB8fAorICAgICAgICAgZGF0YV9zaXplID4gKHRvdGFsX3NpemUgLSBN
Q19IRUFERVJfU0laRSkgKQogICAgIHsKLSAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2Nv
ZGU6IGVycm9yISAiCi0gICAgICAgICAgICAgICAiQmFkIGRhdGEgc2l6ZSBpbiBtaWNyb2NvZGUg
ZGF0YSBmaWxlXG4iKTsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICJtaWNyb2NvZGU6
IEJhZCBzaXplXG4iKTsKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQogCi0gICAgaWYg
KCAobWNfaGVhZGVyLT5sZHJ2ZXIgIT0gMSkgfHwgKG1jX2hlYWRlci0+aGRydmVyICE9IDEpICkK
KyAgICAvKiBDaGVja3N1bSB0aGUgbWFpbiBoZWFkZXIgYW5kIGRhdGEuICovCisgICAgZm9yICgg
c3VtID0gMCwgcHRyID0gKGNvbnN0IHVpbnQzMl90ICopcGF0Y2g7CisgICAgICAgICAgcHRyIDwg
KGNvbnN0IHVpbnQzMl90ICopJnBhdGNoLT5kYXRhW2RhdGFfc2l6ZV07ICsrcHRyICkKKyAgICAg
ICAgc3VtICs9ICpwdHI7CisKKyAgICBpZiAoIHN1bSAhPSAwICkKICAgICB7Ci0gICAgICAgIHBy
aW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBlcnJvciEgIgotICAgICAgICAgICAgICAgIlVua25v
d24gbWljcm9jb2RlIHVwZGF0ZSBmb3JtYXRcbiIpOworICAgICAgICBwcmludGsoWEVOTE9HX1dB
Uk5JTkcgIm1pY3JvY29kZTogQmFkIGNoZWNrc3VtXG4iKTsKICAgICAgICAgcmV0dXJuIC1FSU5W
QUw7CiAgICAgfQotICAgIGV4dF90YWJsZV9zaXplID0gdG90YWxfc2l6ZSAtIChNQ19IRUFERVJf
U0laRSArIGRhdGFfc2l6ZSk7Ci0gICAgaWYgKCBleHRfdGFibGVfc2l6ZSApCi0gICAgewotICAg
ICAgICBpZiAoIChleHRfdGFibGVfc2l6ZSA8IEVYVF9IRUFERVJfU0laRSkgfHwKLSAgICAgICAg
ICAgICAoKGV4dF90YWJsZV9zaXplIC0gRVhUX0hFQURFUl9TSVpFKSAlIEVYVF9TSUdOQVRVUkVf
U0laRSkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29k
ZTogZXJyb3IhICIKLSAgICAgICAgICAgICAgICAgICAiU21hbGwgZXh0dGFibGUgc2l6ZSBpbiBt
aWNyb2NvZGUgZGF0YSBmaWxlXG4iKTsKLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwotICAg
ICAgICB9Ci0gICAgICAgIGV4dF9oZWFkZXIgPSAodm9pZCAqKW1jICsgTUNfSEVBREVSX1NJWkUg
KyBkYXRhX3NpemU7Ci0gICAgICAgIGlmICggZXh0X3RhYmxlX3NpemUgIT0gZXh0dGFibGVfc2l6
ZShleHRfaGVhZGVyKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHByaW50ayhLRVJOX0VSUiAi
bWljcm9jb2RlOiBlcnJvciEgIgotICAgICAgICAgICAgICAgICAgICJCYWQgZXh0dGFibGUgc2l6
ZSBpbiBtaWNyb2NvZGUgZGF0YSBmaWxlXG4iKTsKLSAgICAgICAgICAgIHJldHVybiAtRUZBVUxU
OwotICAgICAgICB9Ci0gICAgICAgIGV4dF9zaWdjb3VudCA9IGV4dF9oZWFkZXItPmNvdW50Owot
ICAgIH0KIAotICAgIC8qIGNoZWNrIGV4dGVuZGVkIHRhYmxlIGNoZWNrc3VtICovCi0gICAgaWYg
KCBleHRfdGFibGVfc2l6ZSApCi0gICAgewotICAgICAgICB1aW50MzJfdCBleHRfdGFibGVfc3Vt
ID0gMDsKLSAgICAgICAgdWludDMyX3QgKmV4dF90YWJsZXAgPSAodWludDMyX3QgKilleHRfaGVh
ZGVyOworICAgIC8qIExvb2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFuIGV4dGVuZGVkIHNpZ25hdHVy
ZSB0YWJsZS4gKi8KKyAgICBleHRfc2l6ZSA9IHRvdGFsX3NpemUgLSBkYXRhX3NpemUgLSBNQ19I
RUFERVJfU0laRTsKIAotICAgICAgICBpID0gZXh0X3RhYmxlX3NpemUgLyBEV1NJWkU7Ci0gICAg
ICAgIHdoaWxlICggaS0tICkKLSAgICAgICAgICAgIGV4dF90YWJsZV9zdW0gKz0gZXh0X3RhYmxl
cFtpXTsKLSAgICAgICAgaWYgKCBleHRfdGFibGVfc3VtICkKLSAgICAgICAgewotICAgICAgICAg
ICAgcHJpbnRrKEtFUk5fV0FSTklORyAibWljcm9jb2RlOiBhYm9ydGluZywgIgotICAgICAgICAg
ICAgICAgICAgICJiYWQgZXh0ZW5kZWQgc2lnbmF0dXJlIHRhYmxlIGNoZWNrc3VtXG4iKTsKLSAg
ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwotICAgICAgICB9Ci0gICAgfQorICAgIC8qIE5vIGV4
dGVuZGVkIHNpZ25hdHVyZSB0YWJsZT8gIEFsbCBkb25lLiAqLworICAgIGlmICggZXh0X3NpemUg
PT0gMCApCisgICAgICAgIHJldHVybiAwOwogCi0gICAgLyogY2FsY3VsYXRlIHRoZSBjaGVja3N1
bSAqLwotICAgIG9yaWdfc3VtID0gMDsKLSAgICBpID0gKE1DX0hFQURFUl9TSVpFICsgZGF0YV9z
aXplKSAvIERXU0laRTsKLSAgICB3aGlsZSAoIGktLSApCi0gICAgICAgIG9yaWdfc3VtICs9ICgo
dWludDMyX3QgKiltYylbaV07Ci0gICAgaWYgKCBvcmlnX3N1bSApCisgICAgLyoKKyAgICAgKiBD
aGVjayB0aGUgc3RydWN0dXJlIG9mIHRoZSBleHRlbmRlZCBzaWduYXR1cmUgdGFibGUsIGVuc3Vy
aW5nIHRoYXQgaXQKKyAgICAgKiBmaXRzIGV4YWN0bHkgaW4gdGhlIHJlbWFpbmluZyBzcGFjZS4K
KyAgICAgKi8KKyAgICBleHQgPSAoY29uc3Qgdm9pZCAqKSZwYXRjaC0+ZGF0YVtkYXRhX3NpemVd
OworICAgIGlmICggZXh0X3NpemUgPCBzaXplb2YoKmV4dCkgfHwKKyAgICAgICAgIChleHRfc2l6
ZSAtIHNpemVvZigqZXh0KSkgJSBzaXplb2YoZXh0LT5zaWdzWzBdKSB8fAorICAgICAgICAgKGV4
dF9zaXplIC0gc2l6ZW9mKCpleHQpKSAvIHNpemVvZihleHQtPnNpZ3NbMF0pICE9IGV4dC0+Y291
bnQgKQogICAgIHsKLSAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IGFib3J0aW5n
LCBiYWQgY2hlY2tzdW1cbiIpOworICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIm1pY3Jv
Y29kZTogQmFkIHNpZ3RhYmxlIHNpemVcbiIpOwogICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAg
ICB9Ci0gICAgaWYgKCAhZXh0X3RhYmxlX3NpemUgKQotICAgICAgICByZXR1cm4gMDsKLSAgICAv
KiBjaGVjayBleHRlbmRlZCBzaWduYXR1cmUgY2hlY2tzdW0gKi8KLSAgICBmb3IgKCBpID0gMDsg
aSA8IGV4dF9zaWdjb3VudDsgaSsrICkKKworICAgIC8qIENoZWNrc3VtIHRoZSB3aG9sZSBleHRl
bmRlZCBzaWduYXR1cmUgdGFibGUuICovCisgICAgZm9yICggc3VtID0gMCwgcHRyID0gKGNvbnN0
IHVpbnQzMl90ICopZXh0OworICAgICAgICAgIHB0ciA8IChjb25zdCB1aW50MzJfdCAqKSZleHQt
PnNpZ3NbZXh0LT5jb3VudF07ICsrcHRyICkKKyAgICAgICAgc3VtICs9ICpwdHI7CisKKyAgICBp
ZiAoIHN1bSAhPSAwICkKICAgICB7Ci0gICAgICAgIGV4dF9zaWcgPSAodm9pZCAqKWV4dF9oZWFk
ZXIgKyBFWFRfSEVBREVSX1NJWkUgKwotICAgICAgICAgICAgRVhUX1NJR05BVFVSRV9TSVpFICog
aTsKLSAgICAgICAgc3VtID0gb3JpZ19zdW0KLSAgICAgICAgICAgIC0gKG1jX2hlYWRlci0+c2ln
ICsgbWNfaGVhZGVyLT5wZiArIG1jX2hlYWRlci0+Y2tzdW0pCi0gICAgICAgICAgICArIChleHRf
c2lnLT5zaWcgKyBleHRfc2lnLT5wZiArIGV4dF9zaWctPmNrc3VtKTsKLSAgICAgICAgaWYgKCBz
dW0gKQorICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIm1pY3JvY29kZTogQmFkIHNpZ3Rh
YmxlIGNoZWNrc3VtXG4iKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAg
LyoKKyAgICAgKiBDaGVja3N1bSBlYWNoIGluZGl2aXVkYWwgZXh0ZW5kZWQgc2lnbmF0dXJlIGFz
IGlmIGl0IGhhZCBiZWVuIGluIHRoZQorICAgICAqIG1haW4gaGVhZGVyLgorICAgICAqLworICAg
IHN1bSA9IHBhdGNoLT5oZHIuc2lnICsgcGF0Y2gtPmhkci5wZiArIHBhdGNoLT5oZHIuY2tzdW07
CisgICAgZm9yICggaSA9IDA7IGkgPCBleHQtPmNvdW50OyArK2kgKQorICAgICAgICBpZiAoIHN1
bSAhPSAoZXh0LT5zaWdzW2ldLnNpZyArIGV4dC0+c2lnc1tpXS5wZiArIGV4dC0+c2lnc1tpXS5j
a3N1bSkgKQogICAgICAgICB7Ci0gICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29k
ZTogYWJvcnRpbmcsIGJhZCBjaGVja3N1bVxuIik7CisgICAgICAgICAgICBwcmludGsoWEVOTE9H
X1dBUk5JTkcgIm1pY3JvY29kZTogQmFkIHNpZ3RhYmxlIGNoZWNrc3VtXG4iKTsKICAgICAgICAg
ICAgIHJldHVybiAtRUlOVkFMOwogICAgICAgICB9Ci0gICAgfQorCiAgICAgcmV0dXJuIDA7CiB9
CiAKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0
I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Clhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVj
dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:12:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:12:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdA7-0007VI-S7; Wed, 01 Apr 2020 13:12:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdA5-0007V6-Ur
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:05 +0000
X-Inumbo-ID: 6212aed0-741a-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6212aed0-741a-11ea-b58d-bc764e2007e4;
 Wed, 01 Apr 2020 13:12:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=CMk5DwzjnMGwglN/7Xn4jTV6bG+8K0PsNuiJf3fBpfE=; b=kKISaWvUfsvojaz1gkTqiU9pxS
 PmR7XcgqnFxP3Fp/LYYPQOtZkZPnByYi+r1CEX4F1fiPpvYBLbc7aYPLPuYW65MITapj74Zjy/q6l
 /Vzp1rrQiR//14qYdmheCBW3vnx9NtF+IgZAwi/pBg5d548G/Np+cfDLhMSYM7YHEZ74=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdA5-0002wq-1x
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdA5-00087C-13
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdA5-00087C-13@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:12:05 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/intel: Fold structures
 together
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGUwZDE4NzFiM2Q1Y2ZhZDBmMWQ4ZDdjNzU5M2JiNDI5MjkwNzRkMDgKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxODozMjozMSAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBGb2xkIHN0cnVjdHVyZXMgdG9nZXRo
ZXIKICAgIAogICAgV2l0aCBhbGwgdGhlIG5lY2Vzc2FyeSBjbGVhbnVwIG5vdyBpbiBwbGFjZSwg
Zm9sZCBzdHJ1Y3QKICAgIG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgaW50byBzdHJ1Y3QgbWljcm9j
b2RlX3BhdGNoIGFuZCBkcm9wIHRoZSBzdHJ1Y3QKICAgIG1pY3JvY29kZV9pbnRlbCB0ZW1wb3Jh
cnkgaWZkZWYtYXJ5LgogICAgCiAgICBObyBmdW5jdGlvbmFsIGNoYW5nZS4KICAgIAogICAgU2ln
bmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KICAg
IFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyB8IDU2ICsrKysrKysrKysrKysrLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMzYgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwu
YyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKaW5kZXggMDY3ZGJkMzc1ZS4u
NzJiZDFhZDBiYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwu
YworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCkBAIC0zMCwxNyArMzAs
MTIgQEAKIAogI2RlZmluZSBwcl9kZWJ1Zyh4Li4uKSAoKHZvaWQpMCkKIAotc3RydWN0IG1pY3Jv
Y29kZV9oZWFkZXJfaW50ZWwgeworc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7CiAgICAgdW5zaWdu
ZWQgaW50IGhkcnZlcjsKICAgICB1bnNpZ25lZCBpbnQgcmV2OwotICAgIHVuaW9uIHsKLSAgICAg
ICAgc3RydWN0IHsKLSAgICAgICAgICAgIHVpbnQxNl90IHllYXI7Ci0gICAgICAgICAgICB1aW50
OF90IGRheTsKLSAgICAgICAgICAgIHVpbnQ4X3QgbW9udGg7Ci0gICAgICAgIH07Ci0gICAgICAg
IHVuc2lnbmVkIGludCBkYXRlOwotICAgIH07CisgICAgdWludDE2X3QgeWVhcjsKKyAgICB1aW50
OF90ICBkYXk7CisgICAgdWludDhfdCAgbW9udGg7CiAgICAgdW5zaWduZWQgaW50IHNpZzsKICAg
ICB1bnNpZ25lZCBpbnQgY2tzdW07CiAgICAgdW5zaWduZWQgaW50IGxkcnZlcjsKQEAgLTU0LDE4
ICs0OSwxMSBAQCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9pbnRlbCB7CiAgICAgdW5zaWduZWQg
aW50IGRhdGFzaXplOwogICAgIHVuc2lnbmVkIGludCB0b3RhbHNpemU7CiAgICAgdW5zaWduZWQg
aW50IHJlc2VydmVkWzNdOwotfTsKLQotc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7Ci0gICAgc3Ry
dWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgaGRyOwogCiAgICAgLyogTWljcm9jb2RlIHBheWxv
YWQuICBGb3JtYXQgaXMgcHJvcHJpZXR5IGFuZCBlbmNyeXB0ZWQuICovCiAgICAgdWludDhfdCBk
YXRhW107CiB9OwogCi0vKiBUZW1wb3JhcnksIHVudGlsIHRoZSBtaWNyb2NvZGVfKiBzdHJ1Y3R1
cmUgYXJlIGRpc2VudGFuZ2xlZC4gKi8KLSNkZWZpbmUgbWljcm9jb2RlX2ludGVsIG1pY3JvY29k
ZV9wYXRjaAotCiAvKiBtaWNyb2NvZGUgZm9ybWF0IGlzIGV4dGVuZGVkIGZyb20gcHJlc2NvdHQg
cHJvY2Vzc29ycyAqLwogc3RydWN0IGV4dGVuZGVkX3NpZ3RhYmxlIHsKICAgICB1bnNpZ25lZCBp
bnQgY291bnQ7CkBAIC03OSwxNiArNjcsMTYgQEAgc3RydWN0IGV4dGVuZGVkX3NpZ3RhYmxlIHsK
IH07CiAKICNkZWZpbmUgUFBST19VQ09ERV9EQVRBU0laRSAgICAgMjAwMAotI2RlZmluZSBNQ19I
RUFERVJfU0laRSAgICAgICAgICAoc2l6ZW9mKHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVs
KSkKKyNkZWZpbmUgTUNfSEVBREVSX1NJWkUgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IG1pY3Jv
Y29kZV9wYXRjaCwgZGF0YSkKIAogc3RhdGljIHVpbnQzMl90IGdldF9kYXRhc2l6ZShjb25zdCBz
dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKIHsKLSAgICByZXR1cm4gcGF0Y2gtPmhkci5k
YXRhc2l6ZSA/OiBQUFJPX1VDT0RFX0RBVEFTSVpFOworICAgIHJldHVybiBwYXRjaC0+ZGF0YXNp
emUgPzogUFBST19VQ09ERV9EQVRBU0laRTsKIH0KIAogc3RhdGljIHVpbnQzMl90IGdldF90b3Rh
bHNpemUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7Ci0gICAgcmV0dXJu
IHBhdGNoLT5oZHIudG90YWxzaXplID86IFBQUk9fVUNPREVfREFUQVNJWkUgKyBNQ19IRUFERVJf
U0laRTsKKyAgICByZXR1cm4gcGF0Y2gtPnRvdGFsc2l6ZSA/OiBQUFJPX1VDT0RFX0RBVEFTSVpF
ICsgTUNfSEVBREVSX1NJWkU7CiB9CiAKIC8qCkBAIC0xMDAsOCArODgsOCBAQCBzdGF0aWMgdWlu
dDMyX3QgZ2V0X3RvdGFsc2l6ZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkK
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUgKmdldF9leHRfc2lndGFibGUo
CiAgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7Ci0gICAgaWYgKCBw
YXRjaC0+aGRyLnRvdGFsc2l6ZSA+IChNQ19IRUFERVJfU0laRSArIHBhdGNoLT5oZHIuZGF0YXNp
emUpICkKLSAgICAgICAgcmV0dXJuIChjb25zdCB2b2lkICopJnBhdGNoLT5kYXRhW3BhdGNoLT5o
ZHIuZGF0YXNpemVdOworICAgIGlmICggcGF0Y2gtPnRvdGFsc2l6ZSA+IChNQ19IRUFERVJfU0la
RSArIHBhdGNoLT5kYXRhc2l6ZSkgKQorICAgICAgICByZXR1cm4gKGNvbnN0IHZvaWQgKikmcGF0
Y2gtPmRhdGFbcGF0Y2gtPmRhdGFzaXplXTsKIAogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMjIy
LDcgKzIxMCw3IEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3Nhbml0eV9jaGVjayhjb25zdCBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICAgKiBDaGVja3N1bSBlYWNoIGluZGl2aXVk
YWwgZXh0ZW5kZWQgc2lnbmF0dXJlIGFzIGlmIGl0IGhhZCBiZWVuIGluIHRoZQogICAgICAqIG1h
aW4gaGVhZGVyLgogICAgICAqLwotICAgIHN1bSA9IHBhdGNoLT5oZHIuc2lnICsgcGF0Y2gtPmhk
ci5wZiArIHBhdGNoLT5oZHIuY2tzdW07CisgICAgc3VtID0gcGF0Y2gtPnNpZyArIHBhdGNoLT5w
ZiArIHBhdGNoLT5ja3N1bTsKICAgICBmb3IgKCBpID0gMDsgaSA8IGV4dC0+Y291bnQ7ICsraSAp
CiAgICAgICAgIGlmICggc3VtICE9IChleHQtPnNpZ3NbaV0uc2lnICsgZXh0LT5zaWdzW2ldLnBm
ICsgZXh0LT5zaWdzW2ldLmNrc3VtKSApCiAgICAgICAgIHsKQEAgLTI0NCw3ICsyMzIsNyBAQCBz
dGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29kZV91cGRhdGVfbWF0Y2go
CiAgICAgQVNTRVJUKCFtaWNyb2NvZGVfc2FuaXR5X2NoZWNrKG1jKSk7CiAKICAgICAvKiBDaGVj
ayB0aGUgbWFpbiBtaWNyb2NvZGUgc2lnbmF0dXJlLiAqLwotICAgIGlmICggc2lnbmF0dXJlX21h
dGNoZXMoY3B1X3NpZywgbWMtPmhkci5zaWcsIG1jLT5oZHIucGYpICkKKyAgICBpZiAoIHNpZ25h
dHVyZV9tYXRjaGVzKGNwdV9zaWcsIG1jLT5zaWcsIG1jLT5wZikgKQogICAgICAgICBnb3RvIGZv
dW5kOwogCiAgICAgLyogSWYgdGhlcmUgaXMgYW4gZXh0ZW5kZWQgc2lnbmF0dXJlIHRhYmxlLCBj
aGVjayBlYWNoIG9mIHRoZW0uICovCkBAIC0yNTYsNyArMjQ0LDcgQEAgc3RhdGljIGVudW0gbWlj
cm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKAogICAgIHJldHVybiBN
SVNfVUNPREU7CiAKICBmb3VuZDoKLSAgICByZXR1cm4gbWMtPmhkci5yZXYgPiBjcHVfc2lnLT5y
ZXYgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CisgICAgcmV0dXJuIG1jLT5yZXYgPiBjcHVfc2ln
LT5yZXYgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CiB9CiAKIHN0YXRpYyBib29sIG1hdGNoX2Nw
dShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKQEAgLTI4Miw3ICsyNzAsNyBA
QCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNvbXBhcmVfcGF0Y2goCiAgICAg
QVNTRVJUKG1pY3JvY29kZV91cGRhdGVfbWF0Y2gob2xkKSAhPSBNSVNfVUNPREUpOwogICAgIEFT
U0VSVChtaWNyb2NvZGVfdXBkYXRlX21hdGNoKG5ldykgIT0gTUlTX1VDT0RFKTsKIAotICAgIHJl
dHVybiAobmV3LT5oZHIucmV2ID4gb2xkLT5oZHIucmV2KSA/IE5FV19VQ09ERSA6IE9MRF9VQ09E
RTsKKyAgICByZXR1cm4gbmV3LT5yZXYgPiBvbGQtPnJldiA/IE5FV19VQ09ERSA6IE9MRF9VQ09E
RTsKIH0KIAogc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUoY29uc3Qgc3RydWN0IG1pY3JvY29k
ZV9wYXRjaCAqcGF0Y2gpCkBAIC0yOTAsNyArMjc4LDYgQEAgc3RhdGljIGludCBhcHBseV9taWNy
b2NvZGUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAgdWludDY0X3Qg
bXNyX2NvbnRlbnQ7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsK
ICAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnRoaXNfY3B1KGNwdV9zaWcpOwotICAg
IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaW50ZWwgKm1jX2ludGVsOwogICAgIHVpbnQzMl90IHJl
diwgb2xkX3JldiA9IHNpZy0+cmV2OwogCiAgICAgaWYgKCAhcGF0Y2ggKQpAQCAtMjk5LDEwICsy
ODYsOCBAQCBzdGF0aWMgaW50IGFwcGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3QgbWljcm9jb2Rl
X3BhdGNoICpwYXRjaCkKICAgICBpZiAoICFtYXRjaF9jcHUocGF0Y2gpICkKICAgICAgICAgcmV0
dXJuIC1FSU5WQUw7CiAKLSAgICBtY19pbnRlbCA9IHBhdGNoOwotCiAgICAgLyogd3JpdGUgbWlj
cm9jb2RlIHZpYSBNU1IgMHg3OSAqLwotICAgIHdybXNybChNU1JfSUEzMl9VQ09ERV9XUklURSwg
KHVuc2lnbmVkIGxvbmcpbWNfaW50ZWwtPmRhdGEpOworICAgIHdybXNybChNU1JfSUEzMl9VQ09E
RV9XUklURSwgKHVuc2lnbmVkIGxvbmcpcGF0Y2gtPmRhdGEpOwogICAgIHdybXNybChNU1JfSUEz
Ml9VQ09ERV9SRVYsIDB4MFVMTCk7CiAKICAgICAvKiBBcyBkb2N1bWVudGVkIGluIHRoZSBTRE06
IERvIGEgQ1BVSUQgMSBoZXJlICovCkBAIC0zMTIsMTggKzI5NywxNyBAQCBzdGF0aWMgaW50IGFw
cGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICBy
ZG1zcmwoTVNSX0lBMzJfVUNPREVfUkVWLCBtc3JfY29udGVudCk7CiAgICAgc2lnLT5yZXYgPSBy
ZXYgPSBtc3JfY29udGVudCA+PiAzMjsKIAotICAgIGlmICggcmV2ICE9IG1jX2ludGVsLT5oZHIu
cmV2ICkKKyAgICBpZiAoIHJldiAhPSBwYXRjaC0+cmV2ICkKICAgICB7CiAgICAgICAgIHByaW50
ayhYRU5MT0dfRVJSCiAgICAgICAgICAgICAgICAibWljcm9jb2RlOiBDUFUldSB1cGRhdGUgcmV2
ICUjeCB0byAlI3ggZmFpbGVkLCByZXN1bHQgJSN4XG4iLAotICAgICAgICAgICAgICAgY3B1LCBv
bGRfcmV2LCBtY19pbnRlbC0+aGRyLnJldiwgcmV2KTsKKyAgICAgICAgICAgICAgIGNwdSwgb2xk
X3JldiwgcGF0Y2gtPnJldiwgcmV2KTsKICAgICAgICAgcmV0dXJuIC1FSU87CiAgICAgfQogCiAg
ICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HCiAgICAgICAgICAgICJtaWNyb2NvZGU6IENQVSV1IHVw
ZGF0ZWQgZnJvbSByZXZpc2lvbiAlI3ggdG8gJSN4LCBkYXRlID0gJTA0eC0lMDJ4LSUwMnhcbiIs
Ci0gICAgICAgICAgIGNwdSwgb2xkX3JldiwgcmV2LCBtY19pbnRlbC0+aGRyLnllYXIsCi0gICAg
ICAgICAgIG1jX2ludGVsLT5oZHIubW9udGgsIG1jX2ludGVsLT5oZHIuZGF5KTsKKyAgICAgICAg
ICAgY3B1LCBvbGRfcmV2LCByZXYsIHBhdGNoLT55ZWFyLCBwYXRjaC0+bW9udGgsIHBhdGNoLT5k
YXkpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zNDEsOCArMzI1LDggQEAgc3RhdGljIHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYs
CiAgICAgICAgIHVuc2lnbmVkIGludCBibG9iX3NpemU7CiAKICAgICAgICAgaWYgKCBzaXplIDwg
TUNfSEVBREVSX1NJWkUgfHwgICAgICAgLyogSW5zdWZmaWNpZW50IHNwYWNlIGZvciBoZWFkZXI/
ICovCi0gICAgICAgICAgICAgKG1jID0gYnVmKS0+aGRyLmhkcnZlciAhPSAxIHx8IC8qIFVucmVj
b2duaXNlZCBoZWFkZXIgdmVyc2lvbj8gICAqLwotICAgICAgICAgICAgIG1jLT5oZHIubGRydmVy
ICE9IDEgfHwgICAgICAgICAvKiBVbnJlY29nbmlzZWQgbG9hZGVyIHZlcnNpb24/ICAgKi8KKyAg
ICAgICAgICAgICAobWMgPSBidWYpLT5oZHJ2ZXIgIT0gMSB8fCAgICAgLyogVW5yZWNvZ25pc2Vk
IGhlYWRlciB2ZXJzaW9uPyAgICovCisgICAgICAgICAgICAgbWMtPmxkcnZlciAhPSAxIHx8ICAg
ICAgICAgICAgIC8qIFVucmVjb2duaXNlZCBsb2FkZXIgdmVyc2lvbj8gICAqLwogICAgICAgICAg
ICAgIHNpemUgPCAoYmxvYl9zaXplID0gICAgICAgICAgICAvKiBJbnN1ZmZpY2llbnQgc3BhY2Ug
Zm9yIHBhdGNoPyAgKi8KICAgICAgICAgICAgICAgICAgICAgIGdldF90b3RhbHNpemUobWMpKSAp
CiAgICAgICAgIHsKQEAgLTM2MCw3ICszNDQsNyBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9w
YXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgICog
b25lIHdpdGggaGlnaGVyIHJldmlzaW9uLgogICAgICAgICAgKi8KICAgICAgICAgaWYgKCAobWlj
cm9jb2RlX3VwZGF0ZV9tYXRjaChtYykgIT0gTUlTX1VDT0RFKSAmJgotICAgICAgICAgICAgICgh
c2F2ZWQgfHwgKG1jLT5oZHIucmV2ID4gc2F2ZWQtPmhkci5yZXYpKSApCisgICAgICAgICAgICAg
KCFzYXZlZCB8fCAobWMtPnJldiA+IHNhdmVkLT5yZXYpKSApCiAgICAgICAgICAgICBzYXZlZCA9
IG1jOwogCiAgICAgICAgIGJ1ZiAgKz0gYmxvYl9zaXplOwotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBh
dGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3RhZ2luZwoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxp
c3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:12:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:12:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdAG-0007WD-UU; Wed, 01 Apr 2020 13:12:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdAF-0007W4-SV
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:15 +0000
X-Inumbo-ID: 6819316e-741a-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6819316e-741a-11ea-83d8-bc764e2007e4;
 Wed, 01 Apr 2020 13:12:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VXn8yiOX4Av3bOrk+5h9iLjD/qSMAv1Ast64vhIS2mw=; b=mvcicHezIcqBCW/m1SjlbmVZ0w
 Cn+UEoJf1wbQ3eymOlsXoZ2jbbUabgS5wyOULOUbdSty5uMe/1efILrwPbYL1bZ+67/dYR9SAUMw2
 NDb0xynkUGQJBVH2ifYQIG4nqFxcDvF4+RSxyAYAYxMu6kXf60Ezdj1B8zIzX+M8cftE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAF-0002x6-4Z
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAF-00088f-3c
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdAF-00088f-3c@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:12:15 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Fix more potential
 buffer overruns with microcode parsing
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDcxOGQxNDMyMDAwMDc5ZWE3MTIwZjZjYjc3MDM3MmFmZTcwN2NlMjcKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyNyAxNjo1MDoxMyAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogRml4IG1vcmUgcG90ZW50aWFsIGJ1ZmZl
ciBvdmVycnVucyB3aXRoIG1pY3JvY29kZSBwYXJzaW5nCiAgICAKICAgIGNwdV9yZXF1ZXN0X21p
Y3JvY29kZSgpIGRvZXNuJ3Qga25vdyB0aGUgYnVmZmVyIGlzIGF0IGxlYXN0IDQgYnl0ZXMgbG9u
ZwogICAgYmVmb3JlIGluc3BlY3RpbmcgVUNPREVfTUFHSUMuCiAgICAKICAgIGluc3RhbGxfZXF1
aXZfY3B1X3RhYmxlKCkgZG9lc24ndCBrbm93IHRoZSBib3VuZGFyeSBvZiB0aGUgYnVmZmVyIGl0
IGlzCiAgICBpbnRlcnByZXRpbmcgYXMgYW4gZXF1aXZhbGVuY3kgdGFibGUuICBUaGlzIGNhc2Ug
d2FzIGNsZWFybHkgb2JzZXJ2ZWQgYXQgb25lCiAgICBwb2ludCBpbiB0aGUgcGFzdCwgZ2l2ZW4g
dGhlIHN1YnNlcXVlbnQgb3ZlcnJ1biBkZXRlY3Rpb24sIGJ1dCB3aXRob3V0CiAgICBjb21wcmVo
ZW5kaW5nIHRoYXQgdGhlIGRhbWFnZSB3YXMgYWxyZWFkeSBkb25lLgogICAgCiAgICBNYWtlIHRo
ZSBsb2dpYyBjb25zaXN0ZW50IHdpdGggY29udGFpbmVyX2Zhc3RfZm9yd2FyZCgpIGFuZCBwYXNz
IHNpemVfbGVmdCBpbgogICAgdG8gaW5zdGFsbF9lcXVpdl9jcHVfdGFibGUoKS4KICAgIAogICAg
U2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4K
ICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVu
L2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgfCAyNiArKysrKysrKysrKystLS0tLS0tLS0t
LS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jIGIveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggNmJmM2EwNTRkMy4uMzI2MmNmMjQzZiAxMDA2
NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKKysrIGIveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTMwMywxMSArMzAzLDIwIEBAIHN0YXRpYyBpbnQg
Z2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgKIHN0YXRpYyBpbnQgaW5zdGFsbF9lcXVpdl9jcHVf
dGFibGUoCiAgICAgc3RydWN0IG1pY3JvY29kZV9hbWQgKm1jX2FtZCwKICAgICBjb25zdCB2b2lk
ICpkYXRhLAorICAgIHNpemVfdCBzaXplX2xlZnQsCiAgICAgc2l6ZV90ICpvZmZzZXQpCiB7Ci0g
ICAgY29uc3Qgc3RydWN0IG1wYmhkciAqbXBidWYgPSBkYXRhICsgKm9mZnNldCArIDQ7CisgICAg
Y29uc3Qgc3RydWN0IG1wYmhkciAqbXBidWY7CiAgICAgY29uc3Qgc3RydWN0IGVxdWl2X2NwdV9l
bnRyeSAqZXE7CiAKKyAgICBpZiAoIHNpemVfbGVmdCA8IChzaXplb2YoKm1wYnVmKSArIDQpIHx8
CisgICAgICAgICAobXBidWYgPSBkYXRhICsgKm9mZnNldCArIDQsCisgICAgICAgICAgc2l6ZV9s
ZWZ0IC0gc2l6ZW9mKCptcGJ1ZikgLSA0IDwgbXBidWYtPmxlbikgKQorICAgIHsKKyAgICAgICAg
cHJpbnRrKFhFTkxPR19XQVJOSU5HICJtaWNyb2NvZGU6IE5vIHNwYWNlIGZvciBlcXVpdmFsZW50
IGNwdSB0YWJsZVxuIik7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKwogICAgICpv
ZmZzZXQgKz0gbXBidWYtPmxlbiArIENPTlRfSERSX1NJWkU7CS8qIGFkZCBoZWFkZXIgbGVuZ3Ro
ICovCiAKICAgICBpZiAoIG1wYnVmLT50eXBlICE9IFVDT0RFX0VRVUlWX0NQVV9UQUJMRV9UWVBF
ICkKQEAgLTQxNyw3ICs0MjYsNyBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1
X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKIAogICAgIGN1cnJlbnRfY3B1X2lk
ID0gY3B1aWRfZWF4KDB4MDAwMDAwMDEpOwogCi0gICAgaWYgKCAqKGNvbnN0IHVpbnQzMl90ICop
YnVmICE9IFVDT0RFX01BR0lDICkKKyAgICBpZiAoIGJ1ZnNpemUgPCA0IHx8ICooY29uc3QgdWlu
dDMyX3QgKilidWYgIT0gVUNPREVfTUFHSUMgKQogICAgIHsKICAgICAgICAgcHJpbnRrKEtFUk5f
RVJSICJtaWNyb2NvZGU6IFdyb25nIG1pY3JvY29kZSBwYXRjaCBmaWxlIG1hZ2ljXG4iKTsKICAg
ICAgICAgZXJyb3IgPSAtRUlOVkFMOwpAQCAtNDQ3LDI0ICs0NTYsMTMgQEAgc3RhdGljIHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYs
CiAgICAgICovCiAgICAgd2hpbGUgKCBvZmZzZXQgPCBidWZzaXplICkKICAgICB7Ci0gICAgICAg
IGVycm9yID0gaW5zdGFsbF9lcXVpdl9jcHVfdGFibGUobWNfYW1kLCBidWYsICZvZmZzZXQpOwor
ICAgICAgICBlcnJvciA9IGluc3RhbGxfZXF1aXZfY3B1X3RhYmxlKG1jX2FtZCwgYnVmLCBidWZz
aXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBpbnN0YWxsaW5nIGVxdWl2
YWxlbnQgY3B1IHRhYmxlIGZhaWxlZFxuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIC8qCi0gICAgICAgICAqIENvdWxkIGhhcHBlbiBhcyB3ZSBhZHZhbmNlICdv
ZmZzZXQnIGVhcmx5Ci0gICAgICAgICAqIGluIGluc3RhbGxfZXF1aXZfY3B1X3RhYmxlCi0gICAg
ICAgICAqLwotICAgICAgICBpZiAoIG9mZnNldCA+IGJ1ZnNpemUgKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogTWljcm9jb2RlIGJ1ZmZlciBvdmVy
cnVuXG4iKTsKLSAgICAgICAgICAgIGVycm9yID0gLUVJTlZBTDsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKCBmaW5kX2VxdWl2X2NwdV9pZChtY19hbWQtPmVx
dWl2X2NwdV90YWJsZSwgY3VycmVudF9jcHVfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmVxdWl2X2NwdV9pZCkgKQogICAgICAgICAgICAgYnJlYWs7Ci0tCmdlbmVyYXRlZCBi
eSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1h
aWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz
dHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:12:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:12:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdAS-0007Y6-2V; Wed, 01 Apr 2020 13:12:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdAQ-0007Xs-8e
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:26 +0000
X-Inumbo-ID: 6e191d36-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6e191d36-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:12:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=v3FBicKlzcqHbxnYw+Tk6lRZ98lnt6yl6pNjVki6hQQ=; b=Us2RJJe7cRDqmmX8oDWHv9tZDY
 Cuo1CKjrTgTajxLBnzNz+9xEqHqGesIyU5ZxGLEOvEgAnfprZeICdh4Gn6FcXQFwMS1MsIlSeJidu
 DddxHk5tAWhsQk0cFpmeX5wLajQ41vD7QYWlC2oB22eLKP+KFnM96nqNvcxm5SdMX0Ik=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAP-0002xF-7J
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAP-0008Af-6C
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdAP-0008Af-6C@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:12:25 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Move
 check_final_patch_levels() to apply_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDBjNzcwODIwYTc5MmE3YWI3NDUwZmFjNThlNDA0Y2UyYjlkZDQwYTEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxMzoxNDowMSAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogTW92ZSBjaGVja19maW5hbF9wYXRjaF9s
ZXZlbHMoKSB0byBhcHBseV9taWNyb2NvZGUoKQogICAgCiAgICBUaGUgbWljcm9jb2RlIHJldmlz
aW9uIG9mIHdoaWNoZXZlciBDUFUgcnVucyBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKSBpcyBub3QK
ICAgIG5lY2Vzc2FyaWx5IGFwcGxpY2FibGUgdG8gb3RoZXIgQ1BVcy4KICAgIAogICAgSWYgdGhl
IEJJT1MgbGVmdCB1cyB3aXRoIGFzeW1tZXRyaWMgbWljcm9jb2RlLCByZWplY3RpbmcgdXBkYXRl
cyBpbgogICAgY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkgd291bGQgcHJldmVudCB1cyBsZXZlbGxp
bmcgdGhlIHN5c3RlbSBldmVuIGlmIG9ubHkgdXAKICAgIHRvIHRoZSBmaW5hbCBsZXZlbC4gIEFs
c28sIGZhaWxpbmcgdG8gY2FjaGUgbWljcm9jb2RlIG1pc3NlcyBhbiBvcHBvcnR1bml0eSB0bwog
ICAgZ2V0IGJleW9uZCB0aGUgZmluYWwgbGV2ZWwgdmlhIHRoZSBTMyBwYXRoLgogICAgCiAgICBN
b3ZlIGNoZWNrX2ZpbmFsX3BhdGNoX2xldmVscygpIGVhcmxpZXIgYW5kIHVzZSBpdCBpbiBhcHBs
eV9taWNyb2NvZGUoKS4KICAgIFJld29yZCB0aGUgZXJyb3IgbWVzc2FnZSB0byBiZSBtb3JlIGlu
Zm9ybWF0aXZlLCBhbmQgdXNlIC1FTlhJTyBhcyB0aGlzIGNvcm5lcgogICAgY2FzZSBoYXMgbm90
aGluZyB0byBkbyB3aXRoIHBlcm1pc3Npb25zLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRy
ZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEph
biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3Jv
Y29kZS9hbWQuYyB8IDgzICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IDEgZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9j
cHUvbWljcm9jb2RlL2FtZC5jCmluZGV4IDMyNjJjZjI0M2YuLmZkMTgwNDE2NDIgMTAwNjQ0Ci0t
LSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9j
cHUvbWljcm9jb2RlL2FtZC5jCkBAIC0xMTksNiArMTE5LDM2IEBAIHN0YXRpYyBib29sX3QgdmVy
aWZ5X3BhdGNoX3NpemUodWludDMyX3QgcGF0Y2hfc2l6ZSkKICAgICByZXR1cm4gKHBhdGNoX3Np
emUgPD0gbWF4X3NpemUpOwogfQogCitzdGF0aWMgYm9vbCBjaGVja19maW5hbF9wYXRjaF9sZXZl
bHMoY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZykKK3sKKyAgICAvKgorICAgICAqIFRo
ZSAnZmluYWxfbGV2ZWxzJyBvZiBwYXRjaCBpZHMgaGF2ZSBiZWVuIG9idGFpbmVkIGVtcGlyaWNh
bGx5LgorICAgICAqIFJlZmVyIGJ1ZyBodHRwczovL2J1Z3ppbGxhLnN1c2UuY29tL3Nob3dfYnVn
LmNnaT9pZD05MTM5OTYKKyAgICAgKiBmb3IgZGV0YWlscyBvZiB0aGUgaXNzdWUuIFRoZSBzaG9y
dCB2ZXJzaW9uIGlzIHRoYXQgcGVvcGxlCisgICAgICogdXNpbmcgY2VydGFpbiBGYW0xMGggc3lz
dGVtcyBub3RpY2VkIHN5c3RlbSBoYW5nIGlzc3VlcyB3aGVuCisgICAgICogdHJ5aW5nIHRvIHVw
ZGF0ZSBtaWNyb2NvZGUgbGV2ZWxzIGJleW9uZCB0aGUgcGF0Y2ggSURzIGJlbG93LgorICAgICAq
IEZyb20gaW50ZXJuYWwgZGlzY3Vzc2lvbnMsIHdlIGdhdGhlcmVkIHRoYXQgT1MvaHlwZXJ2aXNv
cgorICAgICAqIGNhbm5vdCByZWxpYWJseSBwZXJmb3JtIG1pY3JvY29kZSB1cGRhdGVzIGJleW9u
ZCB0aGVzZSBsZXZlbHMKKyAgICAgKiBkdWUgdG8gaGFyZHdhcmUgaXNzdWVzLiBUaGVyZWZvcmUs
IHdlIG5lZWQgdG8gYWJvcnQgbWljcm9jb2RlCisgICAgICogdXBkYXRlIHByb2Nlc3MgaWYgd2Ug
aGl0IGFueSBvZiB0aGVzZSBsZXZlbHMuCisgICAgICovCisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGludCBmaW5hbF9sZXZlbHNbXSA9IHsKKyAgICAgICAgMHgwMTAwMDA5OCwKKyAgICAgICAg
MHgwMTAwMDA5ZiwKKyAgICAgICAgMHgwMTAwMDBhZiwKKyAgICB9OworICAgIHVuc2lnbmVkIGlu
dCBpOworCisgICAgaWYgKCBib290X2NwdV9kYXRhLng4NiAhPSAweDEwICkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZpbmFsX2xldmVs
cyk7IGkrKyApCisgICAgICAgIGlmICggc2lnLT5yZXYgPT0gZmluYWxfbGV2ZWxzW2ldICkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMg
Ym9vbF90IGZpbmRfZXF1aXZfY3B1X2lkKGNvbnN0IHN0cnVjdCBlcXVpdl9jcHVfZW50cnkgKmVx
dWl2X2NwdV90YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGN1cnJlbnRfY3B1X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgKmVxdWl2X2NwdV9pZCkKQEAgLTIyOSw2ICsyNTksMTQgQEAgc3RhdGljIGludCBh
cHBseV9taWNyb2NvZGUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAg
aWYgKCAhbWF0Y2hfY3B1KHBhdGNoKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCisgICAg
aWYgKCBjaGVja19maW5hbF9wYXRjaF9sZXZlbHMoc2lnKSApCisgICAgeworICAgICAgICBwcmlu
dGsoWEVOTE9HX0VSUgorICAgICAgICAgICAgICAgIm1pY3JvY29kZTogQ1BVJXUgY3VycmVudCBy
ZXYgJSN4IHVuc2FmZSB0byB1cGRhdGVcbiIsCisgICAgICAgICAgICAgICBjcHUsIHNpZy0+cmV2
KTsKKyAgICAgICAgcmV0dXJuIC1FTlhJTzsKKyAgICB9CisKICAgICBoZHIgPSBwYXRjaC0+bXBi
OwogCiAgICAgaHdfZXJyID0gd3Jtc3Jfc2FmZShNU1JfQU1EX1BBVENITE9BREVSLCAodW5zaWdu
ZWQgbG9uZyloZHIpOwpAQCAtMzc0LDQzICs0MTIsNiBAQCBzdGF0aWMgaW50IGNvbnRhaW5lcl9m
YXN0X2ZvcndhcmQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemVfbGVmdCwgc2l6ZV90ICpv
ZgogICAgIHJldHVybiAwOwogfQogCi0vKgotICogVGhlICdmaW5hbF9sZXZlbHMnIG9mIHBhdGNo
IGlkcyBoYXZlIGJlZW4gb2J0YWluZWQgZW1waXJpY2FsbHkuCi0gKiBSZWZlciBidWcgaHR0cHM6
Ly9idWd6aWxsYS5zdXNlLmNvbS9zaG93X2J1Zy5jZ2k/aWQ9OTEzOTk2IAotICogZm9yIGRldGFp
bHMgb2YgdGhlIGlzc3VlLiBUaGUgc2hvcnQgdmVyc2lvbiBpcyB0aGF0IHBlb3BsZQotICogdXNp
bmcgY2VydGFpbiBGYW0xMGggc3lzdGVtcyBub3RpY2VkIHN5c3RlbSBoYW5nIGlzc3VlcyB3aGVu
Ci0gKiB0cnlpbmcgdG8gdXBkYXRlIG1pY3JvY29kZSBsZXZlbHMgYmV5b25kIHRoZSBwYXRjaCBJ
RHMgYmVsb3cuCi0gKiBGcm9tIGludGVybmFsIGRpc2N1c3Npb25zLCB3ZSBnYXRoZXJlZCB0aGF0
IE9TL2h5cGVydmlzb3IKLSAqIGNhbm5vdCByZWxpYWJseSBwZXJmb3JtIG1pY3JvY29kZSB1cGRh
dGVzIGJleW9uZCB0aGVzZSBsZXZlbHMKLSAqIGR1ZSB0byBoYXJkd2FyZSBpc3N1ZXMuIFRoZXJl
Zm9yZSwgd2UgbmVlZCB0byBhYm9ydCBtaWNyb2NvZGUKLSAqIHVwZGF0ZSBwcm9jZXNzIGlmIHdl
IGhpdCBhbnkgb2YgdGhlc2UgbGV2ZWxzLgotICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50
IGZpbmFsX2xldmVsc1tdID0gewotICAgIDB4MDEwMDAwOTgsCi0gICAgMHgwMTAwMDA5ZiwKLSAg
ICAweDAxMDAwMGFmCi19OwotCi1zdGF0aWMgYm9vbF90IGNoZWNrX2ZpbmFsX3BhdGNoX2xldmVs
cyh1bnNpZ25lZCBpbnQgY3B1KQotewotICAgIC8qCi0gICAgICogQ2hlY2sgdGhlIGN1cnJlbnQg
cGF0Y2ggbGV2ZWxzIG9uIHRoZSBjcHUuIElmIHRoZXkgYXJlIGVxdWFsIHRvCi0gICAgICogYW55
IG9mIHRoZSAnZmluYWxfbGV2ZWxzJywgdGhlbiB3ZSBzaG91bGQgbm90IHVwZGF0ZSB0aGUgbWlj
cm9jb2RlCi0gICAgICogcGF0Y2ggb24gdGhlIGNwdSBhcyBzeXN0ZW0gd2lsbCBoYW5nIG90aGVy
d2lzZS4KLSAgICAgKi8KLSAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnBl
cl9jcHUoY3B1X3NpZywgY3B1KTsKLSAgICB1bnNpZ25lZCBpbnQgaTsKLQotICAgIGlmICggYm9v
dF9jcHVfZGF0YS54ODYgIT0gMHgxMCApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yICgg
aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZpbmFsX2xldmVscyk7IGkrKyApCi0gICAgICAgIGlmICgg
c2lnLT5yZXYgPT0gZmluYWxfbGV2ZWxzW2ldICkKLSAgICAgICAgICAgIHJldHVybiAxOwotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVx
dWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmc2l6ZSkKIHsKQEAgLTQzMywx
NCArNDM0LDYgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21p
Y3JvY29kZShjb25zdCB2b2lkICpidWYsCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAg
IGlmICggY2hlY2tfZmluYWxfcGF0Y2hfbGV2ZWxzKGNwdSkgKQotICAgIHsKLSAgICAgICAgcHJp
bnRrKFhFTkxPR19JTkZPCi0gICAgICAgICAgICAgICAibWljcm9jb2RlOiBDYW5ub3QgdXBkYXRl
IG1pY3JvY29kZSBwYXRjaCBvbiB0aGUgY3B1IGFzIHdlIGhpdCBhIGZpbmFsIGxldmVsXG4iKTsK
LSAgICAgICAgZXJyb3IgPSAtRVBFUk07Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLQogICAg
IG1jX2FtZCA9IHh6YWxsb2Moc3RydWN0IG1pY3JvY29kZV9hbWQpOwogICAgIGlmICggIW1jX2Ft
ZCApCiAgICAgewotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0
L3hlbi5naXQjc3RhZ2luZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:12:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:12:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdAb-0007Z8-4G; Wed, 01 Apr 2020 13:12:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdAZ-0007Yz-Tk
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:35 +0000
X-Inumbo-ID: 7419a818-741a-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7419a818-741a-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 13:12:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4rEN8jdX6RMZ71x78llMoy1JARz/FKZsZ55JeQ8lpOA=; b=H4GeLo9+/sY9xFqIsAOUcvGSS/
 t99Ind5H8tfop9k9IY6cCwiHCXrrW2qseDYDhcpeRJYZC90fTsywocGiGiVz19TDIiewRmWq1Io7M
 ZurRLb7hUv+tX4LDmsEnFZAPAZwk5WagpJgvZyurk33Np/+ijRy8t20roVRDnPPFbkIE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAZ-0002y8-9n
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAZ-0008Bg-90
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdAZ-0008Bg-90@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:12:35 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Don't use void * for
 microcode_patch->mpb
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGE4M2I5ZTcwODRjM2I3N2JlMTg2MmQ3MTIwM2YxY2E4OGZmY2Q4YjMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyNyAxMjo0ODowOCAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogRG9uJ3QgdXNlIHZvaWQgKiBmb3IgbWlj
cm9jb2RlX3BhdGNoLT5tcGIKICAgIAogICAgQWxsIGNvZGUgd29ya3MgZmluZSB3aXRoIGl0IGhh
dmluZyBpdHMgY29ycmVjdCB0eXBlLCBhbmQgaXQgZXZlbiBhbGxvd3MgdXMgdG8KICAgIGRyb3Ag
dHdvIGNhc3RzIGluIGEgcHJpbnRrKCkuCiAgICAKICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLgog
ICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy
aXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4K
LS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyB8IDUgKystLS0KIDEgZmlsZSBj
aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29k
ZS9hbWQuYwppbmRleCBmZDE4MDQxNjQyLi41NzVmODdiNDg3IDEwMDY0NAotLS0gYS94ZW4vYXJj
aC94ODYvY3B1L21pY3JvY29kZS9hbWQuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29k
ZS9hbWQuYwpAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgX19wYWNrZWQgbWljcm9jb2RlX2hlYWRl
cl9hbWQgewogI2RlZmluZSBVQ09ERV9VQ09ERV9UWVBFICAgICAgICAgICAweDAwMDAwMDAxCiAK
IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggewotICAgIHZvaWQgKm1wYjsKKyAgICBzdHJ1Y3QgbWlj
cm9jb2RlX2hlYWRlcl9hbWQgKm1wYjsKICAgICBzaXplX3QgbXBiX3NpemU7CiAgICAgc3RydWN0
IGVxdWl2X2NwdV9lbnRyeSAqZXF1aXZfY3B1X3RhYmxlOwogICAgIHNpemVfdCBlcXVpdl9jcHVf
dGFibGVfc2l6ZTsKQEAgLTMzMCw4ICszMzAsNyBAQCBzdGF0aWMgaW50IGdldF91Y29kZV9mcm9t
X2J1ZmZlcl9hbWQoCiAKICAgICBwcl9kZWJ1ZygibWljcm9jb2RlOiBDUFUlZCBzaXplICV6dSwg
YmxvY2sgc2l6ZSAldSBvZmZzZXQgJXp1IGVxdWl2SUQgJSN4IHJldiAlI3hcbiIsCiAgICAgICAg
ICAgICAgc21wX3Byb2Nlc3Nvcl9pZCgpLCBidWZzaXplLCBtcGJ1Zi0+bGVuLCAqb2Zmc2V0LAot
ICAgICAgICAgICAgICgoc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICopbWNfYW1kLT5tcGIp
LT5wcm9jZXNzb3JfcmV2X2lkLAotICAgICAgICAgICAgICgoc3RydWN0IG1pY3JvY29kZV9oZWFk
ZXJfYW1kICopbWNfYW1kLT5tcGIpLT5wYXRjaF9pZCk7CisgICAgICAgICAgICAgbWNfYW1kLT5t
cGItPnByb2Nlc3Nvcl9yZXZfaWQsIG1jX2FtZC0+bXBiLT5wYXRjaF9pZCk7CiAKICAgICAqb2Zm
c2V0ICs9IG1wYnVmLT5sZW4gKyBTRUNUSU9OX0hEUl9TSVpFOwogCi0tCmdlbmVyYXRlZCBieSBn
aXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxp
bmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMu
eGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:12:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:12:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdAl-0007aD-6E; Wed, 01 Apr 2020 13:12:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdAk-0007a6-1b
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:46 +0000
X-Inumbo-ID: 7a1b9802-741a-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7a1b9802-741a-11ea-83d8-bc764e2007e4;
 Wed, 01 Apr 2020 13:12:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kdPwDoWtTPgfhLi4oEc1G7FwhZN88z2siRIsHvth7qg=; b=imf8Yi7Xx/3W4li8lb02UjT6Ms
 kz+LPD4X1XAr95+elJFyw1SI1k8Ucc6RpgCngcEnrz3Zre40MeIDdqXgphtgS1jvF9mllIvzISikb
 51J/sGfJwp9+hnW9+tNl0sdUDB2Oybf+4F0B5gfM9oVmWYltv3qx3WngmfCTLA2/OSgs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAj-0002yH-CE
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAj-0008CU-BP
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdAj-0008CU-BP@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:12:45 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Collect CPUID.1.EAX in
 collect_cpu_info()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGMxOGU3NjFjMTM3NWM1ODc4MWFlNTU5ZDVmOTNiMTMyOWRhNmUzYTEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyNyAxMzoyMDoxMiAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogQ29sbGVjdCBDUFVJRC4xLkVBWCBpbiBj
b2xsZWN0X2NwdV9pbmZvKCkKICAgIAogICAgLi4uIHJhdGhlciB0aGFuIGNvbGxlY3RpbmcgaXQg
cmVwZWF0ZWRseSBpbiBtaWNyb2NvZGVfZml0cygpLiAgVGhpcyBicmluZ3MgdGhlCiAgICBiZWhh
dmlvdXIgaW4gbGluZSB3aXRoIHRoZSBJbnRlbCBzaWRlLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5
OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQt
Ynk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1
L21pY3JvY29kZS9hbWQuYyB8IDExICsrKy0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L21p
Y3JvY29kZS5oICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgOSBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQu
YyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCmluZGV4IDU3NWY4N2I0ODcuLjNi
NzNhZjlkMjkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCisr
KyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCkBAIC03OSw2ICs3OSw3IEBAIHN0
YXRpYyBpbnQgY29sbGVjdF9jcHVfaW5mbyhzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqY3NpZykKIHsK
ICAgICBtZW1zZXQoY3NpZywgMCwgc2l6ZW9mKCpjc2lnKSk7CiAKKyAgICBjc2lnLT5zaWcgPSBj
cHVpZF9lYXgoMSk7CiAgICAgcmRtc3JsKE1TUl9BTURfUEFUQ0hMRVZFTCwgY3NpZy0+cmV2KTsK
IAogICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIGNvbGxlY3RfY3B1X2luZm86IHBhdGNo
X2lkPSUjeFxuIiwKQEAgLTE3NywxMiArMTc4LDkgQEAgc3RhdGljIGVudW0gbWljcm9jb2RlX21h
dGNoX3Jlc3VsdCBtaWNyb2NvZGVfZml0cygKICAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVy
ZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9j
b2RlX2hlYWRlcl9hbWQgKm1jX2hlYWRlciA9IG1jX2FtZC0+bXBiOwogICAgIGNvbnN0IHN0cnVj
dCBlcXVpdl9jcHVfZW50cnkgKmVxdWl2X2NwdV90YWJsZSA9IG1jX2FtZC0+ZXF1aXZfY3B1X3Rh
YmxlOwotICAgIHVuc2lnbmVkIGludCBjdXJyZW50X2NwdV9pZDsKICAgICB1bnNpZ25lZCBpbnQg
ZXF1aXZfY3B1X2lkOwogCi0gICAgY3VycmVudF9jcHVfaWQgPSBjcHVpZF9lYXgoMHgwMDAwMDAw
MSk7Ci0KLSAgICBpZiAoICFmaW5kX2VxdWl2X2NwdV9pZChlcXVpdl9jcHVfdGFibGUsIGN1cnJl
bnRfY3B1X2lkLCAmZXF1aXZfY3B1X2lkKSApCisgICAgaWYgKCAhZmluZF9lcXVpdl9jcHVfaWQo
ZXF1aXZfY3B1X3RhYmxlLCBzaWctPnNpZywgJmVxdWl2X2NwdV9pZCkgKQogICAgICAgICByZXR1
cm4gTUlTX1VDT0RFOwogCiAgICAgaWYgKCAobWNfaGVhZGVyLT5wcm9jZXNzb3JfcmV2X2lkKSAh
PSBlcXVpdl9jcHVfaWQgKQpAQCAtNDE5LDEzICs0MTcsMTAgQEAgc3RhdGljIHN0cnVjdCBtaWNy
b2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsCiAgICAg
c3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2ggPSBOVUxMOwogICAgIHNpemVfdCBvZmZzZXQg
PSAwLCBzYXZlZF9zaXplID0gMDsKICAgICBpbnQgZXJyb3IgPSAwOwotICAgIHVuc2lnbmVkIGlu
dCBjdXJyZW50X2NwdV9pZDsKICAgICB1bnNpZ25lZCBpbnQgZXF1aXZfY3B1X2lkOwogICAgIHVu
c2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgY29uc3Qgc3RydWN0IGNw
dV9zaWduYXR1cmUgKnNpZyA9ICZwZXJfY3B1KGNwdV9zaWcsIGNwdSk7CiAKLSAgICBjdXJyZW50
X2NwdV9pZCA9IGNwdWlkX2VheCgweDAwMDAwMDAxKTsKLQogICAgIGlmICggYnVmc2l6ZSA8IDQg
fHwgKihjb25zdCB1aW50MzJfdCAqKWJ1ZiAhPSBVQ09ERV9NQUdJQyApCiAgICAgewogICAgICAg
ICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogV3JvbmcgbWljcm9jb2RlIHBhdGNoIGZpbGUg
bWFnaWNcbiIpOwpAQCAtNDU1LDcgKzQ1MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3Bh
dGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIGZpbmRfZXF1aXZfY3B1X2lkKG1jX2Ft
ZC0+ZXF1aXZfY3B1X3RhYmxlLCBjdXJyZW50X2NwdV9pZCwKKyAgICAgICAgaWYgKCBmaW5kX2Vx
dWl2X2NwdV9pZChtY19hbWQtPmVxdWl2X2NwdV90YWJsZSwgc2lnLT5zaWcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmVxdWl2X2NwdV9pZCkgKQogICAgICAgICAgICAgYnJlYWs7
CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbWljcm9jb2RlLmggYi94ZW4vaW5j
bHVkZS9hc20teDg2L21pY3JvY29kZS5oCmluZGV4IDNhOGU0ZTgyMjEuLmNiYmUyOGNiNDUgMTAw
NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbWljcm9jb2RlLmgKKysrIGIveGVuL2luY2x1
ZGUvYXNtLXg4Ni9taWNyb2NvZGUuaApAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMv
eGVuLmg+CiAKIHN0cnVjdCBjcHVfc2lnbmF0dXJlIHsKLSAgICAvKiBDUFUgc2lnbmF0dXJlIChD
UFVJRC4xLkVBWCkuICBPbmx5IHdyaXR0ZW4gb24gSW50ZWwuICovCisgICAgLyogQ1BVIHNpZ25h
dHVyZSAoQ1BVSUQuMS5FQVgpLiAqLwogICAgIHVuc2lnbmVkIGludCBzaWc7CiAKICAgICAvKiBQ
bGF0Zm9ybSBGbGFncy4gIE9ubHkgYXBwbGljYWJsZSB0byBJbnRlbC4gKi8KLS0KZ2VuZXJhdGVk
IGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cg
bWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:12:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:12:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdAv-0007bE-7r; Wed, 01 Apr 2020 13:12:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdAu-0007b5-Cm
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:56 +0000
X-Inumbo-ID: 801fa784-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 801fa784-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:12:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=J80JXBpzYWVBCaCabf7LL9JBnMsEBtSKC0QeKyoywbU=; b=C0DG8T9byJLUJczKqueuBrYIfJ
 Oymmfl4khAU7i1bUpi3JjW10iZaUqkOd86YqRZ04zZCN1apinAxAe3Ml+wWWvbEopTgW/PFjXnsOm
 MYANoFUTNPDfO1As2bKqIpGea6HoqLIWJs2fTIRao0sF3mHDXEgFE3/1JXYNwpjkirvg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAt-0002yQ-Et
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdAt-0008D0-Dr
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:12:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdAt-0008D0-Dr@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:12:55 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Overhaul the
 equivalent cpu table handling completely
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGY2ZmE2NWFkOWJiMmJiNzg2ODNmNjllZWNlYjg4ZGQ1MTNiZDQ5ZWEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyNyAxNjo0ODoxNiAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogT3ZlcmhhdWwgdGhlIGVxdWl2YWxlbnQg
Y3B1IHRhYmxlIGhhbmRsaW5nIGNvbXBsZXRlbHkKICAgIAogICAgV2UgY3VycmVudGx5IGNvcHkg
dGhlIGVudGlyZSBlcXVpdmFsZW5jeSB0YWJsZSwgYW5kIHRoZSBzaW5nbGUgY29ycmVjdAogICAg
bWljcm9jb2RlLiAgVGhpcyBpcyBub3Qgc2FmZSB0byBoZXRlcm9nZW5lb3VzIHNjZW5hcmlvcywg
YW5kIGFzIFhlbiBkb2Vzbid0CiAgICBzdXBwb3J0IHN1Y2ggc2l0dWF0aW9ucyB0byBiZWdpbiB3
aXRoLCBjYW4gYmUgdXNlZCB0byBzaW1wbGlmeSB0aGluZ3MgZnVydGhlci4KICAgIAogICAgVGhl
IENQVUlELjEuRUFYID0+IHByb2Nlc3Nvcl9yZXZfaWQgbWFwcGluZyBpcyBmaXhlZCBmb3IgYW4g
aW5kaXZpZHVhbCBwYXJ0LgogICAgV2UgY2FuIGNhY2hlIHRoZSBzaW5nbGUgYXBwcm9wcmlhdGUg
ZW50cnkgb24gZmlyc3QgZGlzY292ZXJ5LCBhbmQgZm9yZ28KICAgIGR1cGxpY2F0aW5nIHRoZSBl
bnRpcmUgdGFibGUuCiAgICAKICAgIEFsdGVyIGluc3RhbGxfZXF1aXZfY3B1X3RhYmxlKCkgdG8g
YmUgc2Nhbl9lcXVpdl9jcHVfdGFibGUoKSB3aGljaCBpcwogICAgcmVzcG9uc2libGUgZm9yIGNo
ZWNraW5nIHRoZSBlcXVpdmFsZW5jeSB0YWJsZSBhbmQgY2FjaGluZyBhcHByb3ByaWF0ZQogICAg
ZGV0YWlscy4gIEl0IG5vdyBoYXMgYSBjaGVjayBmb3IgZmluZGluZyBhIGRpZmZlcmVudCBtYXBw
aW5nICh3aGljaCBpbmRpY2F0ZXMKICAgIHRoYXQgb25lIG9mIHRoZSB0YWJsZXMgd2UndmUgc2Vl
biBpcyBkZWZpbml0ZWx5IHdyb25nKS4KICAgIAogICAgQSByZXR1cm4gdmFsdWUgb2YgLUVTUkNI
IGlzIG5vdyB1c2VkIHRvIHNpZ25pZnkgImV2ZXJ5dGhpbmcgZmluZSwgYnV0IG5vdGhpbmcKICAg
IGFwcGxpY2FibGUgZm9yIHRoZSBjdXJyZW50IENQVSIsIHdoaWNoIGlzIHVzZWQgdG8gc2VsZWN0
IHRoZQogICAgY29udGFpbmVyX2Zhc3RfZm9yd2FyZCgpIHBhdGguCiAgICAKICAgIERyb3AgdGhl
IHByaW50aygpLCBhcyBlYWNoIGFwcGxpY2FibGUgZXJyb3IgcGF0aCBpbiBzY2FuX2VxdWl2X2Nw
dV90YWJsZSgpCiAgICBhbHJlYWR5IHByaW50cyBkaWFnbm9zdGljcy4KICAgIAogICAgU2lnbmVk
LW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KICAgIFJl
dmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgYi94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwppbmRleCAzYjczYWY5ZDI5Li45NDE3ZmYy
ZDNhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYworKysgYi94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpAQCAtNjEsOCArNjEsNiBAQCBzdHJ1Y3Qg
X19wYWNrZWQgbWljcm9jb2RlX2hlYWRlcl9hbWQgewogc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7
CiAgICAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICptcGI7CiAgICAgc2l6ZV90IG1wYl9z
aXplOwotICAgIHN0cnVjdCBlcXVpdl9jcHVfZW50cnkgKmVxdWl2X2NwdV90YWJsZTsKLSAgICBz
aXplX3QgZXF1aXZfY3B1X3RhYmxlX3NpemU7CiB9OwogCiAvKiBUZW1wb3JhcnksIHVudGlsIHRo
ZSBtaWNyb2NvZGVfKiBzdHJ1Y3R1cmUgYXJlIGRpc2VudGFuZ2xlZC4gKi8KQEAgLTc0LDYgKzcy
LDMxIEBAIHN0cnVjdCBtcGJoZHIgewogICAgIHVpbnQ4X3QgZGF0YVtdOwogfTsKIAorLyoKKyAq
IE1pY3JvY29kZSB1cGRhdGVzIGZvciBkaWZmZXJlbnQgQ1BVcyBhcmUgZGlzdGluZ3Vpc2hlZCBi
eSB0aGVpcgorICogcHJvY2Vzc29yX3Jldl9pZCBpbiB0aGUgaGVhZGVyLiAgVGhpcyBkZW5vdGVz
IHRoZSBmb3JtYXQgb2YgdGhlIGludGVybmFscworICogb2YgdGhlIG1pY3JvY29kZSBlbmdpbmUs
IGFuZCBpcyBmaXhlZCBmb3IgYW4gaW5kaXZpZHVhbCBDUFUuCisgKgorICogVGhlcmUgaXMgYSBt
YXBwaW5nIGZyb20gdGhlIENQVSBzaWduYXR1cmUgKENQVUlELjEuRUFYIC0KKyAqIGZhbWlseS9t
b2RlbC9zdGVwcGluZykgdG8gdGhlICJlcXVpdmFsZW50IENQVSBpZGVudGlmaWVyIiB3aGljaCBp
cworICogc2ltaWxhcmx5IGZpeGVkLiAgSW4gc29tZSBjYXNlcywgbXVsdGlwbGUgZGlmZmVyZW50
IENQVSBzaWduYXR1cmVzIG1hcCB0bworICogdGhlIHNhbWUgZXF1aXZfaWQgZm9yIHByb2Nlc3Nv
ciBsaW5lcyB3aGljaCBzaGFyZSBpZGVudGljYWwgbWljcm9jb2RlCisgKiBmYWNpbGl0aWVzLgor
ICoKKyAqIFRoaXMgbWFwcGluZyBjYW4ndCBiZSBjYWxjdWxhdGVkIGluIHRoZSBnZW5lcmFsIGNh
c2UsIGJ1dCBpcyBwcm92aWRlZCBpbgorICogdGhlIG1pY3JvY29kZSBjb250YWluZXIsIHNvIHRo
ZSBjb3JyZWN0IHBpZWNlIG9mIG1pY3JvY29kZSBmb3IgdGhlIENQVSBjYW4KKyAqIGJlIGlkZW50
aWZpZWQuICBXZSBjYWNoZSBpdCB0aGUgZmlyc3QgdGltZSB3ZSBlbmNvdW50ZXIgdGhlIGNvcnJl
Y3QgbWFwcGluZworICogZm9yIHRoaXMgc3lzdGVtLgorICoKKyAqIE5vdGU6IGZvciBub3csIHdl
IGFzc3VtZSBhIGZ1bGx5IGhvbW9nZW5lb3VzIHNldHVwLCBtZWFuaW5nIHRoYXQgdGhlcmUgaXMK
KyAqIGV4YWN0bHkgb25lIGVxdWl2X2lkIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgZm9yIG1pY3Jv
Y29kZSBibG9iCisgKiBpZGVudGlmaWNhdGlvbi4gIFRoaXMgbWF5IG5lZWQgcmV2aXNpdGluZyBp
biBkdWUgY291cnNlLgorICovCitzdGF0aWMgc3RydWN0IHsKKyAgICB1aW50MzJfdCBzaWc7Cisg
ICAgdWludDE2X3QgaWQ7Cit9IGVxdWl2IF9fcmVhZF9tb3N0bHk7CisKIC8qIFNlZSBjb21tZW50
IGluIHN0YXJ0X3VwZGF0ZSgpIGZvciBjYXNlcyB3aGVuIHRoaXMgcm91dGluZSBmYWlscyAqLwog
c3RhdGljIGludCBjb2xsZWN0X2NwdV9pbmZvKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQog
ewpAQCAtMTUwLDQwICsxNzMsMTUgQEAgc3RhdGljIGJvb2wgY2hlY2tfZmluYWxfcGF0Y2hfbGV2
ZWxzKGNvbnN0IHN0cnVjdCBjcHVfc2lnbmF0dXJlICpzaWcpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGF0aWMgYm9vbF90IGZpbmRfZXF1aXZfY3B1X2lkKGNvbnN0IHN0cnVjdCBlcXVpdl9j
cHVfZW50cnkgKmVxdWl2X2NwdV90YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGN1cnJlbnRfY3B1X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgKmVxdWl2X2NwdV9pZCkKLXsKLSAgICB1bnNpZ25lZCBpbnQg
aTsKLQotICAgIGlmICggIWVxdWl2X2NwdV90YWJsZSApCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgZm9yICggaSA9IDA7IGVxdWl2X2NwdV90YWJsZVtpXS5pbnN0YWxsZWRfY3B1ICE9IDA7IGkr
KyApCi0gICAgewotICAgICAgICBpZiAoIGN1cnJlbnRfY3B1X2lkID09IGVxdWl2X2NwdV90YWJs
ZVtpXS5pbnN0YWxsZWRfY3B1ICkKLSAgICAgICAgewotICAgICAgICAgICAgKmVxdWl2X2NwdV9p
ZCA9IGVxdWl2X2NwdV90YWJsZVtpXS5lcXVpdl9jcHUgJiAweGZmZmY7Ci0gICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMg
ZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29kZV9maXRzKAogICAgIGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfYW1kICptY19hbWQpCiB7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNt
cF9wcm9jZXNzb3JfaWQoKTsKICAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0g
JnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRl
cl9hbWQgKm1jX2hlYWRlciA9IG1jX2FtZC0+bXBiOwotICAgIGNvbnN0IHN0cnVjdCBlcXVpdl9j
cHVfZW50cnkgKmVxdWl2X2NwdV90YWJsZSA9IG1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxlOwotICAg
IHVuc2lnbmVkIGludCBlcXVpdl9jcHVfaWQ7CiAKLSAgICBpZiAoICFmaW5kX2VxdWl2X2NwdV9p
ZChlcXVpdl9jcHVfdGFibGUsIHNpZy0+c2lnLCAmZXF1aXZfY3B1X2lkKSApCi0gICAgICAgIHJl
dHVybiBNSVNfVUNPREU7Ci0KLSAgICBpZiAoIChtY19oZWFkZXItPnByb2Nlc3Nvcl9yZXZfaWQp
ICE9IGVxdWl2X2NwdV9pZCApCisgICAgaWYgKCBlcXVpdi5zaWcgIT0gc2lnLT5zaWcgfHwKKyAg
ICAgICAgIGVxdWl2LmlkICAhPSBtY19oZWFkZXItPnByb2Nlc3Nvcl9yZXZfaWQgKQogICAgICAg
ICByZXR1cm4gTUlTX1VDT0RFOwogCiAgICAgaWYgKCAhdmVyaWZ5X3BhdGNoX3NpemUobWNfYW1k
LT5tcGJfc2l6ZSkgKQpAQCAtMjEzLDcgKzIxMSw2IEBAIHN0YXRpYyB2b2lkIGZyZWVfcGF0Y2go
c3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWNfYW1kKQogewogICAgIGlmICggbWNfYW1kICkKICAg
ICB7Ci0gICAgICAgIHhmcmVlKG1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxlKTsKICAgICAgICAgeGZy
ZWUobWNfYW1kLT5tcGIpOwogICAgICAgICB4ZnJlZShtY19hbWQpOwogICAgIH0KQEAgLTMzNSwx
NCArMzMyLDE1IEBAIHN0YXRpYyBpbnQgZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgKICAgICBy
ZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpbnN0YWxsX2VxdWl2X2NwdV90YWJsZSgKLSAgICBz
dHJ1Y3QgbWljcm9jb2RlX2FtZCAqbWNfYW1kLAorc3RhdGljIGludCBzY2FuX2VxdWl2X2NwdV90
YWJsZSgKICAgICBjb25zdCB2b2lkICpkYXRhLAogICAgIHNpemVfdCBzaXplX2xlZnQsCiAgICAg
c2l6ZV90ICpvZmZzZXQpCiB7CisgICAgY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZyA9
ICZ0aGlzX2NwdShjcHVfc2lnKTsKICAgICBjb25zdCBzdHJ1Y3QgbXBiaGRyICptcGJ1ZjsKICAg
ICBjb25zdCBzdHJ1Y3QgZXF1aXZfY3B1X2VudHJ5ICplcTsKKyAgICB1bnNpZ25lZCBpbnQgaSwg
bnI7CiAKICAgICBpZiAoIHNpemVfbGVmdCA8IChzaXplb2YoKm1wYnVmKSArIDQpIHx8CiAgICAg
ICAgICAobXBidWYgPSBkYXRhICsgKm9mZnNldCArIDQsCkBAIC0zNjIsMTkgKzM2MCw0NSBAQCBz
dGF0aWMgaW50IGluc3RhbGxfZXF1aXZfY3B1X3RhYmxlKAogCiAgICAgaWYgKCBtcGJ1Zi0+bGVu
ID09IDAgfHwgbXBidWYtPmxlbiAlIHNpemVvZigqZXEpIHx8CiAgICAgICAgICAoZXEgPSAoY29u
c3Qgdm9pZCAqKW1wYnVmLT5kYXRhLAotICAgICAgICAgIGVxWyhtcGJ1Zi0+bGVuIC8gc2l6ZW9m
KCplcSkpIC0gMV0uaW5zdGFsbGVkX2NwdSkgKQorICAgICAgICAgIG5yID0gbXBidWYtPmxlbiAv
IHNpemVvZigqZXEpLAorICAgICAgICAgIGVxW25yIC0gMV0uaW5zdGFsbGVkX2NwdSkgKQogICAg
IHsKICAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IFdyb25nIG1pY3JvY29kZSBl
cXVpdmFsZW50IGNwdSB0YWJsZSBsZW5ndGhcbiIpOwogICAgICAgICByZXR1cm4gLUVJTlZBTDsK
ICAgICB9CiAKLSAgICBtY19hbWQtPmVxdWl2X2NwdV90YWJsZSA9IHhtZW1kdXBfYnl0ZXMobXBi
dWYtPmRhdGEsIG1wYnVmLT5sZW4pOwotICAgIGlmICggIW1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxl
ICkKLSAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgLyogU2VhcmNoIHRoZSBlcXVpdl9jcHVf
dGFibGUgZm9yIHRoZSBjdXJyZW50IENQVS4gKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yICYm
IGVxW2ldLmluc3RhbGxlZF9jcHU7ICsraSApCisgICAgeworICAgICAgICBpZiAoIGVxW2ldLmlu
c3RhbGxlZF9jcHUgIT0gc2lnLT5zaWcgKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBt
Y19hbWQtPmVxdWl2X2NwdV90YWJsZV9zaXplID0gbXBidWYtPmxlbjsKKyAgICAgICAgaWYgKCAh
ZXF1aXYuc2lnICkgLyogQ2FjaGUgZGV0YWlscyBvbiBmaXJzdCBmaW5kLiAqLworICAgICAgICB7
CisgICAgICAgICAgICBlcXVpdi5zaWcgPSBzaWctPnNpZzsKKyAgICAgICAgICAgIGVxdWl2Lmlk
ICA9IGVxW2ldLmVxdWl2X2NwdTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAK
LSAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCBlcXVpdi5zaWcgIT0gc2lnLT5zaWcgfHwgZXF1
aXYuaWQgIT0gZXFbaV0uZXF1aXZfY3B1ICkKKyAgICAgICAgeworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAqIFRoaXMgY2FuIG9ubHkgb2NjdXIgaWYgdHdvIGVxdWl2IHRhYmxlcyBoYXZl
IGJlZW4gc2VlbiB3aXRoCisgICAgICAgICAgICAgKiBkaWZmZXJlbnQgbWFwcGluZ3MgZm9yIHRo
ZSBzYW1lIENQVS4gIFRoZSBtYXBwaW5nIGlzIGZpeGVkLCBzbworICAgICAgICAgICAgICogb25l
IG9mIHRoZSB0YWJsZXMgaXMgd3JvbmcuICBBcyB3ZSBjYW4ndCBjYWxjdWxhdGUgdGhlIG1hcHBp
bmcsCisgICAgICAgICAgICAgKiB3ZSB0cnVzdGVkIHRoZSBmaXJzdCB0YWJsZSB3ZSBzYXcuCisg
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSCisgICAgICAgICAg
ICAgICAgICAgIm1pY3JvY29kZTogRXF1aXYgbWlzbWF0Y2g6IGNwdSAlMDh4LCBnb3QgJTA0eCwg
Y2FjaGVkICUwNHhcbiIsCisgICAgICAgICAgICAgICAgICAgc2lnLT5zaWcsIGVxW2ldLmVxdWl2
X2NwdSwgZXF1aXYuaWQpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBlcXVpdl9jcHVfdGFibGUgd2Fz
IGZpbmUsIGJ1dCBub3RoaW5nIGZvdW5kIGZvciB0aGUgY3VycmVudCBDUFUuICovCisgICAgcmV0
dXJuIC1FU1JDSDsKIH0KIAogc3RhdGljIGludCBjb250YWluZXJfZmFzdF9mb3J3YXJkKGNvbnN0
IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplX2xlZnQsIHNpemVfdCAqb2Zmc2V0KQpAQCAtNDE3LDcg
KzQ0MSw2IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNy
b2NvZGUoY29uc3Qgdm9pZCAqYnVmLAogICAgIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNo
ID0gTlVMTDsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMCwgc2F2ZWRfc2l6ZSA9IDA7CiAgICAgaW50
IGVycm9yID0gMDsKLSAgICB1bnNpZ25lZCBpbnQgZXF1aXZfY3B1X2lkOwogICAgIHVuc2lnbmVk
IGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgY29uc3Qgc3RydWN0IGNwdV9zaWdu
YXR1cmUgKnNpZyA9ICZwZXJfY3B1KGNwdV9zaWcsIGNwdSk7CiAKQEAgLTQ0MywxNSArNDY2LDkg
QEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShj
b25zdCB2b2lkICpidWYsCiAgICAgICovCiAgICAgd2hpbGUgKCBvZmZzZXQgPCBidWZzaXplICkK
ICAgICB7Ci0gICAgICAgIGVycm9yID0gaW5zdGFsbF9lcXVpdl9jcHVfdGFibGUobWNfYW1kLCBi
dWYsIGJ1ZnNpemUgLSBvZmZzZXQsICZvZmZzZXQpOwotICAgICAgICBpZiAoIGVycm9yICkKLSAg
ICAgICAgewotICAgICAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IGluc3RhbGxp
bmcgZXF1aXZhbGVudCBjcHUgdGFibGUgZmFpbGVkXG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9CisgICAgICAgIGVycm9yID0gc2Nhbl9lcXVpdl9jcHVfdGFibGUoYnVmLCBidWZz
aXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKIAotICAgICAgICBpZiAoIGZpbmRfZXF1aXZfY3B1X2lk
KG1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxlLCBzaWctPnNpZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmZXF1aXZfY3B1X2lkKSApCisgICAgICAgIGlmICggIWVycm9yIHx8IGVycm9y
ICE9IC1FU1JDSCApCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBlcnJvciA9IGNvbnRh
aW5lcl9mYXN0X2ZvcndhcmQoYnVmLCBidWZzaXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKQEAgLTQ3
OCw3ICs0OTUsNiBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3Rf
bWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgaWYgKCBlcnJvciA9PSAtRU5PREFU
QSApCiAgICAgICAgICAgICBlcnJvciA9IDA7CiAKLSAgICAgICAgeGZyZWUobWNfYW1kLT5lcXVp
dl9jcHVfdGFibGUpOwogICAgICAgICB4ZnJlZShtY19hbWQpOwogICAgICAgICBnb3RvIG91dDsK
ICAgICB9Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVu
LmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:13:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:13:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdB5-0007cD-9l; Wed, 01 Apr 2020 13:13:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdB4-0007c2-Fd
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:06 +0000
X-Inumbo-ID: 862adc7a-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 862adc7a-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:13:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jNSzyIIyoS9lsQ/cMAORRvIUuYI6d5sNeuu197Of3Pk=; b=1FLA+/R4VK+60XgblKqVrNEA50
 4CjhgFLveOJBH5BLKOuC1hInfLSk6aoYO0Unh1zpxJPfbEeqSel48OVAITOJOxelpg+WgY6Ylz9du
 YrKFl/JZRU+B+GO6n72WusEKuDBkiFppVdlCZwlapiWiMeEJ5/T0YU1TqGxcVjOeXc8M=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdB3-0002ym-Ji
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdB3-0008EB-IK
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdB3-0008EB-IK@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:13:05 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Move
 verify_patch_size() into get_ucode_from_buffer_amd()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDk4ZWIwYzk5NGNhODI4ZGE3ZjM4ZjBlZTA0YzU3YTBhZTI0MDY4YTUKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxODoxMDo1MCAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogTW92ZSB2ZXJpZnlfcGF0Y2hfc2l6ZSgp
IGludG8gZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgpCiAgICAKICAgIFdlIG9ubHkgc3Rhc2gg
dGhlIG1pY3JvY29kZSBibG9iIHNpemUgc28gaXQgY2FuIGJlIGF1ZGl0ZWQgaW4KICAgIG1pY3Jv
Y29kZV9maXRzKCkuICBIb3dldmVyLCB0aGUgcGF0Y2ggc2l6ZSBjaGVjayBkZXBlbmRzIG9ubHkg
b24gdGhlIENQVQogICAgZmFtaWx5LgogICAgCiAgICBNb3ZlIHRoZSBjaGVjayBlYXJsaWVyIHRv
IHdoZW4gd2UgYXJlIHBhcnNpbmcgdGhlIGNvbnRhaW5lciwgd2hpY2ggYXZvaWRzCiAgICBjYWNo
aW5nIGJhZCBtaWNyb2NvZGUgaW4gdGhlIGZpcnN0IHBsYWNlLCBhbmQgYWxsb3dzIHVzIHRvIGF2
b2lkIHN0b3JpbmcgdGhlCiAgICBzaXplIGF0IGFsbC4KICAgIAogICAgU2lnbmVkLW9mZi1ieTog
QW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KICAgIFJldmlld2VkLWJ5
OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9t
aWNyb2NvZGUvYW1kLmMgfCAxOCArKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3
IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL2FtZC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMK
aW5kZXggOTQxN2ZmMmQzYS4uOWVhOTJmNjAwNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvYW1kLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMK
QEAgLTYwLDcgKzYwLDYgQEAgc3RydWN0IF9fcGFja2VkIG1pY3JvY29kZV9oZWFkZXJfYW1kIHsK
IAogc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7CiAgICAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJf
YW1kICptcGI7Ci0gICAgc2l6ZV90IG1wYl9zaXplOwogfTsKIAogLyogVGVtcG9yYXJ5LCB1bnRp
bCB0aGUgbWljcm9jb2RlXyogc3RydWN0dXJlIGFyZSBkaXNlbnRhbmdsZWQuICovCkBAIC0xODQs
MTIgKzE4Myw2IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgbWljcm9jb2Rl
X2ZpdHMoCiAgICAgICAgICBlcXVpdi5pZCAgIT0gbWNfaGVhZGVyLT5wcm9jZXNzb3JfcmV2X2lk
ICkKICAgICAgICAgcmV0dXJuIE1JU19VQ09ERTsKIAotICAgIGlmICggIXZlcmlmeV9wYXRjaF9z
aXplKG1jX2FtZC0+bXBiX3NpemUpICkKLSAgICB7Ci0gICAgICAgIHByX2RlYnVnKCJtaWNyb2Nv
ZGU6IHBhdGNoIHNpemUgbWlzbWF0Y2hcbiIpOwotICAgICAgICByZXR1cm4gTUlTX1VDT0RFOwot
ICAgIH0KLQogICAgIGlmICggbWNfaGVhZGVyLT5wYXRjaF9pZCA8PSBzaWctPnJldiApCiAgICAg
ewogICAgICAgICBwcl9kZWJ1ZygibWljcm9jb2RlOiBwYXRjaCBpcyBhbHJlYWR5IGF0IHJlcXVp
cmVkIGxldmVsIG9yIGdyZWF0ZXIuXG4iKTsKQEAgLTMxOCwxMCArMzExLDE1IEBAIHN0YXRpYyBp
bnQgZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAg
ICAgfQogCisgICAgaWYgKCAhdmVyaWZ5X3BhdGNoX3NpemUobXBidWYtPmxlbikgKQorICAgIHsK
KyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIm1pY3JvY29kZTogcGF0Y2ggc2l6ZSBtaXNtYXRj
aFxuIik7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKwogICAgIG1jX2FtZC0+bXBi
ID0geG1lbWR1cF9ieXRlcyhtcGJ1Zi0+ZGF0YSwgbXBidWYtPmxlbik7CiAgICAgaWYgKCAhbWNf
YW1kLT5tcGIgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICBtY19hbWQtPm1wYl9zaXpl
ID0gbXBidWYtPmxlbjsKIAogICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIHNpemUgJXp1
LCBibG9jayBzaXplICV1IG9mZnNldCAlenUgZXF1aXZJRCAlI3ggcmV2ICUjeFxuIiwKICAgICAg
ICAgICAgICBzbXBfcHJvY2Vzc29yX2lkKCksIGJ1ZnNpemUsIG1wYnVmLT5sZW4sICpvZmZzZXQs
CkBAIC00MzksNyArNDM3LDcgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9y
ZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsCiAgICAgc3RydWN0IG1pY3JvY29kZV9h
bWQgKm1jX2FtZDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKnNhdmVkID0gTlVM
TDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IE5VTEw7Ci0gICAgc2l6ZV90
IG9mZnNldCA9IDAsIHNhdmVkX3NpemUgPSAwOworICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAg
IGludCBlcnJvciA9IDA7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQo
KTsKICAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3Np
ZywgY3B1KTsKQEAgLTUxNSw3ICs1MTMsNiBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRj
aCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgewogICAg
ICAgICAgICAgeGZyZWUoc2F2ZWQpOwogICAgICAgICAgICAgc2F2ZWQgPSBtY19hbWQtPm1wYjsK
LSAgICAgICAgICAgIHNhdmVkX3NpemUgPSBtY19hbWQtPm1wYl9zaXplOwogICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtNTU0LDcgKzU1MSw2IEBAIHN0YXRpYyBzdHJ1Y3Qg
bWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAog
ICAgIGlmICggc2F2ZWQgKQogICAgIHsKICAgICAgICAgbWNfYW1kLT5tcGIgPSBzYXZlZDsKLSAg
ICAgICAgbWNfYW1kLT5tcGJfc2l6ZSA9IHNhdmVkX3NpemU7CiAgICAgICAgIHBhdGNoID0gbWNf
YW1kOwogICAgIH0KICAgICBlbHNlCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9o
b21lL3hlbi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdl
bG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVu
LWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:13:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:13:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdBF-0007dN-DZ; Wed, 01 Apr 2020 13:13:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdBE-0007dE-Cv
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:16 +0000
X-Inumbo-ID: 8c2c4fbe-741a-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8c2c4fbe-741a-11ea-9e09-bc764e2007e4;
 Wed, 01 Apr 2020 13:13:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=BA/JwZF5MVLV8J0MGbeF1x87rre/TCsVHxNo0MmBTn8=; b=3qNiJ42MtxvyG8EAUhwtlyqfa3
 MVz2CVo2Oe8OnHLrH8O69aDOAdSgHICq3TAA7dX+PaTlQdHrcLEFd92h8hLXbHktOxVhinNjrWwhr
 5581DYUgrzTNEI3G4sxIzeC9yEW7VAsowr5rWruJ7wDU+HYGCBfgayqXqvZoyCR+i93Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBD-0002yw-MF
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBD-0008Em-LM
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdBD-0008Em-LM@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:13:15 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Alter API for
 microcode_fits()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGU2YWM0ZDFiNDU4NDU4MTI1NWJiMWI0YmRmOThjYTQ2OWM0ZjE4MzcKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxNzo0NDoxNyAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogQWx0ZXIgQVBJIGZvciBtaWNyb2NvZGVf
Zml0cygpCiAgICAKICAgIEFsdGhvdWdoIGl0IGlzIGxvZ2ljYWxseSBhIHN0ZXAgaW4gdGhlIHdy
b25nIGRpcmVjdGlvbiBvdmVyYWxsLCBpdCBzaW1wbGlmaWVzCiAgICB0aGUgcmVhcnJhbmdpbmcg
b2YgY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkgc3Vic3RhbnRpYWxseSBmb3IgbWljcm9jb2RlX2Zp
dHMoKQogICAgdG8gdGFrZSBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgZGlyZWN0bHksIGFu
ZCBub3QgcmVxdWlyZSBhbiBpbnRlcm1lZGlhdGUKICAgIHN0cnVjdCBtaWNyb2NvZGVfYW1kIHBv
aW50aW5nIGF0IGl0LgogICAgCiAgICBNYWtlIHRoaXMgY2hhbmdlICh0YWtpbmcgdGltZSB0byBy
ZW5hbWUgJ21jX2FtZCcgdG8gaXRzIGV2ZW50dWFsICdwYXRjaCcgdG8KICAgIHJlZHVjZSB0aGUg
Y2h1cm4gaW4gdGhlIHNlcmllcyksIGFuZCBhIGxhdGVyIGNsZWFudXAgd2lsbCBtYWtlIGl0IHVu
aWZvcm1seQogICAgdGFrZSBhIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2guCiAgICAKICAgIE5vIGZ1
bmN0aW9uYWwgY2hhbmdlLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxh
bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1
bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyB8IDIy
ICsrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyks
IDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggOWVhOTJmNjAw
NS4uMDM2NWM4NWQ5OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1k
LmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTE3MywzMSArMTcz
LDMwIEBAIHN0YXRpYyBib29sIGNoZWNrX2ZpbmFsX3BhdGNoX2xldmVscyhjb25zdCBzdHJ1Y3Qg
Y3B1X3NpZ25hdHVyZSAqc2lnKQogfQogCiBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVz
dWx0IG1pY3JvY29kZV9maXRzKAotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfYW1kICptY19h
bWQpCisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICpwYXRjaCkKIHsKICAg
ICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogICAgIGNvbnN0IHN0cnVj
dCBjcHVfc2lnbmF0dXJlICpzaWcgPSAmcGVyX2NwdShjcHVfc2lnLCBjcHUpOwotICAgIGNvbnN0
IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2FtZCAqbWNfaGVhZGVyID0gbWNfYW1kLT5tcGI7CiAK
ICAgICBpZiAoIGVxdWl2LnNpZyAhPSBzaWctPnNpZyB8fAotICAgICAgICAgZXF1aXYuaWQgICE9
IG1jX2hlYWRlci0+cHJvY2Vzc29yX3Jldl9pZCApCisgICAgICAgICBlcXVpdi5pZCAgIT0gcGF0
Y2gtPnByb2Nlc3Nvcl9yZXZfaWQgKQogICAgICAgICByZXR1cm4gTUlTX1VDT0RFOwogCi0gICAg
aWYgKCBtY19oZWFkZXItPnBhdGNoX2lkIDw9IHNpZy0+cmV2ICkKKyAgICBpZiAoIHBhdGNoLT5w
YXRjaF9pZCA8PSBzaWctPnJldiApCiAgICAgewogICAgICAgICBwcl9kZWJ1ZygibWljcm9jb2Rl
OiBwYXRjaCBpcyBhbHJlYWR5IGF0IHJlcXVpcmVkIGxldmVsIG9yIGdyZWF0ZXIuXG4iKTsKICAg
ICAgICAgcmV0dXJuIE9MRF9VQ09ERTsKICAgICB9CiAKICAgICBwcl9kZWJ1ZygibWljcm9jb2Rl
OiBDUFUlZCBmb3VuZCBhIG1hdGNoaW5nIG1pY3JvY29kZSB1cGRhdGUgd2l0aCB2ZXJzaW9uICUj
eCAoY3VycmVudD0lI3gpXG4iLAotICAgICAgICAgICAgIGNwdSwgbWNfaGVhZGVyLT5wYXRjaF9p
ZCwgc2lnLT5yZXYpOworICAgICAgICAgICAgIGNwdSwgcGF0Y2gtPnBhdGNoX2lkLCBzaWctPnJl
dik7CiAKICAgICByZXR1cm4gTkVXX1VDT0RFOwogfQogCiBzdGF0aWMgYm9vbCBtYXRjaF9jcHUo
Y29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7Ci0gICAgcmV0dXJuIHBhdGNo
ICYmIChtaWNyb2NvZGVfZml0cyhwYXRjaCkgPT0gTkVXX1VDT0RFKTsKKyAgICByZXR1cm4gcGF0
Y2ggJiYgKG1pY3JvY29kZV9maXRzKHBhdGNoLT5tcGIpID09IE5FV19VQ09ERSk7CiB9CiAKIHN0
YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWNfYW1kKQpAQCAt
MjIzLDE0ICsyMjIsMTEgQEAgc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21w
YXJlX2hlYWRlcigKIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgY29tcGFyZV9w
YXRjaCgKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpuZXcsIGNvbnN0IHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKm9sZCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hl
YWRlcl9hbWQgKm5ld19oZWFkZXIgPSBuZXctPm1wYjsKLSAgICBjb25zdCBzdHJ1Y3QgbWljcm9j
b2RlX2hlYWRlcl9hbWQgKm9sZF9oZWFkZXIgPSBvbGQtPm1wYjsKLQogICAgIC8qIEJvdGggcGF0
Y2hlcyB0byBjb21wYXJlIGFyZSBzdXBwb3NlZCB0byBiZSBhcHBsaWNhYmxlIHRvIGxvY2FsIENQ
VS4gKi8KLSAgICBBU1NFUlQobWljcm9jb2RlX2ZpdHMobmV3KSAhPSBNSVNfVUNPREUpOwotICAg
IEFTU0VSVChtaWNyb2NvZGVfZml0cyhvbGQpICE9IE1JU19VQ09ERSk7CisgICAgQVNTRVJUKG1p
Y3JvY29kZV9maXRzKG5ldy0+bXBiKSAhPSBNSVNfVUNPREUpOworICAgIEFTU0VSVChtaWNyb2Nv
ZGVfZml0cyhvbGQtPm1wYikgIT0gTUlTX1VDT0RFKTsKIAotICAgIHJldHVybiBjb21wYXJlX2hl
YWRlcihuZXdfaGVhZGVyLCBvbGRfaGVhZGVyKTsKKyAgICByZXR1cm4gY29tcGFyZV9oZWFkZXIo
bmV3LT5tcGIsIG9sZC0+bXBiKTsKIH0KIAogc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUoY29u
c3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCkBAIC01MDgsNyArNTA0LDcgQEAgc3Rh
dGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2
b2lkICpidWYsCiAgICAgICAgICAqIElmIHRoZSBuZXcgdWNvZGUgY292ZXJzIGN1cnJlbnQgQ1BV
LCBjb21wYXJlIHVjb2RlcyBhbmQgc3RvcmUgdGhlCiAgICAgICAgICAqIG9uZSB3aXRoIGhpZ2hl
ciByZXZpc2lvbi4KICAgICAgICAgICovCi0gICAgICAgIGlmICggKG1pY3JvY29kZV9maXRzKG1j
X2FtZCkgIT0gTUlTX1VDT0RFKSAmJgorICAgICAgICBpZiAoIChtaWNyb2NvZGVfZml0cyhtY19h
bWQtPm1wYikgIT0gTUlTX1VDT0RFKSAmJgogICAgICAgICAgICAgICghc2F2ZWQgfHwgKGNvbXBh
cmVfaGVhZGVyKG1jX2FtZC0+bXBiLCBzYXZlZCkgPT0gTkVXX1VDT0RFKSkgKQogICAgICAgICB7
CiAgICAgICAgICAgICB4ZnJlZShzYXZlZCk7Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3Qg
Zm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4t
Y2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:13:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:13:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdBQ-0007f9-Fc; Wed, 01 Apr 2020 13:13:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdBP-0007ez-9o
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:27 +0000
X-Inumbo-ID: 922db682-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 922db682-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:13:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=QWYIC1fV51k7YeUJuTuOCaGg/JOSXqqeyM4PoEgEX7c=; b=Ag/z2zgdAekdd/Vogvc5TXxW5b
 bWd403POGL82pxIzZrbxKJtsigxLw7NVUPYBvN4YNCEd0fKOXb3yqDvbKanLSwv6ClnD0dIiMWUbC
 EX+xfOXF0qK+r9batbfEpKWexLu/2Fm/cV0Rua7yV4ulGjP10LTrh04pL6lM7P6LzOmk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBN-0002z5-OY
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBN-0008FM-Nl
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdBN-0008FM-Nl@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:13:25 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Rename bufsize to size
 in cpu_request_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDM4ZjZmMTFkMTA0YjQwNTM0MTBkZTE5ZWZiZTE0MGZmNDlhYzYyMjQKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxOTo1NjozNiAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogUmVuYW1lIGJ1ZnNpemUgdG8gc2l6ZSBp
biBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKQogICAgCiAgICBUbyBzaW1wbGlmeSBmdXR1cmUgY2xl
YW51cCwgcmVuYW1lIHRoaXMgdmFyaWFibGUuCiAgICAKICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdl
LgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj
aXRyaXguY29tPgogICAgQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4K
LS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyB8IDIxICsrKysrKysrKystLS0t
LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jIGIveGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggMDM2NWM4NWQ5OS4uZTBlZmNiMDY5ZiAx
MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKKysrIGIveGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTQyNyw4ICs0MjcsNyBAQCBzdGF0aWMgaW50
IGNvbnRhaW5lcl9mYXN0X2ZvcndhcmQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemVfbGVm
dCwgc2l6ZV90ICpvZgogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IG1pY3JvY29k
ZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZnNp
emUpCitzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2Rl
KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7CiAgICAgc3RydWN0IG1pY3JvY29kZV9h
bWQgKm1jX2FtZDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKnNhdmVkID0gTlVM
TDsKQEAgLTQzOCw3ICs0MzcsNyBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1
X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICB1bnNpZ25lZCBpbnQgY3B1
ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogICAgIGNvbnN0IHN0cnVjdCBjcHVfc2lnbmF0dXJlICpz
aWcgPSAmcGVyX2NwdShjcHVfc2lnLCBjcHUpOwogCi0gICAgaWYgKCBidWZzaXplIDwgNCB8fCAq
KGNvbnN0IHVpbnQzMl90ICopYnVmICE9IFVDT0RFX01BR0lDICkKKyAgICBpZiAoIHNpemUgPCA0
IHx8ICooY29uc3QgdWludDMyX3QgKilidWYgIT0gVUNPREVfTUFHSUMgKQogICAgIHsKICAgICAg
ICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IFdyb25nIG1pY3JvY29kZSBwYXRjaCBmaWxl
IG1hZ2ljXG4iKTsKICAgICAgICAgZXJyb3IgPSAtRUlOVkFMOwpAQCAtNDU4LDE3ICs0NTcsMTcg
QEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShj
b25zdCB2b2lkICpidWYsCiAgICAgICogMS4gY2hlY2sgaWYgdGhpcyBjb250YWluZXIgZmlsZSBo
YXMgZXF1aXZfY3B1X2lkIG1hdGNoCiAgICAgICogMi4gSWYgbm90LCBmYXN0LWZ3ZCB0byBuZXh0
IGNvbnRhaW5lciBmaWxlCiAgICAgICovCi0gICAgd2hpbGUgKCBvZmZzZXQgPCBidWZzaXplICkK
KyAgICB3aGlsZSAoIG9mZnNldCA8IHNpemUgKQogICAgIHsKLSAgICAgICAgZXJyb3IgPSBzY2Fu
X2VxdWl2X2NwdV90YWJsZShidWYsIGJ1ZnNpemUgLSBvZmZzZXQsICZvZmZzZXQpOworICAgICAg
ICBlcnJvciA9IHNjYW5fZXF1aXZfY3B1X3RhYmxlKGJ1Ziwgc2l6ZSAtIG9mZnNldCwgJm9mZnNl
dCk7CiAKICAgICAgICAgaWYgKCAhZXJyb3IgfHwgZXJyb3IgIT0gLUVTUkNIICkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGVycm9yID0gY29udGFpbmVyX2Zhc3RfZm9yd2FyZChidWYs
IGJ1ZnNpemUgLSBvZmZzZXQsICZvZmZzZXQpOworICAgICAgICBlcnJvciA9IGNvbnRhaW5lcl9m
YXN0X2ZvcndhcmQoYnVmLCBzaXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKICAgICAgICAgaWYgKCBl
cnJvciA9PSAtRU5PREFUQSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvZmZzZXQg
PT0gYnVmc2l6ZSk7CisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0ID09IHNpemUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCBlcnJvciApCkBAIC00OTcsNyAr
NDk2LDcgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3Jv
Y29kZShjb25zdCB2b2lkICpidWYsCiAgICAgICogSXQncyBwb3NzaWJsZSB0aGUgZGF0YSBmaWxl
IGhhcyBtdWx0aXBsZSBtYXRjaGluZyB1Y29kZSwKICAgICAgKiBsZXRzIGtlZXAgc2VhcmNoaW5n
IHRpbGwgdGhlIGxhdGVzdCB2ZXJzaW9uCiAgICAgICovCi0gICAgd2hpbGUgKCAoZXJyb3IgPSBn
ZXRfdWNvZGVfZnJvbV9idWZmZXJfYW1kKG1jX2FtZCwgYnVmLCBidWZzaXplLAorICAgIHdoaWxl
ICggKGVycm9yID0gZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZChtY19hbWQsIGJ1Ziwgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9mZnNldCkp
ID09IDAgKQogICAgIHsKICAgICAgICAgLyoKQEAgLTUxNiw3ICs1MTUsNyBAQCBzdGF0aWMgc3Ry
dWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1
ZiwKICAgICAgICAgICAgIG1jX2FtZC0+bXBiID0gTlVMTDsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICggb2Zmc2V0ID49IGJ1ZnNpemUgKQorICAgICAgICBpZiAoIG9mZnNldCA+PSBzaXplICkK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qCkBAIC01MjYsNyArNTI1LDcgQEAgc3Rh
dGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2
b2lkICpidWYsCiAgICAgICAgICAqICAgIGVhcmxpZXIgd2hpbGUoKSAoT24gdGhpcyBjYXNlLCBt
YXRjaGVzIG9uIGVhcmxpZXIgY29udGFpbmVyCiAgICAgICAgICAqICAgIGZpbGUgYW5kIHdlIGJy
ZWFrKQogICAgICAgICAgKiAzLiBQcm9jZWVkIHRvIHdoaWxlICggKGVycm9yID0gZ2V0X3Vjb2Rl
X2Zyb21fYnVmZmVyX2FtZChtY19hbWQsCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1ZiwgYnVmc2l6ZSwmb2Zmc2V0KSkgPT0gMCApCisgICAgICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Ziwgc2l6ZSwgJm9mZnNldCkpID09IDAg
KQogICAgICAgICAgKiA0LiBGaW5kIGNvcnJlY3QgcGF0Y2ggdXNpbmcgbWljcm9jb2RlX2ZpdHMo
KSBhbmQgYXBwbHkgdGhlIHBhdGNoCiAgICAgICAgICAqICAgIChBc3N1bWU6IGFwcGx5X21pY3Jv
Y29kZSgpIGlzIHN1Y2Nlc3NmdWwpCiAgICAgICAgICAqIDUuIFRoZSB3aGlsZSgpIGxvb3AgZnJv
bSAoMykgY29udGludWVzIHRvIHBhcnNlIHRoZSBiaW5hcnkgYXMKQEAgLTUzOSw3ICs1MzgsNyBA
QCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNv
bnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgICogICAgYmVmb3JlIGlmICggbXBidWYtPnR5cGUgIT0g
VUNPREVfVUNPREVfVFlQRSApIGV2YWx1YXRlcyB0bwogICAgICAgICAgKiAgICBmYWxzZSBhbmQg
cmV0dXJucyAtRUlOVkFMLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCBvZmZzZXQgKyBTRUNU
SU9OX0hEUl9TSVpFIDw9IGJ1ZnNpemUgJiYKKyAgICAgICAgaWYgKCBvZmZzZXQgKyBTRUNUSU9O
X0hEUl9TSVpFIDw9IHNpemUgJiYKICAgICAgICAgICAgICAqKGNvbnN0IHVpbnQzMl90ICopKGJ1
ZiArIG9mZnNldCkgPT0gVUNPREVfTUFHSUMgKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQot
LQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3Rh
Z2luZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu
LWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:13:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:13:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdBZ-0007g9-Hp; Wed, 01 Apr 2020 13:13:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdBY-0007fx-OL
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:36 +0000
X-Inumbo-ID: 982f2bf6-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 982f2bf6-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:13:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Xf13zFzj3DMAX4TBnHAkHIRWcGBZkBE2t2uS+PaiX04=; b=jQBWbLuiR5+d0o2g66KffqCERp
 Cl9KnyYZR4T9XzDss8Fcoqw/rsq6IIFVdY+hdwCz3ZdOmGrt/J3hSGqfRJRH0Yz3jn39Ie+3HW4+p
 mqnBVPjCPbmvTUcdFA6AkowMHAP0hma+ja/WS45dFSS7HGwS26bM34I/bgO4YzWrDhTk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBX-0002zi-Qy
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBX-0008G9-Q5
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdBX-0008G9-Q5@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:13:35 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Remove gratuitous
 memory allocations from cpu_request_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGY0YzY2M2I4OGI3YTJiNWU5ZDEwNDMwN2FiMWFkMWYzNTdmZDQ0YzkKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxODo1MDoyNSAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogUmVtb3ZlIGdyYXR1aXRvdXMgbWVtb3J5
IGFsbG9jYXRpb25zIGZyb20gY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkKICAgIAogICAgSnVzdCBh
cyBvbiB0aGUgSW50ZWwgc2lkZSwgdGhlcmUgaXMgbm8gcG9pbnQgaGF2aW5nCiAgICBnZXRfdWNv
ZGVfZnJvbV9idWZmZXJfYW1kKCkgbWFrZSAkTiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIGZyZWUg
JE4tMSBvZiB0aGVtLgogICAgCiAgICBEZWxldGUgZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgp
IGFuZCByZXdyaXRlIHRoZSBsb29wIGluCiAgICBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKSB0byBo
YXZlICdzYXZlZCcgcG9pbnQgaW50byAnYnVmJyB1bnRpbCB3ZSBmaW5hbGx5CiAgICBkZWNpZGUg
dG8gZHVwbGljYXRlIHRoYXQgYmxvYiBhbmQgcmV0dXJuIGl0IHRvIG91ciBjYWxsZXIuCiAgICAK
ICAgIEludHJvZHVjZSBhIG5ldyBzdHJ1Y3QgY29udGFpbmVyX21pY3JvY29kZSB0byBzaW1wbGlm
eSBpbnRlcnByZXRpbmcgdGhlCiAgICBjb250YWluZXIgZm9ybWF0LiAgRG91Ymx5IGluZGVudCB0
aGUgbG9naWMgdG8gc3Vic3RhbnRpYWxseSByZWR1Y2UgdGhlIGNodXJuCiAgICBpbiBhIGxhdGVy
IGNoYW5nZS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv
b3BlcjNAY2l0cml4LmNvbT4KICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hA
c3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgfCAxMzggKysr
KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDcg
aW5zZXJ0aW9ucygrKSwgOTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2
L2NwdS9taWNyb2NvZGUvYW1kLmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpp
bmRleCBlMGVmY2IwNjlmLi4xYjFmODMzNWVmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1
L21pY3JvY29kZS9hbWQuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpA
QCAtNzAsNiArNzAsMTEgQEAgc3RydWN0IG1wYmhkciB7CiAgICAgdWludDMyX3QgbGVuOwogICAg
IHVpbnQ4X3QgZGF0YVtdOwogfTsKK3N0cnVjdCBjb250YWluZXJfbWljcm9jb2RlIHsKKyAgICB1
aW50MzJfdCB0eXBlOyAvKiBVQ09ERV9VQ09ERV9UWVBFICovCisgICAgdWludDMyX3QgbGVuOwor
ICAgIHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2FtZCBwYXRjaFtdOworfTsKIAogLyoKICAqIE1p
Y3JvY29kZSB1cGRhdGVzIGZvciBkaWZmZXJlbnQgQ1BVcyBhcmUgZGlzdGluZ3Vpc2hlZCBieSB0
aGVpcgpAQCAtMjgwLDUyICsyODUsNiBAQCBzdGF0aWMgaW50IGFwcGx5X21pY3JvY29kZShjb25z
dCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICByZXR1cm4gMDsKIH0KIAotc3Rh
dGljIGludCBnZXRfdWNvZGVfZnJvbV9idWZmZXJfYW1kKAotICAgIHN0cnVjdCBtaWNyb2NvZGVf
YW1kICptY19hbWQsCi0gICAgY29uc3Qgdm9pZCAqYnVmLAotICAgIHNpemVfdCBidWZzaXplLAot
ICAgIHNpemVfdCAqb2Zmc2V0KQotewotICAgIGNvbnN0IHN0cnVjdCBtcGJoZHIgKm1wYnVmID0g
YnVmICsgKm9mZnNldDsKLQotICAgIC8qIE5vIG1vcmUgZGF0YSAqLwotICAgIGlmICggKm9mZnNl
dCA+PSBidWZzaXplICkKLSAgICB7Ci0gICAgICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2Rl
OiBNaWNyb2NvZGUgYnVmZmVyIG92ZXJydW5cbiIpOwotICAgICAgICByZXR1cm4gLUVJTlZBTDsK
LSAgICB9Ci0KLSAgICBpZiAoIG1wYnVmLT50eXBlICE9IFVDT0RFX1VDT0RFX1RZUEUgKQotICAg
IHsKLSAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IFdyb25nIG1pY3JvY29kZSBw
YXlsb2FkIHR5cGUgZmllbGRcbiIpOwotICAgICAgICByZXR1cm4gLUVJTlZBTDsKLSAgICB9Ci0K
LSAgICBpZiAoICgqb2Zmc2V0ICsgbXBidWYtPmxlbikgPiBidWZzaXplICkKLSAgICB7Ci0gICAg
ICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBCYWQgZGF0YSBpbiBtaWNyb2NvZGUgZGF0
YSBmaWxlXG4iKTsKLSAgICAgICAgcmV0dXJuIC1FSU5WQUw7Ci0gICAgfQotCi0gICAgaWYgKCAh
dmVyaWZ5X3BhdGNoX3NpemUobXBidWYtPmxlbikgKQotICAgIHsKLSAgICAgICAgcHJpbnRrKFhF
TkxPR19FUlIgIm1pY3JvY29kZTogcGF0Y2ggc2l6ZSBtaXNtYXRjaFxuIik7Ci0gICAgICAgIHJl
dHVybiAtRUlOVkFMOwotICAgIH0KLQotICAgIG1jX2FtZC0+bXBiID0geG1lbWR1cF9ieXRlcyht
cGJ1Zi0+ZGF0YSwgbXBidWYtPmxlbik7Ci0gICAgaWYgKCAhbWNfYW1kLT5tcGIgKQotICAgICAg
ICByZXR1cm4gLUVOT01FTTsKLQotICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIHNpemUg
JXp1LCBibG9jayBzaXplICV1IG9mZnNldCAlenUgZXF1aXZJRCAlI3ggcmV2ICUjeFxuIiwKLSAg
ICAgICAgICAgICBzbXBfcHJvY2Vzc29yX2lkKCksIGJ1ZnNpemUsIG1wYnVmLT5sZW4sICpvZmZz
ZXQsCi0gICAgICAgICAgICAgbWNfYW1kLT5tcGItPnByb2Nlc3Nvcl9yZXZfaWQsIG1jX2FtZC0+
bXBiLT5wYXRjaF9pZCk7Ci0KLSAgICAqb2Zmc2V0ICs9IG1wYnVmLT5sZW4gKyBTRUNUSU9OX0hE
Ul9TSVpFOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgc2Nhbl9lcXVpdl9jcHVf
dGFibGUoCiAgICAgY29uc3Qgdm9pZCAqZGF0YSwKICAgICBzaXplX3Qgc2l6ZV9sZWZ0LApAQCAt
NDMwLDkgKzM4OSw5IEBAIHN0YXRpYyBpbnQgY29udGFpbmVyX2Zhc3RfZm9yd2FyZChjb25zdCB2
b2lkICpkYXRhLCBzaXplX3Qgc2l6ZV9sZWZ0LCBzaXplX3QgKm9mCiBzdGF0aWMgc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6
ZV90IHNpemUpCiB7CiAgICAgc3RydWN0IG1pY3JvY29kZV9hbWQgKm1jX2FtZDsKLSAgICBzdHJ1
Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKnNhdmVkID0gTlVMTDsKKyAgICBjb25zdCBzdHJ1Y3Qg
bWljcm9jb2RlX2hlYWRlcl9hbWQgKnNhdmVkID0gTlVMTDsKICAgICBzdHJ1Y3QgbWljcm9jb2Rl
X3BhdGNoICpwYXRjaCA9IE5VTEw7Ci0gICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgc2l6ZV90
IG9mZnNldCA9IDAsIHNhdmVkX3NpemUgPSAwOwogICAgIGludCBlcnJvciA9IDA7CiAgICAgdW5z
aWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKICAgICBjb25zdCBzdHJ1Y3QgY3B1
X3NpZ25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKQEAgLTQ5Niw1NyArNDU1
LDU0IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2Nv
ZGUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6CiAgICAgICogSXQncyBwb3NzaWJsZSB0aGUg
ZGF0YSBmaWxlIGhhcyBtdWx0aXBsZSBtYXRjaGluZyB1Y29kZSwKICAgICAgKiBsZXRzIGtlZXAg
c2VhcmNoaW5nIHRpbGwgdGhlIGxhdGVzdCB2ZXJzaW9uCiAgICAgICovCi0gICAgd2hpbGUgKCAo
ZXJyb3IgPSBnZXRfdWNvZGVfZnJvbV9idWZmZXJfYW1kKG1jX2FtZCwgYnVmLCBzaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2Zmc2V0KSkgPT0g
MCApCisgICAgYnVmICArPSBvZmZzZXQ7CisgICAgc2l6ZSAtPSBvZmZzZXQ7CiAgICAgewotICAg
ICAgICAvKgotICAgICAgICAgKiBJZiB0aGUgbmV3IHVjb2RlIGNvdmVycyBjdXJyZW50IENQVSwg
Y29tcGFyZSB1Y29kZXMgYW5kIHN0b3JlIHRoZQotICAgICAgICAgKiBvbmUgd2l0aCBoaWdoZXIg
cmV2aXNpb24uCi0gICAgICAgICAqLwotICAgICAgICBpZiAoIChtaWNyb2NvZGVfZml0cyhtY19h
bWQtPm1wYikgIT0gTUlTX1VDT0RFKSAmJgotICAgICAgICAgICAgICghc2F2ZWQgfHwgKGNvbXBh
cmVfaGVhZGVyKG1jX2FtZC0+bXBiLCBzYXZlZCkgPT0gTkVXX1VDT0RFKSkgKQorICAgICAgICB3
aGlsZSAoIHNpemUgKQogICAgICAgICB7Ci0gICAgICAgICAgICB4ZnJlZShzYXZlZCk7Ci0gICAg
ICAgICAgICBzYXZlZCA9IG1jX2FtZC0+bXBiOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgeGZyZWUobWNfYW1kLT5tcGIpOwotICAgICAgICAgICAgbWNf
YW1kLT5tcGIgPSBOVUxMOwotICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY29u
dGFpbmVyX21pY3JvY29kZSAqbWM7CisKKyAgICAgICAgICAgIGlmICggc2l6ZSA8IHNpemVvZigq
bWMpIHx8CisgICAgICAgICAgICAgICAgIChtYyA9IGJ1ZiktPnR5cGUgIT0gVUNPREVfVUNPREVf
VFlQRSB8fAorICAgICAgICAgICAgICAgICBzaXplIC0gc2l6ZW9mKCptYykgPCBtYy0+bGVuIHx8
CisgICAgICAgICAgICAgICAgICF2ZXJpZnlfcGF0Y2hfc2l6ZShtYy0+bGVuKSApCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIm1pY3JvY29kZTogQmFk
IG1pY3JvY29kZSBkYXRhXG4iKTsKKyAgICAgICAgICAgICAgICBlcnJvciA9IC1FSU5WQUw7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKCBvZmZz
ZXQgPj0gc2l6ZSApCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qCisgICAgICAg
ICAgICAgKiBJZiB0aGUgbmV3IHVjb2RlIGNvdmVycyBjdXJyZW50IENQVSwgY29tcGFyZSB1Y29k
ZXMgYW5kIHN0b3JlIHRoZQorICAgICAgICAgICAgICogb25lIHdpdGggaGlnaGVyIHJldmlzaW9u
LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIChtaWNyb2NvZGVfZml0cyhtYy0+
cGF0Y2gpICE9IE1JU19VQ09ERSkgJiYKKyAgICAgICAgICAgICAgICAgKCFzYXZlZCB8fCAoY29t
cGFyZV9oZWFkZXIobWMtPnBhdGNoLCBzYXZlZCkgPT0gTkVXX1VDT0RFKSkgKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHNhdmVkID0gbWMtPnBhdGNoOworICAgICAgICAgICAgICAg
IHNhdmVkX3NpemUgPSBtYy0+bGVuOworICAgICAgICAgICAgfQogCi0gICAgICAgIC8qCi0gICAg
ICAgICAqIDEuIEdpdmVuIGEgc2l0dWF0aW9uIHdoZXJlIG11bHRpcGxlIGNvbnRhaW5lcnMgZXhp
c3QgYW5kIGNvcnJlY3QKLSAgICAgICAgICogICAgcGF0Y2ggbGl2ZXMgb24gYSBjb250YWluZXIg
dGhhdCBpcyBub3QgdGhlIGxhc3QgY29udGFpbmVyLgotICAgICAgICAgKiAyLiBXZSBtYXRjaCBl
cXVpdmFsZW50IGlkcyB1c2luZyBmaW5kX2VxdWl2X2NwdV9pZCgpIGZyb20gdGhlCi0gICAgICAg
ICAqICAgIGVhcmxpZXIgd2hpbGUoKSAoT24gdGhpcyBjYXNlLCBtYXRjaGVzIG9uIGVhcmxpZXIg
Y29udGFpbmVyCi0gICAgICAgICAqICAgIGZpbGUgYW5kIHdlIGJyZWFrKQotICAgICAgICAgKiAz
LiBQcm9jZWVkIHRvIHdoaWxlICggKGVycm9yID0gZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCht
Y19hbWQsCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Ziwg
c2l6ZSwgJm9mZnNldCkpID09IDAgKQotICAgICAgICAgKiA0LiBGaW5kIGNvcnJlY3QgcGF0Y2gg
dXNpbmcgbWljcm9jb2RlX2ZpdHMoKSBhbmQgYXBwbHkgdGhlIHBhdGNoCi0gICAgICAgICAqICAg
IChBc3N1bWU6IGFwcGx5X21pY3JvY29kZSgpIGlzIHN1Y2Nlc3NmdWwpCi0gICAgICAgICAqIDUu
IFRoZSB3aGlsZSgpIGxvb3AgZnJvbSAoMykgY29udGludWVzIHRvIHBhcnNlIHRoZSBiaW5hcnkg
YXMKLSAgICAgICAgICogICAgdGhlcmUgaXMgYSBzdWJzZXF1ZW50IGNvbnRhaW5lciBmaWxlLCBi
dXQuLi4KLSAgICAgICAgICogNi4gLi4uYSBjb3JyZWN0IHBhdGNoIGNhbiBvbmx5IGJlIG9uIG9u
ZSBjb250YWluZXIgYW5kIG5vdCBvbiBhbnkKLSAgICAgICAgICogICAgc3Vic2VxdWVudCBvbmVz
LiAoUmVmZXIgZG9jcyBmb3IgbW9yZSBpbmZvKSBUaGVyZWZvcmUsIHdlCi0gICAgICAgICAqICAg
IGRvbid0IGhhdmUgdG8gcGFyc2UgYSBzdWJzZXF1ZW50IGNvbnRhaW5lci4gU28sIHdlIGNhbiBh
Ym9ydAotICAgICAgICAgKiAgICB0aGUgcHJvY2VzcyBoZXJlLgotICAgICAgICAgKiA3LiBUaGlz
IGVuc3VyZXMgdGhhdCB3ZSByZXRhaW4gYSBzdWNjZXNzIHZhbHVlICg9IDApIHRvICdlcnJvcicK
LSAgICAgICAgICogICAgYmVmb3JlIGlmICggbXBidWYtPnR5cGUgIT0gVUNPREVfVUNPREVfVFlQ
RSApIGV2YWx1YXRlcyB0bwotICAgICAgICAgKiAgICBmYWxzZSBhbmQgcmV0dXJucyAtRUlOVkFM
LgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKCBvZmZzZXQgKyBTRUNUSU9OX0hEUl9TSVpFIDw9
IHNpemUgJiYKLSAgICAgICAgICAgICAqKGNvbnN0IHVpbnQzMl90ICopKGJ1ZiArIG9mZnNldCkg
PT0gVUNPREVfTUFHSUMgKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBNb3Zl
IG92ZXIgdGhlIG1pY3JvY29kZSBibG9iLiAqLworICAgICAgICAgICAgYnVmICArPSBzaXplb2Yo
Km1jKSArIG1jLT5sZW47CisgICAgICAgICAgICBzaXplIC09IHNpemVvZigqbWMpICsgbWMtPmxl
bjsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFBlZWsgYWhlYWQuICBJZiB3ZSBz
ZWUgdGhlIHN0YXJ0IG9mIGFub3RoZXIgY29udGFpbmVyLCB3ZSd2ZQorICAgICAgICAgICAgICog
ZXhoYXVzZWQgYWxsIG1pY3JvY29kZSBibG9icyBpbiB0aGlzIGNvbnRhaW5lci4gIEV4aXQgY2xl
YW5seS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBzaXplID49IDQgJiYgKihj
b25zdCB1aW50MzJfdCAqKWJ1ZiA9PSBVQ09ERV9NQUdJQyApCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIHNhdmVkICkKICAgICB7Ci0gICAgICAg
IG1jX2FtZC0+bXBiID0gc2F2ZWQ7Ci0gICAgICAgIHBhdGNoID0gbWNfYW1kOworICAgICAgICBt
Y19hbWQtPm1wYiA9IHhtZW1kdXBfYnl0ZXMoc2F2ZWQsIHNhdmVkX3NpemUpOworICAgICAgICBp
ZiAoIG1jX2FtZC0+bXBiICkKKyAgICAgICAgICAgIHBhdGNoID0gbWNfYW1kOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBlcnJvciA9IC1FTk9NRU07CiAgICAgfQogICAgIGVsc2UKICAgICAg
ICAgZnJlZV9wYXRjaChtY19hbWQpOwotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAv
aG9tZS94ZW4vZ2l0L3hlbi5naXQjc3RhZ2luZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5n
ZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hl
bi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:13:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:13:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdBj-0007hF-Jo; Wed, 01 Apr 2020 13:13:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdBi-0007h5-PI
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:46 +0000
X-Inumbo-ID: 9e2f80d2-741a-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9e2f80d2-741a-11ea-b4f4-bc764e2007e4;
 Wed, 01 Apr 2020 13:13:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=BoCICxCx3dQDNBj+fiDm3Sn5b9VZzimTsj6z1whCrxE=; b=2Dxblv7LU3ecTmej/WIRWkGD5D
 yug5/hGLCuydD/KrjqkIaJt7fa42qp4Wc6KnGNqnnADbb593BBFj4Q2jGrUnAwlwpQqQhbgwoo/XV
 QJjk7jslyi7Z5OOs4n7o2XdrZpQUfzj8SZJvbwqhzsbSggpQ2mZb88EOo3Gxv9nAUOEI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBh-0002zr-TG
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBh-0008Gk-ST
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdBh-0008Gk-ST@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:13:45 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Fold structures
 together
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDZmNTY0OTE5MTFhNmExMWVjOTRkYjM2YWNhNzkxYTIzZTNjYzc1YjYKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxNzo1ODoyOSAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogRm9sZCBzdHJ1Y3R1cmVzIHRvZ2V0aGVy
CiAgICAKICAgIFdpdGggYWxsIHRoZSBuZWNlc3NhcnkgY2xlYW51cCBub3cgaW4gcGxhY2UsIGZv
bGQgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kCiAgICBpbnRvIHN0cnVjdCBtaWNyb2NvZGVf
cGF0Y2ggYW5kIGRyb3AgdGhlIHN0cnVjdCBtaWNyb2NvZGVfYW1kIHRlbXBvcmFyeQogICAgaWZk
ZWYtYXJ5LgogICAgCiAgICBUaGlzIHJlbW92ZXMgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9mIHN0
cnVjdCBtaWNyb2NvZGVfYW1kIHdoaWNoIGlzIGEgc2luZ2xlCiAgICBwb2ludGVyIHRvIGEgc2Vw
YXJhdGVseSBhbGxvY2F0ZWQgb2JqZWN0LCBhbmQgdGhlcmVmb3JlIGEgd2FzdGUuCiAgICAKICAg
IFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+
CiAgICBSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHhl
bi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jIHwgNzAgKysrKysrKysrKysrLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDUw
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2Ft
ZC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggMWIxZjgzMzVlZi4u
YjllYmY4MWUwYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMK
KysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTM3LDcgKzM3LDcgQEAg
c3RydWN0IF9fcGFja2VkIGVxdWl2X2NwdV9lbnRyeSB7CiAgICAgdWludDE2X3QgcmVzZXJ2ZWQ7
CiB9OwogCi1zdHJ1Y3QgX19wYWNrZWQgbWljcm9jb2RlX2hlYWRlcl9hbWQgeworc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCB7CiAgICAgdWludDMyX3QgZGF0YV9jb2RlOwogICAgIHVpbnQzMl90IHBh
dGNoX2lkOwogICAgIHVpbnQ4X3QgIG1jX3BhdGNoX2RhdGFfaWRbMl07CkBAIC01OCwxMyArNTgs
NiBAQCBzdHJ1Y3QgX19wYWNrZWQgbWljcm9jb2RlX2hlYWRlcl9hbWQgewogI2RlZmluZSBVQ09E
RV9FUVVJVl9DUFVfVEFCTEVfVFlQRSAweDAwMDAwMDAwCiAjZGVmaW5lIFVDT0RFX1VDT0RFX1RZ
UEUgICAgICAgICAgIDB4MDAwMDAwMDEKIAotc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7Ci0gICAg
c3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICptcGI7Ci19OwotCi0vKiBUZW1wb3JhcnksIHVu
dGlsIHRoZSBtaWNyb2NvZGVfKiBzdHJ1Y3R1cmUgYXJlIGRpc2VudGFuZ2xlZC4gKi8KLSNkZWZp
bmUgbWljcm9jb2RlX2FtZCBtaWNyb2NvZGVfcGF0Y2gKLQogc3RydWN0IG1wYmhkciB7CiAgICAg
dWludDMyX3QgdHlwZTsKICAgICB1aW50MzJfdCBsZW47CkBAIC03Myw3ICs2Niw3IEBAIHN0cnVj
dCBtcGJoZHIgewogc3RydWN0IGNvbnRhaW5lcl9taWNyb2NvZGUgewogICAgIHVpbnQzMl90IHR5
cGU7IC8qIFVDT0RFX1VDT0RFX1RZUEUgKi8KICAgICB1aW50MzJfdCBsZW47Ci0gICAgc3RydWN0
IG1pY3JvY29kZV9oZWFkZXJfYW1kIHBhdGNoW107CisgICAgc3RydWN0IG1pY3JvY29kZV9wYXRj
aCBwYXRjaFtdOwogfTsKIAogLyoKQEAgLTE3OCw3ICsxNzEsNyBAQCBzdGF0aWMgYm9vbCBjaGVj
a19maW5hbF9wYXRjaF9sZXZlbHMoY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZykKIH0K
IAogc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfZml0cygKLSAg
ICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKnBhdGNoKQorICAgIGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewogICAgIHVuc2lnbmVkIGludCBjcHUgPSBz
bXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZyA9
ICZwZXJfY3B1KGNwdV9zaWcsIGNwdSk7CkBAIC0yMDEsMzcgKzE5NCwzMSBAQCBzdGF0aWMgZW51
bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29kZV9maXRzKAogCiBzdGF0aWMgYm9vbCBt
YXRjaF9jcHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7Ci0gICAgcmV0
dXJuIHBhdGNoICYmIChtaWNyb2NvZGVfZml0cyhwYXRjaC0+bXBiKSA9PSBORVdfVUNPREUpOwor
ICAgIHJldHVybiBwYXRjaCAmJiAobWljcm9jb2RlX2ZpdHMocGF0Y2gpID09IE5FV19VQ09ERSk7
CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWNf
YW1kKQorc3RhdGljIHZvaWQgZnJlZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRj
aCkKIHsKLSAgICBpZiAoIG1jX2FtZCApCi0gICAgewotICAgICAgICB4ZnJlZShtY19hbWQtPm1w
Yik7Ci0gICAgICAgIHhmcmVlKG1jX2FtZCk7Ci0gICAgfQorICAgIHhmcmVlKHBhdGNoKTsKIH0K
IAogc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJlX2hlYWRlcigKLSAg
ICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKm5ld19oZWFkZXIsCi0gICAgY29u
c3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICpvbGRfaGVhZGVyKQorICAgIGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm5ldywgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAq
b2xkKQogewotICAgIGlmICggbmV3X2hlYWRlci0+cHJvY2Vzc29yX3Jldl9pZCA9PSBvbGRfaGVh
ZGVyLT5wcm9jZXNzb3JfcmV2X2lkICkKLSAgICAgICAgcmV0dXJuIChuZXdfaGVhZGVyLT5wYXRj
aF9pZCA+IG9sZF9oZWFkZXItPnBhdGNoX2lkKSA/IE5FV19VQ09ERQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT0xEX1VDT0RF
OworICAgIGlmICggbmV3LT5wcm9jZXNzb3JfcmV2X2lkICE9IG9sZC0+cHJvY2Vzc29yX3Jldl9p
ZCApCisgICAgICAgIHJldHVybiBNSVNfVUNPREU7CiAKLSAgICByZXR1cm4gTUlTX1VDT0RFOwor
ICAgIHJldHVybiBuZXctPnBhdGNoX2lkID4gb2xkLT5wYXRjaF9pZCA/IE5FV19VQ09ERSA6IE9M
RF9VQ09ERTsKIH0KIAogc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJl
X3BhdGNoKAogICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm5ldywgY29uc3Qgc3Ry
dWN0IG1pY3JvY29kZV9wYXRjaCAqb2xkKQogewogICAgIC8qIEJvdGggcGF0Y2hlcyB0byBjb21w
YXJlIGFyZSBzdXBwb3NlZCB0byBiZSBhcHBsaWNhYmxlIHRvIGxvY2FsIENQVS4gKi8KLSAgICBB
U1NFUlQobWljcm9jb2RlX2ZpdHMobmV3LT5tcGIpICE9IE1JU19VQ09ERSk7Ci0gICAgQVNTRVJU
KG1pY3JvY29kZV9maXRzKG9sZC0+bXBiKSAhPSBNSVNfVUNPREUpOworICAgIEFTU0VSVChtaWNy
b2NvZGVfZml0cyhuZXcpICE9IE1JU19VQ09ERSk7CisgICAgQVNTRVJUKG1pY3JvY29kZV9maXRz
KG9sZCkgIT0gTUlTX1VDT0RFKTsKIAotICAgIHJldHVybiBjb21wYXJlX2hlYWRlcihuZXctPm1w
Yiwgb2xkLT5tcGIpOworICAgIHJldHVybiBjb21wYXJlX2hlYWRlcihuZXcsIG9sZCk7CiB9CiAK
IHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gg
KnBhdGNoKQpAQCAtMjM5LDcgKzIyNiw2IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNv
bnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogICAgIGludCBod19lcnI7CiAgICAg
dW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKICAgICBzdHJ1Y3QgY3B1X3Np
Z25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKLSAgICBjb25zdCBzdHJ1Y3Qg
bWljcm9jb2RlX2hlYWRlcl9hbWQgKmhkcjsKICAgICB1aW50MzJfdCByZXYsIG9sZF9yZXYgPSBz
aWctPnJldjsKIAogICAgIGlmICggIXBhdGNoICkKQEAgLTI1Niw5ICsyNDIsNyBAQCBzdGF0aWMg
aW50IGFwcGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkK
ICAgICAgICAgcmV0dXJuIC1FTlhJTzsKICAgICB9CiAKLSAgICBoZHIgPSBwYXRjaC0+bXBiOwot
Ci0gICAgaHdfZXJyID0gd3Jtc3Jfc2FmZShNU1JfQU1EX1BBVENITE9BREVSLCAodW5zaWduZWQg
bG9uZyloZHIpOworICAgIGh3X2VyciA9IHdybXNyX3NhZmUoTVNSX0FNRF9QQVRDSExPQURFUiwg
KHVuc2lnbmVkIGxvbmcpcGF0Y2gpOwogCiAgICAgLyogZ2V0IHBhdGNoIGlkIGFmdGVyIHBhdGNo
aW5nICovCiAgICAgcmRtc3JsKE1TUl9BTURfUEFUQ0hMRVZFTCwgcmV2KTsKQEAgLTI2OCwxNCAr
MjUyLDE0IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2Nv
ZGVfcGF0Y2ggKnBhdGNoKQogICAgICAqIFNvbWUgcHJvY2Vzc29ycyBsZWF2ZSB0aGUgdWNvZGUg
YmxvYiBtYXBwaW5nIGFzIFVDIGFmdGVyIHRoZSB1cGRhdGUuCiAgICAgICogRmx1c2ggdGhlIG1h
cHBpbmcgdG8gcmVnYWluIG5vcm1hbCBjYWNoZWFiaWxpdHkuCiAgICAgICovCi0gICAgZmx1c2hf
YXJlYV9sb2NhbChoZHIsIEZMVVNIX1RMQl9HTE9CQUwgfCBGTFVTSF9PUkRFUigwKSk7CisgICAg
Zmx1c2hfYXJlYV9sb2NhbChwYXRjaCwgRkxVU0hfVExCX0dMT0JBTCB8IEZMVVNIX09SREVSKDAp
KTsKIAogICAgIC8qIGNoZWNrIGN1cnJlbnQgcGF0Y2ggaWQgYW5kIHBhdGNoJ3MgaWQgZm9yIG1h
dGNoICovCi0gICAgaWYgKCBod19lcnIgfHwgKHJldiAhPSBoZHItPnBhdGNoX2lkKSApCisgICAg
aWYgKCBod19lcnIgfHwgKHJldiAhPSBwYXRjaC0+cGF0Y2hfaWQpICkKICAgICB7CiAgICAgICAg
IHByaW50ayhYRU5MT0dfRVJSCiAgICAgICAgICAgICAgICAibWljcm9jb2RlOiBDUFUldSB1cGRh
dGUgcmV2ICUjeCB0byAlI3ggZmFpbGVkLCByZXN1bHQgJSN4XG4iLAotICAgICAgICAgICAgICAg
Y3B1LCBvbGRfcmV2LCBoZHItPnBhdGNoX2lkLCByZXYpOworICAgICAgICAgICAgICAgY3B1LCBv
bGRfcmV2LCBwYXRjaC0+cGF0Y2hfaWQsIHJldik7CiAgICAgICAgIHJldHVybiAtRUlPOwogICAg
IH0KIApAQCAtMzg4LDggKzM3Miw3IEBAIHN0YXRpYyBpbnQgY29udGFpbmVyX2Zhc3RfZm9yd2Fy
ZChjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZV9sZWZ0LCBzaXplX3QgKm9mCiAKIHN0YXRp
YyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9p
ZCAqYnVmLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBzdHJ1Y3QgbWljcm9jb2RlX2FtZCAqbWNfYW1k
OwotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2FtZCAqc2F2ZWQgPSBOVUxMOwor
ICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnNhdmVkID0gTlVMTDsKICAgICBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IE5VTEw7CiAgICAgc2l6ZV90IG9mZnNldCA9IDAs
IHNhdmVkX3NpemUgPSAwOwogICAgIGludCBlcnJvciA9IDA7CkBAIC00MDMsMTQgKzM4Niw2IEBA
IHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29u
c3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAg
IG1jX2FtZCA9IHh6YWxsb2Moc3RydWN0IG1pY3JvY29kZV9hbWQpOwotICAgIGlmICggIW1jX2Ft
ZCApCi0gICAgewotICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogQ2Fubm90IGFs
bG9jYXRlIG1lbW9yeSBmb3IgbWljcm9jb2RlIHBhdGNoXG4iKTsKLSAgICAgICAgZXJyb3IgPSAt
RU5PTUVNOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0KICAgICAvKgogICAgICAqIE11bHRp
cGxlIGNvbnRhaW5lciBmaWxlIHN1cHBvcnQ6CiAgICAgICogMS4gY2hlY2sgaWYgdGhpcyBjb250
YWluZXIgZmlsZSBoYXMgZXF1aXZfY3B1X2lkIG1hdGNoCkBAIC00NDcsNyArNDIyLDYgQEAgc3Rh
dGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2
b2lkICpidWYsIHNpemVfdCBzaXoKICAgICAgICAgaWYgKCBlcnJvciA9PSAtRU5PREFUQSApCiAg
ICAgICAgICAgICBlcnJvciA9IDA7CiAKLSAgICAgICAgeGZyZWUobWNfYW1kKTsKICAgICAgICAg
Z290byBvdXQ7CiAgICAgfQogCkBAIC00OTgsMTQgKzQ3MiwxMCBAQCBzdGF0aWMgc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6
ZV90IHNpegogCiAgICAgaWYgKCBzYXZlZCApCiAgICAgewotICAgICAgICBtY19hbWQtPm1wYiA9
IHhtZW1kdXBfYnl0ZXMoc2F2ZWQsIHNhdmVkX3NpemUpOwotICAgICAgICBpZiAoIG1jX2FtZC0+
bXBiICkKLSAgICAgICAgICAgIHBhdGNoID0gbWNfYW1kOwotICAgICAgICBlbHNlCisgICAgICAg
IHBhdGNoID0geG1lbWR1cF9ieXRlcyhzYXZlZCwgc2F2ZWRfc2l6ZSk7CisgICAgICAgIGlmICgg
IXBhdGNoICkKICAgICAgICAgICAgIGVycm9yID0gLUVOT01FTTsKICAgICB9Ci0gICAgZWxzZQot
ICAgICAgICBmcmVlX3BhdGNoKG1jX2FtZCk7CiAKICAgb3V0OgogICAgIGlmICggZXJyb3IgJiYg
IXBhdGNoICkKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94
ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Wed Apr 01 13:13:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 01 Apr 2020 13:13:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jJdBu-0007ia-NF; Wed, 01 Apr 2020 13:13:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=I3qC=5R=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jJdBt-0007iR-GG
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:57 +0000
X-Inumbo-ID: a431a37a-741a-11ea-bac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a431a37a-741a-11ea-bac5-12813bfff9fa;
 Wed, 01 Apr 2020 13:13:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4p49Hm43CdCpn1/tqJ+iZW3BxoW/CINpjGoWsL++eeY=; b=Ai58r7Y+sjsCVyWuMVtRjUEqvw
 Qph/u5bMqcUYJyBtbXxlT/MiL6ykle7Ar2+hKagXLf1vbAjllWCqkMGkrE3wYkFIbaCUo10WcwIDr
 RfNZKoWCJ6iwpujvLhw5bjzi1N77EvMqslSStCXBJhFUj95UnC0/btAu0XIfMI3QPho0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBr-000305-Vk
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jJdBr-0008HI-Up
 for xen-changelog@lists.xenproject.org; Wed, 01 Apr 2020 13:13:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jJdBr-0008HI-Up@xenbits.xenproject.org>
Date: Wed, 01 Apr 2020 13:13:55 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/amd: Rework parsing logic
 in cpu_request_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDRkZTkzNmEzOGFhOTZjOTQ2ZjVkMzliMjc2MGFiYjhhOTg1M2NiYTMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxOTozOTowOCAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogUmV3b3JrIHBhcnNpbmcgbG9naWMgaW4g
Y3B1X3JlcXVlc3RfbWljcm9jb2RlKCkKICAgIAogICAgY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkg
aXMgc3RpbGwgYSBjb25mdXNpbmcgbWVzcyB0byBmb2xsb3csIHdpdGggc3ViCiAgICBmdW5jdGlv
bnMgcmVzcG9uc2libGUgZm9yIG1haW50YWluaW5nIG9mZnNldC4gIFJld3JpdGUgaXQgc28gYWxs
IGNvbnRhaW5lcgogICAgc3RydWN0dXJlIGhhbmRsaW5nIGlzIGluIHRoaXMgb25lIGZ1bmN0aW9u
LgogICAgCiAgICBSZXdyaXRlIHN0cnVjdCBtcGJoZHIgYXMgc3RydWN0IGNvbnRhaW5lcl9lcXVp
dl90YWJsZSB0byBhaWQgcGFyc2luZy4gIERyb3AKICAgIGNvbnRhaW5lcl9mYXN0X2ZvcndhcmQo
KSBlbnRpcmVseSwgYW5kIHNocmluayBzY2FuX2VxdWl2X2NwdV90YWJsZSgpIHRvIGp1c3QKICAg
IGl0cyBzZWFyY2hpbmcvY2FjaGluZyBsb2dpYy4KICAgIAogICAgY29udGFpbmVyX2Zhc3RfZm9y
d2FyZCgpIGdldHMgbG9naWNhbGx5IGZvbGRlZCBpbnRvIHRoZSBtaWNyb2NvZGUgYmxvYgogICAg
c2Nhbm5pbmcgbG9vcCwgZXhjZXB0IHRoYXQgYSBza2lwIHBhdGggaXMgaW5zZXJ0ZWQsIHdoaWNo
IGlzIGNvbmRpdGlvbmFsIG9uCiAgICB3aGV0aGVyIHNjYW5fZXF1aXZfY3B1X3RhYmxlKCkgdGhp
bmtzIHRoZXJlIGlzIGFwcHJvcHJpYXRlIG1pY3JvY29kZSB0byBmaW5kLgogICAgCiAgICBXaXRo
IHRoaXMgY2hhbmdlLCB3ZSBub3cgc2NhbiB0byB0aGUgZW5kIG9mIGFsbCBwcm92aWRlZCBtaWNy
b2NvZGUgY29udGFpbmVycywKICAgIGFuZCBubyBsb25nZXIgZ2l2ZSB1cCBhdCB0aGUgZmlyc3Qg
YXBwbGljYWJsZSBvbmUuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFu
ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CiAgICBSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpi
ZXVsaWNoQHN1c2UuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jIHwg
MTY5ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n
ZWQsIDQ1IGluc2VydGlvbnMoKyksIDEyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4v
YXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jCmluZGV4IGI5ZWJmODFlMGEuLmQ0NzYzZWE3NzYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo
L3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jCkBAIC0yNSwxMCArMjUsNiBAQAogCiAjZGVmaW5lIHByX2RlYnVnKHguLi4pICgodm9p
ZCkwKQogCi0jZGVmaW5lIENPTlRfSERSX1NJWkUgICAgICAgICAgIDEyCi0jZGVmaW5lIFNFQ1RJ
T05fSERSX1NJWkUgICAgICAgIDgKLSNkZWZpbmUgUEFUQ0hfSERSX1NJWkUgICAgICAgICAgMzIK
LQogc3RydWN0IF9fcGFja2VkIGVxdWl2X2NwdV9lbnRyeSB7CiAgICAgdWludDMyX3QgaW5zdGFs
bGVkX2NwdTsKICAgICB1aW50MzJfdCBmaXhlZF9lcnJhdGFfbWFzazsKQEAgLTU4LDEwICs1NCwx
MCBAQCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoIHsKICNkZWZpbmUgVUNPREVfRVFVSVZfQ1BVX1RB
QkxFX1RZUEUgMHgwMDAwMDAwMAogI2RlZmluZSBVQ09ERV9VQ09ERV9UWVBFICAgICAgICAgICAw
eDAwMDAwMDAxCiAKLXN0cnVjdCBtcGJoZHIgewotICAgIHVpbnQzMl90IHR5cGU7CitzdHJ1Y3Qg
Y29udGFpbmVyX2VxdWl2X3RhYmxlIHsKKyAgICB1aW50MzJfdCB0eXBlOyAvKiBVQ09ERV9FUVVJ
Vl9DUFVfVEFCTEVfVFlQRSAqLwogICAgIHVpbnQzMl90IGxlbjsKLSAgICB1aW50OF90IGRhdGFb
XTsKKyAgICBzdHJ1Y3QgZXF1aXZfY3B1X2VudHJ5IGVxW107CiB9Owogc3RydWN0IGNvbnRhaW5l
cl9taWNyb2NvZGUgewogICAgIHVpbnQzMl90IHR5cGU7IC8qIFVDT0RFX1VDT0RFX1RZUEUgKi8K
QEAgLTI2OSw1NSArMjY1LDI1IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMg
aW50IHNjYW5fZXF1aXZfY3B1X3RhYmxlKAotICAgIGNvbnN0IHZvaWQgKmRhdGEsCi0gICAgc2l6
ZV90IHNpemVfbGVmdCwKLSAgICBzaXplX3QgKm9mZnNldCkKK3N0YXRpYyBpbnQgc2Nhbl9lcXVp
dl9jcHVfdGFibGUoY29uc3Qgc3RydWN0IGNvbnRhaW5lcl9lcXVpdl90YWJsZSAqZXQpCiB7CiAg
ICAgY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZyA9ICZ0aGlzX2NwdShjcHVfc2lnKTsK
LSAgICBjb25zdCBzdHJ1Y3QgbXBiaGRyICptcGJ1ZjsKLSAgICBjb25zdCBzdHJ1Y3QgZXF1aXZf
Y3B1X2VudHJ5ICplcTsKLSAgICB1bnNpZ25lZCBpbnQgaSwgbnI7Ci0KLSAgICBpZiAoIHNpemVf
bGVmdCA8IChzaXplb2YoKm1wYnVmKSArIDQpIHx8Ci0gICAgICAgICAobXBidWYgPSBkYXRhICsg
Km9mZnNldCArIDQsCi0gICAgICAgICAgc2l6ZV9sZWZ0IC0gc2l6ZW9mKCptcGJ1ZikgLSA0IDwg
bXBidWYtPmxlbikgKQotICAgIHsKLSAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICJtaWNy
b2NvZGU6IE5vIHNwYWNlIGZvciBlcXVpdmFsZW50IGNwdSB0YWJsZVxuIik7Ci0gICAgICAgIHJl
dHVybiAtRUlOVkFMOwotICAgIH0KLQotICAgICpvZmZzZXQgKz0gbXBidWYtPmxlbiArIENPTlRf
SERSX1NJWkU7CS8qIGFkZCBoZWFkZXIgbGVuZ3RoICovCi0KLSAgICBpZiAoIG1wYnVmLT50eXBl
ICE9IFVDT0RFX0VRVUlWX0NQVV9UQUJMRV9UWVBFICkKLSAgICB7Ci0gICAgICAgIHByaW50ayhL
RVJOX0VSUiAibWljcm9jb2RlOiBXcm9uZyBtaWNyb2NvZGUgZXF1aXZhbGVudCBjcHUgdGFibGUg
dHlwZSBmaWVsZFxuIik7Ci0gICAgICAgIHJldHVybiAtRUlOVkFMOwotICAgIH0KLQotICAgIGlm
ICggbXBidWYtPmxlbiA9PSAwIHx8IG1wYnVmLT5sZW4gJSBzaXplb2YoKmVxKSB8fAotICAgICAg
ICAgKGVxID0gKGNvbnN0IHZvaWQgKiltcGJ1Zi0+ZGF0YSwKLSAgICAgICAgICBuciA9IG1wYnVm
LT5sZW4gLyBzaXplb2YoKmVxKSwKLSAgICAgICAgICBlcVtuciAtIDFdLmluc3RhbGxlZF9jcHUp
ICkKLSAgICB7Ci0gICAgICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBXcm9uZyBtaWNy
b2NvZGUgZXF1aXZhbGVudCBjcHUgdGFibGUgbGVuZ3RoXG4iKTsKLSAgICAgICAgcmV0dXJuIC1F
SU5WQUw7Ci0gICAgfQorICAgIHVuc2lnbmVkIGludCBpLCBuciA9IGV0LT5sZW4gLyBzaXplb2Yo
ZXQtPmVxWzBdKTsKIAogICAgIC8qIFNlYXJjaCB0aGUgZXF1aXZfY3B1X3RhYmxlIGZvciB0aGUg
Y3VycmVudCBDUFUuICovCi0gICAgZm9yICggaSA9IDA7IGkgPCBuciAmJiBlcVtpXS5pbnN0YWxs
ZWRfY3B1OyArK2kgKQorICAgIGZvciAoIGkgPSAwOyBpIDwgbnIgJiYgZXQtPmVxW2ldLmluc3Rh
bGxlZF9jcHU7ICsraSApCiAgICAgewotICAgICAgICBpZiAoIGVxW2ldLmluc3RhbGxlZF9jcHUg
IT0gc2lnLT5zaWcgKQorICAgICAgICBpZiAoIGV0LT5lcVtpXS5pbnN0YWxsZWRfY3B1ICE9IHNp
Zy0+c2lnICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICggIWVxdWl2LnNp
ZyApIC8qIENhY2hlIGRldGFpbHMgb24gZmlyc3QgZmluZC4gKi8KICAgICAgICAgewogICAgICAg
ICAgICAgZXF1aXYuc2lnID0gc2lnLT5zaWc7Ci0gICAgICAgICAgICBlcXVpdi5pZCAgPSBlcVtp
XS5lcXVpdl9jcHU7CisgICAgICAgICAgICBlcXVpdi5pZCAgPSBldC0+ZXFbaV0uZXF1aXZfY3B1
OwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIGVxdWl2
LnNpZyAhPSBzaWctPnNpZyB8fCBlcXVpdi5pZCAhPSBlcVtpXS5lcXVpdl9jcHUgKQorICAgICAg
ICBpZiAoIGVxdWl2LnNpZyAhPSBzaWctPnNpZyB8fCBlcXVpdi5pZCAhPSBldC0+ZXFbaV0uZXF1
aXZfY3B1ICkKICAgICAgICAgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFRoaXMg
Y2FuIG9ubHkgb2NjdXIgaWYgdHdvIGVxdWl2IHRhYmxlcyBoYXZlIGJlZW4gc2VlbiB3aXRoCkBA
IC0zMjcsNyArMjkzLDcgQEAgc3RhdGljIGludCBzY2FuX2VxdWl2X2NwdV90YWJsZSgKICAgICAg
ICAgICAgICAqLwogICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKICAgICAgICAgICAgICAg
ICAgICAibWljcm9jb2RlOiBFcXVpdiBtaXNtYXRjaDogY3B1ICUwOHgsIGdvdCAlMDR4LCBjYWNo
ZWQgJTA0eFxuIiwKLSAgICAgICAgICAgICAgICAgICBzaWctPnNpZywgZXFbaV0uZXF1aXZfY3B1
LCBlcXVpdi5pZCk7CisgICAgICAgICAgICAgICAgICAgc2lnLT5zaWcsIGV0LT5lcVtpXS5lcXVp
dl9jcHUsIGVxdWl2LmlkKTsKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgICAgICB9
CiAKQEAgLTMzOCwxMDAgKzMwNCw1MiBAQCBzdGF0aWMgaW50IHNjYW5fZXF1aXZfY3B1X3RhYmxl
KAogICAgIHJldHVybiAtRVNSQ0g7CiB9CiAKLXN0YXRpYyBpbnQgY29udGFpbmVyX2Zhc3RfZm9y
d2FyZChjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZV9sZWZ0LCBzaXplX3QgKm9mZnNldCkK
LXsKLSAgICBmb3IgKCA7IDsgKQotICAgIHsKLSAgICAgICAgc2l6ZV90IHNpemU7Ci0gICAgICAg
IGNvbnN0IHVpbnQzMl90ICpoZWFkZXI7Ci0KLSAgICAgICAgaWYgKCBzaXplX2xlZnQgPCBTRUNU
SU9OX0hEUl9TSVpFICkKLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwotCi0gICAgICAgIGhl
YWRlciA9IGRhdGEgKyAqb2Zmc2V0OwotCi0gICAgICAgIGlmICggaGVhZGVyWzBdID09IFVDT0RF
X01BR0lDICYmCi0gICAgICAgICAgICAgaGVhZGVyWzFdID09IFVDT0RFX0VRVUlWX0NQVV9UQUJM
RV9UWVBFICkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmICggaGVhZGVyWzBdICE9
IFVDT0RFX1VDT0RFX1RZUEUgKQotICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Ci0gICAgICAg
IHNpemUgPSBoZWFkZXJbMV0gKyBTRUNUSU9OX0hEUl9TSVpFOwotICAgICAgICBpZiAoIHNpemUg
PCBQQVRDSF9IRFJfU0laRSB8fCBzaXplX2xlZnQgPCBzaXplICkKLSAgICAgICAgICAgIHJldHVy
biAtRUlOVkFMOwotCi0gICAgICAgIHNpemVfbGVmdCAtPSBzaXplOwotICAgICAgICAqb2Zmc2V0
ICs9IHNpemU7Ci0KLSAgICAgICAgaWYgKCAhc2l6ZV9sZWZ0ICkKLSAgICAgICAgICAgIHJldHVy
biAtRU5PREFUQTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIHN0cnVjdCBt
aWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsIHNp
emVfdCBzaXplKQogewogICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnNhdmVkID0g
TlVMTDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IE5VTEw7Ci0gICAgc2l6
ZV90IG9mZnNldCA9IDAsIHNhdmVkX3NpemUgPSAwOworICAgIHNpemVfdCBzYXZlZF9zaXplID0g
MDsKICAgICBpbnQgZXJyb3IgPSAwOwotICAgIHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vz
c29yX2lkKCk7Ci0gICAgY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZyA9ICZwZXJfY3B1
KGNwdV9zaWcsIGNwdSk7CiAKLSAgICBpZiAoIHNpemUgPCA0IHx8ICooY29uc3QgdWludDMyX3Qg
KilidWYgIT0gVUNPREVfTUFHSUMgKQorICAgIHdoaWxlICggc2l6ZSApCiAgICAgewotICAgICAg
ICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogV3JvbmcgbWljcm9jb2RlIHBhdGNoIGZpbGUg
bWFnaWNcbiIpOwotICAgICAgICBlcnJvciA9IC1FSU5WQUw7Ci0gICAgICAgIGdvdG8gb3V0Owot
ICAgIH0KLQotICAgIC8qCi0gICAgICogTXVsdGlwbGUgY29udGFpbmVyIGZpbGUgc3VwcG9ydDoK
LSAgICAgKiAxLiBjaGVjayBpZiB0aGlzIGNvbnRhaW5lciBmaWxlIGhhcyBlcXVpdl9jcHVfaWQg
bWF0Y2gKLSAgICAgKiAyLiBJZiBub3QsIGZhc3QtZndkIHRvIG5leHQgY29udGFpbmVyIGZpbGUK
LSAgICAgKi8KLSAgICB3aGlsZSAoIG9mZnNldCA8IHNpemUgKQotICAgIHsKLSAgICAgICAgZXJy
b3IgPSBzY2FuX2VxdWl2X2NwdV90YWJsZShidWYsIHNpemUgLSBvZmZzZXQsICZvZmZzZXQpOwot
Ci0gICAgICAgIGlmICggIWVycm9yIHx8IGVycm9yICE9IC1FU1JDSCApCi0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY29uc3Qgc3RydWN0IGNvbnRhaW5lcl9lcXVpdl90YWJsZSAqZXQ7Cisg
ICAgICAgIGJvb2wgc2tpcF91Y29kZTsKIAotICAgICAgICBlcnJvciA9IGNvbnRhaW5lcl9mYXN0
X2ZvcndhcmQoYnVmLCBzaXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKLSAgICAgICAgaWYgKCBlcnJv
ciA9PSAtRU5PREFUQSApCisgICAgICAgIGlmICggc2l6ZSA8IDQgfHwgKihjb25zdCB1aW50MzJf
dCAqKWJ1ZiAhPSBVQ09ERV9NQUdJQyApCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChv
ZmZzZXQgPT0gc2l6ZSk7CisgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAibWljcm9jb2Rl
OiBXcm9uZyBtaWNyb2NvZGUgcGF0Y2ggZmlsZSBtYWdpY1xuIik7CisgICAgICAgICAgICBlcnJv
ciA9IC1FSU5WQUw7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAo
IGVycm9yICkKKworICAgICAgICAvKiBNb3ZlIG92ZXIgVUNPREVfTUFHSUMuICovCisgICAgICAg
IGJ1ZiAgKz0gNDsKKyAgICAgICAgc2l6ZSAtPSA0OworCisgICAgICAgIGlmICggc2l6ZSA8IHNp
emVvZigqZXQpIHx8CisgICAgICAgICAgICAgKGV0ID0gYnVmKS0+dHlwZSAhPSBVQ09ERV9FUVVJ
Vl9DUFVfVEFCTEVfVFlQRSB8fAorICAgICAgICAgICAgIHNpemUgLSBzaXplb2YoKmV0KSA8IGV0
LT5sZW4gfHwKKyAgICAgICAgICAgICBldC0+bGVuICUgc2l6ZW9mKGV0LT5lcVswXSkgfHwKKyAg
ICAgICAgICAgICBldC0+ZXFbKGV0LT5sZW4gLyBzaXplb2YoZXQtPmVxWzBdKSkgLSAxXS5pbnN0
YWxsZWRfY3B1ICkKICAgICAgICAgewotICAgICAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNy
b2NvZGU6IENQVSVkIGluY29ycmVjdCBvciBjb3JydXB0IGNvbnRhaW5lciBmaWxlXG4iCi0gICAg
ICAgICAgICAgICAgICAgIm1pY3JvY29kZTogRmFpbGVkIHRvIHVwZGF0ZSBwYXRjaCBsZXZlbC4g
IgotICAgICAgICAgICAgICAgICAgICJDdXJyZW50IGx2bDolI3hcbiIsIGNwdSwgc2lnLT5yZXYp
OworICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIm1pY3JvY29kZTogQmFkIGVxdWl2YWxl
bnQgY3B1IHRhYmxlXG4iKTsKKyAgICAgICAgICAgIGVycm9yID0gLUVJTlZBTDsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgaWYgKCBlcnJvciApCi0gICAgewot
ICAgICAgICAvKgotICAgICAgICAgKiAtRU5PREFUQSBoZXJlIG1lYW5zIHRoYXQgdGhlIGJsb2Ig
d2FzIHBhcnNlZCBmaW5lIGJ1dCBubyBtYXRjaGluZwotICAgICAgICAgKiB1Y29kZSB3YXMgZm91
bmQuIERvbid0IHJldHVybiBpdCB0byB0aGUgY2FsbGVyLgotICAgICAgICAgKi8KLSAgICAgICAg
aWYgKCBlcnJvciA9PSAtRU5PREFUQSApCi0gICAgICAgICAgICBlcnJvciA9IDA7Ci0KLSAgICAg
ICAgZ290byBvdXQ7Ci0gICAgfQorICAgICAgICAvKiBNb3ZlIG92ZXIgdGhlIEVxdWl2IHRhYmxl
LiAqLworICAgICAgICBidWYgICs9IHNpemVvZigqZXQpICsgZXQtPmxlbjsKKyAgICAgICAgc2l6
ZSAtPSBzaXplb2YoKmV0KSArIGV0LT5sZW47CisKKyAgICAgICAgZXJyb3IgPSBzY2FuX2VxdWl2
X2NwdV90YWJsZShldCk7CisKKyAgICAgICAgLyogLUVTUkNIIG1lYW5zIG5vIGFwcGxpY2FibGUg
bWljcm9jb2RlIGluIHRoaXMgY29udGFpbmVyLiAqLworICAgICAgICBpZiAoIGVycm9yICYmIGVy
cm9yICE9IC1FU1JDSCApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc2tpcF91Y29kZSA9
IGVycm9yOworICAgICAgICBlcnJvciA9IDA7CiAKLSAgICAvKgotICAgICAqIEl0J3MgcG9zc2li
bGUgdGhlIGRhdGEgZmlsZSBoYXMgbXVsdGlwbGUgbWF0Y2hpbmcgdWNvZGUsCi0gICAgICogbGV0
cyBrZWVwIHNlYXJjaGluZyB0aWxsIHRoZSBsYXRlc3QgdmVyc2lvbgotICAgICAqLwotICAgIGJ1
ZiAgKz0gb2Zmc2V0OwotICAgIHNpemUgLT0gb2Zmc2V0OwotICAgIHsKICAgICAgICAgd2hpbGUg
KCBzaXplICkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3Qgc3RydWN0IGNvbnRhaW5lcl9t
aWNyb2NvZGUgKm1jOwpAQCAtNDM5LDEzICszNTcsMTYgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2Nv
ZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsIHNpemVfdCBz
aXoKICAgICAgICAgICAgIGlmICggc2l6ZSA8IHNpemVvZigqbWMpIHx8CiAgICAgICAgICAgICAg
ICAgIChtYyA9IGJ1ZiktPnR5cGUgIT0gVUNPREVfVUNPREVfVFlQRSB8fAogICAgICAgICAgICAg
ICAgICBzaXplIC0gc2l6ZW9mKCptYykgPCBtYy0+bGVuIHx8Ci0gICAgICAgICAgICAgICAgICF2
ZXJpZnlfcGF0Y2hfc2l6ZShtYy0+bGVuKSApCisgICAgICAgICAgICAgICAgICghc2tpcF91Y29k
ZSAmJiAhdmVyaWZ5X3BhdGNoX3NpemUobWMtPmxlbikpICkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAibWljcm9jb2RlOiBCYWQgbWljcm9jb2RlIGRh
dGFcbiIpOwogICAgICAgICAgICAgICAgIGVycm9yID0gLUVJTlZBTDsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCBza2lwX3Vjb2RlICkK
KyAgICAgICAgICAgICAgICBnb3RvIHNraXA7CisKICAgICAgICAgICAgIC8qCiAgICAgICAgICAg
ICAgKiBJZiB0aGUgbmV3IHVjb2RlIGNvdmVycyBjdXJyZW50IENQVSwgY29tcGFyZSB1Y29kZXMg
YW5kIHN0b3JlIHRoZQogICAgICAgICAgICAgICogb25lIHdpdGggaGlnaGVyIHJldmlzaW9uLgpA
QCAtNDU4LDYgKzM3OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVx
dWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIC8qIE1vdmUgb3ZlciB0aGUgbWljcm9jb2RlIGJsb2IuICovCisgICAg
ICAgIHNraXA6CiAgICAgICAgICAgICBidWYgICs9IHNpemVvZigqbWMpICsgbWMtPmxlbjsKICAg
ICAgICAgICAgIHNpemUgLT0gc2l6ZW9mKCptYykgKyBtYy0+bGVuOwogCkBAIC00NzcsNyArMzk5
LDYgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29k
ZShjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXoKICAgICAgICAgICAgIGVycm9yID0gLUVOT01F
TTsKICAgICB9CiAKLSAgb3V0OgogICAgIGlmICggZXJyb3IgJiYgIXBhdGNoICkKICAgICAgICAg
cGF0Y2ggPSBFUlJfUFRSKGVycm9yKTsKIAotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZv
ciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3RhZ2luZwoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNo
YW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 09:00:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 09:00:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKIBL-00023z-B6; Fri, 03 Apr 2020 09:00:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKIBK-00023u-KK
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:06 +0000
X-Inumbo-ID: 82c68d66-7589-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 82c68d66-7589-11ea-9e09-bc764e2007e4;
 Fri, 03 Apr 2020 09:00:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4T0j9LSp+ESR64SOF2vHAUaGWU+scHnrL87X4iA35IU=; b=j7lwUj0Kfi+oIsdsa70dd/Ctej
 5sKE7LJQPv0tKhKaohEriEq+Bo2Y/e+xXqY5WKTiIC/okmIIlxfQo43zZ7qArTlnMtCMVGrTmzO72
 huOX+HEEbs55nYBbIT/kOxfPyScRC+ekFfnkd9cghRDEiMxvRFORjlmYw2GofsTpEb4U=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBJ-0002Fj-6o
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBJ-0007Nm-5Y
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKIBJ-0007Nm-5Y@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 09:00:05 +0000
Subject: [Xen-changelog] [xen staging] credit2: avoid vCPUs to ever reach
 lower credits than idle
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============4177795724377599525=="
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

--===============4177795724377599525==
Content-Type: text/plain

commit 36f3662f27dec32d76c0edb4c6b62b9628d6869d
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Fri Apr 3 10:45:43 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 3 10:45:43 2020 +0200

    credit2: avoid vCPUs to ever reach lower credits than idle
    
    There have been report of stalls of guest vCPUs, when Credit2 was used.
    It seemed like these vCPUs were not getting scheduled for very long
    time, even under light load conditions (e.g., during dom0 boot).
    
    Investigations led to the discovery that --although rarely-- it can
    happen that a vCPU manages to run for very long timeslices. In Credit2,
    this means that, when runtime accounting happens, the vCPU will lose a
    large quantity of credits. This in turn may lead to the vCPU having less
    credits than the idle vCPUs (-2^30). At this point, the scheduler will
    pick the idle vCPU, instead of the ready to run vCPU, for a few
    "epochs", which often times is enough for the guest kernel to think the
    vCPU is not responding and crashing.
    
    An example of this situation is shown here. In fact, we can see d0v1
    sitting in the runqueue while all the CPUs are idle, as it has
    -1254238270 credits, which is smaller than -2^30 = −1073741824:
    
        (XEN) Runqueue 0:
        (XEN)   ncpus              = 28
        (XEN)   cpus               = 0-27
        (XEN)   max_weight         = 256
        (XEN)   pick_bias          = 22
        (XEN)   instload           = 1
        (XEN)   aveload            = 293391 (~111%)
        (XEN)   idlers: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        (XEN)   tickled: 00,00000000,00000000,00000000,00000000,00000000,00000000
        (XEN)   fully idle cores: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        [...]
        (XEN) Runqueue 0:
        (XEN) CPU[00] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[01] runq=0, sibling=00,..., core=00,...
        [...]
        (XEN) CPU[26] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[27] runq=0, sibling=00,..., core=00,...
        (XEN) RUNQ:
        (XEN)     0: [0.1] flags=0 cpu=5 credit=-1254238270 [w=256] load=262144 (~100%)
    
    We certainly don't want, under any circumstance, this to happen.
    Let's, therefore, define a minimum amount of credits a vCPU can have.
    During accounting, we make sure that, for however long the vCPU has
    run, it will never get to have less than such minimum amount of
    credits. Then, we set the credits of the idle vCPU to an even
    smaller value.
    
    NOTE: investigations have been done about _how_ it is possible for a
    vCPU to execute for so much time that its credits becomes so low. While
    still not completely clear, there are evidence that:
    - it only happens very rarely,
    - it appears to be both machine and workload specific,
    - it does not look to be a Credit2 (e.g., as it happens when
      running with Credit1 as well) issue, or a scheduler issue.
    
    This patch makes Credit2 more robust to events like this, whatever
    the cause is, and should hence be backported (as far as possible).
    
    Reported-by: Glen <glenbarney@gmail.com>
    Reported-by: Tomas Mozes <hydrapolic@gmail.com>
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  5 ++---
 xen/common/sched/credit2.c | 53 ++++++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index d6e7e3f800..8f126f65f1 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -55,7 +55,7 @@
 0x00022204  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_add
 0x00022205  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle_check   [ dom:vcpu = 0x%(1)08x, credit = %(2)d, score = %(3)d ]
 0x00022206  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle         [ cpu = %(1)d ]
-0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d, mult = %(4)d ]
+0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d ]
 0x00022208  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:sched_tasklet
 0x00022209  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:update_load
 0x0002220a  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_assign    [ dom:vcpu = 0x%(1)08x, rq_id = %(2)d ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index aa894673ad..d3c8368e9d 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7718,13 +7718,12 @@ void sched_process(struct pcpu_info *p)
                 struct {
                     unsigned int vcpuid:16, domid:16;
                     int credit_start, credit_end;
-                    unsigned int multiplier;
                 } *r = (typeof(r))ri->d;
 
                 printf(" %s csched2:reset_credits d%uv%u, "
-                       "credit_start = %d, credit_end = %d, mult = %u\n",
+                       "credit_start = %d, credit_end = %d\n",
                        ri->dump_header, r->domid, r->vcpuid,
-                       r->credit_start, r->credit_end, r->multiplier);
+                       r->credit_start, r->credit_end);
             }
             break;
         case TRC_SCHED_CLASS_EVT(CSCHED2, 8):  /* SCHED_TASKLET    */
diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c
index c7241944a8..cbf9ce2b97 100644
--- a/xen/common/sched/credit2.c
+++ b/xen/common/sched/credit2.c
@@ -230,11 +230,21 @@
  */
 #define CSCHED2_CREDIT_INIT          MILLISECS(10)
 /*
+ * Minimum amount of credits VMs can have. Ideally, no VM would get
+ * close to this (unless a vCPU manages to execute for really long
+ * time uninterrupted). In case it happens, it makes no sense to
+ * track even deeper undershoots.
+ *
+ * NOTE: If making this smaller than -CSCHED2_CREDIT_INIT, adjust
+ * reset_credit() accordingly.
+ */
+#define CSCHED2_CREDIT_MIN           (-CSCHED2_CREDIT_INIT)
+/*
  * Amount of credit the idle units have. It never changes, as idle
  * units does not consume credits, and it must be lower than whatever
  * amount of credit 'regular' unit would end up with.
  */
-#define CSCHED2_IDLE_CREDIT          (-(1U<<30))
+#define CSCHED2_IDLE_CREDIT          (CSCHED2_CREDIT_MIN-1)
 /*
  * Carryover: How much "extra" credit may be carried over after
  * a reset.
@@ -781,10 +791,15 @@ static int get_fallback_cpu(struct csched2_unit *svc)
 static void t2c_update(const struct csched2_runqueue_data *rqd, s_time_t time,
                           struct csched2_unit *svc)
 {
-    uint64_t val = time * rqd->max_weight + svc->residual;
+    int64_t val = time * rqd->max_weight + svc->residual;
 
     svc->residual = do_div(val, svc->weight);
-    svc->credit -= val;
+    /* Getting to lower credit than CSCHED2_CREDIT_MIN makes no sense. */
+    val = svc->credit - val;
+    if ( unlikely(val < CSCHED2_CREDIT_MIN) )
+        svc->credit = CSCHED2_CREDIT_MIN;
+    else
+        svc->credit = val;
 }
 
 static s_time_t c2t(const struct csched2_runqueue_data *rqd, s_time_t credit,
@@ -1616,28 +1631,25 @@ static void reset_credit(int cpu, s_time_t now, struct csched2_unit *snext)
 {
     struct csched2_runqueue_data *rqd = c2rqd(cpu);
     struct list_head *iter;
-    int m;
+    int reset = CSCHED2_CREDIT_INIT;
 
     /*
      * Under normal circumstances, snext->credit should never be less
      * than -CSCHED2_MIN_TIMER.  However, under some circumstances, an
      * unit with low credits may be allowed to run long enough that
-     * its credits are actually less than -CSCHED2_CREDIT_INIT.
+     * its credits are actually much lower than that.
      * (Instances have been observed, for example, where an unit with
      * 200us of credit was allowed to run for 11ms, giving it -10.8ms
      * of credit.  Thus it was still negative even after the reset.)
      *
      * If this is the case for snext, we simply want to keep moving
-     * everyone up until it is in the black again.  This fair because
-     * none of the other units want to run at the moment.
-     *
-     * Rather than looping, however, we just calculate a multiplier,
-     * avoiding an integer division and multiplication in the common
-     * case.
+     * everyone up until it is in the black again. This means that,
+     * since CSCHED2_CREDIT_MIN is -CSCHED2_CREDIT_INIT, we need to
+     * actually add 2*CSCHED2_CREDIT_INIT.
      */
-    m = 1;
-    if ( snext->credit < -CSCHED2_CREDIT_INIT )
-        m += (-snext->credit) / CSCHED2_CREDIT_INIT;
+    ASSERT(snext->credit >= CSCHED2_CREDIT_MIN);
+    if ( unlikely(snext->credit == CSCHED2_CREDIT_MIN) )
+        reset += CSCHED2_CREDIT_INIT;
 
     list_for_each( iter, &rqd->svc )
     {
@@ -1668,15 +1680,7 @@ static void reset_credit(int cpu, s_time_t now, struct csched2_unit *snext)
         }
 
         start_credit = svc->credit;
-
-        /*
-         * Add INIT * m, avoiding integer multiplication in the common case.
-         */
-        if ( likely(m==1) )
-            svc->credit += CSCHED2_CREDIT_INIT;
-        else
-            svc->credit += m * CSCHED2_CREDIT_INIT;
-
+        svc->credit += reset;
         /* "Clip" credits to max carryover */
         if ( svc->credit > CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX )
             svc->credit = CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX;
@@ -1688,19 +1692,18 @@ static void reset_credit(int cpu, s_time_t now, struct csched2_unit *snext)
             struct {
                 unsigned unit:16, dom:16;
                 int credit_start, credit_end;
-                unsigned multiplier;
             } d;
             d.dom = svc->unit->domain->domain_id;
             d.unit = svc->unit->unit_id;
             d.credit_start = start_credit;
             d.credit_end = svc->credit;
-            d.multiplier = m;
             __trace_var(TRC_CSCHED2_CREDIT_RESET, 1,
                         sizeof(d),
                         (unsigned char *)&d);
         }
     }
 
+    ASSERT(snext->credit > 0);
     SCHED_STAT_CRANK(credit_reset);
 
     /* No need to resort runqueue, as everyone's order should be the same. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


--===============4177795724377599525==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5n
ZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

--===============4177795724377599525==--

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 09:00:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 09:00:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKIBW-00024o-DJ; Fri, 03 Apr 2020 09:00:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKIBV-00024g-Ix
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:17 +0000
X-Inumbo-ID: 88ce86b4-7589-11ea-bcd3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 88ce86b4-7589-11ea-bcd3-12813bfff9fa;
 Fri, 03 Apr 2020 09:00:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=cpQCImo5ElYCAeL+zL/mKxmm3byI/TLuyiAndsVEmP4=; b=RHqX4tM01zBDNXpczfGdzlmzPB
 rkcEWaXciNPt+eqWPky6TD1XdQv3y8LFtMchmUYqrSFo7WqmZn6Wusvz6Vdot2HzPsQf8R0sjwjLY
 iY29IySgOIGWrW6tL63tkrTVUUa6zosAWPVo8x9jS9pElM3YR4ySEzWsMrJpz73Ic/yg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBT-0002Fm-Ae
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBT-0007PI-9a
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKIBT-0007PI-9a@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 09:00:15 +0000
Subject: [Xen-changelog] [xen staging] credit2: fix credit reset happening
 too few times
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGRhZTdiNjJlOTc2YjI4YWY5YzhlZmExNTA2MThjMjU1MDFiZjE2NTAKQXV0aG9yOiAg
ICAgRGFyaW8gRmFnZ2lvbGkgPGRmYWdnaW9saUBzdXNlLmNvbT4KQXV0aG9yRGF0ZTogRnJpIEFw
ciAzIDEwOjQ2OjUzIDIwMjAgKzAyMDAKQ29tbWl0OiAgICAgSmFuIEJldWxpY2ggPGpiZXVsaWNo
QHN1c2UuY29tPgpDb21taXREYXRlOiBGcmkgQXByIDMgMTA6NDY6NTMgMjAyMCArMDIwMAoKICAg
IGNyZWRpdDI6IGZpeCBjcmVkaXQgcmVzZXQgaGFwcGVuaW5nIHRvbyBmZXcgdGltZXMKICAgIAog
ICAgVGhlcmUgaXMgYSBidWcgaW4gY29tbWl0IDVlNGI0MTk5NjY3YjkgKCJ4ZW46IGNyZWRpdDI6
IG9ubHkgcmVzZXQKICAgIGNyZWRpdCBvbiByZXNldCBjb25kaXRpb24iKS4gSW4gZmFjdCwgdGhl
IGFpbSBvZiB0aGF0IGNvbW1pdCB3YXMgdG8KICAgIG1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBw
ZXJmb3JtIHRvbyBtYW55IGNyZWRpdCByZXNldCBvcGVyYXRpb25zCiAgICAod2hpY2ggYXJlIG5v
dCBzdXBlciBjaGVhcCwgYW5kIGluIGFuIGhvdC1wYXRoKS4gQnV0IHRoZSBjaGVjayB1c2VkCiAg
ICB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlc2V0IGlzIG5lY2Vzc2FyeSB3YXMgdGhlIHdyb25n
IG9uZS4KICAgIAogICAgSW4gZmFjdCwga25vd2luZyBqdXN0IHRoYXQgc29tZSB2Q1BVcyBoYXZl
IGJlZW4gc2tpcHBlZCwgd2hpbGUKICAgIHRyYXZlcnNpbmcgdGhlIHJ1bnF1ZXVlIChpbiBydW5x
X2NhbmRpZGF0ZSgpKSwgaXMgbm90IGVub3VnaC4gV2UKICAgIG5lZWQgdG8gY2hlY2sgZXhwbGlj
aXRseSB3aGV0aGVyIHRoZSBmaXJzdCB2Q1BVIGluIHRoZSBydW5xdWV1ZQogICAgaGFzIGEgbmVn
YXRpdmUgYW1vdW50IG9mIGNyZWRpdC4KICAgIAogICAgU2luY2UgYSB0cmFjZSByZWNvcmQgaXMg
Y2hhbmdlZCwgdGhpcyBwYXRjaCB1cGRhdGVzIHhlbnRyYWNlIGZvcm1hdCBmaWxlCiAgICBhbmQg
eGVuYWx5emUgYXMgd2VsbAogICAgCiAgICBUaGlzIHNob3VsZCBiZSBiYWNrcG9ydGVkLgogICAg
CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXJpbyBGYWdnaW9saSA8ZGZhZ2dpb2xpQHN1c2UuY29tPgog
ICAgQWNrZWQtYnk6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KLS0t
CiB0b29scy94ZW50cmFjZS9mb3JtYXRzICAgICB8ICAyICstCiB0b29scy94ZW50cmFjZS94ZW5h
bHl6ZS5jICB8ICA4ICsrKy0tLS0tCiB4ZW4vY29tbW9uL3NjaGVkL2NyZWRpdDIuYyB8IDMwICsr
KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRp
b25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy94ZW50cmFjZS9mb3Jt
YXRzIGIvdG9vbHMveGVudHJhY2UvZm9ybWF0cwppbmRleCA4ZjEyNmY2NWYxLi5kZWFjNGQ4NTk4
IDEwMDY0NAotLS0gYS90b29scy94ZW50cmFjZS9mb3JtYXRzCisrKyBiL3Rvb2xzL3hlbnRyYWNl
L2Zvcm1hdHMKQEAgLTY3LDcgKzY3LDcgQEAKIDB4MDAwMjIyMTAgIENQVSUoY3B1KWQgICUodHNj
KWQgKCslKHJlbHRzYyk4ZCkgIGNzY2hlZDI6bG9hZF9jaGVjayAgICAgWyBscnFfaWRbMTZdOm9y
cV9pZFsxNl0gPSAweCUoMSkwOHgsIGRlbHRhID0gJSgyKWQgXQogMHgwMDAyMjIxMSAgQ1BVJShj
cHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpsb2FkX2JhbGFuY2UgICBbIGxf
YmF2Z2xvYWQgPSAweCUoMikwOHglKDEpMDh4LCBvX2Jhdmdsb2FkID0gMHglKDQpMDh4JSgzKTA4
eCwgbHJxX2lkWzE2XTpvcnFfaWRbMTZdID0gMHglKDUpMDh4IF0KIDB4MDAwMjIyMTIgIENQVSUo
Y3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkgIGNzY2hlZDI6cGlja19jcHUgICAgICAgWyBi
X2F2Z2xvYWQgPSAweCUoMikwOHglKDEpMDh4LCBkb206dmNwdSA9IDB4JSgzKTA4eCwgcnFfaWRb
MTZdOm5ld19jcHVbMTZdID0gJSg0KWQgXQotMHgwMDAyMjIxMyAgQ1BVJShjcHUpZCAgJSh0c2Mp
ZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpydW5xX2NhbmRpZGF0ZSBbIGRvbTp2Y3B1ID0gMHgl
KDEpMDh4LCBjcmVkaXQgPSAlKDQpZCwgc2tpcHBlZF92Y3B1cyA9ICUoMylkLCB0aWNrbGVkX2Nw
dSA9ICUoMilkIF0KKzB4MDAwMjIyMTMgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4
ZCkgIGNzY2hlZDI6cnVucV9jYW5kaWRhdGUgWyBkb206dmNwdSA9IDB4JSgxKTA4eCwgY3JlZGl0
ID0gJSgzKWQsIHRpY2tsZWRfY3B1ID0gJSgyKWQgXQogMHgwMDAyMjIxNCAgQ1BVJShjcHUpZCAg
JSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpzY2hlZHVsZSAgICAgICBbIHJxOmNwdSA9
IDB4JSgxKTA4eCwgdGFza2xldFs4XTppZGxlWzhdOnNtdF9pZGxlWzhdOnRpY2tsZWRbOF0gPSAl
KDIpMDh4IF0KIDB4MDAwMjIyMTUgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkg
IGNzY2hlZDI6cmF0ZWxpbWl0ICAgICAgWyBkb206dmNwdSA9IDB4JSgxKTA4eCwgcnVudGltZSA9
ICUoMilkIF0KIDB4MDAwMjIyMTYgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkg
IGNzY2hlZDI6cnVucV9jYW5kX2NoayAgWyBkb206dmNwdSA9IDB4JSgxKTA4eCBdCmRpZmYgLS1n
aXQgYS90b29scy94ZW50cmFjZS94ZW5hbHl6ZS5jIGIvdG9vbHMveGVudHJhY2UveGVuYWx5emUu
YwppbmRleCBkM2M4MzY4ZTlkLi5iN2Y0ZTJiZWE4IDEwMDY0NAotLS0gYS90b29scy94ZW50cmFj
ZS94ZW5hbHl6ZS5jCisrKyBiL3Rvb2xzL3hlbnRyYWNlL3hlbmFseXplLmMKQEAgLTc4NTUsMTQg
Kzc4NTUsMTIgQEAgdm9pZCBzY2hlZF9wcm9jZXNzKHN0cnVjdCBwY3B1X2luZm8gKnApCiAgICAg
ICAgICAgICBpZiAob3B0LmR1bXBfYWxsKSB7CiAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdmNwdWlkOjE2LCBkb21pZDoxNjsKLSAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgdGlja2xlZF9jcHUsIHNraXBwZWQ7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHRpY2tsZWRfY3B1OwogICAgICAgICAgICAgICAgICAgICBpbnQgY3Jl
ZGl0OwogICAgICAgICAgICAgICAgIH0gKnIgPSAodHlwZW9mKHIpKXJpLT5kOwogCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCIgJXMgY3NjaGVkMjpydW5xX2NhbmRpZGF0ZSBkJXV2JXUsIGNyZWRp
dCA9ICVkLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICIldSB2Y3B1cyBza2lwcGVkLCAiLAot
ICAgICAgICAgICAgICAgICAgICAgICByaS0+ZHVtcF9oZWFkZXIsIHItPmRvbWlkLCByLT52Y3B1
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgIHItPmNyZWRpdCwgci0+c2tpcHBlZCk7CisgICAg
ICAgICAgICAgICAgcHJpbnRmKCIgJXMgY3NjaGVkMjpydW5xX2NhbmRpZGF0ZSBkJXV2JXUsIGNy
ZWRpdCA9ICVkLCAiLAorICAgICAgICAgICAgICAgICAgICAgICByaS0+ZHVtcF9oZWFkZXIsIHIt
PmRvbWlkLCByLT52Y3B1aWQsIHItPmNyZWRpdCk7CiAgICAgICAgICAgICAgICAgaWYgKHItPnRp
Y2tsZWRfY3B1ID09ICh1bnNpZ25lZCktMSkKICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJu
byBjcHUgd2FzIHRpY2tsZWRcbiIpOwogICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L3hlbi9jb21tb24vc2NoZWQvY3JlZGl0Mi5jIGIveGVuL2NvbW1vbi9zY2hlZC9jcmVkaXQyLmMK
aW5kZXggY2JmOWNlMmI5Ny4uMzRmMDVjM2UyYSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hl
ZC9jcmVkaXQyLmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZC9jcmVkaXQyLmMKQEAgLTMyMjQsOCAr
MzIyNCw3IEBAIGNzY2hlZDJfcnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGlu
dCBjcHUsCiBzdGF0aWMgc3RydWN0IGNzY2hlZDJfdW5pdCAqCiBydW5xX2NhbmRpZGF0ZShzdHJ1
Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgICAgICAgICBzdHJ1Y3QgY3Nj
aGVkMl91bml0ICpzY3VyciwKLSAgICAgICAgICAgICAgIGludCBjcHUsIHNfdGltZV90IG5vdywK
LSAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqc2tpcHBlZCkKKyAgICAgICAgICAgICAgIGlu
dCBjcHUsIHNfdGltZV90IG5vdykKIHsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyLCAqdGVt
cDsKICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKnNyID0gZ2V0X3NjaGVkX3Jlcyhj
cHUpOwpAQCAtMzIzMyw4ICszMjMyLDYgQEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJf
cnVucXVldWVfZGF0YSAqcnFkLAogICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNz
Y2hlZDJfcHJpdihzci0+c2NoZWR1bGVyKTsKICAgICBib29sIHlpZWxkID0gZmFsc2UsIHNvZnRf
YWZmX3ByZWVtcHQgPSBmYWxzZTsKIAotICAgICpza2lwcGVkID0gMDsKLQogICAgIGlmICggdW5s
aWtlbHkoaXNfaWRsZV91bml0KHNjdXJyLT51bml0KSkgKQogICAgIHsKICAgICAgICAgc25leHQg
PSBzY3VycjsKQEAgLTMzMjgsMTIgKzMzMjUsOSBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3Nj
aGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWdu
ZWQgY2hhciAqKSZkKTsKICAgICAgICAgfQogCi0gICAgICAgIC8qIE9ubHkgY29uc2lkZXIgdW5p
dHMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gb24gdGhpcyBwcm9jZXNzb3IuICovCisgICAgICAg
IC8qIE9ubHkgY29uc2lkZXIgdmNwdXMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gb24gdGhpcyBw
cm9jZXNzb3IuICovCiAgICAgICAgIGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBzdmMtPnVu
aXQtPmNwdV9oYXJkX2FmZmluaXR5KSApCi0gICAgICAgIHsKLSAgICAgICAgICAgICgqc2tpcHBl
ZCkrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CiAKICAgICAgICAgLyoKICAg
ICAgICAgICogSWYgYW4gdW5pdCBpcyBtZWFudCB0byBiZSBwaWNrZWQgdXAgYnkgYW5vdGhlciBw
cm9jZXNzb3IsIGFuZCBzdWNoCkBAIC0zMzQyLDcgKzMzMzYsNiBAQCBydW5xX2NhbmRpZGF0ZShz
dHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgIGlmICggc3ZjLT50aWNr
bGVkX2NwdSAhPSAtMSAmJiBzdmMtPnRpY2tsZWRfY3B1ICE9IGNwdSAmJgogICAgICAgICAgICAg
IGNwdW1hc2tfdGVzdF9jcHUoc3ZjLT50aWNrbGVkX2NwdSwgJnJxZC0+dGlja2xlZCkgKQogICAg
ICAgICB7Ci0gICAgICAgICAgICAoKnNraXBwZWQpKys7CiAgICAgICAgICAgICBTQ0hFRF9TVEFU
X0NSQU5LKGRlZmVycmVkX3RvX3RpY2tsZWRfY3B1KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CkBAIC0zMzU0LDcgKzMzNDcsNiBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3Nj
aGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgIGlmICggc2NoZWRfdW5pdF9tYXN0ZXIo
c3ZjLT51bml0KSAhPSBjcHUKICAgICAgICAgICAgICAmJiBzbmV4dC0+Y3JlZGl0ICsgQ1NDSEVE
Ml9NSUdSQVRFX1JFU0lTVCA+IHN2Yy0+Y3JlZGl0ICkKICAgICAgICAgewotICAgICAgICAgICAg
KCpza2lwcGVkKSsrOwogICAgICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyhtaWdyYXRlX3Jlc2lz
dGVkKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0zMzc4LDE0ICszMzcw
LDEzIEBAIHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwK
ICAgICB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBk
b206MTY7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0aWNrbGVkX2NwdSwgc2tpcHBlZDsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIHRpY2tsZWRfY3B1OwogICAgICAgICAgICAgaW50IGNyZWRpdDsKICAg
ICAgICAgfSBkOwogICAgICAgICBkLmRvbSA9IHNuZXh0LT51bml0LT5kb21haW4tPmRvbWFpbl9p
ZDsKICAgICAgICAgZC51bml0ID0gc25leHQtPnVuaXQtPnVuaXRfaWQ7CiAgICAgICAgIGQuY3Jl
ZGl0ID0gc25leHQtPmNyZWRpdDsKICAgICAgICAgZC50aWNrbGVkX2NwdSA9IHNuZXh0LT50aWNr
bGVkX2NwdTsKLSAgICAgICAgZC5za2lwcGVkID0gKnNraXBwZWQ7CiAgICAgICAgIF9fdHJhY2Vf
dmFyKFRSQ19DU0NIRUQyX1JVTlFfQ0FORElEQVRFLCAxLAogICAgICAgICAgICAgICAgICAgICBz
aXplb2YoZCksCiAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopJmQpOwpAQCAt
MzQxNyw3ICszNDA4LDYgQEAgc3RhdGljIHZvaWQgY3NjaGVkMl9zY2hlZHVsZSgKICAgICBzdHJ1
Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQ7CiAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAq
IGNvbnN0IHNjdXJyID0gY3NjaGVkMl91bml0KGN1cnJ1bml0KTsKICAgICBzdHJ1Y3QgY3NjaGVk
Ml91bml0ICpzbmV4dCA9IE5VTEw7Ci0gICAgdW5zaWduZWQgaW50IHNraXBwZWRfdW5pdHMgPSAw
OwogICAgIGJvb2wgdGlja2xlZDsKICAgICBib29sIG1pZ3JhdGVkID0gZmFsc2U7CiAKQEAgLTM0
OTUsNyArMzQ4NSw3IEBAIHN0YXRpYyB2b2lkIGNzY2hlZDJfc2NoZWR1bGUoCiAgICAgICAgIHNu
ZXh0ID0gY3NjaGVkMl91bml0KHNjaGVkX2lkbGVfdW5pdChzY2hlZF9jcHUpKTsKICAgICB9CiAg
ICAgZWxzZQotICAgICAgICBzbmV4dCA9IHJ1bnFfY2FuZGlkYXRlKHJxZCwgc2N1cnIsIHNjaGVk
X2NwdSwgbm93LCAmc2tpcHBlZF91bml0cyk7CisgICAgICAgIHNuZXh0ID0gcnVucV9jYW5kaWRh
dGUocnFkLCBzY3Vyciwgc2NoZWRfY3B1LCBub3cpOwogCiAgICAgLyogSWYgc3dpdGNoaW5nIGZy
b20gYSBub24taWRsZSBydW5uYWJsZSB1bml0LCBwdXQgaXQKICAgICAgKiBiYWNrIG9uIHRoZSBy
dW5xdWV1ZS4gKi8KQEAgLTM1MDcsNiArMzQ5Nyw4IEBAIHN0YXRpYyB2b2lkIGNzY2hlZDJfc2No
ZWR1bGUoCiAgICAgLyogQWNjb3VudGluZyBmb3Igbm9uLWlkbGUgdGFza3MgKi8KICAgICBpZiAo
ICFpc19pZGxlX3VuaXQoc25leHQtPnVuaXQpICkKICAgICB7CisgICAgICAgIGludCB0b3BfY3Jl
ZGl0OworCiAgICAgICAgIC8qIElmIHN3aXRjaGluZywgcmVtb3ZlIHRoaXMgZnJvbSB0aGUgcnVu
cXVldWUgYW5kIG1hcmsgaXQgc2NoZWR1bGVkICovCiAgICAgICAgIGlmICggc25leHQgIT0gc2N1
cnIgKQogICAgICAgICB7CkBAIC0zNTM0LDExICszNTI2LDE1IEBAIHN0YXRpYyB2b2lkIGNzY2hl
ZDJfc2NoZWR1bGUoCiAgICAgICAgICAqICAyKSBubyBvdGhlciB1bml0IHdpdGggaGlnaGVyIGNy
ZWRpdHMgd2FudHMgdG8gcnVuLgogICAgICAgICAgKgogICAgICAgICAgKiBIZXJlLCB3aGVyZSB3
ZSB3YW50IHRvIGNoZWNrIGZvciByZXNldCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlCi0gICAg
ICAgICAqIHByb3BlciB1bml0IGlzIGJlaW5nIHVzZWQuIEluIGZhY3QsIHJ1bnF1ZXVlX2NhbmRp
ZGF0ZSgpIG1heSBoYXZlCi0gICAgICAgICAqIG5vdCByZXR1cm5lZCB0aGUgZmlyc3QgdW5pdCBp
biB0aGUgcnVucXVldWUsIGZvciB2YXJpb3VzIHJlYXNvbnMKKyAgICAgICAgICogcHJvcGVyIHVu
aXQgaXMgYmVpbmcgdXNlZC4gSW4gZmFjdCwgcnVucV9jYW5kaWRhdGUoKSBtYXkgaGF2ZSBub3QK
KyAgICAgICAgICogcmV0dXJuZWQgdGhlIGZpcnN0IHVuaXQgaW4gdGhlIHJ1bnF1ZXVlLCBmb3Ig
dmFyaW91cyByZWFzb25zCiAgICAgICAgICAqIChlLmcuLCBhZmZpbml0eSkuIE9ubHkgdHJpZ2dl
ciBhIHJlc2V0IHdoZW4gaXQgZG9lcy4KICAgICAgICAgICovCi0gICAgICAgIGlmICggc2tpcHBl
ZF91bml0cyA9PSAwICYmIHNuZXh0LT5jcmVkaXQgPD0gQ1NDSEVEMl9DUkVESVRfUkVTRVQgKQor
ICAgICAgICBpZiAoIGxpc3RfZW1wdHkoJnJxZC0+cnVucSkgKQorICAgICAgICAgICAgdG9wX2Ny
ZWRpdCA9IHNuZXh0LT5jcmVkaXQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRvcF9jcmVk
aXQgPSBtYXgoc25leHQtPmNyZWRpdCwgcnVucV9lbGVtKHJxZC0+cnVucS5uZXh0KS0+Y3JlZGl0
KTsKKyAgICAgICAgaWYgKCB0b3BfY3JlZGl0IDw9IENTQ0hFRDJfQ1JFRElUX1JFU0VUICkKICAg
ICAgICAgewogICAgICAgICAgICAgcmVzZXRfY3JlZGl0KHNjaGVkX2NwdSwgbm93LCBzbmV4dCk7
CiAgICAgICAgICAgICBiYWxhbmNlX2xvYWQob3BzLCBzY2hlZF9jcHUsIG5vdyk7Ci0tCmdlbmVy
YXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNzdGFnaW5nCgpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdl
bG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz
Oi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 09:00:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 09:00:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKIBe-00025q-FF; Fri, 03 Apr 2020 09:00:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKIBe-00025i-3q
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:26 +0000
X-Inumbo-ID: 8ed4460c-7589-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8ed4460c-7589-11ea-b4f4-bc764e2007e4;
 Fri, 03 Apr 2020 09:00:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=o0sA5RXfXu5tyZzaKgCm249D2odzoU1vT4J5p+Wgt28=; b=THNbsetB3GDwcfXC3Fw6myJ5xq
 5IDr6o/MGLbmNP5AwfV73DasuK2bYCixJl4EdmfQLFgM8ynNiVXaosZB8dPVEqIfVbaaTPlh/DLKi
 xFfWZDtQm7S+ytne9znDbXyxOArVzUBszztHNUklLrMCAMz/lcY/UiTxsE50YoG+xlkI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBd-0002G0-DR
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBd-0007Q4-CR
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKIBd-0007Q4-CR@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 09:00:25 +0000
Subject: [Xen-changelog] [xen staging] x86emul: suppress "not built" warning
 for test harness'es run targets
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGQ1OTk3Mzk5YjdhZGU2NTBhN2M4OTRiZjg0OGE3ZTk0NjNhZTgwZTcKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NDg6MzkgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo0ODozOSAyMDIwICswMjAwCgogICAgeDg2
ZW11bDogc3VwcHJlc3MgIm5vdCBidWlsdCIgd2FybmluZyBmb3IgdGVzdCBoYXJuZXNzJ2VzIHJ1
biB0YXJnZXRzCiAgICAKICAgIFRoZSBydW4qIHRhcmdldHMgY2FuIGJlIHVzZWQgdG8gdGVzdCB3
aGF0ZXZlciB0aGUgdG9vbCBjaGFpbiBpcyBjYXBhYmxlCiAgICBvZiBidWlsZGluZywgYXMgbG9u
ZyBhcyBhdCBsZWFzdCB0aGUgbWFpbiBoYXJuZXNzIHNvdXJjZSBmaWxlIGJ1aWxkcy4KICAgIERv
bid0IHByb2JlIHRoZSB0b29scyBjaGFpbiwgaW4gcGFydGljdWxhciB0byBhdm9pZCBpc3N1aW5n
IHRoZSB3YXJuaW5nLAogICAgaW4gdGhpcyBjYXNlLiBXaGlsZSBsb29raW5nIGludG8gdGhpcyBJ
IGFsc28gbm90aWNlZCB0aGUgd29yZGluZyBvZiB0aGUKICAgIHJlc3BlY3RpdmUgY29tbWVudCBp
c24ndCBxdWl0ZSByaWdodCwgd2hpY2ggdGhlcmVmb3JlIGdldHMgYWx0ZXJlZCBhdAogICAgdGhl
IHNhbWUgdGltZS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNo
QHN1c2UuY29tPgogICAgQWNrZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNp
dHJpeC5jb20+Ci0tLQogdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlIHwgNiArKysr
Ky0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg
LS1naXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUgYi90b29scy90ZXN0cy94
ODZfZW11bGF0b3IvTWFrZWZpbGUKaW5kZXggYTc5ZjEzZjM4My4uMjIyYzFiMTFlMiAxMDA2NDQK
LS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCisrKyBiL3Rvb2xzL3Rlc3Rz
L3g4Nl9lbXVsYXRvci9NYWtlZmlsZQpAQCAtOTcsMTEgKzk3LDEzIEBAIGF2eDUxMmRxLW9wbWFz
ay12ZWNzIDo9IDEgMgogYXZ4NTEyYnctb3BtYXNrLXZlY3MgOj0gNCA4CiAKICMgU3VwcHJlc3Mg
YnVpbGRpbmcgYnkgZGVmYXVsdCBvZiB0aGUgaGFybmVzcyBpZiB0aGUgY29tcGlsZXIgY2FuJ3Qg
ZGVhbAotIyB3aXRoIGFueSBvZiB0aGUgZXh0ZW5zaW9ucyB1c2VkLiAgRG9uJ3QgYWx0ZXIgdGhl
ICJydW4iIHRhcmdldCBkZXBlbmRlbmNpZXMKKyMgd2l0aCBzb21lIG9mIHRoZSBleHRlbnNpb25z
IHVzZWQuICBEb24ndCBhbHRlciB0aGUgInJ1biIgdGFyZ2V0IGRlcGVuZGVuY2llcwogIyB0aG91
Z2gsIGFzIHRoaXMgdGFyZ2V0IG5lZWRzIHRvIGJlIHNwZWNpZmllZCBtYW51YWxseSwgYW5kIHRo
aW5ncyBtYXkgd29yawogIyBwYXJ0aWFsbHkgZXZlbiB3aXRoIG9sZGVyIGNvbXBpbGVycy4KIFRB
UkdFVC15IDo9ICQoVEFSR0VUKQogCitpZmVxICgkKGZpbHRlciBydW4lLCQoTUFLRUNNREdPQUxT
KSksKQorCiBkZWZpbmUgc2ltZC1jaGVjay1jYwogVEFSR0VULSQoc2hlbGwgZWNobyAnaW50IGk7
JyB8ICQoQ0MpIC14IGMgLWMgLW8gL2Rldi9udWxsIC1tJCgxKSAtIHx8IGVjaG8geSkgOj0KIGVu
ZGVmCkBAIC0xMTYsNiArMTE4LDggQEAgaWZlcSAoJChUQVJHRVQteSksKQogJCh3YXJuaW5nIFRl
c3QgaGFybmVzcyBub3QgYnVpbHQsIHVzZSBuZXdlciBjb21waWxlciB0aGFuICIkKENDKSIgKHZl
cnNpb24gJChzaGVsbCAkKENDKSAtZHVtcHZlcnNpb24pKSBhbmQgYW4gIntldmV4fSIgY2FwYWJs
ZSBhc3NlbWJsZXIpCiBlbmRpZgogCitlbmRpZgorCiBhbGw6ICQoVEFSR0VULXkpCiAKICMgRm9y
IEFWWCBhbmQgbGF0ZXIsIGhhdmUgdGhlIGNvbXBpbGVyIGF2b2lkIFhNTTAgdG8gd2lkZW4gY292
ZXJhZ2Ugb2YKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94
ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVu
cHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 09:00:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 09:00:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKIBo-000277-Gy; Fri, 03 Apr 2020 09:00:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKIBo-00026z-50
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:36 +0000
X-Inumbo-ID: 94d53048-7589-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 94d53048-7589-11ea-83d8-bc764e2007e4;
 Fri, 03 Apr 2020 09:00:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XI2Nm0DSSFQlCpjh6PJcBEFEV8OvscB/svKNRlxgB1w=; b=F6zULaHEwkMokX26irC7MPO49o
 53w8UjKKXP4WL2HgJ8qRqQghtJuLXEeFgpuxAwrKeY5AsvpTfG0ISFgpcrswRi46OeRWkGb8iaS03
 sSvTBWtgD6xHsAEZEmj26L72RtzrLg2Q0rlOC0oUqmKr0Y/i6QSaR7aQW+i4SCO7bNBo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBn-0002GE-GP
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBn-0007Qq-FL
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKIBn-0007Qq-FL@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 09:00:35 +0000
Subject: [Xen-changelog] [xen staging] x86emul: inherit HOSTCC when building
 32-bit harness on 64-bit host
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDViNmEzYzY3Y2Q3YzM4MzQyMzVlYjE3YTgyYzk4YWQwZWUzODQwMTcKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NTU6MTIgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo1NToxMiAyMDIwICswMjAwCgogICAgeDg2
ZW11bDogaW5oZXJpdCBIT1NUQ0Mgd2hlbiBidWlsZGluZyAzMi1iaXQgaGFybmVzcyBvbiA2NC1i
aXQgaG9zdAogICAgCiAgICBXZSdyZSBkZWxpYmVyYXRlbHkgYnJpbmdpbmcgWEVOX0NPTVBJTEVf
QVJDSCBhbmQgWEVOX1RBUkdFVF9BUkNIIG91dCBvZgogICAgc3luYyBpbiB0aGlzIGNhc2UsIGFu
ZCBoZW5jZSBIT1NUQ0Mgd29uJ3QgZ2V0IHNldCBmcm9tIENDLiBUaGVyZWZvcmUKICAgIHdpdGhv
dXQgdGhpcyBhZGRpdGlvbiBIT1NUQ0Mgd291bGQgbm90IG1hdGNoIGEgcG9zc2libGUgbWFrZSBj
b21tYW5kCiAgICBsaW5lIG92ZXJyaWRlIG9mIENDLCBidXQgZGVmYXVsdCB0byAiZ2NjIiwgbGlr
ZWx5IGNhdXNpbmcgdGhlIGJ1aWxkIHRvCiAgICBmYWlsIGZvciB0ZXN0X3g4Nl9lbXVsYXRvci5j
IG9uIHN5c3RlbXMgd2l0aCB0b28gb2xkIGEgZ2NjLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBK
YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CiAgICBBY2tlZC1ieTogQW5kcmV3IENvb3Bl
ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB0b29scy90ZXN0cy94ODZfZW11bGF0
b3IvTWFrZWZpbGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs
ZXRpb24oLSkKCmRpZmYgLS1naXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUg
Yi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUKaW5kZXggMjIyYzFiMTFlMi4uN2Nl
ODgyY2I3OCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCisr
KyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9NYWtlZmlsZQpAQCAtMjY4LDcgKzI2OCw3IEBA
IGluc3RhbGwgdW5pbnN0YWxsOgogaWZlcSAoJChYRU5fQ09NUElMRV9BUkNIKSx4ODZfNjQpCiBy
dW4zMjogJChhZGRzdWZmaXggLmgsJChURVNUQ0FTRVMpKSAkKGFkZHN1ZmZpeCAtb3BtYXNrLmgs
JChPUE1BU0spKQogcnVuMzIgY2xlYW4zMjogJTMyOgotCSQoTUFLRSkgLUMgMzIgJCoKKwkkKE1B
S0UpIC1DIDMyIEhPU1RDQz0kKEhPU1RDQykgJCoKIGNsZWFuOiBjbGVhbjMyCiBlbHNlCiBydW4z
MiBjbGVhbjMyOiAlMzI6ICUKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUv
eGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dA
bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hh
bmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 09:00:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 09:00:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKIBz-0002A8-Te; Fri, 03 Apr 2020 09:00:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKIBy-00029o-A4
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:46 +0000
X-Inumbo-ID: 9ad9d91c-7589-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9ad9d91c-7589-11ea-b58d-bc764e2007e4;
 Fri, 03 Apr 2020 09:00:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=YoJmku/BdXq+fNhB5g0NKNvojoSI29l/iKy3uHEzv4M=; b=JSR2+IDX0rL/r6v65gSFAgmoDb
 lo3FKLFM1RePsUILRLe0/okOyps88A0ZsPu6cteYz2I+5BF6dQE/WQ5qvKkUtEqHOwV3XYqQlz6kW
 MUwHJszUXdEMDGKSVMnYbK7YC0EDwHWpYpBgODkjk0LSs5XKU/tdMsHpZ9/V5pl4SIw8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBx-0002Gp-JL
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIBx-0007RP-IJ
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKIBx-0007RP-IJ@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 09:00:45 +0000
Subject: [Xen-changelog] [xen staging] x86/p2m: don't ignore
 p2m_remove_page()'s return value
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGE2YjA1MWE4N2E1ODYzNDc5NjliZmJhYTY5MjVhYzBmMGM4NDU0MTMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NTY6MTAgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo1NjoxMCAyMDIwICswMjAwCgogICAgeDg2
L3AybTogZG9uJ3QgaWdub3JlIHAybV9yZW1vdmVfcGFnZSgpJ3MgcmV0dXJuIHZhbHVlCiAgICAK
ICAgIEl0J3Mgbm90IHZlcnkgbmljZSB0byByZXR1cm4gZnJvbSBndWVzdF9waHlzbWFwX2FkZF9l
bnRyeSgpIGFmdGVyCiAgICBwZXJoYXBzIGFscmVhZHkgaGF2aW5nIG1hZGUgc29tZSBjaGFuZ2Vz
IHRvIHRoZSBQMk0sIGJ1dCB0aGlzIGlzIHByZS0KICAgIGV4aXN0aW5nIHByYWN0aWNlIGluIHRo
ZSBmdW5jdGlvbiwgYW5kIGltbyBiZXR0ZXIgdGhhbiBpZ25vcmluZyBlcnJvcnMuCiAgICAKICAg
IFRha2UgdGhlIGxpYmVydHkgYW5kIHJlcGxhY2UgYW4gbWZuX2FkZCgpIGluc3RhbmNlIHdpdGgg
YSBsb2NhbCB2YXJpYWJsZQogICAgYWxyZWFkeSBob2xkaW5nIHRoZSByZXN1bHQgKGFzIHByb3Zl
biBieSB0aGUgY2hlY2sgaW1tZWRpYXRlbHkgYWhlYWQpLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5
OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CiAgICBSZXZpZXdlZC1ieTogUGF1bCBE
dXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KICAgIEFja2VkLWJ5OiBBbmRyZXcgQ29v
cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0u
YyB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyks
IDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVu
L2FyY2gveDg2L21tL3AybS5jCmluZGV4IGQ5M2M0MThiY2YuLjk0YTliMTc5OWUgMTAwNjQ0Ci0t
LSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAg
LTc2Nyw4ICs3NjcsNyBAQCB2b2lkIHAybV9maW5hbF90ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpk
KQogICAgIHAybV90ZWFyZG93bl9ob3N0cDJtKGQpOwogfQogCi0KLXN0YXRpYyBpbnQKK3N0YXRp
YyBpbnQgX19tdXN0X2NoZWNrCiBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAy
bSwgdW5zaWduZWQgbG9uZyBnZm5fbCwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCiB7CkBAIC05NzMsOSArOTcyLDkgQEAgZ3Vlc3Rf
cGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4s
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChvbWZuKSk7CiAgICAgICAgICAgICAg
ICAgUDJNX0RFQlVHKCJvbGQgZ2ZuPSUjbHggLT4gbWZuICUjbHhcbiIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdmbl94KG9nZm4pICwgbWZuX3gob21mbikpOwotICAgICAgICAgICAgICAg
IGlmICggbWZuX2VxKG9tZm4sIG1mbl9hZGQobWZuLCBpKSkgKQotICAgICAgICAgICAgICAgICAg
ICBwMm1fcmVtb3ZlX3BhZ2UocDJtLCBnZm5feChvZ2ZuKSwgbWZuX3gobWZuX2FkZChtZm4sIGkp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICAgICAg
ICAgIGlmICggbWZuX2VxKG9tZm4sIG1mbl9hZGQobWZuLCBpKSkgJiYKKyAgICAgICAgICAgICAg
ICAgICAgIChyYyA9IHAybV9yZW1vdmVfcGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5feChvbWZu
KSwgMCkpICkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkBAIC05OTcsNiArOTk2LDcgQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50
cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgIH0KICAg
ICB9CiAKK291dDoKICAgICBwMm1fdW5sb2NrKHAybSk7CiAKICAgICByZXR1cm4gcmM7CkBAIC0y
NzA1LDkgKzI3MDUsOSBAQCBpbnQgcDJtX2NoYW5nZV9hbHRwMm1fZ2ZuKHN0cnVjdCBkb21haW4g
KmQsIHVuc2lnbmVkIGludCBpZHgsCiAgICAgaWYgKCBnZm5fZXEobmV3X2dmbiwgSU5WQUxJRF9H
Rk4pICkKICAgICB7CiAgICAgICAgIG1mbiA9IGFwMm0tPmdldF9lbnRyeShhcDJtLCBvbGRfZ2Zu
LCAmdCwgJmEsIDAsIE5VTEwsIE5VTEwpOwotICAgICAgICBpZiAoIG1mbl92YWxpZChtZm4pICkK
LSAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShhcDJtLCBnZm5feChvbGRfZ2ZuKSwgbWZuX3go
bWZuKSwgUEFHRV9PUkRFUl80Syk7Ci0gICAgICAgIHJjID0gMDsKKyAgICAgICAgcmMgPSBtZm5f
dmFsaWQobWZuKQorICAgICAgICAgICAgID8gcDJtX3JlbW92ZV9wYWdlKGFwMm0sIGdmbl94KG9s
ZF9nZm4pLCBtZm5feChtZm4pLCBQQUdFX09SREVSXzRLKQorICAgICAgICAgICAgIDogMDsKICAg
ICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9y
IC9ob21lL3hlbi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hh
bmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
eGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 09:00:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 09:00:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKIC9-0002Bq-VV; Fri, 03 Apr 2020 09:00:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKIC8-0002Be-Fp
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:56 +0000
X-Inumbo-ID: a0dc10f0-7589-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a0dc10f0-7589-11ea-b4f4-bc764e2007e4;
 Fri, 03 Apr 2020 09:00:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Q026wcqS5c8sbbIYHQMERa4eUFN54yvQVupukmYRa/4=; b=zDBhMw5RFv2SS7sTkl7pO1CVgh
 ZvRagl6Gpv87JiMC2LeVAhaojEDPQgB0rIxfjhdyxFD4P8Fp81uW+dz49ie7aK9ijx2Af8tEJB206
 /CxcCl5uM9+hQ1W92d+O2NclRfkw4fsJGrdqwVdKxMlWVJ5y7xjeLiyCAPISU8gzqX1I=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIC7-0002H7-MD
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKIC7-0007S5-LB
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:00:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKIC7-0007S5-LB@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 09:00:55 +0000
Subject: [Xen-changelog] [xen staging] x86/p2m: don't assert that the passed
 in MFN matches for a remove
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGM2NWVhMTZkYmNhZmJlNGZlMjE2OTNiMThmOGMyYTNjNWQxNDYwMGUKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NTY6NTUgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo1Njo1NSAyMDIwICswMjAwCgogICAgeDg2
L3AybTogZG9uJ3QgYXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBpbiBNRk4gbWF0Y2hlcyBmb3IgYSBy
ZW1vdmUKICAgIAogICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZSgpIGdldHMgaGFuZGVkIGFu
IE1GTiBmcm9tIHRoZSBvdXRzaWRlLCB5ZXQKICAgIHRha2VzIHRoZSBuZWNlc3NhcnkgbG9jayB0
byBwcmV2ZW50IGZ1cnRoZXIgY2hhbmdlcyB0byB0aGUgR0ZOIDwtPiBNRk4KICAgIG1hcHBpbmcg
aXRzZWxmLiBXaGlsZSBzb21lIGNhbGxlcnMsIGluIHBhcnRpY3VsYXIgZ3Vlc3RfcmVtb3ZlX3Bh
Z2UoKQogICAgKGJ5IHdheSBvZiBoYXZpbmcgY2FsbGVkIGdldF9nZm5fcXVlcnkoKSksIGhvbGQg
dGhlIEdGTiBsb2NrIGFscmVhZHksCiAgICB2YXJpb3VzIG90aGVycyAobW9zdCBub3RhYmx5IHBl
cmhhcHMgdGhlIDJuZCBpbnN0YW5jZSBpbgogICAgeGVubWVtX2FkZF90b19waHlzbWFwX29uZSgp
KSBkb24ndC4gV2hpbGUgaXQgYWxzbyBpcyBhbiBvcHRpb24gdG8gZml4CiAgICBhbGwgdGhlIGNh
bGxlcnMsIGRlYWwgd2l0aCB0aGUgaXNzdWUgaW4gcDJtX3JlbW92ZV9wYWdlKCkgaW5zdGVhZDoK
ICAgIFJlcGxhY2UgdGhlIEFTU0VSVCgpIGJ5IGEgY29uZGl0aW9uYWwgYW5kIHNwbGl0IHRoZSBs
b29wIGludG8gdHdvLCBzdWNoCiAgICB0aGF0IGFsbCBjaGVja2luZyBnZXRzIGRvbmUgYmVmb3Jl
IGFueSBtb2RpZmljYXRpb24gd291bGQgb2NjdXIuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEph
biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KICAgIFJldmlld2VkLWJ5OiBQYXVsIER1cnJh
bnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgogICAgQWNrZWQtYnk6IEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L21tL3AybS5jIHwg
MTggKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwg
NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4v
YXJjaC94ODYvbW0vcDJtLmMKaW5kZXggOTRhOWIxNzk5ZS4uMTEzNDU2YTdlOSAxMDA2NDQKLS0t
IGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpAQCAt
NzczLDcgKzc3Myw2IEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1
bnNpZ25lZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1mbiwKIHsKICAgICB1bnNpZ25lZCBs
b25nIGk7CiAgICAgZ2ZuX3QgZ2ZuID0gX2dmbihnZm5fbCk7Ci0gICAgbWZuX3QgbWZuX3JldHVy
bjsKICAgICBwMm1fdHlwZV90IHQ7CiAgICAgcDJtX2FjY2Vzc190IGE7CiAKQEAgLTc4NCwxNSAr
NzgzLDI2IEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25l
ZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICBBU1NFUlQoZ2ZuX2xvY2tlZF9i
eV9tZShwMm0sIGdmbikpOwogICAgIFAyTV9ERUJVRygicmVtb3ZpbmcgZ2ZuPSUjbHggbWZuPSUj
bHhcbiIsIGdmbl9sLCBtZm4pOwogCisgICAgZm9yICggaSA9IDA7IGkgPCAoMVVMIDw8IHBhZ2Vf
b3JkZXIpOyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgY3VyX29yZGVyOworICAgICAg
ICBtZm5fdCBtZm5fcmV0dXJuID0gcDJtLT5nZXRfZW50cnkocDJtLCBnZm5fYWRkKGdmbiwgaSks
ICZ0LCAmYSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZj
dXJfb3JkZXIsIE5VTEwpOworCisgICAgICAgIGlmICggcDJtX2lzX3ZhbGlkKHQpICYmCisgICAg
ICAgICAgICAgKCFtZm5fdmFsaWQoX21mbihtZm4pKSB8fCBtZm4gKyBpICE9IG1mbl94KG1mbl9y
ZXR1cm4pKSApCisgICAgICAgICAgICByZXR1cm4gLUVJTFNFUTsKKworICAgICAgICBpICs9ICgx
VUwgPDwgY3VyX29yZGVyKSAtICgoZ2ZuX2wgKyBpKSAmICgoMVVMIDw8IGN1cl9vcmRlcikgLSAx
KSk7CisgICAgfQorCiAgICAgaWYgKCBtZm5fdmFsaWQoX21mbihtZm4pKSApCiAgICAgewogICAg
ICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1mbl9yZXR1cm4gPSBwMm0tPmdldF9lbnRyeShwMm0sIGdmbl9hZGQo
Z2ZuLCBpKSwgJnQsICZhLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgcDJtLT5nZXRfZW50cnkocDJtLCBnZm5fYWRk
KGdmbiwgaSksICZ0LCAmYSwgMCwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoICFwMm1f
aXNfZ3JhbnQodCkgJiYgIXAybV9pc19zaGFyZWQodCkgJiYgIXAybV9pc19mb3JlaWduKHQpICkK
ICAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm4raSwgSU5WQUxJRF9NMlBfRU5U
UlkpOwotICAgICAgICAgICAgQVNTRVJUKCAhcDJtX2lzX3ZhbGlkKHQpIHx8IG1mbiArIGkgPT0g
bWZuX3gobWZuX3JldHVybikgKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcDJtX3Nl
dF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9NRk4sIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlkLAot
LQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3Rh
Z2luZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVu
LWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9y
ZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 09:01:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 09:01:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKICK-0002DU-0x; Fri, 03 Apr 2020 09:01:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKICI-0002DF-DM
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:01:06 +0000
X-Inumbo-ID: a6e0566e-7589-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a6e0566e-7589-11ea-83d8-bc764e2007e4;
 Fri, 03 Apr 2020 09:01:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=cDDIjHu/9t4Ol3jDKEHNJGWn+2+7fH4vL5oJiB7m9Yg=; b=kv/W8gn9cH7GUCfnhOkVwXxIS1
 U7YyHD/ypyIWDVzj5rw24SFdPSyS3UZBLOp/Srb4SOiA/6eX61gt9DaLmR0pFLHwxW61GoxC4iid4
 wDWWebaXmbYbx8VLcwJBaHdMFxUFa5F7fM3b9ooxOFHgBvkqtvYaDdNcfgLspLLtfkB0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKICH-0002HT-PC
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:01:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKICH-0007TA-O8
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:01:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKICH-0007TA-O8@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 09:01:05 +0000
Subject: [Xen-changelog] [xen staging] x86/p2m: drop pointless nested
 variable from guest_physmap_add_entry()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDQxY2ViZGQxYTZiNWU4ODBjNzY4YTRhZjY5NzI0ODUxZTZhMDYxMDgKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NTc6NDEgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo1Nzo0MSAyMDIwICswMjAwCgogICAgeDg2
L3AybTogZHJvcCBwb2ludGxlc3MgbmVzdGVkIHZhcmlhYmxlIGZyb20gZ3Vlc3RfcGh5c21hcF9h
ZGRfZW50cnkoKQogICAgCiAgICBUaGVyZSdzIGFuIG91dGVyIHNjb3BlIHJjIGFscmVhZHksIGFu
ZCBpdHMgdXNlIGZvciB0aGUgbWVtLXNoYXJpbmcgbG9naWMKICAgIGRvZXMgbm90IGNvbmZsaWN0
IHdpdGggaXRzIHVzZSBlbHNld2hlcmUgaW4gdGhlIGZ1bmN0aW9uLgogICAgCiAgICBTaWduZWQt
b2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CiAgICBBY2tlZC1ieTogQW5k
cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYv
bW0vcDJtLmMgfCAxIC0KIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0
IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCmluZGV4IDEx
MzQ1NmE3ZTkuLjUxYjllMjU4NGQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwor
KysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTkwMiw3ICs5MDIsNiBAQCBndWVzdF9waHlz
bWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIG1mbl90IG1mbiwKICAg
ICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKG90KSApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8q
IERvIGFuIHVuc2hhcmUgdG8gY2xlYW5seSB0YWtlIGNhcmUgb2YgYWxsIGNvcm5lciBjYXNlcy4g
Ki8KLSAgICAgICAgICAgIGludCByYzsKICAgICAgICAgICAgIHJjID0gbWVtX3NoYXJpbmdfdW5z
aGFyZV9wYWdlKHAybS0+ZG9tYWluLCBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKICAgICAgICAg
ICAgIGlmICggcmMgKQogICAgICAgICAgICAgewotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90
IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3RhZ2luZwoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVu
LWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 09:01:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 09:01:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKICU-0002FM-2l; Fri, 03 Apr 2020 09:01:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKICS-0002F8-Od
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:01:16 +0000
X-Inumbo-ID: ace4714e-7589-11ea-bcd3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ace4714e-7589-11ea-bcd3-12813bfff9fa;
 Fri, 03 Apr 2020 09:01:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=zluyDQo9W0omsLw/kcpB/XlMZ2JAYXcBSd0sCWAIukU=; b=uhPl/n0S02j4Ic9nUQBVTxt17V
 THP7VskQU4UGM2MrP6F9rwesv719PQdHaNxxxuN473l8y0/7AbYk3AtaESNgiDwBqpU78nYQR3slH
 cS74V/MZ3xHrtFHt8nOLwT62x9wJ+231FwNBSZzDfJDeIrGXGsDG9zbHbcezbqVikKmU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKICR-0002Hc-SA
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:01:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKICR-0007U2-RL
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 09:01:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKICR-0007U2-RL@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 09:01:15 +0000
Subject: [Xen-changelog] [xen staging] x86: use macro DIV_ROUND_UP
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDAwOTM2MGFjYzljOTA1MTNlNGE4NWM3Mjg1ZDRmZDdhNjY1YzY2ZTEKQXV0aG9yOiAg
ICAgU2ltcmFuIFNpbmdoYWwgPHNpbmdoYWxzaW1yYW4wQGdtYWlsLmNvbT4KQXV0aG9yRGF0ZTog
RnJpIEFwciAzIDEwOjU4OjE4IDIwMjAgKzAyMDAKQ29tbWl0OiAgICAgSmFuIEJldWxpY2ggPGpi
ZXVsaWNoQHN1c2UuY29tPgpDb21taXREYXRlOiBGcmkgQXByIDMgMTA6NTg6MTggMjAyMCArMDIw
MAoKICAgIHg4NjogdXNlIG1hY3JvIERJVl9ST1VORF9VUAogICAgCiAgICBVc2UgdGhlIERJVl9S
T1VORF9VUCBtYWNybyB0byByZXBsYWNlIG9wZW4tY29kZWQgZGl2aXNvciBjYWxjdWxhdGlvbgog
ICAgKCgobikgKyAoZCkgLSAxKSAvIChkKSkgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KICAgIAog
ICAgU2lnbmVkLW9mZi1ieTogU2ltcmFuIFNpbmdoYWwgPHNpbmdoYWxzaW1yYW4wQGdtYWlsLmNv
bT4KICAgIEFja2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t
PgotLS0KIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICB8IDIgKy0KIHhlbi9hcmNoL3g4Ni90Ym9v
dC5jICAgICB8IDIgKy0KIHhlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyB8IDIgKy0KIDMgZmlsZXMg
Y2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl
bi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggMmZhYzY3YWQ1Ny4uZmI1
M2Q2MmFiYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2
L21tLmMKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9mcmFtZXRh
YmxlX2NodW5rKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpCiB2b2lkIF9faW5pdCBpbml0X2ZyYW1l
dGFibGUodm9pZCkKIHsKICAgICB1bnNpZ25lZCBpbnQgc2lkeCwgZWlkeCwgbmlkeDsKLSAgICB1
bnNpZ25lZCBpbnQgbWF4X2lkeCA9IChtYXhfcGR4ICsgUERYX0dST1VQX0NPVU5UIC0gMSkgLyBQ
RFhfR1JPVVBfQ09VTlQ7CisgICAgdW5zaWduZWQgaW50IG1heF9pZHggPSBESVZfUk9VTkRfVVAo
bWF4X3BkeCwgUERYX0dST1VQX0NPVU5UKTsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICplbmRfcGcs
ICp0b3BfcGc7CiAKICAgICBCVUlMRF9CVUdfT04oWEVOX1ZJUlRfRU5EID4gRlJBTUVUQUJMRV9W
SVJUX1NUQVJUKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90Ym9vdC5jIGIveGVuL2FyY2gv
eDg2L3Rib290LmMKaW5kZXggMTAyYzNjZDIwMy4uMzIwZTA2ZjEyOSAxMDA2NDQKLS0tIGEveGVu
L2FyY2gveDg2L3Rib290LmMKKysrIGIveGVuL2FyY2gveDg2L3Rib290LmMKQEAgLTMxMCw3ICsz
MTAsNyBAQCBzdGF0aWMgdm9pZCB0Ym9vdF9nZW5fZnJhbWV0YWJsZV9pbnRlZ3JpdHkoY29uc3Qg
dWludDhfdCBrZXlbVEJfS0VZX1NJWkVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtYWNfdCAqbWFjKQogewogICAgIHVuc2lnbmVkIGludCBzaWR4LCBlaWR4
LCBuaWR4OwotICAgIHVuc2lnbmVkIGludCBtYXhfaWR4ID0gKG1heF9wZHggKyBQRFhfR1JPVVBf
Q09VTlQgLSAxKS9QRFhfR1JPVVBfQ09VTlQ7CisgICAgdW5zaWduZWQgaW50IG1heF9pZHggPSBE
SVZfUk9VTkRfVVAobWF4X3BkeCwgUERYX0dST1VQX0NPVU5UKTsKICAgICB1aW50OF90IG5vbmNl
WzE2XSA9IHt9OwogICAgIHZtYWNfY3R4X3QgY3R4OwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94
ODYveDg2XzY0L21tLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKaW5kZXggYjdjZTgzM2Zm
Yy4uY2VlODM2ZWMzNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCisrKyBi
L3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYwpAQCAtODAxLDcgKzgwMSw3IEBAIHN0YXRpYyBpbnQg
ZXh0ZW5kX2ZyYW1lX3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmluZm8pCiAgICAgc3Bm
biA9IF9tZm4oaW5mby0+c3Bmbik7CiAgICAgZXBmbiA9IF9tZm4oaW5mby0+ZXBmbik7CiAKLSAg
ICBlaWR4ID0gKG1mbl90b19wZHgoZXBmbikgKyBQRFhfR1JPVVBfQ09VTlQgLSAxKSAvIFBEWF9H
Uk9VUF9DT1VOVDsKKyAgICBlaWR4ID0gRElWX1JPVU5EX1VQKG1mbl90b19wZHgoZXBmbiksIFBE
WF9HUk9VUF9DT1VOVCk7CiAgICAgbmlkeCA9IGNpZHggPSBtZm5fdG9fcGR4KHNwZm4pL1BEWF9H
Uk9VUF9DT1VOVDsKIAogICAgIEFTU0VSVCggbWZuX3RvX3BkeChlcGZuKSA8PSAoRElSRUNUTUFQ
X1NJWkUgPj4gUEFHRV9TSElGVCkgJiYKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3Ig
L2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFu
Z2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94
ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 15:22:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 15:22:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKO90-0002JS-7o; Fri, 03 Apr 2020 15:22:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKO8z-0002JN-5U
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:05 +0000
X-Inumbo-ID: dfb6aad0-75be-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id dfb6aad0-75be-11ea-b58d-bc764e2007e4;
 Fri, 03 Apr 2020 15:22:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=7j/+mhZTP+bu31rFSAJNGDJVuVT12wItbKamdibWl5w=; b=utghjpqjmMPeBTj5/nHngiDTtl
 su2RS2RnfYxHg3qMTkX5Dphkkwu4xZRwkztv6NkeDRCFe3vrBl+iye6OJ65Ybp0G5TdtsIk2lhiF8
 H0NDNtvfuOdf5Jm8HrfG6tsVv8Klv8F4V3em1QYK4qcFB7HTemKVuBjpw9SRCvd0zOn0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKO8y-0001Rk-F1
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKO8y-00080A-Dl
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKO8y-00080A-Dl@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 15:22:04 +0000
Subject: [Xen-changelog] [xen staging] x86/cpuidle: correct Cannon Lake
 residency MSRs
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDlmZjA5YWVmYzQ2Mzg1ZGMwNGMzOGI2ZGQxZjFhYzI1Zjc4NGY0ODIKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTc6MTU6NTggMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxNzoxNTo1OCAyMDIwICswMjAwCgogICAgeDg2
L2NwdWlkbGU6IGNvcnJlY3QgQ2Fubm9uIExha2UgcmVzaWRlbmN5IE1TUnMKICAgIAogICAgQXMg
cGVyIFNETSByZXYgMDcxIENhbm5vbiBMYWtlIGhhcwogICAgLSBubyBDQzMgcmVzaWRlbmN5IE1T
UiBhdCAzRkMsCiAgICAtIGEgQ0MxIHJlc2lkZW5jeSBNU1IgYXIgNjYwIChsaWtlIHZhcmlvdXMg
QXRvbXMpLAogICAgLSBhIHVzZWxlc3MgKGFsd2F5cyB6ZXJvKSBDQzMgcmVzaWRlbmN5IE1TUiBh
dCA2NjIuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl
LmNvbT4KICAgIEFja2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXgu
Y29tPgotLS0KIHhlbi9hcmNoL3g4Ni9hY3BpL2NwdV9pZGxlLmMgfCAxNCArKysrKysrKysrKy0t
LQogMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEveGVuL2FyY2gveDg2L2FjcGkvY3B1X2lkbGUuYyBiL3hlbi9hcmNoL3g4Ni9hY3Bp
L2NwdV9pZGxlLmMKaW5kZXggNWNkNzBkN2E0MC4uZTAwZjJhODJkZSAxMDA2NDQKLS0tIGEveGVu
L2FyY2gveDg2L2FjcGkvY3B1X2lkbGUuYworKysgYi94ZW4vYXJjaC94ODYvYWNwaS9jcHVfaWRs
ZS5jCkBAIC02OSw3ICs2OSw3IEBACiAjZGVmaW5lIEdFVF9QQzhfUkVTKHZhbCkgIEdFVF9IV19S
RVNfSU5fTlMoMHg2MzAsIHZhbCkgLyogc29tZSBIYXN3ZWxscyBvbmx5ICovCiAjZGVmaW5lIEdF
VF9QQzlfUkVTKHZhbCkgIEdFVF9IV19SRVNfSU5fTlMoMHg2MzEsIHZhbCkgLyogc29tZSBIYXN3
ZWxscyBvbmx5ICovCiAjZGVmaW5lIEdFVF9QQzEwX1JFUyh2YWwpIEdFVF9IV19SRVNfSU5fTlMo
MHg2MzIsIHZhbCkgLyogc29tZSBIYXN3ZWxscyBvbmx5ICovCi0jZGVmaW5lIEdFVF9DQzFfUkVT
KHZhbCkgIEdFVF9IV19SRVNfSU5fTlMoMHg2NjAsIHZhbCkgLyogU2lsdmVybW9udCBvbmx5ICov
CisjZGVmaW5lIEdFVF9DQzFfUkVTKHZhbCkgIEdFVF9IV19SRVNfSU5fTlMoMHg2NjAsIHZhbCkK
ICNkZWZpbmUgR0VUX0NDM19SRVModmFsKSAgR0VUX0hXX1JFU19JTl9OUygweDNGQywgdmFsKQog
I2RlZmluZSBHRVRfQ0M2X1JFUyh2YWwpICBHRVRfSFdfUkVTX0lOX05TKDB4M0ZELCB2YWwpCiAj
ZGVmaW5lIEdFVF9DQzdfUkVTKHZhbCkgIEdFVF9IV19SRVNfSU5fTlMoMHgzRkUsIHZhbCkgLyog
U05CIG9ud2FyZHMgKi8KQEAgLTE4MCw4ICsxODAsNiBAQCBzdGF0aWMgdm9pZCBkb19nZXRfaHdf
cmVzaWRlbmNpZXModm9pZCAqYXJnKQogICAgIGNhc2UgMHg0RToKICAgICBjYXNlIDB4NTU6CiAg
ICAgY2FzZSAweDVFOgotICAgIC8qIENhbm5vbiBMYWtlICovCi0gICAgY2FzZSAweDY2OgogICAg
IC8qIEthYnkgTGFrZSAqLwogICAgIGNhc2UgMHg4RToKICAgICBjYXNlIDB4OUU6CkBAIC0yMDMs
NiArMjAxLDE2IEBAIHN0YXRpYyB2b2lkIGRvX2dldF9od19yZXNpZGVuY2llcyh2b2lkICphcmcp
CiAgICAgICAgIEdFVF9DQzNfUkVTKGh3X3Jlcy0+Y2MzKTsKICAgICAgICAgR0VUX0NDNl9SRVMo
aHdfcmVzLT5jYzYpOwogICAgICAgICBicmVhazsKKyAgICAvKiBDYW5ub24gTGFrZSAqLworICAg
IGNhc2UgMHg2NjoKKyAgICAgICAgR0VUX1BDMl9SRVMoaHdfcmVzLT5wYzIpOworICAgICAgICBH
RVRfUEMzX1JFUyhod19yZXMtPnBjMyk7CisgICAgICAgIEdFVF9QQzZfUkVTKGh3X3Jlcy0+cGM2
KTsKKyAgICAgICAgR0VUX1BDN19SRVMoaHdfcmVzLT5wYzcpOworICAgICAgICBHRVRfQ0MxX1JF
Uyhod19yZXMtPmNjMSk7CisgICAgICAgIEdFVF9DQzZfUkVTKGh3X3Jlcy0+Y2M2KTsKKyAgICAg
ICAgR0VUX0NDN19SRVMoaHdfcmVzLT5jYzcpOworICAgICAgICBicmVhazsKICAgICAvKiBYZW9u
IFBoaSBLbmlnaHRzIExhbmRpbmcgKi8KICAgICBjYXNlIDB4NTc6CiAgICAgLyogWGVvbiBQaGkg
S25pZ2h0cyBNaWxsICovCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hl
bi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5n
ZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 15:22:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 15:22:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKO9A-0002KJ-9n; Fri, 03 Apr 2020 15:22:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKO99-0002K9-9H
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:15 +0000
X-Inumbo-ID: e5ca00c0-75be-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e5ca00c0-75be-11ea-b4f4-bc764e2007e4;
 Fri, 03 Apr 2020 15:22:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=3P2LvH3sfArisz11jw3OramjfsZnYP7zEyOSRmhW6Oo=; b=tA8R5b/oWGc1lWateN1gl5moFN
 YoVjmVH/jjXpNIkxG0j2iKhSzZZL13CITC3MxlcZCkEPB8ogleLoHjC1B526q8CGKgLBW/EdM4RnQ
 f+gVsCFn0KUp1J3E3MhBnr7jH7G62ej2UqXfDz9bRG0YJ5bKrVf8wFUvVvg5FzS/bZko=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKO98-0001Rz-I7
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKO98-00080w-Gr
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKO98-00080w-Gr@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 15:22:14 +0000
Subject: [Xen-changelog] [xen staging] x86/p2m: use available local variable
 in guest_physmap_add_entry()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGQ5MTcwNzdiOGQwYWRiNzhiMjdkNDI4MmEwOTZkOTgyNzhjNTIyNDMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTc6MTc6MjkgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxNzoxNzoyOSAyMDIwICswMjAwCgogICAgeDg2
L3AybTogdXNlIGF2YWlsYWJsZSBsb2NhbCB2YXJpYWJsZSBpbiBndWVzdF9waHlzbWFwX2FkZF9l
bnRyeSgpCiAgICAKICAgIFRoZSBkb21haW4gaXMgYmVpbmcgcGFzc2VkIGluIC0gbm8gbmVlZCB0
byBvYnRhaW4gaXQgZnJvbSBwMm0tPmRvbWFpbi4KICAgIEFsc28gZHJvcCBhIHBvaW50bGVzcyBj
YXN0IGFuZCBzaW1wbGlmeSBleHByZXNzaW9ucyB3aGlsZSB0b3VjaGluZyB0aGlzCiAgICBjb2Rl
IGFueXdheS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1
c2UuY29tPgogICAgQWNrZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJp
eC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L21tL3AybS5jIHwgNSArKy0tLQogMSBmaWxlIGNoYW5n
ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJj
aC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5kZXggNTFiOWUyNTg0ZC4u
ZDZlOWE0ZDI3OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9h
cmNoL3g4Ni9tbS9wMm0uYwpAQCAtOTAyLDcgKzkwMiw3IEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2Vu
dHJ5KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgbWZuX3QgbWZuLAogICAgICAgICBpZiAo
IHAybV9pc19zaGFyZWQob3QpICkKICAgICAgICAgewogICAgICAgICAgICAgLyogRG8gYW4gdW5z
aGFyZSB0byBjbGVhbmx5IHRha2UgY2FyZSBvZiBhbGwgY29ybmVyIGNhc2VzLiAqLwotICAgICAg
ICAgICAgcmMgPSBtZW1fc2hhcmluZ191bnNoYXJlX3BhZ2UocDJtLT5kb21haW4sIGdmbl94KGdm
bl9hZGQoZ2ZuLCBpKSkpOworICAgICAgICAgICAgcmMgPSBtZW1fc2hhcmluZ191bnNoYXJlX3Bh
Z2UoZCwgZ2ZuX3goZ2ZuKSArIGkpOwogICAgICAgICAgICAgaWYgKCByYyApCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgcDJtX3VubG9jayhwMm0pOwpAQCAtOTE5LDggKzkxOSw3IEBA
IGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgbWZu
X3QgbWZuLAogICAgICAgICAgICAgICAgICAqIEZvcmVpZ24gZG9tYWlucyBhcmUgb2theSB0byBw
bGFjZSBhbiBldmVudCBhcyB0aGV5CiAgICAgICAgICAgICAgICAgICogd29uJ3QgZ28gdG8gc2xl
ZXAuCiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgKHZvaWQpbWVtX3NoYXJp
bmdfbm90aWZ5X2Vub21lbShwMm0tPmRvbWFpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdmbl94KGdmbl9hZGQoZ2ZuLCBpKSksIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBtZW1fc2hhcmluZ19ub3RpZnlfZW5vbWVtKGQsIGdmbl94KGdmbikgKyBp
LCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgb21mbiA9IHAybS0+Z2V0X2VudHJ5KHAybSwgZ2ZuX2FkZChnZm4sIGkpLAotLQpn
ZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjc3RhZ2lu
ZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNo
YW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpo
dHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 15:22:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 15:22:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKO9K-0002Lh-C2; Fri, 03 Apr 2020 15:22:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKO9J-0002LY-RF
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:25 +0000
X-Inumbo-ID: ebc03a1c-75be-11ea-bd35-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ebc03a1c-75be-11ea-bd35-12813bfff9fa;
 Fri, 03 Apr 2020 15:22:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=FzWaMCih1QFVD15Om7rqMhOdVuPBC60yefGz58q76JA=; b=Rk6uzwgifgztfLpx4+cjp2hyG/
 YkIOvK9ChSHzO0DVsi0hkTLw+2wTSot/TWsWB1e/L+9bS9dRKZD55hKp8cBLRrQnDxWtbH7L33UI6
 JyR3yy1sZY/vN1nfgvErWJbCUJDWy7C+w1dcsFGMBTWgfpH1LCZBEeX64yAeKyGcXCYE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKO9I-0001S8-L9
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKO9I-00081b-Jr
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 15:22:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKO9I-00081b-Jr@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 15:22:24 +0000
Subject: [Xen-changelog] [xen staging] x86/p2m: make p2m_remove_page()'s
 parameters type-safe
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDBmMGY0YjdiMWYxZWI2Njc1YmYyYjdiYWFjNTY1N2U3MTFhMjBkZmMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTc6MTk6MTEgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxNzoxOToxMSAyMDIwICswMjAwCgogICAgeDg2
L3AybTogbWFrZSBwMm1fcmVtb3ZlX3BhZ2UoKSdzIHBhcmFtZXRlcnMgdHlwZS1zYWZlCiAgICAK
ICAgIEFsc28gYWRkIGEgY291cGxlIG9mIGJsYW5rIGxpbmVzLgogICAgCiAgICBTaWduZWQtb2Zm
LWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CiAgICBBY2tlZC1ieTogQW5kcmV3
IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvbW0v
cDJtLmMgfCAyMyArKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEzIGlu
c2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t
bS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwppbmRleCBkNmU5YTRkMjc5Li4zYzA1MmRl
NjA2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMKKysrIGIveGVuL2FyY2gveDg2
L21tL3AybS5jCkBAIC03NjgsMTEgKzc2OCwxMCBAQCB2b2lkIHAybV9maW5hbF90ZWFyZG93bihz
dHJ1Y3QgZG9tYWluICpkKQogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjawotcDJtX3JlbW92
ZV9wYWdlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsIHVuc2ln
bmVkIGxvbmcgbWZuLAorcDJtX3JlbW92ZV9wYWdlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGdm
bl90IGdmbiwgbWZuX3QgbWZuLAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29y
ZGVyKQogewogICAgIHVuc2lnbmVkIGxvbmcgaTsKLSAgICBnZm5fdCBnZm4gPSBfZ2ZuKGdmbl9s
KTsKICAgICBwMm1fdHlwZV90IHQ7CiAgICAgcDJtX2FjY2Vzc190IGE7CiAKQEAgLTc4MSw3ICs3
ODAsNyBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQg
bG9uZyBnZm5fbCwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
QVNTRVJUKGdmbl9sb2NrZWRfYnlfbWUocDJtLCBnZm4pKTsKLSAgICBQMk1fREVCVUcoInJlbW92
aW5nIGdmbj0lI2x4IG1mbj0lI2x4XG4iLCBnZm5fbCwgbWZuKTsKKyAgICBQMk1fREVCVUcoInJl
bW92aW5nIGdmbj0lI2x4IG1mbj0lI2x4XG4iLCBnZm5feChnZm4pLCBtZm5feChtZm4pKTsKIAog
ICAgIGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgKQogICAgIHsKQEAgLTc5
MCwyMSArNzg5LDIzIEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1
bnNpZ25lZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJfb3JkZXIsIE5VTEwpOwogCiAgICAgICAgIGlm
ICggcDJtX2lzX3ZhbGlkKHQpICYmCi0gICAgICAgICAgICAgKCFtZm5fdmFsaWQoX21mbihtZm4p
KSB8fCBtZm4gKyBpICE9IG1mbl94KG1mbl9yZXR1cm4pKSApCisgICAgICAgICAgICAgKCFtZm5f
dmFsaWQobWZuKSB8fCAhbWZuX2VxKG1mbl9hZGQobWZuLCBpKSwgbWZuX3JldHVybikpICkKICAg
ICAgICAgICAgIHJldHVybiAtRUlMU0VROwogCi0gICAgICAgIGkgKz0gKDFVTCA8PCBjdXJfb3Jk
ZXIpIC0gKChnZm5fbCArIGkpICYgKCgxVUwgPDwgY3VyX29yZGVyKSAtIDEpKTsKKyAgICAgICAg
aSArPSAoMVVMIDw8IGN1cl9vcmRlcikgLQorICAgICAgICAgICAgICgoZ2ZuX3goZ2ZuKSArIGkp
ICYgKCgxVUwgPDwgY3VyX29yZGVyKSAtIDEpKTsKICAgICB9CiAKLSAgICBpZiAoIG1mbl92YWxp
ZChfbWZuKG1mbikpICkKKyAgICBpZiAoIG1mbl92YWxpZChtZm4pICkKICAgICB7CiAgICAgICAg
IGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgaSsrICkKICAgICAgICAgewog
ICAgICAgICAgICAgcDJtLT5nZXRfZW50cnkocDJtLCBnZm5fYWRkKGdmbiwgaSksICZ0LCAmYSwg
MCwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoICFwMm1faXNfZ3JhbnQodCkgJiYgIXAy
bV9pc19zaGFyZWQodCkgJiYgIXAybV9pc19mb3JlaWduKHQpICkKLSAgICAgICAgICAgICAgICBz
ZXRfZ3Bmbl9mcm9tX21mbihtZm4raSwgSU5WQUxJRF9NMlBfRU5UUlkpOworICAgICAgICAgICAg
ICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbikgKyBpLCBJTlZBTElEX00yUF9FTlRSWSk7
CiAgICAgICAgIH0KICAgICB9CisKICAgICByZXR1cm4gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwg
SU5WQUxJRF9NRk4sIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogfQpAQCAtODE1LDkgKzgxNiwxMSBAQCBndWVz
dF9waHlzbWFwX3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwKIHsKICAg
ICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwogICAgIGludCBy
YzsKKwogICAgIGdmbl9sb2NrKHAybSwgZ2ZuLCBwYWdlX29yZGVyKTsKLSAgICByYyA9IHAybV9y
ZW1vdmVfcGFnZShwMm0sIGdmbl94KGdmbiksIG1mbl94KG1mbiksIHBhZ2Vfb3JkZXIpOworICAg
IHJjID0gcDJtX3JlbW92ZV9wYWdlKHAybSwgZ2ZuLCBtZm4sIHBhZ2Vfb3JkZXIpOwogICAgIGdm
bl91bmxvY2socDJtLCBnZm4sIHBhZ2Vfb3JkZXIpOworCiAgICAgcmV0dXJuIHJjOwogfQogCkBA
IC05ODEsNyArOTg0LDcgQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAq
ZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgICAgICAgICAgUDJNX0RFQlVHKCJvbGQg
Z2ZuPSUjbHggLT4gbWZuICUjbHhcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl94
KG9nZm4pICwgbWZuX3gob21mbikpOwogICAgICAgICAgICAgICAgIGlmICggbWZuX2VxKG9tZm4s
IG1mbl9hZGQobWZuLCBpKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgIChyYyA9IHAybV9yZW1v
dmVfcGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5feChvbWZuKSwgMCkpICkKKyAgICAgICAgICAg
ICAgICAgICAgIChyYyA9IHAybV9yZW1vdmVfcGFnZShwMm0sIG9nZm4sIG9tZm4sIDApKSApCiAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0yNzE0LDcgKzI3MTcsNyBAQCBpbnQgcDJtX2NoYW5nZV9hbHRwMm1fZ2ZuKHN0cnVjdCBkb21h
aW4gKmQsIHVuc2lnbmVkIGludCBpZHgsCiAgICAgewogICAgICAgICBtZm4gPSBhcDJtLT5nZXRf
ZW50cnkoYXAybSwgb2xkX2dmbiwgJnQsICZhLCAwLCBOVUxMLCBOVUxMKTsKICAgICAgICAgcmMg
PSBtZm5fdmFsaWQobWZuKQotICAgICAgICAgICAgID8gcDJtX3JlbW92ZV9wYWdlKGFwMm0sIGdm
bl94KG9sZF9nZm4pLCBtZm5feChtZm4pLCBQQUdFX09SREVSXzRLKQorICAgICAgICAgICAgID8g
cDJtX3JlbW92ZV9wYWdlKGFwMm0sIG9sZF9nZm4sIG1mbiwgUEFHRV9PUkRFUl80SykKICAgICAg
ICAgICAgICA6IDA7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KLS0KZ2VuZXJhdGVkIGJ5IGdp
dC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGlu
ZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 17:00:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 17:00:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKPfr-00042B-EW; Fri, 03 Apr 2020 17:00:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKPfq-000416-9H
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 17:00:06 +0000
X-Inumbo-ID: 90ff6ce8-75cc-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 90ff6ce8-75cc-11ea-b58d-bc764e2007e4;
 Fri, 03 Apr 2020 17:00:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=lMym4NuQQrH8SpnopDdZ2f29w5kGKPh6Zu6CvZB7p+Y=; b=BiNsfEC8a0ph4jSnn9GCDbM7u1
 fIHWcOtfxtigcv298zlG0DxhXXhd4s1V27yQGMJi+/005bRDXMYkiNjEZkYefhXsKot4ga9SlBqib
 rxDkLu47zfq08uoiCgPlw+dD+gvykwubXjRIlXY/FE5+2XZQ2Olt1Lf7ukvilAHUjtho=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKPfp-00041M-BO
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 17:00:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKPfp-0006ZR-AG
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 17:00:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKPfp-0006ZR-AG@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 17:00:05 +0000
Subject: [Xen-changelog] [xen staging] tools/xenstore: fix a use after free
 problem in xenstored
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGJiMmEzNGZkNzQwZTlhMjZiZTllMjI0NGYxYTViNGNlZjQzOWU1YTgKQXV0aG9yOiAg
ICAgSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTM6MDM6NDAgMjAyMCArMDEwMApDb21taXQ6ICAgICBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25A
ZXUuY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDE3OjU3OjUxIDIwMjAgKzAxMDAK
CiAgICB0b29scy94ZW5zdG9yZTogZml4IGEgdXNlIGFmdGVyIGZyZWUgcHJvYmxlbSBpbiB4ZW5z
dG9yZWQKICAgIAogICAgQ29tbWl0IDU2MmExYzBmN2VmM2ZiICgidG9vbHMveGVuc3RvcmU6IGRv
bnQgdW5saW5rIGNvbm5lY3Rpb24gb2JqZWN0CiAgICB0d2ljZSIpIGludHJvZHVjZWQgYSBwb3Rl
bnRpYWwgdXNlIGFmdGVyIGZyZWUgcHJvYmxlbSBpbgogICAgZG9tYWluX2NsZWFudXAoKTogYWZ0
ZXIgY2FsbGluZyB0YWxsb2NfdW5saW5rKCkgZm9yIGRvbWFpbi0+Y29ubgogICAgZG9tYWluLT5j
b25uIGlzIHNldCB0byBOVUxMLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGRvbWFpbiBpcyByZWdpc3Rl
cmVkCiAgICBhcyB0YWxsb2MgY2hpbGQgb2YgZG9tYWluLT5jb25uLCBzbyBpdCBtaWdodCBiZSBm
cmVlZCBieSB0aGUKICAgIHRhbGxvY191bmxpbmsoKSBjYWxsLgogICAgCiAgICBXaXRoIFhlbnN0
b3JlIGJlaW5nIHNpbmdsZSB0aHJlYWRlZCB0aGVyZSBhcmUgbm9ybWFsbHkgbm8gY29uY3VycmVu
dAogICAgbWVtb3J5IGFsbG9jYXRpb25zIHJ1bm5pbmcgYW5kIGZyZWVpbmcgYSB2aXJ0dWFsIG1l
bW9yeSBhcmVhIG5vcm1hbGx5CiAgICBkb2Vzbid0IHJlc3VsdCBpbiB0aGF0IGFyZWEgbm8gbG9u
Z2VyIGJlaW5nIGFjY2Vzc2libGUuIEEgcHJvYmxlbQogICAgY291bGQgb2NjdXIgb25seSBpbiBj
YXNlIGVpdGhlciBhIHNpZ25hbCByZWNlaXZlZCByZXN1bHRzIGluIHNvbWUKICAgIG1lbW9yeSBh
bGxvY2F0aW9uIGRvbmUgaW4gdGhlIHNpZ25hbCBoYW5kbGVyIChTSUdIVVAgaXMgYSBwcmltYXJ5
CiAgICBjYW5kaWRhdGUgbGVhZGluZyB0byByZW9wZW5pbmcgdGhlIGxvZyBmaWxlKSwgb3IgaW4g
Y2FzZSB0aGUgdGFsbG9jCiAgICBmcmFtZXdvcmsgd291bGQgZG8gc29tZSBpbnRlcm5hbCBtZW1v
cnkgYWxsb2NhdGlvbiBkdXJpbmcgZnJlZWluZyBvZgogICAgdGhlIG1lbW9yeSAod2hpY2ggd291
bGQgbGVhZCB0byBjbG9iYmVyaW5nIG9mIHRoZSBmcmVlZCBkb21haW4KICAgIHN0cnVjdHVyZSku
CiAgICAKICAgIEZpeGVzOiA1NjJhMWMwZjdlZjNmYiAoInRvb2xzL3hlbnN0b3JlOiBkb250IHVu
bGluayBjb25uZWN0aW9uIG9iamVjdCB0d2ljZSIpCiAgICBTaWduZWQtb2ZmLWJ5OiBKdWVyZ2Vu
IEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CiAgICBSZXZpZXdlZC1ieTogSnVsaWVuIEdyYWxsIDxq
Z3JhbGxAYW1hem9uLmNvbT4KLS0tCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMg
fCA1ICsrKystCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p
CgpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5jIGIvdG9vbHMv
eGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5jCmluZGV4IGJhZGRhYmE1ZGYuLjU4NTgxODUyMTEg
MTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYworKysgYi90b29s
cy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMKQEAgLTIxNCw2ICsyMTQsNyBAQCBzdGF0aWMg
dm9pZCBkb21haW5fY2xlYW51cCh2b2lkKQogewogCXhjX2RvbWluZm9fdCBkb21pbmZvOwogCXN0
cnVjdCBkb21haW4gKmRvbWFpbjsKKwlzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubjsKIAlpbnQgbm90
aWZ5ID0gMDsKIAogIGFnYWluOgpAQCAtMjMwLDggKzIzMSwxMCBAQCBzdGF0aWMgdm9pZCBkb21h
aW5fY2xlYW51cCh2b2lkKQogCQkJCWNvbnRpbnVlOwogCQl9CiAJCWlmIChkb21haW4tPmNvbm4p
IHsKLQkJCXRhbGxvY191bmxpbmsodGFsbG9jX2F1dG9mcmVlX2NvbnRleHQoKSwgZG9tYWluLT5j
b25uKTsKKwkJCS8qIGRvbWFpbiBpcyBhIHRhbGxvYyBjaGlsZCBvZiBkb21haW4tPmNvbm4uICov
CisJCQljb25uID0gZG9tYWluLT5jb25uOwogCQkJZG9tYWluLT5jb25uID0gTlVMTDsKKwkJCXRh
bGxvY191bmxpbmsodGFsbG9jX2F1dG9mcmVlX2NvbnRleHQoKSwgY29ubik7CiAJCQlub3RpZnkg
PSAwOyAvKiBkZXN0cm95X2RvbWFpbigpIGZpcmVzIHRoZSB3YXRjaCAqLwogCQkJZ290byBhZ2Fp
bjsKIAkJfQotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hl
bi5naXQjc3RhZ2luZwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 19:22:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 19:22:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKRtH-0006tq-SP; Fri, 03 Apr 2020 19:22:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKRtG-0006tl-Qp
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:06 +0000
X-Inumbo-ID: 66b712ce-75e0-11ea-bd5e-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 66b712ce-75e0-11ea-bd5e-12813bfff9fa;
 Fri, 03 Apr 2020 19:22:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rO8ORfCweUACVPHPC+hCMiflEuLh0fPdIU0pVClwb1o=; b=TCx3+iN4X3b4BJH2Wlw19TniR2
 j1lPwXUVT9PXbVId4ucGxQgSYmbKkTdU0Y0ZI+nrLnd00h/JhvrjO0Nx4GxseCL1HtAoUvTTmW6d1
 rJoVWEyGqC0p1Ke0vnxe4rs7Gt70EZzeTLb5NEiWO3eMx78sxrRNMJPMZHe4+BgZgPtY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRtE-0006nI-AC
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRtE-0006Xl-8v
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKRtE-0006Xl-8v@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 19:22:04 +0000
Subject: [Xen-changelog] [xen staging] docs: Render .md files using pandoc
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDM3MDUzNTc4ZThiZDU3ZGU5ZDExNGIxOWEyOWY1YWIxNTMzZDYwNzEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIEFwciAzIDE0OjEyOjEyIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICBkb2NzOiBSZW5kZXIgLm1kIGZpbGVzIHVzaW5nIHBhbmRvYwogICAg
CiAgICBUaGlzIGZpeGVzIHRoZSBmYWN0IHRoYXQgcWVtdS1kZXByaXZpbGVnZS5tZCwgbm9uLWNv
b3BlcmF0aXZlLW1pZ3JhdGlvbi5tZCBhbmQKICAgIHhlbnN0b3JlLW1pZ3JhdGlvbi5tZCBkb24n
dCBjdXJyZW50bHkgZ2V0IHJlbmRlcmVkIGF0IGFsbCwgYW5kIGFyZSB0aGVyZWZvcmUKICAgIG1p
c3NpbmcgZnJvbSB4ZW5iaXRzLnhlbi5vcmcvZG9jcwogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBB
bmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6
IFBhdWwgRHVycmFudCA8cGF1bEB4ZW4ub3JnPgogICAgUmV2aWV3ZWQtYnk6IElhbiBKYWNrc29u
IDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgogICAgQmFja3BvcnQ6IDQuMTIKLS0tCiBkb2Nz
L01ha2VmaWxlIHwgMTUgKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRp
b25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvY3MvTWFrZWZpbGUgYi9kb2Nz
L01ha2VmaWxlCmluZGV4IGQ4YmE5OWIxZGMuLjNlYWUyZGFlNjAgMTAwNjQ0Ci0tLSBhL2RvY3Mv
TWFrZWZpbGUKKysrIGIvZG9jcy9NYWtlZmlsZQpAQCAtMTUsNyArMTUsNyBAQCBSU1QtU1JDLXkg
Oj0gJChzb3J0ICQoZmlsdGVyLW91dCAlaW5kZXgucnN0LCQoc2hlbGwgZmluZCAqIC10eXBlIGYg
LW5hbWUgJyoucnN0JwogCiBUWFRTUkMteSA6PSAkKHNvcnQgJChzaGVsbCBmaW5kIG1pc2MgLW5h
bWUgJyoudHh0JyAtcHJpbnQpKQogCi1QQU5ET0NTUkMteSA6PSAkKHNvcnQgJChzaGVsbCBmaW5k
IGRlc2lnbnMvIGZlYXR1cmVzLyBtaXNjLyBwcm9jZXNzLyBzcGVjcy8gLW5hbWUgJyoucGFuZG9j
JyAtcHJpbnQpKQorUEFORE9DU1JDLXkgOj0gJChzb3J0ICQoc2hlbGwgZmluZCBkZXNpZ25zLyBm
ZWF0dXJlcy8gbWlzYy8gcHJvY2Vzcy8gc3BlY3MvIFwoIC1uYW1lICcqLnBhbmRvYycgLW8gLW5h
bWUgJyoubWQnIFwpIC1wcmludCkpCiAKICMgRG9jdW1lbnRhdGlvbiB0YXJnZXRzCiAkKGZvcmVh
Y2ggaSwkKE1BTl9TRUNUSU9OUyksIFwKQEAgLTI0LDE1ICsyNCwxOCBAQCAkKGZvcmVhY2ggaSwk
KE1BTl9TRUNUSU9OUyksIFwKIAogRE9DX0hUTUwgOj0gaHRtbC9TVVBQT1JULmh0bWwgXAogICAg
ICAgICAgICAgJChwYXRzdWJzdCAlLnBhbmRvYyxodG1sLyUuaHRtbCwkKFBBTkRPQ1NSQy15KSkg
XAorICAgICAgICAgICAgJChwYXRzdWJzdCAlLm1kLGh0bWwvJS5odG1sLCQoUEFORE9DU1JDLXkp
KSBcCiAgICAgICAgICAgICAkKHBhdHN1YnN0ICUucnN0LGh0bWwvJS5odG1sLCQoUlNULVNSQy15
KSkgXAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLGh0bWwvJS5odG1sLCQoTUFOLVNSQy15KSkg
XAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLnR4dCxodG1sLyUudHh0LCQoVFhUU1JDLXkpKSBc
CiAgICAgICAgICAgICAkKHBhdHN1YnN0ICUsaHRtbC9oeXBlcmNhbGwvJS9pbmRleC5odG1sLCQo
RE9DX0FSQ0hFUykpCiBET0NfVFhUICA6PSAkKHBhdHN1YnN0ICUudHh0LHR4dC8lLnR4dCwkKFRY
VFNSQy15KSkgXAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLnBhbmRvYyx0eHQvJS50eHQsJChQ
QU5ET0NTUkMteSkpIFwKKyAgICAgICAgICAgICQocGF0c3Vic3QgJS5tZCx0eHQvJS50eHQsJChQ
QU5ET0NTUkMteSkpIFwKICAgICAgICAgICAgICQocGF0c3Vic3QgJS5yc3QsdHh0LyUudHh0LCQo
UlNULVNSQy15KSkgXAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLHR4dC8lLnR4dCwkKE1BTi1T
UkMteSkpCiBET0NfUERGICA6PSAkKHBhdHN1YnN0ICUucGFuZG9jLHBkZi8lLnBkZiwkKFBBTkRP
Q1NSQy15KSkgXAorICAgICAgICAgICAgJChwYXRzdWJzdCAlLm1kLHBkZi8lLnBkZiwkKFBBTkRP
Q1NSQy15KSkgXAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLnJzdCxwZGYvJS5wZGYsJChSU1Qt
U1JDLXkpKQogCiAjIFRvcCBsZXZlbCBidWlsZCB0YXJnZXRzCkBAIC0yMjgsMTIgKzIzMSwxMCBA
QCBkZWZpbmUgR0VORVJBVEVfUEFORE9DX1JVTEUKICMgJCgxKSBpcyB0aGUgdGFyZ2V0IGRvY3Vt
ZW50YXRpb24gZm9ybWF0LiAkKDIpIGlzIHRoZSBzb3VyY2UgZm9ybWF0LgogJChjYWxsIEdFTkVS
QVRFX1BBTkRPQ19SVUxFX1JBVywkKDEpLyUuJCgxKSwlLiQoMikpCiBlbmRlZgotJChldmFsICQo
Y2FsbCBHRU5FUkFURV9QQU5ET0NfUlVMRSxwZGYscGFuZG9jKSkgICAjIHBkZi8lLnBkZjogJS5w
YW5kb2MKLSQoZXZhbCAkKGNhbGwgR0VORVJBVEVfUEFORE9DX1JVTEUscGRmLHJzdCkpICAgICAg
IyBwZGYvJS5wZGY6ICUucnN0Ci0kKGV2YWwgJChjYWxsIEdFTkVSQVRFX1BBTkRPQ19SVUxFLHR4
dCxwYW5kb2MpKSAgICMgdHh0LyUudHh0OiAlLnBhbmRvYwotJChldmFsICQoY2FsbCBHRU5FUkFU
RV9QQU5ET0NfUlVMRSx0eHQscnN0KSkgICAgICAjIHR4dC8lLnR4dDogJS5yc3QKLSQoZXZhbCAk
KGNhbGwgR0VORVJBVEVfUEFORE9DX1JVTEUsaHRtbCxwYW5kb2MpKSAgIyBodG1sLyUuaHRtbDog
JS5wYW5kb2MKLSQoZXZhbCAkKGNhbGwgR0VORVJBVEVfUEFORE9DX1JVTEUsaHRtbCxyc3QpKSAg
ICAgIyBodG1sLyUuaHRtbDogJS5yc3QKKworJChmb3JlYWNoIGRzdC1mbXQscGRmIHR4dCBodG1s
LFwKKyQoZm9yZWFjaCBzcmMtZm10LHBhbmRvYyBtZCByc3QsXAorJChldmFsICQoY2FsbCBHRU5F
UkFURV9QQU5ET0NfUlVMRSwkKGRzdC1mbXQpLCQoc3JjLWZtdCkpKSkpCiAKICQoZXZhbCAkKGNh
bGwgR0VORVJBVEVfUEFORE9DX1JVTEVfUkFXLGh0bWwvU1VQUE9SVC5odG1sLCQoWEVOX1JPT1Qp
L1NVUFBPUlQubWQpKQogCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hl
bi9naXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5n
ZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 19:22:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 19:22:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKRtP-0006uR-UQ; Fri, 03 Apr 2020 19:22:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKRtP-0006uM-E3
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:15 +0000
X-Inumbo-ID: 6cbc0e72-75e0-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6cbc0e72-75e0-11ea-83d8-bc764e2007e4;
 Fri, 03 Apr 2020 19:22:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2SBa522Uw+cOMI/kM8x9CLv4NEubuGkbOIS3M2h1XJc=; b=wwLwmlTUpFSNfleGQmO/9LKoJZ
 H/5KaVnEio35PN6UUtaiToZBWgHF9WNi0oWOZRiNi72r9vXux9BYtz2UXlw9ljg1HLkbJ55qQ4jto
 Ka/oHqreGRdpg3PPBjss04wzKD/hSw4Rb+FHLSPwSvq22EUlMGqxGP+StDoEWL88RHqU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRtO-0006nP-DH
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRtO-0006YE-Bs
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKRtO-0006YE-Bs@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 19:22:14 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode/intel: Remove one CPUID
 from collect_cpu_info()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGM4MWZiNGU0YTM1Y2JlZTRmMzczMzg3YzRlZDUyNzY3NmY2ZGM0YjEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDE1OjUyOjQzIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGUvaW50ZWw6IFJlbW92ZSBvbmUgQ1BVSUQgZnJvbSBj
b2xsZWN0X2NwdV9pbmZvKCkKICAgIAogICAgVGhlIENQVUlEIGluc3RydWN0aW9uIGlzIGV4cGVu
c2l2ZS4gIE5vIHBvaW50IGV4ZWN1dGluZyBpdCB0d2ljZSB3aGVuIG9uY2UKICAgIHdpbGwgZG8g
ZmluZS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl
cjNAY2l0cml4LmNvbT4KICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyB8IDQgKy0tLQog
MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMgYi94ZW4vYXJjaC94ODYvY3B1
L21pY3JvY29kZS9pbnRlbC5jCmluZGV4IDcyYmQxYWQwYmMuLmYxZTY0ZTE4OGIgMTAwNjQ0Ci0t
LSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2
L2NwdS9taWNyb2NvZGUvaW50ZWwuYwpAQCAtMTIxLDE0ICsxMjEsMTIgQEAgc3RhdGljIGludCBj
b2xsZWN0X2NwdV9pbmZvKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQogCiAgICAgbWVtc2V0
KGNzaWcsIDAsIHNpemVvZigqY3NpZykpOwogCi0gICAgY3NpZy0+c2lnID0gY3B1aWRfZWF4KDB4
MDAwMDAwMDEpOwotCiAgICAgcmRtc3JsKE1TUl9JQTMyX1BMQVRGT1JNX0lELCBtc3JfY29udGVu
dCk7CiAgICAgY3NpZy0+cGYgPSAxIDw8ICgobXNyX2NvbnRlbnQgPj4gNTApICYgNyk7CiAKICAg
ICB3cm1zcmwoTVNSX0lBMzJfVUNPREVfUkVWLCAweDBVTEwpOwogICAgIC8qIEFzIGRvY3VtZW50
ZWQgaW4gdGhlIFNETTogRG8gYSBDUFVJRCAxIGhlcmUgKi8KLSAgICBjcHVpZF9lYXgoMSk7Cisg
ICAgY3NpZy0+c2lnID0gY3B1aWRfZWF4KDEpOwogCiAgICAgLyogZ2V0IHRoZSBjdXJyZW50IHJl
dmlzaW9uIGZyb20gTVNSIDB4OEIgKi8KICAgICByZG1zcmwoTVNSX0lBMzJfVUNPREVfUkVWLCBt
c3JfY29udGVudCk7Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9n
aXQveGVuLmdpdCNzdGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3Rz
LnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxv
Zw==

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 19:22:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 19:22:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKRta-0006vk-WB; Fri, 03 Apr 2020 19:22:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKRtZ-0006vZ-Hh
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:25 +0000
X-Inumbo-ID: 72bf9b90-75e0-11ea-bd5e-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 72bf9b90-75e0-11ea-bd5e-12813bfff9fa;
 Fri, 03 Apr 2020 19:22:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=9lWQIFlfstZhbEjRXSMDuuvDPCN4bgHgDt/Y+CnCH44=; b=j0QUfDgEmkLH/0GNUbtrH9zWWX
 nXTQ7W5ZpAUZQeHIbsOg3+r+1R0sZFlfhbqtRWz6OabdjGsmyeQUEIaPyZnGEPRCAan1fsTF0qCca
 GR7PrdimI5GGqpykXZNL18HHbtQfqDCryucg1qGiDFEdg6YblA/jBg4TYpHdR/niFx1I=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRtY-0006nY-G1
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRtY-0006Yk-Ew
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKRtY-0006Yk-Ew@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 19:22:24 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode: Drop ops->match_cpu()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDYyZDdiMzJkZjdhZWRjYmI2Y2E0N2JhMTM2ZGMyMmM5MzMyMDczNTgKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDE3OjQ1OjUyIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGU6IERyb3Agb3BzLT5tYXRjaF9jcHUoKQogICAgCiAg
ICBJdCB0dXJucyBvdXQgdGhlcmUgYXJlIG5vIGNhbGxlcnMgb2YgdGhlIGhvb2soKS4gIFRoZSBv
bmx5IGNhbGxlcnMgYXJlIHRoZQogICAgbG9jYWwsIHdoaWNoIGNhbiBlYXNpbHkgYmUgcmVhcnJh
bmdlZCB0byB1c2UgdGhlIGFwcHJvcHJpYXRlIGludGVybmFsIGhlbHBlci4KICAgIAogICAgU2ln
bmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KICAg
IFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgICAgIHwgIDggKy0tLS0tLS0KIHhlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMgICB8IDExICstLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9wcml2YXRlLmggfCAgNiAtLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMiBp
bnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCmlu
ZGV4IGQ0NzYzZWE3NzYuLmM5NjU2ZGU1NWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCkBA
IC0xODgsMTEgKzE4OCw2IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgbWlj
cm9jb2RlX2ZpdHMoCiAgICAgcmV0dXJuIE5FV19VQ09ERTsKIH0KIAotc3RhdGljIGJvb2wgbWF0
Y2hfY3B1KGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQotewotICAgIHJldHVy
biBwYXRjaCAmJiAobWljcm9jb2RlX2ZpdHMocGF0Y2gpID09IE5FV19VQ09ERSk7Ci19Ci0KIHN0
YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7CiAg
ICAgeGZyZWUocGF0Y2gpOwpAQCAtMjI3LDcgKzIyMiw3IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWlj
cm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogICAgIGlmICggIXBh
dGNoICkKICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAKLSAgICBpZiAoICFtYXRjaF9jcHUocGF0
Y2gpICkKKyAgICBpZiAoIG1pY3JvY29kZV9maXRzKHBhdGNoKSAhPSBORVdfVUNPREUgKQogICAg
ICAgICByZXR1cm4gLUVJTlZBTDsKIAogICAgIGlmICggY2hlY2tfZmluYWxfcGF0Y2hfbGV2ZWxz
KHNpZykgKQpAQCAtNDI4LDUgKzQyMyw0IEBAIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzIGFt
ZF91Y29kZV9vcHMgPSB7CiAjZW5kaWYKICAgICAuZnJlZV9wYXRjaCAgICAgICAgICAgICAgICAg
ICAgICAgPSBmcmVlX3BhdGNoLAogICAgIC5jb21wYXJlX3BhdGNoICAgICAgICAgICAgICAgICAg
ICA9IGNvbXBhcmVfcGF0Y2gsCi0gICAgLm1hdGNoX2NwdSAgICAgICAgICAgICAgICAgICAgICAg
ID0gbWF0Y2hfY3B1LAogfTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2ludGVsLmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCmluZGV4IGYxZTY0
ZTE4OGIuLjMxNWZjYTlmZjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYwpAQCAtMjQ1
LDE0ICsyNDUsNiBAQCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29k
ZV91cGRhdGVfbWF0Y2goCiAgICAgcmV0dXJuIG1jLT5yZXYgPiBjcHVfc2lnLT5yZXYgPyBORVdf
VUNPREUgOiBPTERfVUNPREU7CiB9CiAKLXN0YXRpYyBib29sIG1hdGNoX2NwdShjb25zdCBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKLXsKLSAgICBpZiAoICFwYXRjaCApCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKHBhdGNo
KSA9PSBORVdfVUNPREU7Ci19Ci0KIHN0YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IG1pY3Jv
Y29kZV9wYXRjaCAqcGF0Y2gpCiB7CiAgICAgeGZyZWUocGF0Y2gpOwpAQCAtMjgxLDcgKzI3Myw3
IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0
Y2ggKnBhdGNoKQogICAgIGlmICggIXBhdGNoICkKICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAK
LSAgICBpZiAoICFtYXRjaF9jcHUocGF0Y2gpICkKKyAgICBpZiAoIG1pY3JvY29kZV91cGRhdGVf
bWF0Y2gocGF0Y2gpICE9IE5FV19VQ09ERSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCiAg
ICAgLyogd3JpdGUgbWljcm9jb2RlIHZpYSBNU1IgMHg3OSAqLwpAQCAtMzY5LDUgKzM2MSw0IEBA
IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzIGludGVsX3Vjb2RlX29wcyA9IHsKICAgICAuYXBw
bHlfbWljcm9jb2RlICAgICAgICAgICAgICAgICAgPSBhcHBseV9taWNyb2NvZGUsCiAgICAgLmZy
ZWVfcGF0Y2ggICAgICAgICAgICAgICAgICAgICAgID0gZnJlZV9wYXRjaCwKICAgICAuY29tcGFy
ZV9wYXRjaCAgICAgICAgICAgICAgICAgICAgPSBjb21wYXJlX3BhdGNoLAotICAgIC5tYXRjaF9j
cHUgICAgICAgICAgICAgICAgICAgICAgICA9IG1hdGNoX2NwdSwKIH07CmRpZmYgLS1naXQgYS94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9wcml2YXRlLmggYi94ZW4vYXJjaC94ODYvY3B1L21p
Y3JvY29kZS9wcml2YXRlLmgKaW5kZXggZGYwZDA4NTJjZC4uZDMxYmNmMTRiMSAxMDA2NDQKLS0t
IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvcHJpdmF0ZS5oCisrKyBiL3hlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUuaApAQCAtNjAsMTIgKzYwLDYgQEAgc3RydWN0IG1pY3Jv
Y29kZV9vcHMgewogICAgIHZvaWQgKCpmcmVlX3BhdGNoKShzdHJ1Y3QgbWljcm9jb2RlX3BhdGNo
ICpwYXRjaCk7CiAKICAgICAvKgotICAgICAqIElzIHRoZSBtaWNyb2NvZGUgcGF0Y2ggYXBwbGlj
YWJsZSBmb3IgdGhlIGN1cnJlbnQgQ1BVLCBhbmQgbmV3ZXIgdGhhbgotICAgICAqIHRoZSBjdXJy
ZW50bHkgcnVubmluZyBwYXRjaD8KLSAgICAgKi8KLSAgICBib29sICgqbWF0Y2hfY3B1KShjb25z
dCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCk7Ci0KLSAgICAvKgogICAgICAqIEdpdmVu
IHR3byBwYXRjaGVzLCBhcmUgdGhleSBib3RoIGFwcGxpY2FibGUgdG8gdGhlIGN1cnJlbnQgQ1BV
LCBhbmQgaXMKICAgICAgKiBuZXcgYSBoaWdoZXIgcmV2aXNpb24gdGhhbiBvbGQ/CiAgICAgICov
Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNz
dGFnaW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY
ZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qu
b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 19:22:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 19:22:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKRtk-0006x3-3e; Fri, 03 Apr 2020 19:22:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKRtj-0006wv-8H
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:35 +0000
X-Inumbo-ID: 78bc7216-75e0-11ea-bd5e-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 78bc7216-75e0-11ea-bd5e-12813bfff9fa;
 Fri, 03 Apr 2020 19:22:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hHQbD8B5lqxvJ0M44bpzZoTdgHfRuxJ6L91xnrsdD8w=; b=Qtd0Su0iwvujkWcvPxIu4IEpDN
 lu81LoRAEUqo68mppI1xxO3jrortpCEWkkicBxROj5ga+HDuM4+5vzIj03s6m+68B7QbO4LIxRpyE
 L1Tz3nxiBIK3DGNjUKp/quolbLZ7DBltLMCQpshl7XZynRMEhPoDDy7LWR0h84MM/nwI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRti-0006nm-Iq
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRti-0006ZP-Hs
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKRti-0006ZP-Hs@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 19:22:34 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode: Don't try to cope with
 NULL pointers in apply_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDQ4NTNmMDNkZWUyZWQxN2NjNDIxMjYwZDY2OTM3N2RiMjUzZjBkYWMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDIyOjQ1OjIyIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGU6IERvbid0IHRyeSB0byBjb3BlIHdpdGggTlVMTCBw
b2ludGVycyBpbiBhcHBseV9taWNyb2NvZGUoKQogICAgCiAgICBObyBwYXRocyB0byBhcHBseV9t
aWNyb2NvZGUoKSBwYXNzIGEgTlVMTCBwb2ludGVyLCBhbmQgb3RoZXIgaG9va3MgZG9uJ3QKICAg
IHRvbGVyYXRlIG9uZSBpbiB0aGUgZmlyc3QgcGxhY2UuICBXZSBjYW4gZXhwZWN0IHRoZSBjb3Jl
IGxvZ2ljIG5vdCB0byBwYXNzIHVzCiAgICBqdW5rLCBzbyBkcm9wIHRoZSBjaGVja3MuCiAgICAK
ICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5j
b20+CiAgICBSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0K
IHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jICAgfCAzIC0tLQogeGVuL2FyY2gveDg2
L2NwdS9taWNyb2NvZGUvaW50ZWwuYyB8IDMgLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDYgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgYi94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwppbmRleCBjOTY1NmRlNTVkLi4wY2EwZTlh
MDM4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYworKysgYi94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpAQCAtMjE5LDkgKzIxOSw2IEBAIHN0YXRp
YyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNo
KQogICAgIHN0cnVjdCBjcHVfc2lnbmF0dXJlICpzaWcgPSAmcGVyX2NwdShjcHVfc2lnLCBjcHUp
OwogICAgIHVpbnQzMl90IHJldiwgb2xkX3JldiA9IHNpZy0+cmV2OwogCi0gICAgaWYgKCAhcGF0
Y2ggKQotICAgICAgICByZXR1cm4gLUVOT0VOVDsKLQogICAgIGlmICggbWljcm9jb2RlX2ZpdHMo
cGF0Y2gpICE9IE5FV19VQ09ERSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCmRpZmYgLS1n
aXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvaW50ZWwuYwppbmRleCAzMTVmY2E5ZmYyLi45Y2IwNzdiNTgzIDEwMDY0NAot
LS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCisrKyBiL3hlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKQEAgLTI3MCw5ICsyNzAsNiBAQCBzdGF0aWMgaW50IGFw
cGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICBz
dHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnRoaXNfY3B1KGNwdV9zaWcpOwogICAgIHVpbnQz
Ml90IHJldiwgb2xkX3JldiA9IHNpZy0+cmV2OwogCi0gICAgaWYgKCAhcGF0Y2ggKQotICAgICAg
ICByZXR1cm4gLUVOT0VOVDsKLQogICAgIGlmICggbWljcm9jb2RlX3VwZGF0ZV9tYXRjaChwYXRj
aCkgIT0gTkVXX1VDT0RFICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLS0KZ2VuZXJhdGVk
IGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cg
bWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 19:22:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 19:22:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKRtv-0006yC-5c; Fri, 03 Apr 2020 19:22:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKRtt-0006y4-KC
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:45 +0000
X-Inumbo-ID: 7ec0f0c4-75e0-11ea-bd5e-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7ec0f0c4-75e0-11ea-bd5e-12813bfff9fa;
 Fri, 03 Apr 2020 19:22:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=KXVnLqyIpTtnwy1c6+oTEXUxrFPwCIGccia6RdtLb0o=; b=elxxQWXrdL+5Qq769rHFDyPHSZ
 rNRFT4GQXURvdrYem6N53JxpPa9kqMruijnU4fDfhyoQHgpCqVTK4g+HW29b0UWGQnXK3ofosGHBn
 gT6OCSsobXfvL1Qm3Uat2uyIampU+yrevFKKEOahmLYT1djYQ5bovkFiaKaTpB9L+IA8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRts-0006ny-Lp
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRts-0006ag-Kd
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKRts-0006ag-Kd@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 19:22:44 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode: Drop ops->free_patch()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDZiODgzNmFhNjU5NDdlNThiYTJiNTg1NzNjZWNlMDM3NTRhZDY4ZjYKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDE2OjMyOjE2IDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGU6IERyb3Agb3BzLT5mcmVlX3BhdGNoKCkKICAgIAog
ICAgV2l0aCB0aGUgbmV3bHkgY2xlYW5lZCB1cCB2ZW5kb3IgbG9naWMsIGVhY2ggc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCBpcyBhCiAgICB0cml2aWFsIG9iamVjdCBpbiBtZW1vcnkgd2l0aCBubyBk
ZXBlbmRlbnQgYWxsb2NhdGlvbnMuCiAgICAKICAgIFRoaXMgaXMgdW5saWtlbHkgdG8gY2hhbmdl
IG1vdmluZyBmb3J3YXJkcywgYW5kIGZ1bmN0aW9uIHBvaW50ZXJzIGFyZQogICAgZXhwZW5zaXZl
IGluIHRoZSBkYXlzIG9mIHJldHBvbGluZS4gIE1vdmUgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIHhm
cmVlKCkgYmFjawogICAgdG8gY29tbW9uIGNvZGUuICBJZiB0aGUgbmVlZCBkb2VzIGFyaXNlIGlu
IHRoZSBmdXR1cmUsIHdlIGNhbiBjb25zaWRlcgogICAgcmVpbnRyb2R1Y2luZyB0aGUgaG9vay4K
ICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0
cml4LmNvbT4KICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+
Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgICAgIHwgNiAtLS0tLS0KIHhl
bi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUuYyAgICB8IDQgKystLQogeGVuL2FyY2gveDg2
L2NwdS9taWNyb2NvZGUvaW50ZWwuYyAgIHwgNiAtLS0tLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWlj
cm9jb2RlL3ByaXZhdGUuaCB8IDUgKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25z
KCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3Jv
Y29kZS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCmluZGV4IDBjYTBl
OWEwMzguLmUyM2JkZWY2ZjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCkBAIC0xODgsMTEg
KzE4OCw2IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgbWljcm9jb2RlX2Zp
dHMoCiAgICAgcmV0dXJuIE5FV19VQ09ERTsKIH0KIAotc3RhdGljIHZvaWQgZnJlZV9wYXRjaChz
dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKLXsKLSAgICB4ZnJlZShwYXRjaCk7Ci19Ci0K
IHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgY29tcGFyZV9oZWFkZXIoCiAgICAg
Y29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbmV3LCBjb25zdCBzdHJ1Y3QgbWljcm9jb2Rl
X3BhdGNoICpvbGQpCiB7CkBAIC00MTgsNiArNDEzLDUgQEAgY29uc3Qgc3RydWN0IG1pY3JvY29k
ZV9vcHMgYW1kX3Vjb2RlX29wcyA9IHsKICAgICAuc3RhcnRfdXBkYXRlICAgICAgICAgICAgICAg
ICAgICAgPSBzdGFydF91cGRhdGUsCiAgICAgLmVuZF91cGRhdGVfcGVyY3B1ICAgICAgICAgICAg
ICAgID0gc3ZtX2hvc3Rfb3N2d19pbml0LAogI2VuZGlmCi0gICAgLmZyZWVfcGF0Y2ggICAgICAg
ICAgICAgICAgICAgICAgID0gZnJlZV9wYXRjaCwKICAgICAuY29tcGFyZV9wYXRjaCAgICAgICAg
ICAgICAgICAgICAgPSBjb21wYXJlX3BhdGNoLAogfTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL2NvcmUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUu
YwppbmRleCBiM2U1OTEzZDQ5Li41M2U0NDdlYTlhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9jb3JlLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvY29y
ZS5jCkBAIC0yNDMsOSArMjQzLDkgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBh
cnNlX2Jsb2IoY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKQogICAgIHJldHVybiBOVUxMOwog
fQogCi1zdGF0aWMgdm9pZCBtaWNyb2NvZGVfZnJlZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3Bh
dGNoICptaWNyb2NvZGVfcGF0Y2gpCitzdGF0aWMgdm9pZCBtaWNyb2NvZGVfZnJlZV9wYXRjaChz
dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKIHsKLSAgICBtaWNyb2NvZGVfb3BzLT5mcmVl
X3BhdGNoKG1pY3JvY29kZV9wYXRjaCk7CisgICAgeGZyZWUocGF0Y2gpOwogfQogCiAvKiBSZXR1
cm4gdHJ1ZSBpZiBjYWNoZSBnZXRzIHVwZGF0ZWQuIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlICov
CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIGIveGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYwppbmRleCA5Y2IwNzdiNTgzLi4yOTc0NWVkNTVm
IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCisrKyBiL3hl
bi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKQEAgLTI0NSwxMSArMjQ1LDYgQEAgc3Rh
dGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKAog
ICAgIHJldHVybiBtYy0+cmV2ID4gY3B1X3NpZy0+cmV2ID8gTkVXX1VDT0RFIDogT0xEX1VDT0RF
OwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX3BhdGNoKHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBh
dGNoKQotewotICAgIHhmcmVlKHBhdGNoKTsKLX0KLQogc3RhdGljIGVudW0gbWljcm9jb2RlX21h
dGNoX3Jlc3VsdCBjb21wYXJlX3BhdGNoKAogICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0
Y2ggKm5ldywgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqb2xkKQogewpAQCAtMzU2LDYg
KzM1MSw1IEBAIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzIGludGVsX3Vjb2RlX29wcyA9IHsK
ICAgICAuY3B1X3JlcXVlc3RfbWljcm9jb2RlICAgICAgICAgICAgPSBjcHVfcmVxdWVzdF9taWNy
b2NvZGUsCiAgICAgLmNvbGxlY3RfY3B1X2luZm8gICAgICAgICAgICAgICAgID0gY29sbGVjdF9j
cHVfaW5mbywKICAgICAuYXBwbHlfbWljcm9jb2RlICAgICAgICAgICAgICAgICAgPSBhcHBseV9t
aWNyb2NvZGUsCi0gICAgLmZyZWVfcGF0Y2ggICAgICAgICAgICAgICAgICAgICAgID0gZnJlZV9w
YXRjaCwKICAgICAuY29tcGFyZV9wYXRjaCAgICAgICAgICAgICAgICAgICAgPSBjb21wYXJlX3Bh
dGNoLAogfTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUu
aCBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUuaAppbmRleCBkMzFiY2YxNGIx
Li44NzhmOGQ4MDVmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9wcml2
YXRlLmgKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvcHJpdmF0ZS5oCkBAIC0yNSw3
ICsyNSw3IEBAIHN0cnVjdCBtaWNyb2NvZGVfb3BzIHsKICAgICAgKgogICAgICAqIElmIG9uZSBp
cyBmb3VuZCwgYWxsb2NhdGUgYW5kIHJldHVybiBhIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gKICAg
ICAgKiBlbmNhcHN1bGF0aW5nIHRoZSBhcHByb3ByaWF0ZSBtaWNyb2NvZGUgcGF0Y2guICBEb2Vz
IG5vdCBhbGlhcyB0aGUKLSAgICAgKiBvcmlnaW5hbCBidWZmZXIuCisgICAgICogb3JpZ2luYWwg
YnVmZmVyLiAgTXVzdCBiZSBzdWl0YWJsZSB0byBiZSBmcmVlZCB3aXRoIGEgc2luZ2xlIHhmcmVl
KCkuCiAgICAgICoKICAgICAgKiBJZiBvbmUgaXMgbm90IGZvdW5kLCAobm90aGluZyBtYXRjaGVz
IHRoZSBjdXJyZW50IENQVSksIHJldHVybiBOVUxMLgogICAgICAqIEFsc28gbWF5IHJldHVybiBF
UlJfUFRSKC1lcnIpLCBlLmcuIGJhZCBjb250YWluZXIsIG91dCBvZiBtZW1vcnkuCkBAIC01Niw5
ICs1Niw2IEBAIHN0cnVjdCBtaWNyb2NvZGVfb3BzIHsKICAgICAgKi8KICAgICB2b2lkICgqZW5k
X3VwZGF0ZV9wZXJjcHUpKHZvaWQpOwogCi0gICAgLyogRnJlZSBhIHBhdGNoIHByZXZpb3VzbHkg
YWxsb2NhdGVkIGJ5IGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpLiAqLwotICAgIHZvaWQgKCpmcmVl
X3BhdGNoKShzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCk7Ci0KICAgICAvKgogICAgICAq
IEdpdmVuIHR3byBwYXRjaGVzLCBhcmUgdGhleSBib3RoIGFwcGxpY2FibGUgdG8gdGhlIGN1cnJl
bnQgQ1BVLCBhbmQgaXMKICAgICAgKiBuZXcgYSBoaWdoZXIgcmV2aXNpb24gdGhhbiBvbGQ/Ci0t
CmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNzdGFn
aW5nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t
Y2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Fri Apr 03 19:22:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 03 Apr 2020 19:22:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKRu5-0006zq-7d; Fri, 03 Apr 2020 19:22:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=KtuU=5T=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKRu3-0006zh-Kf
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:55 +0000
X-Inumbo-ID: 84ca2f12-75e0-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 84ca2f12-75e0-11ea-b4f4-bc764e2007e4;
 Fri, 03 Apr 2020 19:22:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=1GEutetiGHsjR/pXvImiNqxVIAwJHDhprYMTEGmrLak=; b=jOGgWdVOJDaZ4ESxEnwnV1Li4a
 O0bI3JzAYOiOvqCkIPrWs7+BlchWSEm/W8NI9YLKa2miVGkIGUU3Bxrjd3dm9fjLVyTci5XcxmVy+
 0t7MxDPUJmBSkAQE9YYUkB0K1iJ0SbM32Xy795Y0uv4pbu//3jdat28iWAkY/tUTWUlI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRu2-0006o7-Oe
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKRu2-0006bA-Nf
 for xen-changelog@lists.xenproject.org; Fri, 03 Apr 2020 19:22:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKRu2-0006bA-Nf@xenbits.xenproject.org>
Date: Fri, 03 Apr 2020 19:22:54 +0000
Subject: [Xen-changelog] [xen staging] x86/ucode: Simplify the
 ops->collect_cpu_info() API
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDk5MGI2ZTM4ZDkzYzZlNjBmOWQ4MWU4YjcxZGRmZDIwOWZjYTAwYmQKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDE2OjE4OjMyIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGU6IFNpbXBsaWZ5IHRoZSBvcHMtPmNvbGxlY3RfY3B1
X2luZm8oKSBBUEkKICAgIAogICAgQWxsIGNhbGxlcnMgcGFzcyAmdGhpc19jcHUoY3B1X3NpZykg
Zm9yIHRoZSBjcHVfc2lnIHBhcmFtZXRlciwgYW5kIGFsbAogICAgaW1wbGVtZW50YXRpb25zIHVu
Y29uZGl0aW9uYWxseSByZXR1cm4gMC4gIFNpbXBsaWZ5IGl0IHRvIGJlIHZvaWQuCiAgICAKICAg
IERyb3AgdGhlIGxvbmctc3RhbGUgY29tbWVudCBvbiB0aGUgQU1EIHNpZGUsIHdob3NlIGNvdW50
ZXJwYXJ0IGluCiAgICBzdGFydF91cGRhdGUoKSB1c2VkIHRvIGJlICJjb2xsZWN0X2NwdV9pbmZv
KCkgZG9lc24ndCBmYWlsIHNvIHdlJ3JlIGZpbmUiLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBB
bmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6
IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21p
Y3JvY29kZS9hbWQuYyAgICAgfCAgNyArKystLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29k
ZS9jb3JlLmMgICAgfCAxNCArKysrKystLS0tLS0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2Nv
ZGUvaW50ZWwuYyAgIHwgIDUgKystLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZh
dGUuaCB8ICA3ICsrKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTcg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1k
LmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwppbmRleCBlMjNiZGVmNmYyLi4x
M2JmOWY0ZGVlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwor
KysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpAQCAtOTAsOSArOTAsMTAgQEAg
c3RhdGljIHN0cnVjdCB7CiAgICAgdWludDE2X3QgaWQ7CiB9IGVxdWl2IF9fcmVhZF9tb3N0bHk7
CiAKLS8qIFNlZSBjb21tZW50IGluIHN0YXJ0X3VwZGF0ZSgpIGZvciBjYXNlcyB3aGVuIHRoaXMg
cm91dGluZSBmYWlscyAqLwotc3RhdGljIGludCBjb2xsZWN0X2NwdV9pbmZvKHN0cnVjdCBjcHVf
c2lnbmF0dXJlICpjc2lnKQorc3RhdGljIHZvaWQgY29sbGVjdF9jcHVfaW5mbyh2b2lkKQogewor
ICAgIHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnID0gJnRoaXNfY3B1KGNwdV9zaWcpOworCiAg
ICAgbWVtc2V0KGNzaWcsIDAsIHNpemVvZigqY3NpZykpOwogCiAgICAgY3NpZy0+c2lnID0gY3B1
aWRfZWF4KDEpOwpAQCAtMTAwLDggKzEwMSw2IEBAIHN0YXRpYyBpbnQgY29sbGVjdF9jcHVfaW5m
byhzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqY3NpZykKIAogICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6
IENQVSVkIGNvbGxlY3RfY3B1X2luZm86IHBhdGNoX2lkPSUjeFxuIiwKICAgICAgICAgICAgICBz
bXBfcHJvY2Vzc29yX2lkKCksIGNzaWctPnJldik7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogc3Rh
dGljIGJvb2xfdCB2ZXJpZnlfcGF0Y2hfc2l6ZSh1aW50MzJfdCBwYXRjaF9zaXplKQpkaWZmIC0t
Z2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvY29yZS5jIGIveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvY29yZS5jCmluZGV4IDUzZTQ0N2VhOWEuLmEyMjBmOTA4YjggMTAwNjQ0Ci0t
LSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUuYworKysgYi94ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9jb3JlLmMKQEAgLTIzNywxMCArMjM3LDkgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm5taV9wYXRjaCA9IFpFUk9fQkxPQ0tfUFRSOwogICovCiBz
dGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGFyc2VfYmxvYihjb25zdCBjaGFyICpidWYs
IHNpemVfdCBsZW4pCiB7Ci0gICAgaWYgKCBsaWtlbHkoIW1pY3JvY29kZV9vcHMtPmNvbGxlY3Rf
Y3B1X2luZm8oJnRoaXNfY3B1KGNwdV9zaWcpKSkgKQotICAgICAgICByZXR1cm4gbWljcm9jb2Rl
X29wcy0+Y3B1X3JlcXVlc3RfbWljcm9jb2RlKGJ1ZiwgbGVuKTsKKyAgICBtaWNyb2NvZGVfb3Bz
LT5jb2xsZWN0X2NwdV9pbmZvKCk7CiAKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gbWlj
cm9jb2RlX29wcy0+Y3B1X3JlcXVlc3RfbWljcm9jb2RlKGJ1ZiwgbGVuKTsKIH0KIAogc3RhdGlj
IHZvaWQgbWljcm9jb2RlX2ZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gp
CkBAIC0zMDYsMTAgKzMwNSw5IEBAIHN0YXRpYyBib29sIHdhaXRfY3B1X2NhbGxvdXQodW5zaWdu
ZWQgaW50IG5yKQogICovCiBzdGF0aWMgaW50IG1pY3JvY29kZV91cGRhdGVfY3B1KGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewotICAgIGludCBlcnIgPSBtaWNyb2NvZGVf
b3BzLT5jb2xsZWN0X2NwdV9pbmZvKCZ0aGlzX2NwdShjcHVfc2lnKSk7CisgICAgaW50IGVycjsK
IAotICAgIGlmICggdW5saWtlbHkoZXJyKSApCi0gICAgICAgIHJldHVybiBlcnI7CisgICAgbWlj
cm9jb2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbygpOwogCiAgICAgc3Bpbl9sb2NrKCZtaWNyb2Nv
ZGVfbXV0ZXgpOwogICAgIGlmICggcGF0Y2ggKQpAQCAtNzM3LDcgKzczNSw3IEBAIGludCBtaWNy
b2NvZGVfdXBkYXRlX29uZShib29sIHN0YXJ0X3VwZGF0ZSkKICAgICBpZiAoICFtaWNyb2NvZGVf
b3BzICkKICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0gICAgbWljcm9jb2RlX29wcy0+
Y29sbGVjdF9jcHVfaW5mbygmdGhpc19jcHUoY3B1X3NpZykpOworICAgIG1pY3JvY29kZV9vcHMt
PmNvbGxlY3RfY3B1X2luZm8oKTsKIAogICAgIGlmICggc3RhcnRfdXBkYXRlICYmIG1pY3JvY29k
ZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCiAgICAgewpAQCAtODE5LDcgKzgxNyw3IEBAIGludCBfX2lu
aXQgZWFybHlfbWljcm9jb2RlX2luaXQodm9pZCkKICAgICAgICAgcmV0dXJuIC1FTk9ERVY7CiAg
ICAgfQogCi0gICAgbWljcm9jb2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbygmdGhpc19jcHUoY3B1
X3NpZykpOworICAgIG1pY3JvY29kZV9vcHMtPmNvbGxlY3RfY3B1X2luZm8oKTsKIAogICAgIGlm
ICggdWNvZGVfbW9kLm1vZF9lbmQgfHwgdWNvZGVfYmxvYi5zaXplICkKICAgICAgICAgcmMgPSBl
YXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdSgpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMK
aW5kZXggMjk3NDVlZDU1Zi4uYTlmNGQ2ZTgyOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRl
bC5jCkBAIC0xMTUsOCArMTE1LDkgQEAgc3RhdGljIGJvb2wgc2lnbmF0dXJlX21hdGNoZXMoY29u
c3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKmNwdV9zaWcsCiAgICAgcmV0dXJuIGNwdV9zaWctPnBm
ICYgdWNvZGVfcGY7CiB9CiAKLXN0YXRpYyBpbnQgY29sbGVjdF9jcHVfaW5mbyhzdHJ1Y3QgY3B1
X3NpZ25hdHVyZSAqY3NpZykKK3N0YXRpYyB2b2lkIGNvbGxlY3RfY3B1X2luZm8odm9pZCkKIHsK
KyAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqY3NpZyA9ICZ0aGlzX2NwdShjcHVfc2lnKTsKICAg
ICB1aW50NjRfdCBtc3JfY29udGVudDsKIAogICAgIG1lbXNldChjc2lnLCAwLCBzaXplb2YoKmNz
aWcpKTsKQEAgLTEzMyw4ICsxMzQsNiBAQCBzdGF0aWMgaW50IGNvbGxlY3RfY3B1X2luZm8oc3Ry
dWN0IGNwdV9zaWduYXR1cmUgKmNzaWcpCiAgICAgY3NpZy0+cmV2ID0gKHVpbnQzMl90KShtc3Jf
Y29udGVudCA+PiAzMik7CiAgICAgcHJfZGVidWcoIm1pY3JvY29kZTogY29sbGVjdF9jcHVfaW5m
byA6IHNpZz0lI3gsIHBmPSUjeCwgcmV2PSUjeFxuIiwKICAgICAgICAgICAgICBjc2lnLT5zaWcs
IGNzaWctPnBmLCBjc2lnLT5yZXYpOwotCi0gICAgcmV0dXJuIDA7CiB9CiAKIC8qCmRpZmYgLS1n
aXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9wcml2YXRlLmggYi94ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9wcml2YXRlLmgKaW5kZXggODc4ZjhkODA1Zi4uZGM1YzdhODFhZSAxMDA2
NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvcHJpdmF0ZS5oCisrKyBiL3hlbi9h
cmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUuaApAQCAtMzMsOCArMzMsMTEgQEAgc3RydWN0
IG1pY3JvY29kZV9vcHMgewogICAgIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKigqY3B1X3JlcXVl
c3RfbWljcm9jb2RlKShjb25zdCB2b2lkICpidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKTsKIAotICAgIC8qIE9idGFp
biBtaWNyb2NvZGUtcmVsZXZhbnQgZGV0YWlscyBmb3IgdGhlIGN1cnJlbnQgQ1BVLiAqLwotICAg
IGludCAoKmNvbGxlY3RfY3B1X2luZm8pKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKTsKKyAg
ICAvKgorICAgICAqIE9idGFpbiBtaWNyb2NvZGUtcmVsZXZhbnQgZGV0YWlscyBmb3IgdGhlIGN1
cnJlbnQgQ1BVLiAgUmVzdWx0cyBpbgorICAgICAqIHBlcl9jcHUoY3B1X3NpZykuCisgICAgICov
CisgICAgdm9pZCAoKmNvbGxlY3RfY3B1X2luZm8pKHZvaWQpOwogCiAgICAgLyoKICAgICAgKiBB
dHRlbXB0IHRvIGxvYWQgdGhlIHByb3ZpZGVkIHBhdGNoIGludG8gdGhlIENQVS4gIFJldHVybnMg
YW4gZXJyb3IgaWYKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dp
dC94ZW4uZ2l0I3N0YWdpbmcKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:55:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:55:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZth-0001FD-OS; Sat, 04 Apr 2020 03:55:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZtg-0001F8-Ca
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:04 +0000
X-Inumbo-ID: 1043d81c-7628-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1043d81c-7628-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 03:55:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Lbsel0lC3jRTchSu4eFwwJu6fRSKgqvzBUBFmGRmbtg=; b=kdulMq0wUIFR7XOctG6mfw06L+
 53xVyazWdMv2/c90q0ujl8405lq7puJthTPSiQRY3tdBycds8v+U0L3MExhoJrpCAUbXX5pO6Pm9g
 C+p+XFe0GykVa0jOFTgU2P5sS//COVr31y1qC3rsrQTSO19rYwtUZu9qHzlqGfJ+gbQE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZtf-00054c-1b
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZte-00060k-W5
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZte-00060k-W5@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:55:02 +0000
Subject: [Xen-changelog] [xen master] xen/x86: Remove parentheses from
 return arguments
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDRiM2Y0MWU5ZDgzMjA5ZjUzMzQwOTU5MzdhZWY3NzYzZGE5OTM3ODEKQXV0aG9yOiAg
ICAgU2ltcmFuIFNpbmdoYWwgPHNpbmdoYWxzaW1yYW4wQGdtYWlsLmNvbT4KQXV0aG9yRGF0ZTog
U3VuIE1hciAyOSAxMjowNzo0NyAyMDIwICswNTMwCkNvbW1pdDogICAgIFdlaSBMaXUgPHdsQHhl
bi5vcmc+CkNvbW1pdERhdGU6IE1vbiBNYXIgMzAgMTQ6MTY6NDggMjAyMCArMDEwMAoKICAgIHhl
bi94ODY6IFJlbW92ZSBwYXJlbnRoZXNlcyBmcm9tIHJldHVybiBhcmd1bWVudHMKICAgIAogICAg
VGhpcyBwYXRjaCByZW1vdmUgdW5uZWNlc3NhcnkgcGFyZW50aGVzZXMgZnJvbSByZXR1cm4gYXJn
dW1lbnRzLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1yYW4gU2luZ2hhbCA8c2luZ2hhbHNp
bXJhbjBAZ21haWwuY29tPgogICAgUmV2aWV3ZWQtYnk6IFdlaSBMaXUgPHdsQHhlbi5vcmc+CiAg
ICBBY2tlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHhlbi9hcmNo
L3g4Ni9jcHUvbWNoZWNrL21jdGVsZW0uYyB8IDIgKy0KIHhlbi9hcmNoL3g4Ni9odm0vaXJxLmMg
ICAgICAgICAgICB8IDQgKystLQogMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWN0ZWxl
bS5jIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWN0ZWxlbS5jCmluZGV4IDAxMmE5Yjk1ZTUu
LjMyOWFjMjBmYWYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jdGVsZW0u
YworKysgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY3RlbGVtLmMKQEAgLTM4Miw3ICszODIs
NyBAQCBtY3RlbGVtX2Nvb2tpZV90IG1jdGVsZW1fcmVzZXJ2ZShtY3RlbGVtX2NsYXNzX3Qgd2hp
Y2gpCiAKIAkJaWYgKGJpdCA+PSBNQ19ORU5UKSB7CiAJCQltY3RlbGVtX2Ryb3BfY291bnQrKzsK
LQkJCXJldHVybiAoTlVMTCk7CisJCQlyZXR1cm4gTlVMTDsKIAkJfQogCiAJCS8qIHRyeSB0byBh
bGxvY2F0ZSwgYXRvbWljYWxseSBjbGVhciBmcmVlIGJpdCAqLwpkaWZmIC0tZ2l0IGEveGVuL2Fy
Y2gveDg2L2h2bS9pcnEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaXJxLmMKaW5kZXggYjNlZTBkOTEz
MC4uOWM4YWRiYzQ5NSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pcnEuYworKysgYi94
ZW4vYXJjaC94ODYvaHZtL2lycS5jCkBAIC02OTMsNyArNjkzLDcgQEAgc3RhdGljIGludCBpcnFf
c2F2ZV9pc2Eoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQogICAgIHN0
cnVjdCBodm1faXJxICpodm1faXJxID0gaHZtX2RvbWFpbl9pcnEoZCk7CiAKICAgICAvKiBTYXZl
IElTQSBJUlEgbGluZXMgKi8KLSAgICByZXR1cm4gKCBodm1fc2F2ZV9lbnRyeShJU0FfSVJRLCAw
LCBoLCAmaHZtX2lycS0+aXNhX2lycSkgKTsKKyAgICByZXR1cm4gaHZtX3NhdmVfZW50cnkoSVNB
X0lSUSwgMCwgaCwgJmh2bV9pcnEtPmlzYV9pcnEpOwogfQogCiBzdGF0aWMgaW50IGlycV9zYXZl
X2xpbmsoc3RydWN0IHZjcHUgKnYsIGh2bV9kb21haW5fY29udGV4dF90ICpoKQpAQCAtNzAyLDcg
KzcwMiw3IEBAIHN0YXRpYyBpbnQgaXJxX3NhdmVfbGluayhzdHJ1Y3QgdmNwdSAqdiwgaHZtX2Rv
bWFpbl9jb250ZXh0X3QgKmgpCiAgICAgc3RydWN0IGh2bV9pcnEgKmh2bV9pcnEgPSBodm1fZG9t
YWluX2lycShkKTsKIAogICAgIC8qIFNhdmUgUENJLUlTQSBsaW5rIHN0YXRlICovCi0gICAgcmV0
dXJuICggaHZtX3NhdmVfZW50cnkoUENJX0xJTkssIDAsIGgsICZodm1faXJxLT5wY2lfbGluaykg
KTsKKyAgICByZXR1cm4gaHZtX3NhdmVfZW50cnkoUENJX0xJTkssIDAsIGgsICZodm1faXJxLT5w
Y2lfbGluayk7CiB9CiAKIHN0YXRpYyBpbnQgaXJxX2xvYWRfcGNpKHN0cnVjdCBkb21haW4gKmQs
IGh2bV9kb21haW5fY29udGV4dF90ICpoKQotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZv
ciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hh
bmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
eGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:55:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:55:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZtq-0001Gc-TG; Sat, 04 Apr 2020 03:55:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZtp-0001GX-S1
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:13 +0000
X-Inumbo-ID: 164b6b1c-7628-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 164b6b1c-7628-11ea-9e09-bc764e2007e4;
 Sat, 04 Apr 2020 03:55:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Ut02na+FBADokeIFQBgPSspAkJRn4F03r9qFNOaBvQI=; b=Ma3gcXScqU5xX5bmLzG/zHxqZm
 gAlzDna4YsBuyGVm5rQUGsdqDZJhn0erg4uwY1TBVJeUXBo4gAMD8P9HRm1UaUGGP2TAlPkSet61m
 9NK4P9a4GgTAGFF6G9LxK3wMuKc+/pbsw4v+YalHO7KBP/jH5lxMV/q4rDj71orqgJfE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZtp-00055D-4q
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZtp-00061J-3d
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZtp-00061J-3d@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:55:13 +0000
Subject: [Xen-changelog] [xen master] scripts: Use stat to check lock claim
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGI3MjY4MmM2MDJiOGQxYWFhZGNhNDM5ZDQ5Y2M3OWM3OWRiYzE3YmMKQXV0aG9yOiAg
ICAgSmFzb24gQW5kcnl1ayA8amFuZHJ5dWtAZ21haWwuY29tPgpBdXRob3JEYXRlOiBUaHUgTWFy
IDEyIDEwOjU0OjE3IDIwMjAgLTA0MDAKQ29tbWl0OiAgICAgV2VpIExpdSA8d2xAeGVuLm9yZz4K
Q29tbWl0RGF0ZTogTW9uIE1hciAzMCAxNDozNTo1MyAyMDIwICswMTAwCgogICAgc2NyaXB0czog
VXNlIHN0YXQgdG8gY2hlY2sgbG9jayBjbGFpbQogICAgCiAgICBSZXBsYWNlIHRoZSBwZXJsIGxv
Y2tpbmcgY2hlY2sgd2l0aCBzdGF0KDEpLiAgU3RhdCBpcyBhYmxlIHRvIGZzdGF0CiAgICBzdGRp
biAoZmlsZSBkZXNjcmlwdG9yIDApIHdoZW4gcGFzc2VkICctJyBhcyBhbiBhcmd1bWVudC4gIFRo
aXMgaXMgbm93CiAgICB1c2VkIHRvIGNoZWNrICRfbG9ja2ZkLiAgc3RhdCgxKSBzdXBwb3J0IGZv
ciAnLScgd2FzIGludHJvZHVjZWQgdG8KICAgIGNvcmV1dGlscyBpbiAyMDA5LgogICAgCiAgICBB
ZnRlciBBIHJlbGVhc2VzIGl0cyBsb2NrLCBzY3JpcHQgQiB3aWxsIHJldHVybiBmcm9tIGZsb2Nr
IGFuZCBleGVjdXRlCiAgICBzdGF0LiAgU2luY2UgdGhlIGxvY2tmaWxlIGhhcyBiZWVuIHJlbW92
ZWQgYnkgQSwgc3RhdCBwcmludHMgYW4gZXJyb3IgdG8KICAgIHN0ZGVyciBhbmQgZXhpdHMgbm9u
LXplcm8uICBSZWRpcmVjdCBzdGRlcnIgdG8gL2Rldi9udWxsIHRvIGF2b2lkCiAgICBmaWxsaW5n
IC92YXIvbG9nL3hlbi94ZW4taG90cGx1Zy5sb2cgd2l0aCAiTm8gc3VjaCBmaWxlIG9yIGRpcmVj
dG9yeSIKICAgIG1lc3NhZ2VzLgogICAgCiAgICBQbGFjaW5nIHRoZSBzdGF0IGNhbGwgaW5zaWRl
IHRoZSAiaWYiIGNvbmRpdGlvbiBlbnN1cmVzIHdlIG9ubHkgY2hlY2sKICAgIHRoZSBzdGF0IG91
dHB1dCB3aGVuIHRoZSBjb21tYW5kIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCiAgICAKICAgIFRo
aXMgY2hhbmdlIHJlbW92ZXMgdGhlIG9ubHkgcnVudGltZSBkZXBlbmRlbmN5IG9mIHRoZSB4ZW4g
dG9vbHN0YWNrIG9uCiAgICBwZXJsLgogICAgCiAgICBTdWdnZXN0ZWQtYnk6IElhbiBKYWNrc29u
IDxpYW4uamFja3NvbkBjaXRyaXguY29tPgogICAgU2lnbmVkLW9mZi1ieTogSmFzb24gQW5kcnl1
ayA8amFuZHJ5dWtAZ21haWwuY29tPgogICAgUmV2aWV3ZWQtYnk6IElhbiBKYWNrc29uIDxpYW4u
amFja3NvbkBldS5jaXRyaXguY29tPgotLS0KIHRvb2xzL2hvdHBsdWcvTGludXgvbG9ja2luZy5z
aCB8IDI4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOSBp
bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2hvdHBsdWcv
TGludXgvbG9ja2luZy5zaCBiL3Rvb2xzL2hvdHBsdWcvTGludXgvbG9ja2luZy5zaAppbmRleCBi
YWFhZjczNTA4Li42OWFlZmFlNmY2IDEwMDY0NAotLS0gYS90b29scy9ob3RwbHVnL0xpbnV4L2xv
Y2tpbmcuc2gKKysrIGIvdG9vbHMvaG90cGx1Zy9MaW51eC9sb2NraW5nLnNoCkBAIC00MSw3ICs0
MSw3IEBAIGNsYWltX2xvY2soKQogICAgICMgZnJvbSBjaGlhcmstdXRpbHMsIGV4Y2VwdCB1c2lu
ZyBmbG9jay4gIEl0IGhhcyB0aGUgYmVuZWZpdCBvZgogICAgICMgaXQgYmVpbmcgcG9zc2libGUg
dG8gc2FmZWx5IHJlbW92ZSB0aGUgbG9ja2ZpbGUgd2hlbiBkb25lLgogICAgICMgU2VlIGJlbG93
IGZvciBhIGNvcnJlY3RuZXNzIHByb29mLgotICAgIGxvY2FsIHJpZ2h0ZmlsZQorICAgIGxvY2Fs
IHN0YXQKICAgICB3aGlsZSB0cnVlOyBkbwogICAgICAgICBldmFsICJleGVjICRfbG9ja2ZkPD4k
X2xvY2tmaWxlIgogICAgICAgICBmbG9jayAteCAkX2xvY2tmZCB8fCByZXR1cm4gJD8KQEAgLTUw
LDE0ICs1MCwyNCBAQCBjbGFpbV9sb2NrKCkKICAgICAgICAgIyBhY3R1YWxseSBhIHN5bnRoZXRp
YyBzeW1saW5rIGluIC9wcm9jIGFuZCB3ZSBhcmVuJ3QKICAgICAgICAgIyBndWFyYW50ZWVkIHRo
YXQgb3VyIHN0YXQoMikgd29uJ3QgbG9zZSB0aGUgcmFjZSB3aXRoIGFuCiAgICAgICAgICMgcm0o
MSkgYmV0d2VlbiByZWFkaW5nIHRoZSBzeW50aGV0aWMgbGluayBhbmQgdHJhdmVyc2luZyB0aGUK
LSAgICAgICAgIyBmaWxlIHN5c3RlbSB0byBmaW5kIHRoZSBpbnVtLiAgUGVybCBpcyB2ZXJ5IGZh
c3Qgc28gdXNlIHRoYXQuCi0gICAgICAgIHJpZ2h0ZmlsZT0kKCBwZXJsIC1lICcKLSAgICAgICAg
ICAgIG9wZW4gU1RESU4sICI8JickX2xvY2tmZCciIG9yIGRpZSAkITsKLSAgICAgICAgICAgIG15
ICRmZF9pbnVtID0gKHN0YXQgU1RESU4pWzFdOyBkaWUgJCEgdW5sZXNzIGRlZmluZWQgJGZkX2lu
dW07Ci0gICAgICAgICAgICBteSAkZmlsZV9pbnVtID0gKHN0YXQgJEFSR1ZbMF0pWzFdOwotICAg
ICAgICAgICAgcHJpbnQgInlcbiIgaWYgJGZkX2ludW0gZXEgJGZpbGVfaW51bTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyAiJF9sb2NrZmlsZSIgKQotICAgICAgICBpZiBbIHgkcmln
aHRmaWxlID0geHkgXTsgdGhlbiBicmVhazsgZmkKKyAgICAgICAgIyBmaWxlIHN5c3RlbSB0byBm
aW5kIHRoZSBpbnVtLiAgc3RhdCgxKSB0cmFuc2xhdGVzICctJyBpbnRvIGFuCisgICAgICAgICMg
ZnN0YXQoMikgb2YgRkQgMC4gIFNvIHdlIGp1c3QgbmVlZCB0byBhcnJhbmdlIHRoZSBGRHMgcHJv
cGVybHkKKyAgICAgICAgIyB0byBnZXQgdGhlIGZzdGF0KDIpIHdlIG5lZWQuICBzdGF0IHdpbGwg
b3V0cHV0IHR3byBsaW5lcyBsaWtlOgorICAgICAgICAjIFdXLlhYWAorICAgICAgICAjIFlZLlpa
WgorICAgICAgICAjIHdoaWNoIG5lZWQgdG8gYmUgc2VwYXJhdGVkIGFuZCBjb21wYXJlZC4KKyAg
ICAgICAgaWYgc3RhdD0kKCBzdGF0IC1MIC1jICclRC4laScgLSAkX2xvY2tmaWxlIDA8JiRfbG9j
a2ZkIDI+L2Rldi9udWxsICkKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgbG9jYWwgZmlsZV9z
dGF0CisgICAgICAgICAgICBsb2NhbCBmZF9zdGF0CisKKyAgICAgICAgICAgICMgbWF0Y2ggb24g
bGl0ZXJhbCBuZXdsaW5lCisgICAgICAgICAgICBmZF9zdGF0PSR7c3RhdCUKKyp9CisgICAgICAg
ICAgICBmaWxlX3N0YXQ9JHtzdGF0IyoKK30KKyAgICAgICAgICAgIGlmIFsgIiRmZF9zdGF0IiA9
ICIkZmlsZV9zdGF0IiBdIDsgdGhlbiBicmVhazsgZmkKKyAgICAgICAgZmkKICAgICAgICAgIyBT
b21lIHZlcnNpb25zIG9mIGJhc2ggYXBwZWFyIHRvIGJlIGJ1Z2d5IGlmIHRoZSBzYW1lCiAgICAg
ICAgICMgJF9sb2NrZmlsZSBpcyBvcGVuZWQgcmVwZWF0ZWRseS4gQ2xvc2UgdGhlIGN1cnJlbnQg
ZmQgaGVyZS4KICAgICAgICAgZXZhbCAiZXhlYyAkX2xvY2tmZDwmLSIKLS0KZ2VuZXJhdGVkIGJ5
IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWls
aW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3Rz
LnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:55:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:55:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZu1-0001Ho-V9; Sat, 04 Apr 2020 03:55:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZu0-0001Hb-5O
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:24 +0000
X-Inumbo-ID: 1c4a6d56-7628-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1c4a6d56-7628-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 03:55:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=bvc5xq63y/e8Ne6C8KT1Gi2fRnYb0Okd0D3Q4ImPQZI=; b=lC2I96GO5m5B5Ll/NBhZx44eit
 BmlH1Y7QV/vIDQ8avJP00K5n7eMcyEya2/JqGgzZRZ6NkoTBi2q/UqeZ1vMBBXWQgtoLcLFUiy1vB
 saL0lshIb9MuDktfLIZGKKSZs6gpUW8fq5Yly+lJeBXvGejGh3I3Okn8K5WzJ7J+Ohto=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZtz-00055T-8U
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZtz-00061x-72
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZtz-00061x-72@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:55:23 +0000
Subject: [Xen-changelog] [xen master] docs etc.: https: Fix references to
 wiki.xen[project].org
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDdlMTg2N2IxMjExNDYwMmI5NGYyNjMwYTMzYWE4MjIxNWIxYzg5NWMKQXV0aG9yOiAg
ICAgSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkF1dGhvckRhdGU6IE1v
biBNYXIgMzAgMTQ6NDM6MDYgMjAyMCArMDEwMApDb21taXQ6ICAgICBJYW4gSmFja3NvbiA8aWFu
LmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogTW9uIE1hciAzMCAxNToyNzowNiAy
MDIwICswMTAwCgogICAgZG9jcyBldGMuOiBodHRwczogRml4IHJlZmVyZW5jZXMgdG8gd2lraS54
ZW5bcHJvamVjdF0ub3JnCiAgICAKICAgIENoYW5nZSB0aGUgdXJsIHNjaGVtZSB0byBodHRwcy4g
IFRoaXMgaXMgYWxsIGluLXRyZWUgcmVmZXJlbmNlcyB0byB0aGUKICAgIFhlbiB3aWtpLgogICAg
CiAgICBTaWduZWQtb2ZmLWJ5OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNv
bT4KICAgIFJldmlld2VkLWJ5OiBKdWxpZW4gR3JhbGwgPGpncmFsbEBhbWF6b24uY29tPgotLS0K
IFJFQURNRSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0tLS0K
IGNvbmZpZy9QYXRocy5tay5pbiAgICAgICAgICAgICAgICB8ICAyICstCiBkb2NzL1JFQURNRS5j
b2xvICAgICAgICAgICAgICAgICAgfCAgMiArLQogZG9jcy9SRUFETUUucmVtdXMgICAgICAgICAg
ICAgICAgIHwgIDIgKy0KIGRvY3MvbWlzYy9zdHViZG9tLnR4dCAgICAgICAgICAgICB8ICAyICst
CiBkb2NzL21pc2MvdnRkLnR4dCAgICAgICAgICAgICAgICAgfCAgMiArLQogZG9jcy9taXNjL3hl
bi1jb21tYW5kLWxpbmUucGFuZG9jIHwgIDIgKy0KIGRvY3MvbWlzYy94ZW5zdG9yZS50eHQgICAg
ICAgICAgICB8ICAyICstCiB0b29scy9saWJ4bC9saWJ4bHVfY2ZnLmMgICAgICAgICAgfCAgMiAr
LQogOSBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggOTJiMWRlOTkzOC4uNzEyZDA1ZDY5ZCAx
MDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMjEsMTUgKzIxLDE1IEBAIGRldmVs
b3BtZW50IGNvbW11bml0eSwgc3BlYXJoZWFkZWQgYnkgeGVuLm9yZyAoaHR0cDovL3d3dy54ZW4u
b3JnKS4KIAogVGhpcyBmaWxlIGNvbnRhaW5zIHNvbWUgcXVpY2stc3RhcnQgaW5zdHJ1Y3Rpb25z
IHRvIGluc3RhbGwgWGVuIG9uCiB5b3VyIHN5c3RlbS4gRm9yIG1vcmUgaW5mb3JtYXRpb24gc2Vl
IGh0dHA6L3d3dy54ZW4ub3JnLyBhbmQKLWh0dHA6Ly93aWtpLnhlbi5vcmcvCitodHRwczovL3dp
a2kueGVuLm9yZy8KIAogUXVpY2stU3RhcnQgR3VpZGUKID09PT09PT09PT09PT09PT09CiAKIEZp
cnN0LCB0aGlzIGlzIGp1c3QgYSBxdWljay1zdGFydCBndWlkZS4gRm9yIG1vcmUgY29tcHJlaGVu
c2l2ZQogaW5mb3JtYXRpb24gc2VlIHRoZSBJTlNUQUxMIGZpbGUgYW5kIHRoZSBYZW4gd2lraSBh
dAotaHR0cDovL3dpa2kueGVucHJvamVjdC5vcmcgYW5kIGluIHBhcnRpY3VsYXIKLWh0dHA6Ly93
aWtpLnhlbnByb2plY3Qub3JnL3dpa2kvR2V0dGluZ19TdGFydGVkLgoraHR0cHM6Ly93aWtpLnhl
bnByb2plY3Qub3JnIGFuZCBpbiBwYXJ0aWN1bGFyCitodHRwczovL3dpa2kueGVucHJvamVjdC5v
cmcvd2lraS9HZXR0aW5nX1N0YXJ0ZWQuCiAKIFNlY29uZCwgdGhlcmUgYXJlIGEgbnVtYmVyIG9m
IHByZXJlcXVpc2l0ZXMgZm9yIGJ1aWxkaW5nIGEgWGVuIHNvdXJjZQogcmVsZWFzZS4gTWFrZSBz
dXJlIHlvdSBoYXZlIGFsbCB0aGUgZm9sbG93aW5nIGluc3RhbGxlZCwgZWl0aGVyIGJ5CkBAIC04
OCwxMCArODgsMTAgQEAgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lOgogU2Vjb25kLCB5b3UgbmVl
ZCB0byBhY3F1aXJlIGEgc3VpdGFibGUga2VybmVsIGZvciB1c2UgaW4gZG9tYWluIDAuIElmCiBw
b3NzaWJsZSB5b3Ugc2hvdWxkIHVzZSBhIGtlcm5lbCBwcm92aWRlZCBieSB5b3VyIE9TIGRpc3Ry
aWJ1dG9yLiBJZgogbm8gc3VpdGFibGUga2VybmVsIGlzIGF2YWlsYWJsZSBmcm9tIHlvdXIgT1Mg
ZGlzdHJpYnV0b3IgdGhlbiByZWZlciB0bwotaHR0cDovL3dpa2kueGVuLm9yZy93aWtpL1hlbkRv
bTBLZXJuZWxzIGZvciBzdWdnZXN0aW9ucyBmb3IKK2h0dHBzOi8vd2lraS54ZW4ub3JnL3dpa2kv
WGVuRG9tMEtlcm5lbHMgZm9yIHN1Z2dlc3Rpb25zIGZvcgogc3VpdGFibGUga2VybmVscyB0byB1
c2UuCiBJZiB5b3UgYXJlIGxvb2tpbmcgdG8gY29tcGlsZSBhIERvbTAga2VybmVsIGZyb20gc291
cmNlLCBwbGVhc2UgcmVmZXIgdG8KLWh0dHA6Ly93aWtpLnhlbi5vcmcvd2lraS9YZW5QYXJhdmly
dE9wcy4KK2h0dHBzOi8vd2lraS54ZW4ub3JnL3dpa2kvWGVuUGFyYXZpcnRPcHMuCiAKIFtOQi4g
VW5sZXNzIG5vdGVkIG90aGVyd2lzZSwgYWxsIHRoZSBmb2xsb3dpbmcgc3RlcHMgc2hvdWxkIGJl
CiBwZXJmb3JtZWQgd2l0aCByb290IHByaXZpbGVnZXMuXQpAQCAtMTY4LDkgKzE2OCw5IEBAIFlv
dSBjYW4gY2hhbmdlIHRoZSBwcmVmZXJyZWQgeGVuc3RvcmVkIHlvdSB3YW50IHRvIHVzZSBpbiB0
aGUgY29uZmlndXJhdGlvbgogYnV0IHNpbmNlIHdlIGNhbm5vdCBzdG9wIHRoZSBkYWVtb24gYSBy
ZWJvb3Qgd2lsbCBiZSByZXF1aXJlZCB0byBtYWtlIHRoZQogY2hhbmdlIHRha2UgZWZmZWN0Lgog
Ci1bMF0gaHR0cDovL3dpa2kueGVuLm9yZy93aWtpL1hlblN0b3JlCi1bMV0gaHR0cDovL3dpa2ku
eGVuLm9yZy93aWtpL1hlblN0b3JlUmVmZXJlbmNlCi1bMl0gaHR0cDovL3dpa2kueGVuLm9yZy93
aWtpL1hlbnN0b3JlZAorWzBdIGh0dHBzOi8vd2lraS54ZW4ub3JnL3dpa2kvWGVuU3RvcmUKK1sx
XSBodHRwczovL3dpa2kueGVuLm9yZy93aWtpL1hlblN0b3JlUmVmZXJlbmNlCitbMl0gaHR0cHM6
Ly93aWtpLnhlbi5vcmcvd2lraS9YZW5zdG9yZWQKIAogUHl0aG9uIFJ1bnRpbWUgTGlicmFyaWVz
CiA9PT09PT09PT09PT09PT09PT09PT09PT0KZGlmZiAtLWdpdCBhL2NvbmZpZy9QYXRocy5tay5p
biBiL2NvbmZpZy9QYXRocy5tay5pbgppbmRleCBkYzlkMGMwMzUzLi40MTZmYzdhYWI5IDEwMDY0
NAotLS0gYS9jb25maWcvUGF0aHMubWsuaW4KKysrIGIvY29uZmlnL1BhdGhzLm1rLmluCkBAIC0x
MCw3ICsxMCw3IEBACiAjCiAjIEZvciBtb3JlIGRvY3VtZW50YXRpb24geW91IGNhbiByZWZlciB0
byB0aGUgd2lraToKICMKLSMgaHR0cDovL3dpa2kueGVuLm9yZy93aWtpL0NhdGVnb3J5Okhvc3Rf
Q29uZmlndXJhdGlvbiNTeXN0ZW1fd2lkZV94ZW5fY29uZmlndXJhdGlvbgorIyBodHRwczovL3dp
a2kueGVuLm9yZy93aWtpL0NhdGVnb3J5Okhvc3RfQ29uZmlndXJhdGlvbiNTeXN0ZW1fd2lkZV94
ZW5fY29uZmlndXJhdGlvbgogCiBQQUNLQUdFX1RBUk5BTUUgICAgICAgICAgOj0gQFBBQ0tBR0Vf
VEFSTkFNRUAKIHByZWZpeCAgICAgICAgICAgICAgICAgICA6PSBAcHJlZml4QApkaWZmIC0tZ2l0
IGEvZG9jcy9SRUFETUUuY29sbyBiL2RvY3MvUkVBRE1FLmNvbG8KaW5kZXggNDY2ZWI3MjE1Mi4u
YWNiNGVlNWEwYSAxMDA2NDQKLS0tIGEvZG9jcy9SRUFETUUuY29sbworKysgYi9kb2NzL1JFQURN
RS5jb2xvCkBAIC01LDUgKzUsNSBAQCByZXNwb25zZSBpbiBwYXJhbGxlbCB0b28uIElmIHRoZSBy
ZXNwb25zZSBwYWNrZXRzIGZyb20gUFZNIGFuZCBTVk0gYXJlCiBpZGVudGljYWwsIHRoZXkgYXJl
IHJlbGVhc2VkIGltbWVkaWF0ZWx5LiBPdGhlcndpc2UsIGEgVk0gY2hlY2twb2ludCAob24gZGVt
YW5kKQogaXMgY29uZHVjdGVkLgogCi1TZWUgdGhlIHdlYnNpdGUgYXQgaHR0cDovL3dpa2kueGVu
Lm9yZy93aWtpL0NPTE9fLV9Db2Fyc2VfR3JhaW5fTG9ja19TdGVwcGluZworU2VlIHRoZSB3ZWJz
aXRlIGF0IGh0dHBzOi8vd2lraS54ZW4ub3JnL3dpa2kvQ09MT18tX0NvYXJzZV9HcmFpbl9Mb2Nr
X1N0ZXBwaW5nCiBmb3IgZGV0YWlscy4KZGlmZiAtLWdpdCBhL2RvY3MvUkVBRE1FLnJlbXVzIGIv
ZG9jcy9SRUFETUUucmVtdXMKaW5kZXggMjA3ODNjOTNkYS4uZTQxZTA0NWExMCAxMDA2NDQKLS0t
IGEvZG9jcy9SRUFETUUucmVtdXMKKysrIGIvZG9jcy9SRUFETUUucmVtdXMKQEAgLTEsNyArMSw3
IEBACiBSZW11cyBwcm92aWRlcyBmYXVsdCB0b2xlcmFuY2UgZm9yIHZpcnR1YWwgbWFjaGluZXMg
Ynkgc2VuZGluZyBjb250aW51b3VzCiBjaGVja3BvaW50cyB0byBhIGJhY2t1cCwgd2hpY2ggd2ls
bCBhY3RpdmF0ZSBpZiB0aGUgdGFyZ2V0IFZNIGZhaWxzLgogCi1TZWUgdGhlIHdlYnNpdGUgYXQg
aHR0cDovL3dpa2kueGVuLm9yZy93aWtpL1JlbXVzIGZvciBkZXRhaWxzLgorU2VlIHRoZSB3ZWJz
aXRlIGF0IGh0dHBzOi8vd2lraS54ZW4ub3JnL3dpa2kvUmVtdXMgZm9yIGRldGFpbHMuCiAKIFVz
aW5nIFJlbXVzIHdpdGggbGlieGwgb24gWGVuIDQuNSBhbmQgaGlnaGVyOgogIFRvIGVuYWJsZSBu
ZXR3b3JrIGJ1ZmZlcmluZywgeW91IG5lZWQgbGlibmwgMy4yLjgKZGlmZiAtLWdpdCBhL2RvY3Mv
bWlzYy9zdHViZG9tLnR4dCBiL2RvY3MvbWlzYy9zdHViZG9tLnR4dAppbmRleCBkZTdiNmM3ZDk2
Li44ODJhMThjYWI0IDEwMDY0NAotLS0gYS9kb2NzL21pc2Mvc3R1YmRvbS50eHQKKysrIGIvZG9j
cy9taXNjL3N0dWJkb20udHh0CkBAIC0xOSw3ICsxOSw3IEBAIGNvbmZpZzoKICAgICBkZXZpY2Vf
bW9kZWxfc3R1YmRvbWFpbl9vdmVycmlkZSA9IDEKIAogU2VlIHhsLmNmZyg1KSBmb3IgbW9yZSBk
ZXRhaWxzIG9mIHRoZSB4bCBkb21haW4gY29uZmlndXJhdGlvbiBzeW50YXgKLWFuZCBodHRwOi8v
d2lraS54ZW4ub3JnL3dpa2kvRGV2aWNlX01vZGVsX1N0dWJfRG9tYWlucyBmb3IgbW9yZQorYW5k
IGh0dHBzOi8vd2lraS54ZW4ub3JnL3dpa2kvRGV2aWNlX01vZGVsX1N0dWJfRG9tYWlucyBmb3Ig
bW9yZQogaW5mb3JtYXRpb24gb24gZGV2aWNlIG1vZGVsIHN0dWIgZG9tYWlucwogCiAKZGlmZiAt
LWdpdCBhL2RvY3MvbWlzYy92dGQudHh0IGIvZG9jcy9taXNjL3Z0ZC50eHQKaW5kZXggODhiMjEw
MmUzZS4uODkwNzZhMDc3NiAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL3Z0ZC50eHQKKysrIGIvZG9j
cy9taXNjL3Z0ZC50eHQKQEAgLTIwOCw3ICsyMDgsNyBAQCBodHRwOi8vd3d3LmRlbGwuY29tL2Nv
bnRlbnQvcHJvZHVjdHMvY2F0ZWdvcnkuYXNweC9vcHRpeD9jPXVzJmNzPTU1NSZsPWVuJnM9Yml6
CiAtIEhQIENvbXBhcTogIERDNzgwMAogaHR0cDovL2gxMDAxMC53d3cxLmhwLmNvbS93d3BjL3Vz
L2VuL2VuL1dGMDRhLzEyNDU0LTEyNDU0LTY0Mjg3LTMyMTg2MC0zMzI4ODk4Lmh0bWwKIAotRm9y
IG1vcmUgaW5mb3JtYXRpb24sIHBscyByZWZlciB0byBodHRwOi8vd2lraS54ZW4ub3JnL3dpa2kv
VlRkSG93VG8uCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxzIHJlZmVyIHRvIGh0dHBzOi8vd2lr
aS54ZW4ub3JnL3dpa2kvVlRkSG93VG8uCiAKIAogQXNzaWduaW5nIGRldmljZXMgdG8gSFZNIGRv
bWFpbnMKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYyBiL2Rv
Y3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYwppbmRleCAwMjQzMmJkYjI1Li42ZmYzMTdk
MTVkIDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5wYW5kb2MKKysrIGIv
ZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jCkBAIC04NDMsNyArODQzLDcgQEAgU28g
YDxzej5gIGJlaW5nIGAxRysyNSVgIG9uIGEgMjU2IEdCIGhvc3Qgd291bGQgcmVzdWx0IGluIDY1
IEdCLgogSWYgeW91IHVzZSB0aGlzIG9wdGlvbiB0aGVuIGl0IGlzIGhpZ2hseSByZWNvbW1lbmRl
ZCB0aGF0IHlvdSBkaXNhYmxlCiBhbnkgZG9tMCBhdXRvYmFsbG9vbmluZyBmZWF0dXJlIHByZXNl
bnQgaW4geW91ciB0b29sc3RhY2suIFNlZSB0aGUKIF94bC5jb25mKDUpXyBtYW4gcGFnZSBvciBb
WGVuIEJlc3QKLVByYWN0aWNlc10oaHR0cDovL3dpa2kueGVuLm9yZy93aWtpL1hlbl9CZXN0X1By
YWN0aWNlcyNYZW5fZG9tMF9kZWRpY2F0ZWRfbWVtb3J5X2FuZF9wcmV2ZW50aW5nX2RvbTBfbWVt
b3J5X2JhbGxvb25pbmcpLgorUHJhY3RpY2VzXShodHRwczovL3dpa2kueGVuLm9yZy93aWtpL1hl
bl9CZXN0X1ByYWN0aWNlcyNYZW5fZG9tMF9kZWRpY2F0ZWRfbWVtb3J5X2FuZF9wcmV2ZW50aW5n
X2RvbTBfbWVtb3J5X2JhbGxvb25pbmcpLgogCiBUaGlzIG9wdGlvbiBkb2Vzbid0IGhhdmUgZWZm
ZWN0IGlmIHB2LXNoaW0gbW9kZSBpcyBlbmFibGVkLgogCmRpZmYgLS1naXQgYS9kb2NzL21pc2Mv
eGVuc3RvcmUudHh0IGIvZG9jcy9taXNjL3hlbnN0b3JlLnR4dAppbmRleCA3ZjJiMzg4ZGQ1Li4w
NGNlMGJhNjA3IDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuc3RvcmUudHh0CisrKyBiL2RvY3Mv
bWlzYy94ZW5zdG9yZS50eHQKQEAgLTE2OCw3ICsxNjgsNyBAQCBTRVRfUEVSTVMJCTxwYXRoPnw8
cGVybS1hcy1zdHJpbmc+fCs/CiAJCXI8ZG9taWQ+CXJlYWQgb25seQogCQliPGRvbWlkPglib3Ro
IHJlYWQgYW5kIHdyaXRlCiAJCW48ZG9taWQ+CW5vIGFjY2VzcwotCVNlZSBodHRwOi8vd2lraS54
ZW4ub3JnL3dpa2kvWGVuQnVzIHNlY3Rpb24KKwlTZWUgaHR0cHM6Ly93aWtpLnhlbi5vcmcvd2lr
aS9YZW5CdXMgc2VjdGlvbgogCWBQZXJtaXNzaW9ucycgZm9yIGRldGFpbHMgb2YgdGhlIHBlcm1p
c3Npb25zIHN5c3RlbS4KIAogLS0tLS0tLS0tLSBXYXRjaGVzIC0tLS0tLS0tLS0KZGlmZiAtLWdp
dCBhL3Rvb2xzL2xpYnhsL2xpYnhsdV9jZmcuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsdV9jZmcuYwpp
bmRleCBjYWZjNjMyZmMxLi5mOWU4YWEyZjNhIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4
bHVfY2ZnLmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGx1X2NmZy5jCkBAIC03NCw3ICs3NCw3IEBA
IHN0YXRpYyB2b2lkIHBhcnNlKENmZ1BhcnNlQ29udGV4dCAqY3R4KSB7CiAgICAgICAgIGZwdXRz
KAogICJ3YXJuaW5nOiBDb25maWcgZmlsZSBsb29rcyBsaWtlIGl0IGNvbnRhaW5zIFB5dGhvbiBj
b2RlLlxuIgogICJ3YXJuaW5nOiAgQXJiaXRyYXJ5IFB5dGhvbiBpcyBubyBsb25nZXIgc3VwcG9y
dGVkLlxuIgotICJ3YXJuaW5nOiAgU2VlIGh0dHA6Ly93aWtpLnhlbi5vcmcvd2lraS9QeXRob25J
blhsQ29uZmlnXG4iLAorICJ3YXJuaW5nOiAgU2VlIGh0dHBzOi8vd2lraS54ZW4ub3JnL3dpa2kv
UHl0aG9uSW5YbENvbmZpZ1xuIiwKICAgICAgICAgICAgICAgY3R4LT5jZmctPnJlcG9ydCk7CiAg
ICAgfQogfQotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hl
bi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:55:40 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:55:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZuG-0001J8-3a; Sat, 04 Apr 2020 03:55:40 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZuF-0001J3-1I
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:39 +0000
X-Inumbo-ID: 220c1d17-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 220c1d17-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:55:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=1Qc5JQSYjS710xSE+dBQvL43ZHeXwCYCI2wjqKTqnw4=; b=1051wgrn7CdNC8jWKUJnVCir3g
 H5gcl1MwFdh/Dl8ilPNUbxvD7oi391/x/jfWIRKL5gd4tr2ji66+FV6kj71g86I8H4oimqzEm97Th
 8lHI6Nf6B/aZxMRG/Z5lv15bEVKoNuHvzwdHM5kKQ0eaVetm+oYUIC8B583DqkF4iUsU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZu9-00055e-D5
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZu9-00062W-By
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZu9-00062W-By@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:55:33 +0000
Subject: [Xen-changelog] [xen master] docs etc.: https: Fix references to
 other Xen pages
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDk0NjVmYWMyNWViZDQ2YTQ5NWVlMTBjM2NlYmNlNGQ3ZjRiMzJiMTQKQXV0aG9yOiAg
ICAgSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkF1dGhvckRhdGU6IE1v
biBNYXIgMzAgMTQ6NTE6NTEgMjAyMCArMDEwMApDb21taXQ6ICAgICBJYW4gSmFja3NvbiA8aWFu
LmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogTW9uIE1hciAzMCAxNToyNzoxNyAy
MDIwICswMTAwCgogICAgZG9jcyBldGMuOiBodHRwczogRml4IHJlZmVyZW5jZXMgdG8gb3RoZXIg
WGVuIHBhZ2VzCiAgICAKICAgIENoYW5nZSB0aGUgdXJsIHNjaGVtZSB0byBodHRwcy4gIFRoaXMg
aXMgYWxsIGluLXRyZWUgcmVmZXJlbmNlcyB0bwogICAgeGVuYml0cyBhbmQgdGhlIG1haW4gd2Vi
c2l0ZSBleGNlcHQgZm9yIHRob3NlIGluIENvbmZpZy5tay4KICAgIAogICAgV2UgbGVhdmUgQ29u
ZmlnLm1rIGFsb25lIGZvciBub3cgYmVjYXVzZSB0aG9zZSB1cmxzIGFyZSB1c2VkIGJ5IENJCiAg
ICBzeXN0ZW1zIGFuZCB3ZSBuZWVkIHRvIGNoZWNrIHRoYXQgbm90aGluZyBicmVha3Mgd2hlbiB3
ZSBjaGFuZ2UgdGhlCiAgICBkb3dubG9hZCBtZXRob2QuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6
IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6
IEp1bGllbiBHcmFsbCA8amdyYWxsQGFtYXpvbi5jb20+Ci0tLQogUkVBRE1FICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgIDggKysrKy0tLS0KIFNVUFBPUlQubWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAyICstCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgNiArKystLS0KIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAy
ICstCiBkb2NzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKystLS0KIGRv
Y3MvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICB8ICAyICstCiBkb2NzL21pc2MvOXBm
cy5wYW5kb2MgICAgICAgICAgICAgICAgfCAgNCArKy0tCiBkb2NzL21pc2MvbGl2ZXBhdGNoLnBh
bmRvYyAgICAgICAgICAgfCAgNCArKy0tCiBkb2NzL21pc2MvcHZjYWxscy5wYW5kb2MgICAgICAg
ICAgICAgfCAgNiArKystLS0KIGRvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYyAgICB8
ICAyICstCiBkb2NzL21pc2MveGVuc3RvcmUtcGF0aHMucGFuZG9jICAgICAgfCAyMiArKysrKysr
KysrKy0tLS0tLS0tLS0tCiBkb2NzL21pc2MveHNtLWZsYXNrLnR4dCAgICAgICAgICAgICAgfCAg
NCArKy0tCiBkb2NzL3Byb2Nlc3MvYnJhbmNoaW5nLWNoZWNrbGlzdC50eHQgfCAgMiArLQogc3R1
YmRvbS9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCiBzdHViZG9tL2Nv
bmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgfCAgMiArLQogdG9vbHMvY29uZmlndXJlICAgICAg
ICAgICAgICAgICAgICAgIHwgIDYgKysrLS0tCiB0b29scy9jb25maWd1cmUuYWMgICAgICAgICAg
ICAgICAgICAgfCAgMiArLQogeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgICAgICAgICAgIHwg
IDIgKy0KIHhlbi9pbmNsdWRlL3B1YmxpYy9pby9ibGtpZi5oICAgICAgICB8ICAyICstCiAxOSBm
aWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n
aXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggNzEyZDA1ZDY5ZC4uNTU1ZjM0MTVmYSAxMDA2NDQK
LS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtNyw3ICs3LDcgQEAKIAogIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWh0dHA6Ly93d3cueGVuLm9yZy8KK2h0dHBzOi8vd3d3
Lnhlbi5vcmcvCiAKIFdoYXQgaXMgWGVuPwogPT09PT09PT09PT09CkBAIC0xNywxMCArMTcsMTAg
QEAgU3lzdGVtcyBSZXNlYXJjaCBHcm91cCBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2Ug
Q29tcHV0ZXIKIExhYm9yYXRvcnksIGFzIHBhcnQgb2YgdGhlIFVLLUVQU1JDIGZ1bmRlZCBYZW5v
U2VydmVycyBwcm9qZWN0LiAgWGVuCiBpcyBmcmVlbHktZGlzdHJpYnV0YWJsZSBPcGVuIFNvdXJj
ZSBzb2Z0d2FyZSwgcmVsZWFzZWQgdW5kZXIgdGhlIEdOVQogR1BMLiBTaW5jZSBpdHMgaW5pdGlh
bCBwdWJsaWMgcmVsZWFzZSwgWGVuIGhhcyBncm93biBhIGxhcmdlCi1kZXZlbG9wbWVudCBjb21t
dW5pdHksIHNwZWFyaGVhZGVkIGJ5IHhlbi5vcmcgKGh0dHA6Ly93d3cueGVuLm9yZykuCitkZXZl
bG9wbWVudCBjb21tdW5pdHksIHNwZWFyaGVhZGVkIGJ5IHhlbi5vcmcgKGh0dHBzOi8vd3d3Lnhl
bi5vcmcpLgogCiBUaGlzIGZpbGUgY29udGFpbnMgc29tZSBxdWljay1zdGFydCBpbnN0cnVjdGlv
bnMgdG8gaW5zdGFsbCBYZW4gb24KLXlvdXIgc3lzdGVtLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBz
ZWUgaHR0cDovd3d3Lnhlbi5vcmcvIGFuZAoreW91ciBzeXN0ZW0uIEZvciBtb3JlIGluZm9ybWF0
aW9uIHNlZSBodHRwczovd3d3Lnhlbi5vcmcvIGFuZAogaHR0cHM6Ly93aWtpLnhlbi5vcmcvCiAK
IFF1aWNrLVN0YXJ0IEd1aWRlCkBAIC05OSw3ICs5OSw3IEBAIHBlcmZvcm1lZCB3aXRoIHJvb3Qg
cHJpdmlsZWdlcy5dCiAxLiBEb3dubG9hZCBhbmQgdW50YXIgdGhlIHNvdXJjZSB0YXJiYWxsIGZp
bGUuIFRoaXMgd2lsbCBiZSBhCiAgICBmaWxlIG5hbWVkIHhlbi11bnN0YWJsZS1zcmMudGd6LCBv
ciB4ZW4tJHZlcnNpb24tc3JjLnRnei4KICAgIFlvdSBjYW4gYWxzbyBwdWxsIHRoZSBjdXJyZW50
IHZlcnNpb24gZnJvbSB0aGUgZ2l0IG9yIG1lcmN1cmlhbAotICAgcmVwb3NpdG9yaWVzIGF0IGh0
dHA6Ly94ZW5iaXRzLnhlbi5vcmcvCisgICByZXBvc2l0b3JpZXMgYXQgaHR0cHM6Ly94ZW5iaXRz
Lnhlbi5vcmcvCiAKICAgICAjIHRhciB4emYgeGVuLXVuc3RhYmxlLXNyYy50Z3oKIApkaWZmIC0t
Z2l0IGEvU1VQUE9SVC5tZCBiL1NVUFBPUlQubWQKaW5kZXggMTY5YjZmOGZjZi4uNzI3MGM5YjAy
MSAxMDA2NDQKLS0tIGEvU1VQUE9SVC5tZAorKysgYi9TVVBQT1JULm1kCkBAIC02MjcsNyArNjI3
LDcgQEAgVmlydHVhbCBQZXJmb3JtYW5jZSBNYW5hZ2VtZW50IFVuaXQgZm9yIEhWTSBndWVzdHMK
ICAgICBTdGF0dXMsIHg4NjogU3VwcG9ydGVkLCBOb3Qgc2VjdXJpdHkgc3VwcG9ydGVkCiAKIERp
c2FibGVkIGJ5IGRlZmF1bHQgKGVuYWJsZSB3aXRoIGh5cGVydmlzb3IgY29tbWFuZCBsaW5lIG9w
dGlvbikuCi1UaGlzIGZlYXR1cmUgaXMgbm90IHNlY3VyaXR5IHN1cHBvcnRlZDogc2VlIGh0dHA6
Ly94ZW5iaXRzLnhlbi5vcmcveHNhL2Fkdmlzb3J5LTE2My5odG1sCitUaGlzIGZlYXR1cmUgaXMg
bm90IHNlY3VyaXR5IHN1cHBvcnRlZDogc2VlIGh0dHBzOi8veGVuYml0cy54ZW4ub3JnL3hzYS9h
ZHZpc29yeS0xNjMuaHRtbAogCiAjIyMgQXJnbzogSW50ZXItZG9tYWluIG1lc3NhZ2UgZGVsaXZl
cnkgYnkgaHlwZXJjYWxsCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRl
eCA4M2Y4NGIwNDlmLi45ZGEzOTcwY2VmIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29u
ZmlndXJlCkBAIC01ODIsNyArNTgyLDcgQEAgUEFDS0FHRV9UQVJOQU1FPSd4ZW4nCiBQQUNLQUdF
X1ZFUlNJT049JzQuMTQnCiBQQUNLQUdFX1NUUklORz0nWGVuIEh5cGVydmlzb3IgNC4xNCcKIFBB
Q0tBR0VfQlVHUkVQT1JUPSd4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZycKLVBBQ0tBR0VfVVJMPSdo
dHRwOi8vd3d3Lnhlbi5vcmcvJworUEFDS0FHRV9VUkw9J2h0dHBzOi8vd3d3Lnhlbi5vcmcvJwog
CiBhY191bmlxdWVfZmlsZT0iLi94ZW4vY29tbW9uL2tlcm5lbC5jIgogZW5hYmxlX29wdGlvbl9j
aGVja2luZz1ubwpAQCAtMTMzNiw3ICsxMzM2LDcgQEAgT3B0aW9uYWwgUGFja2FnZXM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFtQUkVGSVgvbGliL2RlYnVnXQogCiBSZXBvcnQgYnVncyB0
byA8eGVuLWRldmVsQGxpc3RzLnhlbi5vcmc+LgotWGVuIEh5cGVydmlzb3IgaG9tZSBwYWdlOiA8
aHR0cDovL3d3dy54ZW4ub3JnLz4uCitYZW4gSHlwZXJ2aXNvciBob21lIHBhZ2U6IDxodHRwczov
L3d3dy54ZW4ub3JnLz4uCiBfQUNFT0YKIGFjX3N0YXR1cz0kPwogZmkKQEAgLTI5MDQsNyArMjkw
NCw3IEBAIENvbmZpZ3VyYXRpb24gZmlsZXM6CiAkY29uZmlnX2ZpbGVzCiAKIFJlcG9ydCBidWdz
IHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4uCi1YZW4gSHlwZXJ2aXNvciBob21lIHBhZ2U6
IDxodHRwOi8vd3d3Lnhlbi5vcmcvPi4iCitYZW4gSHlwZXJ2aXNvciBob21lIHBhZ2U6IDxodHRw
czovL3d3dy54ZW4ub3JnLz4uIgogCiBfQUNFT0YKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FD
RU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmln
dXJlLmFjCmluZGV4IDczODhiMjgyZjkuLjNhZWE0MDcxNTMgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3Vy
ZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTMsNyArMyw3IEBACiAKIEFDX1BSRVJFUShbMi42
N10pCiBBQ19JTklUKFtYZW4gSHlwZXJ2aXNvcl0sIG00X2VzeXNjbWQoWy4vdmVyc2lvbi5zaCAu
L3hlbi9NYWtlZmlsZV0pLAotICAgIFt4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZ10sIFt4ZW5dLCBb
aHR0cDovL3d3dy54ZW4ub3JnL10pCisgICAgW3hlbi1kZXZlbEBsaXN0cy54ZW4ub3JnXSwgW3hl
bl0sIFtodHRwczovL3d3dy54ZW4ub3JnL10pCiBBQ19DT05GSUdfU1JDRElSKFsuL3hlbi9jb21t
b24va2VybmVsLmNdKQogQUNfQ09ORklHX0ZJTEVTKFsKIAljb25maWcvVG9wbGV2ZWwubWsKZGlm
ZiAtLWdpdCBhL2RvY3MvY29uZmlndXJlIGIvZG9jcy9jb25maWd1cmUKaW5kZXggZmRmYzExMDMx
MS4uOWUzZWQ2MDQ2MiAxMDA3NTUKLS0tIGEvZG9jcy9jb25maWd1cmUKKysrIGIvZG9jcy9jb25m
aWd1cmUKQEAgLTU4Miw3ICs1ODIsNyBAQCBQQUNLQUdFX1RBUk5BTUU9J3hlbicKIFBBQ0tBR0Vf
VkVSU0lPTj0nNC4xNCcKIFBBQ0tBR0VfU1RSSU5HPSdYZW4gSHlwZXJ2aXNvciBEb2N1bWVudGF0
aW9uIDQuMTQnCiBQQUNLQUdFX0JVR1JFUE9SVD0neGVuLWRldmVsQGxpc3RzLnhlbi5vcmcnCi1Q
QUNLQUdFX1VSTD0naHR0cDovL3d3dy54ZW4ub3JnLycKK1BBQ0tBR0VfVVJMPSdodHRwczovL3d3
dy54ZW4ub3JnLycKIAogYWNfdW5pcXVlX2ZpbGU9Im1pc2MveGVuLWNvbW1hbmQtbGluZS5wYW5k
b2MiCiBhY19zdWJzdF92YXJzPSdMVExJQk9CSlMKQEAgLTEzMjAsNyArMTMyMCw3IEBAIFVzZSB0
aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJl
JyBvciB0byBoZWxwCiBpdCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25z
dGFuZGFyZCBuYW1lcy9sb2NhdGlvbnMuCiAKIFJlcG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlz
dHMueGVuLm9yZz4uCi1YZW4gSHlwZXJ2aXNvciBEb2N1bWVudGF0aW9uIGhvbWUgcGFnZTogPGh0
dHA6Ly93d3cueGVuLm9yZy8+LgorWGVuIEh5cGVydmlzb3IgRG9jdW1lbnRhdGlvbiBob21lIHBh
Z2U6IDxodHRwczovL3d3dy54ZW4ub3JnLz4uCiBfQUNFT0YKIGFjX3N0YXR1cz0kPwogZmkKQEAg
LTI4NTcsNyArMjg1Nyw3IEBAIENvbmZpZ3VyYXRpb24gZmlsZXM6CiAkY29uZmlnX2ZpbGVzCiAK
IFJlcG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4uCi1YZW4gSHlwZXJ2aXNv
ciBEb2N1bWVudGF0aW9uIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cueGVuLm9yZy8+LiIKK1hlbiBI
eXBlcnZpc29yIERvY3VtZW50YXRpb24gaG9tZSBwYWdlOiA8aHR0cHM6Ly93d3cueGVuLm9yZy8+
LiIKIAogX0FDRU9GCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m
YWlsPTEKZGlmZiAtLWdpdCBhL2RvY3MvY29uZmlndXJlLmFjIGIvZG9jcy9jb25maWd1cmUuYWMK
aW5kZXggZTc5NWJlYzA0Yy4uY2I1YTZlYWE0YyAxMDA2NDQKLS0tIGEvZG9jcy9jb25maWd1cmUu
YWMKKysrIGIvZG9jcy9jb25maWd1cmUuYWMKQEAgLTMsNyArMyw3IEBACiAKIEFDX1BSRVJFUShb
Mi42N10pCiBBQ19JTklUKFtYZW4gSHlwZXJ2aXNvciBEb2N1bWVudGF0aW9uXSwgbTRfZXN5c2Nt
ZChbLi4vdmVyc2lvbi5zaCAuLi94ZW4vTWFrZWZpbGVdKSwKLSAgICBbeGVuLWRldmVsQGxpc3Rz
Lnhlbi5vcmddLCBbeGVuXSwgW2h0dHA6Ly93d3cueGVuLm9yZy9dKQorICAgIFt4ZW4tZGV2ZWxA
bGlzdHMueGVuLm9yZ10sIFt4ZW5dLCBbaHR0cHM6Ly93d3cueGVuLm9yZy9dKQogQUNfQ09ORklH
X1NSQ0RJUihbbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvY10pCiBBQ19DT05GSUdfRklMRVMo
WwogLi4vY29uZmlnL0RvY3MubWsKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy85cGZzLnBhbmRvYyBi
L2RvY3MvbWlzYy85cGZzLnBhbmRvYwppbmRleCBhNGRjODZmNjM5Li5iMDM0ZmI1ZmE2IDEwMDY0
NAotLS0gYS9kb2NzL21pc2MvOXBmcy5wYW5kb2MKKysrIGIvZG9jcy9taXNjLzlwZnMucGFuZG9j
CkBAIC00MTUsNSArNDE1LDUgQEAgdGhlICpzaXplKiBmaWVsZCBvZiB0aGUgOXBmcyBoZWFkZXIu
CiAKIFtwYXBlcl06IGh0dHBzOi8vd3d3LnVzZW5peC5vcmcvbGVnYWN5L2V2ZW50L3VzZW5peDA1
L3RlY2gvZnJlZW5peC9mdWxsX3BhcGVycy9oZW5zYmVyZ2VuL2hlbnNiZXJnZW4ucGRmCiBbd2Vi
c2l0ZV06IGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFvcy9kaW9kL2Jsb2IvbWFzdGVyL3Byb3RvY29s
Lm1kCi1bWGVuYnVzU3RhdGVJbml0aWFsaXNpbmddOiBodHRwOi8veGVuYml0cy54ZW4ub3JnL2Rv
Y3MvdW5zdGFibGUvaHlwZXJjYWxsL3g4Nl82NC9pbmNsdWRlLHB1YmxpYyxpbyx4ZW5idXMuaC5o
dG1sCi1bcmluZy5oXTogaHR0cDovL3hlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9eGVuLmdpdDth
PWJsb2I7Zj14ZW4vaW5jbHVkZS9wdWJsaWMvaW8vcmluZy5oO2hiPUhFQUQKK1tYZW5idXNTdGF0
ZUluaXRpYWxpc2luZ106IGh0dHBzOi8veGVuYml0cy54ZW4ub3JnL2RvY3MvdW5zdGFibGUvaHlw
ZXJjYWxsL3g4Nl82NC9pbmNsdWRlLHB1YmxpYyxpbyx4ZW5idXMuaC5odG1sCitbcmluZy5oXTog
aHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0d2ViLz9wPXhlbi5naXQ7YT1ibG9iO2Y9eGVuL2lu
Y2x1ZGUvcHVibGljL2lvL3JpbmcuaDtoYj1IRUFECmRpZmYgLS1naXQgYS9kb2NzL21pc2MvbGl2
ZXBhdGNoLnBhbmRvYyBiL2RvY3MvbWlzYy9saXZlcGF0Y2gucGFuZG9jCmluZGV4IDk0NzNhZDU5
OTEuLmQzOGU0Y2UwNzQgMTAwNjQ0Ci0tLSBhL2RvY3MvbWlzYy9saXZlcGF0Y2gucGFuZG9jCisr
KyBiL2RvY3MvbWlzYy9saXZlcGF0Y2gucGFuZG9jCkBAIC04OCw3ICs4OCw3IEBAIG1lY2hhbmlz
bS4gU2VlIGBUcmFtcG9saW5lIChlOSBvcGNvZGUpYCBzZWN0aW9uIGZvciBtb3JlIGRldGFpbHMu
CiAjIyMgRXhhbXBsZSBvZiB0cmFtcG9saW5lIGFuZCBpbi1wbGFjZSBzcGxpY2luZwogCiBBcyBl
eGFtcGxlIHdlIHdpbGwgYXNzdW1lIHRoZSBoeXBlcnZpc29yIGRvZXMgbm90IGhhdmUgWFNBLTEz
MiAoc2VlCi1bZG9tY3RsL3N5c2N0bDogZG9uJ3QgbGVhayBoeXBlcnZpc29yIHN0YWNrIHRvIHRv
b2xzdGFja3NdKGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0d2ViLz9wPXhlbi5naXQ7YT1jb21t
aXRkaWZmO2g9NGZmMzQ0OWYwZTlkMTc1Y2ViOTU1MWQzZjJhZWNiNTkyNzNmNjM5ZCkpCitbZG9t
Y3RsL3N5c2N0bDogZG9uJ3QgbGVhayBoeXBlcnZpc29yIHN0YWNrIHRvIHRvb2xzdGFja3NdKGh0
dHBzOi8veGVuYml0cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9Y29tbWl0ZGlmZjtoPTRm
ZjM0NDlmMGU5ZDE3NWNlYjk1NTFkM2YyYWVjYjU5MjczZjYzOWQpKQogYW5kIHdlIHdvdWxkIGxp
a2UgdG8gYmluYXJ5IHBhdGNoIHRoZSBoeXBlcnZpc29yIHdpdGggaXQuIFRoZSBvcmlnaW5hbCBj
b2RlCiBsb29rcyBhcyBzbzoKIApAQCAtMTU3LDcgKzE1Nyw3IEBAIENQVSBicmFuY2hpbmcgbG9n
aWMgKEktY2FjaGUsIGJ1dCBpdCBpcyBqdXN0IG9uZSB1bmNvbmRpdGlvbmFsIGp1bXApLgogCiBG
b3IgdGhpcyBleGFtcGxlIHdlIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGh5cGVydmlzb3IgaGFzIG5v
dCBiZWVuIGNvbXBpbGVkIHdpdGgKIFhTQS0xMjUgKHNlZQotW3ByZS1maWxsIHN0cnVjdHVyZXMg
Zm9yIGNlcnRhaW4gSFlQRVJWSVNPUl94ZW5fdmVyc2lvbiBzdWItb3BzXShodHRwOi8veGVuYml0
cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9Y29tbWl0ZGlmZjtoPWZlMmUwNzlmNjQyZWZm
YjNkMjRhNmUxYTcwOTZlZjI2ZTY5MWQ5M2UpKQorW3ByZS1maWxsIHN0cnVjdHVyZXMgZm9yIGNl
cnRhaW4gSFlQRVJWSVNPUl94ZW5fdmVyc2lvbiBzdWItb3BzXShodHRwczovL3hlbmJpdHMueGVu
Lm9yZy9naXR3ZWIvP3A9eGVuLmdpdDthPWNvbW1pdGRpZmY7aD1mZTJlMDc5ZjY0MmVmZmIzZDI0
YTZlMWE3MDk2ZWYyNmU2OTFkOTNlKSkKIHdoaWNoIG1lbS1zZXRzIGFuIHN0cnVjdHVyZSBpbiBg
eGVuX3ZlcnNpb25gIGh5cGVyY2FsbC4gVGhpcyBmdW5jdGlvbiBpcyBub3QKIGNhbGxlZCAqKmFu
eXdoZXJlKiogaW4gdGhlIGh5cGVydmlzb3IgKGl0IGlzIGNhbGxlZCBieSB0aGUgZ3Vlc3QpIGJ1
dAogcmVmZXJlbmNlZCBpbiB0aGUgYGNvbXBhdF9oeXBlcmNhbGxfdGFibGVgIGFuZCBgaHlwZXJj
YWxsX3RhYmxlYCAoYW5kCmRpZmYgLS1naXQgYS9kb2NzL21pc2MvcHZjYWxscy5wYW5kb2MgYi9k
b2NzL21pc2MvcHZjYWxscy5wYW5kb2MKaW5kZXggNzI5Y2Y5N2JkZi4uNjY1ZGFkNTU2YyAxMDA2
NDQKLS0tIGEvZG9jcy9taXNjL3B2Y2FsbHMucGFuZG9jCisrKyBiL2RvY3MvbWlzYy9wdmNhbGxz
LnBhbmRvYwpAQCAtMTA3OCw4ICsxMDc4LDggQEAgb25seSBhcyBtYW55IGJ5dGVzIGFzIGF2YWls
YWJsZSBpbiB0aGUgYnVmZmVyIHVwIHRvICpbaW58b3V0XV9wcm9kKi4KIHJlYWRpbmcgZnJvbSB0
aGUgc29ja2V0LgogCiAKLVt4ZW5zdG9yZV06IGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZG9jcy91
bnN0YWJsZS9taXNjL3hlbnN0b3JlLnR4dAotW1hlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nXTogaHR0
cDovL3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3RhYmxlL2h5cGVyY2FsbC94ODZfNjQvaW5jbHVk
ZSxwdWJsaWMsaW8seGVuYnVzLmguaHRtbAorW3hlbnN0b3JlXTogaHR0cHM6Ly94ZW5iaXRzLnhl
bi5vcmcvZG9jcy91bnN0YWJsZS9taXNjL3hlbnN0b3JlLnR4dAorW1hlbmJ1c1N0YXRlSW5pdGlh
bGlzaW5nXTogaHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZG9jcy91bnN0YWJsZS9oeXBlcmNhbGwv
eDg2XzY0L2luY2x1ZGUscHVibGljLGlvLHhlbmJ1cy5oLmh0bWwKIFthZGRyZXNzXTogaHR0cDov
L3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzc5MDg3OTkveG5zL3N5c3NvY2tldC5oLmh0
bWwKIFtpbl06IGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDAwOTUzOTkv
YmFzZWRlZnMvbmV0aW5ldC9pbi5oLmh0bWwKIFtzb2NrZXRdOiBodHRwOi8vcHVicy5vcGVuZ3Jv
dXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9zb2NrZXQuaHRtbApAQCAtMTA4
OSw0ICsxMDg5LDQgQEAgcmVhZGluZyBmcm9tIHRoZSBzb2NrZXQuCiBbbGlzdGVuXTogaHR0cDov
L3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzc5MDg3OTkveG5zL2xpc3Rlbi5odG1sCiBb
YWNjZXB0XTogaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzc5MDg3OTkveG5z
L2FjY2VwdC5odG1sCiBbcG9sbF06IGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVi
cy83OTA4Nzk5L3hzaC9wb2xsLmh0bWwKLVtyaW5nLmhdOiBodHRwOi8veGVuYml0cy54ZW4ub3Jn
L2dpdHdlYi8/cD14ZW4uZ2l0O2E9YmxvYjtmPXhlbi9pbmNsdWRlL3B1YmxpYy9pby9yaW5nLmg7
aGI9SEVBRAorW3JpbmcuaF06IGh0dHBzOi8veGVuYml0cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4u
Z2l0O2E9YmxvYjtmPXhlbi9pbmNsdWRlL3B1YmxpYy9pby9yaW5nLmg7aGI9SEVBRApkaWZmIC0t
Z2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jIGIvZG9jcy9taXNjL3hlbi1j
b21tYW5kLWxpbmUucGFuZG9jCmluZGV4IDZmZjMxN2QxNWQuLmFjZDBiM2Q5OTQgMTAwNjQ0Ci0t
LSBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYworKysgYi9kb2NzL21pc2MveGVu
LWNvbW1hbmQtbGluZS5wYW5kb2MKQEAgLTIyOTQsNyArMjI5NCw3IEBAIHByb3ZpZGUgYWNjZXNz
IHRvIGEgd2VhbHRoIG9mIGxvdyBsZXZlbCBwcm9jZXNzb3IgaW5mb3JtYXRpb24uCiAKICpXYXJu
aW5nOioKIEFzIHRoZSB2aXJ0dWFsaXNhdGlvbiBpcyBub3QgMTAwJSBzYWZlLCBkb24ndCB1c2Ug
dGhlIHZwbXUgZmxhZyBvbgotcHJvZHVjdGlvbiBzeXN0ZW1zIChzZWUgaHR0cDovL3hlbmJpdHMu
eGVuLm9yZy94c2EvYWR2aXNvcnktMTYzLmh0bWwpIQorcHJvZHVjdGlvbiBzeXN0ZW1zIChzZWUg
aHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcveHNhL2Fkdmlzb3J5LTE2My5odG1sKSEKIAogIyMjIHZ3
ZmkgKGFybSkKID4gYD0gdHJhcCB8IG5hdGl2ZWAKZGlmZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW5z
dG9yZS1wYXRocy5wYW5kb2MgYi9kb2NzL21pc2MveGVuc3RvcmUtcGF0aHMucGFuZG9jCmluZGV4
IGZmM2NhMDQwNjkuLmExNTJmNWVhNjggMTAwNjQ0Ci0tLSBhL2RvY3MvbWlzYy94ZW5zdG9yZS1w
YXRocy5wYW5kb2MKKysrIGIvZG9jcy9taXNjL3hlbnN0b3JlLXBhdGhzLnBhbmRvYwpAQCAtNjM2
LDE0ICs2MzYsMTQgQEAgZm9yIHRoZSB0b29sc3RhY2sgdG8gb2J0YWluIGUuZy4gdGhlIGRvbWFp
biBpZCBvZiBhIHhlbnN0b3JlIGRvbWFpbi4KIERvbWFpbiBJZCBvZiB0aGUgeGVuc3RvcmUgZG9t
YWluIGluIGNhc2UgeGVuc3RvcmUgaXMgcHJvdmlkZWQgdmlhIGEKIGRvbWFpbiBpbnN0ZWFkIG9m
IGEgZGFlbW9uIGluIGRvbTAuCiAKLVtCTEtJRl06IGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZG9j
cy91bnN0YWJsZS9oeXBlcmNhbGwveDg2XzY0L2luY2x1ZGUscHVibGljLGlvLGJsa2lmLmguaHRt
bAotW0ZCSUZdOiBodHRwOi8veGVuYml0cy54ZW4ub3JnL2RvY3MvdW5zdGFibGUvaHlwZXJjYWxs
L3g4Nl82NC9pbmNsdWRlLHB1YmxpYyxpbyxmYmlmLmguaHRtbAotW0hWTVBBUkFNU106IGh0dHA6
Ly94ZW5iaXRzLnhlbi5vcmcvZG9jcy91bnN0YWJsZS9oeXBlcmNhbGwveDg2XzY0L2luY2x1ZGUs
cHVibGljLGh2bSxwYXJhbXMuaC5odG1sCi1bS0JESUZdOiBodHRwOi8veGVuYml0cy54ZW4ub3Jn
L2RvY3MvdW5zdGFibGUvaHlwZXJjYWxsL3g4Nl82NC9pbmNsdWRlLHB1YmxpYyxpbyxrYmRpZi5o
Lmh0bWwKLVtMSUJYTE1FTV06IGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZG9jcy91bnN0YWJsZS9t
aXNjL2xpYnhsX21lbW9yeS50eHQKLVtORVRJRl06IGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZG9j
cy91bnN0YWJsZS9oeXBlcmNhbGwveDg2XzY0L2luY2x1ZGUscHVibGljLGlvLG5ldGlmLmguaHRt
bAotW1NDU0lJRl06IGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZG9jcy91bnN0YWJsZS9oeXBlcmNh
bGwveDg2XzY0L2luY2x1ZGUscHVibGljLGlvLHZzY3NpaWYuaC5odG1sCi1bU0ldOiBodHRwOi8v
eGVuYml0cy54ZW4ub3JnL2RvY3MvdW5zdGFibGUvaHlwZXJjYWxsL3g4Nl82NC9pbmNsdWRlLHB1
YmxpYyx4ZW4uaC5odG1sI1N0cnVjdF9zdGFydF9pbmZvCi1bVVNCSUZdOiBodHRwOi8veGVuYml0
cy54ZW4ub3JnL2RvY3MvdW5zdGFibGUvaHlwZXJjYWxsL3g4Nl82NC9pbmNsdWRlLHB1YmxpYyxp
byx1c2JpZi5oLmh0bWwKLVtWQ1BVXTogaHR0cDovL3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3Rh
YmxlL2h5cGVyY2FsbC94ODZfNjQvaW5jbHVkZSxwdWJsaWMsdmNwdS5oLmh0bWwKLVtYU1dJUkVd
OiBodHRwOi8veGVuYml0cy54ZW4ub3JnL2RvY3MvdW5zdGFibGUvaHlwZXJjYWxsL3g4Nl82NC9p
bmNsdWRlLHB1YmxpYyxpbyx4c193aXJlLmguaHRtbAorW0JMS0lGXTogaHR0cHM6Ly94ZW5iaXRz
Lnhlbi5vcmcvZG9jcy91bnN0YWJsZS9oeXBlcmNhbGwveDg2XzY0L2luY2x1ZGUscHVibGljLGlv
LGJsa2lmLmguaHRtbAorW0ZCSUZdOiBodHRwczovL3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3Rh
YmxlL2h5cGVyY2FsbC94ODZfNjQvaW5jbHVkZSxwdWJsaWMsaW8sZmJpZi5oLmh0bWwKK1tIVk1Q
QVJBTVNdOiBodHRwczovL3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3RhYmxlL2h5cGVyY2FsbC94
ODZfNjQvaW5jbHVkZSxwdWJsaWMsaHZtLHBhcmFtcy5oLmh0bWwKK1tLQkRJRl06IGh0dHBzOi8v
eGVuYml0cy54ZW4ub3JnL2RvY3MvdW5zdGFibGUvaHlwZXJjYWxsL3g4Nl82NC9pbmNsdWRlLHB1
YmxpYyxpbyxrYmRpZi5oLmh0bWwKK1tMSUJYTE1FTV06IGh0dHBzOi8veGVuYml0cy54ZW4ub3Jn
L2RvY3MvdW5zdGFibGUvbWlzYy9saWJ4bF9tZW1vcnkudHh0CitbTkVUSUZdOiBodHRwczovL3hl
bmJpdHMueGVuLm9yZy9kb2NzL3Vuc3RhYmxlL2h5cGVyY2FsbC94ODZfNjQvaW5jbHVkZSxwdWJs
aWMsaW8sbmV0aWYuaC5odG1sCitbU0NTSUlGXTogaHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZG9j
cy91bnN0YWJsZS9oeXBlcmNhbGwveDg2XzY0L2luY2x1ZGUscHVibGljLGlvLHZzY3NpaWYuaC5o
dG1sCitbU0ldOiBodHRwczovL3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3RhYmxlL2h5cGVyY2Fs
bC94ODZfNjQvaW5jbHVkZSxwdWJsaWMseGVuLmguaHRtbCNTdHJ1Y3Rfc3RhcnRfaW5mbworW1VT
QklGXTogaHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZG9jcy91bnN0YWJsZS9oeXBlcmNhbGwveDg2
XzY0L2luY2x1ZGUscHVibGljLGlvLHVzYmlmLmguaHRtbAorW1ZDUFVdOiBodHRwczovL3hlbmJp
dHMueGVuLm9yZy9kb2NzL3Vuc3RhYmxlL2h5cGVyY2FsbC94ODZfNjQvaW5jbHVkZSxwdWJsaWMs
dmNwdS5oLmh0bWwKK1tYU1dJUkVdOiBodHRwczovL3hlbmJpdHMueGVuLm9yZy9kb2NzL3Vuc3Rh
YmxlL2h5cGVyY2FsbC94ODZfNjQvaW5jbHVkZSxwdWJsaWMsaW8seHNfd2lyZS5oLmh0bWwKZGlm
ZiAtLWdpdCBhL2RvY3MvbWlzYy94c20tZmxhc2sudHh0IGIvZG9jcy9taXNjL3hzbS1mbGFzay50
eHQKaW5kZXggNDBlNWZjODQ1ZS4uMjQxOWM1Y2YyOSAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL3hz
bS1mbGFzay50eHQKKysrIGIvZG9jcy9taXNjL3hzbS1mbGFzay50eHQKQEAgLTQ5LDEzICs0OSwx
MyBAQCBkcml2ZXIgZG9tYWlucywgb3Igc3R1YiB4ZW5zdG9yZWQgLSBldmVuIGlmIHRob3NlIGJ1
Z3MgZG8gbm8gd29yc2UKIHRoYW4gcmVkdWNlIHRoZSBzZWN1cml0eSBvZiBzdWNoIGEgc3lzdGVt
IHRvIG9uZSB3aG9zZSBkZXZpY2UgbW9kZWxzLAogYmFja2VuZCBkcml2ZXJzLCBvciB4ZW5zdG9y
ZSwgcnVuIGluIGRvbTAuCiAKLUZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBodHRwOi8veGVuYml0
cy54ZW4ub3JnL3hzYS9hZHZpc29yeS03Ny5odG1sLgorRm9yIG1vcmUgaW5mb3JtYXRpb24gc2Vl
IGh0dHBzOi8veGVuYml0cy54ZW4ub3JnL3hzYS9hZHZpc29yeS03Ny5odG1sLgogCiBUaGUgZm9s
bG93aW5nIGludGVyZmFjZXMgYXJlIGNvdmVyZWQgYnkgdGhpcyBzdGF0ZW1lbnQuICBJbnRlcmZh
Y2VzCiBub3QgbGlzdGVkIGhlcmUgYXJlIGNvbnNpZGVyZWQgc2FmZSBmb3IgZGlzYWdncmVnYXRp
b24sIHNlY3VyaXR5CiBpc3N1ZXMgZm91bmQgaW4gaW50ZXJmYWNlcyBub3QgbGlzdGVkIGhlcmUg
d2lsbCBiZSBoYW5kbGVkIGFjY29yZGluZwogdG8gdGhlIG5vcm1hbCBzZWN1cml0eSBwcm9ibGVt
IHJlc3BvbnNlIHBvbGljeQotaHR0cDovL3d3dy54ZW5wcm9qZWN0Lm9yZy9zZWN1cml0eS1wb2xp
Y3kuaHRtbC4KK2h0dHBzOi8vd3d3LnhlbnByb2plY3Qub3JnL3NlY3VyaXR5LXBvbGljeS5odG1s
LgogCiBfX0hZUEVSVklTT1JfZG9tY3RsICh4ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgpCiAK
ZGlmZiAtLWdpdCBhL2RvY3MvcHJvY2Vzcy9icmFuY2hpbmctY2hlY2tsaXN0LnR4dCBiL2RvY3Mv
cHJvY2Vzcy9icmFuY2hpbmctY2hlY2tsaXN0LnR4dAppbmRleCAxZGZhMWEyZWM3Li5lMjg2ZTY1
OTYyIDEwMDY0NAotLS0gYS9kb2NzL3Byb2Nlc3MvYnJhbmNoaW5nLWNoZWNrbGlzdC50eHQKKysr
IGIvZG9jcy9wcm9jZXNzL2JyYW5jaGluZy1jaGVja2xpc3QudHh0CkBAIC0yNSw3ICsyNSw3IEBA
IG92PTQuMAogCiAjIHVwZGF0ZSB4ZW5kb2NzQHhlbmJpdHMgZG9jcyBnZW5lcmF0b3IgdG8gZ2Vu
ZXJhdGUgbmV3IHN0YWJsZSBicmFuY2gKICMgIGRvY3MgdG9vLiBjb21taXQgdG8gZ2l0LgotKiBt
YWtlIDEzOjM3IDxpamM+IGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcvZG9jcy80LjItdGVzdGluZy8g
aXMgbm93IGxpdmUgdHJ1ZQorKiBtYWtlIDEzOjM3IDxpamM+IGh0dHBzOi8veGVuYml0cy54ZW4u
b3JnL2RvY3MvNC4yLXRlc3RpbmcvIGlzIG5vdyBsaXZlIHRydWUKICMxNDoxNyA8aWpjPiBIT1dU
TzogbG9naW4gdG8geGVuYml0cy4gYmVjb21lICJ4ZW5kb2NzIiAuIGNkIGNyb25qb2JzIC4gZWRp
dAogIyAgICAgICAgICAgIHhlbmJpdHMtZG9jcy1hbGwuc2ggaW4gdGhlIG9idmlvdXMgd2F5LiBn
aXQgY29tbWl0CiAJc3NoIHJvb3RAeGVuYml0cy54ZW4ub3JnCmRpZmYgLS1naXQgYS9zdHViZG9t
L2NvbmZpZ3VyZSBiL3N0dWJkb20vY29uZmlndXJlCmluZGV4IDhmMGJkY2YxOTEuLmRhMDNkYTUz
NWEgMTAwNzU1Ci0tLSBhL3N0dWJkb20vY29uZmlndXJlCisrKyBiL3N0dWJkb20vY29uZmlndXJl
CkBAIC01ODIsNyArNTgyLDcgQEAgUEFDS0FHRV9UQVJOQU1FPSd4ZW4nCiBQQUNLQUdFX1ZFUlNJ
T049JzQuMTQnCiBQQUNLQUdFX1NUUklORz0nWGVuIEh5cGVydmlzb3IgU3R1YiBEb21haW5zIDQu
MTQnCiBQQUNLQUdFX0JVR1JFUE9SVD0neGVuLWRldmVsQGxpc3RzLnhlbi5vcmcnCi1QQUNLQUdF
X1VSTD0naHR0cDovL3d3dy54ZW4ub3JnLycKK1BBQ0tBR0VfVVJMPSdodHRwczovL3d3dy54ZW4u
b3JnLycKIAogYWNfdW5pcXVlX2ZpbGU9InhlbnN0b3JlLW1pbmlvcy5jZmciCiBhY19zdWJzdF92
YXJzPSdMVExJQk9CSlMKQEAgLTEzNzYsNyArMTM3Niw3IEBAIFVzZSB0aGVzZSB2YXJpYWJsZXMg
dG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCiBp
dCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9s
b2NhdGlvbnMuCiAKIFJlcG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4uCi1Y
ZW4gSHlwZXJ2aXNvciBTdHViIERvbWFpbnMgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy54ZW4ub3Jn
Lz4uCitYZW4gSHlwZXJ2aXNvciBTdHViIERvbWFpbnMgaG9tZSBwYWdlOiA8aHR0cHM6Ly93d3cu
eGVuLm9yZy8+LgogX0FDRU9GCiBhY19zdGF0dXM9JD8KIGZpCkBAIC00Mjk2LDcgKzQyOTYsNyBA
QCBDb25maWd1cmF0aW9uIGZpbGVzOgogJGNvbmZpZ19maWxlcwogCiBSZXBvcnQgYnVncyB0byA8
eGVuLWRldmVsQGxpc3RzLnhlbi5vcmc+LgotWGVuIEh5cGVydmlzb3IgU3R1YiBEb21haW5zIGhv
bWUgcGFnZTogPGh0dHA6Ly93d3cueGVuLm9yZy8+LiIKK1hlbiBIeXBlcnZpc29yIFN0dWIgRG9t
YWlucyBob21lIHBhZ2U6IDxodHRwczovL3d3dy54ZW4ub3JnLz4uIgogCiBfQUNFT0YKIGNhdCA+
PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQpkaWZmIC0tZ2l0IGEv
c3R1YmRvbS9jb25maWd1cmUuYWMgYi9zdHViZG9tL2NvbmZpZ3VyZS5hYwppbmRleCA5MDY2ZGZh
YWE3Li5hMmQ1MTRjMDIxIDEwMDY0NAotLS0gYS9zdHViZG9tL2NvbmZpZ3VyZS5hYworKysgYi9z
dHViZG9tL2NvbmZpZ3VyZS5hYwpAQCAtMyw3ICszLDcgQEAKIAogQUNfUFJFUkVRKFsyLjY3XSkK
IEFDX0lOSVQoW1hlbiBIeXBlcnZpc29yIFN0dWIgRG9tYWluc10sIG00X2VzeXNjbWQoWy4uL3Zl
cnNpb24uc2ggLi4veGVuL01ha2VmaWxlXSksCi0gICAgW3hlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn
XSwgW3hlbl0sIFtodHRwOi8vd3d3Lnhlbi5vcmcvXSkKKyAgICBbeGVuLWRldmVsQGxpc3RzLnhl
bi5vcmddLCBbeGVuXSwgW2h0dHBzOi8vd3d3Lnhlbi5vcmcvXSkKIEFDX0NPTkZJR19TUkNESVIo
W3hlbnN0b3JlLW1pbmlvcy5jZmddKQogQUNfQ09ORklHX0ZJTEVTKFsuLi9jb25maWcvU3R1YmRv
bS5ta10pCiBBQ19DT05GSUdfQVVYX0RJUihbLi4vXSkKZGlmZiAtLWdpdCBhL3Rvb2xzL2NvbmZp
Z3VyZSBiL3Rvb2xzL2NvbmZpZ3VyZQppbmRleCAxM2VlN2YxMzVjLi40ZmE1ZjdiOTM3IDEwMDc1
NQotLS0gYS90b29scy9jb25maWd1cmUKKysrIGIvdG9vbHMvY29uZmlndXJlCkBAIC01ODMsNyAr
NTgzLDcgQEAgUEFDS0FHRV9UQVJOQU1FPSd4ZW4nCiBQQUNLQUdFX1ZFUlNJT049JzQuMTQnCiBQ
QUNLQUdFX1NUUklORz0nWGVuIEh5cGVydmlzb3IgVG9vbHMgNC4xNCcKIFBBQ0tBR0VfQlVHUkVQ
T1JUPSd4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZycKLVBBQ0tBR0VfVVJMPSdodHRwOi8vd3d3Lnhl
bi5vcmcvJworUEFDS0FHRV9VUkw9J2h0dHBzOi8vd3d3Lnhlbi5vcmcvJwogCiBhY191bmlxdWVf
ZmlsZT0ibGlieGwvbGlieGwuYyIKICMgRmFjdG9yaW5nIGRlZmF1bHQgaGVhZGVycyBmb3IgbW9z
dCB0ZXN0cy4KQEAgLTE2MTEsNyArMTYxMSw3IEBAIFVzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3Zl
cnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCiBpdCB0byBm
aW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9sb2NhdGlv
bnMuCiAKIFJlcG9ydCBidWdzIHRvIDx4ZW4tZGV2ZWxAbGlzdHMueGVuLm9yZz4uCi1YZW4gSHlw
ZXJ2aXNvciBUb29scyBob21lIHBhZ2U6IDxodHRwOi8vd3d3Lnhlbi5vcmcvPi4KK1hlbiBIeXBl
cnZpc29yIFRvb2xzIGhvbWUgcGFnZTogPGh0dHBzOi8vd3d3Lnhlbi5vcmcvPi4KIF9BQ0VPRgog
YWNfc3RhdHVzPSQ/CiBmaQpAQCAtMTAzNzMsNyArMTAzNzMsNyBAQCBDb25maWd1cmF0aW9uIGhl
YWRlcnM6CiAkY29uZmlnX2hlYWRlcnMKIAogUmVwb3J0IGJ1Z3MgdG8gPHhlbi1kZXZlbEBsaXN0
cy54ZW4ub3JnPi4KLVhlbiBIeXBlcnZpc29yIFRvb2xzIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cu
eGVuLm9yZy8+LiIKK1hlbiBIeXBlcnZpc29yIFRvb2xzIGhvbWUgcGFnZTogPGh0dHBzOi8vd3d3
Lnhlbi5vcmcvPi4iCiAKIF9BQ0VPRgogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwg
YWNfd3JpdGVfZmFpbD0xCmRpZmYgLS1naXQgYS90b29scy9jb25maWd1cmUuYWMgYi90b29scy9j
b25maWd1cmUuYWMKaW5kZXggZjI4OGQyY2MzZi4uZWEwMjcyNzY2ZiAxMDA2NDQKLS0tIGEvdG9v
bHMvY29uZmlndXJlLmFjCisrKyBiL3Rvb2xzL2NvbmZpZ3VyZS5hYwpAQCAtMyw3ICszLDcgQEAK
IAogQUNfUFJFUkVRKFsyLjY3XSkKIEFDX0lOSVQoW1hlbiBIeXBlcnZpc29yIFRvb2xzXSwgbTRf
ZXN5c2NtZChbLi4vdmVyc2lvbi5zaCAuLi94ZW4vTWFrZWZpbGVdKSwKLSAgICBbeGVuLWRldmVs
QGxpc3RzLnhlbi5vcmddLCBbeGVuXSwgW2h0dHA6Ly93d3cueGVuLm9yZy9dKQorICAgIFt4ZW4t
ZGV2ZWxAbGlzdHMueGVuLm9yZ10sIFt4ZW5dLCBbaHR0cHM6Ly93d3cueGVuLm9yZy9dKQogQUNf
Q09ORklHX1NSQ0RJUihbbGlieGwvbGlieGwuY10pCiBBQ19DT05GSUdfRklMRVMoWwogLi4vY29u
ZmlnL1Rvb2xzLm1rCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyBiL3hl
bi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCmluZGV4IGQyNjVlZDQ2YWQuLjFjMzk4ZmRiNmUgMTAw
NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9o
dm0vdm14L3ZteC5jCkBAIC0yNDkwLDcgKzI0OTAsNyBAQCBjb25zdCBzdHJ1Y3QgaHZtX2Z1bmN0
aW9uX3RhYmxlICogX19pbml0IHN0YXJ0X3ZteCh2b2lkKQogCiAgICAgLyoKICAgICAgKiBEbyBu
b3QgZW5hYmxlIEVQVCB3aGVuICghY3B1X2hhc192bXhfcGF0KSwgdG8gcHJldmVudCBzZWN1cml0
eSBob2xlCi0gICAgICogKHJlZmVyIHRvIGh0dHA6Ly94ZW5iaXRzLnhlbi5vcmcveHNhL2Fkdmlz
b3J5LTYwLmh0bWwpLgorICAgICAqIChyZWZlciB0byBodHRwczovL3hlbmJpdHMueGVuLm9yZy94
c2EvYWR2aXNvcnktNjAuaHRtbCkuCiAgICAgICovCiAgICAgaWYgKCBjcHVfaGFzX3ZteF9lcHQg
JiYgKGNwdV9oYXNfdm14X3BhdCB8fCBvcHRfZm9yY2VfZXB0KSApCiAgICAgewpkaWZmIC0tZ2l0
IGEveGVuL2luY2x1ZGUvcHVibGljL2lvL2Jsa2lmLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8v
YmxraWYuaAppbmRleCBkNGEzNGRlOTRjLi40Y2RiYTc5YWJhIDEwMDY0NAotLS0gYS94ZW4vaW5j
bHVkZS9wdWJsaWMvaW8vYmxraWYuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaW8vYmxraWYu
aApAQCAtMTE4LDcgKzExOCw3IEBACiAgKgogICogICAgICBUaGUgdW5kZXJseWluZyBzdG9yYWdl
IGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgZGlyZWN0IElPIG1lbW9yeQogICogICAgICBsaWZldGlt
ZSBidWcuICBTZWU6Ci0gKiAgICAgICAgaHR0cDovL2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRt
bC94ZW4tZGV2ZWwvMjAxMi0xMi9tc2cwMTE1NC5odG1sCisgKiAgICAgICAgaHR0cHM6Ly9saXN0
cy54ZW4ub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIwMTItMTIvbXNnMDExNTQuaHRtbAog
ICoKICAqICAgICAgVGhlcmVmb3JlIHRoaXMgb3B0aW9uIGdpdmVzIHRoZSBiYWNrZW5kIHBlcm1p
c3Npb24gdG8gdXNlCiAgKiAgICAgIE9fRElSRUNULCBub3R3aXRoc3RhbmRpbmcgdGhhdCBidWcu
Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNt
YXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl
bi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:55:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:55:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZuL-0001Jo-5G; Sat, 04 Apr 2020 03:55:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZuK-0001Jh-3E
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:44 +0000
X-Inumbo-ID: 28620aa4-7628-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 28620aa4-7628-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 03:55:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=KDsXFHtT44Oi+MlK0QmrftyDQ7a3utSTxD4GGbTGcJk=; b=nTqGfffmEBpDD6lWjMaETu+5I+
 BT/nDSaehh8XV1T67okUShPLT9r/4ggwfIl7k8U3Y+vwnBWUprmaYwYCuwIOjGoqV2/GgfxD1xbCb
 AMvIwIhUMkcaw4tNOjIz+W08wzneYPAMPa6+rzWF1aOn0cdbM189voRquH4pH2BHjzYQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZuJ-00055n-H7
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZuJ-00063B-Ey
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZuJ-00063B-Ey@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:55:43 +0000
Subject: [Xen-changelog] [xen master] docs/README: Fix a broken url
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDJhOTQxMDBkZDU2NDZmYjhhYmNkMjlmNDg1NTNmZjEwZDA3ODhjYzcKQXV0aG9yOiAg
ICAgSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkF1dGhvckRhdGU6IE1v
biBNYXIgMzAgMTQ6NTI6MTIgMjAyMCArMDEwMApDb21taXQ6ICAgICBJYW4gSmFja3NvbiA8aWFu
LmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogTW9uIE1hciAzMCAxNToyNzoxNyAy
MDIwICswMTAwCgogICAgZG9jcy9SRUFETUU6IEZpeCBhIGJyb2tlbiB1cmwKICAgIAogICAgVGhl
cmUgd2FzIGEgLyBtaXNzaW5nIGhlcmUuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IElhbiBKYWNr
c29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEp1bGllbiBH
cmFsbCA8amdyYWxsQGFtYXpvbi5jb20+Ci0tLQogUkVBRE1FIHwgMiArLQogMSBmaWxlIGNoYW5n
ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIv
UkVBRE1FCmluZGV4IDU1NWYzNDE1ZmEuLmQwYzg3YTc4ZjAgMTAwNjQ0Ci0tLSBhL1JFQURNRQor
KysgYi9SRUFETUUKQEAgLTIwLDcgKzIwLDcgQEAgR1BMLiBTaW5jZSBpdHMgaW5pdGlhbCBwdWJs
aWMgcmVsZWFzZSwgWGVuIGhhcyBncm93biBhIGxhcmdlCiBkZXZlbG9wbWVudCBjb21tdW5pdHks
IHNwZWFyaGVhZGVkIGJ5IHhlbi5vcmcgKGh0dHBzOi8vd3d3Lnhlbi5vcmcpLgogCiBUaGlzIGZp
bGUgY29udGFpbnMgc29tZSBxdWljay1zdGFydCBpbnN0cnVjdGlvbnMgdG8gaW5zdGFsbCBYZW4g
b24KLXlvdXIgc3lzdGVtLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgaHR0cHM6L3d3dy54ZW4u
b3JnLyBhbmQKK3lvdXIgc3lzdGVtLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgaHR0cHM6Ly93
d3cueGVuLm9yZy8gYW5kCiBodHRwczovL3dpa2kueGVuLm9yZy8KIAogUXVpY2stU3RhcnQgR3Vp
ZGUKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0
I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
WGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:55:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:55:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZuW-0001LK-75; Sat, 04 Apr 2020 03:55:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZuU-0001L5-As
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:54 +0000
X-Inumbo-ID: 2e636f10-7628-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2e636f10-7628-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 03:55:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=IJ6OBYwkwxPvi/srKNJrRLHNXOeqd89fbc2/tfWBYN8=; b=IKHDMvSDEGZMZYLDsEpKXBuXgx
 kHLypk7wtIW+aB+sOZBIM0kEnGfdA01oaHXiKucJDS1OAattKQYStJEPpwgorgkIEbq3DK1INYJcN
 oYQVKpJPmKXp1BeG5vGhVt2i6WF7n8IFW8opLcvIiReH3b1brIsXZUz7hVqpbkGqh0PI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZuT-000561-K9
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZuT-00063o-J2
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:55:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZuT-00063o-J2@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:55:53 +0000
Subject: [Xen-changelog] [xen master] SVM: split _np_enable VMCB field
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGY1N2FlMDA2MzVkYTQyOWNlZTAyMzczZGM5MDk1NDJhNDExYTA5ZTUKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBUdWUgTWFyIDMx
IDA4OjQ2OjQ0IDIwMjAgKzAyMDAKQ29tbWl0OiAgICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1
c2UuY29tPgpDb21taXREYXRlOiBUdWUgTWFyIDMxIDA4OjQ2OjQ0IDIwMjAgKzAyMDAKCiAgICBT
Vk06IHNwbGl0IF9ucF9lbmFibGUgVk1DQiBmaWVsZAogICAgCiAgICBUaGUgbmVzdCBwYWdpbmcg
ZW5hYmxlIGlzIGFjdHVhbGx5IGp1c3QgYSBzaW5nbGUgYml0IHdpdGhpbiB0aGUgNjQtYml0CiAg
ICBWTUNCIGZpZWxkLCB3aGljaCBpcyBwYXJ0aWN1bGFybHkgcmVsZXZhbnQgZm9yIHVzZXMgbGlr
ZSB0aGUgb25lIGluCiAgICBuc3ZtX3ZjcHVfdm1lbnRyeSgpLiBTcGxpdCB0aGUgZmllbGQsIGFk
ZGluZyBkZWZpbml0aW9ucyBmb3IgYSBmZXcgb3RoZXIKICAgIGJpdHMgYXQgdGhlIHNhbWUgdGlt
ZS4gVG8gYmUgYWJsZSB0byBnZW5lcmF0ZSBhY2Nlc3NvcnMgZm9yIGJpdGZpZWxkcywKICAgIFZN
Q0JfQUNDRVNTT1JTKCkgbmVlZHMgdGhlIHR5cGUgcGFydCBicm9rZW4gb3V0LCBhcyB0eXBlb2Yo
KSBjYW4ndCBiZQogICAgYXBwbGllZCB0byBiaXRmaWVsZHMuIFVuZm9ydHVuYXRlbHkgdGhpcyBt
ZWFucyBzcGVjaWZpY2F0aW9uIG9mIHRoZSBzYW1lCiAgICB0eXBlIGluIHR3byBkaXN0aW5jdCBw
bGFjZXMuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl
LmNvbT4KICAgIEFja2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXgu
Y29tPgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bWRlYnVnLmMgICAgfCAgNCArKy0tCiB4
ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vdm1jYi5oIHwgMjggKysrKysrKysrKysrKysrKysr
KysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bWRlYnVnLmMgYi94ZW4v
YXJjaC94ODYvaHZtL3N2bS9zdm1kZWJ1Zy5jCmluZGV4IDVhYTlkNDEwYmEuLjkxZjVkOTQwMGMg
MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bWRlYnVnLmMKKysrIGIveGVuL2Fy
Y2gveDg2L2h2bS9zdm0vc3ZtZGVidWcuYwpAQCAtNjIsOCArNjIsOCBAQCB2b2lkIHN2bV92bWNi
X2R1bXAoY29uc3QgY2hhciAqZnJvbSwgY29uc3Qgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiKQog
ICAgICAgICAgICB2bWNiLT5leGl0Y29kZSwgdm1jYi0+ZXhpdF9pbnRfaW5mby5yYXcpOwogICAg
IHByaW50aygiZXhpdGluZm8xID0gJSMiUFJJeDY0IiBleGl0aW5mbzIgPSAlIyJQUkl4NjQiXG4i
LAogICAgICAgICAgICB2bWNiLT5leGl0aW5mbzEsIHZtY2ItPmV4aXRpbmZvMik7Ci0gICAgcHJp
bnRrKCJucF9lbmFibGUgPSAlIyJQUkl4NjQiIGd1ZXN0X2FzaWQgPSAlI3hcbiIsCi0gICAgICAg
ICAgIHZtY2JfZ2V0X25wX2VuYWJsZSh2bWNiKSwgdm1jYl9nZXRfZ3Vlc3RfYXNpZCh2bWNiKSk7
CisgICAgcHJpbnRrKCJucF9jdHJsID0gJSMiUFJJeDY0IiBndWVzdF9hc2lkID0gJSN4XG4iLAor
ICAgICAgICAgICB2bWNiX2dldF9ucF9jdHJsKHZtY2IpLCB2bWNiX2dldF9ndWVzdF9hc2lkKHZt
Y2IpKTsKICAgICBwcmludGsoInZpcnR1YWwgdm1sb2FkL3Ztc2F2ZSA9ICVkLCB2aXJ0X2V4dCA9
ICUjIlBSSXg2NCJcbiIsCiAgICAgICAgICAgIHZtY2ItPnZpcnRfZXh0LmZpZWxkcy52bG9hZHNh
dmVfZW5hYmxlLCB2bWNiLT52aXJ0X2V4dC5ieXRlcyk7CiAgICAgcHJpbnRrKCJjcGwgPSAlZCBl
ZmVyID0gJSMiUFJJeDY0IiBzdGFyID0gJSMiUFJJeDY0IiBsc3RhciA9ICUjIlBSSXg2NCJcbiIs
CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vdm1jYi5oIGIveGVuL2lu
Y2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL3ZtY2IuaAppbmRleCA1OGVhZmUzYjIzLi5lNWVkMzgzNjll
IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vdm1jYi5oCisrKyBiL3hl
bi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS92bWNiLmgKQEAgLTQ0Nyw3ICs0NDcsMTcgQEAgc3Ry
dWN0IHZtY2Jfc3RydWN0IHsKICAgICAgICAgfSBlaTsKICAgICB9OwogICAgIGludGluZm9fdCBl
eGl0X2ludF9pbmZvOyAgICAvKiBvZmZzZXQgMHg4OCAqLwotICAgIHU2NCBfbnBfZW5hYmxlOyAg
ICAgICAgICAgICAvKiBvZmZzZXQgMHg5MCAtIGNsZWFuYml0IDQgKi8KKyAgICB1bmlvbiB7ICAg
ICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0IDB4OTAgLSBjbGVhbmJpdCA0ICovCisgICAgICAg
IHN0cnVjdCB7CisgICAgICAgICAgICBib29sIF9ucF9lbmFibGUgICAgIDoxOworICAgICAgICAg
ICAgYm9vbCBfc2V2X2VuYWJsZSAgICA6MTsKKyAgICAgICAgICAgIGJvb2wgX3Nldl9lc19lbmFi
bGUgOjE7CisgICAgICAgICAgICBib29sIF9nbWV0ICAgICAgICAgIDoxOworICAgICAgICAgICAg
Ym9vbCAgICAgICAgICAgICAgICA6MTsKKyAgICAgICAgICAgIGJvb2wgX3Z0ZSAgICAgICAgICAg
OjE7CisgICAgICAgIH07CisgICAgICAgIHVpbnQ2NF90IF9ucF9jdHJsOworICAgIH07CiAgICAg
dTY0IHJlczA4WzJdOwogICAgIGludGluZm9fdCBldmVudF9pbmo7ICAgICAgICAvKiBvZmZzZXQg
MHhBOCAqLwogICAgIHU2NCBfaF9jcjM7ICAgICAgICAgICAgICAgICAvKiBvZmZzZXQgMHhCMCAt
IGNsZWFuYml0IDQgKi8KQEAgLTU3NywyMCArNTg3LDIzIEBAIHZvaWQgc3ZtX2ludGVyY2VwdF9t
c3Ioc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IG1zciwgaW50IGVuYWJsZSk7CiAgKiBWTUNCIGFj
Y2Vzc29yIGZ1bmN0aW9ucy4KICAqLwogCi0jZGVmaW5lIFZNQ0JfQUNDRVNTT1JTKG5hbWUsIGNs
ZWFuYml0KSAgICAgICAgICAgIFwKKyNkZWZpbmUgVk1DQl9BQ0NFU1NPUlNfKG5hbWUsIHR5cGUs
IGNsZWFuYml0KSAgICAgXAogc3RhdGljIGlubGluZSB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiB2bWNiX3NldF8gIyMgbmFtZShzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2Is
ICAgICAgIFwKLSAgICAgICAgICAgICAgICAgIHR5cGVvZih2bWNiLT5fICMjIG5hbWUpIHZhbHVl
KSAgXAorICAgICAgICAgICAgICAgICAgdHlwZSB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICBc
CiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg
ICB2bWNiLT5fICMjIG5hbWUgPSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHZt
Y2ItPmNsZWFuYml0cy5maWVsZHMuY2xlYW5iaXQgPSAwOyAgICAgICAgICBcCiB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyBpbmxpbmUg
dHlwZW9mKGFsbG9jX3ZtY2IoKS0+XyAjIyBuYW1lKSAgICAgXAorc3RhdGljIGlubGluZSB0eXBl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB2bWNiX2dldF8gIyMgbmFtZShjb25z
dCBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKnZtY2IpIFwKIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHJldHVybiB2bWNiLT5fICMjIG5hbWU7ICAg
ICAgICAgICAgICAgICAgICAgICBcCiB9CiAKKyNkZWZpbmUgVk1DQl9BQ0NFU1NPUlMobmFtZSwg
Y2xlYW5iaXQpIFwKKyAgICAgICAgVk1DQl9BQ0NFU1NPUlNfKG5hbWUsIHR5cGVvZihhbGxvY192
bWNiKCktPl8gIyMgbmFtZSksIGNsZWFuYml0KQorCiBWTUNCX0FDQ0VTU09SUyhjcl9pbnRlcmNl
cHRzLCBpbnRlcmNlcHRzKQogVk1DQl9BQ0NFU1NPUlMoZHJfaW50ZXJjZXB0cywgaW50ZXJjZXB0
cykKIFZNQ0JfQUNDRVNTT1JTKGV4Y2VwdGlvbl9pbnRlcmNlcHRzLCBpbnRlcmNlcHRzKQpAQCAt
NjAzLDcgKzYxNiwxMiBAQCBWTUNCX0FDQ0VTU09SUyhpb3BtX2Jhc2VfcGEsIGlvcG0pCiBWTUNC
X0FDQ0VTU09SUyhtc3JwbV9iYXNlX3BhLCBpb3BtKQogVk1DQl9BQ0NFU1NPUlMoZ3Vlc3RfYXNp
ZCwgYXNpZCkKIFZNQ0JfQUNDRVNTT1JTKHZpbnRyLCB0cHIpCi1WTUNCX0FDQ0VTU09SUyhucF9l
bmFibGUsIG5wKQorVk1DQl9BQ0NFU1NPUlMobnBfY3RybCwgbnApCitWTUNCX0FDQ0VTU09SU18o
bnBfZW5hYmxlLCBib29sLCBucCkKK1ZNQ0JfQUNDRVNTT1JTXyhzZXZfZW5hYmxlLCBib29sLCBu
cCkKK1ZNQ0JfQUNDRVNTT1JTXyhzZXZfZXNfZW5hYmxlLCBib29sLCBucCkKK1ZNQ0JfQUNDRVNT
T1JTXyhnbWV0LCBib29sLCBucCkKK1ZNQ0JfQUNDRVNTT1JTXyh2dGUsIGJvb2wsIG5wKQogVk1D
Ql9BQ0NFU1NPUlMoaF9jcjMsIG5wKQogVk1DQl9BQ0NFU1NPUlMoZ19wYXQsIG5wKQogVk1DQl9B
Q0NFU1NPUlMoY3IwLCBjcikKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUv
eGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFu
Z2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:56:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:56:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZug-0001Mj-Ae; Sat, 04 Apr 2020 03:56:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZue-0001MV-Ff
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:04 +0000
X-Inumbo-ID: 3469335e-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3469335e-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:56:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GP3kSmgvcwb/xrnQcJf7XXMYYxd34Js0co5Ozkhcf6E=; b=VcE/CyW55JXTKlAYE/WkJTuB0z
 GBt61IKXCpt4//eIdfrSPbEVOuSrlD/ysjpUDjFkkIHBm2DtguobqMBasc2gCrsunxMSdfj9p9br2
 bOYrGN4234zrAHqpDhTf1Q+U6/g5SD+ncu6wxa5iG8WzU3kFWBcitDn3LzUq1LE2sBnQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZud-00056R-NM
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZud-00064q-ME
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZud-00064q-ME@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:56:03 +0000
Subject: [Xen-changelog] [xen master] x86: remove unnecessary cast on void
 pointer
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============8469918015775732801=="
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

--===============8469918015775732801==
Content-Type: text/plain

commit 922f59a4302939471254b91c921daa5bd7c7e3fa
Author:     Simran Singhal <singhalsimran0@gmail.com>
AuthorDate: Tue Mar 31 08:50:25 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Mar 31 08:50:25 2020 +0200

    x86: remove unnecessary cast on void pointer
    
    Assignment to a typed pointer is sufficient in C.
    No cast is needed.
    
    Also, changed some u64/u32 to uint64_t/uint32_t.
    
    Signed-off-by: Simran Singhal <singhalsimran0@gmail.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/acpi/cpufreq/powernow.c |  2 +-
 xen/arch/x86/cpu/vpmu.c              |  2 +-
 xen/arch/x86/hpet.c                  |  2 +-
 xen/arch/x86/hvm/save.c              |  2 +-
 xen/arch/x86/hvm/vmx/vvmx.c          | 12 ++++++------
 5 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/acpi/cpufreq/powernow.c b/xen/arch/x86/acpi/cpufreq/powernow.c
index 3cf9c6cd05..f620bebc7e 100644
--- a/xen/arch/x86/acpi/cpufreq/powernow.c
+++ b/xen/arch/x86/acpi/cpufreq/powernow.c
@@ -58,7 +58,7 @@ static void transition_pstate(void *pstate)
 
 static void update_cpb(void *data)
 {
-    struct cpufreq_policy *policy = (struct cpufreq_policy *)data;
+    struct cpufreq_policy *policy = data;
 
     if (policy->turbo != CPUFREQ_TURBO_UNSUPPORTED) {
         uint64_t msr_content;
diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c
index e50d478d23..1ed39ef03f 100644
--- a/xen/arch/x86/cpu/vpmu.c
+++ b/xen/arch/x86/cpu/vpmu.c
@@ -337,7 +337,7 @@ void vpmu_do_interrupt(struct cpu_user_regs *regs)
 
 static void vpmu_save_force(void *arg)
 {
-    struct vcpu *v = (struct vcpu *)arg;
+    struct vcpu *v = arg;
     struct vpmu_struct *vpmu = vcpu_vpmu(v);
 
     if ( !vpmu_is_set(vpmu, VPMU_CONTEXT_LOADED) )
diff --git a/xen/arch/x86/hpet.c b/xen/arch/x86/hpet.c
index 86929b9ba1..c46e7cf4ee 100644
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -215,7 +215,7 @@ again:
 static void hpet_interrupt_handler(int irq, void *data,
         struct cpu_user_regs *regs)
 {
-    struct hpet_event_channel *ch = (struct hpet_event_channel *)data;
+    struct hpet_event_channel *ch = data;
 
     this_cpu(irq_count)--;
 
diff --git a/xen/arch/x86/hvm/save.c b/xen/arch/x86/hvm/save.c
index 0fc59d3487..a2c56fbc1e 100644
--- a/xen/arch/x86/hvm/save.c
+++ b/xen/arch/x86/hvm/save.c
@@ -417,7 +417,7 @@ void _hvm_read_entry(struct hvm_domain_context *h, void *dest,
     memcpy(dest, &h->data[h->cur], d->length);
 
     if ( d->length < dest_len )
-        memset((char *)dest + d->length, 0, dest_len - d->length);
+        memset(dest + d->length, 0, dest_len - d->length);
 
     h->cur += d->length;
 }
diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index 125cb87493..e2baa0f660 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -253,12 +253,12 @@ static int vvmcs_offset(u32 width, u32 type, u32 index)
     return offset;
 }
 
-u64 get_vvmcs_virtual(void *vvmcs, u32 vmcs_encoding)
+uint64_t get_vvmcs_virtual(void *vvmcs, uint32_t vmcs_encoding)
 {
     union vmcs_encoding enc;
-    u64 *content = (u64 *) vvmcs;
+    uint64_t *content = vvmcs;
     int offset;
-    u64 res;
+    uint64_t res;
 
     enc.word = vmcs_encoding;
     offset = vvmcs_offset(enc.width, enc.type, enc.index);
@@ -307,12 +307,12 @@ enum vmx_insn_errno get_vvmcs_real_safe(const struct vcpu *v, u32 encoding,
     return virtual_vmcs_vmread_safe(v, encoding, val);
 }
 
-void set_vvmcs_virtual(void *vvmcs, u32 vmcs_encoding, u64 val)
+void set_vvmcs_virtual(void *vvmcs, uint32_t vmcs_encoding, uint64_t val)
 {
     union vmcs_encoding enc;
-    u64 *content = (u64 *) vvmcs;
+    uint64_t *content = vvmcs;
     int offset;
-    u64 res;
+    uint64_t res;
 
     enc.word = vmcs_encoding;
     offset = vvmcs_offset(enc.width, enc.type, enc.index);
--
generated by git-patchbot for /home/xen/git/xen.git#master


--===============8469918015775732801==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5n
ZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

--===============8469918015775732801==--

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:56:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:56:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZuq-0001OI-CW; Sat, 04 Apr 2020 03:56:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZuo-0001O5-It
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:14 +0000
X-Inumbo-ID: 3a6e2b7e-7628-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3a6e2b7e-7628-11ea-9e09-bc764e2007e4;
 Sat, 04 Apr 2020 03:56:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=c1H/cUqXfy+mgf8KN+IYp4D/OqC+nd+hkt+Ff8qrPJI=; b=k1i9Bx/Mak0k+0eIvhzYf5cdyg
 fDdioiJWaBLMTo3pQxmu7O51RvaxXjzH8RlCW7O2wqusWvSeEi9qrN21mktwRuxGnGaTY8wCjEqFl
 3LeaQzr502zDGKBZ8uBf0NKOM8rMfS5+qbDPN5l0N14BzmrblCf4k+GGLeHUZGw98K9o=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZun-00057F-Qc
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZun-00065d-Pd
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZun-00065d-Pd@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:56:13 +0000
Subject: [Xen-changelog] [xen master] x86: compress lines for immediate
 return
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDVhZjQ2OThkOThkODgxZTc4NmMwOTA5YjYzMDhmMDQ2OTY1ODZjNDkKQXV0aG9yOiAg
ICAgU2ltcmFuIFNpbmdoYWwgPHNpbmdoYWxzaW1yYW4wQGdtYWlsLmNvbT4KQXV0aG9yRGF0ZTog
VHVlIE1hciAzMSAwODo1MToyMSAyMDIwICswMjAwCkNvbW1pdDogICAgIEphbiBCZXVsaWNoIDxq
YmV1bGljaEBzdXNlLmNvbT4KQ29tbWl0RGF0ZTogVHVlIE1hciAzMSAwODo1MToyMSAyMDIwICsw
MjAwCgogICAgeDg2OiBjb21wcmVzcyBsaW5lcyBmb3IgaW1tZWRpYXRlIHJldHVybgogICAgCiAg
ICBDb21wcmVzcyB0d28gbGluZXMgaW50byBhIHNpbmdsZSBsaW5lIGlmIGltbWVkaWF0ZSByZXR1
cm4gc3RhdGVtZW50IGlzIGZvdW5kLgogICAgSXQgYWxzbyByZW1vdmUgdmFyaWFibGVzIHJldHZh
bCwgZnJlcSwgZWZmZWN0aXZlLCB2ZWN0b3IsIG92ZiBhbmQgbm93CiAgICBhcyB0aGV5IGFyZSBu
byBsb25nZXIgbmVlZGVkLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBTaW1yYW4gU2luZ2hhbCA8
c2luZ2hhbHNpbXJhbjBAZ21haWwuY29tPgogICAgUmV2aWV3ZWQtYnk6IFdlaSBMaXUgPHdsQHhl
bi5vcmc+CiAgICBBY2tlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0K
IHhlbi9hcmNoL3g4Ni9hY3BpL2NwdWZyZXEvY3B1ZnJlcS5jICAgICB8IDkgKystLS0tLS0tCiB4
ZW4vYXJjaC94ODYvaHZtL210cnIuYyAgICAgICAgICAgICAgICAgfCA2ICsrLS0tLQogeGVuL2Fy
Y2gveDg2L2h2bS92cGljLmMgICAgICAgICAgICAgICAgIHwgNSArKy0tLQogeGVuL2FyY2gveDg2
L29wcm9maWxlL29wX21vZGVsX2F0aGxvbi5jIHwgNSArLS0tLQogeGVuL2FyY2gveDg2L3RpbWUu
YyAgICAgICAgICAgICAgICAgICAgIHwgNSArLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCA4IGluc2Vy
dGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9hY3Bp
L2NwdWZyZXEvY3B1ZnJlcS5jIGIveGVuL2FyY2gveDg2L2FjcGkvY3B1ZnJlcS9jcHVmcmVxLmMK
aW5kZXggMjgxYmUxMzFhMy4uZjFmM2M2OTIzZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Fj
cGkvY3B1ZnJlcS9jcHVmcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2FjcGkvY3B1ZnJlcS9jcHVm
cmVxLmMKQEAgLTI3MCw3ICsyNzAsNiBAQCB1bnNpZ25lZCBpbnQgZ2V0X21lYXN1cmVkX3BlcmYo
dW5zaWduZWQgaW50IGNwdSwgdW5zaWduZWQgaW50IGZsYWcpCiAgICAgc3RydWN0IGNwdWZyZXFf
cG9saWN5ICpwb2xpY3k7ICAgIAogICAgIHN0cnVjdCBwZXJmX3BhaXIgcmVhZGluLCBjdXIsICpz
YXZlZDsKICAgICB1bnNpZ25lZCBpbnQgcGVyZl9wZXJjZW50OwotICAgIHVuc2lnbmVkIGludCBy
ZXR2YWw7CiAKICAgICBpZiAoIWNwdV9vbmxpbmUoY3B1KSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0zMTgsMTYgKzMxNywxMyBAQCB1bnNpZ25lZCBpbnQgZ2V0X21lYXN1cmVkX3BlcmYodW5zaWdu
ZWQgaW50IGNwdSwgdW5zaWduZWQgaW50IGZsYWcpCiAgICAgZWxzZQogICAgICAgICBwZXJmX3Bl
cmNlbnQgPSAwOwogCi0gICAgcmV0dmFsID0gcG9saWN5LT5jcHVpbmZvLm1heF9mcmVxICogcGVy
Zl9wZXJjZW50IC8gMTAwOwotCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gcG9saWN5
LT5jcHVpbmZvLm1heF9mcmVxICogcGVyZl9wZXJjZW50IC8gMTAwOwogfQogCiBzdGF0aWMgdW5z
aWduZWQgaW50IGdldF9jdXJfZnJlcV9vbl9jcHUodW5zaWduZWQgaW50IGNwdSkKIHsKICAgICBz
dHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKnBvbGljeTsKICAgICBzdHJ1Y3QgYWNwaV9jcHVmcmVxX2Rh
dGEgKmRhdGE7Ci0gICAgdW5zaWduZWQgaW50IGZyZXE7CiAKICAgICBpZiAoIWNwdV9vbmxpbmUo
Y3B1KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0zNDEsOCArMzM3LDcgQEAgc3RhdGljIHVuc2ln
bmVkIGludCBnZXRfY3VyX2ZyZXFfb25fY3B1KHVuc2lnbmVkIGludCBjcHUpCiAgICAgICAgIGRh
dGEtPmFjcGlfZGF0YSA9PSBOVUxMIHx8IGRhdGEtPmZyZXFfdGFibGUgPT0gTlVMTCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgZnJlcSA9IGV4dHJhY3RfZnJlcShnZXRfY3VyX3ZhbChjcHVt
YXNrX29mKGNwdSkpLCBkYXRhKTsKLSAgICByZXR1cm4gZnJlcTsKKyAgICByZXR1cm4gZXh0cmFj
dF9mcmVxKGdldF9jdXJfdmFsKGNwdW1hc2tfb2YoY3B1KSksIGRhdGEpOwogfQogCiBzdGF0aWMg
dm9pZCBmZWF0dXJlX2RldGVjdCh2b2lkICppbmZvKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2
L2h2bS9tdHJyLmMgYi94ZW4vYXJjaC94ODYvaHZtL210cnIuYwppbmRleCA4MzU2ZThkZTNkLi41
MTFjM2JlMWM4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL210cnIuYworKysgYi94ZW4v
YXJjaC94ODYvaHZtL210cnIuYwpAQCAtMzE3LDcgKzMxNyw3IEBAIHN0YXRpYyB1aW50OF90IGVm
ZmVjdGl2ZV9tbV90eXBlKHN0cnVjdCBtdHJyX3N0YXRlICptLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyX3QgcHRlX2ZsYWdzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWludDhfdCBnbXRycl9tdHlwZSkKIHsKLSAgICB1aW50OF90IG10cnJfbXR5
cGUsIHBhdF92YWx1ZSwgZWZmZWN0aXZlOworICAgIHVpbnQ4X3QgbXRycl9tdHlwZSwgcGF0X3Zh
bHVlOwogICAgCiAgICAgLyogaWYgZ2V0X3BhdF9mbGFncygpIGdpdmVzIGEgZGVkaWNhdGVkIE1U
UlIgdHlwZSwKICAgICAgKiBqdXN0IHVzZSBpdApAQCAtMzI5LDkgKzMyOSw3IEBAIHN0YXRpYyB1
aW50OF90IGVmZmVjdGl2ZV9tbV90eXBlKHN0cnVjdCBtdHJyX3N0YXRlICptLAogCiAgICAgcGF0
X3ZhbHVlID0gcGFnZV9wYXRfdHlwZShwYXQsIHB0ZV9mbGFncyk7CiAKLSAgICBlZmZlY3RpdmUg
PSBtbV90eXBlX3RibFttdHJyX210eXBlXVtwYXRfdmFsdWVdOwotCi0gICAgcmV0dXJuIGVmZmVj
dGl2ZTsKKyAgICByZXR1cm4gbW1fdHlwZV90YmxbbXRycl9tdHlwZV1bcGF0X3ZhbHVlXTsKIH0K
IAogdWludDMyX3QgZ2V0X3BhdF9mbGFncyhzdHJ1Y3QgdmNwdSAqdiwKZGlmZiAtLWdpdCBhL3hl
bi9hcmNoL3g4Ni9odm0vdnBpYy5jIGIveGVuL2FyY2gveDg2L2h2bS92cGljLmMKaW5kZXggNDg5
N2EwZTA1Yi4uNjFmNGI2Nzg0YyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92cGljLmMK
KysrIGIveGVuL2FyY2gveDg2L2h2bS92cGljLmMKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIHZw
aWNfaXJxX25lZ2F0aXZlX2VkZ2Uoc3RydWN0IGRvbWFpbiAqZCwgaW50IGlycSkKIAogaW50IHZw
aWNfYWNrX3BlbmRpbmdfaXJxKHN0cnVjdCB2Y3B1ICp2KQogewotICAgIGludCBpcnEsIHZlY3Rv
cjsKKyAgICBpbnQgaXJxOwogICAgIHN0cnVjdCBodm1faHdfdnBpYyAqdnBpYyA9ICZ2LT5kb21h
aW4tPmFyY2guaHZtLnZwaWNbMF07CiAKICAgICBBU1NFUlQoaGFzX3ZwaWModi0+ZG9tYWluKSk7
CkBAIC00OTgsOCArNDk4LDcgQEAgaW50IHZwaWNfYWNrX3BlbmRpbmdfaXJxKHN0cnVjdCB2Y3B1
ICp2KQogICAgIGlmICggaXJxID09IC0xICkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgdmVj
dG9yID0gdnBpY1tpcnEgPj4gM10uaXJxX2Jhc2UgKyAoaXJxICYgNyk7Ci0gICAgcmV0dXJuIHZl
Y3RvcjsKKyAgICByZXR1cm4gdnBpY1tpcnEgPj4gM10uaXJxX2Jhc2UgKyAoaXJxICYgNyk7CiB9
CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfYXRobG9u
LmMgYi94ZW4vYXJjaC94ODYvb3Byb2ZpbGUvb3BfbW9kZWxfYXRobG9uLmMKaW5kZXggNWM0OGY4
NjhhZS4uZWU2ZWIwZWNhZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L29wcm9maWxlL29wX21v
ZGVsX2F0aGxvbi5jCisrKyBiL3hlbi9hcmNoL3g4Ni9vcHJvZmlsZS9vcF9tb2RlbF9hdGhsb24u
YwpAQCAtMzE1LDcgKzMxNSw2IEBAIHN0YXRpYyBpbnQgYXRobG9uX2NoZWNrX2N0cnModW5zaWdu
ZWQgaW50IGNvbnN0IGNwdSwKIHsKIAl1aW50NjRfdCBtc3JfY29udGVudDsKIAlpbnQgaTsKLQlp
bnQgb3ZmID0gMDsKIAl1bnNpZ25lZCBsb25nIGVpcCA9IHJlZ3MtPnJpcDsKIAlpbnQgbW9kZSA9
IDA7CiAJc3RydWN0IHZjcHUgKnYgPSBjdXJyZW50OwpAQCAtMzM5LDEzICszMzgsMTEgQEAgc3Rh
dGljIGludCBhdGhsb25fY2hlY2tfY3Rycyh1bnNpZ25lZCBpbnQgY29uc3QgY3B1LAogCQlpZiAo
Q1RSX09WRVJGTE9XRUQobXNyX2NvbnRlbnQpKSB7CiAJCQl4ZW5vcHJvZl9sb2dfZXZlbnQoY3Vy
cmVudCwgcmVncywgZWlwLCBtb2RlLCBpKTsKIAkJCUNUUl9XUklURShyZXNldF92YWx1ZVtpXSwg
bXNycywgaSk7Ci0JCQlvdmYgPSAxOwogCQl9CiAJfQogCi0Jb3ZmID0gaGFuZGxlX2licyhtb2Rl
LCByZWdzKTsKIAkvKiBTZWUgb3BfbW9kZWxfcHByby5jICovCi0JcmV0dXJuIG92ZjsKKwlyZXR1
cm4gaGFuZGxlX2licyhtb2RlLCByZWdzKTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHN0YXJ0
X2licyh2b2lkKQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3RpbWUuYyBiL3hlbi9hcmNoL3g4
Ni90aW1lLmMKaW5kZXggMmQ0NDMwYjI4My4uYmJhZWEzYWE2NSAxMDA2NDQKLS0tIGEveGVuL2Fy
Y2gveDg2L3RpbWUuYworKysgYi94ZW4vYXJjaC94ODYvdGltZS5jCkBAIC0xMTQyLDE2ICsxMTQy
LDEzIEBAIHNfdGltZV90IGdldF9zX3RpbWVfZml4ZWQodTY0IGF0X3RzYykKIHsKICAgICBjb25z
dCBzdHJ1Y3QgY3B1X3RpbWUgKnQgPSAmdGhpc19jcHUoY3B1X3RpbWUpOwogICAgIHU2NCB0c2Ms
IGRlbHRhOwotICAgIHNfdGltZV90IG5vdzsKIAogICAgIGlmICggYXRfdHNjICkKICAgICAgICAg
dHNjID0gYXRfdHNjOwogICAgIGVsc2UKICAgICAgICAgdHNjID0gcmR0c2Nfb3JkZXJlZCgpOwog
ICAgIGRlbHRhID0gdHNjIC0gdC0+c3RhbXAubG9jYWxfdHNjOwotICAgIG5vdyA9IHQtPnN0YW1w
LmxvY2FsX3N0aW1lICsgc2NhbGVfZGVsdGEoZGVsdGEsICZ0LT50c2Nfc2NhbGUpOwotCi0gICAg
cmV0dXJuIG5vdzsKKyAgICByZXR1cm4gdC0+c3RhbXAubG9jYWxfc3RpbWUgKyBzY2FsZV9kZWx0
YShkZWx0YSwgJnQtPnRzY19zY2FsZSk7CiB9CiAKIHNfdGltZV90IGdldF9zX3RpbWUoKQotLQpn
ZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVy
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hh
bmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:56:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:56:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZv2-0001PR-EY; Sat, 04 Apr 2020 03:56:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZv0-0001PI-Gz
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:26 +0000
X-Inumbo-ID: 4072e3c0-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4072e3c0-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:56:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=r2RfjhBIy2k0KCHaXSLaQ6nScd8EJpi8imS2jvnWgSs=; b=HsTQ2VpuDk5NQHldXqULESganf
 VG0Xu1AmUTM/wq+JeFCToANkKAs8s+zR7JJSKKxGOH8qCXO2KQx6fHG+CDoNtNgoQqFrg6e2Wc1Va
 4S+PkDZllzkrVS0EN577QTa5z9ujnKXgIMahFl/hDeAZ4Y3cbUJFuVM8CIO8ubeJXDJo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZux-00057O-Tg
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZux-00066N-Si
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZux-00066N-Si@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:56:23 +0000
Subject: [Xen-changelog] [xen master] xen/arm: Rename all early printk macro
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDM3MGY0NGZhNzMwMDRlOWUxOWNmZjliMWU2NWVlN2VhNjFiNTU3MDAKQXV0aG9yOiAg
ICAgQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CkF1dGhvckRhdGU6
IFR1ZSBNYXIgMzEgMTE6MzA6NDUgMjAyMCArMDEwMApDb21taXQ6ICAgICBKdWxpZW4gR3JhbGwg
PGpncmFsbEBhbWF6b24uY29tPgpDb21taXREYXRlOiBXZWQgQXByIDEgMTA6NDk6MjkgMjAyMCAr
MDEwMAoKICAgIHhlbi9hcm06IFJlbmFtZSBhbGwgZWFybHkgcHJpbnRrIG1hY3JvCiAgICAKICAg
IFdlIGFyZSBnb2luZyB0byBtb3ZlIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBlYXJseSBwcmludGsg
bWFjcm8gaW50bwogICAgS2NvbmZpZy4gVGhpcyBtZWFucyBhbGwgbWFjcm8gd2lsbCBiZSBwcmVm
aXggd2l0aCBDT05GSUdfLiBXZSBkbyB0aGF0CiAgICBhaGVhZCBvZiB0aGUgY2hhbmdlLgogICAg
CiAgICBXZSBhbHNvIHRha2UgdGhlIG9wcG9ydHVuaXR5IHRvIGJldHRlciBuYW1lIHNvbWUgdmFy
aWFibGVzLCB3aGljaCBhcmUKICAgIHVzZWQgYnkgb25seSBvbmUgZHJpdmVyIGFuZCB3b3VsZG4n
dCBtYWtlIHNlbnMgZm9yIG90aGVyIFVBUlQgZHJpdmVyLgogICAgVGh1cywKICAgICAgICAtIEVB
UkxZX1VBUlRfUkVHX1NISUZUIGJlY2FtZSBDT05GSUdfRUFSTFlfVUFSVF84MjUwX1JFR19TSElG
VAogICAgICAgIC0gRUFSTFlfUFJJTlRLX1ZFUlNJT05fKiBiZWNhbWUgQ09ORklHX0VBUkxZX1VB
UlRfU0NJRl9WRVJTSU9OXyoKICAgIAogICAgVGhlIG90aGVyIHZhcmlhYmxlcyBhcmUgY2hhbmdl
IHRvIGhhdmUgdGhlIHByZWZpeCBDT05GSUdfRUFSTFlfVUFSVF8KICAgIHdoZW4gdGhleSBjaGFu
Z2UgYSBwYXJhbWV0ZXIgb2YgdGhlIGRyaXZlci4gU28gd2UgaGF2ZSBub3c6CiAgICAgICAgLSBD
T05GSUdfRUFSTFlfVUFSVF9CQVVEX1JBVEUKICAgICAgICAtIENPTkZJR19FQVJMWV9VQVJUX0JB
U0VfQUREUkVTUwogICAgICAgIC0gQ09ORklHX0VBUkxZX1VBUlRfSU5JVAogICAgCiAgICBTaWdu
ZWQtb2ZmLWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KICAg
IEFja2VkLWJ5OiBKdWxpZW4gR3JhbGwgPGpncmFsbEBhbWF6b24uY29tPgogICAgVGVzdGVkLWJ5
OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Ci0tLQogeGVuL2Fy
Y2gvYXJtL1J1bGVzLm1rICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCiB4ZW4vYXJj
aC9hcm0vYXJtMzIvZGVidWctODI1MC5pbmMgIHwgIDIgKy0KIHhlbi9hcmNoL2FybS9hcm0zMi9k
ZWJ1Zy1wbDAxMS5pbmMgfCAgNCArKy0tCiB4ZW4vYXJjaC9hcm0vYXJtMzIvZGVidWctc2NpZi5p
bmMgIHwgIDQgKystLQogeGVuL2FyY2gvYXJtL2FybTMyL2RlYnVnLlMgICAgICAgICB8ICA0ICsr
LS0KIHhlbi9hcmNoL2FybS9hcm0zMi9oZWFkLlMgICAgICAgICAgfCAxMCArKysrKy0tLS0tCiB4
ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWctODI1MC5pbmMgIHwgIDQgKystLQogeGVuL2FyY2gvYXJt
L2FybTY0L2RlYnVnLXBsMDExLmluYyB8ICA0ICsrLS0KIHhlbi9hcmNoL2FybS9hcm02NC9kZWJ1
Zy5TICAgICAgICAgfCAgNCArKy0tCiB4ZW4vYXJjaC9hcm0vYXJtNjQvaGVhZC5TICAgICAgICAg
IHwgMTAgKysrKystLS0tLQogeGVuL2luY2x1ZGUvYXNtLWFybS9lYXJseV9wcmludGsuaCB8ICAy
ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vUnVsZXMubWsgYi94ZW4vYXJjaC9hcm0vUnVsZXMu
bWsKaW5kZXggMDIyYTNhNmY4Mi4uZmFhMDllYTExMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt
L1J1bGVzLm1rCisrKyBiL3hlbi9hcmNoL2FybS9SdWxlcy5tawpAQCAtNjYsOSArNjYsOSBAQCBl
bmRpZgogZW5kaWYKIGlmZXEgKCQoRUFSTFlfUFJJTlRLX0lOQyksc2NpZikKIGlmbmVxICgkKHdv
cmQgMywkKEVBUkxZX1BSSU5US19DRkcpKSwpCi1DRkxBR1MteSArPSAtREVBUkxZX1BSSU5US19W
RVJTSU9OXyQod29yZCAzLCQoRUFSTFlfUFJJTlRLX0NGRykpCitDRkxBR1MteSArPSAtRENPTkZJ
R19FQVJMWV9VQVJUX1NDSUZfVkVSU0lPTl8kKHdvcmQgMywkKEVBUkxZX1BSSU5US19DRkcpKQog
ZWxzZQotQ0ZMQUdTLXkgKz0gLURFQVJMWV9QUklOVEtfVkVSU0lPTl9OT05FCitDRkxBR1MteSAr
PSAtRENPTkZJR19FQVJMWV9VQVJUX1NDSUZfVkVSU0lPTl9OT05FCiBlbmRpZgogZW5kaWYKIApA
QCAtNzcsMTEgKzc3LDExIEBAIEVBUkxZX1BSSU5USyA6PSB5CiBlbmRpZgogCiBDRkxBR1MtJChF
QVJMWV9QUklOVEspICs9IC1EQ09ORklHX0VBUkxZX1BSSU5USwotQ0ZMQUdTLSQoRUFSTFlfUFJJ
TlRLX0lOSVRfVUFSVCkgKz0gLURFQVJMWV9QUklOVEtfSU5JVF9VQVJUCi1DRkxBR1MtJChFQVJM
WV9QUklOVEspICs9IC1ERUFSTFlfUFJJTlRLX0lOQz1cImRlYnVnLSQoRUFSTFlfUFJJTlRLX0lO
QykuaW5jXCIKLUNGTEFHUy0kKEVBUkxZX1BSSU5USykgKz0gLURFQVJMWV9QUklOVEtfQkFVRD0k
KEVBUkxZX1BSSU5US19CQVVEKQotQ0ZMQUdTLSQoRUFSTFlfUFJJTlRLKSArPSAtREVBUkxZX1VB
UlRfQkFTRV9BRERSRVNTPSQoRUFSTFlfVUFSVF9CQVNFX0FERFJFU1MpCi1DRkxBR1MtJChFQVJM
WV9QUklOVEspICs9IC1ERUFSTFlfVUFSVF9SRUdfU0hJRlQ9JChFQVJMWV9VQVJUX1JFR19TSElG
VCkKK0NGTEFHUy0kKEVBUkxZX1BSSU5US19JTklUX1VBUlQpICs9IC1EQ09ORklHX0VBUkxZX1VB
UlRfSU5JVAorQ0ZMQUdTLSQoRUFSTFlfUFJJTlRLKSArPSAtRENPTkZJR19FQVJMWV9QUklOVEtf
SU5DPVwiZGVidWctJChFQVJMWV9QUklOVEtfSU5DKS5pbmNcIgorQ0ZMQUdTLSQoRUFSTFlfUFJJ
TlRLKSArPSAtRENPTkZJR19FQVJMWV9VQVJUX1BMMDExX0JBVURfUkFURT0kKEVBUkxZX1BSSU5U
S19CQVVEKQorQ0ZMQUdTLSQoRUFSTFlfUFJJTlRLKSArPSAtRENPTkZJR19FQVJMWV9VQVJUX0JB
U0VfQUREUkVTUz0kKEVBUkxZX1VBUlRfQkFTRV9BRERSRVNTKQorQ0ZMQUdTLSQoRUFSTFlfUFJJ
TlRLKSArPSAtRENPTkZJR19FQVJMWV9VQVJUXzgyNTBfUkVHX1NISUZUPSQoRUFSTFlfVUFSVF9S
RUdfU0hJRlQpCiAKIGVsc2UgIyAhQ09ORklHX0RFQlVHCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNo
L2FybS9hcm0zMi9kZWJ1Zy04MjUwLmluYyBiL3hlbi9hcmNoL2FybS9hcm0zMi9kZWJ1Zy04MjUw
LmluYwppbmRleCAwNzU5YTI3ZWUxLi5jNDdlOGJlNGFhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9h
cm0vYXJtMzIvZGVidWctODI1MC5pbmMKKysrIGIveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVnLTgy
NTAuaW5jCkBAIC0yMyw3ICsyMyw3IEBACiAgKi8KIC5tYWNybyBlYXJseV91YXJ0X3JlYWR5IHJi
IHJjCiAxOgotICAgICAgICBsZHIgICAgIFxyYywgW1xyYiwgIyhVQVJUX0xTUiA8PCBFQVJMWV9V
QVJUX1JFR19TSElGVCldIC8qIFJlYWQgTFNSICovCisgICAgICAgIGxkciAgICAgXHJjLCBbXHJi
LCAjKFVBUlRfTFNSIDw8IENPTkZJR19FQVJMWV9VQVJUXzgyNTBfUkVHX1NISUZUKV0gLyogUmVh
ZCBMU1IgKi8KICAgICAgICAgdHN0ICAgICBccmMsICNVQVJUX0xTUl9USFJFICAgICAvKiBDaGVj
ayBYbWl0IGhvbGRpbmcgcmVnaXN0ZXIgZmxhZyAqLwogICAgICAgICBiZXEgICAgIDFiICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIFdhaXQgZm9yIHRoZSBVQVJUIHRvIGJlIHJlYWR5ICovCiAu
ZW5kbQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVnLXBsMDExLmluYyBiL3hl
bi9hcmNoL2FybS9hcm0zMi9kZWJ1Zy1wbDAxMS5pbmMKaW5kZXggZWM0NjJlYWJhYi4uMjE0ZjY4
ZGM5NSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVnLXBsMDExLmluYworKysg
Yi94ZW4vYXJjaC9hcm0vYXJtMzIvZGVidWctcGwwMTEuaW5jCkBAIC0yNSw5ICsyNSw5IEBACiAg
KiByZDogc2NyYXRjaCByZWdpc3RlciAyICh1bnVzZWQgaGVyZSkKICAqLwogLm1hY3JvIGVhcmx5
X3VhcnRfaW5pdCByYiwgcmMsIHJkCi0gICAgICAgIG1vdiAgIFxyYywgIyg3MzcyODAwIC8gRUFS
TFlfUFJJTlRLX0JBVUQgJSAxNikKKyAgICAgICAgbW92ICAgXHJjLCAjKDczNzI4MDAgLyBDT05G
SUdfRUFSTFlfVUFSVF9QTDAxMV9CQVVEX1JBVEUgJSAxNikKICAgICAgICAgc3RyICAgXHJjLCBb
XHJiLCAjRkJSRF0gICAgIC8qIC0+IFVBUlRGQlJEIChCYXVkIGRpdmlzb3IgZnJhY3Rpb24pICov
Ci0gICAgICAgIG1vdiAgIFxyYywgIyg3MzcyODAwIC8gRUFSTFlfUFJJTlRLX0JBVUQgLyAxNikK
KyAgICAgICAgbW92ICAgXHJjLCAjKDczNzI4MDAgLyBDT05GSUdfRUFSTFlfVUFSVF9QTDAxMV9C
QVVEX1JBVEUgLyAxNikKICAgICAgICAgc3RyICAgXHJjLCBbXHJiLCAjSUJSRF0gICAgIC8qIC0+
IFVBUlRJQlJEIChCYXVkIGRpdmlzb3IgaW50ZWdlcikgKi8KICAgICAgICAgbW92ICAgXHJjLCAj
MHg2MCAgICAgICAgICAgIC8qIDhuMSAqLwogICAgICAgICBzdHIgICBccmMsIFtccmIsICNMQ1Jf
SF0gICAgIC8qIC0+IFVBUlRMQ1JfSCAoTGluZSBjb250cm9sKSAqLwpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gvYXJtL2FybTMyL2RlYnVnLXNjaWYuaW5jIGIveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVn
LXNjaWYuaW5jCmluZGV4IDNmMDFjOTA5YzIuLmIyYjgyNTAxZTcgMTAwNjQ0Ci0tLSBhL3hlbi9h
cmNoL2FybS9hcm0zMi9kZWJ1Zy1zY2lmLmluYworKysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvZGVi
dWctc2NpZi5pbmMKQEAgLTE5LDEwICsxOSwxMCBAQAogCiAjaW5jbHVkZSA8YXNtL3NjaWYtdWFy
dC5oPgogCi0jaWZkZWYgRUFSTFlfUFJJTlRLX1ZFUlNJT05fTk9ORQorI2lmZGVmIENPTkZJR19F
QVJMWV9VQVJUX1NDSUZfVkVSU0lPTl9OT05FCiAjZGVmaW5lIFNUQVRVU19SRUcgICAgU0NJRl9T
Q0ZTUgogI2RlZmluZSBUWF9GSUZPX1JFRyAgIFNDSUZfU0NGVERSCi0jZWxpZiBFQVJMWV9QUklO
VEtfVkVSU0lPTl9BCisjZWxpZiBDT05GSUdfRUFSTFlfVUFSVF9TQ0lGX1ZFUlNJT05fQQogI2Rl
ZmluZSBTVEFUVVNfUkVHICAgIFNDSUZBX1NDQVNTUgogI2RlZmluZSBUWF9GSUZPX1JFRyAgIFND
SUZBX1NDQUZURFIKICNlbmRpZgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTMyL2RlYnVn
LlMgYi94ZW4vYXJjaC9hcm0vYXJtMzIvZGVidWcuUwppbmRleCAxODI5YjI5OTE1Li5lNzdjNzZk
MGRlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtMzIvZGVidWcuUworKysgYi94ZW4vYXJj
aC9hcm0vYXJtMzIvZGVidWcuUwpAQCAtMTksOCArMTksOCBAQAogCiAjaW5jbHVkZSA8YXNtL2Vh
cmx5X3ByaW50ay5oPgogCi0jaWZkZWYgRUFSTFlfUFJJTlRLX0lOQwotI2luY2x1ZGUgRUFSTFlf
UFJJTlRLX0lOQworI2lmIGRlZmluZWQgKENPTkZJR19FQVJMWV9QUklOVEtfSU5DKQorI2luY2x1
ZGUgQ09ORklHX0VBUkxZX1BSSU5US19JTkMKICNlbmRpZgogCiAvKgpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gvYXJtL2FybTMyL2hlYWQuUyBiL3hlbi9hcmNoL2FybS9hcm0zMi9oZWFkLlMKaW5kZXgg
ZTlkMzU2ZjA1Yy4uYzQwNGZhOTczZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTMyL2hl
YWQuUworKysgYi94ZW4vYXJjaC9hcm0vYXJtMzIvaGVhZC5TCkBAIC0zNiw4ICszNiw4IEBACiAj
ZGVmaW5lIFhFTl9GSVJTVF9TTE9UICAgICAgZmlyc3RfdGFibGVfb2Zmc2V0KFhFTl9WSVJUX1NU
QVJUKQogI2RlZmluZSBYRU5fU0VDT05EX1NMT1QgICAgIHNlY29uZF90YWJsZV9vZmZzZXQoWEVO
X1ZJUlRfU1RBUlQpCiAKLSNpZiAoZGVmaW5lZCAoQ09ORklHX0VBUkxZX1BSSU5USykpICYmIChk
ZWZpbmVkIChFQVJMWV9QUklOVEtfSU5DKSkKLSNpbmNsdWRlIEVBUkxZX1BSSU5US19JTkMKKyNp
ZiBkZWZpbmVkKENPTkZJR19FQVJMWV9QUklOVEspICYmIGRlZmluZWQoQ09ORklHX0VBUkxZX1BS
SU5US19JTkMpCisjaW5jbHVkZSBDT05GSUdfRUFSTFlfUFJJTlRLX0lOQwogI2VuZGlmCiAKIC8q
CkBAIC0yMjMsNyArMjIzLDcgQEAgR0xPQkFMKGluaXRfc2Vjb25kYXJ5KQogMToKIAogI2lmZGVm
IENPTkZJR19FQVJMWV9QUklOVEsKLSAgICAgICAgbW92X3cgcjExLCBFQVJMWV9VQVJUX0JBU0Vf
QUREUkVTUyAgIC8qIHIxMSA6PSBVQVJUIGJhc2UgYWRkcmVzcyAqLworICAgICAgICBtb3ZfdyBy
MTEsIENPTkZJR19FQVJMWV9VQVJUX0JBU0VfQUREUkVTUyAgIC8qIHIxMSA6PSBVQVJUIGJhc2Ug
YWRkcmVzcyAqLwogICAgICAgICBQUklOVCgiLSBDUFUgIikKICAgICAgICAgcHJpbnRfcmVnIHI3
CiAgICAgICAgIFBSSU5UKCIgYm9vdGluZyAtXHJcbiIpCkBAIC03MDYsOCArNzA2LDggQEAgRU5U
Ulkoc3dpdGNoX3R0YnIpCiAgKiBDbG9iYmVycyByMCAtIHIzCiAgKi8KIGluaXRfdWFydDoKLSAg
ICAgICAgbW92X3cgcjExLCBFQVJMWV9VQVJUX0JBU0VfQUREUkVTUwotI2lmZGVmIEVBUkxZX1BS
SU5US19JTklUX1VBUlQKKyAgICAgICAgbW92X3cgcjExLCBDT05GSUdfRUFSTFlfVUFSVF9CQVNF
X0FERFJFU1MKKyNpZmRlZiBDT05GSUdfRUFSTFlfVUFSVF9JTklUCiAgICAgICAgIGVhcmx5X3Vh
cnRfaW5pdCByMTEsIHIxLCByMgogI2VuZGlmCiAgICAgICAgIFBSSU5UKCItIFVBUlQgZW5hYmxl
ZCAtXHJcbiIpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWctODI1MC5pbmMg
Yi94ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWctODI1MC5pbmMKaW5kZXggNTNkNjgyOGJmYS4uMzBl
YTEzMDc3ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L2RlYnVnLTgyNTAuaW5jCisr
KyBiL3hlbi9hcmNoL2FybS9hcm02NC9kZWJ1Zy04MjUwLmluYwpAQCAtMjUsNyArMjUsNyBAQAog
ICovCiAubWFjcm8gZWFybHlfdWFydF9yZWFkeSB4YiBjCiAxOgotICAgICAgIGxkcmIgIHdcYywg
W1x4YiwgI1VBUlRfTFNSIDw8IEVBUkxZX1VBUlRfUkVHX1NISUZUXQorICAgICAgIGxkcmIgIHdc
YywgW1x4YiwgI1VBUlRfTFNSIDw8IENPTkZJR19FQVJMWV9VQVJUXzgyNTBfUkVHX1NISUZUXQog
ICAgICAgIGFuZCB3XGMsIHdcYywgI1VBUlRfTFNSX1RIUkUKICAgICAgICBjbXAgd1xjLCAjVUFS
VF9MU1JfVEhSRQogICAgICAgIGIubmUgMWIKQEAgLTM4LDcgKzM4LDcgQEAKICAqLwogLm1hY3Jv
IGVhcmx5X3VhcnRfdHJhbnNtaXQgeGIgd3QKICAgICAgICAgLyogVUFSVF9USFIgIHRyYW5zbWl0
IGhvbGRpbmcgKi8KLSAgICAgICAgc3RyYiAgIFx3dCwgW1x4YiwgI1VBUlRfVEhSIDw8IEVBUkxZ
X1VBUlRfUkVHX1NISUZUXQorICAgICAgICBzdHJiICAgXHd0LCBbXHhiLCAjVUFSVF9USFIgPDwg
Q09ORklHX0VBUkxZX1VBUlRfODI1MF9SRUdfU0hJRlRdCiAuZW5kbQogCiAvKgpkaWZmIC0tZ2l0
IGEveGVuL2FyY2gvYXJtL2FybTY0L2RlYnVnLXBsMDExLmluYyBiL3hlbi9hcmNoL2FybS9hcm02
NC9kZWJ1Zy1wbDAxMS5pbmMKaW5kZXggNTY5YzNkZmJjZi4uMzg1ZGVmZjQ5YiAxMDA2NDQKLS0t
IGEveGVuL2FyY2gvYXJtL2FybTY0L2RlYnVnLXBsMDExLmluYworKysgYi94ZW4vYXJjaC9hcm0v
YXJtNjQvZGVidWctcGwwMTEuaW5jCkBAIC0yNCw5ICsyNCw5IEBACiAgKiBjOiBzY3JhdGNoIHJl
Z2lzdGVyIG51bWJlcgogICovCiAubWFjcm8gZWFybHlfdWFydF9pbml0IHhiLCBjCi0gICAgICAg
IG1vdiAgIHhcYywgIyg3MzcyODAwIC8gRUFSTFlfUFJJTlRLX0JBVUQgJSAxNikKKyAgICAgICAg
bW92ICAgeFxjLCAjKDczNzI4MDAgLyBDT05GSUdfRUFSTFlfVUFSVF9QTDAxMV9CQVVEX1JBVEUg
JSAxNikKICAgICAgICAgc3RyaCAgd1xjLCBbXHhiLCAjMHgyOF0gICAgICAvKiAtPiBVQVJURkJS
RCAoQmF1ZCBkaXZpc29yIGZyYWN0aW9uKSAqLwotICAgICAgICBtb3YgICB4XGMsICMoNzM3Mjgw
MCAvIEVBUkxZX1BSSU5US19CQVVEIC8gMTYpCisgICAgICAgIG1vdiAgIHhcYywgIyg3MzcyODAw
IC8gQ09ORklHX0VBUkxZX1VBUlRfUEwwMTFfQkFVRF9SQVRFIC8gMTYpCiAgICAgICAgIHN0cmgg
IHdcYywgW1x4YiwgIzB4MjRdICAgICAgLyogLT4gVUFSVElCUkQgKEJhdWQgZGl2aXNvciBpbnRl
Z2VyKSAqLwogICAgICAgICBtb3YgICB4XGMsICMweDYwICAgICAgICAgICAgIC8qIDhuMSAqLwog
ICAgICAgICBzdHIgICB3XGMsIFtceGIsICMweDJDXSAgICAgIC8qIC0+IFVBUlRMQ1JfSCAoTGlu
ZSBjb250cm9sKSAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTY0L2RlYnVnLlMgYi94
ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWcuUwppbmRleCBiN2Y1M2FjMDUxLi43MWNhZDlkNzYyIDEw
MDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtNjQvZGVidWcuUworKysgYi94ZW4vYXJjaC9hcm0v
YXJtNjQvZGVidWcuUwpAQCAtMTksOCArMTksOCBAQAogCiAjaW5jbHVkZSA8YXNtL2Vhcmx5X3By
aW50ay5oPgogCi0jaWZkZWYgRUFSTFlfUFJJTlRLX0lOQwotI2luY2x1ZGUgRUFSTFlfUFJJTlRL
X0lOQworI2lmZGVmIENPTkZJR19FQVJMWV9QUklOVEtfSU5DCisjaW5jbHVkZSBDT05GSUdfRUFS
TFlfUFJJTlRLX0lOQwogI2VuZGlmCiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vYXJt
NjQvaGVhZC5TIGIveGVuL2FyY2gvYXJtL2FybTY0L2hlYWQuUwppbmRleCBlNTAxNWY5M2EyLi41
ZDQ0NjY3YmQ4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtNjQvaGVhZC5TCisrKyBiL3hl
bi9hcmNoL2FybS9hcm02NC9oZWFkLlMKQEAgLTQ1LDggKzQ1LDggQEAKICNkZWZpbmUgX19IRUFE
X0ZMQUdTICAgICAgICAgICAgKChfX0hFQURfRkxBR19QQUdFX1NJWkUgPDwgMSkgfCBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX19IRUFEX0ZMQUdfUEhZU19CQVNFIDw8IDMp
KQogCi0jaWYgKGRlZmluZWQgKENPTkZJR19FQVJMWV9QUklOVEspKSAmJiAoZGVmaW5lZCAoRUFS
TFlfUFJJTlRLX0lOQykpCi0jaW5jbHVkZSBFQVJMWV9QUklOVEtfSU5DCisjaWYgZGVmaW5lZChD
T05GSUdfRUFSTFlfUFJJTlRLKSAmJiBkZWZpbmVkKENPTkZJR19FQVJMWV9QUklOVEtfSU5DKQor
I2luY2x1ZGUgQ09ORklHX0VBUkxZX1BSSU5US19JTkMKICNlbmRpZgogCiAvKgpAQCAtMzYzLDcg
KzM2Myw3IEBAIEdMT0JBTChpbml0X3NlY29uZGFyeSkKIDE6CiAKICNpZmRlZiBDT05GSUdfRUFS
TFlfUFJJTlRLCi0gICAgICAgIGxkciAgIHgyMywgPUVBUkxZX1VBUlRfQkFTRV9BRERSRVNTIC8q
IHgyMyA6PSBVQVJUIGJhc2UgYWRkcmVzcyAqLworICAgICAgICBsZHIgICB4MjMsID1DT05GSUdf
RUFSTFlfVUFSVF9CQVNFX0FERFJFU1MgLyogeDIzIDo9IFVBUlQgYmFzZSBhZGRyZXNzICovCiAg
ICAgICAgIFBSSU5UKCItIENQVSAiKQogICAgICAgICBwcmludF9yZWcgeDI0CiAgICAgICAgIFBS
SU5UKCIgYm9vdGluZyAtXHJcbiIpCkBAIC04NDMsOCArODQzLDggQEAgRU5UUlkoc3dpdGNoX3R0
YnIpCiAgKiBDbG9iYmVycyB4MCAtIHgxCiAgKi8KIGluaXRfdWFydDoKLSAgICAgICAgbGRyICAg
eDIzLCA9RUFSTFlfVUFSVF9CQVNFX0FERFJFU1MKLSNpZmRlZiBFQVJMWV9QUklOVEtfSU5JVF9V
QVJUCisgICAgICAgIGxkciAgIHgyMywgPUNPTkZJR19FQVJMWV9VQVJUX0JBU0VfQUREUkVTUwor
I2lmZGVmIENPTkZJR19FQVJMWV9VQVJUX0lOSVQKICAgICAgICAgZWFybHlfdWFydF9pbml0IHgy
MywgMAogI2VuZGlmCiAgICAgICAgIFBSSU5UKCItIFVBUlQgZW5hYmxlZCAtXHJcbiIpCmRpZmYg
LS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2Vhcmx5X3ByaW50ay5oIGIveGVuL2luY2x1ZGUv
YXNtLWFybS9lYXJseV9wcmludGsuaAppbmRleCAwNzhjZjcwMWRjLi5kNTQ4NWRlY2ZhIDEwMDY0
NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2Vhcmx5X3ByaW50ay5oCisrKyBiL3hlbi9pbmNs
dWRlL2FzbS1hcm0vZWFybHlfcHJpbnRrLmgKQEAgLTE1LDcgKzE1LDcgQEAKIAogLyogbmVlZCB0
byBhZGQgdGhlIHVhcnQgYWRkcmVzcyBvZmZzZXQgaW4gcGFnZSB0byB0aGUgZml4bWFwIGFkZHJl
c3MgKi8KICNkZWZpbmUgRUFSTFlfVUFSVF9WSVJUVUFMX0FERFJFU1MgXAotICAgIChGSVhNQVBf
QUREUihGSVhNQVBfQ09OU09MRSkgKyhFQVJMWV9VQVJUX0JBU0VfQUREUkVTUyAmIH5QQUdFX01B
U0spKQorICAgIChGSVhNQVBfQUREUihGSVhNQVBfQ09OU09MRSkgKyAoQ09ORklHX0VBUkxZX1VB
UlRfQkFTRV9BRERSRVNTICYgflBBR0VfTUFTSykpCiAKICNlbmRpZiAvKiAhQ09ORklHX0VBUkxZ
X1BSSU5USyAqLwogCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9n
aXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:56:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:56:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZvB-0001QK-Gs; Sat, 04 Apr 2020 03:56:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZv9-0001Q9-MB
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:35 +0000
X-Inumbo-ID: 4676f95a-7628-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4676f95a-7628-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 03:56:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=wM260gdKGpYSyBPRT2wp8JVtrohXIU3LJGJi7bHPae4=; b=1E3qhQ72/t/izko0Z9MiCFx2FB
 4iONM6L2GVFvLvQzYvCT2XabVXibhV8GU9Tn01ob8MOUUvPJlnukTmeYW0qiVR7G51XFNy9CpWRqt
 U/O8kOG2QJdDo20y18abYbO2+7gD4zle1HG4AVTW+i8JNlOTGuqwJLMu96NFyizAXiZQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZv8-00057Y-0W
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZv7-000670-Vg
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZv7-000670-Vg@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:56:33 +0000
Subject: [Xen-changelog] [xen master] xen/arm: Configure early printk via
 Kconfig
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGY0MWViN2JhM2U1MDcwYjRhN2E0ZjU0Y2FjMjM2YmY5ZmY5M2Q3OTgKQXV0aG9yOiAg
ICAgQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CkF1dGhvckRhdGU6
IFR1ZSBNYXIgMzEgMTE6MzA6NDYgMjAyMCArMDEwMApDb21taXQ6ICAgICBKdWxpZW4gR3JhbGwg
PGpncmFsbEBhbWF6b24uY29tPgpDb21taXREYXRlOiBXZWQgQXByIDEgMTA6NDk6MzMgMjAyMCAr
MDEwMAoKICAgIHhlbi9hcm06IENvbmZpZ3VyZSBlYXJseSBwcmludGsgdmlhIEtjb25maWcKICAg
IAogICAgQXQgdGhlIG1vbWVudCwgZWFybHkgcHJpbnRrIGNhbiBvbmx5IGJlIGNvbmZpZ3VyZWQg
b24gdGhlIG1ha2UgY29tbWFuZAogICAgbGluZS4gSXQgaXMgbm90IHZlcnkgaGFuZHkgYmVjYXVz
ZSBhIHVzZXIgaGFzIHRvIHJlbW92ZSB0aGUgb3B0aW9uCiAgICBldmVyeXRpbWUgaXQgaXMgdXNp
bmcgYW5vdGhlciBjb21tYW5kIG90aGVyIHRoYW4gY29tcGlsaW5nIHRoZQogICAgaHlwZXJ2aXNv
ci4KICAgIAogICAgRnVydGhlcm1vcmUsIGVhcmx5IHByaW50ayBpcyBvbmUgb2YgdGhlIGZldyBv
ZGRzIG9uZSB0aGF0IGFyZSBub3QKICAgIHVzaW5nIEtjb25maWcuCiAgICAKICAgIFNvIHRoaXMg
aXMgYWJvdXQgdGltZSB0byBtb3ZlIGl0IHRvIEtjb25maWcuCiAgICAKICAgIFRoZSBuZXcga2Nv
bmZpZ3Mgb3B0aW9ucyBhbGxvdyBhIHVzZXIgdG8gZWF0aGVyIHNlbGVjdCBhIFVBUlQgZHJpdmVy
CiAgICB0byB1c2UgYXQgYm9vdCB0aW1lLCBhbmQgc2V0IHRoZSBwYXJhbWV0ZXJzLCBvciBpdCBp
cyBzdGlsbCBwb3NzaWJsZQogICAgdG8gc2VsZWN0IGEgcGxhdGZvcm0gd2hpY2ggd2lsbCBzZXQg
dGhlIHBhcmFtZXRlcnMuCiAgICAKICAgIElmIENPTkZJR19FQVJMWV9QUklOVEsgaXMgcHJlc2Vu
dCBpbiB0aGUgZW52aXJvbm1lbnQgb3Igb24gdGhlIG1ha2UKICAgIGNvbW1hbmQgbGluZSwgbWFr
ZSB3aWxsIHJldHVybiBhbiBlcnJvci4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogSnVsaWVuIEdy
YWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IEFudGhvbnkgUEVS
QVJEIDxhbnRob255LnBlcmFyZEBjaXRyaXguY29tPgogICAgVGVzdGVkLWJ5OiBTdGVmYW5vIFN0
YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CiAgICBSZXZpZXdlZC1ieTogSnVsaWVu
IEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KLS0tCiBkb2NzL21pc2MvYXJtL2Vhcmx5LXByaW50
ay50eHQgfCAgNzEgKysrKy0tLS0tLQogeGVuL0tjb25maWcuZGVidWcgICAgICAgICAgICAgIHwg
ICAyICsKIHhlbi9hcmNoL2FybS9LY29uZmlnLmRlYnVnICAgICB8IDI4OSArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gvYXJtL01ha2VmaWxlICAgICAg
ICAgIHwgICAyICstCiB4ZW4vYXJjaC9hcm0vUnVsZXMubWsgICAgICAgICAgfCAgNzQgKy0tLS0t
LS0tLS0KIHhlbi9hcmNoL2FybS9hcm0zMi9NYWtlZmlsZSAgICB8ICAgMiArLQogeGVuL2FyY2gv
YXJtL2FybTY0L01ha2VmaWxlICAgIHwgICAyICstCiB4ZW4vYXJjaC94ODYvS2NvbmZpZy5kZWJ1
ZyAgICAgfCAgIDAKIDggZmlsZXMgY2hhbmdlZCwgMzE5IGluc2VydGlvbnMoKyksIDEyMyBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2NzL21pc2MvYXJtL2Vhcmx5LXByaW50ay50eHQgYi9k
b2NzL21pc2MvYXJtL2Vhcmx5LXByaW50ay50eHQKaW5kZXggODllMDgxZTUxZS4uYWEyMjgyNjA3
NSAxMDA2NDQKLS0tIGEvZG9jcy9taXNjL2FybS9lYXJseS1wcmludGsudHh0CisrKyBiL2RvY3Mv
bWlzYy9hcm0vZWFybHktcHJpbnRrLnR4dApAQCAtMSw2NCArMSwzOSBAQAogSG93IHRvIGVuYWJs
ZSBlYXJseSBwcmludGsKIAotRWFybHkgcHJpbnRrIGNhbiBvbmx5IGJlIGVuYWJsZWQgaWYgZGVi
dWc9eS4gWW91IG1heSB3YW50IHRvIGVuYWJsZSBpdCBpZgoteW91IGFyZSBkZWJidWdpbmcgY29k
ZSB0aGF0IGV4ZWN1dGVzIGJlZm9yZSB0aGUgY29uc29sZSBpcyBpbml0aWFsaXplZC4KK0Vhcmx5
IHByaW50ayBjYW4gb25seSBiZSBlbmFibGVkIGlmIENPTkZJR19ERUJVRz15IG9yIGluIEVYUEVS
VCBtb2RlLiBZb3UKK21heSB3YW50IHRvIGVuYWJsZSBpdCBpZiB5b3UgYXJlIGRlYnVnZ2luZyBj
b2RlIHRoYXQgZXhlY3V0ZXMgYmVmb3JlIHRoZQorY29uc29sZSBpcyBpbml0aWFsaXplZC4KIAog
Tm90ZSB0aGF0IHNlbGVjdGluZyB0aGlzIG9wdGlvbiB3aWxsIGxpbWl0IFhlbiB0byBhIHNpbmds
ZSBVQVJUIGRlZmluaXRpb24uCiBBdHRlbXB0aW5nIHRvIGJvb3QgWGVuIGltYWdlIG9uIGEgZGlm
ZmVyZW50IHBsYXRmb3JtICp3aWxsIG5vdCB3b3JrKiwgc28gdGhpcwogb3B0aW9uIHNob3VsZCBu
b3QgYmUgZW5hYmxlIGZvciBYZW5zIHRoYXQgYXJlIGludGVuZGVkIHRvIGJlIHBvcnRhYmxlLgog
Ci1DT05GSUdfRUFSTFlfUFJJTlRLPTxJTkM+LDxCQVNFX0FERFJFU1M+LDxPVEhFUl9PUFRJT05T
PgorU2VsZWN0IG9uZSBvZiB0aGUgIkVhcmx5IHByaW50ayB2aWEgKiBVQVJUIiBpbiB0aGUgY2hv
aWNlIHBvc3NpYmxlIGZvcgorIkVhcmx5IHByaW50ayIgaW4gdGhlICJEZWJ1Z2dpbmcgb3B0aW9u
cyIgb2YgS2NvbmZpZy4gWW91IHdpbGwgdGhlbiBuZWVkIHRvCitzZXQgb3RoZXIgb3B0aW9ucywg
d2hpY2ggZGVwZW5kcyBvbiB0aGUgZHJpdmVyIHNlbGVjdGVkLgogCi08SU5DPiBhbmQgPEJBU0Vf
QUREUkVTUz4gYXJlIG1hbmRhdG9yeSBhcmd1bWVudHM6CitDT05GSUdfRUFSTFlfVUFSVF9CQVNF
X0FERFJFU1MgaXMgYSBtYW5kYXRvcnkgYXJndW1lbnQsIGl0IGlzIHRoZSBiYXNlCitwaHlzaWNh
bCBhZGRyZXNzIG9mIHRoZSBVQVJUIHRvIHVzZS4KIAotICAtIDxJTkM+IGlzIHRoZSBuYW1lIG9m
IHRoZSBkcml2ZXIsIHNlZSB4ZW4vYXJjaC9hcm0vYXJtezMyLDY0fS9kZWJ1Zy0qLmluYwotICAg
ICh3aGVyZSA8SU5DPiBjb3JyZXNwb25kcyB0byB0aGUgd2lsZGNhcmRlZCAqKS4KLSAgLSA8QkFT
RV9BRERSRVNTPiBpcyB0aGUgYmFzZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBVQVJUIHRvIHVz
ZQorT3RoZXIgb3B0aW9ucyBkZXBlbmRzIG9uIHRoZSBkcml2ZXIgc2VsZWN0ZWQ6CisgIC0gODI1
MAorICAgIC0gQ09ORklHX0VBUkxZX1VBUlRfODI1MF9SRUdfU0hJRlQgaXMsIG9wdGlvbmFsbHks
IHRoZSBsZWZ0LXNoaWZ0IHRvCisgICAgICBhcHBseSB0byB0aGUgcmVnaXN0ZXIgb2Zmc2V0cyB3
aXRoaW4gdGhlIHVhcnQuCisgIC0gcGwwMTEKKyAgICAtIENPTkZJR19FQVJMWV9VQVJUX1BMMDEx
X0JBVURfUkFURSBpcywgb3B0aW9uYWxseSwgYSBiYXVkIHJhdGUgd2hpY2gKKyAgICAgIHNob3Vs
ZCBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgVUFSVCBhdCBzdGFydCBvZiBkYXkuCiAKLTxPVEhF
Ul9PUFRJT05TPiB2YXJpZXMgZGVwZW5kaW5nIG9uIDxJTkM+OgorICAgICAgSWYgQ09ORklHX0VB
UkxZX1VBUlRfUEwwMTFfQkFVRF9SQVRFICBpcyBzZXQgdG8gMCB0aGVuIHRoZSBjb2RlIHdpbGwK
KyAgICAgIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSB0aGUgVUFSVCwgc28gdGhhdCBib290bG9hZGVy
IG9yIGZpcm13YXJlCisgICAgICBzZXR0aW5ncyBjYW4gYmUgdXNlZCBmb3IgbWF4aW11bSBjb21w
YXRpYmlsaXR5LgorICAtIHNjaWYKKyAgICAtIENPTkZJR19FQVJMWV9VQVJUX1NDSUZfVkVSU0lP
Tl8qIGlzLCBvcHRpb25hbGx5LCB0aGUgaW50ZXJmYWNlIHZlcnNpb24KKyAgICAgIG9mIHRoZSBV
QVJULiBEZWZhdWx0IHRvIHZlcnNpb24gTk9ORS4KIAotICAtIDgyNTAsPEJBU0VfQUREUkVTUz4s
PFJFR19TSElGVD4KLSAgICAtIDxSRUdfU0hJRlQ+IGlzLCBvcHRpb25hbGx5LCB0aGUgbGVmdC1z
aGlmdCB0byBhcHBseSB0byB0aGUKLSAgICAgIHJlZ2lzdGVyIG9mZnNldHMgd2l0aGluIHRoZSB1
YXJ0LgotICAtIHBsMDExLDxCQVNFX0FERFJFU1M+LDxCQVVEX1JBVEU+Ci0gICAgLSA8QkFVRF9S
QVRFPiBpcywgb3B0aW9uYWxseSBhIGJhdWQgcmF0ZSB3aGljaCBzaG91bGQgYmUgdXNlZCB0bwot
ICAgICAgY29uZmlndXJlIHRoZSBVQVJUIGF0IHN0YXJ0IG9mIGRheS4KLQotICAgICAgSWYgPEJB
VURfUkFURT4gaXMgbm90IGdpdmVuIHRoZW4gdGhlIGNvZGUgd2lsbCBub3QgdHJ5IHRvCi0gICAg
ICBpbml0aWFsaXplIHRoZSBVQVJULCBzbyB0aGF0IGJvb3Rsb2FkZXIgb3IgZmlybXdhcmUgc2V0
dGluZ3MgY2FuCi0gICAgIGJlIHVzZWQgZm9yIG1heGltdW0gY29tcGF0aWJpbGl0eS4KLSAgLSBz
Y2lmLDxCQVNFX0FERFJFU1M+LDxWRVJTSU9OPgotICAgIC0gU0NJRjxWRVJTSU9OPiBpcywgb3B0
aW9uYWxseSwgdGhlIGludGVyZmFjZSB2ZXJzaW9uIG9mIHRoZSBVQVJULgotCi0gICAgICBJZiA8
VkVSU0lPTj4gaXMgbm90IGdpdmVuIHRoZW4gdGhlIGRlZmF1bHQgaW50ZXJmYWNlIHZlcnNpb24g
KFNDSUYpCi0gICAgICB3aWxsIGJlIHVzZWQuCiAgIC0gRm9yIGFsbCBvdGhlciB1YXJ0cyB0aGVy
ZSBhcmUgbm8gYWRkaXRpb25hbCBvcHRpb25zLgogCiBBcyBhIGNvbnZlbmllbmNlIGl0IGlzIGFs
c28gcG9zc2libGUgdG8gc2VsZWN0IGZyb20gYSBsaXN0IG9mCi1wcmVkZWZpbmVkIGNvbmZpZ3Vy
YXRpb25zIHVzaW5nIENPTkZJR19FQVJMWV9QUklOVEs9bWFjaCB3aGVyZSBtYWNoIGlzCi10aGUg
bmFtZSBvZiB0aGUgbWFjaGluZToKLQotICAtIGJyY206IHByaW50ayB3aXRoIDgyNTAgb24gQnJv
YWRjb20gNzQ0NUQwIGJvYXJkcyB3aXRoIEExNSBwcm9jZXNzb3JzLgotICAtIGRyYTc6IHByaW50
ayB3aXRoIDgyNTAgb24gRFJBNyBwbGF0Zm9ybQotICAtIGV4eW5vczUyNTA6IHByaW50ayB3aXRo
IHRoZSBzZWNvbmQgVUFSVAotICAtIGZhc3Rtb2RlbDogcHJpbnRrIG9uIEFSTSBGYXN0bW9kZWwg
c29mdHdhcmUgZW11bGF0b3JzCi0gIC0gaGlrZXk5NjA6IHByaW50ayB3aXRoIHBsMDExIHdpdGgg
SGlrZXkgOTYwCi0gIC0ganVubzogcHJpbnRrIHdpdGggcGwwMTEgb24gSnVubyBwbGF0Zm9ybQot
ICAtIGxhZ2VyOiBwcmludGsgd2l0aCBTQ0lGMCBvbiBSZW5lc2FzIExhZ2VyIGJvYXJkIChSLUNh
ciBIMiBwcm9jZXNzb3IpCi0gIC0gbWlkd2F5OiBwcmludGsgd2l0aCB0aGUgcGwwMTEgb24gQ2Fs
eGVkYSBNaWR3YXkgcHJvY2Vzc29ycwotICAtIG12ZWJ1OiBwcmludGsgd2l0aCB0aGUgTVZFQlUg
Zm9yIE1hcnZlbGwgQXJtYWRhIDM3MDAgU29DcwotICAtIG9tYXA1NDMyOiBwcmludGsgd2l0aCBV
QVJUMyBvbiBUSSBPTUFQNTQzMiBwcm9jZXNzb3JzCi0gIC0gcmNhcjM6IHByaW50ayB3aXRoIFND
SUYyIG9uIFJlbmVzYXMgUi1DYXIgR2VuMyBwcm9jZXNzb3JzCi0gIC0gc2VhdHRsZTogcHJpbnRr
IHdpdGggcGwwMTEgZm9yIEFNRCBTZWF0dGxlIHByb2Nlc3NvcgotICAtIHN1bjZpOiBwcmludGsg
d2l0aCA4MjUwIG9uIEFsbHdpbm5lciBBMzEgcHJvY2Vzc29ycwotICAtIHN1bjdpOiBwcmludGsg
d2l0aCA4MjUwIG9uIEFsbHdpbm5lciBBMjAgcHJvY2Vzc29ycwotICAtIHRodW5kZXJ4OiBwcmlu
dGsgd2l0aCBwbDAxMSBmb3IgQ2F2aXVtIFRodW5kZXJYIHByb2Nlc3NvcgotICAtIHZleHByZXNz
OiBwcmludGsgd2l0aCBwbDAxMSBmb3IgdmVyc2F0aWxlIGV4cHJlc3MKLSAgLSB4Z2VuZS1tY2Rp
dml0dDogcHJpbnRrIHdpdGggODIwIG9uIFhnZW5lIG1jZGl2aXR0IHBsYXRmb3JtCi0gIC0geGdl
bmUtc3Rvcm06IHByaW50ayB3aXRoIDgyMCBvbiBYZ2VuZSBzdG9ybSBwbGF0Zm9ybQotICAtIHp5
bnFtcDogcHJpbnRrIHdpdGggQ2FkZW5jZSBVQVJUIGZvciBYaWxpbnggWnlucU1QIFNvQ3MKLQot
VGhlc2Ugc2V0dGluZ3MgYXJlIGlzIGhhcmRjb2RlZCBpbiB4ZW4vYXJjaC9hcm0vUnVsZXMubWss
Ci1zZWUgdGhlcmUgd2hlbiBhZGRpbmcgc3VwcG9ydCBmb3IgbmV3IG1hY2hpbmVzLgorcHJlZGVm
aW5lZCBjb25maWd1cmF0aW9ucyBhdmFpbGFibGUgaW4gdGhlIGxpc3Qgb2YgY2hvaWNlIGZvciAi
RWFybHkKK3ByaW50ayIgZm9yIHNwZWNpZmljIHBsYXRmb3JtLgogCiBCeSBkZWZhdWx0IGVhcmx5
IHByaW50ayBpcyBkaXNhYmxlZC4KZGlmZiAtLWdpdCBhL3hlbi9LY29uZmlnLmRlYnVnIGIveGVu
L0tjb25maWcuZGVidWcKaW5kZXggYjM1MTFlODFhMi4uZWU2ZWUzM2I2OSAxMDA2NDQKLS0tIGEv
eGVuL0tjb25maWcuZGVidWcKKysrIGIveGVuL0tjb25maWcuZGVidWcKQEAgLTEyOCw2ICsxMjgs
OCBAQCBjb25maWcgWE1FTV9QT09MX1BPSVNPTgogCSAgUG9pc29uIGZyZWUgYmxvY2tzIHdpdGgg
MHhBQSBieXRlcyBhbmQgdmVyaWZ5IHRoZW0gd2hlbiBhIGJsb2NrIGlzCiAJICBhbGxvY2F0ZWQg
aW4gb3JkZXIgdG8gc3BvdCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMuCiAKK3NvdXJjZSAiYXJjaC8k
KFNSQ0FSQ0gpL0tjb25maWcuZGVidWciCisKIGVuZGlmICMgREVCVUcgfHwgRVhQRVJUCiAKIGVu
ZG1lbnUKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9LY29uZmlnLmRlYnVnIGIveGVuL2FyY2gv
YXJtL0tjb25maWcuZGVidWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u
MzVjY2QxMzI3MwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL2FybS9LY29uZmlnLmRlYnVn
CkBAIC0wLDAgKzEsMjg5IEBACitjaG9pY2UKKwlib29sICJFYXJseSBwcmludGsiCisJb3B0aW9u
YWwKKwloZWxwCisJCVlvdSBtYXkgd2FudCB0byBlbmFibGUgZWFybHkgcHJpbnRrIGlmIHlvdSBh
cmUgZGVidWdnaW5nIGNvZGUKKwkJdGhhdCBleGVjdXRlcyBiZWZvcmUgdGhlIGNvbnNvbGUgaXMg
aW5pdGlhbGl6ZWQuCisKKwkJTm90ZSB0aGF0IHNlbGVjdGluZyB0aGlzIG9wdGlvbiB3aWxsIGxp
bWl0IFhlbiB0byBhIHNpbmdsZSBVQVJUCisJCWRlZmluaXRpb24uIEF0dGVtcHRpbmcgdG8gYm9v
dCBYZW4gaW1hZ2Ugb24gYSBkaWZmZXJlbnQKKwkJcGxhdGZvcm0gKndpbGwgbm90IHdvcmsqLCBz
byB0aGlzIG9wdGlvbiBzaG91bGQgbm90IGJlIGVuYWJsZQorCQlmb3IgWGVucyB0aGF0IGFyZSBp
bnRlbmRlZCB0byBiZSBwb3J0YWJsZS4KKworCQlDaG9vc2Ugb25lIG9mIHRoZSBVQVJUIGRyaXZl
cnMgZm9yIGVhcmx5IHByaW50aywgdGhlbiB5b3UnbGwKKwkJaGF2ZSB0byBzcGVjaWZ5IHRoZSBw
YXJhbWV0ZXJzLCBsaWtlIHRoZSBiYXNlIGFkZHJlc3MuCisKKwkJRGVwcmVjYXRlZDogQWx0ZXJu
YXRpdmVseSwgdGhlcmUgYXJlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMKKwkJd2hpY2ggd2ls
bCBoYXZlIGRlZmF1bHQgdmFsdWVzIGZvciB0aGUgdmFyaW91cyBwYXJhbWV0ZXJzLiBCdXQKKwkJ
c3VjaCBvcHRpb24gd2lsbCBzb29uIGJlIHJlbW92ZWQuCisKKwljb25maWcgRUFSTFlfVUFSVF9D
SE9JQ0VfODI1MAorCQlzZWxlY3QgRUFSTFlfVUFSVF84MjUwCisJCWJvb2wgIkVhcmx5IHByaW50
ayB2aWEgODI1MCBVQVJUIgorCQloZWxwCisJCQlTYXkgWSBoZXJlIGlmIHlvdSB3aXNoIHRoZSBl
YXJseSBwcmludGsgdG8gZGlyZWN0IHRoZWlyCisJCQlvdXRwdXQgdG8gYSA4MjUwIFVBUlQuIFlv
dSBjYW4gdXNlIHRoaXMgb3B0aW9uIHRvCisJCQlwcm92aWRlIHRoZSBwYXJhbWV0ZXJzIGZvciB0
aGUgODI1MCBVQVJUIHJhdGhlciB0aGFuCisJCQlzZWxlY3Rpbmcgb25lIG9mIHRoZSBwbGF0Zm9y
bSBzcGVjaWZpYyBvcHRpb25zIGJlbG93IGlmCisJCQl5b3Uga25vdyB0aGUgcGFyYW1ldGVycyBm
b3IgdGhlIHBvcnQuCisKKwkJCVRoaXMgb3B0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHRoZSBwbGF0
Zm9ybSBzcGVjaWZpYworCQkJb3B0aW9uczsgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMg
YXJlIGRlcHJlY2F0ZWQKKwkJCWFuZCB3aWxsIHNvb24gYmUgcmVtb3ZlZC4KKwljb25maWcgRUFS
TFlfVUFSVF9DSE9JQ0VfQ0FERU5DRQorCQlzZWxlY3QgRUFSTFlfVUFSVF9DQURFTkNFCisJCWRl
cGVuZHMgb24gQVJNXzY0CisJCWJvb2wgIkVhcmx5IHByaW50ayB2aWEgQ2FkZW5jZSBVQVJUIgor
CQloZWxwCisJCQlTYXkgWSBoZXJlIGlmIHlvdSB3aXNoIHRoZSBlYXJseSBwcmludGsgdG8gZGly
ZWN0IHRoZWlyCisJCQlvdXRwdXQgdG8gYSBDYWRlbmNlIFVBUlQuIFlvdSBjYW4gdXNlIHRoaXMg
b3B0aW9uIHRvCisJCQlwcm92aWRlIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgQ2FkZW5jZSBVQVJU
IHJhdGhlciB0aGFuCisJCQlzZWxlY3Rpbmcgb25lIG9mIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBv
cHRpb25zIGJlbG93IGlmCisJCQl5b3Uga25vdyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIHBvcnQu
CisKKwkJCVRoaXMgb3B0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHRoZSBwbGF0Zm9ybSBzcGVjaWZp
YworCQkJb3B0aW9uczsgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMgYXJlIGRlcHJlY2F0
ZWQKKwkJCWFuZCB3aWxsIHNvb24gYmUgcmVtb3ZlZC4KKwljb25maWcgRUFSTFlfVUFSVF9DSE9J
Q0VfRVhZTk9TNDIxMAorCQlzZWxlY3QgRUFSTFlfVUFSVF9FWFlOT1M0MjEwCisJCWRlcGVuZHMg
b24gQVJNXzMyCisJCWJvb2wgIkVhcmx5IHByaW50ayB2aWEgRXh5bm9zNDIxMCBVQVJUIgorCQlo
ZWxwCisJCQlTYXkgWSBoZXJlIGlmIHlvdSB3aXNoIHRoZSBlYXJseSBwcmludGsgdG8gZGlyZWN0
IHRoZWlyCisJCQlvdXRwdXQgdG8gYSBFeHlub3MgNDIxMCBVQVJULiBZb3UgY2FuIHVzZSB0aGlz
IG9wdGlvbiB0bworCQkJcHJvdmlkZSB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIEV4eW5vcyA0MjEw
IFVBUlQgcmF0aGVyIHRoYW4KKwkJCXNlbGVjdGluZyBvbmUgb2YgdGhlIHBsYXRmb3JtIHNwZWNp
ZmljIG9wdGlvbnMgYmVsb3cgaWYKKwkJCXlvdSBrbm93IHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUg
cG9ydC4KKworCQkJVGhpcyBvcHRpb24gaXMgcHJlZmVycmVkIG92ZXIgdGhlIHBsYXRmb3JtIHNw
ZWNpZmljCisJCQlvcHRpb25zOyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgb3B0aW9ucyBhcmUgZGVw
cmVjYXRlZAorCQkJYW5kIHdpbGwgc29vbiBiZSByZW1vdmVkLgorCWNvbmZpZyBFQVJMWV9VQVJU
X0NIT0lDRV9NRVNPTgorCQlzZWxlY3QgRUFSTFlfVUFSVF9NRVNPTgorCQlkZXBlbmRzIG9uIEFS
TV82NAorCQlib29sICJFYXJseSBwcmludGsgdmlhIE1FU09OIFVBUlQiCisJCWhlbHAKKwkJCVNh
eSBZIGhlcmUgaWYgeW91IHdpc2ggdGhlIGVhcmx5IHByaW50ayB0byBkaXJlY3QgdGhlaXIKKwkJ
CW91dHB1dCB0byBhIE1FU09OIFVBUlQuIFlvdSBjYW4gdXNlIHRoaXMgb3B0aW9uIHRvCisJCQlw
cm92aWRlIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgTUVTT04gVUFSVCByYXRoZXIgdGhhbgorCQkJ
c2VsZWN0aW5nIG9uZSBvZiB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgb3B0aW9ucyBiZWxvdyBpZgor
CQkJeW91IGtub3cgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBwb3J0LgorCisJCQlUaGlzIG9wdGlv
biBpcyBwcmVmZXJyZWQgb3ZlciB0aGUgcGxhdGZvcm0gc3BlY2lmaWMKKwkJCW9wdGlvbnM7IHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYyBvcHRpb25zIGFyZSBkZXByZWNhdGVkCisJCQlhbmQgd2lsbCBz
b29uIGJlIHJlbW92ZWQuCisJY29uZmlnIEVBUkxZX1VBUlRfQ0hPSUNFX01WRUJVCisJCXNlbGVj
dCBFQVJMWV9VQVJUX01WRUJVCisJCWRlcGVuZHMgb24gQVJNXzY0CisJCWJvb2wgIkVhcmx5IHBy
aW50ayB2aWEgTVZFQlUgVUFSVCIKKwkJaGVscAorCQkJU2F5IFkgaGVyZSBpZiB5b3Ugd2lzaCB0
aGUgZWFybHkgcHJpbnRrIHRvIGRpcmVjdCB0aGVpcgorCQkJb3V0cHV0IHRvIGEgTVZFQlUgVUFS
VC4gWW91IGNhbiB1c2UgdGhpcyBvcHRpb24gdG8KKwkJCXByb3ZpZGUgdGhlIHBhcmFtZXRlcnMg
Zm9yIHRoZSBNVkVCVSBVQVJUIHJhdGhlciB0aGFuCisJCQlzZWxlY3Rpbmcgb25lIG9mIHRoZSBw
bGF0Zm9ybSBzcGVjaWZpYyBvcHRpb25zIGJlbG93IGlmCisJCQl5b3Uga25vdyB0aGUgcGFyYW1l
dGVycyBmb3IgdGhlIHBvcnQuCisKKwkJCVRoaXMgb3B0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHRo
ZSBwbGF0Zm9ybSBzcGVjaWZpYworCQkJb3B0aW9uczsgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9w
dGlvbnMgYXJlIGRlcHJlY2F0ZWQKKwkJCWFuZCB3aWxsIHNvb24gYmUgcmVtb3ZlZC4KKwljb25m
aWcgRUFSTFlfVUFSVF9DSE9JQ0VfUEwwMTEKKwkJc2VsZWN0IEVBUkxZX1VBUlRfUEwwMTEKKwkJ
Ym9vbCAiRWFybHkgcHJpbnRrIHZpYSBQTDAxMSBVQVJUIgorCQloZWxwCisJCQlTYXkgWSBoZXJl
IGlmIHlvdSB3aXNoIHRoZSBlYXJseSBwcmludGsgdG8gZGlyZWN0IHRoZWlyCisJCQlvdXRwdXQg
dG8gYSBQTDAxMSBVQVJULiBZb3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0bworCQkJcHJvdmlkZSB0
aGUgcGFyYW1ldGVycyBmb3IgdGhlIFBMMDExIFVBUlQgcmF0aGVyIHRoYW4KKwkJCXNlbGVjdGlu
ZyBvbmUgb2YgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMgYmVsb3cgaWYKKwkJCXlvdSBr
bm93IHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcG9ydC4KKworCQkJVGhpcyBvcHRpb24gaXMgcHJl
ZmVycmVkIG92ZXIgdGhlIHBsYXRmb3JtIHNwZWNpZmljCisJCQlvcHRpb25zOyB0aGUgcGxhdGZv
cm0gc3BlY2lmaWMgb3B0aW9ucyBhcmUgZGVwcmVjYXRlZAorCQkJYW5kIHdpbGwgc29vbiBiZSBy
ZW1vdmVkLgorCWNvbmZpZyBFQVJMWV9VQVJUX0NIT0lDRV9TQ0lGCisJCXNlbGVjdCBFQVJMWV9V
QVJUX1NDSUYKKwkJYm9vbCAiRWFybHkgcHJpbnRrIHZpYSBTQ0lGIFVBUlQiCisJCWhlbHAKKwkJ
CVNheSBZIGhlcmUgaWYgeW91IHdpc2ggdGhlIGVhcmx5IHByaW50ayB0byBkaXJlY3QgdGhlaXIK
KwkJCW91dHB1dCB0byBhIFNDSUYgVUFSVC4gWW91IGNhbiB1c2UgdGhpcyBvcHRpb24gdG8KKwkJ
CXByb3ZpZGUgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBTQ0lGIFVBUlQgcmF0aGVyIHRoYW4KKwkJ
CXNlbGVjdGluZyBvbmUgb2YgdGhlIHBsYXRmb3JtIHNwZWNpZmljIG9wdGlvbnMgYmVsb3cgaWYK
KwkJCXlvdSBrbm93IHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgcG9ydC4KKworCQkJVGhpcyBvcHRp
b24gaXMgcHJlZmVycmVkIG92ZXIgdGhlIHBsYXRmb3JtIHNwZWNpZmljCisJCQlvcHRpb25zOyB0
aGUgcGxhdGZvcm0gc3BlY2lmaWMgb3B0aW9ucyBhcmUgZGVwcmVjYXRlZAorCQkJYW5kIHdpbGwg
c29vbiBiZSByZW1vdmVkLgorCisJY29uZmlnIEVBUkxZX1BSSU5US19CUkNNCisJCWJvb2wgIkVh
cmx5IHByaW50ayB3aXRoIDgyNTAgb24gQnJvYWRjb20gNzQ0NUQwIGJvYXJkcyB3aXRoIEExNSBw
cm9jZXNzb3JzIgorCQlzZWxlY3QgRUFSTFlfVUFSVF84MjUwCisJY29uZmlnIEVBUkxZX1BSSU5U
S19EUkE3CisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRoIDgyNTAgb24gRFJBNyBwbGF0Zm9ybSIK
KwkJc2VsZWN0IEVBUkxZX1VBUlRfODI1MAorCWNvbmZpZyBFQVJMWV9QUklOVEtfRVhZTk9TNTI1
MAorCQlib29sICJFYXJseSBwcmludGsgd2l0aCB0aGUgc2Vjb25kIFVBUlQgb24gRXh5bm9zNTI1
MCIKKwkJc2VsZWN0IEVBUkxZX1VBUlRfRVhZTk9TNDIxMAorCQlkZXBlbmRzIG9uIEFSTV8zMgor
CWNvbmZpZyBFQVJMWV9QUklOVEtfRkFTVE1PREVMCisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRo
IHBsMDExIG9uIEFSTSBGYXN0bW9kZWwgc29mdHdhcmUgZW11bGF0b3JzIgorCQlzZWxlY3QgRUFS
TFlfVUFSVF9QTDAxMQorCWNvbmZpZyBFQVJMWV9QUklOVEtfSElLRVk5NjAKKwkJYm9vbCAiRWFy
bHkgcHJpbnRrIHdpdGggcGwwMTEgd2l0aCBIaWtleSA5NjAiCisJCXNlbGVjdCBFQVJMWV9VQVJU
X1BMMDExCisJY29uZmlnIEVBUkxZX1BSSU5US19KVU5PCisJCWJvb2wgIkVhcmx5IHByaW50ayB3
aXRoIHBsMDExIG9uIEp1bm8gcGxhdGZvcm0iCisJCXNlbGVjdCBFQVJMWV9VQVJUX1BMMDExCisJ
Y29uZmlnIEVBUkxZX1BSSU5US19MQUdFUgorCQlib29sICJFYXJseSBwcmludGsgd2l0aCBTQ0lG
MCBvbiBSZW5lc2FzIExhZ2VyIGJvYXJkIChSLUNhciBIMiBwcm9jZXNzb3IpIgorCQlzZWxlY3Qg
RUFSTFlfVUFSVF9TQ0lGCisJY29uZmlnIEVBUkxZX1BSSU5US19NSURXQVkKKwkJYm9vbCAiRWFy
bHkgcHJpbnRrIHdpdGggcGwwMTEgb24gQ2FseGVkYSBNaWR3YXkgcHJvY2Vzc29ycyIKKwkJc2Vs
ZWN0IEVBUkxZX1VBUlRfUEwwMTEKKwljb25maWcgRUFSTFlfUFJJTlRLX01WRUJVCisJCWJvb2wg
IkVhcmx5IHByaW50ayB3aXRoIE1WRUJVIGZvciBNYXJ2ZWxsIEFybWFkYSAzNzAwIFNvQ3MiCisJ
CXNlbGVjdCBFQVJMWV9VQVJUX01WRUJVCisJCWRlcGVuZHMgb24gQVJNXzY0CisJY29uZmlnIEVB
UkxZX1BSSU5US19PTUFQNTQzMgorCQlib29sICJFYXJseSBwcmludGsgd2l0aCBVQVJUMyBvbiBU
SSBPTUFQNTQzMiBwcm9jZXNzb3JzIgorCQlzZWxlY3QgRUFSTFlfVUFSVF84MjUwCisJY29uZmln
IEVBUkxZX1BSSU5US19SQ0FSMworCQlib29sICJFYXJseSBwcmludGsgd2l0aCBTQ0lGMiBvbiBS
ZW5lc2FzIFItQ2FyIEdlbjMgcHJvY2Vzc29ycyIKKwkJc2VsZWN0IEVBUkxZX1VBUlRfU0NJRgor
CWNvbmZpZyBFQVJMWV9QUklOVEtfU0VBVFRMRQorCQlib29sICJFYXJseSBwcmludGsgd2l0aCBw
bDAxMSBmb3IgQU1EIFNlYXR0bGUgcHJvY2Vzc29yIgorCQlzZWxlY3QgRUFSTFlfVUFSVF9QTDAx
MQorCWNvbmZpZyBFQVJMWV9QUklOVEtfU1VONkkKKwkJYm9vbCAiRWFybHkgcHJpbnRrIHdpdGgg
ODI1MCBvbiBBbGx3aW5uZXIgQTMxIHByb2Nlc3NvcnMiCisJCXNlbGVjdCBFQVJMWV9VQVJUXzgy
NTAKKwljb25maWcgRUFSTFlfUFJJTlRLX1NVTjdJCisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRo
IDgyNTAgb24gQWxsd2lubmVyIEEyMCBwcm9jZXNzb3JzIgorCQlzZWxlY3QgRUFSTFlfVUFSVF84
MjUwCisJY29uZmlnIEVBUkxZX1BSSU5US19USFVOREVSWAorCQlib29sICJFYXJseSBwcmludGsg
d2l0aCBwbDAxMSBmb3IgQ2F2aXVtIFRodW5kZXJYIHByb2Nlc3NvciIKKwkJc2VsZWN0IEVBUkxZ
X1VBUlRfUEwwMTEKKwkJZGVwZW5kcyBvbiBBUk1fNjQKKwljb25maWcgRUFSTFlfUFJJTlRLX1ZF
WFBSRVNTCisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRoIHBsMDExIGZvciB2ZXJzYXRpbGUgZXhw
cmVzcyIKKwkJc2VsZWN0IEVBUkxZX1VBUlRfUEwwMTEKKwljb25maWcgRUFSTFlfUFJJTlRLX1hH
RU5FX01DRElWSVRUCisJCWJvb2wgIkVhcmx5IHByaW50ayB3aXRoIDgyMCBvbiBYZ2VuZSBtY2Rp
dml0dCBwbGF0Zm9ybSIKKwkJc2VsZWN0IEVBUkxZX1VBUlRfODI1MAorCWNvbmZpZyBFQVJMWV9Q
UklOVEtfWEdFTkVfU1RPUk0KKwkJYm9vbCAiRWFybHkgcHJpbnRrIHdpdGggODIwIG9uIFhnZW5l
IHN0b3JtIHBsYXRmb3JtIgorCQlzZWxlY3QgRUFSTFlfVUFSVF84MjUwCisJY29uZmlnIEVBUkxZ
X1BSSU5US19aWU5RTVAKKwkJYm9vbCAiRWFybHkgcHJpbnRrIHdpdGggQ2FkZW5jZSBVQVJUIGZv
ciBYaWxpbnggWnlucU1QIFNvQ3MiCisJCXNlbGVjdCBFQVJMWV9VQVJUX0NBREVOQ0UKKwkJZGVw
ZW5kcyBvbiBBUk1fNjQKK2VuZGNob2ljZQorCisKK2NvbmZpZyBFQVJMWV9VQVJUXzgyNTAKKwlz
ZWxlY3QgRUFSTFlfUFJJTlRLCisJYm9vbAorY29uZmlnIEVBUkxZX1VBUlRfQ0FERU5DRQorCXNl
bGVjdCBFQVJMWV9QUklOVEsKKwlib29sCitjb25maWcgRUFSTFlfVUFSVF9FWFlOT1M0MjEwCisJ
c2VsZWN0IEVBUkxZX1BSSU5USworCWJvb2wKK2NvbmZpZyBFQVJMWV9VQVJUX01FU09OCisJc2Vs
ZWN0IEVBUkxZX1BSSU5USworCWJvb2wKK2NvbmZpZyBFQVJMWV9VQVJUX01WRUJVCisJc2VsZWN0
IEVBUkxZX1BSSU5USworCWJvb2wKK2NvbmZpZyBFQVJMWV9VQVJUX1BMMDExCisJc2VsZWN0IEVB
UkxZX1BSSU5USworCWJvb2wKK2NvbmZpZyBFQVJMWV9VQVJUX1NDSUYKKwlzZWxlY3QgRUFSTFlf
UFJJTlRLCisJYm9vbAorCitjb25maWcgRUFSTFlfUFJJTlRLCisJYm9vbAorCitjb25maWcgRUFS
TFlfVUFSVF9CQVNFX0FERFJFU1MKKwlkZXBlbmRzIG9uIEVBUkxZX1BSSU5USworCWhleCAiRWFy
bHkgcHJpbnRrLCBwaHlzaWNhbCBiYXNlIGFkZHJlc3Mgb2YgZGVidWcgVUFSVCIKKwlyYW5nZSAw
eDAgMHhmZmZmZmZmZiBpZiBBUk1fMzIKKwlkZWZhdWx0IDB4RjA0MEFCMDAgaWYgRUFSTFlfUFJJ
TlRLX0JSQ00KKwlkZWZhdWx0IDB4NDgwNkEwMDAgaWYgRUFSTFlfUFJJTlRLX0RSQTcKKwlkZWZh
dWx0IDB4MWMwOTAwMDAgaWYgRUFSTFlfUFJJTlRLX0ZBU1RNT0RFTAorCWRlZmF1bHQgMHgxMmMy
MDAwMCBpZiBFQVJMWV9QUklOVEtfRVhZTk9TNTI1MAorCWRlZmF1bHQgMHhmZmYzMjAwMCBpZiBF
QVJMWV9QUklOVEtfSElLRVk5NjAKKwlkZWZhdWx0IDB4N2ZmODAwMDAgaWYgRUFSTFlfUFJJTlRL
X0pVTk8KKwlkZWZhdWx0IDB4ZTZlNjAwMDAgaWYgRUFSTFlfUFJJTlRLX0xBR0VSCisJZGVmYXVs
dCAweGZmZjM2MDAwIGlmIEVBUkxZX1BSSU5US19NSURXQVkKKwlkZWZhdWx0IDB4ZDAwMTIwMDAg
aWYgRUFSTFlfUFJJTlRLX01WRUJVCisJZGVmYXVsdCAweDQ4MDIwMDAwIGlmIEVBUkxZX1BSSU5U
S19PTUFQNTQzMgorCWRlZmF1bHQgMHhlNmU4ODAwMCBpZiBFQVJMWV9QUklOVEtfUkNBUjMKKwlk
ZWZhdWx0IDB4ZTEwMTAwMDAgaWYgRUFSTFlfUFJJTlRLX1NFQVRUTEUKKwlkZWZhdWx0IDB4MDFj
MjgwMDAgaWYgRUFSTFlfUFJJTlRLX1NVTjZJCisJZGVmYXVsdCAweDAxYzI4MDAwIGlmIEVBUkxZ
X1BSSU5US19TVU43SQorCWRlZmF1bHQgMHg4N2UwMjQwMDAwMDAgaWYgRUFSTFlfUFJJTlRLX1RI
VU5ERVJYCisJZGVmYXVsdCAweDFjMDkwMDAwIGlmIEVBUkxZX1BSSU5US19WRVhQUkVTUworCWRl
ZmF1bHQgMHgxYzAyMTAwMCBpZiBFQVJMWV9QUklOVEtfWEdFTkVfTUNESVZJVFQKKwlkZWZhdWx0
IDB4MWMwMjAwMDAgaWYgRUFSTFlfUFJJTlRLX1hHRU5FX1NUT1JNCisJZGVmYXVsdCAweGZmMDAw
MDAwIGlmIEVBUkxZX1BSSU5US19aWU5RTVAKKworY29uZmlnIEVBUkxZX1VBUlRfUEwwMTFfQkFV
RF9SQVRFCisJZGVwZW5kcyBvbiBFQVJMWV9VQVJUX1BMMDExCisJaW50ICJFYXJseSBwcmludGsg
VUFSVCBiYXVkIHJhdGUgZm9yIHBsMDExIgorCWhlbHAKKwkJT3B0aW9uYWxseSBzZXRzIHRoZSBi
YXVkIHJhdGUgd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gY29uZmlndXJlCisJCXRoZSBVQVJUIGF0
IHN0YXJ0IG9mIGRheS4KKworCQlJZiBFQVJMWV9VQVJUX1BMMDExX0JBVURfUkFURSBpcyBzZXQg
dG8gMCB0aGVuIHRoZSBjb2RlIHdpbGwKKwkJbm90IHRyeSB0byBpbml0aWFsaXplIHRoZSBVQVJU
LCBzbyB0aGF0IGJvb3Rsb2FkZXIgb3IgZmlybXdhcmUKKwkJc2V0dGluZ3MgY2FuIGJlIHVzZWQg
Zm9yIG1heGltdW0gY29tcGF0aWJpbGl0eS4KKworCWRlZmF1bHQgMTE1MjAwIGlmIEVBUkxZX1BS
SU5US19GQVNUTU9ERUwKKwlkZWZhdWx0IDAKKworY29uZmlnIEVBUkxZX1VBUlRfSU5JVAorCWRl
cGVuZHMgb24gRUFSTFlfVUFSVF9QTDAxMSAmJiBFQVJMWV9VQVJUX1BMMDExX0JBVURfUkFURSAh
PSAwCisJZGVmX2Jvb2wgeQorCitjb25maWcgRUFSTFlfVUFSVF84MjUwX1JFR19TSElGVAorCWRl
cGVuZHMgb24gRUFSTFlfVUFSVF84MjUwCisJaW50ICJFYXJseSBwcmludGssIGxlZnQtc2hpZnQg
dG8gYXBwbHkgdG8gdGhlIHJlZ2lzdGVyIG9mZnNldHMgd2l0aGluIHRoZSA4MjUwIFVBUlQiCisJ
aGVscAorCQlFQVJMWV9VQVJUXzgyNTBfUkVHX1NISUZUIGlzLCBvcHRpb25hbGx5LCB0aGUgbGVm
dC1zaGlmdCB0bworCQlhcHBseSB0byB0aGUgcmVnaXN0ZXIgb2Zmc2V0cyB3aXRoaW4gdGhlIFVB
UlQgd2l0aCBlYXJseQorCQlwcmludGsuCisKKwkJRGVmYXVsdCB0byAwLgorCisJZGVmYXVsdCAy
IGlmIEVBUkxZX1BSSU5US19CUkNNCisJZGVmYXVsdCAyIGlmIEVBUkxZX1BSSU5US19EUkE3CisJ
ZGVmYXVsdCAyIGlmIEVBUkxZX1BSSU5US19PTUFQNTQzMgorCWRlZmF1bHQgMiBpZiBFQVJMWV9Q
UklOVEtfU1VONkkKKwlkZWZhdWx0IDIgaWYgRUFSTFlfUFJJTlRLX1NVTjdJCisJZGVmYXVsdCAy
IGlmIEVBUkxZX1BSSU5US19YR0VORV9NQ0RJVklUVAorCWRlZmF1bHQgMiBpZiBFQVJMWV9QUklO
VEtfWEdFTkVfU1RPUk0KKwlkZWZhdWx0IDAKKworY2hvaWNlIEVBUkxZX1VBUlRfU0NJRl9WRVJT
SU9OCisJcHJvbXB0ICJFYXJseSBwcmludGsgVUFSVCBTQ0lGIGludGVyZmFjZSB2ZXJzaW9uIgor
CWRlcGVuZHMgb24gRUFSTFlfVUFSVF9TQ0lGCisJZGVmYXVsdCBFQVJMWV9VQVJUX1NDSUZfVkVS
U0lPTl9OT05FCisJaGVscAorCQlTZWxlY3QgdGhlIGludGVyZmFjZSB2ZXJzaW9uIG9mIHRoZSBT
Q0lGIFVBUlQuCisKKwkJU2VsZWN0IEVBUkxZX1VBUlRfU0NJRl9WRVJTSU9OX05PTkUgdG8gdXNl
IHRoZSBkZWZhdWx0CisJCWludGVyZmFjZSB2ZXJzaW9uIChTQ0lGKS4KKwljb25maWcgRUFSTFlf
VUFSVF9TQ0lGX1ZFUlNJT05fTk9ORQorCQlib29sICJkZWZhdWx0IFNDSUYgVUFSVCBpbnRlcmZh
Y2UiCisJY29uZmlnIEVBUkxZX1VBUlRfU0NJRl9WRVJTSU9OX0EKKwkJYm9vbCAiU0NJRiBVQVJU
IGludGVyZmFjZSB2ZXJzaW9uIEEiCitlbmRjaG9pY2UKKworY29uZmlnIEVBUkxZX1BSSU5US19J
TkMKKwlzdHJpbmcKKwlkZWZhdWx0ICJkZWJ1Zy04MjUwLmluYyIgaWYgRUFSTFlfVUFSVF84MjUw
CisJZGVmYXVsdCAiZGVidWctY2FkZW5jZS5pbmMiIGlmIEVBUkxZX1VBUlRfQ0FERU5DRQorCWRl
ZmF1bHQgImRlYnVnLWV4eW5vczQyMTAuaW5jIiBpZiBFQVJMWV9VQVJUX0VYWU5PUzQyMTAKKwlk
ZWZhdWx0ICJkZWJ1Zy1tZXNvbi5pbmMiIGlmIEVBUkxZX1VBUlRfTUVTT04KKwlkZWZhdWx0ICJk
ZWJ1Zy1tdmVidS5pbmMiIGlmIEVBUkxZX1VBUlRfTVZFQlUKKwlkZWZhdWx0ICJkZWJ1Zy1wbDAx
MS5pbmMiIGlmIEVBUkxZX1VBUlRfUEwwMTEKKwlkZWZhdWx0ICJkZWJ1Zy1zY2lmLmluYyIgaWYg
RUFSTFlfVUFSVF9TQ0lGCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vTWFrZWZpbGUgYi94ZW4v
YXJjaC9hcm0vTWFrZWZpbGUKaW5kZXggMTA0NGMyMjk4YS4uMTJmOTJhNGJkMyAxMDA2NDQKLS0t
IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9NYWtlZmlsZQpAQCAt
MTYsNyArMTYsNyBAQCBvYmoteSArPSBkZXZpY2Uubwogb2JqLXkgKz0gZG9tYWluLm8KIG9iai15
ICs9IGRvbWFpbl9idWlsZC5pbml0Lm8KIG9iai15ICs9IGRvbWN0bC5vCi1vYmotJChFQVJMWV9Q
UklOVEspICs9IGVhcmx5X3ByaW50ay5vCitvYmotJChDT05GSUdfRUFSTFlfUFJJTlRLKSArPSBl
YXJseV9wcmludGsubwogb2JqLXkgKz0gZ2ljLm8KIG9iai15ICs9IGdpYy12Mi5vCiBvYmotJChD
T05GSUdfR0lDVjMpICs9IGdpYy12My5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vUnVsZXMu
bWsgYi94ZW4vYXJjaC9hcm0vUnVsZXMubWsKaW5kZXggZmFhMDllYTExMS4uM2FkMjg0YWE3MSAx
MDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL1J1bGVzLm1rCisrKyBiL3hlbi9hcmNoL2FybS9SdWxl
cy5tawpAQCAtMTgsNzYgKzE4LDYgQEAgQ0ZMQUdTLSQoQ09ORklHX0FSTV8zMikgKz0gLW1jcHU9
Y29ydGV4LWExNQogQ0ZMQUdTLSQoQ09ORklHX0FSTV82NCkgKz0gLW1jcHU9Z2VuZXJpYwogQ0ZM
QUdTLSQoQ09ORklHX0FSTV82NCkgKz0gLW1nZW5lcmFsLXJlZ3Mtb25seSAjIE5vIGZwIHJlZ2lz
dGVycyBldGMKIAotRUFSTFlfUFJJTlRLIDo9IG4KLQotaWZlcSAoJChDT05GSUdfREVCVUcpLHkp
Ci0KLSMgU2VlIGRvY3MvbWlzYy9hcm0vZWFybHktcHJpbnRrLnR4dCBmb3Igc3ludGF4Ci0KLUVB
UkxZX1BSSU5US19icmNtICAgICAgICAgICA6PSA4MjUwLDB4RjA0MEFCMDAsMgotRUFSTFlfUFJJ
TlRLX2RyYTcgICAgICAgICAgIDo9IDgyNTAsMHg0ODA2QTAwMCwyCi1FQVJMWV9QUklOVEtfZmFz
dG1vZGVsICAgICAgOj0gcGwwMTEsMHgxYzA5MDAwMCwxMTUyMDAKLUVBUkxZX1BSSU5US19leHlu
b3M1MjUwICAgICA6PSBleHlub3M0MjEwLDB4MTJjMjAwMDAKLUVBUkxZX1BSSU5US19oaWtleTk2
MCAgICAgICA6PSBwbDAxMSwweGZmZjMyMDAwCi1FQVJMWV9QUklOVEtfanVubyAgICAgICAgICAg
Oj0gcGwwMTEsMHg3ZmY4MDAwMAotRUFSTFlfUFJJTlRLX2xhZ2VyICAgICAgICAgIDo9IHNjaWYs
MHhlNmU2MDAwMAotRUFSTFlfUFJJTlRLX21pZHdheSAgICAgICAgIDo9IHBsMDExLDB4ZmZmMzYw
MDAKLUVBUkxZX1BSSU5US19tdmVidSAgICAgICAgICA6PSBtdmVidSwweGQwMDEyMDAwCi1FQVJM
WV9QUklOVEtfb21hcDU0MzIgICAgICAgOj0gODI1MCwweDQ4MDIwMDAwLDIKLUVBUkxZX1BSSU5U
S19yY2FyMyAgICAgICAgICA6PSBzY2lmLDB4ZTZlODgwMDAKLUVBUkxZX1BSSU5US19zZWF0dGxl
ICAgICAgICA6PSBwbDAxMSwweGUxMDEwMDAwCi1FQVJMWV9QUklOVEtfc3VuNmkgICAgICAgICAg
Oj0gODI1MCwweDAxYzI4MDAwLDIKLUVBUkxZX1BSSU5US19zdW43aSAgICAgICAgICA6PSA4MjUw
LDB4MDFjMjgwMDAsMgotRUFSTFlfUFJJTlRLX3RodW5kZXJ4ICAgICAgIDo9IHBsMDExLDB4ODdl
MDI0MDAwMDAwCi1FQVJMWV9QUklOVEtfdmV4cHJlc3MgICAgICAgOj0gcGwwMTEsMHgxYzA5MDAw
MAotRUFSTFlfUFJJTlRLX3hnZW5lLW1jZGl2aXR0IDo9IDgyNTAsMHgxYzAyMTAwMCwyCi1FQVJM
WV9QUklOVEtfeGdlbmUtc3Rvcm0gICAgOj0gODI1MCwweDFjMDIwMDAwLDIKLUVBUkxZX1BSSU5U
S196eW5xbXAgICAgICAgICA6PSBjYWRlbmNlLDB4ZmYwMDAwMDAKLQotaWZuZXEgKCQoRUFSTFlf
UFJJTlRLXyQoQ09ORklHX0VBUkxZX1BSSU5USykpLCkKLUVBUkxZX1BSSU5US19DRkcgOj0gJChz
dWJzdCAkKGNvbW1hKSwgLCQoRUFSTFlfUFJJTlRLXyQoQ09ORklHX0VBUkxZX1BSSU5USykpKQot
ZWxzZQotRUFSTFlfUFJJTlRLX0NGRyA6PSAkKHN1YnN0ICQoY29tbWEpLCAsJChDT05GSUdfRUFS
TFlfUFJJTlRLKSkKLWVuZGlmCi0KLSMgRXh0cmFjdCBjb25maWd1cmF0aW9uIGZyb20gc3RyaW5n
Ci1FQVJMWV9QUklOVEtfSU5DIDo9ICQod29yZCAxLCQoRUFSTFlfUFJJTlRLX0NGRykpCi1FQVJM
WV9VQVJUX0JBU0VfQUREUkVTUyA6PSAkKHdvcmQgMiwkKEVBUkxZX1BSSU5US19DRkcpKQotCi0j
IFVBUlQgc3BlY2lmaWMgb3B0aW9ucwotaWZlcSAoJChFQVJMWV9QUklOVEtfSU5DKSw4MjUwKQot
RUFSTFlfVUFSVF9SRUdfU0hJRlQgOj0gJCh3b3JkIDMsJChFQVJMWV9QUklOVEtfQ0ZHKSkKLWVu
ZGlmCi1pZmVxICgkKEVBUkxZX1BSSU5US19JTkMpLHBsMDExKQotaWZuZXEgKCQod29yZCAzLCQo
RUFSTFlfUFJJTlRLX0NGRykpLCkKLUVBUkxZX1BSSU5US19JTklUX1VBUlQgOj0geQotRUFSTFlf
UFJJTlRLX0JBVUQgOj0gJCh3b3JkIDMsJChFQVJMWV9QUklOVEtfQ0ZHKSkKLWVuZGlmCi1lbmRp
ZgotaWZlcSAoJChFQVJMWV9QUklOVEtfSU5DKSxzY2lmKQotaWZuZXEgKCQod29yZCAzLCQoRUFS
TFlfUFJJTlRLX0NGRykpLCkKLUNGTEFHUy15ICs9IC1EQ09ORklHX0VBUkxZX1VBUlRfU0NJRl9W
RVJTSU9OXyQod29yZCAzLCQoRUFSTFlfUFJJTlRLX0NGRykpCi1lbHNlCi1DRkxBR1MteSArPSAt
RENPTkZJR19FQVJMWV9VQVJUX1NDSUZfVkVSU0lPTl9OT05FCi1lbmRpZgotZW5kaWYKLQotaWZu
ZXEgKCQoRUFSTFlfUFJJTlRLX0lOQyksKQotRUFSTFlfUFJJTlRLIDo9IHkKLWVuZGlmCi0KLUNG
TEFHUy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05GSUdfRUFSTFlfUFJJTlRLCi1DRkxBR1MtJChF
QVJMWV9QUklOVEtfSU5JVF9VQVJUKSArPSAtRENPTkZJR19FQVJMWV9VQVJUX0lOSVQKLUNGTEFH
Uy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05GSUdfRUFSTFlfUFJJTlRLX0lOQz1cImRlYnVnLSQo
RUFSTFlfUFJJTlRLX0lOQykuaW5jXCIKLUNGTEFHUy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05G
SUdfRUFSTFlfVUFSVF9QTDAxMV9CQVVEX1JBVEU9JChFQVJMWV9QUklOVEtfQkFVRCkKLUNGTEFH
Uy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05GSUdfRUFSTFlfVUFSVF9CQVNFX0FERFJFU1M9JChF
QVJMWV9VQVJUX0JBU0VfQUREUkVTUykKLUNGTEFHUy0kKEVBUkxZX1BSSU5USykgKz0gLURDT05G
SUdfRUFSTFlfVUFSVF84MjUwX1JFR19TSElGVD0kKEVBUkxZX1VBUlRfUkVHX1NISUZUKQotCi1l
bHNlICMgIUNPTkZJR19ERUJVRwotCi1pZm5lcSAoJChDT05GSUdfRUFSTFlfUFJJTlRLKSwpCi0j
IEVhcmx5IHByaW50ayBpcyBkZXBlbmRhbnQgb24gYSBkZWJ1ZyBidWlsZC4KLSQoZXJyb3IgQ09O
RklHX0VBUkxZX1BSSU5USyBlbmFibGVkIGZvciBub24tZGVidWcgYnVpbGQpCi1lbmRpZgotCitp
Zm5lcSAoJChmaWx0ZXIgY29tbWFuZCBsaW5lIGVudmlyb25tZW50LCQob3JpZ2luIENPTkZJR19F
QVJMWV9QUklOVEspKSwpCisgICAgJChlcnJvciBZb3UgbXVzdCB1c2UgJ21ha2UgbWVudWNvbmZp
ZycgdG8gZW5hYmxlL2Rpc2FibGUgZWFybHkgcHJpbnRrIG5vdykKIGVuZGlmCmRpZmYgLS1naXQg
YS94ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUgYi94ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZp
bGUKaW5kZXggNTM5YmJlZjI5OC4uOTYxMDVkMjM4MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJt
L2FybTMyL01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL2FybS9hcm0zMi9NYWtlZmlsZQpAQCAtMSw2
ICsxLDYgQEAKIG9iai15ICs9IGxpYi8KIAotb2JqLSQoRUFSTFlfUFJJTlRLKSArPSBkZWJ1Zy5v
CitvYmotJChDT05GSUdfRUFSTFlfUFJJTlRLKSArPSBkZWJ1Zy5vCiBvYmoteSArPSBkb21jdGwu
bwogb2JqLXkgKz0gZG9tYWluLm8KIG9iai15ICs9IGVudHJ5Lm8KZGlmZiAtLWdpdCBhL3hlbi9h
cmNoL2FybS9hcm02NC9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9hcm02NC9NYWtlZmlsZQppbmRl
eCBkYjg1NjViNzFhLi40MDY0MmZmNTc0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vYXJtNjQv
TWFrZWZpbGUKKysrIGIveGVuL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlCkBAIC0yLDcgKzIsNyBA
QCBvYmoteSArPSBsaWIvCiAKIG9iai15ICs9IGNhY2hlLm8KIG9iai0kKENPTkZJR19IQVJERU5f
QlJBTkNIX1BSRURJQ1RPUikgKz0gYnBpLm8KLW9iai0kKEVBUkxZX1BSSU5USykgKz0gZGVidWcu
bworb2JqLSQoQ09ORklHX0VBUkxZX1BSSU5USykgKz0gZGVidWcubwogb2JqLXkgKz0gZG9tY3Rs
Lm8KIG9iai15ICs9IGRvbWFpbi5vCiBvYmoteSArPSBlbnRyeS5vCmRpZmYgLS1naXQgYS94ZW4v
YXJjaC94ODYvS2NvbmZpZy5kZWJ1ZyBiL3hlbi9hcmNoL3g4Ni9LY29uZmlnLmRlYnVnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmU2OWRlMjliYjIKLS0KZ2VuZXJhdGVk
IGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBt
YWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:56:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:56:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZvJ-0001RX-Kx; Sat, 04 Apr 2020 03:56:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZvI-0001RP-Ld
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:44 +0000
X-Inumbo-ID: 4c7a8e84-7628-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4c7a8e84-7628-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 03:56:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=I91Rc5qdrog9oLvna/cr9ZYJWyEEUbVwgi16V2X6n90=; b=2gbQ8IEZ2qVPVfi060L70xcpi1
 lz6KvNxg/db4o5pqfuWROdMy3tYtky5kHXrTeBhQR5nZfhmbZLS59ErdaS1IlhHjYeKhj9KLWS4Me
 xMgp7liAS9PkzBo9BPli5TUW4lzVQfD6r74t9SxMMgn6/nMTfH+BGjNkg+vvOfA0z33A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvI-00057l-36
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvI-00067e-28
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZvI-00067e-28@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:56:44 +0000
Subject: [Xen-changelog] [xen master] build,arm: Fix deps check of head.o
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGRjMGIzZWI1NmI5Y2UzZTJiNjFmMGM3ZDNhZjVhOThiNWE1ODYwOTkKQXV0aG9yOiAg
ICAgQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+CkF1dGhvckRhdGU6
IFR1ZSBNYXIgMzEgMTE6MzA6NDcgMjAyMCArMDEwMApDb21taXQ6ICAgICBKdWxpZW4gR3JhbGwg
PGpncmFsbEBhbWF6b24uY29tPgpDb21taXREYXRlOiBXZWQgQXByIDEgMTA6NDk6NDkgMjAyMCAr
MDEwMAoKICAgIGJ1aWxkLGFybTogRml4IGRlcHMgY2hlY2sgb2YgaGVhZC5vCiAgICAKICAgIGFy
bSovaGVhZC5vIGlzbid0IGluIG9iai15IG9yIGV4dHJhLXksIHNvIG1ha2UgZG9uJ3QgbG9hZCB0
aGUKICAgIGFzc29jaWF0ZWQgLiouZCBmaWxlIChvciAuKi5jbWQgZmlsZSB3aGVuIGlmX2NoYW5n
ZWQgd2lsbCBiZSB1c2VkKS4KICAgIFRoZXJlIGlzIGEgd29ya2Fyb3VuZCB3aGVyZSAuKi5kIGZp
bGUgaXMgYWRkZWQgbWFudWFsbHkgaW50byBERVBTLgogICAgCiAgICBDaGFuZ2luZyBERVBTIGlz
bid0IG5lZWRlZCwgd2UgY2FuIHNpbXBseSBhZGQgaGVhZC5vIGludG8gZXh0cmEteSBhbmQKICAg
IHRoZSBkZXBlbmRlbmN5IGZpbGVzIHdpbGwgYmUgbG9hZGVkLgogICAgCiAgICBTaWduZWQtb2Zm
LWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT4KICAgIEFja2Vk
LWJ5OiBKdWxpZW4gR3JhbGwgPGpncmFsbEBhbWF6b24uY29tPgotLS0KIHhlbi9hcmNoL2FybS9N
YWtlZmlsZSB8IDMgKy0tCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJt
L01ha2VmaWxlCmluZGV4IDEyZjkyYTRiZDMuLjcyNzNmMzU2ZjEgMTAwNjQ0Ci0tLSBhL3hlbi9h
cmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTYyLDYgKzYy
LDcgQEAgb2JqLSQoQ09ORklHX1NCU0FfVlVBUlRfQ09OU09MRSkgKz0gdnBsMDExLm8KIG9iai15
ICs9IHZzbWMubwogb2JqLXkgKz0gdnBzY2kubwogb2JqLXkgKz0gdnVhcnQubworZXh0cmEteSAr
PSAkKFRBUkdFVF9TVUJBUkNIKS9oZWFkLm8KIAogI29iai1iaW4teSArPSAuLi4ubwogCkBAIC03
Miw4ICs3Myw2IEBAIGVuZGlmCiAKIEFMTF9PQkpTIDo9ICQoVEFSR0VUX1NVQkFSQ0gpL2hlYWQu
byAkKEFMTF9PQkpTKQogCi1ERVBTICs9ICQoVEFSR0VUX1NVQkFSQ0gpLy5oZWFkLm8uZAotCiBp
ZmRlZiBDT05GSUdfTElWRVBBVENICiBhbGxfc3ltYm9scyA9IC0tYWxsLXN5bWJvbHMKIGlmZGVm
IENPTkZJR19GQVNUX1NZTUJPTF9MT09LVVAKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBm
b3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNo
YW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3Jn
L3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:56:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:56:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZvT-0001Tm-NE; Sat, 04 Apr 2020 03:56:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZvS-0001Te-OC
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:54 +0000
X-Inumbo-ID: 527acbf0-7628-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 527acbf0-7628-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 03:56:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=46DmzjTkWsGYzY0dXaZO3Ixn2yi5vQtcb8BhUtVBLQ0=; b=DtedA3mzlKzhRwcL0N/o4I5+F0
 5ntnaK2HsF9ElTTMiXRrg/4ufoxPPNisFgfxrJ2GDs7+TWV10o9dDay9tHSmGRZapaWYkQI/dhh1U
 kfKWFqsTpPr58Zw8IRCiikioRt93w6G8xJ2LnfR1Y3FZodrMJ6Hg8hShknZLzVR4NmUM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvS-000590-5l
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvS-00068K-4w
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:56:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZvS-00068K-4w@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:56:54 +0000
Subject: [Xen-changelog] [xen master] xen/public: sysctl:
 set_parameter.params and debug.keys should be const
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGM0MzM2YjBiMWEzNWMxYTU0YTIxYzBjYWZhZDM5NDY2NjEzYTcxNGYKQXV0aG9yOiAg
ICAgSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KQXV0aG9yRGF0ZTogTW9uIE1hciAz
MCAyMDoyMTo1MSAyMDIwICswMTAwCkNvbW1pdDogICAgIEp1bGllbiBHcmFsbCA8amdyYWxsQGFt
YXpvbi5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMDo1NTozNSAyMDIwICswMTAwCgogICAg
eGVuL3B1YmxpYzogc3lzY3RsOiBzZXRfcGFyYW1ldGVyLnBhcmFtcyBhbmQgZGVidWcua2V5cyBz
aG91bGQgYmUgY29uc3QKICAgIAogICAgVGhlIGZpZWxkcyBzZXRfcGFyYW1ldGVyLnBhcmFtcyBh
bmQgZGVidWcua2V5cyBzaG91bGQgbmV2ZXIgYmUgbW9kaWZpZWQKICAgIGJ5IHRoZSBoeXBlcnZp
c29yLiBTbyBtYXJrIHRoZW0gYXMgY29uc3QuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEp1bGll
biBHcmFsbCA8amdyYWxsQGFtYXpvbi5jb20+CiAgICBSZXZpZXdlZC1ieTogSmFuIEJldWxpY2gg
PGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaCB8IDQg
KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJs
aWMvc3lzY3RsLmgKaW5kZXggM2Q3MmZhYjQ5Zi4uM2EwOGM1MTJlOCAxMDA2NDQKLS0tIGEveGVu
L2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwu
aApAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsX2dldGRvbWFpbmluZm9saXN0
IHsKIC8qIFhFTl9TWVNDVExfZGVidWdfa2V5cyAqLwogc3RydWN0IHhlbl9zeXNjdGxfZGVidWdf
a2V5cyB7CiAgICAgLyogSU4gdmFyaWFibGVzLiAqLwotICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQo
Y2hhcikga2V5czsKKyAgICBYRU5fR1VFU1RfSEFORExFXzY0KGNvbnN0X2NoYXIpIGtleXM7CiAg
ICAgdWludDMyX3QgbnJfa2V5czsKIH07CiAKQEAgLTEwMzcsNyArMTAzNyw3IEBAIHN0cnVjdCB4
ZW5fc3lzY3RsX2xpdmVwYXRjaF9vcCB7CiAgKi8KIAogc3RydWN0IHhlbl9zeXNjdGxfc2V0X3Bh
cmFtZXRlciB7Ci0gICAgWEVOX0dVRVNUX0hBTkRMRV82NChjaGFyKSBwYXJhbXM7ICAgICAgIC8q
IElOOiBwb2ludGVyIHRvIHBhcmFtZXRlcnMuICovCisgICAgWEVOX0dVRVNUX0hBTkRMRV82NChj
b25zdF9jaGFyKSBwYXJhbXM7IC8qIElOOiBwb2ludGVyIHRvIHBhcmFtZXRlcnMuICovCiAgICAg
dWludDE2X3Qgc2l6ZTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOOiBzaXplIG9mIHBh
cmFtZXRlcnMuICovCiAgICAgdWludDE2X3QgcGFkWzNdOyAgICAgICAgICAgICAgICAgICAgICAg
IC8qIElOOiBNVVNUIGJlIHplcm8uICovCiB9OwotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90
IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4t
Y2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:57:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:57:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZve-0001Ur-PE; Sat, 04 Apr 2020 03:57:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZvd-0001Ui-Ry
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:05 +0000
X-Inumbo-ID: 58814722-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 58814722-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:57:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vN7y9vgwVY5L39q3LwUC4PFnMLfV5YfGYcUIhIu6xQU=; b=rfBYBZw2wjA5CqUNW7QS9dOi2v
 C3HAz8MCQyqaXq0Lt0Lo+amCnEsuPu8mOLRWSf/zoLr6l+ivcAjlOEOsDodthHEqGlfCG5cWnyOBF
 LViNQJETneyskcKSxwg3gOrFdViX5pjKBBP681lx5dHKZ77X8VHuooxePH4Snmz93Yo8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvc-00059N-8q
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvc-00069P-7s
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZvc-00069P-7s@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:57:04 +0000
Subject: [Xen-changelog] [xen master] tools/libxc: misc: Mark const the
 parameter 'keys' of xc_send_debug_keys()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDJiODA3OTYxMGVjNTU0MTM2MTNhZDA3MWNjODFjZDlmOTcyMzJhN2UKQXV0aG9yOiAg
ICAgSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KQXV0aG9yRGF0ZTogTW9uIE1hciAz
MCAyMDoyMTo1MiAyMDIwICswMTAwCkNvbW1pdDogICAgIEp1bGllbiBHcmFsbCA8amdyYWxsQGFt
YXpvbi5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMDo1NjowMSAyMDIwICswMTAwCgogICAg
dG9vbHMvbGlieGM6IG1pc2M6IE1hcmsgY29uc3QgdGhlIHBhcmFtZXRlciAna2V5cycgb2YgeGNf
c2VuZF9kZWJ1Z19rZXlzKCkKICAgIAogICAgT0NhbWwgaXMgdXNpbmcgYSBzdHJpbmcgdG8gZGVz
Y3JpYmUgdGhlIHBhcmFtZXRlciAna2V5cycgb2YKICAgIHhjX3NlbmRfZGVidWdfa2V5cygpLiBT
aW5jZSBPY2FtbCA0LjA2LjAxLCBTdHJpbmdfdmFsKCkgd2lsbCByZXR1cm4gYQogICAgY29uc3Qg
Y2hhciAqIHdoZW4gdXNpbmcgLXNhZmUtc3RyaW5nLiBUaGlzIHdpbGwgcmVzdWx0IHRvIGEgYnVp
bGQKICAgIGZhaWx1cmUgYmVjYXVzZSB4Y19zZW5kX2RlYnVnX2tleXMoKSBleHBlY3RzIGEgY2hh
ciAqLgogICAgCiAgICBUaGUgZnVuY3Rpb24gc2hvdWxkIG5ldmVyIG1vZGlmeSB0aGUgcGFyYW1l
dGVyICdrZXlzJyBhbmQgdGhlcmVmb3JlIHRoZQogICAgcGFyYW1ldGVyIHNob3VsZCBiZSBjb25z
dC4gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBub3QgZGlyZWN0bHkgcG9zc2libGUKICAgIGJlY2F1
c2UgREVDTEFSRV9IWVBFUkNBTExfQk9VTkNFKCkgaXMgZXhwZWN0aW5nIGEgbm9uLWNvbnN0IHZh
cmlhYmxlLgogICAgCiAgICBBIG5ldyBtYWNybyBERUNMQVJFX0hZUEVSQ0FMTF9CT1VOQ0VfSU4o
KSBpcyBpbnRyb2R1Y2VkIGFuZCB3aWxsIHRha2UKICAgIGNhcmUgb2YgY29uc3QgcGFyYW1ldGVy
LiBUaGUgZmlyc3QgdXNlciB3aWxsIGJlIHhjX3NlbmRfZGVidWdfa2V5cygpIGJ1dAogICAgdGhp
cyBjYW4gYmUgdXNlZCBpbiBtb3JlIHBsYWNlIGluIHRoZSBmdXR1cmUuCiAgICAKICAgIFJlcG9y
dGVkLWJ5OiBEYXJpbyBGYWdnaW9saSA8ZGZhZ2dpb2xpQHN1c2UuY29tPgogICAgU2lnbmVkLW9m
Zi1ieTogSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KICAgIFJldmlld2VkLWJ5OiBJ
YW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KLS0tCiB0b29scy9saWJ4Yy9p
bmNsdWRlL3hlbmN0cmwuaCB8IDIgKy0KIHRvb2xzL2xpYnhjL3hjX21pc2MuYyAgICAgICAgIHwg
NCArKy0tCiB0b29scy9saWJ4Yy94Y19wcml2YXRlLmggICAgICB8IDggKysrKysrKysKIDMgZmls
ZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaCBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVu
Y3RybC5oCmluZGV4IGZjNmU1N2ExYTAuLmQ4ODc0ZWI4NDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp
YnhjL2luY2x1ZGUveGVuY3RybC5oCisrKyBiL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5o
CkBAIC0xMjI1LDcgKzEyMjUsNyBAQCBpbnQgeGNfcmVhZGNvbnNvbGVyaW5nKHhjX2ludGVyZmFj
ZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBucl9jaGFycywK
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsZWFyLCBpbnQgaW5jcmVtZW50YWwsIHVpbnQz
Ml90ICpwaW5kZXgpOwogCi1pbnQgeGNfc2VuZF9kZWJ1Z19rZXlzKHhjX2ludGVyZmFjZSAqeGNo
LCBjaGFyICprZXlzKTsKK2ludCB4Y19zZW5kX2RlYnVnX2tleXMoeGNfaW50ZXJmYWNlICp4Y2gs
IGNvbnN0IGNoYXIgKmtleXMpOwogaW50IHhjX3NldF9wYXJhbWV0ZXJzKHhjX2ludGVyZmFjZSAq
eGNoLCBjaGFyICpwYXJhbXMpOwogCiB0eXBlZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3BoeXNpbmZv
IHhjX3BoeXNpbmZvX3Q7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19taXNjLmMgYi90b29s
cy9saWJ4Yy94Y19taXNjLmMKaW5kZXggMDkzZmE0NDA4MS4uOTU3YzAzNDE1YyAxMDA2NDQKLS0t
IGEvdG9vbHMvbGlieGMveGNfbWlzYy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX21pc2MuYwpAQCAt
MTY3LDExICsxNjcsMTEgQEAgaW50IHhjX3JlYWRjb25zb2xlcmluZyh4Y19pbnRlcmZhY2UgKnhj
aCwKICAgICByZXR1cm4gcmV0OwogfQogCi1pbnQgeGNfc2VuZF9kZWJ1Z19rZXlzKHhjX2ludGVy
ZmFjZSAqeGNoLCBjaGFyICprZXlzKQoraW50IHhjX3NlbmRfZGVidWdfa2V5cyh4Y19pbnRlcmZh
Y2UgKnhjaCwgY29uc3QgY2hhciAqa2V5cykKIHsKICAgICBpbnQgcmV0LCBsZW4gPSBzdHJsZW4o
a2V5cyk7CiAgICAgREVDTEFSRV9TWVNDVEw7Ci0gICAgREVDTEFSRV9IWVBFUkNBTExfQk9VTkNF
KGtleXMsIGxlbiwgWENfSFlQRVJDQUxMX0JVRkZFUl9CT1VOQ0VfSU4pOworICAgIERFQ0xBUkVf
SFlQRVJDQUxMX0JPVU5DRV9JTihrZXlzLCBsZW4pOwogCiAgICAgaWYgKCB4Y19oeXBlcmNhbGxf
Ym91bmNlX3ByZSh4Y2gsIGtleXMpICkKICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEv
dG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oIGIvdG9vbHMvbGlieGMveGNfcHJpdmF0ZS5oCmluZGV4
IGFkYzNiNmE1NzEuLmM3N2VkYjNjNGMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3ByaXZh
dGUuaAorKysgYi90b29scy9saWJ4Yy94Y19wcml2YXRlLmgKQEAgLTE4Miw2ICsxODIsMTQgQEAg
ZW51bSB7CiAjZGVmaW5lIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5DRShfdWJ1ZiwgX3N6LCBfZGly
KSBERUNMQVJFX05BTUVEX0hZUEVSQ0FMTF9CT1VOQ0UoX3VidWYsIF91YnVmLCBfc3osIF9kaXIp
CiAKIC8qCisgKiBEZWNsYXJlIGEgYm91bmNlIGJ1ZmZlciBzaGFkb3dpbmcgdGhlIG5hbWVkIHVz
ZXIgZGF0YSBwb2ludGVyIHRoYXQKKyAqIGNhbm5vdCBiZSBtb2RpZmllZC4KKyAqLworI2RlZmlu
ZSBERUNMQVJFX0hZUEVSQ0FMTF9CT1VOQ0VfSU4oX3VidWYsIF9zeikgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgREVDTEFSRV9OQU1FRF9IWVBFUkNBTExfQk9VTkNFKF91YnVmLCAodm9pZCAq
KShfdWJ1ZiksIF9zeiwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WENfSFlQRVJDQUxMX0JVRkZFUl9CT1VOQ0VfSU4pCisKKy8qCiAgKiBTZXQgdGhlIHNpemUgb2Yg
ZGF0YSB0byBib3VuY2UuIFVzZWZ1bCB3aGVuIHRoZSBzaXplIGlzIG5vdCBrbm93bgogICogd2hl
biB0aGUgYm91bmNlIGJ1ZmZlciBpcyBkZWNsYXJlZC4KICAqLwotLQpnZW5lcmF0ZWQgYnkgZ2l0
LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcg
bGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu
cHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:57:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:57:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZvn-0001WM-RQ; Sat, 04 Apr 2020 03:57:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZvm-0001WE-VA
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:14 +0000
X-Inumbo-ID: 5e82fcce-7628-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5e82fcce-7628-11ea-83d8-bc764e2007e4;
 Sat, 04 Apr 2020 03:57:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=UNUmdPhkosRIlTJY5KXDDT/H6i5t7oANXmWa7Ow3su4=; b=MNz4jeMUA4XNQcUsCrqo4Gzptg
 sp8hyzTyN8d6Gffn+K6TNodtHDoAK4zZ8JtQMdO5+3a5jkZPJnIdyh9T8qnggtnt16cpRvGT3EeGF
 K2i1L43DWM+l+7aLUliAPiAcLKLv5VtDjODhOAiqvjHTyMPqGOZeQIiDSmUbK/E2Ipdg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvm-00059z-Bd
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvm-0006A5-Af
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZvm-0006A5-Af@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:57:14 +0000
Subject: [Xen-changelog] [xen master] tools/libxc: misc: Mark const the
 parameter 'params' of xc_set_parameters()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDg5N2I2ZjRiNDMyNGI3Njk2NjAyZmUzODZiNWVhOTM1MDY0MTU0NDIKQXV0aG9yOiAg
ICAgSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4KQXV0aG9yRGF0ZTogTW9uIE1hciAz
MCAyMDoyMTo1MyAyMDIwICswMTAwCkNvbW1pdDogICAgIEp1bGllbiBHcmFsbCA8amdyYWxsQGFt
YXpvbi5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMDo1NzowNyAyMDIwICswMTAwCgogICAg
dG9vbHMvbGlieGM6IG1pc2M6IE1hcmsgY29uc3QgdGhlIHBhcmFtZXRlciAncGFyYW1zJyBvZiB4
Y19zZXRfcGFyYW1ldGVycygpCiAgICAKICAgIFRoZSBwYXJhbWV0ZXIgJ3BhcmFtcycgb2YgeGNf
c2V0X3BhcmFtZXRlcnMoKSBzaG91bGQgbmV2ZXIgYmUgbW9kaWZpZWQuCiAgICBTbyBtYXJrIGl0
IGFzIGNvbnN0LgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGpncmFsbEBh
bWF6b24uY29tPgogICAgUmV2aWV3ZWQtYnk6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5j
aXRyaXguY29tPgotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGVuY3RybC5oIHwgMiArLQogdG9v
bHMvbGlieGMveGNfbWlzYy5jICAgICAgICAgfCA0ICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMyBp
bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2lu
Y2x1ZGUveGVuY3RybC5oIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKaW5kZXggZDg4
NzRlYjg0Ni4uNThmYTkzMWRlMSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5j
dHJsLmgKKysrIGIvdG9vbHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmgKQEAgLTEyMjYsNyArMTIy
Niw3IEBAIGludCB4Y19yZWFkY29uc29sZXJpbmcoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBjbGVhciwgaW50IGluY3JlbWVudGFsLCB1aW50MzJfdCAqcGlu
ZGV4KTsKIAogaW50IHhjX3NlbmRfZGVidWdfa2V5cyh4Y19pbnRlcmZhY2UgKnhjaCwgY29uc3Qg
Y2hhciAqa2V5cyk7Ci1pbnQgeGNfc2V0X3BhcmFtZXRlcnMoeGNfaW50ZXJmYWNlICp4Y2gsIGNo
YXIgKnBhcmFtcyk7CitpbnQgeGNfc2V0X3BhcmFtZXRlcnMoeGNfaW50ZXJmYWNlICp4Y2gsIGNv
bnN0IGNoYXIgKnBhcmFtcyk7CiAKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfcGh5c2luZm8g
eGNfcGh5c2luZm9fdDsKIHR5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxfY3B1dG9wbyB4Y19jcHV0
b3BvX3Q7CmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19taXNjLmMgYi90b29scy9saWJ4Yy94
Y19taXNjLmMKaW5kZXggOTU3YzAzNDE1Yy4uZmU0NzdiZjM0NCAxMDA2NDQKLS0tIGEvdG9vbHMv
bGlieGMveGNfbWlzYy5jCisrKyBiL3Rvb2xzL2xpYnhjL3hjX21pc2MuYwpAQCAtMTg3LDExICsx
ODcsMTEgQEAgaW50IHhjX3NlbmRfZGVidWdfa2V5cyh4Y19pbnRlcmZhY2UgKnhjaCwgY29uc3Qg
Y2hhciAqa2V5cykKICAgICByZXR1cm4gcmV0OwogfQogCi1pbnQgeGNfc2V0X3BhcmFtZXRlcnMo
eGNfaW50ZXJmYWNlICp4Y2gsIGNoYXIgKnBhcmFtcykKK2ludCB4Y19zZXRfcGFyYW1ldGVycyh4
Y19pbnRlcmZhY2UgKnhjaCwgY29uc3QgY2hhciAqcGFyYW1zKQogewogICAgIGludCByZXQsIGxl
biA9IHN0cmxlbihwYXJhbXMpOwogICAgIERFQ0xBUkVfU1lTQ1RMOwotICAgIERFQ0xBUkVfSFlQ
RVJDQUxMX0JPVU5DRShwYXJhbXMsIGxlbiwgWENfSFlQRVJDQUxMX0JVRkZFUl9CT1VOQ0VfSU4p
OworICAgIERFQ0xBUkVfSFlQRVJDQUxMX0JPVU5DRV9JTihwYXJhbXMsIGxlbik7CiAKICAgICBp
ZiAoIHhjX2h5cGVyY2FsbF9ib3VuY2VfcHJlKHhjaCwgcGFyYW1zKSApCiAgICAgICAgIHJldHVy
biAtMTsKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4u
Z2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9q
ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:57:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:57:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZvx-0001Xe-TX; Sat, 04 Apr 2020 03:57:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZvx-0001XU-5X
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:25 +0000
X-Inumbo-ID: 648781f8-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 648781f8-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:57:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=cdXvelaYxzTUlAEdj2yDGVqzCGFOvMReyxyJRgf/oVs=; b=Uhl+jyB1sMTt2J6vylGDnt3xxp
 6h8wtd1KVTgRcDjBJt4OyBg91B3+nnfq8UAgRHiGn5LpfWaueskQAmYWVlOXb7bdjTLGmso08hNa7
 yGHJpngRAWbujHOA+mIzVXfCHVaLgGmfwhvvGxD/TC6Nm9UxXOigZt7OW3qCll+wHDSY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvw-0005A8-EL
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZvw-0006Al-DN
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZvw-0006Al-DN@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:57:24 +0000
Subject: [Xen-changelog] [xen master] x86/HVM: fix AMD ECS handling for Fam10
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDVkNTE1YjFjMjk2ZWJhZDY4ODk3NDhlYTFlNDllMDYzNDUzMjE2YTMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBXZWQgQXByIDEg
MTI6Mjg6MzAgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMjoyODozMCAyMDIwICswMjAwCgogICAgeDg2
L0hWTTogZml4IEFNRCBFQ1MgaGFuZGxpbmcgZm9yIEZhbTEwCiAgICAKICAgIFRoZSBpbnZvbHZl
ZCBjb21wYXJpc29uIHdhcywgdmVyeSBsaWtlbHkgaW5hZHZlcnRlbnRseSwgY29udmVydGVkIGZy
b20KICAgID49IHRvID4gd2hlbiBtYWtpbmcgY2hhbmdlcyB1bnJlbGF0ZWQgdG8gdGhlIGFjdHVh
bCBmYW1pbHkgcmFuZ2UuCiAgICAKICAgIEZpeGVzOiA5ODQxZWI3MWVhODcgKCJ4ODYvY3B1aWQ6
IERyb3AgYSBndWVzdHMgY2FjaGVkIHg4NiBmYW1pbHkgYW5kIG1vZGVsIGluZm9ybWF0aW9uIikK
ICAgIFNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KICAgIFJl
dmlld2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAg
UmV2aWV3ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bEB4ZW4ub3JnPgotLS0KIHhlbi9hcmNoL3g4
Ni9odm0vaW9yZXEuYyB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk
ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9h
cmNoL3g4Ni9odm0vaW9yZXEuYwppbmRleCA3MGU2MTc4OGQ3Li5jNTVjNGJjNGJjIDEwMDY0NAot
LS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3Jl
cS5jCkBAIC0xMjg1LDcgKzEyODUsNyBAQCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqaHZtX3Nl
bGVjdF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgaWYgKCBDRjhfQURE
Ul9ISShjZjgpICYmCiAgICAgICAgICAgICAgZC0+YXJjaC5jcHVpZC0+eDg2X3ZlbmRvciA9PSBY
ODZfVkVORE9SX0FNRCAmJgogICAgICAgICAgICAgICh4ODZfZmFtID0gZ2V0X2NwdV9mYW1pbHko
Ci0gICAgICAgICAgICAgICAgIGQtPmFyY2guY3B1aWQtPmJhc2ljLnJhd19mbXMsIE5VTEwsIE5V
TEwpKSA+IDB4MTAgJiYKKyAgICAgICAgICAgICAgICAgZC0+YXJjaC5jcHVpZC0+YmFzaWMucmF3
X2ZtcywgTlVMTCwgTlVMTCkpID49IDB4MTAgJiYKICAgICAgICAgICAgICB4ODZfZmFtIDwgMHgx
NyApCiAgICAgICAgIHsKICAgICAgICAgICAgIHVpbnQ2NF90IG1zcl92YWw7Ci0tCmdlbmVyYXRl
ZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cg
bWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s
aXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:57:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:57:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZw7-0001Yi-VT; Sat, 04 Apr 2020 03:57:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZw7-0001Yc-Da
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:35 +0000
X-Inumbo-ID: 6a8c755e-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6a8c755e-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:57:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=oIG8u+vmUf7QA/LHcQqFRbSsZqtOcWzzy5VtdURimIU=; b=VbfPflsCE4iwoly+HuHtbH+jhc
 7aX0bpHkR5+S7SYQEZPLkpoYznKkb+HpbMO+pzt9uR0ppIOEBNwBtUJ15ecP19wUN74MnRgn77GqR
 05Na5ykC67m7BbSslPnrAJN5J1kq2vEsXtN8vQnXQodLtDbS7yY/K74d28zbyRndHwtI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZw6-0005AM-Hh
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZw6-0006BL-Gn
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZw6-0006BL-Gn@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:57:34 +0000
Subject: [Xen-changelog] [xen master] x86emul: vendor specific SYSCALL
 behavior
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDc4Yzg3ZTQxZjBjZGQ3NWM4NDdmNDFhMjc2OGZhZjQxOTgzYmRmMTMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBXZWQgQXByIDEg
MTI6MzI6MTcgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMjozMjoxNyAyMDIwICswMjAwCgogICAgeDg2
ZW11bDogdmVuZG9yIHNwZWNpZmljIFNZU0NBTEwgYmVoYXZpb3IKICAgIAogICAgQU1EIENQVXMg
cGVybWl0IHRoZSBpbnNuIGV2ZXJ5d2hlcmUgKGV2ZW4gb3V0c2lkZSBvZiBwcm90ZWN0ZWQgbW9k
ZSksCiAgICB3aGlsZSBJbnRlbCBvbmVzIHJlc3RyaWN0IGl0IHRvIDY0LWJpdCBtb2RlLiBXaGls
ZSBhdCBpdCBhbHNvIGNvbW1lbnQKICAgIGFib3V0IHRoZSBhcHBhcmVudGx5IG1pc3NpbmcgQ1BV
SUQgYml0IGNoZWNrLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxp
Y2hAc3VzZS5jb20+CiAgICBSZXZpZXdlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl
cjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUveDg2X2VtdWxhdGUu
YyB8IDkgKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAzIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0
ZS5jIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKaW5kZXggM2JhODBl
NzlhYi4uNzcyZDI0NWMzMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4
Nl9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMK
QEAgLTU4OTcsMTMgKzU4OTcsMTYgQEAgeDg2X2VtdWxhdGUoCiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBYODZFTVVMX09QQygweDBmLCAweDA1KTogLyogc3lzY2FsbCAqLwotICAgICAgICBn
ZW5lcmF0ZV9leGNlcHRpb25faWYoIWluX3Byb3Rtb2RlKGN0eHQsIG9wcyksIEVYQ19VRCk7Ci0K
LSAgICAgICAgLyogSW5qZWN0ICNVRCBpZiBzeXNjYWxsL3N5c3JldCBhcmUgZGlzYWJsZWQuICov
CisgICAgICAgIC8qCisgICAgICAgICAqIEluamVjdCAjVUQgaWYgc3lzY2FsbC9zeXNyZXQgYXJl
IGRpc2FibGVkLiBFRkVSLlNDRSBjYW4ndCBiZSBzZXQKKyAgICAgICAgICogd2l0aCB0aGUgcmVz
cGVjdGl2ZSBDUFVJRCBiaXQgY2xlYXIsIHNvIG5vIG5lZWQgZm9yIGFuIGV4cGxpY2l0CisgICAg
ICAgICAqIGNoZWNrIG9mIHRoYXQgb25lLgorICAgICAgICAgKi8KICAgICAgICAgZmFpbF9pZihv
cHMtPnJlYWRfbXNyID09IE5VTEwpOwogICAgICAgICBpZiAoIChyYyA9IG9wcy0+cmVhZF9tc3Io
TVNSX0VGRVIsICZtc3JfdmFsLCBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkKICAgICAgICAgICAg
IGdvdG8gZG9uZTsKICAgICAgICAgZ2VuZXJhdGVfZXhjZXB0aW9uX2lmKChtc3JfdmFsICYgRUZF
Ul9TQ0UpID09IDAsIEVYQ19VRCk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighYW1k
X2xpa2UoY3R4dCkgJiYgIW1vZGVfNjRiaXQoKSwgRVhDX1VEKTsKIAogICAgICAgICBpZiAoIChy
YyA9IG9wcy0+cmVhZF9tc3IoTVNSX1NUQVIsICZtc3JfdmFsLCBjdHh0KSkgIT0gWDg2RU1VTF9P
S0FZICkKICAgICAgICAgICAgIGdvdG8gZG9uZTsKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJv
dCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVu
LWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu
b3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:57:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:57:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZwI-0001Zo-1L; Sat, 04 Apr 2020 03:57:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZwH-0001Zg-DH
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:45 +0000
X-Inumbo-ID: 709143bc-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 709143bc-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:57:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Y3g6wNw4sxizQmq02wrZpfiCOg3RYIzXkYKve1c2H60=; b=OMT0WdZ7yDeqDStpdH7m9oLozQ
 QHrULkMjm3byDcfNVVZO1lCk9PVdqM7hnE9mjL6poFas+fQa8uNfUBarOXNcXNpnrFOt93CMyvsgx
 TwO9VJNbBslG+glE5oYlEXHPBqejASpe+ns/EO6FMKMHIVrr7q6DBMRS1RXGtkvI/Nb4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwG-0005AV-Kw
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwG-0006Bv-KA
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZwG-0006Bv-KA@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:57:44 +0000
Subject: [Xen-changelog] [xen master] x86emul: support SYSRET
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDc1M2FiNDFiOGI3NjNiNThjYzNkZDk0MGQ4NjJiY2VhZjU4ZjdhNGMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBXZWQgQXByIDEg
MTI6MzQ6MzMgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxMjozNDozMyAyMDIwICswMjAwCgogICAgeDg2
ZW11bDogc3VwcG9ydCBTWVNSRVQKICAgIAogICAgVGhpcyBpcyB0byBhdWdtZW50IFNZU0NBTEws
IHdoaWNoIHdlJ3ZlIGJlZW4gc3VwcG9ydGluZyBmb3IgcXVpdGUgc29tZQogICAgdGltZS4KICAg
IAogICAgU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgogICAg
UmV2aWV3ZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0t
LQogeGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMgfCA3NiArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygr
KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jIGIv
eGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKaW5kZXggNzcyZDI0NWMzMy4u
M2VkNjRjMTNlYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVs
YXRlLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmMKQEAgLTU5
NzcsNiArNTk3Nyw4MiBAQCB4ODZfZW11bGF0ZSgKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAg
ICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFg4NkVNVUxfT1BDKDB4MGYsIDB4MDcpOiAvKiBzeXNy
ZXQgKi8KKyAgICAgICAgLyoKKyAgICAgICAgICogSW5qZWN0ICNVRCBpZiBzeXNjYWxsL3N5c3Jl
dCBhcmUgZGlzYWJsZWQuIEVGRVIuU0NFIGNhbid0IGJlIHNldAorICAgICAgICAgKiB3aXRoIHRo
ZSByZXNwZWN0aXZlIENQVUlEIGJpdCBjbGVhciwgc28gbm8gbmVlZCBmb3IgYW4gZXhwbGljaXQK
KyAgICAgICAgICogY2hlY2sgb2YgdGhhdCBvbmUuCisgICAgICAgICAqLworICAgICAgICBmYWls
X2lmKCFvcHMtPnJlYWRfbXNyKTsKKyAgICAgICAgaWYgKCAocmMgPSBvcHMtPnJlYWRfbXNyKE1T
Ul9FRkVSLCAmbXNyX3ZhbCwgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSApCisgICAgICAgICAgICBn
b3RvIGRvbmU7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighKG1zcl92YWwgJiBFRkVS
X1NDRSksIEVYQ19VRCk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZighYW1kX2xpa2Uo
Y3R4dCkgJiYgIW1vZGVfNjRiaXQoKSwgRVhDX1VEKTsKKyAgICAgICAgZ2VuZXJhdGVfZXhjZXB0
aW9uX2lmKCFtb2RlX3JpbmcwKCksIEVYQ19HUCwgMCk7CisgICAgICAgIGdlbmVyYXRlX2V4Y2Vw
dGlvbl9pZighaW5fcHJvdG1vZGUoY3R4dCwgb3BzKSwgRVhDX0dQLCAwKTsKKyNpZmRlZiBfX3g4
Nl82NF9fCisgICAgICAgIC8qCisgICAgICAgICAqIERvaW5nIHRoaXMgZm9yIGp1c3QgSW50ZWwg
KHJhdGhlciB0aGFuIGUuZy4gIWFtZF9saWtlKCkpIGFzIHRoaXMgaXMKKyAgICAgICAgICogaW4g
ZmFjdCByaXNraW5nIHRvIG1ha2UgZ3Vlc3QgT1NlcyB2dWxuZXJhYmxlIHRvIHRoZSBlcXVpdmFs
ZW50IG9mCisgICAgICAgICAqIFhTQS03IChDVkUtMjAxMi0wMjE3KS4KKyAgICAgICAgICovCisg
ICAgICAgIGdlbmVyYXRlX2V4Y2VwdGlvbl9pZihjdHh0LT5jcHVpZC0+eDg2X3ZlbmRvciA9PSBY
ODZfVkVORE9SX0lOVEVMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9ieXRl
cyA9PSA4ICYmICFpc19jYW5vbmljYWxfYWRkcmVzcyhfcmVncy5yY3gpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRVhDX0dQLCAwKTsKKyNlbmRpZgorCisgICAgICAgIGlmICggKHJj
ID0gb3BzLT5yZWFkX21zcihNU1JfU1RBUiwgJm1zcl92YWwsIGN0eHQpKSAhPSBYODZFTVVMX09L
QVkgKQorICAgICAgICAgICAgZ290byBkb25lOworCisgICAgICAgIHNyZWcuc2VsID0gKChtc3Jf
dmFsID4+IDQ4KSArIDgpIHwgMzsgLyogU0VMRUNUT1JfUlBMX01BU0sgKi8KKyAgICAgICAgY3Mu
c2VsID0gb3BfYnl0ZXMgPT0gOCA/IHNyZWcuc2VsICsgOCA6IHNyZWcuc2VsIC0gODsKKworICAg
ICAgICBjcy5iYXNlID0gc3JlZy5iYXNlID0gMDsgLyogZmxhdCBzZWdtZW50ICovCisgICAgICAg
IGNzLmxpbWl0ID0gc3JlZy5saW1pdCA9IH4wdTsgLyogNEdCIGxpbWl0ICovCisgICAgICAgIGNz
LmF0dHIgPSAweGNmYjsgLyogRytEQitQK0RQTDMrUytDb2RlICovCisgICAgICAgIHNyZWcuYXR0
ciA9IDB4Y2YzOyAvKiBHK0RCK1ArRFBMMytTK0RhdGEgKi8KKworICAgICAgICAvKiBPbmx5IHRo
ZSBzZWxlY3RvciBwYXJ0IG9mIFNTIGdldHMgdXBkYXRlZCBieSBBTUQgYW5kIGFsaWtlLiAqLwor
ICAgICAgICBpZiAoIGFtZF9saWtlKGN0eHQpICkKKyAgICAgICAgeworICAgICAgICAgICAgZmFp
bF9pZighb3BzLT5yZWFkX3NlZ21lbnQpOworICAgICAgICAgICAgaWYgKCAocmMgPSBvcHMtPnJl
YWRfc2VnbWVudCh4ODZfc2VnX3NzLCAmc3JlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3R4dCkpICE9IFg4NkVNVUxfT0tBWSApCisgICAgICAgICAgICAgICAg
Z290byBkb25lOworCisgICAgICAgICAgICAvKiBUaGVyZSdzIGV4cGxpY2l0bHkgbm8gUlBMIGFk
anVzdG1lbnQgaGVyZS4gKi8KKyAgICAgICAgICAgIHNyZWcuc2VsID0gKG1zcl92YWwgPj4gNDgp
ICsgODsKKyAgICAgICAgfQorCisjaWZkZWYgX194ODZfNjRfXworICAgICAgICBpZiAoIG1vZGVf
NjRiaXQoKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggb3BfYnl0ZXMgPT0gOCApCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY3MuYXR0ciA9IDB4YWZiOyAvKiBMK0RCK1Ar
RFBMMytTK0NvZGUgKi8KKyAgICAgICAgICAgICAgICBfcmVncy5yaXAgPSBfcmVncy5yY3g7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgX3JlZ3Mucmlw
ID0gX3JlZ3MuZWN4OworCisgICAgICAgICAgICBfcmVncy5lZmxhZ3MgPSBfcmVncy5yMTEgJiB+
KFg4Nl9FRkxBR1NfUkYgfCBYODZfRUZMQUdTX1ZNKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
CisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgX3JlZ3MucihpcCkgPSBfcmVncy5lY3g7
CisgICAgICAgICAgICBfcmVncy5lZmxhZ3MgfD0gWDg2X0VGTEFHU19JRjsKKyAgICAgICAgfQor
CisgICAgICAgIGZhaWxfaWYoIW9wcy0+d3JpdGVfc2VnbWVudCk7CisgICAgICAgIGlmICggKHJj
ID0gb3BzLT53cml0ZV9zZWdtZW50KHg4Nl9zZWdfY3MsICZjcywgY3R4dCkpICE9IFg4NkVNVUxf
T0tBWSB8fAorICAgICAgICAgICAgIChyYyA9IG9wcy0+d3JpdGVfc2VnbWVudCh4ODZfc2VnX3Nz
LCAmc3JlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4dCkpICE9
IFg4NkVNVUxfT0tBWSApCisgICAgICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAgICAgc2luZ2xl
c3RlcCA9IF9yZWdzLmVmbGFncyAmIFg4Nl9FRkxBR1NfVEY7CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBYODZFTVVMX09QQygweDBmLCAweDA4KTogLyogaW52ZCAqLwogICAgIGNhc2UgWDg2
RU1VTF9PUEMoMHgwZiwgMHgwOSk6IC8qIHdiaW52ZCAvIHdibm9pbnZkICovCiAgICAgICAgIGdl
bmVyYXRlX2V4Y2VwdGlvbl9pZighbW9kZV9yaW5nMCgpLCBFWENfR1AsIDApOwotLQpnZW5lcmF0
ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9n
IG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v
bGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:57:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:57:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZwS-0001b0-4Z; Sat, 04 Apr 2020 03:57:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZwR-0001aq-8f
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:55 +0000
X-Inumbo-ID: 76924e00-7628-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 76924e00-7628-11ea-9e09-bc764e2007e4;
 Sat, 04 Apr 2020 03:57:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=awYX+eurzOkdfO+OQS5ANf8w+axZ3yS0rfGZORQ1FP4=; b=XK/wmQtoIMBXQaoA753PUfVw0X
 FsrJCCPRC0WVN77ZznEj161BaFXNRXcuLfdR0w6hzc+yoX2P64ug6uxtNss4uz6YFOeJvajRjCwxn
 vCEkXDX8grjo3XBOLpg7DK5SOAf4qjbEubVoh/jPwLStCfzinN7eUFGVSNJwg8P8Ya/w=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwQ-0005Ae-NY
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwQ-0006CX-Mc
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:57:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZwQ-0006CX-Mc@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:57:54 +0000
Subject: [Xen-changelog] [xen master] x86/dom0: fix copy of low 1MB data for
 PVH
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============6460682173204124439=="
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

--===============6460682173204124439==
Content-Type: text/plain

commit 3925402f5dd7ae93010c48688eb64f880c794267
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Wed Apr 1 12:36:57 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 1 12:36:57 2020 +0200

    x86/dom0: fix copy of low 1MB data for PVH
    
    The orders of start and end are inverted in order to calculate the
    size of the copy operation.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/hvm/dom0_build.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 2afd44c8a4..12a82c9d7c 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -463,7 +463,7 @@ static int __init pvh_populate_p2m(struct domain *d)
             enum hvm_translation_result res =
                  hvm_copy_to_guest_phys(mfn_to_maddr(_mfn(addr)),
                                         mfn_to_virt(addr),
-                                        d->arch.e820[i].addr - end,
+                                        end - d->arch.e820[i].addr,
                                         v);
 
             if ( res != HVMTRANS_okay )
--
generated by git-patchbot for /home/xen/git/xen.git#master


--===============6460682173204124439==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5n
ZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

--===============6460682173204124439==--

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:58:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:58:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZwd-0001cZ-LW; Sat, 04 Apr 2020 03:58:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZwb-0001cI-O7
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:05 +0000
X-Inumbo-ID: 7c993c5a-7628-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7c993c5a-7628-11ea-9e09-bc764e2007e4;
 Sat, 04 Apr 2020 03:58:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=yjJR6ezQo+nvfHtQMAethvDgDleRDX9QaEtWEd8VsoM=; b=ptaAm4XhD5MtG273f+69RDRYYL
 alHCMjq6K3zghqxnLlc18Q+0pfy6ZPcoWvkJFSHsP7znp2IdTZ78q8aZwYhmgwXyHIt/fpGt2gWIq
 InhaHL+HbktUeqYWryHs9o+SjfT5PHjIDblK7ejKXD3U9Y4Tn3LUw+GTOWXNUXgDfqzE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwa-0005B4-RB
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwa-0006DK-PQ
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZwa-0006DK-PQ@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:58:04 +0000
Subject: [Xen-changelog] [xen master] x86/ucode: Remove unnecessary
 indirection in struct microcode_patch
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGJlOTQ3NGI1NWY1YjNkMTQwOWQwYWMxZWExN2MzNTc0M2Q4ZTljOGEKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgTWFyIDI3
IDAwOjI5OjU1IDIwMjAgKzAwMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv
b3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogV2VkIEFwciAxIDE0OjAwOjEyIDIwMjAgKzAx
MDAKCiAgICB4ODYvdWNvZGU6IFJlbW92ZSB1bm5lY2Vzc2FyeSBpbmRpcmVjdGlvbiBpbiBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoCiAgICAKICAgIEN1cnJlbnRseSwgZWFjaCBjcHVfcmVxdWVzdF9t
aWNyb2NvZGUoKSBhbGxvY2F0ZXMgYSBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoLAogICAgd2hpY2gg
aXMgYSBzaW5nbGUgcG9pbnRlciB0byBhIHNlcGFyYXRlIGFsbG9jYXRlZCBzdHJ1Y3R1cmUuICBU
aGlzIGlzCiAgICB3YXN0ZWZ1bC4KICAgIAogICAgRml4aW5nIHRoaXMgaXMgY29tcGxpY2F0ZWQg
YmVjYXVzZSB0aGUgY29tbW9uIG1pY3JvY29kZV9mcmVlX3BhdGNoKCkgY29kZSBpcwogICAgcmVz
cG9uc2libGUgZm9yIGZyZWVpbmcgc3RydWN0IG1pY3JvY29kZV9wYXRjaCwgZGVzcGl0ZSB0aGlz
IGJlaW5nIGFzeW1tZXRyaWMKICAgIHdpdGggaG93IGl0IGlzIGFsbG9jYXRlZC4KICAgIAogICAg
TWFrZSBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoIGZ1bGx5IG9wYXF1ZSB0byB0aGUgY29tbW9uIGxv
Z2ljLiAgVGhpcyBpbnZvbHZlcwogICAgbW92aW5nIHRoZSByZXNwb25zaWJpbGl0eSBmb3IgZnJl
ZWluZyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoIGZ1bGx5IGludG8gdGhlCiAgICBmcmVlX3BhdGNo
KCkgaG9vay4KICAgIAogICAgSW4gZWFjaCB2ZW5kb3IgbG9naWMsIHVzZSBzb21lIHRlbXBvcmFy
eSBpZmRlZi1hcnkgKGNsZWFuZWQgdXAgaW4gc3Vic2VxdWVudAogICAgY2hhbmdlcykgdG8gcmVk
dWNlIHRoZSBjaHVybiBhcyBtdWNoIGFzIHBvc3NpYmxlLCBhbmQgZm9yZ28gYWxsb2NhdGluZyB0
aGUKICAgIGludGVybWVkaWF0ZSBwb2ludGVyIGluIGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpLgog
ICAgCiAgICBTdWdnZXN0ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KICAg
IFNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KICAgIFNpZ25l
ZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQog
eGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgICAgIHwgMzAgKysrKysrKysrKysrLS0t
LS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9jb3JlLmMgICAgfCAg
MyArLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMgICB8IDMxICsrKysrKysr
KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZh
dGUuaCB8IDExICsrKy0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyks
IDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggOWVmYzAzYzgx
MC4uNmJmM2EwNTRkMyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1k
LmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTU4LDEzICs1OCwx
NiBAQCBzdHJ1Y3QgX19wYWNrZWQgbWljcm9jb2RlX2hlYWRlcl9hbWQgewogI2RlZmluZSBVQ09E
RV9FUVVJVl9DUFVfVEFCTEVfVFlQRSAweDAwMDAwMDAwCiAjZGVmaW5lIFVDT0RFX1VDT0RFX1RZ
UEUgICAgICAgICAgIDB4MDAwMDAwMDEKIAotc3RydWN0IG1pY3JvY29kZV9hbWQgeworc3RydWN0
IG1pY3JvY29kZV9wYXRjaCB7CiAgICAgdm9pZCAqbXBiOwogICAgIHNpemVfdCBtcGJfc2l6ZTsK
ICAgICBzdHJ1Y3QgZXF1aXZfY3B1X2VudHJ5ICplcXVpdl9jcHVfdGFibGU7CiAgICAgc2l6ZV90
IGVxdWl2X2NwdV90YWJsZV9zaXplOwogfTsKIAorLyogVGVtcG9yYXJ5LCB1bnRpbCB0aGUgbWlj
cm9jb2RlXyogc3RydWN0dXJlIGFyZSBkaXNlbnRhbmdsZWQuICovCisjZGVmaW5lIG1pY3JvY29k
ZV9hbWQgbWljcm9jb2RlX3BhdGNoCisKIHN0cnVjdCBtcGJoZHIgewogICAgIHVpbnQzMl90IHR5
cGU7CiAgICAgdWludDMyX3QgbGVuOwpAQCAtMTc1LDEzICsxNzgsMTEgQEAgc3RhdGljIGVudW0g
bWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfZml0cygKIAogc3RhdGljIGJvb2wgbWF0
Y2hfY3B1KGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewotICAgIHJldHVy
biBwYXRjaCAmJiAobWljcm9jb2RlX2ZpdHMocGF0Y2gtPm1jX2FtZCkgPT0gTkVXX1VDT0RFKTsK
KyAgICByZXR1cm4gcGF0Y2ggJiYgKG1pY3JvY29kZV9maXRzKHBhdGNoKSA9PSBORVdfVUNPREUp
OwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX3BhdGNoKHZvaWQgKm1jKQorc3RhdGljIHZvaWQgZnJl
ZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICptY19hbWQpCiB7Ci0gICAgc3RydWN0IG1p
Y3JvY29kZV9hbWQgKm1jX2FtZCA9IG1jOwotCiAgICAgaWYgKCBtY19hbWQgKQogICAgIHsKICAg
ICAgICAgeGZyZWUobWNfYW1kLT5lcXVpdl9jcHVfdGFibGUpOwpAQCAtMjA0LDEyICsyMDUsMTIg
QEAgc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJlX2hlYWRlcigKIHN0
YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgY29tcGFyZV9wYXRjaCgKICAgICBjb25z
dCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpuZXcsIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0
Y2ggKm9sZCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKm5ld19o
ZWFkZXIgPSBuZXctPm1jX2FtZC0+bXBiOwotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVh
ZGVyX2FtZCAqb2xkX2hlYWRlciA9IG9sZC0+bWNfYW1kLT5tcGI7CisgICAgY29uc3Qgc3RydWN0
IG1pY3JvY29kZV9oZWFkZXJfYW1kICpuZXdfaGVhZGVyID0gbmV3LT5tcGI7CisgICAgY29uc3Qg
c3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICpvbGRfaGVhZGVyID0gb2xkLT5tcGI7CiAKICAg
ICAvKiBCb3RoIHBhdGNoZXMgdG8gY29tcGFyZSBhcmUgc3VwcG9zZWQgdG8gYmUgYXBwbGljYWJs
ZSB0byBsb2NhbCBDUFUuICovCi0gICAgQVNTRVJUKG1pY3JvY29kZV9maXRzKG5ldy0+bWNfYW1k
KSAhPSBNSVNfVUNPREUpOwotICAgIEFTU0VSVChtaWNyb2NvZGVfZml0cyhvbGQtPm1jX2FtZCkg
IT0gTUlTX1VDT0RFKTsKKyAgICBBU1NFUlQobWljcm9jb2RlX2ZpdHMobmV3KSAhPSBNSVNfVUNP
REUpOworICAgIEFTU0VSVChtaWNyb2NvZGVfZml0cyhvbGQpICE9IE1JU19VQ09ERSk7CiAKICAg
ICByZXR1cm4gY29tcGFyZV9oZWFkZXIobmV3X2hlYWRlciwgb2xkX2hlYWRlcik7CiB9CkBAIC0y
MjgsNyArMjI5LDcgQEAgc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUoY29uc3Qgc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAgaWYgKCAhbWF0Y2hfY3B1KHBhdGNoKSApCiAgICAg
ICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgaGRyID0gcGF0Y2gtPm1jX2FtZC0+bXBiOworICAg
IGhkciA9IHBhdGNoLT5tcGI7CiAKICAgICBod19lcnIgPSB3cm1zcl9zYWZlKE1TUl9BTURfUEFU
Q0hMT0FERVIsICh1bnNpZ25lZCBsb25nKWhkcik7CiAKQEAgLTU1MywxNCArNTU0LDcgQEAgc3Rh
dGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2
b2lkICpidWYsCiAgICAgewogICAgICAgICBtY19hbWQtPm1wYiA9IHNhdmVkOwogICAgICAgICBt
Y19hbWQtPm1wYl9zaXplID0gc2F2ZWRfc2l6ZTsKLSAgICAgICAgcGF0Y2ggPSB4bWFsbG9jKHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2gpOwotICAgICAgICBpZiAoIHBhdGNoICkKLSAgICAgICAgICAg
IHBhdGNoLT5tY19hbWQgPSBtY19hbWQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgZnJlZV9wYXRjaChtY19hbWQpOwotICAgICAgICAgICAgZXJyb3IgPSAtRU5PTUVNOwot
ICAgICAgICB9CisgICAgICAgIHBhdGNoID0gbWNfYW1kOwogICAgIH0KICAgICBlbHNlCiAgICAg
ICAgIGZyZWVfcGF0Y2gobWNfYW1kKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWlj
cm9jb2RlL2NvcmUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUuYwppbmRleCA2
MTE1MGUwNGM4Li5iM2U1OTEzZDQ5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3Jv
Y29kZS9jb3JlLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvY29yZS5jCkBAIC0y
NDUsOCArMjQ1LDcgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhcnNlX2Jsb2Io
Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKQogCiBzdGF0aWMgdm9pZCBtaWNyb2NvZGVfZnJl
ZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICptaWNyb2NvZGVfcGF0Y2gpCiB7Ci0gICAg
bWljcm9jb2RlX29wcy0+ZnJlZV9wYXRjaChtaWNyb2NvZGVfcGF0Y2gtPm1jKTsKLSAgICB4ZnJl
ZShtaWNyb2NvZGVfcGF0Y2gpOworICAgIG1pY3JvY29kZV9vcHMtPmZyZWVfcGF0Y2gobWljcm9j
b2RlX3BhdGNoKTsKIH0KIAogLyogUmV0dXJuIHRydWUgaWYgY2FjaGUgZ2V0cyB1cGRhdGVkLiBP
dGhlcndpc2UsIHJldHVybiBmYWxzZSAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9t
aWNyb2NvZGUvaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKaW5k
ZXggNDljNDZjZDE0Ni4uOWUyM2YyYTNjNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9t
aWNyb2NvZGUvaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5j
CkBAIC01MCwxMSArNTAsMTQgQEAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgewogICAg
IHVuc2lnbmVkIGludCByZXNlcnZlZFszXTsKIH07CiAKLXN0cnVjdCBtaWNyb2NvZGVfaW50ZWwg
eworc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7CiAgICAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJf
aW50ZWwgaGRyOwogICAgIHVuc2lnbmVkIGludCBiaXRzWzBdOwogfTsKIAorLyogVGVtcG9yYXJ5
LCB1bnRpbCB0aGUgbWljcm9jb2RlXyogc3RydWN0dXJlIGFyZSBkaXNlbnRhbmdsZWQuICovCisj
ZGVmaW5lIG1pY3JvY29kZV9pbnRlbCBtaWNyb2NvZGVfcGF0Y2gKKwogLyogbWljcm9jb2RlIGZv
cm1hdCBpcyBleHRlbmRlZCBmcm9tIHByZXNjb3R0IHByb2Nlc3NvcnMgKi8KIHN0cnVjdCBleHRl
bmRlZF9zaWduYXR1cmUgewogICAgIHVuc2lnbmVkIGludCBzaWc7CkBAIC0yNDMsMTIgKzI0Niwx
MiBAQCBzdGF0aWMgYm9vbCBtYXRjaF9jcHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAq
cGF0Y2gpCiAgICAgaWYgKCAhcGF0Y2ggKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBy
ZXR1cm4gbWljcm9jb2RlX3VwZGF0ZV9tYXRjaCgmcGF0Y2gtPm1jX2ludGVsLT5oZHIpID09IE5F
V19VQ09ERTsKKyAgICByZXR1cm4gbWljcm9jb2RlX3VwZGF0ZV9tYXRjaCgmcGF0Y2gtPmhkcikg
PT0gTkVXX1VDT0RFOwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX3BhdGNoKHZvaWQgKm1jKQorc3Rh
dGljIHZvaWQgZnJlZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKIHsKLSAg
ICB4ZnJlZShtYyk7CisgICAgeGZyZWUocGF0Y2gpOwogfQogCiBzdGF0aWMgZW51bSBtaWNyb2Nv
ZGVfbWF0Y2hfcmVzdWx0IGNvbXBhcmVfcGF0Y2goCkBAIC0yNTgsMTEgKzI2MSwxMCBAQCBzdGF0
aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNvbXBhcmVfcGF0Y2goCiAgICAgICogQm90
aCBwYXRjaGVzIHRvIGNvbXBhcmUgYXJlIHN1cHBvc2VkIHRvIGJlIGFwcGxpY2FibGUgdG8gbG9j
YWwgQ1BVLgogICAgICAqIEp1c3QgY29tcGFyZSB0aGUgcmV2aXNpb24gbnVtYmVyLgogICAgICAq
LwotICAgIEFTU0VSVChtaWNyb2NvZGVfdXBkYXRlX21hdGNoKCZvbGQtPm1jX2ludGVsLT5oZHIp
ICE9IE1JU19VQ09ERSk7Ci0gICAgQVNTRVJUKG1pY3JvY29kZV91cGRhdGVfbWF0Y2goJm5ldy0+
bWNfaW50ZWwtPmhkcikgIT0gTUlTX1VDT0RFKTsKKyAgICBBU1NFUlQobWljcm9jb2RlX3VwZGF0
ZV9tYXRjaCgmb2xkLT5oZHIpICE9IE1JU19VQ09ERSk7CisgICAgQVNTRVJUKG1pY3JvY29kZV91
cGRhdGVfbWF0Y2goJm5ldy0+aGRyKSAhPSBNSVNfVUNPREUpOwogCi0gICAgcmV0dXJuIChuZXct
Pm1jX2ludGVsLT5oZHIucmV2ID4gb2xkLT5tY19pbnRlbC0+aGRyLnJldikgPyBORVdfVUNPREUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA6IE9MRF9VQ09ERTsKKyAgICByZXR1cm4gKG5ldy0+aGRyLnJldiA+IG9sZC0+aGRyLnJl
dikgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CiB9CiAKIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9j
b2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQpAQCAtMjc5LDcgKzI4MSw3
IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0
Y2ggKnBhdGNoKQogICAgIGlmICggIW1hdGNoX2NwdShwYXRjaCkgKQogICAgICAgICByZXR1cm4g
LUVJTlZBTDsKIAotICAgIG1jX2ludGVsID0gcGF0Y2gtPm1jX2ludGVsOworICAgIG1jX2ludGVs
ID0gcGF0Y2g7CiAKICAgICAvKiB3cml0ZSBtaWNyb2NvZGUgdmlhIE1TUiAweDc5ICovCiAgICAg
d3Jtc3JsKE1TUl9JQTMyX1VDT0RFX1dSSVRFLCAodW5zaWduZWQgbG9uZyltY19pbnRlbC0+Yml0
cyk7CkBAIC0zNjgsMTYgKzM3MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpj
cHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAogICAgICAgICBlcnJvciA9IG9m
ZnNldDsKIAogICAgIGlmICggc2F2ZWQgKQotICAgIHsKLSAgICAgICAgcGF0Y2ggPSB4bWFsbG9j
KHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gpOwotICAgICAgICBpZiAoIHBhdGNoICkKLSAgICAgICAg
ICAgIHBhdGNoLT5tY19pbnRlbCA9IHNhdmVkOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHhmcmVlKHNhdmVkKTsKLSAgICAgICAgICAgIGVycm9yID0gLUVOT01FTTsKLSAg
ICAgICAgfQotICAgIH0KKyAgICAgICAgcGF0Y2ggPSBzYXZlZDsKIAogICAgIGlmICggZXJyb3Ig
JiYgIXBhdGNoICkKICAgICAgICAgcGF0Y2ggPSBFUlJfUFRSKGVycm9yKTsKZGlmZiAtLWdpdCBh
L3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUuaCBiL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL3ByaXZhdGUuaAppbmRleCAyMzBiOTM1Yzk0Li5kZjBkMDg1MmNkIDEwMDY0NAot
LS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9wcml2YXRlLmgKKysrIGIveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvcHJpdmF0ZS5oCkBAIC0xMSwxMyArMTEsOCBAQCBlbnVtIG1pY3Jv
Y29kZV9tYXRjaF9yZXN1bHQgewogICAgIE1JU19VQ09ERSwgLyogc2lnbmF0dXJlIG1pc21hdGNo
ZWQgKi8KIH07CiAKLXN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggewotICAgIHVuaW9uIHsKLSAgICAg
ICAgc3RydWN0IG1pY3JvY29kZV9pbnRlbCAqbWNfaW50ZWw7Ci0gICAgICAgIHN0cnVjdCBtaWNy
b2NvZGVfYW1kICptY19hbWQ7Ci0gICAgICAgIHZvaWQgKm1jOwotICAgIH07Ci19OworLyogT3Bh
cXVlLiAgSW50ZXJuYWxzIGFyZSB2ZW5kb3Itc3BlY2lmaWMuICovCitzdHJ1Y3QgbWljcm9jb2Rl
X3BhdGNoOwogCiBzdHJ1Y3QgbWljcm9jb2RlX29wcyB7CiAgICAgLyoKQEAgLTYyLDcgKzU3LDcg
QEAgc3RydWN0IG1pY3JvY29kZV9vcHMgewogICAgIHZvaWQgKCplbmRfdXBkYXRlX3BlcmNwdSko
dm9pZCk7CiAKICAgICAvKiBGcmVlIGEgcGF0Y2ggcHJldmlvdXNseSBhbGxvY2F0ZWQgYnkgY3B1
X3JlcXVlc3RfbWljcm9jb2RlKCkuICovCi0gICAgdm9pZCAoKmZyZWVfcGF0Y2gpKHZvaWQgKm1j
KTsKKyAgICB2b2lkICgqZnJlZV9wYXRjaCkoc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gp
OwogCiAgICAgLyoKICAgICAgKiBJcyB0aGUgbWljcm9jb2RlIHBhdGNoIGFwcGxpY2FibGUgZm9y
IHRoZSBjdXJyZW50IENQVSwgYW5kIG5ld2VyIHRoYW4KLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRj
aGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QK
WGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl
Y3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:58:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:58:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZwn-0001eW-Nv; Sat, 04 Apr 2020 03:58:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZwl-0001e7-LI
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:15 +0000
X-Inumbo-ID: 829d42c2-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 829d42c2-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:58:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=fGqmraHCAVt9QzIq9hY7nUt2rHne/C2b/mWaXuBEmPM=; b=NOpM39Z1iuLmQTDgUAZwhPxoSE
 zxiRkuYmxYjCss/9kk9/ECSLUp79L4fWUER7eOlVBltr2qzV5IOcQauCnAsi0ynBC0dQzYsGJbuXJ
 6qiJBm+0qY5djJ1KJ+gx0SAUXkqnuEXea3RkhTGJa+2npwd9f/8V6HJRbz1tbfUEtOTU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwk-0005Bw-Tt
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwk-0006E4-T1
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZwk-0006E4-T1@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:58:14 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/intel: Adjust
 microcode_sanity_check() to not take void *
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGRkNmQwNTllMjU4ODBhYTU5ZjJmYzY4NDQ2YjY5NzhhYWJjMjViZWMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxNjowMzoyMiAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBBZGp1c3QgbWljcm9jb2RlX3Nhbml0
eV9jaGVjaygpIHRvIG5vdCB0YWtlIHZvaWQgKgogICAgCiAgICBtaWNyb2NvZGVfc2FuaXR5X2No
ZWNrKCkncyBjYWxsZXJzIGFjdHVhbGx5IGNhbGwgaXQgd2l0aCBhIG1peHR1cmUgb2YKICAgIG1p
Y3JvY29kZV9pbnRlbCgvcGF0Y2gpIGFuZCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsIHBvaW50ZXJz
LCB3aGljaCBpcyBmcmFnaWxlLgogICAgCiAgICBSZXdvcmsgaXQgdG8gdGFrZSBzdHJ1Y3QgbWlj
cm9jb2RlX3BhdGNoICosIHdoaWNoIGluIHR1cm4gcmVxdWlyZXMKICAgIG1pY3JvY29kZV91cGRh
dGVfbWF0Y2goKSdzIHR5cGUgdG8gYmUgYWx0ZXJlZC4KICAgIAogICAgTm8gZnVuY3Rpb25hbCBj
aGFuZ2UgLSBjb21waWxlZCBiaW5hcnkgaXMgaWRlbnRpY2FsLgogICAgCiAgICBTaWduZWQtb2Zm
LWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3
ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9pbnRlbC5jIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNo
YW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9j
b2RlL2ludGVsLmMKaW5kZXggOWUyM2YyYTNjNy4uNjBiMDhkMjQ0NiAxMDA2NDQKLS0tIGEveGVu
L2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21p
Y3JvY29kZS9pbnRlbC5jCkBAIC0xMTYsOSArMTE2LDkgQEAgc3RhdGljIGludCBjb2xsZWN0X2Nw
dV9pbmZvKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQogICAgIHJldHVybiAwOwogfQogCi1z
dGF0aWMgaW50IG1pY3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgdm9pZCAqbWMpCitzdGF0aWMg
aW50IG1pY3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAq
bWMpCiB7Ci0gICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgKm1jX2hlYWRl
ciA9IG1jOworICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICptY19oZWFk
ZXIgPSAmbWMtPmhkcjsKICAgICBjb25zdCBzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUgKmV4dF9o
ZWFkZXIgPSBOVUxMOwogICAgIGNvbnN0IHN0cnVjdCBleHRlbmRlZF9zaWduYXR1cmUgKmV4dF9z
aWc7CiAgICAgdW5zaWduZWQgbG9uZyB0b3RhbF9zaXplLCBkYXRhX3NpemUsIGV4dF90YWJsZV9z
aXplOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3Nhbml0eV9jaGVj
ayhjb25zdCB2b2lkICptYykKICAgICAgICAgICAgICAgICAgICAiU21hbGwgZXh0dGFibGUgc2l6
ZSBpbiBtaWNyb2NvZGUgZGF0YSBmaWxlXG4iKTsKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM
OwogICAgICAgICB9Ci0gICAgICAgIGV4dF9oZWFkZXIgPSBtYyArIE1DX0hFQURFUl9TSVpFICsg
ZGF0YV9zaXplOworICAgICAgICBleHRfaGVhZGVyID0gKHZvaWQgKiltYyArIE1DX0hFQURFUl9T
SVpFICsgZGF0YV9zaXplOwogICAgICAgICBpZiAoIGV4dF90YWJsZV9zaXplICE9IGV4dHRhYmxl
X3NpemUoZXh0X2hlYWRlcikgKQogICAgICAgICB7CiAgICAgICAgICAgICBwcmludGsoS0VSTl9F
UlIgIm1pY3JvY29kZTogZXJyb3IhICIKQEAgLTIwOCw4ICsyMDgsOSBAQCBzdGF0aWMgaW50IG1p
Y3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgdm9pZCAqbWMpCiAKIC8qIENoZWNrIGFuIHVwZGF0
ZSBhZ2FpbnN0IHRoZSBDUFUgc2lnbmF0dXJlIGFuZCBjdXJyZW50IHVwZGF0ZSByZXZpc2lvbiAq
Lwogc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfdXBkYXRlX21h
dGNoKAotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICptY19oZWFkZXIp
CisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWMpCiB7CisgICAgY29uc3Qgc3Ry
dWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgKm1jX2hlYWRlciA9ICZtYy0+aGRyOwogICAgIGNv
bnN0IHN0cnVjdCBleHRlbmRlZF9zaWd0YWJsZSAqZXh0X2hlYWRlcjsKICAgICBjb25zdCBzdHJ1
Y3QgZXh0ZW5kZWRfc2lnbmF0dXJlICpleHRfc2lnOwogICAgIHVuc2lnbmVkIGludCBpOwpAQCAt
MjIwLDcgKzIyMSw3IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgbWljcm9j
b2RlX3VwZGF0ZV9tYXRjaCgKICAgICB1bnNpZ25lZCBsb25nIGRhdGFfc2l6ZSA9IGdldF9kYXRh
c2l6ZShtY19oZWFkZXIpOwogICAgIGNvbnN0IHZvaWQgKmVuZCA9IChjb25zdCB2b2lkICopbWNf
aGVhZGVyICsgZ2V0X3RvdGFsc2l6ZShtY19oZWFkZXIpOwogCi0gICAgQVNTRVJUKCFtaWNyb2Nv
ZGVfc2FuaXR5X2NoZWNrKG1jX2hlYWRlcikpOworICAgIEFTU0VSVCghbWljcm9jb2RlX3Nhbml0
eV9jaGVjayhtYykpOwogICAgIGlmICggc2lnbWF0Y2goc2lnLCBtY19oZWFkZXItPnNpZywgcGYs
IG1jX2hlYWRlci0+cGYpICkKICAgICAgICAgcmV0dXJuIChtY19oZWFkZXItPnJldiA+IHJldikg
PyBORVdfVUNPREUgOiBPTERfVUNPREU7CiAKQEAgLTI0Niw3ICsyNDcsNyBAQCBzdGF0aWMgYm9v
bCBtYXRjaF9jcHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAgaWYg
KCAhcGF0Y2ggKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbWljcm9jb2Rl
X3VwZGF0ZV9tYXRjaCgmcGF0Y2gtPmhkcikgPT0gTkVXX1VDT0RFOworICAgIHJldHVybiBtaWNy
b2NvZGVfdXBkYXRlX21hdGNoKHBhdGNoKSA9PSBORVdfVUNPREU7CiB9CiAKIHN0YXRpYyB2b2lk
IGZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCkBAIC0yNjEsOCArMjYy
LDggQEAgc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJlX3BhdGNoKAog
ICAgICAqIEJvdGggcGF0Y2hlcyB0byBjb21wYXJlIGFyZSBzdXBwb3NlZCB0byBiZSBhcHBsaWNh
YmxlIHRvIGxvY2FsIENQVS4KICAgICAgKiBKdXN0IGNvbXBhcmUgdGhlIHJldmlzaW9uIG51bWJl
ci4KICAgICAgKi8KLSAgICBBU1NFUlQobWljcm9jb2RlX3VwZGF0ZV9tYXRjaCgmb2xkLT5oZHIp
ICE9IE1JU19VQ09ERSk7Ci0gICAgQVNTRVJUKG1pY3JvY29kZV91cGRhdGVfbWF0Y2goJm5ldy0+
aGRyKSAhPSBNSVNfVUNPREUpOworICAgIEFTU0VSVChtaWNyb2NvZGVfdXBkYXRlX21hdGNoKG9s
ZCkgIT0gTUlTX1VDT0RFKTsKKyAgICBBU1NFUlQobWljcm9jb2RlX3VwZGF0ZV9tYXRjaChuZXcp
ICE9IE1JU19VQ09ERSk7CiAKICAgICByZXR1cm4gKG5ldy0+aGRyLnJldiA+IG9sZC0+aGRyLnJl
dikgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CiB9CkBAIC0zNTcsNyArMzU4LDcgQEAgc3RhdGlj
IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lk
ICpidWYsCiAgICAgICAgICAqIElmIHRoZSBuZXcgdXBkYXRlIGNvdmVycyBjdXJyZW50IENQVSwg
Y29tcGFyZSB1cGRhdGVzIGFuZCBzdG9yZSB0aGUKICAgICAgICAgICogb25lIHdpdGggaGlnaGVy
IHJldmlzaW9uLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCAobWljcm9jb2RlX3VwZGF0ZV9t
YXRjaCgmbWMtPmhkcikgIT0gTUlTX1VDT0RFKSAmJgorICAgICAgICBpZiAoIChtaWNyb2NvZGVf
dXBkYXRlX21hdGNoKG1jKSAhPSBNSVNfVUNPREUpICYmCiAgICAgICAgICAgICAgKCFzYXZlZCB8
fCAobWMtPmhkci5yZXYgPiBzYXZlZC0+aGRyLnJldikpICkKICAgICAgICAgewogICAgICAgICAg
ICAgeGZyZWUoc2F2ZWQpOwotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94
ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxp
c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5n
ZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:58:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:58:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZwx-0001gN-Pd; Sat, 04 Apr 2020 03:58:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZwv-0001g2-OA
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:25 +0000
X-Inumbo-ID: 889f63c6-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 889f63c6-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:58:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=StmgWMRMRK4v0CdLcKeBKCV/rYWKguQ+n+Nh12m4TaM=; b=CBN9U0N+vn7tFUv8obbwBN8O5f
 /Ffdwc/F4DFYTeoVz86KlZc+gHV2tBtBb8Y8nBNlR4Ez3pAx/TEHUORg/cRdmeZ8VmAzT5jCwm+lv
 UWESG+XKShl7knRopQw+wWUbShJoUNQER/E+zWAmZDsMTq/ZK4rrT+7QWiRnFnc3+8DQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwv-0005C5-0H
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZwu-0006Eb-Vh
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZwu-0006Eb-Vh@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:58:24 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/intel: Remove gratuitous
 memory allocations from cpu_request_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGIzNjI0MTY2MzdkMTEyMWU0YzBiZDI1YzQ4YmVjYjhiNzM3NjU4NDQKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxNzowMTozMyAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBSZW1vdmUgZ3JhdHVpdG91cyBtZW1v
cnkgYWxsb2NhdGlvbnMgZnJvbSBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKQogICAgCiAgICBjcHVf
cmVxdWVzdF9taWNyb2NvZGUoKSBuZWVkcyB0byBzY2FuIGl0cyBjb250YWluZXIgYW5kIGR1cGxp
Y2F0ZSBvbmUgYmxvYiwKICAgIGJ1dCB0aGUgZ2V0X25leHRfdWNvZGVfZnJvbV9idWZmZXIoKSBo
ZWxwZXIgZHVwbGljYXRlcyBldmVyeSBibG9iIGluIHR1cm4uCiAgICBGdXJ0aGVybW9yZSwgdGhl
IGxlbmd0aCBjaGVja2luZyBpcyBvbmx5IHNhZmUgZnJvbSBvdmVyZmxvdyBpbiA2NGJpdCBidWls
ZHMuCiAgICAKICAgIERlbGV0ZSBnZXRfbmV4dF91Y29kZV9mcm9tX2J1ZmZlcigpIGFuZCBhbHRl
ciB0aGUgcHVycG9zZSBvZiB0aGUgc2F2ZWQKICAgIHZhcmlhYmxlIHRvIHNpbXBseSBwb2ludCBz
b21ld2hlcmUgaW4gYnVmIHVudGlsIHdlJ3JlIHJlYWR5IHRvIHJldHVybi4KICAgIAogICAgVGhp
cyBpcyBvbmx5IGEgbW9kZXN0IHJlZHVjdGlvbiBpbiBhYnNvbHV0ZSBjb2RlIHNpemUsIGJ1dCBh
dm9pZHMgbWFraW5nCiAgICBtZW1vcnkgYWxsb2NhdGlvbnMgZm9yIGV2ZXJ5IGJsb2IgaW4gdGhl
IGNvbnRhaW5lci4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3
LmNvb3BlcjNAY2l0cml4LmNvbT4KICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxp
Y2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyB8IDY1
ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg
MjUgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2lu
dGVsLmMKaW5kZXggNjBiMDhkMjQ0Ni4uOWExMTcwYTg3MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29k
ZS9pbnRlbC5jCkBAIC0zMTEsNjcgKzMxMSw1MiBAQCBzdGF0aWMgaW50IGFwcGx5X21pY3JvY29k
ZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICByZXR1cm4gMDsKIH0K
IAotc3RhdGljIGxvbmcgZ2V0X25leHRfdWNvZGVfZnJvbV9idWZmZXIoc3RydWN0IG1pY3JvY29k
ZV9pbnRlbCAqKm1jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqYnVmLCB1bnNpZ25lZCBsb25nIHNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldCkKLXsKLSAgICBzdHJ1Y3Qg
bWljcm9jb2RlX2hlYWRlcl9pbnRlbCAqbWNfaGVhZGVyOwotICAgIHVuc2lnbmVkIGxvbmcgdG90
YWxfc2l6ZTsKLQotICAgIC8qIE5vIG1vcmUgZGF0YSAqLwotICAgIGlmICggb2Zmc2V0ID49IHNp
emUgKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtY19oZWFkZXIgPSAoc3RydWN0IG1pY3JvY29k
ZV9oZWFkZXJfaW50ZWwgKikoYnVmICsgb2Zmc2V0KTsKLSAgICB0b3RhbF9zaXplID0gZ2V0X3Rv
dGFsc2l6ZShtY19oZWFkZXIpOwotCi0gICAgaWYgKCAob2Zmc2V0ICsgdG90YWxfc2l6ZSkgPiBz
aXplICkKLSAgICB7Ci0gICAgICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBlcnJvciEg
QmFkIGRhdGEgaW4gbWljcm9jb2RlIGRhdGEgZmlsZVxuIik7Ci0gICAgICAgIHJldHVybiAtRUlO
VkFMOwotICAgIH0KLQotICAgICptYyA9IHhtZW1kdXBfYnl0ZXMobWNfaGVhZGVyLCB0b3RhbF9z
aXplKTsKLSAgICBpZiAoICptYyA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC1FTk9NRU07Ci0K
LSAgICByZXR1cm4gb2Zmc2V0ICsgdG90YWxfc2l6ZTsKLX0KLQogc3RhdGljIHN0cnVjdCBtaWNy
b2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBz
aXplKQogewotICAgIGxvbmcgb2Zmc2V0ID0gMDsKICAgICBpbnQgZXJyb3IgPSAwOwotICAgIHN0
cnVjdCBtaWNyb2NvZGVfaW50ZWwgKm1jLCAqc2F2ZWQgPSBOVUxMOworICAgIGNvbnN0IHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKnNhdmVkID0gTlVMTDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX3Bh
dGNoICpwYXRjaCA9IE5VTEw7CiAKLSAgICB3aGlsZSAoIChvZmZzZXQgPSBnZXRfbmV4dF91Y29k
ZV9mcm9tX2J1ZmZlcigmbWMsIGJ1Ziwgc2l6ZSwgb2Zmc2V0KSkgPiAwICkKKyAgICB3aGlsZSAo
IHNpemUgKQogICAgIHsKLSAgICAgICAgZXJyb3IgPSBtaWNyb2NvZGVfc2FuaXR5X2NoZWNrKG1j
KTsKLSAgICAgICAgaWYgKCBlcnJvciApCisgICAgICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVf
cGF0Y2ggKm1jOworICAgICAgICB1bnNpZ25lZCBpbnQgYmxvYl9zaXplOworCisgICAgICAgIGlm
ICggc2l6ZSA8IE1DX0hFQURFUl9TSVpFIHx8ICAgICAgIC8qIEluc3VmZmljaWVudCBzcGFjZSBm
b3IgaGVhZGVyPyAqLworICAgICAgICAgICAgIChtYyA9IGJ1ZiktPmhkci5oZHJ2ZXIgIT0gMSB8
fCAvKiBVbnJlY29nbmlzZWQgaGVhZGVyIHZlcnNpb24/ICAgKi8KKyAgICAgICAgICAgICBtYy0+
aGRyLmxkcnZlciAhPSAxIHx8ICAgICAgICAgLyogVW5yZWNvZ25pc2VkIGxvYWRlciB2ZXJzaW9u
PyAgICovCisgICAgICAgICAgICAgc2l6ZSA8IChibG9iX3NpemUgPSAgICAgICAgICAgIC8qIElu
c3VmZmljaWVudCBzcGFjZSBmb3IgcGF0Y2g/ICAqLworICAgICAgICAgICAgICAgICAgICAgZ2V0
X3RvdGFsc2l6ZSgmbWMtPmhkcikpICkKICAgICAgICAgewotICAgICAgICAgICAgeGZyZWUobWMp
OworICAgICAgICAgICAgZXJyb3IgPSAtRUlOVkFMOworICAgICAgICAgICAgcHJpbnRrKFhFTkxP
R19XQVJOSU5HICJtaWNyb2NvZGU6IEJhZCBkYXRhIGluIGNvbnRhaW5lclxuIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGVycm9yID0gbWljcm9jb2RlX3Nhbml0
eV9jaGVjayhtYyk7CisgICAgICAgIGlmICggZXJyb3IgKQorICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgLyoKICAgICAgICAgICogSWYgdGhlIG5ldyB1cGRhdGUgY292ZXJzIGN1cnJlbnQg
Q1BVLCBjb21wYXJlIHVwZGF0ZXMgYW5kIHN0b3JlIHRoZQogICAgICAgICAgKiBvbmUgd2l0aCBo
aWdoZXIgcmV2aXNpb24uCiAgICAgICAgICAqLwogICAgICAgICBpZiAoIChtaWNyb2NvZGVfdXBk
YXRlX21hdGNoKG1jKSAhPSBNSVNfVUNPREUpICYmCiAgICAgICAgICAgICAgKCFzYXZlZCB8fCAo
bWMtPmhkci5yZXYgPiBzYXZlZC0+aGRyLnJldikpICkKLSAgICAgICAgewotICAgICAgICAgICAg
eGZyZWUoc2F2ZWQpOwogICAgICAgICAgICAgc2F2ZWQgPSBtYzsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB4ZnJlZShtYyk7CisKKyAgICAgICAgYnVmICArPSBibG9iX3Np
emU7CisgICAgICAgIHNpemUgLT0gYmxvYl9zaXplOwogICAgIH0KLSAgICBpZiAoIG9mZnNldCA8
IDAgKQotICAgICAgICBlcnJvciA9IG9mZnNldDsKIAogICAgIGlmICggc2F2ZWQgKQotICAgICAg
ICBwYXRjaCA9IHNhdmVkOworICAgIHsKKyAgICAgICAgcGF0Y2ggPSB4bWVtZHVwX2J5dGVzKHNh
dmVkLCBnZXRfdG90YWxzaXplKCZzYXZlZC0+aGRyKSk7CisKKyAgICAgICAgaWYgKCAhcGF0Y2gg
KQorICAgICAgICAgICAgZXJyb3IgPSAtRU5PTUVNOworICAgIH0KIAogICAgIGlmICggZXJyb3Ig
JiYgIXBhdGNoICkKICAgICAgICAgcGF0Y2ggPSBFUlJfUFRSKGVycm9yKTsKLS0KZ2VuZXJhdGVk
IGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBt
YWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:58:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:58:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZx7-0001hy-Rb; Sat, 04 Apr 2020 03:58:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZx5-0001hZ-Rx
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:35 +0000
X-Inumbo-ID: 8ea12f48-7628-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8ea12f48-7628-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 03:58:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ngQwd5MEiPF5FDRDx6zDV2HWnAsaXvja6x+Y9tLpwHI=; b=AO/Rc8HrV3dHhwC3U2MYjmgkgb
 a2LZH4DOwpkAtpoQg4Wag+uLjKuwYNatobtk0zlboMAOZAbbFVO0t0D4wwKWtm5c7ZKTUgfXcjhmX
 R4rgHXzEZy7v243g+4lXhNpyktYLe5qXNIbY7WilSNz9rBqVxR5XFFlexXHUDznFqjRY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZx5-0005CE-35
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZx5-0006FD-1w
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZx5-0006FD-1w@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:58:35 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/intel: Reimplement get_{data,
 total}size() helpers
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGQwZTVkYTY0MmM2YjMwMjRiODdmY2Y0NDVlYjg5YjA0OGU3YzgxNTAKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
VGh1IE1hciAxOSAxNTo0NzozMSAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBSZWltcGxlbWVudCBnZXRfe2RhdGEs
dG90YWx9c2l6ZSgpIGhlbHBlcnMKICAgIAogICAgRXZlcnkgY2FsbGVyIGFjdHVhbGx5IHBhc3Nl
cyBhIHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICosIGJ1dCBpdCBpcyBtb3JlCiAgICBo
ZWxwZnVsIHRvIHVzIGxvbmd0ZXJtIHRvIHRha2Ugc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqLiAg
SW1wbGVtZW50IHRoZQogICAgaGVscGVycyB3aXRoIHByb3BlciB0eXBlcywgYW5kIGxlYXZlIGEg
Y29tbWVudCBleHBsYWluaW5nIHRoZSBQZW50aXVtIFByby9JSQogICAgYmVoYXZpb3VyIHdpdGgg
ZW1wdHkge2RhdGEsdG90YWx9c2l6ZSBmaWVsZHMuCiAgICAKICAgIE5vIGZ1bmN0aW9uYWwgY2hh
bmdlLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVy
M0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl
LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIHwgMzcgKysrKysr
KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIyIGluc2Vy
dGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL2ludGVsLmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCmlu
ZGV4IDlhMTE3MGE4NzAuLjRkOTZmNWI3NmIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwu
YwpAQCAtNDQsNiArNDQsMTIgQEAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgewogICAg
IHVuc2lnbmVkIGludCBzaWc7CiAgICAgdW5zaWduZWQgaW50IGNrc3VtOwogICAgIHVuc2lnbmVk
IGludCBsZHJ2ZXI7CisKKyAgICAvKgorICAgICAqIE1pY3JvY29kZSBmb3IgdGhlIFBlbnRpdW0g
UHJvIGFuZCBJSSBoYWQgYWxsIGZ1cnRoZXIgZmllbGRzIGluIHRoZQorICAgICAqIGhlYWRlciBy
ZXNlcnZlZCwgaGFkIGEgZml4ZWQgZGF0YXNpemUgb2YgMjAwMCBhbmQgdG90YWxzaXplIG9mIDIw
NDgsCisgICAgICogYW5kIGRpZG4ndCB1c2UgcGxhdGZvcm0gZmxhZ3MgZGVzcGl0ZSB0aGUgYXZh
aWxhYmlsaXR5IG9mIHRoZSBNU1IuCisgICAgICovCiAgICAgdW5zaWduZWQgaW50IHBmOwogICAg
IHVuc2lnbmVkIGludCBkYXRhc2l6ZTsKICAgICB1bnNpZ25lZCBpbnQgdG90YWxzaXplOwpAQCAt
NzIsMjAgKzc4LDIxIEBAIHN0cnVjdCBleHRlbmRlZF9zaWd0YWJsZSB7CiAgICAgc3RydWN0IGV4
dGVuZGVkX3NpZ25hdHVyZSBzaWdzWzBdOwogfTsKIAotI2RlZmluZSBERUZBVUxUX1VDT0RFX0RB
VEFTSVpFICAoMjAwMCkKKyNkZWZpbmUgUFBST19VQ09ERV9EQVRBU0laRSAgICAgMjAwMAogI2Rl
ZmluZSBNQ19IRUFERVJfU0laRSAgICAgICAgICAoc2l6ZW9mKHN0cnVjdCBtaWNyb2NvZGVfaGVh
ZGVyX2ludGVsKSkKLSNkZWZpbmUgREVGQVVMVF9VQ09ERV9UT1RBTFNJWkUgKERFRkFVTFRfVUNP
REVfREFUQVNJWkUgKyBNQ19IRUFERVJfU0laRSkKICNkZWZpbmUgRVhUX0hFQURFUl9TSVpFICAg
ICAgICAgKHNpemVvZihzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUpKQogI2RlZmluZSBFWFRfU0lH
TkFUVVJFX1NJWkUgICAgICAoc2l6ZW9mKHN0cnVjdCBleHRlbmRlZF9zaWduYXR1cmUpKQogI2Rl
ZmluZSBEV1NJWkUgICAgICAgICAgICAgICAgICAoc2l6ZW9mKHUzMikpCi0jZGVmaW5lIGdldF90
b3RhbHNpemUobWMpIFwKLSAgICAgICAgKCgoc3RydWN0IG1pY3JvY29kZV9pbnRlbCAqKW1jKS0+
aGRyLnRvdGFsc2l6ZSA/IFwKLSAgICAgICAgICgoc3RydWN0IG1pY3JvY29kZV9pbnRlbCAqKW1j
KS0+aGRyLnRvdGFsc2l6ZSA6IFwKLSAgICAgICAgIERFRkFVTFRfVUNPREVfVE9UQUxTSVpFKQog
Ci0jZGVmaW5lIGdldF9kYXRhc2l6ZShtYykgXAotICAgICAgICAoKChzdHJ1Y3QgbWljcm9jb2Rl
X2ludGVsICopbWMpLT5oZHIuZGF0YXNpemUgPyBcCi0gICAgICAgICAoKHN0cnVjdCBtaWNyb2Nv
ZGVfaW50ZWwgKiltYyktPmhkci5kYXRhc2l6ZSA6IERFRkFVTFRfVUNPREVfREFUQVNJWkUpCitz
dGF0aWMgdWludDMyX3QgZ2V0X2RhdGFzaXplKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gg
KnBhdGNoKQoreworICAgIHJldHVybiBwYXRjaC0+aGRyLmRhdGFzaXplID86IFBQUk9fVUNPREVf
REFUQVNJWkU7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBnZXRfdG90YWxzaXplKGNvbnN0IHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQoreworICAgIHJldHVybiBwYXRjaC0+aGRyLnRvdGFs
c2l6ZSA/OiBQUFJPX1VDT0RFX0RBVEFTSVpFICsgTUNfSEVBREVSX1NJWkU7Cit9CiAKICNkZWZp
bmUgc2lnbWF0Y2goczEsIHMyLCBwMSwgcDIpIFwKICAgICAgICAgKCgoczEpID09IChzMikpICYm
ICgoKHAxKSAmIChwMikpIHx8ICgoKHAxKSA9PSAwKSAmJiAoKHAyKSA9PSAwKSkpKQpAQCAtMTI1
LDggKzEzMiw4IEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3Nhbml0eV9jaGVjayhjb25zdCBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoICptYykKICAgICB1bnNpZ25lZCBpbnQgZXh0X3NpZ2NvdW50ID0g
MCwgaTsKICAgICB1aW50MzJfdCBzdW0sIG9yaWdfc3VtOwogCi0gICAgdG90YWxfc2l6ZSA9IGdl
dF90b3RhbHNpemUobWNfaGVhZGVyKTsKLSAgICBkYXRhX3NpemUgPSBnZXRfZGF0YXNpemUobWNf
aGVhZGVyKTsKKyAgICB0b3RhbF9zaXplID0gZ2V0X3RvdGFsc2l6ZShtYyk7CisgICAgZGF0YV9z
aXplID0gZ2V0X2RhdGFzaXplKG1jKTsKICAgICBpZiAoIChkYXRhX3NpemUgKyBNQ19IRUFERVJf
U0laRSkgPiB0b3RhbF9zaXplICkKICAgICB7CiAgICAgICAgIHByaW50ayhLRVJOX0VSUiAibWlj
cm9jb2RlOiBlcnJvciEgIgpAQCAtMjE4LDggKzIyNSw4IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29k
ZV9tYXRjaF9yZXN1bHQgbWljcm9jb2RlX3VwZGF0ZV9tYXRjaCgKICAgICB1bnNpZ25lZCBpbnQg
c2lnID0gY3B1X3NpZy0+c2lnOwogICAgIHVuc2lnbmVkIGludCBwZiA9IGNwdV9zaWctPnBmOwog
ICAgIHVuc2lnbmVkIGludCByZXYgPSBjcHVfc2lnLT5yZXY7Ci0gICAgdW5zaWduZWQgbG9uZyBk
YXRhX3NpemUgPSBnZXRfZGF0YXNpemUobWNfaGVhZGVyKTsKLSAgICBjb25zdCB2b2lkICplbmQg
PSAoY29uc3Qgdm9pZCAqKW1jX2hlYWRlciArIGdldF90b3RhbHNpemUobWNfaGVhZGVyKTsKKyAg
ICB1bnNpZ25lZCBsb25nIGRhdGFfc2l6ZSA9IGdldF9kYXRhc2l6ZShtYyk7CisgICAgY29uc3Qg
dm9pZCAqZW5kID0gKGNvbnN0IHZvaWQgKiltY19oZWFkZXIgKyBnZXRfdG90YWxzaXplKG1jKTsK
IAogICAgIEFTU0VSVCghbWljcm9jb2RlX3Nhbml0eV9jaGVjayhtYykpOwogICAgIGlmICggc2ln
bWF0Y2goc2lnLCBtY19oZWFkZXItPnNpZywgcGYsIG1jX2hlYWRlci0+cGYpICkKQEAgLTMyNyw3
ICszMzQsNyBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWlj
cm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgICAgICAobWMgPSBidWYpLT5oZHIuaGRy
dmVyICE9IDEgfHwgLyogVW5yZWNvZ25pc2VkIGhlYWRlciB2ZXJzaW9uPyAgICovCiAgICAgICAg
ICAgICAgbWMtPmhkci5sZHJ2ZXIgIT0gMSB8fCAgICAgICAgIC8qIFVucmVjb2duaXNlZCBsb2Fk
ZXIgdmVyc2lvbj8gICAqLwogICAgICAgICAgICAgIHNpemUgPCAoYmxvYl9zaXplID0gICAgICAg
ICAgICAvKiBJbnN1ZmZpY2llbnQgc3BhY2UgZm9yIHBhdGNoPyAgKi8KLSAgICAgICAgICAgICAg
ICAgICAgIGdldF90b3RhbHNpemUoJm1jLT5oZHIpKSApCisgICAgICAgICAgICAgICAgICAgICBn
ZXRfdG90YWxzaXplKG1jKSkgKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvciA9IC1FSU5W
QUw7CiAgICAgICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIm1pY3JvY29kZTogQmFkIGRh
dGEgaW4gY29udGFpbmVyXG4iKTsKQEAgLTM1Miw3ICszNTksNyBAQCBzdGF0aWMgc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKIAog
ICAgIGlmICggc2F2ZWQgKQogICAgIHsKLSAgICAgICAgcGF0Y2ggPSB4bWVtZHVwX2J5dGVzKHNh
dmVkLCBnZXRfdG90YWxzaXplKCZzYXZlZC0+aGRyKSk7CisgICAgICAgIHBhdGNoID0geG1lbWR1
cF9ieXRlcyhzYXZlZCwgZ2V0X3RvdGFsc2l6ZShzYXZlZCkpOwogCiAgICAgICAgIGlmICggIXBh
dGNoICkKICAgICAgICAgICAgIGVycm9yID0gLUVOT01FTTsKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1w
YXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxp
c3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnBy
b2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:58:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:58:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZxG-0001jS-VK; Sat, 04 Apr 2020 03:58:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZxF-0001jJ-V8
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:45 +0000
X-Inumbo-ID: 94a3e5fc-7628-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 94a3e5fc-7628-11ea-9e09-bc764e2007e4;
 Sat, 04 Apr 2020 03:58:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xhRsJac6Gy5RIV4vKcZ3BUURT83LJ6yC0kqaW8QRIrg=; b=2d/7yh5Ci219E5AOM8D53qz0tW
 KkZ6PtUYolGihofciZbdOU2olpl+kl9ogmtUXLTz7Dg+73WcZ0BfI13jgztCsMrnVGZpdvo+L2adU
 CJrsAMaRvEyeaDJPDLmguFQ8GShJndDZ+d97QhVc5S24MZTl1gj751E3vwBHFBbz2d3k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxF-0005CN-5j
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxF-0006On-4r
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZxF-0006On-4r@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:58:45 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/intel: Clean up
 microcode_update_match()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGU1NGIyMGVmNTBlMTViMDg3NWY5ZmQ1MTE2NmNmNGU0ZDU5MzdjZTMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxODoxMTo1MiAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBDbGVhbiB1cCBtaWNyb2NvZGVfdXBk
YXRlX21hdGNoKCkKICAgIAogICAgSW1wbGVtZW50IGEgbmV3IGdldF9leHRfc2lndGFibGUoKSBo
ZWxwZXIgdG8gYWJzdHJhY3QgdGhlIGxvZ2ljIGZvcgogICAgaWRlbnRpZnlpbmcgd2hldGhlciBh
biBleHRlbmRlZCBzaWduYXR1cmUgdGFibGUgZXhpc3RzLiAgQXMgcGFydCBvZiB0aGlzLAogICAg
cmVuYW1lIG1pY3JvY29kZV9pbnRlbC5iaXRzIHRvIGRhdGEgYW5kIGNoYW5nZSBpdHMgdHlwZSBz
byBpdCBjYW4gYmUgdXNlZnVsbHkKICAgIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgZGF0
YXNpemUgaGVhZGVyIGZpZWxkLgogICAgCiAgICBBbHNvLCByZXBsYWNlIHRoZSBzaWdtYXRjaCgp
IG1hY3JvIHdpdGggYSBzdGF0aWMgaW5saW5lIHdpdGggYSBtb3JlIHVzZWZ1bAogICAgQVBJLCBh
bmQgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IGl0IGlzIHNhZmUgdG8gZHJvcCBvbmUgb2YgdGhlIHBy
ZXZpb3VzCiAgICBjb25kaXRpb25hbHMuCiAgICAKICAgIE5vIHByYWN0aWNhbCBjaGFuZ2UgaW4g
YmVoYXZpb3VyLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcu
Y29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGlj
aEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIHwgNzcg
KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA1
MSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94
ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50
ZWwuYwppbmRleCA0ZDk2ZjViNzZiLi5hYjAzNTBhM2QyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94
ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2ludGVsLmMKQEAgLTU4LDcgKzU4LDkgQEAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwg
ewogCiBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoIHsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRl
cl9pbnRlbCBoZHI7Ci0gICAgdW5zaWduZWQgaW50IGJpdHNbMF07CisKKyAgICAvKiBNaWNyb2Nv
ZGUgcGF5bG9hZC4gIEZvcm1hdCBpcyBwcm9wcmlldHkgYW5kIGVuY3J5cHRlZC4gKi8KKyAgICB1
aW50OF90IGRhdGFbXTsKIH07CiAKIC8qIFRlbXBvcmFyeSwgdW50aWwgdGhlIG1pY3JvY29kZV8q
IHN0cnVjdHVyZSBhcmUgZGlzZW50YW5nbGVkLiAqLwpAQCAtOTQsOCArOTYsNDEgQEAgc3RhdGlj
IHVpbnQzMl90IGdldF90b3RhbHNpemUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0
Y2gpCiAgICAgcmV0dXJuIHBhdGNoLT5oZHIudG90YWxzaXplID86IFBQUk9fVUNPREVfREFUQVNJ
WkUgKyBNQ19IRUFERVJfU0laRTsKIH0KIAotI2RlZmluZSBzaWdtYXRjaChzMSwgczIsIHAxLCBw
MikgXAotICAgICAgICAoKChzMSkgPT0gKHMyKSkgJiYgKCgocDEpICYgKHAyKSkgfHwgKCgocDEp
ID09IDApICYmICgocDIpID09IDApKSkpCisvKgorICogQSBwaWVjZSBvZiBtaWNyb2NvZGUgaGFz
IGFuIGV4dGVuZGVkIHNpZ25hdHVyZSB0YWJsZSBpZiB0aGVyZSBpcyBzcGFjZQorICogYmV0d2Vl
biB0aGUgZW5kIG9mIGRhdGFbXSBhbmQgdGhlIHRvdGFsIHNpemUuICAoVGhpcyBsb2dpYyBhbHNv
IHdvcmtzCisgKiBhcHByb3ByaWF0ZWx5IGZvciBQZW50aXVtIFByby9JSSBtaWNyb2NvZGUsIHdo
aWNoIGhhcyAwIGZvciBib3RoIHNpemUKKyAqIGZpZWxkcywgYW5kIG5vIGV4dGVuZGVkIHNpZ25h
dHVyZSB0YWJsZS4pCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUg
KmdldF9leHRfc2lndGFibGUoCisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0
Y2gpCit7CisgICAgaWYgKCBwYXRjaC0+aGRyLnRvdGFsc2l6ZSA+IChNQ19IRUFERVJfU0laRSAr
IHBhdGNoLT5oZHIuZGF0YXNpemUpICkKKyAgICAgICAgcmV0dXJuIChjb25zdCB2b2lkICopJnBh
dGNoLT5kYXRhW3BhdGNoLT5oZHIuZGF0YXNpemVdOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisK
Ky8qCisgKiBBIHBpZWNlIG9mIG1pY3JvY29kZSBpcyBhcHBsaWNhYmxlIGZvciBhIENQVSBpZjoK
KyAqICAxKSB0aGUgc2lnbmF0dXJlcyAoQ1BVSUQuMS5FQVggLSBGYW1pbHkvTW9kZWwvU3RlcHBp
bmcpIG1hdGNoLCBhbmQKKyAqICAyKSBUaGUgUGxhdGZvcm0gRmxhZ3MgYml0bWFwIGludGVyc2Vj
dC4KKyAqCisgKiBBIENQVSB3aWxsIGhhdmUgYSBzaW5nbGUgUGxhdGZvcm0gRmxhZyBiaXQsIHdo
aWxlIHRoZSBtaWNyb2NvZGUgbWF5IGJlCisgKiBjb21tb24gdG8gbXVsdGlwbGUgcGxhdGZvcm1z
IGFuZCBoYXZlIG11bHRpcGxlIGJpdHMgc2V0LgorICoKKyAqIE5vdGU6IFRoZSBQZW50aXVtIFBy
by9JSSBtaWNyb2NvZGUgZGlkbid0IHVzZSBwbGF0Zm9ybSBmbGFncywgYW5kIHNob3VsZAorICog
dHJlYXQgMCBhcyBhIG1hdGNoLiAgSG93ZXZlciwgWGVuIGJlaW5nIDY0Yml0IG1lYW5zIHRoYXQg
dGhlIENQVSBzaWduYXR1cmUKKyAqIHdvbid0IG1hdGNoLCBhbGxvd2luZyB1cyB0byBzaW1wbGlm
eSB0aGUgbG9naWMuCisgKi8KK3N0YXRpYyBib29sIHNpZ25hdHVyZV9tYXRjaGVzKGNvbnN0IHN0
cnVjdCBjcHVfc2lnbmF0dXJlICpjcHVfc2lnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHVjb2RlX3NpZywgdW5zaWduZWQgaW50IHVjb2RlX3BmKQoreworICAg
IGlmICggY3B1X3NpZy0+c2lnICE9IHVjb2RlX3NpZyApCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIHJldHVybiBjcHVfc2lnLT5wZiAmIHVjb2RlX3BmOworfQogCiAjZGVmaW5lIGV4dHRh
YmxlX3NpemUoZXQpICgoZXQpLT5jb3VudCAqIEVYVF9TSUdOQVRVUkVfU0laRSArIEVYVF9IRUFE
RVJfU0laRSkKIApAQCAtMjE3LDM2ICsyNTIsMjYgQEAgc3RhdGljIGludCBtaWNyb2NvZGVfc2Fu
aXR5X2NoZWNrKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1jKQogc3RhdGljIGVudW0g
bWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKAogICAgIGNvbnN0
IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1jKQogewotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2Nv
ZGVfaGVhZGVyX2ludGVsICptY19oZWFkZXIgPSAmbWMtPmhkcjsKLSAgICBjb25zdCBzdHJ1Y3Qg
ZXh0ZW5kZWRfc2lndGFibGUgKmV4dF9oZWFkZXI7Ci0gICAgY29uc3Qgc3RydWN0IGV4dGVuZGVk
X3NpZ25hdHVyZSAqZXh0X3NpZzsKKyAgICBjb25zdCBzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUg
KmV4dDsKICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqY3B1
X3NpZyA9ICZ0aGlzX2NwdShjcHVfc2lnKTsKLSAgICB1bnNpZ25lZCBpbnQgc2lnID0gY3B1X3Np
Zy0+c2lnOwotICAgIHVuc2lnbmVkIGludCBwZiA9IGNwdV9zaWctPnBmOwotICAgIHVuc2lnbmVk
IGludCByZXYgPSBjcHVfc2lnLT5yZXY7Ci0gICAgdW5zaWduZWQgbG9uZyBkYXRhX3NpemUgPSBn
ZXRfZGF0YXNpemUobWMpOwotICAgIGNvbnN0IHZvaWQgKmVuZCA9IChjb25zdCB2b2lkICopbWNf
aGVhZGVyICsgZ2V0X3RvdGFsc2l6ZShtYyk7CiAKICAgICBBU1NFUlQoIW1pY3JvY29kZV9zYW5p
dHlfY2hlY2sobWMpKTsKLSAgICBpZiAoIHNpZ21hdGNoKHNpZywgbWNfaGVhZGVyLT5zaWcsIHBm
LCBtY19oZWFkZXItPnBmKSApCi0gICAgICAgIHJldHVybiAobWNfaGVhZGVyLT5yZXYgPiByZXYp
ID8gTkVXX1VDT0RFIDogT0xEX1VDT0RFOwogCi0gICAgZXh0X2hlYWRlciA9IChjb25zdCB2b2lk
ICopKG1jX2hlYWRlciArIDEpICsgZGF0YV9zaXplOwotICAgIGV4dF9zaWcgPSAoY29uc3Qgdm9p
ZCAqKShleHRfaGVhZGVyICsgMSk7CisgICAgLyogQ2hlY2sgdGhlIG1haW4gbWljcm9jb2RlIHNp
Z25hdHVyZS4gKi8KKyAgICBpZiAoIHNpZ25hdHVyZV9tYXRjaGVzKGNwdV9zaWcsIG1jLT5oZHIu
c2lnLCBtYy0+aGRyLnBmKSApCisgICAgICAgIGdvdG8gZm91bmQ7CiAKLSAgICAvKgotICAgICAq
IE1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgdG8gaG9sZCBhbiBleHRlbmRlZCBoZWFk
ZXIgYW5kIGVub3VnaAotICAgICAqIGFycmF5IGVsZW1lbnRzLgotICAgICAqLwotICAgIGlmICgg
ZW5kIDw9IChjb25zdCB2b2lkICopZXh0X3NpZyApCi0gICAgICAgIHJldHVybiBNSVNfVUNPREU7
Ci0KLSAgICBmb3IgKCBpID0gMDsgaSA8IGV4dF9oZWFkZXItPmNvdW50OyBpKysgKQotICAgICAg
ICBpZiAoIHNpZ21hdGNoKHNpZywgZXh0X3NpZ1tpXS5zaWcsIHBmLCBleHRfc2lnW2ldLnBmKSAp
Ci0gICAgICAgICAgICByZXR1cm4gKG1jX2hlYWRlci0+cmV2ID4gcmV2KSA/IE5FV19VQ09ERSA6
IE9MRF9VQ09ERTsKKyAgICAvKiBJZiB0aGVyZSBpcyBhbiBleHRlbmRlZCBzaWduYXR1cmUgdGFi
bGUsIGNoZWNrIGVhY2ggb2YgdGhlbS4gKi8KKyAgICBpZiAoIChleHQgPSBnZXRfZXh0X3NpZ3Rh
YmxlKG1jKSkgIT0gTlVMTCApCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgZXh0LT5jb3VudDsg
KytpICkKKyAgICAgICAgICAgIGlmICggc2lnbmF0dXJlX21hdGNoZXMoY3B1X3NpZywgZXh0LT5z
aWdzW2ldLnNpZywgZXh0LT5zaWdzW2ldLnBmKSApCisgICAgICAgICAgICAgICAgZ290byBmb3Vu
ZDsKIAogICAgIHJldHVybiBNSVNfVUNPREU7CisKKyBmb3VuZDoKKyAgICByZXR1cm4gbWMtPmhk
ci5yZXYgPiBjcHVfc2lnLT5yZXYgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CiB9CiAKIHN0YXRp
YyBib29sIG1hdGNoX2NwdShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKQEAg
LTI5Miw3ICszMTcsNyBAQCBzdGF0aWMgaW50IGFwcGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3Qg
bWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICBtY19pbnRlbCA9IHBhdGNoOwogCiAgICAgLyog
d3JpdGUgbWljcm9jb2RlIHZpYSBNU1IgMHg3OSAqLwotICAgIHdybXNybChNU1JfSUEzMl9VQ09E
RV9XUklURSwgKHVuc2lnbmVkIGxvbmcpbWNfaW50ZWwtPmJpdHMpOworICAgIHdybXNybChNU1Jf
SUEzMl9VQ09ERV9XUklURSwgKHVuc2lnbmVkIGxvbmcpbWNfaW50ZWwtPmRhdGEpOwogICAgIHdy
bXNybChNU1JfSUEzMl9VQ09ERV9SRVYsIDB4MFVMTCk7CiAKICAgICAvKiBBcyBkb2N1bWVudGVk
IGluIHRoZSBTRE06IERvIGEgQ1BVSUQgMSBoZXJlICovCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0
Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0
Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q
ZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:58:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:58:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZxR-0001l3-0z; Sat, 04 Apr 2020 03:58:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZxQ-0001kt-Cf
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:56 +0000
X-Inumbo-ID: 9a28f1fd-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9a28f1fd-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:58:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ePOi893BDJoVY7TXLbq5xXRZ/7jBK3WlgUXtFhl9j2Q=; b=MB348nc5KmrBgwv68Z81BK0TSg
 H5lgRevZyWOYRQbhvO6K+R6F7ogTtwHw0uYFAaL3bXvaXjH+I5rxMm9ypDbB6JBBw2GbWzaIH+slc
 f0Ltii1YzqDpG3jMz5P9K8z/gYS8bqZDtiZWyugVb4JR7k8UxSe0qLx648ueOw3kISrc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxP-0005Cb-8Z
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxP-0006Pm-7e
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:58:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZxP-0006Pm-7e@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:58:55 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/intel: Clean up
 microcode_sanity_check()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDVlYmI4ZTdlYTE1YjVmZjVhMDlkZWMxZDQ1Yjc3NmVjNTY3MjFlNDIKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxNzo0MTozOSAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBDbGVhbiB1cCBtaWNyb2NvZGVfc2Fu
aXR5X2NoZWNrKCkKICAgIAogICAgUmV3cml0ZSB0aGUgc2l6ZSBjaGVja3MgaW4gYSB3YXkgd2hp
Y2ggZG9lc24ndCBkZXBlbmQgb24gWGVuIGJlaW5nIGNvbXBpbGVkIGFzCiAgICA2NGJpdC4KICAg
IAogICAgSW50cm9kdWNlIGEgY2hlY2sgbWlzc2luZyBmcm9tIHRoZSBvbGQgY29kZSwgdGhhdCB0
b3RhbF9zaXplIGlzIGEgbXVsdGlwbGUgb2YKICAgIDEwMjQgYnl0ZXMsIGFuZCBkcm9wIHVubmVj
ZXNzYXJ5IGRlZmluZXMvbWFjcm9zL3N0cnVjdHVyZXMuCiAgICAKICAgIE5vIHByYWN0aWNhbCBj
aGFuZ2UgaW4gYmVoYXZpb3VyLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVy
IDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNo
IDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRl
bC5jIHwgMTQ3ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj
aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNy
b2NvZGUvaW50ZWwuYwppbmRleCBhYjAzNTBhM2QyLi4wNjdkYmQzNzVlIDEwMDY0NAotLS0gYS94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL2ludGVsLmMKQEAgLTY3LDI0ICs2NywxOSBAQCBzdHJ1Y3QgbWljcm9jb2RlX3Bh
dGNoIHsKICNkZWZpbmUgbWljcm9jb2RlX2ludGVsIG1pY3JvY29kZV9wYXRjaAogCiAvKiBtaWNy
b2NvZGUgZm9ybWF0IGlzIGV4dGVuZGVkIGZyb20gcHJlc2NvdHQgcHJvY2Vzc29ycyAqLwotc3Ry
dWN0IGV4dGVuZGVkX3NpZ25hdHVyZSB7Ci0gICAgdW5zaWduZWQgaW50IHNpZzsKLSAgICB1bnNp
Z25lZCBpbnQgcGY7Ci0gICAgdW5zaWduZWQgaW50IGNrc3VtOwotfTsKLQogc3RydWN0IGV4dGVu
ZGVkX3NpZ3RhYmxlIHsKICAgICB1bnNpZ25lZCBpbnQgY291bnQ7CiAgICAgdW5zaWduZWQgaW50
IGNrc3VtOwogICAgIHVuc2lnbmVkIGludCByZXNlcnZlZFszXTsKLSAgICBzdHJ1Y3QgZXh0ZW5k
ZWRfc2lnbmF0dXJlIHNpZ3NbMF07CisgICAgc3RydWN0IHsKKyAgICAgICAgdW5zaWduZWQgaW50
IHNpZzsKKyAgICAgICAgdW5zaWduZWQgaW50IHBmOworICAgICAgICB1bnNpZ25lZCBpbnQgY2tz
dW07CisgICAgfSBzaWdzW107CiB9OwogCiAjZGVmaW5lIFBQUk9fVUNPREVfREFUQVNJWkUgICAg
IDIwMDAKICNkZWZpbmUgTUNfSEVBREVSX1NJWkUgICAgICAgICAgKHNpemVvZihzdHJ1Y3QgbWlj
cm9jb2RlX2hlYWRlcl9pbnRlbCkpCi0jZGVmaW5lIEVYVF9IRUFERVJfU0laRSAgICAgICAgIChz
aXplb2Yoc3RydWN0IGV4dGVuZGVkX3NpZ3RhYmxlKSkKLSNkZWZpbmUgRVhUX1NJR05BVFVSRV9T
SVpFICAgICAgKHNpemVvZihzdHJ1Y3QgZXh0ZW5kZWRfc2lnbmF0dXJlKSkKLSNkZWZpbmUgRFdT
SVpFICAgICAgICAgICAgICAgICAgKHNpemVvZih1MzIpKQogCiBzdGF0aWMgdWludDMyX3QgZ2V0
X2RhdGFzaXplKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewpAQCAtMTMy
LDggKzEyNyw2IEBAIHN0YXRpYyBib29sIHNpZ25hdHVyZV9tYXRjaGVzKGNvbnN0IHN0cnVjdCBj
cHVfc2lnbmF0dXJlICpjcHVfc2lnLAogICAgIHJldHVybiBjcHVfc2lnLT5wZiAmIHVjb2RlX3Bm
OwogfQogCi0jZGVmaW5lIGV4dHRhYmxlX3NpemUoZXQpICgoZXQpLT5jb3VudCAqIEVYVF9TSUdO
QVRVUkVfU0laRSArIEVYVF9IRUFERVJfU0laRSkKLQogc3RhdGljIGludCBjb2xsZWN0X2NwdV9p
bmZvKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQogewogICAgIHVpbnQ2NF90IG1zcl9jb250
ZW50OwpAQCAtMTU4LDkzICsxNTEsODUgQEAgc3RhdGljIGludCBjb2xsZWN0X2NwdV9pbmZvKHN0
cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50
IG1pY3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWMp
CisvKgorICogU2FuaXR5IGNoZWNrIGEgYmxvYiB3aGljaCBpcyBleHBlY3RlZCB0byBiZSBhIG1p
Y3JvY29kZSBwYXRjaC4gIFRoZSA0OCBieXRlCisgKiBoZWFkZXIgaXMgb2YgYSBrbm93biBmb3Jt
YXQsIGFuZCB0b2dldGhlciB3aXRoIHRvdGFsc2l6ZSBhcmUgd2l0aGluIHRoZQorICogYm91bmRz
IG9mIHRoZSBjb250YWluZXIuICBFdmVyeXRoaW5nIGVsc2UgaXMgdW5jaGVja2VkLgorICovCitz
dGF0aWMgaW50IG1pY3JvY29kZV9zYW5pdHlfY2hlY2soY29uc3Qgc3RydWN0IG1pY3JvY29kZV9w
YXRjaCAqcGF0Y2gpCiB7Ci0gICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwg
Km1jX2hlYWRlciA9ICZtYy0+aGRyOwotICAgIGNvbnN0IHN0cnVjdCBleHRlbmRlZF9zaWd0YWJs
ZSAqZXh0X2hlYWRlciA9IE5VTEw7Ci0gICAgY29uc3Qgc3RydWN0IGV4dGVuZGVkX3NpZ25hdHVy
ZSAqZXh0X3NpZzsKLSAgICB1bnNpZ25lZCBsb25nIHRvdGFsX3NpemUsIGRhdGFfc2l6ZSwgZXh0
X3RhYmxlX3NpemU7Ci0gICAgdW5zaWduZWQgaW50IGV4dF9zaWdjb3VudCA9IDAsIGk7Ci0gICAg
dWludDMyX3Qgc3VtLCBvcmlnX3N1bTsKLQotICAgIHRvdGFsX3NpemUgPSBnZXRfdG90YWxzaXpl
KG1jKTsKLSAgICBkYXRhX3NpemUgPSBnZXRfZGF0YXNpemUobWMpOwotICAgIGlmICggKGRhdGFf
c2l6ZSArIE1DX0hFQURFUl9TSVpFKSA+IHRvdGFsX3NpemUgKQorICAgIGNvbnN0IHN0cnVjdCBl
eHRlbmRlZF9zaWd0YWJsZSAqZXh0OworICAgIGNvbnN0IHVpbnQzMl90ICpwdHI7CisgICAgdW5z
aWduZWQgaW50IHRvdGFsX3NpemUgPSBnZXRfdG90YWxzaXplKHBhdGNoKTsKKyAgICB1bnNpZ25l
ZCBpbnQgZGF0YV9zaXplID0gZ2V0X2RhdGFzaXplKHBhdGNoKTsKKyAgICB1bnNpZ25lZCBpbnQg
aSwgZXh0X3NpemU7CisgICAgdWludDMyX3Qgc3VtOworCisgICAgLyoKKyAgICAgKiBUb3RhbCBz
aXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxMDI0IGJ5dGVzLiAgRGF0YSBzaXplIGFuZCB0aGUg
aGVhZGVyCisgICAgICogbXVzdCBmaXQgd2l0aGluIGl0LgorICAgICAqLworICAgIGlmICggKHRv
dGFsX3NpemUgJiAxMDIzKSB8fAorICAgICAgICAgZGF0YV9zaXplID4gKHRvdGFsX3NpemUgLSBN
Q19IRUFERVJfU0laRSkgKQogICAgIHsKLSAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2Nv
ZGU6IGVycm9yISAiCi0gICAgICAgICAgICAgICAiQmFkIGRhdGEgc2l6ZSBpbiBtaWNyb2NvZGUg
ZGF0YSBmaWxlXG4iKTsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICJtaWNyb2NvZGU6
IEJhZCBzaXplXG4iKTsKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQogCi0gICAgaWYg
KCAobWNfaGVhZGVyLT5sZHJ2ZXIgIT0gMSkgfHwgKG1jX2hlYWRlci0+aGRydmVyICE9IDEpICkK
KyAgICAvKiBDaGVja3N1bSB0aGUgbWFpbiBoZWFkZXIgYW5kIGRhdGEuICovCisgICAgZm9yICgg
c3VtID0gMCwgcHRyID0gKGNvbnN0IHVpbnQzMl90ICopcGF0Y2g7CisgICAgICAgICAgcHRyIDwg
KGNvbnN0IHVpbnQzMl90ICopJnBhdGNoLT5kYXRhW2RhdGFfc2l6ZV07ICsrcHRyICkKKyAgICAg
ICAgc3VtICs9ICpwdHI7CisKKyAgICBpZiAoIHN1bSAhPSAwICkKICAgICB7Ci0gICAgICAgIHBy
aW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBlcnJvciEgIgotICAgICAgICAgICAgICAgIlVua25v
d24gbWljcm9jb2RlIHVwZGF0ZSBmb3JtYXRcbiIpOworICAgICAgICBwcmludGsoWEVOTE9HX1dB
Uk5JTkcgIm1pY3JvY29kZTogQmFkIGNoZWNrc3VtXG4iKTsKICAgICAgICAgcmV0dXJuIC1FSU5W
QUw7CiAgICAgfQotICAgIGV4dF90YWJsZV9zaXplID0gdG90YWxfc2l6ZSAtIChNQ19IRUFERVJf
U0laRSArIGRhdGFfc2l6ZSk7Ci0gICAgaWYgKCBleHRfdGFibGVfc2l6ZSApCi0gICAgewotICAg
ICAgICBpZiAoIChleHRfdGFibGVfc2l6ZSA8IEVYVF9IRUFERVJfU0laRSkgfHwKLSAgICAgICAg
ICAgICAoKGV4dF90YWJsZV9zaXplIC0gRVhUX0hFQURFUl9TSVpFKSAlIEVYVF9TSUdOQVRVUkVf
U0laRSkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29k
ZTogZXJyb3IhICIKLSAgICAgICAgICAgICAgICAgICAiU21hbGwgZXh0dGFibGUgc2l6ZSBpbiBt
aWNyb2NvZGUgZGF0YSBmaWxlXG4iKTsKLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwotICAg
ICAgICB9Ci0gICAgICAgIGV4dF9oZWFkZXIgPSAodm9pZCAqKW1jICsgTUNfSEVBREVSX1NJWkUg
KyBkYXRhX3NpemU7Ci0gICAgICAgIGlmICggZXh0X3RhYmxlX3NpemUgIT0gZXh0dGFibGVfc2l6
ZShleHRfaGVhZGVyKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHByaW50ayhLRVJOX0VSUiAi
bWljcm9jb2RlOiBlcnJvciEgIgotICAgICAgICAgICAgICAgICAgICJCYWQgZXh0dGFibGUgc2l6
ZSBpbiBtaWNyb2NvZGUgZGF0YSBmaWxlXG4iKTsKLSAgICAgICAgICAgIHJldHVybiAtRUZBVUxU
OwotICAgICAgICB9Ci0gICAgICAgIGV4dF9zaWdjb3VudCA9IGV4dF9oZWFkZXItPmNvdW50Owot
ICAgIH0KIAotICAgIC8qIGNoZWNrIGV4dGVuZGVkIHRhYmxlIGNoZWNrc3VtICovCi0gICAgaWYg
KCBleHRfdGFibGVfc2l6ZSApCi0gICAgewotICAgICAgICB1aW50MzJfdCBleHRfdGFibGVfc3Vt
ID0gMDsKLSAgICAgICAgdWludDMyX3QgKmV4dF90YWJsZXAgPSAodWludDMyX3QgKilleHRfaGVh
ZGVyOworICAgIC8qIExvb2sgdG8gc2VlIGlmIHRoZXJlIGlzIGFuIGV4dGVuZGVkIHNpZ25hdHVy
ZSB0YWJsZS4gKi8KKyAgICBleHRfc2l6ZSA9IHRvdGFsX3NpemUgLSBkYXRhX3NpemUgLSBNQ19I
RUFERVJfU0laRTsKIAotICAgICAgICBpID0gZXh0X3RhYmxlX3NpemUgLyBEV1NJWkU7Ci0gICAg
ICAgIHdoaWxlICggaS0tICkKLSAgICAgICAgICAgIGV4dF90YWJsZV9zdW0gKz0gZXh0X3RhYmxl
cFtpXTsKLSAgICAgICAgaWYgKCBleHRfdGFibGVfc3VtICkKLSAgICAgICAgewotICAgICAgICAg
ICAgcHJpbnRrKEtFUk5fV0FSTklORyAibWljcm9jb2RlOiBhYm9ydGluZywgIgotICAgICAgICAg
ICAgICAgICAgICJiYWQgZXh0ZW5kZWQgc2lnbmF0dXJlIHRhYmxlIGNoZWNrc3VtXG4iKTsKLSAg
ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwotICAgICAgICB9Ci0gICAgfQorICAgIC8qIE5vIGV4
dGVuZGVkIHNpZ25hdHVyZSB0YWJsZT8gIEFsbCBkb25lLiAqLworICAgIGlmICggZXh0X3NpemUg
PT0gMCApCisgICAgICAgIHJldHVybiAwOwogCi0gICAgLyogY2FsY3VsYXRlIHRoZSBjaGVja3N1
bSAqLwotICAgIG9yaWdfc3VtID0gMDsKLSAgICBpID0gKE1DX0hFQURFUl9TSVpFICsgZGF0YV9z
aXplKSAvIERXU0laRTsKLSAgICB3aGlsZSAoIGktLSApCi0gICAgICAgIG9yaWdfc3VtICs9ICgo
dWludDMyX3QgKiltYylbaV07Ci0gICAgaWYgKCBvcmlnX3N1bSApCisgICAgLyoKKyAgICAgKiBD
aGVjayB0aGUgc3RydWN0dXJlIG9mIHRoZSBleHRlbmRlZCBzaWduYXR1cmUgdGFibGUsIGVuc3Vy
aW5nIHRoYXQgaXQKKyAgICAgKiBmaXRzIGV4YWN0bHkgaW4gdGhlIHJlbWFpbmluZyBzcGFjZS4K
KyAgICAgKi8KKyAgICBleHQgPSAoY29uc3Qgdm9pZCAqKSZwYXRjaC0+ZGF0YVtkYXRhX3NpemVd
OworICAgIGlmICggZXh0X3NpemUgPCBzaXplb2YoKmV4dCkgfHwKKyAgICAgICAgIChleHRfc2l6
ZSAtIHNpemVvZigqZXh0KSkgJSBzaXplb2YoZXh0LT5zaWdzWzBdKSB8fAorICAgICAgICAgKGV4
dF9zaXplIC0gc2l6ZW9mKCpleHQpKSAvIHNpemVvZihleHQtPnNpZ3NbMF0pICE9IGV4dC0+Y291
bnQgKQogICAgIHsKLSAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IGFib3J0aW5n
LCBiYWQgY2hlY2tzdW1cbiIpOworICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIm1pY3Jv
Y29kZTogQmFkIHNpZ3RhYmxlIHNpemVcbiIpOwogICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAg
ICB9Ci0gICAgaWYgKCAhZXh0X3RhYmxlX3NpemUgKQotICAgICAgICByZXR1cm4gMDsKLSAgICAv
KiBjaGVjayBleHRlbmRlZCBzaWduYXR1cmUgY2hlY2tzdW0gKi8KLSAgICBmb3IgKCBpID0gMDsg
aSA8IGV4dF9zaWdjb3VudDsgaSsrICkKKworICAgIC8qIENoZWNrc3VtIHRoZSB3aG9sZSBleHRl
bmRlZCBzaWduYXR1cmUgdGFibGUuICovCisgICAgZm9yICggc3VtID0gMCwgcHRyID0gKGNvbnN0
IHVpbnQzMl90ICopZXh0OworICAgICAgICAgIHB0ciA8IChjb25zdCB1aW50MzJfdCAqKSZleHQt
PnNpZ3NbZXh0LT5jb3VudF07ICsrcHRyICkKKyAgICAgICAgc3VtICs9ICpwdHI7CisKKyAgICBp
ZiAoIHN1bSAhPSAwICkKICAgICB7Ci0gICAgICAgIGV4dF9zaWcgPSAodm9pZCAqKWV4dF9oZWFk
ZXIgKyBFWFRfSEVBREVSX1NJWkUgKwotICAgICAgICAgICAgRVhUX1NJR05BVFVSRV9TSVpFICog
aTsKLSAgICAgICAgc3VtID0gb3JpZ19zdW0KLSAgICAgICAgICAgIC0gKG1jX2hlYWRlci0+c2ln
ICsgbWNfaGVhZGVyLT5wZiArIG1jX2hlYWRlci0+Y2tzdW0pCi0gICAgICAgICAgICArIChleHRf
c2lnLT5zaWcgKyBleHRfc2lnLT5wZiArIGV4dF9zaWctPmNrc3VtKTsKLSAgICAgICAgaWYgKCBz
dW0gKQorICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIm1pY3JvY29kZTogQmFkIHNpZ3Rh
YmxlIGNoZWNrc3VtXG4iKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAg
LyoKKyAgICAgKiBDaGVja3N1bSBlYWNoIGluZGl2aXVkYWwgZXh0ZW5kZWQgc2lnbmF0dXJlIGFz
IGlmIGl0IGhhZCBiZWVuIGluIHRoZQorICAgICAqIG1haW4gaGVhZGVyLgorICAgICAqLworICAg
IHN1bSA9IHBhdGNoLT5oZHIuc2lnICsgcGF0Y2gtPmhkci5wZiArIHBhdGNoLT5oZHIuY2tzdW07
CisgICAgZm9yICggaSA9IDA7IGkgPCBleHQtPmNvdW50OyArK2kgKQorICAgICAgICBpZiAoIHN1
bSAhPSAoZXh0LT5zaWdzW2ldLnNpZyArIGV4dC0+c2lnc1tpXS5wZiArIGV4dC0+c2lnc1tpXS5j
a3N1bSkgKQogICAgICAgICB7Ci0gICAgICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29k
ZTogYWJvcnRpbmcsIGJhZCBjaGVja3N1bVxuIik7CisgICAgICAgICAgICBwcmludGsoWEVOTE9H
X1dBUk5JTkcgIm1pY3JvY29kZTogQmFkIHNpZ3RhYmxlIGNoZWNrc3VtXG4iKTsKICAgICAgICAg
ICAgIHJldHVybiAtRUlOVkFMOwogICAgICAgICB9Ci0gICAgfQorCiAgICAgcmV0dXJuIDA7CiB9
CiAKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0
I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
WGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0
Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:59:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:59:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZxb-0001mU-34; Sat, 04 Apr 2020 03:59:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZxa-0001mM-5p
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:06 +0000
X-Inumbo-ID: a0a9457c-7628-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a0a9457c-7628-11ea-83d8-bc764e2007e4;
 Sat, 04 Apr 2020 03:59:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=1bVvSxEQicHU7a372cHEsG9X4m5VhAbX16BOUoHYzW8=; b=sIrzId0gN3eD/KAuFLJPfGfv+x
 BsjELswz2xY9kb8I35rCuDZw+Bs6K2QSz52pt39tNQD47nIHpd9VKbLIhMWZoCwkWLec73xElKE6Q
 90QPVYfSzrrsntd7yfnHFTxvMDYG71YirQnx5cOAPScz5FQveh2T3Zj5eN92uW57gEG4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxZ-0005Cx-BD
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxZ-0006Qc-AG
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZxZ-0006Qc-AG@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:59:05 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/intel: Fold structures
 together
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGUwZDE4NzFiM2Q1Y2ZhZDBmMWQ4ZDdjNzU5M2JiNDI5MjkwNzRkMDgKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyMCAxODozMjozMSAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2ludGVsOiBGb2xkIHN0cnVjdHVyZXMgdG9nZXRo
ZXIKICAgIAogICAgV2l0aCBhbGwgdGhlIG5lY2Vzc2FyeSBjbGVhbnVwIG5vdyBpbiBwbGFjZSwg
Zm9sZCBzdHJ1Y3QKICAgIG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgaW50byBzdHJ1Y3QgbWljcm9j
b2RlX3BhdGNoIGFuZCBkcm9wIHRoZSBzdHJ1Y3QKICAgIG1pY3JvY29kZV9pbnRlbCB0ZW1wb3Jh
cnkgaWZkZWYtYXJ5LgogICAgCiAgICBObyBmdW5jdGlvbmFsIGNoYW5nZS4KICAgIAogICAgU2ln
bmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KICAg
IFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyB8IDU2ICsrKysrKysrKysrKysrLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMzYgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwu
YyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKaW5kZXggMDY3ZGJkMzc1ZS4u
NzJiZDFhZDBiYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwu
YworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCkBAIC0zMCwxNyArMzAs
MTIgQEAKIAogI2RlZmluZSBwcl9kZWJ1Zyh4Li4uKSAoKHZvaWQpMCkKIAotc3RydWN0IG1pY3Jv
Y29kZV9oZWFkZXJfaW50ZWwgeworc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7CiAgICAgdW5zaWdu
ZWQgaW50IGhkcnZlcjsKICAgICB1bnNpZ25lZCBpbnQgcmV2OwotICAgIHVuaW9uIHsKLSAgICAg
ICAgc3RydWN0IHsKLSAgICAgICAgICAgIHVpbnQxNl90IHllYXI7Ci0gICAgICAgICAgICB1aW50
OF90IGRheTsKLSAgICAgICAgICAgIHVpbnQ4X3QgbW9udGg7Ci0gICAgICAgIH07Ci0gICAgICAg
IHVuc2lnbmVkIGludCBkYXRlOwotICAgIH07CisgICAgdWludDE2X3QgeWVhcjsKKyAgICB1aW50
OF90ICBkYXk7CisgICAgdWludDhfdCAgbW9udGg7CiAgICAgdW5zaWduZWQgaW50IHNpZzsKICAg
ICB1bnNpZ25lZCBpbnQgY2tzdW07CiAgICAgdW5zaWduZWQgaW50IGxkcnZlcjsKQEAgLTU0LDE4
ICs0OSwxMSBAQCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9pbnRlbCB7CiAgICAgdW5zaWduZWQg
aW50IGRhdGFzaXplOwogICAgIHVuc2lnbmVkIGludCB0b3RhbHNpemU7CiAgICAgdW5zaWduZWQg
aW50IHJlc2VydmVkWzNdOwotfTsKLQotc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7Ci0gICAgc3Ry
dWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgaGRyOwogCiAgICAgLyogTWljcm9jb2RlIHBheWxv
YWQuICBGb3JtYXQgaXMgcHJvcHJpZXR5IGFuZCBlbmNyeXB0ZWQuICovCiAgICAgdWludDhfdCBk
YXRhW107CiB9OwogCi0vKiBUZW1wb3JhcnksIHVudGlsIHRoZSBtaWNyb2NvZGVfKiBzdHJ1Y3R1
cmUgYXJlIGRpc2VudGFuZ2xlZC4gKi8KLSNkZWZpbmUgbWljcm9jb2RlX2ludGVsIG1pY3JvY29k
ZV9wYXRjaAotCiAvKiBtaWNyb2NvZGUgZm9ybWF0IGlzIGV4dGVuZGVkIGZyb20gcHJlc2NvdHQg
cHJvY2Vzc29ycyAqLwogc3RydWN0IGV4dGVuZGVkX3NpZ3RhYmxlIHsKICAgICB1bnNpZ25lZCBp
bnQgY291bnQ7CkBAIC03OSwxNiArNjcsMTYgQEAgc3RydWN0IGV4dGVuZGVkX3NpZ3RhYmxlIHsK
IH07CiAKICNkZWZpbmUgUFBST19VQ09ERV9EQVRBU0laRSAgICAgMjAwMAotI2RlZmluZSBNQ19I
RUFERVJfU0laRSAgICAgICAgICAoc2l6ZW9mKHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVs
KSkKKyNkZWZpbmUgTUNfSEVBREVSX1NJWkUgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IG1pY3Jv
Y29kZV9wYXRjaCwgZGF0YSkKIAogc3RhdGljIHVpbnQzMl90IGdldF9kYXRhc2l6ZShjb25zdCBz
dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKIHsKLSAgICByZXR1cm4gcGF0Y2gtPmhkci5k
YXRhc2l6ZSA/OiBQUFJPX1VDT0RFX0RBVEFTSVpFOworICAgIHJldHVybiBwYXRjaC0+ZGF0YXNp
emUgPzogUFBST19VQ09ERV9EQVRBU0laRTsKIH0KIAogc3RhdGljIHVpbnQzMl90IGdldF90b3Rh
bHNpemUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7Ci0gICAgcmV0dXJu
IHBhdGNoLT5oZHIudG90YWxzaXplID86IFBQUk9fVUNPREVfREFUQVNJWkUgKyBNQ19IRUFERVJf
U0laRTsKKyAgICByZXR1cm4gcGF0Y2gtPnRvdGFsc2l6ZSA/OiBQUFJPX1VDT0RFX0RBVEFTSVpF
ICsgTUNfSEVBREVSX1NJWkU7CiB9CiAKIC8qCkBAIC0xMDAsOCArODgsOCBAQCBzdGF0aWMgdWlu
dDMyX3QgZ2V0X3RvdGFsc2l6ZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkK
IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXh0ZW5kZWRfc2lndGFibGUgKmdldF9leHRfc2lndGFibGUo
CiAgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7Ci0gICAgaWYgKCBw
YXRjaC0+aGRyLnRvdGFsc2l6ZSA+IChNQ19IRUFERVJfU0laRSArIHBhdGNoLT5oZHIuZGF0YXNp
emUpICkKLSAgICAgICAgcmV0dXJuIChjb25zdCB2b2lkICopJnBhdGNoLT5kYXRhW3BhdGNoLT5o
ZHIuZGF0YXNpemVdOworICAgIGlmICggcGF0Y2gtPnRvdGFsc2l6ZSA+IChNQ19IRUFERVJfU0la
RSArIHBhdGNoLT5kYXRhc2l6ZSkgKQorICAgICAgICByZXR1cm4gKGNvbnN0IHZvaWQgKikmcGF0
Y2gtPmRhdGFbcGF0Y2gtPmRhdGFzaXplXTsKIAogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMjIy
LDcgKzIxMCw3IEBAIHN0YXRpYyBpbnQgbWljcm9jb2RlX3Nhbml0eV9jaGVjayhjb25zdCBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICAgKiBDaGVja3N1bSBlYWNoIGluZGl2aXVk
YWwgZXh0ZW5kZWQgc2lnbmF0dXJlIGFzIGlmIGl0IGhhZCBiZWVuIGluIHRoZQogICAgICAqIG1h
aW4gaGVhZGVyLgogICAgICAqLwotICAgIHN1bSA9IHBhdGNoLT5oZHIuc2lnICsgcGF0Y2gtPmhk
ci5wZiArIHBhdGNoLT5oZHIuY2tzdW07CisgICAgc3VtID0gcGF0Y2gtPnNpZyArIHBhdGNoLT5w
ZiArIHBhdGNoLT5ja3N1bTsKICAgICBmb3IgKCBpID0gMDsgaSA8IGV4dC0+Y291bnQ7ICsraSAp
CiAgICAgICAgIGlmICggc3VtICE9IChleHQtPnNpZ3NbaV0uc2lnICsgZXh0LT5zaWdzW2ldLnBm
ICsgZXh0LT5zaWdzW2ldLmNrc3VtKSApCiAgICAgICAgIHsKQEAgLTI0NCw3ICsyMzIsNyBAQCBz
dGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29kZV91cGRhdGVfbWF0Y2go
CiAgICAgQVNTRVJUKCFtaWNyb2NvZGVfc2FuaXR5X2NoZWNrKG1jKSk7CiAKICAgICAvKiBDaGVj
ayB0aGUgbWFpbiBtaWNyb2NvZGUgc2lnbmF0dXJlLiAqLwotICAgIGlmICggc2lnbmF0dXJlX21h
dGNoZXMoY3B1X3NpZywgbWMtPmhkci5zaWcsIG1jLT5oZHIucGYpICkKKyAgICBpZiAoIHNpZ25h
dHVyZV9tYXRjaGVzKGNwdV9zaWcsIG1jLT5zaWcsIG1jLT5wZikgKQogICAgICAgICBnb3RvIGZv
dW5kOwogCiAgICAgLyogSWYgdGhlcmUgaXMgYW4gZXh0ZW5kZWQgc2lnbmF0dXJlIHRhYmxlLCBj
aGVjayBlYWNoIG9mIHRoZW0uICovCkBAIC0yNTYsNyArMjQ0LDcgQEAgc3RhdGljIGVudW0gbWlj
cm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKAogICAgIHJldHVybiBN
SVNfVUNPREU7CiAKICBmb3VuZDoKLSAgICByZXR1cm4gbWMtPmhkci5yZXYgPiBjcHVfc2lnLT5y
ZXYgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CisgICAgcmV0dXJuIG1jLT5yZXYgPiBjcHVfc2ln
LT5yZXYgPyBORVdfVUNPREUgOiBPTERfVUNPREU7CiB9CiAKIHN0YXRpYyBib29sIG1hdGNoX2Nw
dShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKQEAgLTI4Miw3ICsyNzAsNyBA
QCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNvbXBhcmVfcGF0Y2goCiAgICAg
QVNTRVJUKG1pY3JvY29kZV91cGRhdGVfbWF0Y2gob2xkKSAhPSBNSVNfVUNPREUpOwogICAgIEFT
U0VSVChtaWNyb2NvZGVfdXBkYXRlX21hdGNoKG5ldykgIT0gTUlTX1VDT0RFKTsKIAotICAgIHJl
dHVybiAobmV3LT5oZHIucmV2ID4gb2xkLT5oZHIucmV2KSA/IE5FV19VQ09ERSA6IE9MRF9VQ09E
RTsKKyAgICByZXR1cm4gbmV3LT5yZXYgPiBvbGQtPnJldiA/IE5FV19VQ09ERSA6IE9MRF9VQ09E
RTsKIH0KIAogc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUoY29uc3Qgc3RydWN0IG1pY3JvY29k
ZV9wYXRjaCAqcGF0Y2gpCkBAIC0yOTAsNyArMjc4LDYgQEAgc3RhdGljIGludCBhcHBseV9taWNy
b2NvZGUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAgdWludDY0X3Qg
bXNyX2NvbnRlbnQ7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsK
ICAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnRoaXNfY3B1KGNwdV9zaWcpOwotICAg
IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaW50ZWwgKm1jX2ludGVsOwogICAgIHVpbnQzMl90IHJl
diwgb2xkX3JldiA9IHNpZy0+cmV2OwogCiAgICAgaWYgKCAhcGF0Y2ggKQpAQCAtMjk5LDEwICsy
ODYsOCBAQCBzdGF0aWMgaW50IGFwcGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3QgbWljcm9jb2Rl
X3BhdGNoICpwYXRjaCkKICAgICBpZiAoICFtYXRjaF9jcHUocGF0Y2gpICkKICAgICAgICAgcmV0
dXJuIC1FSU5WQUw7CiAKLSAgICBtY19pbnRlbCA9IHBhdGNoOwotCiAgICAgLyogd3JpdGUgbWlj
cm9jb2RlIHZpYSBNU1IgMHg3OSAqLwotICAgIHdybXNybChNU1JfSUEzMl9VQ09ERV9XUklURSwg
KHVuc2lnbmVkIGxvbmcpbWNfaW50ZWwtPmRhdGEpOworICAgIHdybXNybChNU1JfSUEzMl9VQ09E
RV9XUklURSwgKHVuc2lnbmVkIGxvbmcpcGF0Y2gtPmRhdGEpOwogICAgIHdybXNybChNU1JfSUEz
Ml9VQ09ERV9SRVYsIDB4MFVMTCk7CiAKICAgICAvKiBBcyBkb2N1bWVudGVkIGluIHRoZSBTRE06
IERvIGEgQ1BVSUQgMSBoZXJlICovCkBAIC0zMTIsMTggKzI5NywxNyBAQCBzdGF0aWMgaW50IGFw
cGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICBy
ZG1zcmwoTVNSX0lBMzJfVUNPREVfUkVWLCBtc3JfY29udGVudCk7CiAgICAgc2lnLT5yZXYgPSBy
ZXYgPSBtc3JfY29udGVudCA+PiAzMjsKIAotICAgIGlmICggcmV2ICE9IG1jX2ludGVsLT5oZHIu
cmV2ICkKKyAgICBpZiAoIHJldiAhPSBwYXRjaC0+cmV2ICkKICAgICB7CiAgICAgICAgIHByaW50
ayhYRU5MT0dfRVJSCiAgICAgICAgICAgICAgICAibWljcm9jb2RlOiBDUFUldSB1cGRhdGUgcmV2
ICUjeCB0byAlI3ggZmFpbGVkLCByZXN1bHQgJSN4XG4iLAotICAgICAgICAgICAgICAgY3B1LCBv
bGRfcmV2LCBtY19pbnRlbC0+aGRyLnJldiwgcmV2KTsKKyAgICAgICAgICAgICAgIGNwdSwgb2xk
X3JldiwgcGF0Y2gtPnJldiwgcmV2KTsKICAgICAgICAgcmV0dXJuIC1FSU87CiAgICAgfQogCiAg
ICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HCiAgICAgICAgICAgICJtaWNyb2NvZGU6IENQVSV1IHVw
ZGF0ZWQgZnJvbSByZXZpc2lvbiAlI3ggdG8gJSN4LCBkYXRlID0gJTA0eC0lMDJ4LSUwMnhcbiIs
Ci0gICAgICAgICAgIGNwdSwgb2xkX3JldiwgcmV2LCBtY19pbnRlbC0+aGRyLnllYXIsCi0gICAg
ICAgICAgIG1jX2ludGVsLT5oZHIubW9udGgsIG1jX2ludGVsLT5oZHIuZGF5KTsKKyAgICAgICAg
ICAgY3B1LCBvbGRfcmV2LCByZXYsIHBhdGNoLT55ZWFyLCBwYXRjaC0+bW9udGgsIHBhdGNoLT5k
YXkpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zNDEsOCArMzI1LDggQEAgc3RhdGljIHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYs
CiAgICAgICAgIHVuc2lnbmVkIGludCBibG9iX3NpemU7CiAKICAgICAgICAgaWYgKCBzaXplIDwg
TUNfSEVBREVSX1NJWkUgfHwgICAgICAgLyogSW5zdWZmaWNpZW50IHNwYWNlIGZvciBoZWFkZXI/
ICovCi0gICAgICAgICAgICAgKG1jID0gYnVmKS0+aGRyLmhkcnZlciAhPSAxIHx8IC8qIFVucmVj
b2duaXNlZCBoZWFkZXIgdmVyc2lvbj8gICAqLwotICAgICAgICAgICAgIG1jLT5oZHIubGRydmVy
ICE9IDEgfHwgICAgICAgICAvKiBVbnJlY29nbmlzZWQgbG9hZGVyIHZlcnNpb24/ICAgKi8KKyAg
ICAgICAgICAgICAobWMgPSBidWYpLT5oZHJ2ZXIgIT0gMSB8fCAgICAgLyogVW5yZWNvZ25pc2Vk
IGhlYWRlciB2ZXJzaW9uPyAgICovCisgICAgICAgICAgICAgbWMtPmxkcnZlciAhPSAxIHx8ICAg
ICAgICAgICAgIC8qIFVucmVjb2duaXNlZCBsb2FkZXIgdmVyc2lvbj8gICAqLwogICAgICAgICAg
ICAgIHNpemUgPCAoYmxvYl9zaXplID0gICAgICAgICAgICAvKiBJbnN1ZmZpY2llbnQgc3BhY2Ug
Zm9yIHBhdGNoPyAgKi8KICAgICAgICAgICAgICAgICAgICAgIGdldF90b3RhbHNpemUobWMpKSAp
CiAgICAgICAgIHsKQEAgLTM2MCw3ICszNDQsNyBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9w
YXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgICog
b25lIHdpdGggaGlnaGVyIHJldmlzaW9uLgogICAgICAgICAgKi8KICAgICAgICAgaWYgKCAobWlj
cm9jb2RlX3VwZGF0ZV9tYXRjaChtYykgIT0gTUlTX1VDT0RFKSAmJgotICAgICAgICAgICAgICgh
c2F2ZWQgfHwgKG1jLT5oZHIucmV2ID4gc2F2ZWQtPmhkci5yZXYpKSApCisgICAgICAgICAgICAg
KCFzYXZlZCB8fCAobWMtPnJldiA+IHNhdmVkLT5yZXYpKSApCiAgICAgICAgICAgICBzYXZlZCA9
IG1jOwogCiAgICAgICAgIGJ1ZiAgKz0gYmxvYl9zaXplOwotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBh
dGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlz
dApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv
amVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:59:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:59:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZxl-0001oP-5H; Sat, 04 Apr 2020 03:59:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZxk-0001oD-50
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:16 +0000
X-Inumbo-ID: a6b017f2-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a6b017f2-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:59:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=+PQojCWf9D8hXEzFRLL88p3ktcXX+LijNpB7AJJvASw=; b=pEqWcdgRu46uRwYl6Pa72T/17Z
 RHCOOOs/IRm5DtWbf8+XtamCZepj21woDihFcu+c38eXxjInATTvXgloJMtHpZycdVzdGyhROAY4s
 mI6CYsGbmdSSGzMC5hAtsVdTDMGfqanQU1lrLp/ROHsLGD0EleyqSIgGnh2EmN+fLIeQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxj-0005DY-EN
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxj-0006R9-Cq
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZxj-0006R9-Cq@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:59:15 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Fix more potential
 buffer overruns with microcode parsing
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDcxOGQxNDMyMDAwMDc5ZWE3MTIwZjZjYjc3MDM3MmFmZTcwN2NlMjcKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyNyAxNjo1MDoxMyAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogRml4IG1vcmUgcG90ZW50aWFsIGJ1ZmZl
ciBvdmVycnVucyB3aXRoIG1pY3JvY29kZSBwYXJzaW5nCiAgICAKICAgIGNwdV9yZXF1ZXN0X21p
Y3JvY29kZSgpIGRvZXNuJ3Qga25vdyB0aGUgYnVmZmVyIGlzIGF0IGxlYXN0IDQgYnl0ZXMgbG9u
ZwogICAgYmVmb3JlIGluc3BlY3RpbmcgVUNPREVfTUFHSUMuCiAgICAKICAgIGluc3RhbGxfZXF1
aXZfY3B1X3RhYmxlKCkgZG9lc24ndCBrbm93IHRoZSBib3VuZGFyeSBvZiB0aGUgYnVmZmVyIGl0
IGlzCiAgICBpbnRlcnByZXRpbmcgYXMgYW4gZXF1aXZhbGVuY3kgdGFibGUuICBUaGlzIGNhc2Ug
d2FzIGNsZWFybHkgb2JzZXJ2ZWQgYXQgb25lCiAgICBwb2ludCBpbiB0aGUgcGFzdCwgZ2l2ZW4g
dGhlIHN1YnNlcXVlbnQgb3ZlcnJ1biBkZXRlY3Rpb24sIGJ1dCB3aXRob3V0CiAgICBjb21wcmVo
ZW5kaW5nIHRoYXQgdGhlIGRhbWFnZSB3YXMgYWxyZWFkeSBkb25lLgogICAgCiAgICBNYWtlIHRo
ZSBsb2dpYyBjb25zaXN0ZW50IHdpdGggY29udGFpbmVyX2Zhc3RfZm9yd2FyZCgpIGFuZCBwYXNz
IHNpemVfbGVmdCBpbgogICAgdG8gaW5zdGFsbF9lcXVpdl9jcHVfdGFibGUoKS4KICAgIAogICAg
U2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4K
ICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVu
L2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgfCAyNiArKysrKysrKysrKystLS0tLS0tLS0t
LS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jIGIveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggNmJmM2EwNTRkMy4uMzI2MmNmMjQzZiAxMDA2
NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKKysrIGIveGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTMwMywxMSArMzAzLDIwIEBAIHN0YXRpYyBpbnQg
Z2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgKIHN0YXRpYyBpbnQgaW5zdGFsbF9lcXVpdl9jcHVf
dGFibGUoCiAgICAgc3RydWN0IG1pY3JvY29kZV9hbWQgKm1jX2FtZCwKICAgICBjb25zdCB2b2lk
ICpkYXRhLAorICAgIHNpemVfdCBzaXplX2xlZnQsCiAgICAgc2l6ZV90ICpvZmZzZXQpCiB7Ci0g
ICAgY29uc3Qgc3RydWN0IG1wYmhkciAqbXBidWYgPSBkYXRhICsgKm9mZnNldCArIDQ7CisgICAg
Y29uc3Qgc3RydWN0IG1wYmhkciAqbXBidWY7CiAgICAgY29uc3Qgc3RydWN0IGVxdWl2X2NwdV9l
bnRyeSAqZXE7CiAKKyAgICBpZiAoIHNpemVfbGVmdCA8IChzaXplb2YoKm1wYnVmKSArIDQpIHx8
CisgICAgICAgICAobXBidWYgPSBkYXRhICsgKm9mZnNldCArIDQsCisgICAgICAgICAgc2l6ZV9s
ZWZ0IC0gc2l6ZW9mKCptcGJ1ZikgLSA0IDwgbXBidWYtPmxlbikgKQorICAgIHsKKyAgICAgICAg
cHJpbnRrKFhFTkxPR19XQVJOSU5HICJtaWNyb2NvZGU6IE5vIHNwYWNlIGZvciBlcXVpdmFsZW50
IGNwdSB0YWJsZVxuIik7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKwogICAgICpv
ZmZzZXQgKz0gbXBidWYtPmxlbiArIENPTlRfSERSX1NJWkU7CS8qIGFkZCBoZWFkZXIgbGVuZ3Ro
ICovCiAKICAgICBpZiAoIG1wYnVmLT50eXBlICE9IFVDT0RFX0VRVUlWX0NQVV9UQUJMRV9UWVBF
ICkKQEAgLTQxNyw3ICs0MjYsNyBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1
X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKIAogICAgIGN1cnJlbnRfY3B1X2lk
ID0gY3B1aWRfZWF4KDB4MDAwMDAwMDEpOwogCi0gICAgaWYgKCAqKGNvbnN0IHVpbnQzMl90ICop
YnVmICE9IFVDT0RFX01BR0lDICkKKyAgICBpZiAoIGJ1ZnNpemUgPCA0IHx8ICooY29uc3QgdWlu
dDMyX3QgKilidWYgIT0gVUNPREVfTUFHSUMgKQogICAgIHsKICAgICAgICAgcHJpbnRrKEtFUk5f
RVJSICJtaWNyb2NvZGU6IFdyb25nIG1pY3JvY29kZSBwYXRjaCBmaWxlIG1hZ2ljXG4iKTsKICAg
ICAgICAgZXJyb3IgPSAtRUlOVkFMOwpAQCAtNDQ3LDI0ICs0NTYsMTMgQEAgc3RhdGljIHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYs
CiAgICAgICovCiAgICAgd2hpbGUgKCBvZmZzZXQgPCBidWZzaXplICkKICAgICB7Ci0gICAgICAg
IGVycm9yID0gaW5zdGFsbF9lcXVpdl9jcHVfdGFibGUobWNfYW1kLCBidWYsICZvZmZzZXQpOwor
ICAgICAgICBlcnJvciA9IGluc3RhbGxfZXF1aXZfY3B1X3RhYmxlKG1jX2FtZCwgYnVmLCBidWZz
aXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKICAgICAgICAgaWYgKCBlcnJvciApCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBpbnN0YWxsaW5nIGVxdWl2
YWxlbnQgY3B1IHRhYmxlIGZhaWxlZFxuIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIC8qCi0gICAgICAgICAqIENvdWxkIGhhcHBlbiBhcyB3ZSBhZHZhbmNlICdv
ZmZzZXQnIGVhcmx5Ci0gICAgICAgICAqIGluIGluc3RhbGxfZXF1aXZfY3B1X3RhYmxlCi0gICAg
ICAgICAqLwotICAgICAgICBpZiAoIG9mZnNldCA+IGJ1ZnNpemUgKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogTWljcm9jb2RlIGJ1ZmZlciBvdmVy
cnVuXG4iKTsKLSAgICAgICAgICAgIGVycm9yID0gLUVJTlZBTDsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKCBmaW5kX2VxdWl2X2NwdV9pZChtY19hbWQtPmVx
dWl2X2NwdV90YWJsZSwgY3VycmVudF9jcHVfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJmVxdWl2X2NwdV9pZCkgKQogICAgICAgICAgICAgYnJlYWs7Ci0tCmdlbmVyYXRlZCBi
eSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFp
bGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0
cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:59:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:59:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZxv-0001pt-8R; Sat, 04 Apr 2020 03:59:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZxu-0001pn-Nr
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:26 +0000
X-Inumbo-ID: acb1f8be-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id acb1f8be-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:59:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jQ0JokOJs4f3f97r694KyehBWS7xbiFXCa/gPqNjrT8=; b=dybEKDQ+LwCbEKb14XjnMQVePc
 E/fDBy42ZD0VEXj/xF6KN0XWlAUslNgZgV9pc/MCSGs7KGb02PHpp4g7cOd495dtHzlqZSnBqg2hF
 pQCo1I8V0g5DSSBMS+XDLKrraxti+ZTQhIEsnDtBpdl4CtzrEonxGkhIKiFaONOO9vFA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxt-0005Dh-Gw
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZxt-0006Sl-G6
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZxt-0006Sl-G6@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:59:25 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Move
 check_final_patch_levels() to apply_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDBjNzcwODIwYTc5MmE3YWI3NDUwZmFjNThlNDA0Y2UyYjlkZDQwYTEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxMzoxNDowMSAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogTW92ZSBjaGVja19maW5hbF9wYXRjaF9s
ZXZlbHMoKSB0byBhcHBseV9taWNyb2NvZGUoKQogICAgCiAgICBUaGUgbWljcm9jb2RlIHJldmlz
aW9uIG9mIHdoaWNoZXZlciBDUFUgcnVucyBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKSBpcyBub3QK
ICAgIG5lY2Vzc2FyaWx5IGFwcGxpY2FibGUgdG8gb3RoZXIgQ1BVcy4KICAgIAogICAgSWYgdGhl
IEJJT1MgbGVmdCB1cyB3aXRoIGFzeW1tZXRyaWMgbWljcm9jb2RlLCByZWplY3RpbmcgdXBkYXRl
cyBpbgogICAgY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkgd291bGQgcHJldmVudCB1cyBsZXZlbGxp
bmcgdGhlIHN5c3RlbSBldmVuIGlmIG9ubHkgdXAKICAgIHRvIHRoZSBmaW5hbCBsZXZlbC4gIEFs
c28sIGZhaWxpbmcgdG8gY2FjaGUgbWljcm9jb2RlIG1pc3NlcyBhbiBvcHBvcnR1bml0eSB0bwog
ICAgZ2V0IGJleW9uZCB0aGUgZmluYWwgbGV2ZWwgdmlhIHRoZSBTMyBwYXRoLgogICAgCiAgICBN
b3ZlIGNoZWNrX2ZpbmFsX3BhdGNoX2xldmVscygpIGVhcmxpZXIgYW5kIHVzZSBpdCBpbiBhcHBs
eV9taWNyb2NvZGUoKS4KICAgIFJld29yZCB0aGUgZXJyb3IgbWVzc2FnZSB0byBiZSBtb3JlIGlu
Zm9ybWF0aXZlLCBhbmQgdXNlIC1FTlhJTyBhcyB0aGlzIGNvcm5lcgogICAgY2FzZSBoYXMgbm90
aGluZyB0byBkbyB3aXRoIHBlcm1pc3Npb25zLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRy
ZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEph
biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3Jv
Y29kZS9hbWQuYyB8IDgzICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IDEgZmlsZSBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9j
cHUvbWljcm9jb2RlL2FtZC5jCmluZGV4IDMyNjJjZjI0M2YuLmZkMTgwNDE2NDIgMTAwNjQ0Ci0t
LSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9j
cHUvbWljcm9jb2RlL2FtZC5jCkBAIC0xMTksNiArMTE5LDM2IEBAIHN0YXRpYyBib29sX3QgdmVy
aWZ5X3BhdGNoX3NpemUodWludDMyX3QgcGF0Y2hfc2l6ZSkKICAgICByZXR1cm4gKHBhdGNoX3Np
emUgPD0gbWF4X3NpemUpOwogfQogCitzdGF0aWMgYm9vbCBjaGVja19maW5hbF9wYXRjaF9sZXZl
bHMoY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZykKK3sKKyAgICAvKgorICAgICAqIFRo
ZSAnZmluYWxfbGV2ZWxzJyBvZiBwYXRjaCBpZHMgaGF2ZSBiZWVuIG9idGFpbmVkIGVtcGlyaWNh
bGx5LgorICAgICAqIFJlZmVyIGJ1ZyBodHRwczovL2J1Z3ppbGxhLnN1c2UuY29tL3Nob3dfYnVn
LmNnaT9pZD05MTM5OTYKKyAgICAgKiBmb3IgZGV0YWlscyBvZiB0aGUgaXNzdWUuIFRoZSBzaG9y
dCB2ZXJzaW9uIGlzIHRoYXQgcGVvcGxlCisgICAgICogdXNpbmcgY2VydGFpbiBGYW0xMGggc3lz
dGVtcyBub3RpY2VkIHN5c3RlbSBoYW5nIGlzc3VlcyB3aGVuCisgICAgICogdHJ5aW5nIHRvIHVw
ZGF0ZSBtaWNyb2NvZGUgbGV2ZWxzIGJleW9uZCB0aGUgcGF0Y2ggSURzIGJlbG93LgorICAgICAq
IEZyb20gaW50ZXJuYWwgZGlzY3Vzc2lvbnMsIHdlIGdhdGhlcmVkIHRoYXQgT1MvaHlwZXJ2aXNv
cgorICAgICAqIGNhbm5vdCByZWxpYWJseSBwZXJmb3JtIG1pY3JvY29kZSB1cGRhdGVzIGJleW9u
ZCB0aGVzZSBsZXZlbHMKKyAgICAgKiBkdWUgdG8gaGFyZHdhcmUgaXNzdWVzLiBUaGVyZWZvcmUs
IHdlIG5lZWQgdG8gYWJvcnQgbWljcm9jb2RlCisgICAgICogdXBkYXRlIHByb2Nlc3MgaWYgd2Ug
aGl0IGFueSBvZiB0aGVzZSBsZXZlbHMuCisgICAgICovCisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGludCBmaW5hbF9sZXZlbHNbXSA9IHsKKyAgICAgICAgMHgwMTAwMDA5OCwKKyAgICAgICAg
MHgwMTAwMDA5ZiwKKyAgICAgICAgMHgwMTAwMDBhZiwKKyAgICB9OworICAgIHVuc2lnbmVkIGlu
dCBpOworCisgICAgaWYgKCBib290X2NwdV9kYXRhLng4NiAhPSAweDEwICkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgZm9yICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZpbmFsX2xldmVs
cyk7IGkrKyApCisgICAgICAgIGlmICggc2lnLT5yZXYgPT0gZmluYWxfbGV2ZWxzW2ldICkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMg
Ym9vbF90IGZpbmRfZXF1aXZfY3B1X2lkKGNvbnN0IHN0cnVjdCBlcXVpdl9jcHVfZW50cnkgKmVx
dWl2X2NwdV90YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGN1cnJlbnRfY3B1X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgKmVxdWl2X2NwdV9pZCkKQEAgLTIyOSw2ICsyNTksMTQgQEAgc3RhdGljIGludCBh
cHBseV9taWNyb2NvZGUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiAgICAg
aWYgKCAhbWF0Y2hfY3B1KHBhdGNoKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCisgICAg
aWYgKCBjaGVja19maW5hbF9wYXRjaF9sZXZlbHMoc2lnKSApCisgICAgeworICAgICAgICBwcmlu
dGsoWEVOTE9HX0VSUgorICAgICAgICAgICAgICAgIm1pY3JvY29kZTogQ1BVJXUgY3VycmVudCBy
ZXYgJSN4IHVuc2FmZSB0byB1cGRhdGVcbiIsCisgICAgICAgICAgICAgICBjcHUsIHNpZy0+cmV2
KTsKKyAgICAgICAgcmV0dXJuIC1FTlhJTzsKKyAgICB9CisKICAgICBoZHIgPSBwYXRjaC0+bXBi
OwogCiAgICAgaHdfZXJyID0gd3Jtc3Jfc2FmZShNU1JfQU1EX1BBVENITE9BREVSLCAodW5zaWdu
ZWQgbG9uZyloZHIpOwpAQCAtMzc0LDQzICs0MTIsNiBAQCBzdGF0aWMgaW50IGNvbnRhaW5lcl9m
YXN0X2ZvcndhcmQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemVfbGVmdCwgc2l6ZV90ICpv
ZgogICAgIHJldHVybiAwOwogfQogCi0vKgotICogVGhlICdmaW5hbF9sZXZlbHMnIG9mIHBhdGNo
IGlkcyBoYXZlIGJlZW4gb2J0YWluZWQgZW1waXJpY2FsbHkuCi0gKiBSZWZlciBidWcgaHR0cHM6
Ly9idWd6aWxsYS5zdXNlLmNvbS9zaG93X2J1Zy5jZ2k/aWQ9OTEzOTk2IAotICogZm9yIGRldGFp
bHMgb2YgdGhlIGlzc3VlLiBUaGUgc2hvcnQgdmVyc2lvbiBpcyB0aGF0IHBlb3BsZQotICogdXNp
bmcgY2VydGFpbiBGYW0xMGggc3lzdGVtcyBub3RpY2VkIHN5c3RlbSBoYW5nIGlzc3VlcyB3aGVu
Ci0gKiB0cnlpbmcgdG8gdXBkYXRlIG1pY3JvY29kZSBsZXZlbHMgYmV5b25kIHRoZSBwYXRjaCBJ
RHMgYmVsb3cuCi0gKiBGcm9tIGludGVybmFsIGRpc2N1c3Npb25zLCB3ZSBnYXRoZXJlZCB0aGF0
IE9TL2h5cGVydmlzb3IKLSAqIGNhbm5vdCByZWxpYWJseSBwZXJmb3JtIG1pY3JvY29kZSB1cGRh
dGVzIGJleW9uZCB0aGVzZSBsZXZlbHMKLSAqIGR1ZSB0byBoYXJkd2FyZSBpc3N1ZXMuIFRoZXJl
Zm9yZSwgd2UgbmVlZCB0byBhYm9ydCBtaWNyb2NvZGUKLSAqIHVwZGF0ZSBwcm9jZXNzIGlmIHdl
IGhpdCBhbnkgb2YgdGhlc2UgbGV2ZWxzLgotICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgaW50
IGZpbmFsX2xldmVsc1tdID0gewotICAgIDB4MDEwMDAwOTgsCi0gICAgMHgwMTAwMDA5ZiwKLSAg
ICAweDAxMDAwMGFmCi19OwotCi1zdGF0aWMgYm9vbF90IGNoZWNrX2ZpbmFsX3BhdGNoX2xldmVs
cyh1bnNpZ25lZCBpbnQgY3B1KQotewotICAgIC8qCi0gICAgICogQ2hlY2sgdGhlIGN1cnJlbnQg
cGF0Y2ggbGV2ZWxzIG9uIHRoZSBjcHUuIElmIHRoZXkgYXJlIGVxdWFsIHRvCi0gICAgICogYW55
IG9mIHRoZSAnZmluYWxfbGV2ZWxzJywgdGhlbiB3ZSBzaG91bGQgbm90IHVwZGF0ZSB0aGUgbWlj
cm9jb2RlCi0gICAgICogcGF0Y2ggb24gdGhlIGNwdSBhcyBzeXN0ZW0gd2lsbCBoYW5nIG90aGVy
d2lzZS4KLSAgICAgKi8KLSAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnBl
cl9jcHUoY3B1X3NpZywgY3B1KTsKLSAgICB1bnNpZ25lZCBpbnQgaTsKLQotICAgIGlmICggYm9v
dF9jcHVfZGF0YS54ODYgIT0gMHgxMCApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yICgg
aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZpbmFsX2xldmVscyk7IGkrKyApCi0gICAgICAgIGlmICgg
c2lnLT5yZXYgPT0gZmluYWxfbGV2ZWxzW2ldICkKLSAgICAgICAgICAgIHJldHVybiAxOwotCi0g
ICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVx
dWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmc2l6ZSkKIHsKQEAgLTQzMywx
NCArNDM0LDYgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21p
Y3JvY29kZShjb25zdCB2b2lkICpidWYsCiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAg
IGlmICggY2hlY2tfZmluYWxfcGF0Y2hfbGV2ZWxzKGNwdSkgKQotICAgIHsKLSAgICAgICAgcHJp
bnRrKFhFTkxPR19JTkZPCi0gICAgICAgICAgICAgICAibWljcm9jb2RlOiBDYW5ub3QgdXBkYXRl
IG1pY3JvY29kZSBwYXRjaCBvbiB0aGUgY3B1IGFzIHdlIGhpdCBhIGZpbmFsIGxldmVsXG4iKTsK
LSAgICAgICAgZXJyb3IgPSAtRVBFUk07Ci0gICAgICAgIGdvdG8gb3V0OwotICAgIH0KLQogICAg
IG1jX2FtZCA9IHh6YWxsb2Moc3RydWN0IG1pY3JvY29kZV9hbWQpOwogICAgIGlmICggIW1jX2Ft
ZCApCiAgICAgewotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0
L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhl
bnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:59:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:59:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZy5-0001rN-AU; Sat, 04 Apr 2020 03:59:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZy4-0001rC-AF
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:36 +0000
X-Inumbo-ID: b2b3e786-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b2b3e786-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:59:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=on6ut2gx+FMIcWbghZWJholqC1mHTY9lNTYm7xmAsvo=; b=Dhnm0JMzT5fXpXa48CE4+aERfI
 TNljv/S854LHIwUwMJZvYn07nSekIPtBnAZ3JLmtitP8ces7eTwE/sASWJq7urtJf26akLpqdO3NC
 GwB0ePQ86RQ6NKkAdCfrlwIZsicS6ZXaUDQ6dYXoTVMYEmXtqAUrlRqM/NeQkj9tGsj0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZy3-0005Dq-Je
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZy3-0006TQ-If
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZy3-0006TQ-If@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:59:35 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Don't use void * for
 microcode_patch->mpb
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGE4M2I5ZTcwODRjM2I3N2JlMTg2MmQ3MTIwM2YxY2E4OGZmY2Q4YjMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyNyAxMjo0ODowOCAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogRG9uJ3QgdXNlIHZvaWQgKiBmb3IgbWlj
cm9jb2RlX3BhdGNoLT5tcGIKICAgIAogICAgQWxsIGNvZGUgd29ya3MgZmluZSB3aXRoIGl0IGhh
dmluZyBpdHMgY29ycmVjdCB0eXBlLCBhbmQgaXQgZXZlbiBhbGxvd3MgdXMgdG8KICAgIGRyb3Ag
dHdvIGNhc3RzIGluIGEgcHJpbnRrKCkuCiAgICAKICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLgog
ICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy
aXguY29tPgogICAgUmV2aWV3ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4K
LS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyB8IDUgKystLS0KIDEgZmlsZSBj
aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVu
L2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29k
ZS9hbWQuYwppbmRleCBmZDE4MDQxNjQyLi41NzVmODdiNDg3IDEwMDY0NAotLS0gYS94ZW4vYXJj
aC94ODYvY3B1L21pY3JvY29kZS9hbWQuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29k
ZS9hbWQuYwpAQCAtNTksNyArNTksNyBAQCBzdHJ1Y3QgX19wYWNrZWQgbWljcm9jb2RlX2hlYWRl
cl9hbWQgewogI2RlZmluZSBVQ09ERV9VQ09ERV9UWVBFICAgICAgICAgICAweDAwMDAwMDAxCiAK
IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggewotICAgIHZvaWQgKm1wYjsKKyAgICBzdHJ1Y3QgbWlj
cm9jb2RlX2hlYWRlcl9hbWQgKm1wYjsKICAgICBzaXplX3QgbXBiX3NpemU7CiAgICAgc3RydWN0
IGVxdWl2X2NwdV9lbnRyeSAqZXF1aXZfY3B1X3RhYmxlOwogICAgIHNpemVfdCBlcXVpdl9jcHVf
dGFibGVfc2l6ZTsKQEAgLTMzMCw4ICszMzAsNyBAQCBzdGF0aWMgaW50IGdldF91Y29kZV9mcm9t
X2J1ZmZlcl9hbWQoCiAKICAgICBwcl9kZWJ1ZygibWljcm9jb2RlOiBDUFUlZCBzaXplICV6dSwg
YmxvY2sgc2l6ZSAldSBvZmZzZXQgJXp1IGVxdWl2SUQgJSN4IHJldiAlI3hcbiIsCiAgICAgICAg
ICAgICAgc21wX3Byb2Nlc3Nvcl9pZCgpLCBidWZzaXplLCBtcGJ1Zi0+bGVuLCAqb2Zmc2V0LAot
ICAgICAgICAgICAgICgoc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICopbWNfYW1kLT5tcGIp
LT5wcm9jZXNzb3JfcmV2X2lkLAotICAgICAgICAgICAgICgoc3RydWN0IG1pY3JvY29kZV9oZWFk
ZXJfYW1kICopbWNfYW1kLT5tcGIpLT5wYXRjaF9pZCk7CisgICAgICAgICAgICAgbWNfYW1kLT5t
cGItPnByb2Nlc3Nvcl9yZXZfaWQsIG1jX2FtZC0+bXBiLT5wYXRjaF9pZCk7CiAKICAgICAqb2Zm
c2V0ICs9IG1wYnVmLT5sZW4gKyBTRUNUSU9OX0hEUl9TSVpFOwogCi0tCmdlbmVyYXRlZCBieSBn
aXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGlu
ZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54
ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:59:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:59:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZyF-0001sf-CP; Sat, 04 Apr 2020 03:59:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZyE-0001sU-Cn
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:46 +0000
X-Inumbo-ID: b8b50660-7628-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b8b50660-7628-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 03:59:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=W7uWikMu0k7wWHQVj74lSvWvSl8XxCOCGYPF7/CjV2c=; b=1mnfAu8kHyq/ufu/jf4Fq3IcRh
 hX/dxng0tk9PrDo9/MZtFy/GYVuGDOtlTpmZPOS8e86D2Noa6m7VzqYck8LWO71hRNDk7Z2wyqGXU
 i5nD/44MfeVEmMLB+x8E+nRn4XNZz1bi0ZP7m3PBQvsKUuQAhblXlca+J6slp5mmDiKg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZyD-0005Dz-MD
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZyD-0006UE-LK
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZyD-0006UE-LK@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:59:45 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Collect CPUID.1.EAX in
 collect_cpu_info()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGMxOGU3NjFjMTM3NWM1ODc4MWFlNTU5ZDVmOTNiMTMyOWRhNmUzYTEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyNyAxMzoyMDoxMiAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogQ29sbGVjdCBDUFVJRC4xLkVBWCBpbiBj
b2xsZWN0X2NwdV9pbmZvKCkKICAgIAogICAgLi4uIHJhdGhlciB0aGFuIGNvbGxlY3RpbmcgaXQg
cmVwZWF0ZWRseSBpbiBtaWNyb2NvZGVfZml0cygpLiAgVGhpcyBicmluZ3MgdGhlCiAgICBiZWhh
dmlvdXIgaW4gbGluZSB3aXRoIHRoZSBJbnRlbCBzaWRlLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5
OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQt
Ynk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1
L21pY3JvY29kZS9hbWQuYyB8IDExICsrKy0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L21p
Y3JvY29kZS5oICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgOSBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQu
YyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCmluZGV4IDU3NWY4N2I0ODcuLjNi
NzNhZjlkMjkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCisr
KyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCkBAIC03OSw2ICs3OSw3IEBAIHN0
YXRpYyBpbnQgY29sbGVjdF9jcHVfaW5mbyhzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqY3NpZykKIHsK
ICAgICBtZW1zZXQoY3NpZywgMCwgc2l6ZW9mKCpjc2lnKSk7CiAKKyAgICBjc2lnLT5zaWcgPSBj
cHVpZF9lYXgoMSk7CiAgICAgcmRtc3JsKE1TUl9BTURfUEFUQ0hMRVZFTCwgY3NpZy0+cmV2KTsK
IAogICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIGNvbGxlY3RfY3B1X2luZm86IHBhdGNo
X2lkPSUjeFxuIiwKQEAgLTE3NywxMiArMTc4LDkgQEAgc3RhdGljIGVudW0gbWljcm9jb2RlX21h
dGNoX3Jlc3VsdCBtaWNyb2NvZGVfZml0cygKICAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVy
ZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9j
b2RlX2hlYWRlcl9hbWQgKm1jX2hlYWRlciA9IG1jX2FtZC0+bXBiOwogICAgIGNvbnN0IHN0cnVj
dCBlcXVpdl9jcHVfZW50cnkgKmVxdWl2X2NwdV90YWJsZSA9IG1jX2FtZC0+ZXF1aXZfY3B1X3Rh
YmxlOwotICAgIHVuc2lnbmVkIGludCBjdXJyZW50X2NwdV9pZDsKICAgICB1bnNpZ25lZCBpbnQg
ZXF1aXZfY3B1X2lkOwogCi0gICAgY3VycmVudF9jcHVfaWQgPSBjcHVpZF9lYXgoMHgwMDAwMDAw
MSk7Ci0KLSAgICBpZiAoICFmaW5kX2VxdWl2X2NwdV9pZChlcXVpdl9jcHVfdGFibGUsIGN1cnJl
bnRfY3B1X2lkLCAmZXF1aXZfY3B1X2lkKSApCisgICAgaWYgKCAhZmluZF9lcXVpdl9jcHVfaWQo
ZXF1aXZfY3B1X3RhYmxlLCBzaWctPnNpZywgJmVxdWl2X2NwdV9pZCkgKQogICAgICAgICByZXR1
cm4gTUlTX1VDT0RFOwogCiAgICAgaWYgKCAobWNfaGVhZGVyLT5wcm9jZXNzb3JfcmV2X2lkKSAh
PSBlcXVpdl9jcHVfaWQgKQpAQCAtNDE5LDEzICs0MTcsMTAgQEAgc3RhdGljIHN0cnVjdCBtaWNy
b2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsCiAgICAg
c3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2ggPSBOVUxMOwogICAgIHNpemVfdCBvZmZzZXQg
PSAwLCBzYXZlZF9zaXplID0gMDsKICAgICBpbnQgZXJyb3IgPSAwOwotICAgIHVuc2lnbmVkIGlu
dCBjdXJyZW50X2NwdV9pZDsKICAgICB1bnNpZ25lZCBpbnQgZXF1aXZfY3B1X2lkOwogICAgIHVu
c2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgY29uc3Qgc3RydWN0IGNw
dV9zaWduYXR1cmUgKnNpZyA9ICZwZXJfY3B1KGNwdV9zaWcsIGNwdSk7CiAKLSAgICBjdXJyZW50
X2NwdV9pZCA9IGNwdWlkX2VheCgweDAwMDAwMDAxKTsKLQogICAgIGlmICggYnVmc2l6ZSA8IDQg
fHwgKihjb25zdCB1aW50MzJfdCAqKWJ1ZiAhPSBVQ09ERV9NQUdJQyApCiAgICAgewogICAgICAg
ICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogV3JvbmcgbWljcm9jb2RlIHBhdGNoIGZpbGUg
bWFnaWNcbiIpOwpAQCAtNDU1LDcgKzQ1MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3Bh
dGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIGZpbmRfZXF1aXZfY3B1X2lkKG1jX2Ft
ZC0+ZXF1aXZfY3B1X3RhYmxlLCBjdXJyZW50X2NwdV9pZCwKKyAgICAgICAgaWYgKCBmaW5kX2Vx
dWl2X2NwdV9pZChtY19hbWQtPmVxdWl2X2NwdV90YWJsZSwgc2lnLT5zaWcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmVxdWl2X2NwdV9pZCkgKQogICAgICAgICAgICAgYnJlYWs7
CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbWljcm9jb2RlLmggYi94ZW4vaW5j
bHVkZS9hc20teDg2L21pY3JvY29kZS5oCmluZGV4IDNhOGU0ZTgyMjEuLmNiYmUyOGNiNDUgMTAw
NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbWljcm9jb2RlLmgKKysrIGIveGVuL2luY2x1
ZGUvYXNtLXg4Ni9taWNyb2NvZGUuaApAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMv
eGVuLmg+CiAKIHN0cnVjdCBjcHVfc2lnbmF0dXJlIHsKLSAgICAvKiBDUFUgc2lnbmF0dXJlIChD
UFVJRC4xLkVBWCkuICBPbmx5IHdyaXR0ZW4gb24gSW50ZWwuICovCisgICAgLyogQ1BVIHNpZ25h
dHVyZSAoQ1BVSUQuMS5FQVgpLiAqLwogICAgIHVuc2lnbmVkIGludCBzaWc7CiAKICAgICAvKiBQ
bGF0Zm9ybSBGbGFncy4gIE9ubHkgYXBwbGljYWJsZSB0byBJbnRlbC4gKi8KLS0KZ2VuZXJhdGVk
IGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBt
YWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 03:59:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 03:59:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZyQ-0001u1-EQ; Sat, 04 Apr 2020 03:59:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZyP-0001tt-5N
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:57 +0000
X-Inumbo-ID: beb95d54-7628-11ea-bdc8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id beb95d54-7628-11ea-bdc8-12813bfff9fa;
 Sat, 04 Apr 2020 03:59:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=y7Rh4Z6iH93yfZ73+3EJjAiqswsvIBYqvY+ERLWxjtE=; b=KtEvUeOmr24muWOnZ+eKTcsrSo
 av5aJTy5ZDI+vlX+079JUwsQq75hCulkzD/sC/bWWC9M4v17fRMr74zNdj7AZZF6RDVTr42x3pTxH
 gaAmdQC0Vcb1RQeKvQ6y9xaPkJnUG8kniTtmOOTrfIVqpuPBKHPgWILC0iIuKI5YFNgA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZyN-0005EA-Oy
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZyN-0006Uq-Nv
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 03:59:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZyN-0006Uq-Nv@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 03:59:55 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Overhaul the equivalent
 cpu table handling completely
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGY2ZmE2NWFkOWJiMmJiNzg2ODNmNjllZWNlYjg4ZGQ1MTNiZDQ5ZWEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIE1hciAyNyAxNjo0ODoxNiAyMDIwICswMDAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogT3ZlcmhhdWwgdGhlIGVxdWl2YWxlbnQg
Y3B1IHRhYmxlIGhhbmRsaW5nIGNvbXBsZXRlbHkKICAgIAogICAgV2UgY3VycmVudGx5IGNvcHkg
dGhlIGVudGlyZSBlcXVpdmFsZW5jeSB0YWJsZSwgYW5kIHRoZSBzaW5nbGUgY29ycmVjdAogICAg
bWljcm9jb2RlLiAgVGhpcyBpcyBub3Qgc2FmZSB0byBoZXRlcm9nZW5lb3VzIHNjZW5hcmlvcywg
YW5kIGFzIFhlbiBkb2Vzbid0CiAgICBzdXBwb3J0IHN1Y2ggc2l0dWF0aW9ucyB0byBiZWdpbiB3
aXRoLCBjYW4gYmUgdXNlZCB0byBzaW1wbGlmeSB0aGluZ3MgZnVydGhlci4KICAgIAogICAgVGhl
IENQVUlELjEuRUFYID0+IHByb2Nlc3Nvcl9yZXZfaWQgbWFwcGluZyBpcyBmaXhlZCBmb3IgYW4g
aW5kaXZpZHVhbCBwYXJ0LgogICAgV2UgY2FuIGNhY2hlIHRoZSBzaW5nbGUgYXBwcm9wcmlhdGUg
ZW50cnkgb24gZmlyc3QgZGlzY292ZXJ5LCBhbmQgZm9yZ28KICAgIGR1cGxpY2F0aW5nIHRoZSBl
bnRpcmUgdGFibGUuCiAgICAKICAgIEFsdGVyIGluc3RhbGxfZXF1aXZfY3B1X3RhYmxlKCkgdG8g
YmUgc2Nhbl9lcXVpdl9jcHVfdGFibGUoKSB3aGljaCBpcwogICAgcmVzcG9uc2libGUgZm9yIGNo
ZWNraW5nIHRoZSBlcXVpdmFsZW5jeSB0YWJsZSBhbmQgY2FjaGluZyBhcHByb3ByaWF0ZQogICAg
ZGV0YWlscy4gIEl0IG5vdyBoYXMgYSBjaGVjayBmb3IgZmluZGluZyBhIGRpZmZlcmVudCBtYXBw
aW5nICh3aGljaCBpbmRpY2F0ZXMKICAgIHRoYXQgb25lIG9mIHRoZSB0YWJsZXMgd2UndmUgc2Vl
biBpcyBkZWZpbml0ZWx5IHdyb25nKS4KICAgIAogICAgQSByZXR1cm4gdmFsdWUgb2YgLUVTUkNI
IGlzIG5vdyB1c2VkIHRvIHNpZ25pZnkgImV2ZXJ5dGhpbmcgZmluZSwgYnV0IG5vdGhpbmcKICAg
IGFwcGxpY2FibGUgZm9yIHRoZSBjdXJyZW50IENQVSIsIHdoaWNoIGlzIHVzZWQgdG8gc2VsZWN0
IHRoZQogICAgY29udGFpbmVyX2Zhc3RfZm9yd2FyZCgpIHBhdGguCiAgICAKICAgIERyb3AgdGhl
IHByaW50aygpLCBhcyBlYWNoIGFwcGxpY2FibGUgZXJyb3IgcGF0aCBpbiBzY2FuX2VxdWl2X2Nw
dV90YWJsZSgpCiAgICBhbHJlYWR5IHByaW50cyBkaWFnbm9zdGljcy4KICAgIAogICAgU2lnbmVk
LW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KICAgIFJl
dmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gv
eDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKy0tLS0t
LS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjQgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgYi94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwppbmRleCAzYjczYWY5ZDI5Li45NDE3ZmYy
ZDNhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYworKysgYi94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpAQCAtNjEsOCArNjEsNiBAQCBzdHJ1Y3Qg
X19wYWNrZWQgbWljcm9jb2RlX2hlYWRlcl9hbWQgewogc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7
CiAgICAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICptcGI7CiAgICAgc2l6ZV90IG1wYl9z
aXplOwotICAgIHN0cnVjdCBlcXVpdl9jcHVfZW50cnkgKmVxdWl2X2NwdV90YWJsZTsKLSAgICBz
aXplX3QgZXF1aXZfY3B1X3RhYmxlX3NpemU7CiB9OwogCiAvKiBUZW1wb3JhcnksIHVudGlsIHRo
ZSBtaWNyb2NvZGVfKiBzdHJ1Y3R1cmUgYXJlIGRpc2VudGFuZ2xlZC4gKi8KQEAgLTc0LDYgKzcy
LDMxIEBAIHN0cnVjdCBtcGJoZHIgewogICAgIHVpbnQ4X3QgZGF0YVtdOwogfTsKIAorLyoKKyAq
IE1pY3JvY29kZSB1cGRhdGVzIGZvciBkaWZmZXJlbnQgQ1BVcyBhcmUgZGlzdGluZ3Vpc2hlZCBi
eSB0aGVpcgorICogcHJvY2Vzc29yX3Jldl9pZCBpbiB0aGUgaGVhZGVyLiAgVGhpcyBkZW5vdGVz
IHRoZSBmb3JtYXQgb2YgdGhlIGludGVybmFscworICogb2YgdGhlIG1pY3JvY29kZSBlbmdpbmUs
IGFuZCBpcyBmaXhlZCBmb3IgYW4gaW5kaXZpZHVhbCBDUFUuCisgKgorICogVGhlcmUgaXMgYSBt
YXBwaW5nIGZyb20gdGhlIENQVSBzaWduYXR1cmUgKENQVUlELjEuRUFYIC0KKyAqIGZhbWlseS9t
b2RlbC9zdGVwcGluZykgdG8gdGhlICJlcXVpdmFsZW50IENQVSBpZGVudGlmaWVyIiB3aGljaCBp
cworICogc2ltaWxhcmx5IGZpeGVkLiAgSW4gc29tZSBjYXNlcywgbXVsdGlwbGUgZGlmZmVyZW50
IENQVSBzaWduYXR1cmVzIG1hcCB0bworICogdGhlIHNhbWUgZXF1aXZfaWQgZm9yIHByb2Nlc3Nv
ciBsaW5lcyB3aGljaCBzaGFyZSBpZGVudGljYWwgbWljcm9jb2RlCisgKiBmYWNpbGl0aWVzLgor
ICoKKyAqIFRoaXMgbWFwcGluZyBjYW4ndCBiZSBjYWxjdWxhdGVkIGluIHRoZSBnZW5lcmFsIGNh
c2UsIGJ1dCBpcyBwcm92aWRlZCBpbgorICogdGhlIG1pY3JvY29kZSBjb250YWluZXIsIHNvIHRo
ZSBjb3JyZWN0IHBpZWNlIG9mIG1pY3JvY29kZSBmb3IgdGhlIENQVSBjYW4KKyAqIGJlIGlkZW50
aWZpZWQuICBXZSBjYWNoZSBpdCB0aGUgZmlyc3QgdGltZSB3ZSBlbmNvdW50ZXIgdGhlIGNvcnJl
Y3QgbWFwcGluZworICogZm9yIHRoaXMgc3lzdGVtLgorICoKKyAqIE5vdGU6IGZvciBub3csIHdl
IGFzc3VtZSBhIGZ1bGx5IGhvbW9nZW5lb3VzIHNldHVwLCBtZWFuaW5nIHRoYXQgdGhlcmUgaXMK
KyAqIGV4YWN0bHkgb25lIGVxdWl2X2lkIHdlIG5lZWQgdG8gd29ycnkgYWJvdXQgZm9yIG1pY3Jv
Y29kZSBibG9iCisgKiBpZGVudGlmaWNhdGlvbi4gIFRoaXMgbWF5IG5lZWQgcmV2aXNpdGluZyBp
biBkdWUgY291cnNlLgorICovCitzdGF0aWMgc3RydWN0IHsKKyAgICB1aW50MzJfdCBzaWc7Cisg
ICAgdWludDE2X3QgaWQ7Cit9IGVxdWl2IF9fcmVhZF9tb3N0bHk7CisKIC8qIFNlZSBjb21tZW50
IGluIHN0YXJ0X3VwZGF0ZSgpIGZvciBjYXNlcyB3aGVuIHRoaXMgcm91dGluZSBmYWlscyAqLwog
c3RhdGljIGludCBjb2xsZWN0X2NwdV9pbmZvKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQog
ewpAQCAtMTUwLDQwICsxNzMsMTUgQEAgc3RhdGljIGJvb2wgY2hlY2tfZmluYWxfcGF0Y2hfbGV2
ZWxzKGNvbnN0IHN0cnVjdCBjcHVfc2lnbmF0dXJlICpzaWcpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1zdGF0aWMgYm9vbF90IGZpbmRfZXF1aXZfY3B1X2lkKGNvbnN0IHN0cnVjdCBlcXVpdl9j
cHVfZW50cnkgKmVxdWl2X2NwdV90YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGN1cnJlbnRfY3B1X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgKmVxdWl2X2NwdV9pZCkKLXsKLSAgICB1bnNpZ25lZCBpbnQg
aTsKLQotICAgIGlmICggIWVxdWl2X2NwdV90YWJsZSApCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgZm9yICggaSA9IDA7IGVxdWl2X2NwdV90YWJsZVtpXS5pbnN0YWxsZWRfY3B1ICE9IDA7IGkr
KyApCi0gICAgewotICAgICAgICBpZiAoIGN1cnJlbnRfY3B1X2lkID09IGVxdWl2X2NwdV90YWJs
ZVtpXS5pbnN0YWxsZWRfY3B1ICkKLSAgICAgICAgewotICAgICAgICAgICAgKmVxdWl2X2NwdV9p
ZCA9IGVxdWl2X2NwdV90YWJsZVtpXS5lcXVpdl9jcHUgJiAweGZmZmY7Ci0gICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMg
ZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29kZV9maXRzKAogICAgIGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfYW1kICptY19hbWQpCiB7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNt
cF9wcm9jZXNzb3JfaWQoKTsKICAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0g
JnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRl
cl9hbWQgKm1jX2hlYWRlciA9IG1jX2FtZC0+bXBiOwotICAgIGNvbnN0IHN0cnVjdCBlcXVpdl9j
cHVfZW50cnkgKmVxdWl2X2NwdV90YWJsZSA9IG1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxlOwotICAg
IHVuc2lnbmVkIGludCBlcXVpdl9jcHVfaWQ7CiAKLSAgICBpZiAoICFmaW5kX2VxdWl2X2NwdV9p
ZChlcXVpdl9jcHVfdGFibGUsIHNpZy0+c2lnLCAmZXF1aXZfY3B1X2lkKSApCi0gICAgICAgIHJl
dHVybiBNSVNfVUNPREU7Ci0KLSAgICBpZiAoIChtY19oZWFkZXItPnByb2Nlc3Nvcl9yZXZfaWQp
ICE9IGVxdWl2X2NwdV9pZCApCisgICAgaWYgKCBlcXVpdi5zaWcgIT0gc2lnLT5zaWcgfHwKKyAg
ICAgICAgIGVxdWl2LmlkICAhPSBtY19oZWFkZXItPnByb2Nlc3Nvcl9yZXZfaWQgKQogICAgICAg
ICByZXR1cm4gTUlTX1VDT0RFOwogCiAgICAgaWYgKCAhdmVyaWZ5X3BhdGNoX3NpemUobWNfYW1k
LT5tcGJfc2l6ZSkgKQpAQCAtMjEzLDcgKzIxMSw2IEBAIHN0YXRpYyB2b2lkIGZyZWVfcGF0Y2go
c3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWNfYW1kKQogewogICAgIGlmICggbWNfYW1kICkKICAg
ICB7Ci0gICAgICAgIHhmcmVlKG1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxlKTsKICAgICAgICAgeGZy
ZWUobWNfYW1kLT5tcGIpOwogICAgICAgICB4ZnJlZShtY19hbWQpOwogICAgIH0KQEAgLTMzNSwx
NCArMzMyLDE1IEBAIHN0YXRpYyBpbnQgZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgKICAgICBy
ZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBpbnN0YWxsX2VxdWl2X2NwdV90YWJsZSgKLSAgICBz
dHJ1Y3QgbWljcm9jb2RlX2FtZCAqbWNfYW1kLAorc3RhdGljIGludCBzY2FuX2VxdWl2X2NwdV90
YWJsZSgKICAgICBjb25zdCB2b2lkICpkYXRhLAogICAgIHNpemVfdCBzaXplX2xlZnQsCiAgICAg
c2l6ZV90ICpvZmZzZXQpCiB7CisgICAgY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZyA9
ICZ0aGlzX2NwdShjcHVfc2lnKTsKICAgICBjb25zdCBzdHJ1Y3QgbXBiaGRyICptcGJ1ZjsKICAg
ICBjb25zdCBzdHJ1Y3QgZXF1aXZfY3B1X2VudHJ5ICplcTsKKyAgICB1bnNpZ25lZCBpbnQgaSwg
bnI7CiAKICAgICBpZiAoIHNpemVfbGVmdCA8IChzaXplb2YoKm1wYnVmKSArIDQpIHx8CiAgICAg
ICAgICAobXBidWYgPSBkYXRhICsgKm9mZnNldCArIDQsCkBAIC0zNjIsMTkgKzM2MCw0NSBAQCBz
dGF0aWMgaW50IGluc3RhbGxfZXF1aXZfY3B1X3RhYmxlKAogCiAgICAgaWYgKCBtcGJ1Zi0+bGVu
ID09IDAgfHwgbXBidWYtPmxlbiAlIHNpemVvZigqZXEpIHx8CiAgICAgICAgICAoZXEgPSAoY29u
c3Qgdm9pZCAqKW1wYnVmLT5kYXRhLAotICAgICAgICAgIGVxWyhtcGJ1Zi0+bGVuIC8gc2l6ZW9m
KCplcSkpIC0gMV0uaW5zdGFsbGVkX2NwdSkgKQorICAgICAgICAgIG5yID0gbXBidWYtPmxlbiAv
IHNpemVvZigqZXEpLAorICAgICAgICAgIGVxW25yIC0gMV0uaW5zdGFsbGVkX2NwdSkgKQogICAg
IHsKICAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IFdyb25nIG1pY3JvY29kZSBl
cXVpdmFsZW50IGNwdSB0YWJsZSBsZW5ndGhcbiIpOwogICAgICAgICByZXR1cm4gLUVJTlZBTDsK
ICAgICB9CiAKLSAgICBtY19hbWQtPmVxdWl2X2NwdV90YWJsZSA9IHhtZW1kdXBfYnl0ZXMobXBi
dWYtPmRhdGEsIG1wYnVmLT5sZW4pOwotICAgIGlmICggIW1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxl
ICkKLSAgICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgLyogU2VhcmNoIHRoZSBlcXVpdl9jcHVf
dGFibGUgZm9yIHRoZSBjdXJyZW50IENQVS4gKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yICYm
IGVxW2ldLmluc3RhbGxlZF9jcHU7ICsraSApCisgICAgeworICAgICAgICBpZiAoIGVxW2ldLmlu
c3RhbGxlZF9jcHUgIT0gc2lnLT5zaWcgKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBt
Y19hbWQtPmVxdWl2X2NwdV90YWJsZV9zaXplID0gbXBidWYtPmxlbjsKKyAgICAgICAgaWYgKCAh
ZXF1aXYuc2lnICkgLyogQ2FjaGUgZGV0YWlscyBvbiBmaXJzdCBmaW5kLiAqLworICAgICAgICB7
CisgICAgICAgICAgICBlcXVpdi5zaWcgPSBzaWctPnNpZzsKKyAgICAgICAgICAgIGVxdWl2Lmlk
ICA9IGVxW2ldLmVxdWl2X2NwdTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAK
LSAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCBlcXVpdi5zaWcgIT0gc2lnLT5zaWcgfHwgZXF1
aXYuaWQgIT0gZXFbaV0uZXF1aXZfY3B1ICkKKyAgICAgICAgeworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAqIFRoaXMgY2FuIG9ubHkgb2NjdXIgaWYgdHdvIGVxdWl2IHRhYmxlcyBoYXZl
IGJlZW4gc2VlbiB3aXRoCisgICAgICAgICAgICAgKiBkaWZmZXJlbnQgbWFwcGluZ3MgZm9yIHRo
ZSBzYW1lIENQVS4gIFRoZSBtYXBwaW5nIGlzIGZpeGVkLCBzbworICAgICAgICAgICAgICogb25l
IG9mIHRoZSB0YWJsZXMgaXMgd3JvbmcuICBBcyB3ZSBjYW4ndCBjYWxjdWxhdGUgdGhlIG1hcHBp
bmcsCisgICAgICAgICAgICAgKiB3ZSB0cnVzdGVkIHRoZSBmaXJzdCB0YWJsZSB3ZSBzYXcuCisg
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSCisgICAgICAgICAg
ICAgICAgICAgIm1pY3JvY29kZTogRXF1aXYgbWlzbWF0Y2g6IGNwdSAlMDh4LCBnb3QgJTA0eCwg
Y2FjaGVkICUwNHhcbiIsCisgICAgICAgICAgICAgICAgICAgc2lnLT5zaWcsIGVxW2ldLmVxdWl2
X2NwdSwgZXF1aXYuaWQpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBlcXVpdl9jcHVfdGFibGUgd2Fz
IGZpbmUsIGJ1dCBub3RoaW5nIGZvdW5kIGZvciB0aGUgY3VycmVudCBDUFUuICovCisgICAgcmV0
dXJuIC1FU1JDSDsKIH0KIAogc3RhdGljIGludCBjb250YWluZXJfZmFzdF9mb3J3YXJkKGNvbnN0
IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplX2xlZnQsIHNpemVfdCAqb2Zmc2V0KQpAQCAtNDE3LDcg
KzQ0MSw2IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNy
b2NvZGUoY29uc3Qgdm9pZCAqYnVmLAogICAgIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNo
ID0gTlVMTDsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMCwgc2F2ZWRfc2l6ZSA9IDA7CiAgICAgaW50
IGVycm9yID0gMDsKLSAgICB1bnNpZ25lZCBpbnQgZXF1aXZfY3B1X2lkOwogICAgIHVuc2lnbmVk
IGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgY29uc3Qgc3RydWN0IGNwdV9zaWdu
YXR1cmUgKnNpZyA9ICZwZXJfY3B1KGNwdV9zaWcsIGNwdSk7CiAKQEAgLTQ0MywxNSArNDY2LDkg
QEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShj
b25zdCB2b2lkICpidWYsCiAgICAgICovCiAgICAgd2hpbGUgKCBvZmZzZXQgPCBidWZzaXplICkK
ICAgICB7Ci0gICAgICAgIGVycm9yID0gaW5zdGFsbF9lcXVpdl9jcHVfdGFibGUobWNfYW1kLCBi
dWYsIGJ1ZnNpemUgLSBvZmZzZXQsICZvZmZzZXQpOwotICAgICAgICBpZiAoIGVycm9yICkKLSAg
ICAgICAgewotICAgICAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IGluc3RhbGxp
bmcgZXF1aXZhbGVudCBjcHUgdGFibGUgZmFpbGVkXG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9CisgICAgICAgIGVycm9yID0gc2Nhbl9lcXVpdl9jcHVfdGFibGUoYnVmLCBidWZz
aXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKIAotICAgICAgICBpZiAoIGZpbmRfZXF1aXZfY3B1X2lk
KG1jX2FtZC0+ZXF1aXZfY3B1X3RhYmxlLCBzaWctPnNpZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmZXF1aXZfY3B1X2lkKSApCisgICAgICAgIGlmICggIWVycm9yIHx8IGVycm9y
ICE9IC1FU1JDSCApCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBlcnJvciA9IGNvbnRh
aW5lcl9mYXN0X2ZvcndhcmQoYnVmLCBidWZzaXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKQEAgLTQ3
OCw3ICs0OTUsNiBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3Rf
bWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgaWYgKCBlcnJvciA9PSAtRU5PREFU
QSApCiAgICAgICAgICAgICBlcnJvciA9IDA7CiAKLSAgICAgICAgeGZyZWUobWNfYW1kLT5lcXVp
dl9jcHVfdGFibGUpOwogICAgICAgICB4ZnJlZShtY19hbWQpOwogICAgICAgICBnb3RvIG91dDsK
ICAgICB9Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVu
LmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJv
amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 04:00:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 04:00:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZya-0002dO-GW; Sat, 04 Apr 2020 04:00:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZyZ-0002dF-Hx
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:07 +0000
X-Inumbo-ID: c4c14658-7628-11ea-bdc9-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c4c14658-7628-11ea-bdc9-12813bfff9fa;
 Sat, 04 Apr 2020 04:00:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/+A/wj3z6KiEJgF+cBM1TB/S+Ja1UQqiJxQjw5nDP0Q=; b=DSmUZ8+NRNrqDogmugr9Jb8KzI
 0dwAaBlm9ct0n58YvarEOBrW7B1tYF/Is4sPfGoy7hyaa6o22T/eB5okVbhLJ4FT4m2HTlZHL7TW0
 5XmgBSJa5nt4tfTZTCJBA8VUIhCRw4hbNCsMZjfViE/5qacWDDrS67or4YMAXvbEUNWk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZyX-0005KU-Rk
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZyX-0006XD-Qh
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZyX-0006XD-Qh@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 04:00:05 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Move
 verify_patch_size() into get_ucode_from_buffer_amd()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDk4ZWIwYzk5NGNhODI4ZGE3ZjM4ZjBlZTA0YzU3YTBhZTI0MDY4YTUKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxODoxMDo1MCAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogTW92ZSB2ZXJpZnlfcGF0Y2hfc2l6ZSgp
IGludG8gZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgpCiAgICAKICAgIFdlIG9ubHkgc3Rhc2gg
dGhlIG1pY3JvY29kZSBibG9iIHNpemUgc28gaXQgY2FuIGJlIGF1ZGl0ZWQgaW4KICAgIG1pY3Jv
Y29kZV9maXRzKCkuICBIb3dldmVyLCB0aGUgcGF0Y2ggc2l6ZSBjaGVjayBkZXBlbmRzIG9ubHkg
b24gdGhlIENQVQogICAgZmFtaWx5LgogICAgCiAgICBNb3ZlIHRoZSBjaGVjayBlYXJsaWVyIHRv
IHdoZW4gd2UgYXJlIHBhcnNpbmcgdGhlIGNvbnRhaW5lciwgd2hpY2ggYXZvaWRzCiAgICBjYWNo
aW5nIGJhZCBtaWNyb2NvZGUgaW4gdGhlIGZpcnN0IHBsYWNlLCBhbmQgYWxsb3dzIHVzIHRvIGF2
b2lkIHN0b3JpbmcgdGhlCiAgICBzaXplIGF0IGFsbC4KICAgIAogICAgU2lnbmVkLW9mZi1ieTog
QW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KICAgIFJldmlld2VkLWJ5
OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9t
aWNyb2NvZGUvYW1kLmMgfCAxOCArKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3
IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL2FtZC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMK
aW5kZXggOTQxN2ZmMmQzYS4uOWVhOTJmNjAwNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvYW1kLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMK
QEAgLTYwLDcgKzYwLDYgQEAgc3RydWN0IF9fcGFja2VkIG1pY3JvY29kZV9oZWFkZXJfYW1kIHsK
IAogc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7CiAgICAgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJf
YW1kICptcGI7Ci0gICAgc2l6ZV90IG1wYl9zaXplOwogfTsKIAogLyogVGVtcG9yYXJ5LCB1bnRp
bCB0aGUgbWljcm9jb2RlXyogc3RydWN0dXJlIGFyZSBkaXNlbnRhbmdsZWQuICovCkBAIC0xODQs
MTIgKzE4Myw2IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgbWljcm9jb2Rl
X2ZpdHMoCiAgICAgICAgICBlcXVpdi5pZCAgIT0gbWNfaGVhZGVyLT5wcm9jZXNzb3JfcmV2X2lk
ICkKICAgICAgICAgcmV0dXJuIE1JU19VQ09ERTsKIAotICAgIGlmICggIXZlcmlmeV9wYXRjaF9z
aXplKG1jX2FtZC0+bXBiX3NpemUpICkKLSAgICB7Ci0gICAgICAgIHByX2RlYnVnKCJtaWNyb2Nv
ZGU6IHBhdGNoIHNpemUgbWlzbWF0Y2hcbiIpOwotICAgICAgICByZXR1cm4gTUlTX1VDT0RFOwot
ICAgIH0KLQogICAgIGlmICggbWNfaGVhZGVyLT5wYXRjaF9pZCA8PSBzaWctPnJldiApCiAgICAg
ewogICAgICAgICBwcl9kZWJ1ZygibWljcm9jb2RlOiBwYXRjaCBpcyBhbHJlYWR5IGF0IHJlcXVp
cmVkIGxldmVsIG9yIGdyZWF0ZXIuXG4iKTsKQEAgLTMxOCwxMCArMzExLDE1IEBAIHN0YXRpYyBp
bnQgZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAg
ICAgfQogCisgICAgaWYgKCAhdmVyaWZ5X3BhdGNoX3NpemUobXBidWYtPmxlbikgKQorICAgIHsK
KyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIm1pY3JvY29kZTogcGF0Y2ggc2l6ZSBtaXNtYXRj
aFxuIik7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKwogICAgIG1jX2FtZC0+bXBi
ID0geG1lbWR1cF9ieXRlcyhtcGJ1Zi0+ZGF0YSwgbXBidWYtPmxlbik7CiAgICAgaWYgKCAhbWNf
YW1kLT5tcGIgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICBtY19hbWQtPm1wYl9zaXpl
ID0gbXBidWYtPmxlbjsKIAogICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIHNpemUgJXp1
LCBibG9jayBzaXplICV1IG9mZnNldCAlenUgZXF1aXZJRCAlI3ggcmV2ICUjeFxuIiwKICAgICAg
ICAgICAgICBzbXBfcHJvY2Vzc29yX2lkKCksIGJ1ZnNpemUsIG1wYnVmLT5sZW4sICpvZmZzZXQs
CkBAIC00MzksNyArNDM3LDcgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9y
ZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsCiAgICAgc3RydWN0IG1pY3JvY29kZV9h
bWQgKm1jX2FtZDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKnNhdmVkID0gTlVM
TDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IE5VTEw7Ci0gICAgc2l6ZV90
IG9mZnNldCA9IDAsIHNhdmVkX3NpemUgPSAwOworICAgIHNpemVfdCBvZmZzZXQgPSAwOwogICAg
IGludCBlcnJvciA9IDA7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQo
KTsKICAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3Np
ZywgY3B1KTsKQEAgLTUxNSw3ICs1MTMsNiBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRj
aCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgewogICAg
ICAgICAgICAgeGZyZWUoc2F2ZWQpOwogICAgICAgICAgICAgc2F2ZWQgPSBtY19hbWQtPm1wYjsK
LSAgICAgICAgICAgIHNhdmVkX3NpemUgPSBtY19hbWQtPm1wYl9zaXplOwogICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtNTU0LDcgKzU1MSw2IEBAIHN0YXRpYyBzdHJ1Y3Qg
bWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAog
ICAgIGlmICggc2F2ZWQgKQogICAgIHsKICAgICAgICAgbWNfYW1kLT5tcGIgPSBzYXZlZDsKLSAg
ICAgICAgbWNfYW1kLT5tcGJfc2l6ZSA9IHNhdmVkX3NpemU7CiAgICAgICAgIHBhdGNoID0gbWNf
YW1kOwogICAgIH0KICAgICBlbHNlCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9o
b21lL3hlbi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vs
b2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4t
Y2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 04:00:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 04:00:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZyj-0002f4-Jo; Sat, 04 Apr 2020 04:00:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZyi-0002ew-QY
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:16 +0000
X-Inumbo-ID: cabf03d8-7628-11ea-bdc9-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cabf03d8-7628-11ea-bdc9-12813bfff9fa;
 Sat, 04 Apr 2020 04:00:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=U3RlzbgoJdfedrtsB4B11lJqi168r4pVwYAYOQMpFn8=; b=o+lXGhM0aM7Gs9sBvSYX0GCGf3
 FN4uWCtL1lSehM9SC7s0ImEE5OuyY5Wjc2OD8DhdGo6OUtzjTd426aM6SMSA80gN0LuuC+W3Tqaak
 sHJqAM1RKL3YmImec+uxYdCcrpWNqUKbv0qTudNNjULjDNaX081BvN4jD9F3r9fRC7Q4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZyh-0005LI-UU
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZyh-0006Yb-TZ
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZyh-0006Yb-TZ@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 04:00:15 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Alter API for
 microcode_fits()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGU2YWM0ZDFiNDU4NDU4MTI1NWJiMWI0YmRmOThjYTQ2OWM0ZjE4MzcKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxNzo0NDoxNyAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogQWx0ZXIgQVBJIGZvciBtaWNyb2NvZGVf
Zml0cygpCiAgICAKICAgIEFsdGhvdWdoIGl0IGlzIGxvZ2ljYWxseSBhIHN0ZXAgaW4gdGhlIHdy
b25nIGRpcmVjdGlvbiBvdmVyYWxsLCBpdCBzaW1wbGlmaWVzCiAgICB0aGUgcmVhcnJhbmdpbmcg
b2YgY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkgc3Vic3RhbnRpYWxseSBmb3IgbWljcm9jb2RlX2Zp
dHMoKQogICAgdG8gdGFrZSBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgZGlyZWN0bHksIGFu
ZCBub3QgcmVxdWlyZSBhbiBpbnRlcm1lZGlhdGUKICAgIHN0cnVjdCBtaWNyb2NvZGVfYW1kIHBv
aW50aW5nIGF0IGl0LgogICAgCiAgICBNYWtlIHRoaXMgY2hhbmdlICh0YWtpbmcgdGltZSB0byBy
ZW5hbWUgJ21jX2FtZCcgdG8gaXRzIGV2ZW50dWFsICdwYXRjaCcgdG8KICAgIHJlZHVjZSB0aGUg
Y2h1cm4gaW4gdGhlIHNlcmllcyksIGFuZCBhIGxhdGVyIGNsZWFudXAgd2lsbCBtYWtlIGl0IHVu
aWZvcm1seQogICAgdGFrZSBhIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2guCiAgICAKICAgIE5vIGZ1
bmN0aW9uYWwgY2hhbmdlLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxh
bmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1
bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyB8IDIy
ICsrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyks
IDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggOWVhOTJmNjAw
NS4uMDM2NWM4NWQ5OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1k
LmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTE3MywzMSArMTcz
LDMwIEBAIHN0YXRpYyBib29sIGNoZWNrX2ZpbmFsX3BhdGNoX2xldmVscyhjb25zdCBzdHJ1Y3Qg
Y3B1X3NpZ25hdHVyZSAqc2lnKQogfQogCiBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVz
dWx0IG1pY3JvY29kZV9maXRzKAotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfYW1kICptY19h
bWQpCisgICAgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICpwYXRjaCkKIHsKICAg
ICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogICAgIGNvbnN0IHN0cnVj
dCBjcHVfc2lnbmF0dXJlICpzaWcgPSAmcGVyX2NwdShjcHVfc2lnLCBjcHUpOwotICAgIGNvbnN0
IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2FtZCAqbWNfaGVhZGVyID0gbWNfYW1kLT5tcGI7CiAK
ICAgICBpZiAoIGVxdWl2LnNpZyAhPSBzaWctPnNpZyB8fAotICAgICAgICAgZXF1aXYuaWQgICE9
IG1jX2hlYWRlci0+cHJvY2Vzc29yX3Jldl9pZCApCisgICAgICAgICBlcXVpdi5pZCAgIT0gcGF0
Y2gtPnByb2Nlc3Nvcl9yZXZfaWQgKQogICAgICAgICByZXR1cm4gTUlTX1VDT0RFOwogCi0gICAg
aWYgKCBtY19oZWFkZXItPnBhdGNoX2lkIDw9IHNpZy0+cmV2ICkKKyAgICBpZiAoIHBhdGNoLT5w
YXRjaF9pZCA8PSBzaWctPnJldiApCiAgICAgewogICAgICAgICBwcl9kZWJ1ZygibWljcm9jb2Rl
OiBwYXRjaCBpcyBhbHJlYWR5IGF0IHJlcXVpcmVkIGxldmVsIG9yIGdyZWF0ZXIuXG4iKTsKICAg
ICAgICAgcmV0dXJuIE9MRF9VQ09ERTsKICAgICB9CiAKICAgICBwcl9kZWJ1ZygibWljcm9jb2Rl
OiBDUFUlZCBmb3VuZCBhIG1hdGNoaW5nIG1pY3JvY29kZSB1cGRhdGUgd2l0aCB2ZXJzaW9uICUj
eCAoY3VycmVudD0lI3gpXG4iLAotICAgICAgICAgICAgIGNwdSwgbWNfaGVhZGVyLT5wYXRjaF9p
ZCwgc2lnLT5yZXYpOworICAgICAgICAgICAgIGNwdSwgcGF0Y2gtPnBhdGNoX2lkLCBzaWctPnJl
dik7CiAKICAgICByZXR1cm4gTkVXX1VDT0RFOwogfQogCiBzdGF0aWMgYm9vbCBtYXRjaF9jcHUo
Y29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7Ci0gICAgcmV0dXJuIHBhdGNo
ICYmIChtaWNyb2NvZGVfZml0cyhwYXRjaCkgPT0gTkVXX1VDT0RFKTsKKyAgICByZXR1cm4gcGF0
Y2ggJiYgKG1pY3JvY29kZV9maXRzKHBhdGNoLT5tcGIpID09IE5FV19VQ09ERSk7CiB9CiAKIHN0
YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWNfYW1kKQpAQCAt
MjIzLDE0ICsyMjIsMTEgQEAgc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21w
YXJlX2hlYWRlcigKIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgY29tcGFyZV9w
YXRjaCgKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpuZXcsIGNvbnN0IHN0cnVj
dCBtaWNyb2NvZGVfcGF0Y2ggKm9sZCkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hl
YWRlcl9hbWQgKm5ld19oZWFkZXIgPSBuZXctPm1wYjsKLSAgICBjb25zdCBzdHJ1Y3QgbWljcm9j
b2RlX2hlYWRlcl9hbWQgKm9sZF9oZWFkZXIgPSBvbGQtPm1wYjsKLQogICAgIC8qIEJvdGggcGF0
Y2hlcyB0byBjb21wYXJlIGFyZSBzdXBwb3NlZCB0byBiZSBhcHBsaWNhYmxlIHRvIGxvY2FsIENQ
VS4gKi8KLSAgICBBU1NFUlQobWljcm9jb2RlX2ZpdHMobmV3KSAhPSBNSVNfVUNPREUpOwotICAg
IEFTU0VSVChtaWNyb2NvZGVfZml0cyhvbGQpICE9IE1JU19VQ09ERSk7CisgICAgQVNTRVJUKG1p
Y3JvY29kZV9maXRzKG5ldy0+bXBiKSAhPSBNSVNfVUNPREUpOworICAgIEFTU0VSVChtaWNyb2Nv
ZGVfZml0cyhvbGQtPm1wYikgIT0gTUlTX1VDT0RFKTsKIAotICAgIHJldHVybiBjb21wYXJlX2hl
YWRlcihuZXdfaGVhZGVyLCBvbGRfaGVhZGVyKTsKKyAgICByZXR1cm4gY29tcGFyZV9oZWFkZXIo
bmV3LT5tcGIsIG9sZC0+bXBiKTsKIH0KIAogc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUoY29u
c3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCkBAIC01MDgsNyArNTA0LDcgQEAgc3Rh
dGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2
b2lkICpidWYsCiAgICAgICAgICAqIElmIHRoZSBuZXcgdWNvZGUgY292ZXJzIGN1cnJlbnQgQ1BV
LCBjb21wYXJlIHVjb2RlcyBhbmQgc3RvcmUgdGhlCiAgICAgICAgICAqIG9uZSB3aXRoIGhpZ2hl
ciByZXZpc2lvbi4KICAgICAgICAgICovCi0gICAgICAgIGlmICggKG1pY3JvY29kZV9maXRzKG1j
X2FtZCkgIT0gTUlTX1VDT0RFKSAmJgorICAgICAgICBpZiAoIChtaWNyb2NvZGVfZml0cyhtY19h
bWQtPm1wYikgIT0gTUlTX1VDT0RFKSAmJgogICAgICAgICAgICAgICghc2F2ZWQgfHwgKGNvbXBh
cmVfaGVhZGVyKG1jX2FtZC0+bXBiLCBzYXZlZCkgPT0gTkVXX1VDT0RFKSkgKQogICAgICAgICB7
CiAgICAgICAgICAgICB4ZnJlZShzYXZlZCk7Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3Qg
Zm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1j
aGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9y
Zy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 04:00:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 04:00:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZyt-0002gL-M1; Sat, 04 Apr 2020 04:00:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZys-0002gD-RI
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:26 +0000
X-Inumbo-ID: d0c424c0-7628-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d0c424c0-7628-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 04:00:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=7P+0QTz4zVjigJUQYIIobAdXJ3Jyl2HYdShEWXySJKg=; b=fVdNCjaQ0XDTpQBEvjr0Tn+wNR
 NO0Ur+WBahKuIrl3FViDDLoFQwJJ6OfCKmB6K6ua0yd9MaqVygMzMAZuy1n6MZk35uxl3ADEMGCip
 Z1xtKKWz5giJNu7vKIZFftSRRhbAnsR0Wb+FaUv4n2IOtqJgESVONIcnfed1QkPjWZjw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZys-0005LV-14
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:26 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZys-0006aE-04
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZys-0006aE-04@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 04:00:26 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Rename bufsize to size
 in cpu_request_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDM4ZjZmMTFkMTA0YjQwNTM0MTBkZTE5ZWZiZTE0MGZmNDlhYzYyMjQKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxOTo1NjozNiAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogUmVuYW1lIGJ1ZnNpemUgdG8gc2l6ZSBp
biBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKQogICAgCiAgICBUbyBzaW1wbGlmeSBmdXR1cmUgY2xl
YW51cCwgcmVuYW1lIHRoaXMgdmFyaWFibGUuCiAgICAKICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdl
LgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0Bj
aXRyaXguY29tPgogICAgQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4K
LS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyB8IDIxICsrKysrKysrKystLS0t
LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygt
KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jIGIveGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggMDM2NWM4NWQ5OS4uZTBlZmNiMDY5ZiAx
MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKKysrIGIveGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTQyNyw4ICs0MjcsNyBAQCBzdGF0aWMgaW50
IGNvbnRhaW5lcl9mYXN0X2ZvcndhcmQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemVfbGVm
dCwgc2l6ZV90ICpvZgogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IG1pY3JvY29k
ZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGJ1ZnNp
emUpCitzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2Rl
KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7CiAgICAgc3RydWN0IG1pY3JvY29kZV9h
bWQgKm1jX2FtZDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKnNhdmVkID0gTlVM
TDsKQEAgLTQzOCw3ICs0MzcsNyBAQCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1
X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1ZiwKICAgICB1bnNpZ25lZCBpbnQgY3B1
ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogICAgIGNvbnN0IHN0cnVjdCBjcHVfc2lnbmF0dXJlICpz
aWcgPSAmcGVyX2NwdShjcHVfc2lnLCBjcHUpOwogCi0gICAgaWYgKCBidWZzaXplIDwgNCB8fCAq
KGNvbnN0IHVpbnQzMl90ICopYnVmICE9IFVDT0RFX01BR0lDICkKKyAgICBpZiAoIHNpemUgPCA0
IHx8ICooY29uc3QgdWludDMyX3QgKilidWYgIT0gVUNPREVfTUFHSUMgKQogICAgIHsKICAgICAg
ICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IFdyb25nIG1pY3JvY29kZSBwYXRjaCBmaWxl
IG1hZ2ljXG4iKTsKICAgICAgICAgZXJyb3IgPSAtRUlOVkFMOwpAQCAtNDU4LDE3ICs0NTcsMTcg
QEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShj
b25zdCB2b2lkICpidWYsCiAgICAgICogMS4gY2hlY2sgaWYgdGhpcyBjb250YWluZXIgZmlsZSBo
YXMgZXF1aXZfY3B1X2lkIG1hdGNoCiAgICAgICogMi4gSWYgbm90LCBmYXN0LWZ3ZCB0byBuZXh0
IGNvbnRhaW5lciBmaWxlCiAgICAgICovCi0gICAgd2hpbGUgKCBvZmZzZXQgPCBidWZzaXplICkK
KyAgICB3aGlsZSAoIG9mZnNldCA8IHNpemUgKQogICAgIHsKLSAgICAgICAgZXJyb3IgPSBzY2Fu
X2VxdWl2X2NwdV90YWJsZShidWYsIGJ1ZnNpemUgLSBvZmZzZXQsICZvZmZzZXQpOworICAgICAg
ICBlcnJvciA9IHNjYW5fZXF1aXZfY3B1X3RhYmxlKGJ1Ziwgc2l6ZSAtIG9mZnNldCwgJm9mZnNl
dCk7CiAKICAgICAgICAgaWYgKCAhZXJyb3IgfHwgZXJyb3IgIT0gLUVTUkNIICkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGVycm9yID0gY29udGFpbmVyX2Zhc3RfZm9yd2FyZChidWYs
IGJ1ZnNpemUgLSBvZmZzZXQsICZvZmZzZXQpOworICAgICAgICBlcnJvciA9IGNvbnRhaW5lcl9m
YXN0X2ZvcndhcmQoYnVmLCBzaXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKICAgICAgICAgaWYgKCBl
cnJvciA9PSAtRU5PREFUQSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChvZmZzZXQg
PT0gYnVmc2l6ZSk7CisgICAgICAgICAgICBBU1NFUlQob2Zmc2V0ID09IHNpemUpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCBlcnJvciApCkBAIC00OTcsNyAr
NDk2LDcgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3Jv
Y29kZShjb25zdCB2b2lkICpidWYsCiAgICAgICogSXQncyBwb3NzaWJsZSB0aGUgZGF0YSBmaWxl
IGhhcyBtdWx0aXBsZSBtYXRjaGluZyB1Y29kZSwKICAgICAgKiBsZXRzIGtlZXAgc2VhcmNoaW5n
IHRpbGwgdGhlIGxhdGVzdCB2ZXJzaW9uCiAgICAgICovCi0gICAgd2hpbGUgKCAoZXJyb3IgPSBn
ZXRfdWNvZGVfZnJvbV9idWZmZXJfYW1kKG1jX2FtZCwgYnVmLCBidWZzaXplLAorICAgIHdoaWxl
ICggKGVycm9yID0gZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZChtY19hbWQsIGJ1Ziwgc2l6ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9mZnNldCkp
ID09IDAgKQogICAgIHsKICAgICAgICAgLyoKQEAgLTUxNiw3ICs1MTUsNyBAQCBzdGF0aWMgc3Ry
dWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1
ZiwKICAgICAgICAgICAgIG1jX2FtZC0+bXBiID0gTlVMTDsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICggb2Zmc2V0ID49IGJ1ZnNpemUgKQorICAgICAgICBpZiAoIG9mZnNldCA+PSBzaXplICkK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIC8qCkBAIC01MjYsNyArNTI1LDcgQEAgc3Rh
dGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2
b2lkICpidWYsCiAgICAgICAgICAqICAgIGVhcmxpZXIgd2hpbGUoKSAoT24gdGhpcyBjYXNlLCBt
YXRjaGVzIG9uIGVhcmxpZXIgY29udGFpbmVyCiAgICAgICAgICAqICAgIGZpbGUgYW5kIHdlIGJy
ZWFrKQogICAgICAgICAgKiAzLiBQcm9jZWVkIHRvIHdoaWxlICggKGVycm9yID0gZ2V0X3Vjb2Rl
X2Zyb21fYnVmZmVyX2FtZChtY19hbWQsCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1ZiwgYnVmc2l6ZSwmb2Zmc2V0KSkgPT0gMCApCisgICAgICAgICAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Ziwgc2l6ZSwgJm9mZnNldCkpID09IDAg
KQogICAgICAgICAgKiA0LiBGaW5kIGNvcnJlY3QgcGF0Y2ggdXNpbmcgbWljcm9jb2RlX2ZpdHMo
KSBhbmQgYXBwbHkgdGhlIHBhdGNoCiAgICAgICAgICAqICAgIChBc3N1bWU6IGFwcGx5X21pY3Jv
Y29kZSgpIGlzIHN1Y2Nlc3NmdWwpCiAgICAgICAgICAqIDUuIFRoZSB3aGlsZSgpIGxvb3AgZnJv
bSAoMykgY29udGludWVzIHRvIHBhcnNlIHRoZSBiaW5hcnkgYXMKQEAgLTUzOSw3ICs1MzgsNyBA
QCBzdGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNv
bnN0IHZvaWQgKmJ1ZiwKICAgICAgICAgICogICAgYmVmb3JlIGlmICggbXBidWYtPnR5cGUgIT0g
VUNPREVfVUNPREVfVFlQRSApIGV2YWx1YXRlcyB0bwogICAgICAgICAgKiAgICBmYWxzZSBhbmQg
cmV0dXJucyAtRUlOVkFMLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCBvZmZzZXQgKyBTRUNU
SU9OX0hEUl9TSVpFIDw9IGJ1ZnNpemUgJiYKKyAgICAgICAgaWYgKCBvZmZzZXQgKyBTRUNUSU9O
X0hEUl9TSVpFIDw9IHNpemUgJiYKICAgICAgICAgICAgICAqKGNvbnN0IHVpbnQzMl90ICopKGJ1
ZiArIG9mZnNldCkgPT0gVUNPREVfTUFHSUMgKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQot
LQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFz
dGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t
Y2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 04:00:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 04:00:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZz4-0002hV-OG; Sat, 04 Apr 2020 04:00:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZz3-0002hK-0O
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:37 +0000
X-Inumbo-ID: d6c50024-7628-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d6c50024-7628-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 04:00:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Owz8eeSj7Qoipvyyqr9hawmBVergHPaanKjCeNT3P20=; b=IyZ2rQheqDo9OIvJ0FIhKKtanl
 iH9rharglarGVVx7G01NE11T7RUhnmq6P4rMCNz7sTpi/LffEpr6dq3hdj8OTKOqiLjveT6w0WwSx
 GzOv0xVT5E/LtRcUn/9/ufNqPRtCUttEHYf24FmavtTGGyTR+Wdx/LGeb849FEhe3Tb8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZz2-0005Le-3r
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZz2-0006aq-2n
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZz2-0006aq-2n@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 04:00:36 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Remove gratuitous
 memory allocations from cpu_request_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGY0YzY2M2I4OGI3YTJiNWU5ZDEwNDMwN2FiMWFkMWYzNTdmZDQ0YzkKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxODo1MDoyNSAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogUmVtb3ZlIGdyYXR1aXRvdXMgbWVtb3J5
IGFsbG9jYXRpb25zIGZyb20gY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkKICAgIAogICAgSnVzdCBh
cyBvbiB0aGUgSW50ZWwgc2lkZSwgdGhlcmUgaXMgbm8gcG9pbnQgaGF2aW5nCiAgICBnZXRfdWNv
ZGVfZnJvbV9idWZmZXJfYW1kKCkgbWFrZSAkTiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIGZyZWUg
JE4tMSBvZiB0aGVtLgogICAgCiAgICBEZWxldGUgZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCgp
IGFuZCByZXdyaXRlIHRoZSBsb29wIGluCiAgICBjcHVfcmVxdWVzdF9taWNyb2NvZGUoKSB0byBo
YXZlICdzYXZlZCcgcG9pbnQgaW50byAnYnVmJyB1bnRpbCB3ZSBmaW5hbGx5CiAgICBkZWNpZGUg
dG8gZHVwbGljYXRlIHRoYXQgYmxvYiBhbmQgcmV0dXJuIGl0IHRvIG91ciBjYWxsZXIuCiAgICAK
ICAgIEludHJvZHVjZSBhIG5ldyBzdHJ1Y3QgY29udGFpbmVyX21pY3JvY29kZSB0byBzaW1wbGlm
eSBpbnRlcnByZXRpbmcgdGhlCiAgICBjb250YWluZXIgZm9ybWF0LiAgRG91Ymx5IGluZGVudCB0
aGUgbG9naWMgdG8gc3Vic3RhbnRpYWxseSByZWR1Y2UgdGhlIGNodXJuCiAgICBpbiBhIGxhdGVy
IGNoYW5nZS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNv
b3BlcjNAY2l0cml4LmNvbT4KICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hA
c3VzZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgfCAxMzggKysr
KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDcg
aW5zZXJ0aW9ucygrKSwgOTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2
L2NwdS9taWNyb2NvZGUvYW1kLmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpp
bmRleCBlMGVmY2IwNjlmLi4xYjFmODMzNWVmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1
L21pY3JvY29kZS9hbWQuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpA
QCAtNzAsNiArNzAsMTEgQEAgc3RydWN0IG1wYmhkciB7CiAgICAgdWludDMyX3QgbGVuOwogICAg
IHVpbnQ4X3QgZGF0YVtdOwogfTsKK3N0cnVjdCBjb250YWluZXJfbWljcm9jb2RlIHsKKyAgICB1
aW50MzJfdCB0eXBlOyAvKiBVQ09ERV9VQ09ERV9UWVBFICovCisgICAgdWludDMyX3QgbGVuOwor
ICAgIHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2FtZCBwYXRjaFtdOworfTsKIAogLyoKICAqIE1p
Y3JvY29kZSB1cGRhdGVzIGZvciBkaWZmZXJlbnQgQ1BVcyBhcmUgZGlzdGluZ3Vpc2hlZCBieSB0
aGVpcgpAQCAtMjgwLDUyICsyODUsNiBAQCBzdGF0aWMgaW50IGFwcGx5X21pY3JvY29kZShjb25z
dCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICByZXR1cm4gMDsKIH0KIAotc3Rh
dGljIGludCBnZXRfdWNvZGVfZnJvbV9idWZmZXJfYW1kKAotICAgIHN0cnVjdCBtaWNyb2NvZGVf
YW1kICptY19hbWQsCi0gICAgY29uc3Qgdm9pZCAqYnVmLAotICAgIHNpemVfdCBidWZzaXplLAot
ICAgIHNpemVfdCAqb2Zmc2V0KQotewotICAgIGNvbnN0IHN0cnVjdCBtcGJoZHIgKm1wYnVmID0g
YnVmICsgKm9mZnNldDsKLQotICAgIC8qIE5vIG1vcmUgZGF0YSAqLwotICAgIGlmICggKm9mZnNl
dCA+PSBidWZzaXplICkKLSAgICB7Ci0gICAgICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2Rl
OiBNaWNyb2NvZGUgYnVmZmVyIG92ZXJydW5cbiIpOwotICAgICAgICByZXR1cm4gLUVJTlZBTDsK
LSAgICB9Ci0KLSAgICBpZiAoIG1wYnVmLT50eXBlICE9IFVDT0RFX1VDT0RFX1RZUEUgKQotICAg
IHsKLSAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNyb2NvZGU6IFdyb25nIG1pY3JvY29kZSBw
YXlsb2FkIHR5cGUgZmllbGRcbiIpOwotICAgICAgICByZXR1cm4gLUVJTlZBTDsKLSAgICB9Ci0K
LSAgICBpZiAoICgqb2Zmc2V0ICsgbXBidWYtPmxlbikgPiBidWZzaXplICkKLSAgICB7Ci0gICAg
ICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBCYWQgZGF0YSBpbiBtaWNyb2NvZGUgZGF0
YSBmaWxlXG4iKTsKLSAgICAgICAgcmV0dXJuIC1FSU5WQUw7Ci0gICAgfQotCi0gICAgaWYgKCAh
dmVyaWZ5X3BhdGNoX3NpemUobXBidWYtPmxlbikgKQotICAgIHsKLSAgICAgICAgcHJpbnRrKFhF
TkxPR19FUlIgIm1pY3JvY29kZTogcGF0Y2ggc2l6ZSBtaXNtYXRjaFxuIik7Ci0gICAgICAgIHJl
dHVybiAtRUlOVkFMOwotICAgIH0KLQotICAgIG1jX2FtZC0+bXBiID0geG1lbWR1cF9ieXRlcyht
cGJ1Zi0+ZGF0YSwgbXBidWYtPmxlbik7Ci0gICAgaWYgKCAhbWNfYW1kLT5tcGIgKQotICAgICAg
ICByZXR1cm4gLUVOT01FTTsKLQotICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIHNpemUg
JXp1LCBibG9jayBzaXplICV1IG9mZnNldCAlenUgZXF1aXZJRCAlI3ggcmV2ICUjeFxuIiwKLSAg
ICAgICAgICAgICBzbXBfcHJvY2Vzc29yX2lkKCksIGJ1ZnNpemUsIG1wYnVmLT5sZW4sICpvZmZz
ZXQsCi0gICAgICAgICAgICAgbWNfYW1kLT5tcGItPnByb2Nlc3Nvcl9yZXZfaWQsIG1jX2FtZC0+
bXBiLT5wYXRjaF9pZCk7Ci0KLSAgICAqb2Zmc2V0ICs9IG1wYnVmLT5sZW4gKyBTRUNUSU9OX0hE
Ul9TSVpFOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgc2Nhbl9lcXVpdl9jcHVf
dGFibGUoCiAgICAgY29uc3Qgdm9pZCAqZGF0YSwKICAgICBzaXplX3Qgc2l6ZV9sZWZ0LApAQCAt
NDMwLDkgKzM4OSw5IEBAIHN0YXRpYyBpbnQgY29udGFpbmVyX2Zhc3RfZm9yd2FyZChjb25zdCB2
b2lkICpkYXRhLCBzaXplX3Qgc2l6ZV9sZWZ0LCBzaXplX3QgKm9mCiBzdGF0aWMgc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6
ZV90IHNpemUpCiB7CiAgICAgc3RydWN0IG1pY3JvY29kZV9hbWQgKm1jX2FtZDsKLSAgICBzdHJ1
Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKnNhdmVkID0gTlVMTDsKKyAgICBjb25zdCBzdHJ1Y3Qg
bWljcm9jb2RlX2hlYWRlcl9hbWQgKnNhdmVkID0gTlVMTDsKICAgICBzdHJ1Y3QgbWljcm9jb2Rl
X3BhdGNoICpwYXRjaCA9IE5VTEw7Ci0gICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgc2l6ZV90
IG9mZnNldCA9IDAsIHNhdmVkX3NpemUgPSAwOwogICAgIGludCBlcnJvciA9IDA7CiAgICAgdW5z
aWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKICAgICBjb25zdCBzdHJ1Y3QgY3B1
X3NpZ25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKQEAgLTQ5Niw1NyArNDU1
LDU0IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2Nv
ZGUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6CiAgICAgICogSXQncyBwb3NzaWJsZSB0aGUg
ZGF0YSBmaWxlIGhhcyBtdWx0aXBsZSBtYXRjaGluZyB1Y29kZSwKICAgICAgKiBsZXRzIGtlZXAg
c2VhcmNoaW5nIHRpbGwgdGhlIGxhdGVzdCB2ZXJzaW9uCiAgICAgICovCi0gICAgd2hpbGUgKCAo
ZXJyb3IgPSBnZXRfdWNvZGVfZnJvbV9idWZmZXJfYW1kKG1jX2FtZCwgYnVmLCBzaXplLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2Zmc2V0KSkgPT0g
MCApCisgICAgYnVmICArPSBvZmZzZXQ7CisgICAgc2l6ZSAtPSBvZmZzZXQ7CiAgICAgewotICAg
ICAgICAvKgotICAgICAgICAgKiBJZiB0aGUgbmV3IHVjb2RlIGNvdmVycyBjdXJyZW50IENQVSwg
Y29tcGFyZSB1Y29kZXMgYW5kIHN0b3JlIHRoZQotICAgICAgICAgKiBvbmUgd2l0aCBoaWdoZXIg
cmV2aXNpb24uCi0gICAgICAgICAqLwotICAgICAgICBpZiAoIChtaWNyb2NvZGVfZml0cyhtY19h
bWQtPm1wYikgIT0gTUlTX1VDT0RFKSAmJgotICAgICAgICAgICAgICghc2F2ZWQgfHwgKGNvbXBh
cmVfaGVhZGVyKG1jX2FtZC0+bXBiLCBzYXZlZCkgPT0gTkVXX1VDT0RFKSkgKQorICAgICAgICB3
aGlsZSAoIHNpemUgKQogICAgICAgICB7Ci0gICAgICAgICAgICB4ZnJlZShzYXZlZCk7Ci0gICAg
ICAgICAgICBzYXZlZCA9IG1jX2FtZC0+bXBiOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgeGZyZWUobWNfYW1kLT5tcGIpOwotICAgICAgICAgICAgbWNf
YW1kLT5tcGIgPSBOVUxMOwotICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY29u
dGFpbmVyX21pY3JvY29kZSAqbWM7CisKKyAgICAgICAgICAgIGlmICggc2l6ZSA8IHNpemVvZigq
bWMpIHx8CisgICAgICAgICAgICAgICAgIChtYyA9IGJ1ZiktPnR5cGUgIT0gVUNPREVfVUNPREVf
VFlQRSB8fAorICAgICAgICAgICAgICAgICBzaXplIC0gc2l6ZW9mKCptYykgPCBtYy0+bGVuIHx8
CisgICAgICAgICAgICAgICAgICF2ZXJpZnlfcGF0Y2hfc2l6ZShtYy0+bGVuKSApCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIm1pY3JvY29kZTogQmFk
IG1pY3JvY29kZSBkYXRhXG4iKTsKKyAgICAgICAgICAgICAgICBlcnJvciA9IC1FSU5WQUw7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKCBvZmZz
ZXQgPj0gc2l6ZSApCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8qCisgICAgICAg
ICAgICAgKiBJZiB0aGUgbmV3IHVjb2RlIGNvdmVycyBjdXJyZW50IENQVSwgY29tcGFyZSB1Y29k
ZXMgYW5kIHN0b3JlIHRoZQorICAgICAgICAgICAgICogb25lIHdpdGggaGlnaGVyIHJldmlzaW9u
LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIChtaWNyb2NvZGVfZml0cyhtYy0+
cGF0Y2gpICE9IE1JU19VQ09ERSkgJiYKKyAgICAgICAgICAgICAgICAgKCFzYXZlZCB8fCAoY29t
cGFyZV9oZWFkZXIobWMtPnBhdGNoLCBzYXZlZCkgPT0gTkVXX1VDT0RFKSkgKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHNhdmVkID0gbWMtPnBhdGNoOworICAgICAgICAgICAgICAg
IHNhdmVkX3NpemUgPSBtYy0+bGVuOworICAgICAgICAgICAgfQogCi0gICAgICAgIC8qCi0gICAg
ICAgICAqIDEuIEdpdmVuIGEgc2l0dWF0aW9uIHdoZXJlIG11bHRpcGxlIGNvbnRhaW5lcnMgZXhp
c3QgYW5kIGNvcnJlY3QKLSAgICAgICAgICogICAgcGF0Y2ggbGl2ZXMgb24gYSBjb250YWluZXIg
dGhhdCBpcyBub3QgdGhlIGxhc3QgY29udGFpbmVyLgotICAgICAgICAgKiAyLiBXZSBtYXRjaCBl
cXVpdmFsZW50IGlkcyB1c2luZyBmaW5kX2VxdWl2X2NwdV9pZCgpIGZyb20gdGhlCi0gICAgICAg
ICAqICAgIGVhcmxpZXIgd2hpbGUoKSAoT24gdGhpcyBjYXNlLCBtYXRjaGVzIG9uIGVhcmxpZXIg
Y29udGFpbmVyCi0gICAgICAgICAqICAgIGZpbGUgYW5kIHdlIGJyZWFrKQotICAgICAgICAgKiAz
LiBQcm9jZWVkIHRvIHdoaWxlICggKGVycm9yID0gZ2V0X3Vjb2RlX2Zyb21fYnVmZmVyX2FtZCht
Y19hbWQsCi0gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Ziwg
c2l6ZSwgJm9mZnNldCkpID09IDAgKQotICAgICAgICAgKiA0LiBGaW5kIGNvcnJlY3QgcGF0Y2gg
dXNpbmcgbWljcm9jb2RlX2ZpdHMoKSBhbmQgYXBwbHkgdGhlIHBhdGNoCi0gICAgICAgICAqICAg
IChBc3N1bWU6IGFwcGx5X21pY3JvY29kZSgpIGlzIHN1Y2Nlc3NmdWwpCi0gICAgICAgICAqIDUu
IFRoZSB3aGlsZSgpIGxvb3AgZnJvbSAoMykgY29udGludWVzIHRvIHBhcnNlIHRoZSBiaW5hcnkg
YXMKLSAgICAgICAgICogICAgdGhlcmUgaXMgYSBzdWJzZXF1ZW50IGNvbnRhaW5lciBmaWxlLCBi
dXQuLi4KLSAgICAgICAgICogNi4gLi4uYSBjb3JyZWN0IHBhdGNoIGNhbiBvbmx5IGJlIG9uIG9u
ZSBjb250YWluZXIgYW5kIG5vdCBvbiBhbnkKLSAgICAgICAgICogICAgc3Vic2VxdWVudCBvbmVz
LiAoUmVmZXIgZG9jcyBmb3IgbW9yZSBpbmZvKSBUaGVyZWZvcmUsIHdlCi0gICAgICAgICAqICAg
IGRvbid0IGhhdmUgdG8gcGFyc2UgYSBzdWJzZXF1ZW50IGNvbnRhaW5lci4gU28sIHdlIGNhbiBh
Ym9ydAotICAgICAgICAgKiAgICB0aGUgcHJvY2VzcyBoZXJlLgotICAgICAgICAgKiA3LiBUaGlz
IGVuc3VyZXMgdGhhdCB3ZSByZXRhaW4gYSBzdWNjZXNzIHZhbHVlICg9IDApIHRvICdlcnJvcicK
LSAgICAgICAgICogICAgYmVmb3JlIGlmICggbXBidWYtPnR5cGUgIT0gVUNPREVfVUNPREVfVFlQ
RSApIGV2YWx1YXRlcyB0bwotICAgICAgICAgKiAgICBmYWxzZSBhbmQgcmV0dXJucyAtRUlOVkFM
LgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKCBvZmZzZXQgKyBTRUNUSU9OX0hEUl9TSVpFIDw9
IHNpemUgJiYKLSAgICAgICAgICAgICAqKGNvbnN0IHVpbnQzMl90ICopKGJ1ZiArIG9mZnNldCkg
PT0gVUNPREVfTUFHSUMgKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBNb3Zl
IG92ZXIgdGhlIG1pY3JvY29kZSBibG9iLiAqLworICAgICAgICAgICAgYnVmICArPSBzaXplb2Yo
Km1jKSArIG1jLT5sZW47CisgICAgICAgICAgICBzaXplIC09IHNpemVvZigqbWMpICsgbWMtPmxl
bjsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFBlZWsgYWhlYWQuICBJZiB3ZSBz
ZWUgdGhlIHN0YXJ0IG9mIGFub3RoZXIgY29udGFpbmVyLCB3ZSd2ZQorICAgICAgICAgICAgICog
ZXhoYXVzZWQgYWxsIG1pY3JvY29kZSBibG9icyBpbiB0aGlzIGNvbnRhaW5lci4gIEV4aXQgY2xl
YW5seS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCBzaXplID49IDQgJiYgKihj
b25zdCB1aW50MzJfdCAqKWJ1ZiA9PSBVQ09ERV9NQUdJQyApCisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIHNhdmVkICkKICAgICB7Ci0gICAgICAg
IG1jX2FtZC0+bXBiID0gc2F2ZWQ7Ci0gICAgICAgIHBhdGNoID0gbWNfYW1kOworICAgICAgICBt
Y19hbWQtPm1wYiA9IHhtZW1kdXBfYnl0ZXMoc2F2ZWQsIHNhdmVkX3NpemUpOworICAgICAgICBp
ZiAoIG1jX2FtZC0+bXBiICkKKyAgICAgICAgICAgIHBhdGNoID0gbWNfYW1kOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBlcnJvciA9IC1FTk9NRU07CiAgICAgfQogICAgIGVsc2UKICAgICAg
ICAgZnJlZV9wYXRjaChtY19hbWQpOwotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAv
aG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdl
bG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVu
LWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 04:00:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 04:00:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZzE-0002ih-QV; Sat, 04 Apr 2020 04:00:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZzD-0002iX-Ln
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:47 +0000
X-Inumbo-ID: dcc7ac38-7628-11ea-bdc9-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dcc7ac38-7628-11ea-bdc9-12813bfff9fa;
 Sat, 04 Apr 2020 04:00:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=TgzDr2ceG4Cw5w7T2cfUNkVQrQSVh6qxtoLxlONe7p8=; b=mZ2wNi6n8eduCwwnA4b0smDJwg
 lnyJnyN5OxNVgxg3BCuqFOJhzuRgWCYL72DqpuQlnIWskoxhiZWs4GsozssLTV09nptuz/YF2U9Xq
 QwyhF11zuHMeGOAPhM2sLPkF95hvkpvad7u5xmElzlQwBvznoll31RoVBIQa9XJQB97Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZzC-0005Ln-6Q
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:46 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZzC-0006bR-5U
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:46 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZzC-0006bR-5U@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 04:00:46 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Fold structures together
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDZmNTY0OTE5MTFhNmExMWVjOTRkYjM2YWNhNzkxYTIzZTNjYzc1YjYKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxNzo1ODoyOSAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogRm9sZCBzdHJ1Y3R1cmVzIHRvZ2V0aGVy
CiAgICAKICAgIFdpdGggYWxsIHRoZSBuZWNlc3NhcnkgY2xlYW51cCBub3cgaW4gcGxhY2UsIGZv
bGQgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kCiAgICBpbnRvIHN0cnVjdCBtaWNyb2NvZGVf
cGF0Y2ggYW5kIGRyb3AgdGhlIHN0cnVjdCBtaWNyb2NvZGVfYW1kIHRlbXBvcmFyeQogICAgaWZk
ZWYtYXJ5LgogICAgCiAgICBUaGlzIHJlbW92ZXMgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9mIHN0
cnVjdCBtaWNyb2NvZGVfYW1kIHdoaWNoIGlzIGEgc2luZ2xlCiAgICBwb2ludGVyIHRvIGEgc2Vw
YXJhdGVseSBhbGxvY2F0ZWQgb2JqZWN0LCBhbmQgdGhlcmVmb3JlIGEgd2FzdGUuCiAgICAKICAg
IFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+
CiAgICBSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0KIHhl
bi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jIHwgNzAgKysrKysrKysrKysrLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDUw
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2Ft
ZC5jIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKaW5kZXggMWIxZjgzMzVlZi4u
YjllYmY4MWUwYSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMK
KysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMKQEAgLTM3LDcgKzM3LDcgQEAg
c3RydWN0IF9fcGFja2VkIGVxdWl2X2NwdV9lbnRyeSB7CiAgICAgdWludDE2X3QgcmVzZXJ2ZWQ7
CiB9OwogCi1zdHJ1Y3QgX19wYWNrZWQgbWljcm9jb2RlX2hlYWRlcl9hbWQgeworc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCB7CiAgICAgdWludDMyX3QgZGF0YV9jb2RlOwogICAgIHVpbnQzMl90IHBh
dGNoX2lkOwogICAgIHVpbnQ4X3QgIG1jX3BhdGNoX2RhdGFfaWRbMl07CkBAIC01OCwxMyArNTgs
NiBAQCBzdHJ1Y3QgX19wYWNrZWQgbWljcm9jb2RlX2hlYWRlcl9hbWQgewogI2RlZmluZSBVQ09E
RV9FUVVJVl9DUFVfVEFCTEVfVFlQRSAweDAwMDAwMDAwCiAjZGVmaW5lIFVDT0RFX1VDT0RFX1RZ
UEUgICAgICAgICAgIDB4MDAwMDAwMDEKIAotc3RydWN0IG1pY3JvY29kZV9wYXRjaCB7Ci0gICAg
c3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICptcGI7Ci19OwotCi0vKiBUZW1wb3JhcnksIHVu
dGlsIHRoZSBtaWNyb2NvZGVfKiBzdHJ1Y3R1cmUgYXJlIGRpc2VudGFuZ2xlZC4gKi8KLSNkZWZp
bmUgbWljcm9jb2RlX2FtZCBtaWNyb2NvZGVfcGF0Y2gKLQogc3RydWN0IG1wYmhkciB7CiAgICAg
dWludDMyX3QgdHlwZTsKICAgICB1aW50MzJfdCBsZW47CkBAIC03Myw3ICs2Niw3IEBAIHN0cnVj
dCBtcGJoZHIgewogc3RydWN0IGNvbnRhaW5lcl9taWNyb2NvZGUgewogICAgIHVpbnQzMl90IHR5
cGU7IC8qIFVDT0RFX1VDT0RFX1RZUEUgKi8KICAgICB1aW50MzJfdCBsZW47Ci0gICAgc3RydWN0
IG1pY3JvY29kZV9oZWFkZXJfYW1kIHBhdGNoW107CisgICAgc3RydWN0IG1pY3JvY29kZV9wYXRj
aCBwYXRjaFtdOwogfTsKIAogLyoKQEAgLTE3OCw3ICsxNzEsNyBAQCBzdGF0aWMgYm9vbCBjaGVj
a19maW5hbF9wYXRjaF9sZXZlbHMoY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZykKIH0K
IAogc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfZml0cygKLSAg
ICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKnBhdGNoKQorICAgIGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewogICAgIHVuc2lnbmVkIGludCBjcHUgPSBz
bXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZyA9
ICZwZXJfY3B1KGNwdV9zaWcsIGNwdSk7CkBAIC0yMDEsMzcgKzE5NCwzMSBAQCBzdGF0aWMgZW51
bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29kZV9maXRzKAogCiBzdGF0aWMgYm9vbCBt
YXRjaF9jcHUoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7Ci0gICAgcmV0
dXJuIHBhdGNoICYmIChtaWNyb2NvZGVfZml0cyhwYXRjaC0+bXBiKSA9PSBORVdfVUNPREUpOwor
ICAgIHJldHVybiBwYXRjaCAmJiAobWljcm9jb2RlX2ZpdHMocGF0Y2gpID09IE5FV19VQ09ERSk7
CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWNf
YW1kKQorc3RhdGljIHZvaWQgZnJlZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRj
aCkKIHsKLSAgICBpZiAoIG1jX2FtZCApCi0gICAgewotICAgICAgICB4ZnJlZShtY19hbWQtPm1w
Yik7Ci0gICAgICAgIHhmcmVlKG1jX2FtZCk7Ci0gICAgfQorICAgIHhmcmVlKHBhdGNoKTsKIH0K
IAogc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJlX2hlYWRlcigKLSAg
ICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKm5ld19oZWFkZXIsCi0gICAgY29u
c3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfYW1kICpvbGRfaGVhZGVyKQorICAgIGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm5ldywgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAq
b2xkKQogewotICAgIGlmICggbmV3X2hlYWRlci0+cHJvY2Vzc29yX3Jldl9pZCA9PSBvbGRfaGVh
ZGVyLT5wcm9jZXNzb3JfcmV2X2lkICkKLSAgICAgICAgcmV0dXJuIChuZXdfaGVhZGVyLT5wYXRj
aF9pZCA+IG9sZF9oZWFkZXItPnBhdGNoX2lkKSA/IE5FV19VQ09ERQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogT0xEX1VDT0RF
OworICAgIGlmICggbmV3LT5wcm9jZXNzb3JfcmV2X2lkICE9IG9sZC0+cHJvY2Vzc29yX3Jldl9p
ZCApCisgICAgICAgIHJldHVybiBNSVNfVUNPREU7CiAKLSAgICByZXR1cm4gTUlTX1VDT0RFOwor
ICAgIHJldHVybiBuZXctPnBhdGNoX2lkID4gb2xkLT5wYXRjaF9pZCA/IE5FV19VQ09ERSA6IE9M
RF9VQ09ERTsKIH0KIAogc3RhdGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBjb21wYXJl
X3BhdGNoKAogICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm5ldywgY29uc3Qgc3Ry
dWN0IG1pY3JvY29kZV9wYXRjaCAqb2xkKQogewogICAgIC8qIEJvdGggcGF0Y2hlcyB0byBjb21w
YXJlIGFyZSBzdXBwb3NlZCB0byBiZSBhcHBsaWNhYmxlIHRvIGxvY2FsIENQVS4gKi8KLSAgICBB
U1NFUlQobWljcm9jb2RlX2ZpdHMobmV3LT5tcGIpICE9IE1JU19VQ09ERSk7Ci0gICAgQVNTRVJU
KG1pY3JvY29kZV9maXRzKG9sZC0+bXBiKSAhPSBNSVNfVUNPREUpOworICAgIEFTU0VSVChtaWNy
b2NvZGVfZml0cyhuZXcpICE9IE1JU19VQ09ERSk7CisgICAgQVNTRVJUKG1pY3JvY29kZV9maXRz
KG9sZCkgIT0gTUlTX1VDT0RFKTsKIAotICAgIHJldHVybiBjb21wYXJlX2hlYWRlcihuZXctPm1w
Yiwgb2xkLT5tcGIpOworICAgIHJldHVybiBjb21wYXJlX2hlYWRlcihuZXcsIG9sZCk7CiB9CiAK
IHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gg
KnBhdGNoKQpAQCAtMjM5LDcgKzIyNiw2IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNv
bnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogICAgIGludCBod19lcnI7CiAgICAg
dW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKICAgICBzdHJ1Y3QgY3B1X3Np
Z25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKLSAgICBjb25zdCBzdHJ1Y3Qg
bWljcm9jb2RlX2hlYWRlcl9hbWQgKmhkcjsKICAgICB1aW50MzJfdCByZXYsIG9sZF9yZXYgPSBz
aWctPnJldjsKIAogICAgIGlmICggIXBhdGNoICkKQEAgLTI1Niw5ICsyNDIsNyBAQCBzdGF0aWMg
aW50IGFwcGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkK
ICAgICAgICAgcmV0dXJuIC1FTlhJTzsKICAgICB9CiAKLSAgICBoZHIgPSBwYXRjaC0+bXBiOwot
Ci0gICAgaHdfZXJyID0gd3Jtc3Jfc2FmZShNU1JfQU1EX1BBVENITE9BREVSLCAodW5zaWduZWQg
bG9uZyloZHIpOworICAgIGh3X2VyciA9IHdybXNyX3NhZmUoTVNSX0FNRF9QQVRDSExPQURFUiwg
KHVuc2lnbmVkIGxvbmcpcGF0Y2gpOwogCiAgICAgLyogZ2V0IHBhdGNoIGlkIGFmdGVyIHBhdGNo
aW5nICovCiAgICAgcmRtc3JsKE1TUl9BTURfUEFUQ0hMRVZFTCwgcmV2KTsKQEAgLTI2OCwxNCAr
MjUyLDE0IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2Nv
ZGVfcGF0Y2ggKnBhdGNoKQogICAgICAqIFNvbWUgcHJvY2Vzc29ycyBsZWF2ZSB0aGUgdWNvZGUg
YmxvYiBtYXBwaW5nIGFzIFVDIGFmdGVyIHRoZSB1cGRhdGUuCiAgICAgICogRmx1c2ggdGhlIG1h
cHBpbmcgdG8gcmVnYWluIG5vcm1hbCBjYWNoZWFiaWxpdHkuCiAgICAgICovCi0gICAgZmx1c2hf
YXJlYV9sb2NhbChoZHIsIEZMVVNIX1RMQl9HTE9CQUwgfCBGTFVTSF9PUkRFUigwKSk7CisgICAg
Zmx1c2hfYXJlYV9sb2NhbChwYXRjaCwgRkxVU0hfVExCX0dMT0JBTCB8IEZMVVNIX09SREVSKDAp
KTsKIAogICAgIC8qIGNoZWNrIGN1cnJlbnQgcGF0Y2ggaWQgYW5kIHBhdGNoJ3MgaWQgZm9yIG1h
dGNoICovCi0gICAgaWYgKCBod19lcnIgfHwgKHJldiAhPSBoZHItPnBhdGNoX2lkKSApCisgICAg
aWYgKCBod19lcnIgfHwgKHJldiAhPSBwYXRjaC0+cGF0Y2hfaWQpICkKICAgICB7CiAgICAgICAg
IHByaW50ayhYRU5MT0dfRVJSCiAgICAgICAgICAgICAgICAibWljcm9jb2RlOiBDUFUldSB1cGRh
dGUgcmV2ICUjeCB0byAlI3ggZmFpbGVkLCByZXN1bHQgJSN4XG4iLAotICAgICAgICAgICAgICAg
Y3B1LCBvbGRfcmV2LCBoZHItPnBhdGNoX2lkLCByZXYpOworICAgICAgICAgICAgICAgY3B1LCBv
bGRfcmV2LCBwYXRjaC0+cGF0Y2hfaWQsIHJldik7CiAgICAgICAgIHJldHVybiAtRUlPOwogICAg
IH0KIApAQCAtMzg4LDggKzM3Miw3IEBAIHN0YXRpYyBpbnQgY29udGFpbmVyX2Zhc3RfZm9yd2Fy
ZChjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZV9sZWZ0LCBzaXplX3QgKm9mCiAKIHN0YXRp
YyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9p
ZCAqYnVmLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBzdHJ1Y3QgbWljcm9jb2RlX2FtZCAqbWNfYW1k
OwotICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2FtZCAqc2F2ZWQgPSBOVUxMOwor
ICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnNhdmVkID0gTlVMTDsKICAgICBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IE5VTEw7CiAgICAgc2l6ZV90IG9mZnNldCA9IDAs
IHNhdmVkX3NpemUgPSAwOwogICAgIGludCBlcnJvciA9IDA7CkBAIC00MDMsMTQgKzM4Niw2IEBA
IHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29u
c3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KIAotICAg
IG1jX2FtZCA9IHh6YWxsb2Moc3RydWN0IG1pY3JvY29kZV9hbWQpOwotICAgIGlmICggIW1jX2Ft
ZCApCi0gICAgewotICAgICAgICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogQ2Fubm90IGFs
bG9jYXRlIG1lbW9yeSBmb3IgbWljcm9jb2RlIHBhdGNoXG4iKTsKLSAgICAgICAgZXJyb3IgPSAt
RU5PTUVNOwotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0KICAgICAvKgogICAgICAqIE11bHRp
cGxlIGNvbnRhaW5lciBmaWxlIHN1cHBvcnQ6CiAgICAgICogMS4gY2hlY2sgaWYgdGhpcyBjb250
YWluZXIgZmlsZSBoYXMgZXF1aXZfY3B1X2lkIG1hdGNoCkBAIC00NDcsNyArNDIyLDYgQEAgc3Rh
dGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2
b2lkICpidWYsIHNpemVfdCBzaXoKICAgICAgICAgaWYgKCBlcnJvciA9PSAtRU5PREFUQSApCiAg
ICAgICAgICAgICBlcnJvciA9IDA7CiAKLSAgICAgICAgeGZyZWUobWNfYW1kKTsKICAgICAgICAg
Z290byBvdXQ7CiAgICAgfQogCkBAIC00OTgsMTQgKzQ3MiwxMCBAQCBzdGF0aWMgc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCAqY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6
ZV90IHNpegogCiAgICAgaWYgKCBzYXZlZCApCiAgICAgewotICAgICAgICBtY19hbWQtPm1wYiA9
IHhtZW1kdXBfYnl0ZXMoc2F2ZWQsIHNhdmVkX3NpemUpOwotICAgICAgICBpZiAoIG1jX2FtZC0+
bXBiICkKLSAgICAgICAgICAgIHBhdGNoID0gbWNfYW1kOwotICAgICAgICBlbHNlCisgICAgICAg
IHBhdGNoID0geG1lbWR1cF9ieXRlcyhzYXZlZCwgc2F2ZWRfc2l6ZSk7CisgICAgICAgIGlmICgg
IXBhdGNoICkKICAgICAgICAgICAgIGVycm9yID0gLUVOT01FTTsKICAgICB9Ci0gICAgZWxzZQot
ICAgICAgICBmcmVlX3BhdGNoKG1jX2FtZCk7CiAKICAgb3V0OgogICAgIGlmICggZXJyb3IgJiYg
IXBhdGNoICkKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94
ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 04:00:59 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 04:00:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKZzO-0002k4-U2; Sat, 04 Apr 2020 04:00:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKZzN-0002jp-9y
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:57 +0000
X-Inumbo-ID: e2cddb8e-7628-11ea-bdc9-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e2cddb8e-7628-11ea-bdc9-12813bfff9fa;
 Sat, 04 Apr 2020 04:00:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rwAHYpbeeqMI/8QyYTl4yYrDmJdTgs31Hv6rFjWwnVs=; b=1wxQTDOKdq5aZNb6l6ZFKHJeu4
 btR9OQzb1ljn3W3XAK+jxzCusaWCobZM18dK5vQ1RjtpIfZW4rB0CMO7l3jkw4bg5d0sTpBY4+8Kf
 BdKVG6M1X7VKl2oB2wQ/2joyk61jOLKI+poWScCgw7MaBCGLA/08qvONjYsR21To0U9o=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZzM-0005MB-9J
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:56 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKZzM-0006c7-8E
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 04:00:56 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKZzM-0006c7-8E@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 04:00:56 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/amd: Rework parsing logic in
 cpu_request_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDRkZTkzNmEzOGFhOTZjOTQ2ZjVkMzliMjc2MGFiYjhhOTg1M2NiYTMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
TW9uIE1hciAzMCAxOTozOTowOCAyMDIwICswMTAwCkNvbW1pdDogICAgIEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNvbW1pdERhdGU6IFdlZCBBcHIgMSAxNDowMDox
MiAyMDIwICswMTAwCgogICAgeDg2L3Vjb2RlL2FtZDogUmV3b3JrIHBhcnNpbmcgbG9naWMgaW4g
Y3B1X3JlcXVlc3RfbWljcm9jb2RlKCkKICAgIAogICAgY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkg
aXMgc3RpbGwgYSBjb25mdXNpbmcgbWVzcyB0byBmb2xsb3csIHdpdGggc3ViCiAgICBmdW5jdGlv
bnMgcmVzcG9uc2libGUgZm9yIG1haW50YWluaW5nIG9mZnNldC4gIFJld3JpdGUgaXQgc28gYWxs
IGNvbnRhaW5lcgogICAgc3RydWN0dXJlIGhhbmRsaW5nIGlzIGluIHRoaXMgb25lIGZ1bmN0aW9u
LgogICAgCiAgICBSZXdyaXRlIHN0cnVjdCBtcGJoZHIgYXMgc3RydWN0IGNvbnRhaW5lcl9lcXVp
dl90YWJsZSB0byBhaWQgcGFyc2luZy4gIERyb3AKICAgIGNvbnRhaW5lcl9mYXN0X2ZvcndhcmQo
KSBlbnRpcmVseSwgYW5kIHNocmluayBzY2FuX2VxdWl2X2NwdV90YWJsZSgpIHRvIGp1c3QKICAg
IGl0cyBzZWFyY2hpbmcvY2FjaGluZyBsb2dpYy4KICAgIAogICAgY29udGFpbmVyX2Zhc3RfZm9y
d2FyZCgpIGdldHMgbG9naWNhbGx5IGZvbGRlZCBpbnRvIHRoZSBtaWNyb2NvZGUgYmxvYgogICAg
c2Nhbm5pbmcgbG9vcCwgZXhjZXB0IHRoYXQgYSBza2lwIHBhdGggaXMgaW5zZXJ0ZWQsIHdoaWNo
IGlzIGNvbmRpdGlvbmFsIG9uCiAgICB3aGV0aGVyIHNjYW5fZXF1aXZfY3B1X3RhYmxlKCkgdGhp
bmtzIHRoZXJlIGlzIGFwcHJvcHJpYXRlIG1pY3JvY29kZSB0byBmaW5kLgogICAgCiAgICBXaXRo
IHRoaXMgY2hhbmdlLCB3ZSBub3cgc2NhbiB0byB0aGUgZW5kIG9mIGFsbCBwcm92aWRlZCBtaWNy
b2NvZGUgY29udGFpbmVycywKICAgIGFuZCBubyBsb25nZXIgZ2l2ZSB1cCBhdCB0aGUgZmlyc3Qg
YXBwbGljYWJsZSBvbmUuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFu
ZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CiAgICBSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpi
ZXVsaWNoQHN1c2UuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jIHwg
MTY5ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5n
ZWQsIDQ1IGluc2VydGlvbnMoKyksIDEyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4v
YXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jCmluZGV4IGI5ZWJmODFlMGEuLmQ0NzYzZWE3NzYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo
L3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jCkBAIC0yNSwxMCArMjUsNiBAQAogCiAjZGVmaW5lIHByX2RlYnVnKHguLi4pICgodm9p
ZCkwKQogCi0jZGVmaW5lIENPTlRfSERSX1NJWkUgICAgICAgICAgIDEyCi0jZGVmaW5lIFNFQ1RJ
T05fSERSX1NJWkUgICAgICAgIDgKLSNkZWZpbmUgUEFUQ0hfSERSX1NJWkUgICAgICAgICAgMzIK
LQogc3RydWN0IF9fcGFja2VkIGVxdWl2X2NwdV9lbnRyeSB7CiAgICAgdWludDMyX3QgaW5zdGFs
bGVkX2NwdTsKICAgICB1aW50MzJfdCBmaXhlZF9lcnJhdGFfbWFzazsKQEAgLTU4LDEwICs1NCwx
MCBAQCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoIHsKICNkZWZpbmUgVUNPREVfRVFVSVZfQ1BVX1RB
QkxFX1RZUEUgMHgwMDAwMDAwMAogI2RlZmluZSBVQ09ERV9VQ09ERV9UWVBFICAgICAgICAgICAw
eDAwMDAwMDAxCiAKLXN0cnVjdCBtcGJoZHIgewotICAgIHVpbnQzMl90IHR5cGU7CitzdHJ1Y3Qg
Y29udGFpbmVyX2VxdWl2X3RhYmxlIHsKKyAgICB1aW50MzJfdCB0eXBlOyAvKiBVQ09ERV9FUVVJ
Vl9DUFVfVEFCTEVfVFlQRSAqLwogICAgIHVpbnQzMl90IGxlbjsKLSAgICB1aW50OF90IGRhdGFb
XTsKKyAgICBzdHJ1Y3QgZXF1aXZfY3B1X2VudHJ5IGVxW107CiB9Owogc3RydWN0IGNvbnRhaW5l
cl9taWNyb2NvZGUgewogICAgIHVpbnQzMl90IHR5cGU7IC8qIFVDT0RFX1VDT0RFX1RZUEUgKi8K
QEAgLTI2OSw1NSArMjY1LDI1IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMg
aW50IHNjYW5fZXF1aXZfY3B1X3RhYmxlKAotICAgIGNvbnN0IHZvaWQgKmRhdGEsCi0gICAgc2l6
ZV90IHNpemVfbGVmdCwKLSAgICBzaXplX3QgKm9mZnNldCkKK3N0YXRpYyBpbnQgc2Nhbl9lcXVp
dl9jcHVfdGFibGUoY29uc3Qgc3RydWN0IGNvbnRhaW5lcl9lcXVpdl90YWJsZSAqZXQpCiB7CiAg
ICAgY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZyA9ICZ0aGlzX2NwdShjcHVfc2lnKTsK
LSAgICBjb25zdCBzdHJ1Y3QgbXBiaGRyICptcGJ1ZjsKLSAgICBjb25zdCBzdHJ1Y3QgZXF1aXZf
Y3B1X2VudHJ5ICplcTsKLSAgICB1bnNpZ25lZCBpbnQgaSwgbnI7Ci0KLSAgICBpZiAoIHNpemVf
bGVmdCA8IChzaXplb2YoKm1wYnVmKSArIDQpIHx8Ci0gICAgICAgICAobXBidWYgPSBkYXRhICsg
Km9mZnNldCArIDQsCi0gICAgICAgICAgc2l6ZV9sZWZ0IC0gc2l6ZW9mKCptcGJ1ZikgLSA0IDwg
bXBidWYtPmxlbikgKQotICAgIHsKLSAgICAgICAgcHJpbnRrKFhFTkxPR19XQVJOSU5HICJtaWNy
b2NvZGU6IE5vIHNwYWNlIGZvciBlcXVpdmFsZW50IGNwdSB0YWJsZVxuIik7Ci0gICAgICAgIHJl
dHVybiAtRUlOVkFMOwotICAgIH0KLQotICAgICpvZmZzZXQgKz0gbXBidWYtPmxlbiArIENPTlRf
SERSX1NJWkU7CS8qIGFkZCBoZWFkZXIgbGVuZ3RoICovCi0KLSAgICBpZiAoIG1wYnVmLT50eXBl
ICE9IFVDT0RFX0VRVUlWX0NQVV9UQUJMRV9UWVBFICkKLSAgICB7Ci0gICAgICAgIHByaW50ayhL
RVJOX0VSUiAibWljcm9jb2RlOiBXcm9uZyBtaWNyb2NvZGUgZXF1aXZhbGVudCBjcHUgdGFibGUg
dHlwZSBmaWVsZFxuIik7Ci0gICAgICAgIHJldHVybiAtRUlOVkFMOwotICAgIH0KLQotICAgIGlm
ICggbXBidWYtPmxlbiA9PSAwIHx8IG1wYnVmLT5sZW4gJSBzaXplb2YoKmVxKSB8fAotICAgICAg
ICAgKGVxID0gKGNvbnN0IHZvaWQgKiltcGJ1Zi0+ZGF0YSwKLSAgICAgICAgICBuciA9IG1wYnVm
LT5sZW4gLyBzaXplb2YoKmVxKSwKLSAgICAgICAgICBlcVtuciAtIDFdLmluc3RhbGxlZF9jcHUp
ICkKLSAgICB7Ci0gICAgICAgIHByaW50ayhLRVJOX0VSUiAibWljcm9jb2RlOiBXcm9uZyBtaWNy
b2NvZGUgZXF1aXZhbGVudCBjcHUgdGFibGUgbGVuZ3RoXG4iKTsKLSAgICAgICAgcmV0dXJuIC1F
SU5WQUw7Ci0gICAgfQorICAgIHVuc2lnbmVkIGludCBpLCBuciA9IGV0LT5sZW4gLyBzaXplb2Yo
ZXQtPmVxWzBdKTsKIAogICAgIC8qIFNlYXJjaCB0aGUgZXF1aXZfY3B1X3RhYmxlIGZvciB0aGUg
Y3VycmVudCBDUFUuICovCi0gICAgZm9yICggaSA9IDA7IGkgPCBuciAmJiBlcVtpXS5pbnN0YWxs
ZWRfY3B1OyArK2kgKQorICAgIGZvciAoIGkgPSAwOyBpIDwgbnIgJiYgZXQtPmVxW2ldLmluc3Rh
bGxlZF9jcHU7ICsraSApCiAgICAgewotICAgICAgICBpZiAoIGVxW2ldLmluc3RhbGxlZF9jcHUg
IT0gc2lnLT5zaWcgKQorICAgICAgICBpZiAoIGV0LT5lcVtpXS5pbnN0YWxsZWRfY3B1ICE9IHNp
Zy0+c2lnICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmICggIWVxdWl2LnNp
ZyApIC8qIENhY2hlIGRldGFpbHMgb24gZmlyc3QgZmluZC4gKi8KICAgICAgICAgewogICAgICAg
ICAgICAgZXF1aXYuc2lnID0gc2lnLT5zaWc7Ci0gICAgICAgICAgICBlcXVpdi5pZCAgPSBlcVtp
XS5lcXVpdl9jcHU7CisgICAgICAgICAgICBlcXVpdi5pZCAgPSBldC0+ZXFbaV0uZXF1aXZfY3B1
OwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIGVxdWl2
LnNpZyAhPSBzaWctPnNpZyB8fCBlcXVpdi5pZCAhPSBlcVtpXS5lcXVpdl9jcHUgKQorICAgICAg
ICBpZiAoIGVxdWl2LnNpZyAhPSBzaWctPnNpZyB8fCBlcXVpdi5pZCAhPSBldC0+ZXFbaV0uZXF1
aXZfY3B1ICkKICAgICAgICAgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFRoaXMg
Y2FuIG9ubHkgb2NjdXIgaWYgdHdvIGVxdWl2IHRhYmxlcyBoYXZlIGJlZW4gc2VlbiB3aXRoCkBA
IC0zMjcsNyArMjkzLDcgQEAgc3RhdGljIGludCBzY2FuX2VxdWl2X2NwdV90YWJsZSgKICAgICAg
ICAgICAgICAqLwogICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKICAgICAgICAgICAgICAg
ICAgICAibWljcm9jb2RlOiBFcXVpdiBtaXNtYXRjaDogY3B1ICUwOHgsIGdvdCAlMDR4LCBjYWNo
ZWQgJTA0eFxuIiwKLSAgICAgICAgICAgICAgICAgICBzaWctPnNpZywgZXFbaV0uZXF1aXZfY3B1
LCBlcXVpdi5pZCk7CisgICAgICAgICAgICAgICAgICAgc2lnLT5zaWcsIGV0LT5lcVtpXS5lcXVp
dl9jcHUsIGVxdWl2LmlkKTsKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgICAgICB9
CiAKQEAgLTMzOCwxMDAgKzMwNCw1MiBAQCBzdGF0aWMgaW50IHNjYW5fZXF1aXZfY3B1X3RhYmxl
KAogICAgIHJldHVybiAtRVNSQ0g7CiB9CiAKLXN0YXRpYyBpbnQgY29udGFpbmVyX2Zhc3RfZm9y
d2FyZChjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZV9sZWZ0LCBzaXplX3QgKm9mZnNldCkK
LXsKLSAgICBmb3IgKCA7IDsgKQotICAgIHsKLSAgICAgICAgc2l6ZV90IHNpemU7Ci0gICAgICAg
IGNvbnN0IHVpbnQzMl90ICpoZWFkZXI7Ci0KLSAgICAgICAgaWYgKCBzaXplX2xlZnQgPCBTRUNU
SU9OX0hEUl9TSVpFICkKLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwotCi0gICAgICAgIGhl
YWRlciA9IGRhdGEgKyAqb2Zmc2V0OwotCi0gICAgICAgIGlmICggaGVhZGVyWzBdID09IFVDT0RF
X01BR0lDICYmCi0gICAgICAgICAgICAgaGVhZGVyWzFdID09IFVDT0RFX0VRVUlWX0NQVV9UQUJM
RV9UWVBFICkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmICggaGVhZGVyWzBdICE9
IFVDT0RFX1VDT0RFX1RZUEUgKQotICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Ci0gICAgICAg
IHNpemUgPSBoZWFkZXJbMV0gKyBTRUNUSU9OX0hEUl9TSVpFOwotICAgICAgICBpZiAoIHNpemUg
PCBQQVRDSF9IRFJfU0laRSB8fCBzaXplX2xlZnQgPCBzaXplICkKLSAgICAgICAgICAgIHJldHVy
biAtRUlOVkFMOwotCi0gICAgICAgIHNpemVfbGVmdCAtPSBzaXplOwotICAgICAgICAqb2Zmc2V0
ICs9IHNpemU7Ci0KLSAgICAgICAgaWYgKCAhc2l6ZV9sZWZ0ICkKLSAgICAgICAgICAgIHJldHVy
biAtRU5PREFUQTsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIHN0cnVjdCBt
aWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsIHNp
emVfdCBzaXplKQogewogICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnNhdmVkID0g
TlVMTDsKICAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IE5VTEw7Ci0gICAgc2l6
ZV90IG9mZnNldCA9IDAsIHNhdmVkX3NpemUgPSAwOworICAgIHNpemVfdCBzYXZlZF9zaXplID0g
MDsKICAgICBpbnQgZXJyb3IgPSAwOwotICAgIHVuc2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vz
c29yX2lkKCk7Ci0gICAgY29uc3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKnNpZyA9ICZwZXJfY3B1
KGNwdV9zaWcsIGNwdSk7CiAKLSAgICBpZiAoIHNpemUgPCA0IHx8ICooY29uc3QgdWludDMyX3Qg
KilidWYgIT0gVUNPREVfTUFHSUMgKQorICAgIHdoaWxlICggc2l6ZSApCiAgICAgewotICAgICAg
ICBwcmludGsoS0VSTl9FUlIgIm1pY3JvY29kZTogV3JvbmcgbWljcm9jb2RlIHBhdGNoIGZpbGUg
bWFnaWNcbiIpOwotICAgICAgICBlcnJvciA9IC1FSU5WQUw7Ci0gICAgICAgIGdvdG8gb3V0Owot
ICAgIH0KLQotICAgIC8qCi0gICAgICogTXVsdGlwbGUgY29udGFpbmVyIGZpbGUgc3VwcG9ydDoK
LSAgICAgKiAxLiBjaGVjayBpZiB0aGlzIGNvbnRhaW5lciBmaWxlIGhhcyBlcXVpdl9jcHVfaWQg
bWF0Y2gKLSAgICAgKiAyLiBJZiBub3QsIGZhc3QtZndkIHRvIG5leHQgY29udGFpbmVyIGZpbGUK
LSAgICAgKi8KLSAgICB3aGlsZSAoIG9mZnNldCA8IHNpemUgKQotICAgIHsKLSAgICAgICAgZXJy
b3IgPSBzY2FuX2VxdWl2X2NwdV90YWJsZShidWYsIHNpemUgLSBvZmZzZXQsICZvZmZzZXQpOwot
Ci0gICAgICAgIGlmICggIWVycm9yIHx8IGVycm9yICE9IC1FU1JDSCApCi0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY29uc3Qgc3RydWN0IGNvbnRhaW5lcl9lcXVpdl90YWJsZSAqZXQ7Cisg
ICAgICAgIGJvb2wgc2tpcF91Y29kZTsKIAotICAgICAgICBlcnJvciA9IGNvbnRhaW5lcl9mYXN0
X2ZvcndhcmQoYnVmLCBzaXplIC0gb2Zmc2V0LCAmb2Zmc2V0KTsKLSAgICAgICAgaWYgKCBlcnJv
ciA9PSAtRU5PREFUQSApCisgICAgICAgIGlmICggc2l6ZSA8IDQgfHwgKihjb25zdCB1aW50MzJf
dCAqKWJ1ZiAhPSBVQ09ERV9NQUdJQyApCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChv
ZmZzZXQgPT0gc2l6ZSk7CisgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAibWljcm9jb2Rl
OiBXcm9uZyBtaWNyb2NvZGUgcGF0Y2ggZmlsZSBtYWdpY1xuIik7CisgICAgICAgICAgICBlcnJv
ciA9IC1FSU5WQUw7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAo
IGVycm9yICkKKworICAgICAgICAvKiBNb3ZlIG92ZXIgVUNPREVfTUFHSUMuICovCisgICAgICAg
IGJ1ZiAgKz0gNDsKKyAgICAgICAgc2l6ZSAtPSA0OworCisgICAgICAgIGlmICggc2l6ZSA8IHNp
emVvZigqZXQpIHx8CisgICAgICAgICAgICAgKGV0ID0gYnVmKS0+dHlwZSAhPSBVQ09ERV9FUVVJ
Vl9DUFVfVEFCTEVfVFlQRSB8fAorICAgICAgICAgICAgIHNpemUgLSBzaXplb2YoKmV0KSA8IGV0
LT5sZW4gfHwKKyAgICAgICAgICAgICBldC0+bGVuICUgc2l6ZW9mKGV0LT5lcVswXSkgfHwKKyAg
ICAgICAgICAgICBldC0+ZXFbKGV0LT5sZW4gLyBzaXplb2YoZXQtPmVxWzBdKSkgLSAxXS5pbnN0
YWxsZWRfY3B1ICkKICAgICAgICAgewotICAgICAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJtaWNy
b2NvZGU6IENQVSVkIGluY29ycmVjdCBvciBjb3JydXB0IGNvbnRhaW5lciBmaWxlXG4iCi0gICAg
ICAgICAgICAgICAgICAgIm1pY3JvY29kZTogRmFpbGVkIHRvIHVwZGF0ZSBwYXRjaCBsZXZlbC4g
IgotICAgICAgICAgICAgICAgICAgICJDdXJyZW50IGx2bDolI3hcbiIsIGNwdSwgc2lnLT5yZXYp
OworICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIm1pY3JvY29kZTogQmFkIGVxdWl2YWxl
bnQgY3B1IHRhYmxlXG4iKTsKKyAgICAgICAgICAgIGVycm9yID0gLUVJTlZBTDsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfQogCi0gICAgaWYgKCBlcnJvciApCi0gICAgewot
ICAgICAgICAvKgotICAgICAgICAgKiAtRU5PREFUQSBoZXJlIG1lYW5zIHRoYXQgdGhlIGJsb2Ig
d2FzIHBhcnNlZCBmaW5lIGJ1dCBubyBtYXRjaGluZwotICAgICAgICAgKiB1Y29kZSB3YXMgZm91
bmQuIERvbid0IHJldHVybiBpdCB0byB0aGUgY2FsbGVyLgotICAgICAgICAgKi8KLSAgICAgICAg
aWYgKCBlcnJvciA9PSAtRU5PREFUQSApCi0gICAgICAgICAgICBlcnJvciA9IDA7Ci0KLSAgICAg
ICAgZ290byBvdXQ7Ci0gICAgfQorICAgICAgICAvKiBNb3ZlIG92ZXIgdGhlIEVxdWl2IHRhYmxl
LiAqLworICAgICAgICBidWYgICs9IHNpemVvZigqZXQpICsgZXQtPmxlbjsKKyAgICAgICAgc2l6
ZSAtPSBzaXplb2YoKmV0KSArIGV0LT5sZW47CisKKyAgICAgICAgZXJyb3IgPSBzY2FuX2VxdWl2
X2NwdV90YWJsZShldCk7CisKKyAgICAgICAgLyogLUVTUkNIIG1lYW5zIG5vIGFwcGxpY2FibGUg
bWljcm9jb2RlIGluIHRoaXMgY29udGFpbmVyLiAqLworICAgICAgICBpZiAoIGVycm9yICYmIGVy
cm9yICE9IC1FU1JDSCApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc2tpcF91Y29kZSA9
IGVycm9yOworICAgICAgICBlcnJvciA9IDA7CiAKLSAgICAvKgotICAgICAqIEl0J3MgcG9zc2li
bGUgdGhlIGRhdGEgZmlsZSBoYXMgbXVsdGlwbGUgbWF0Y2hpbmcgdWNvZGUsCi0gICAgICogbGV0
cyBrZWVwIHNlYXJjaGluZyB0aWxsIHRoZSBsYXRlc3QgdmVyc2lvbgotICAgICAqLwotICAgIGJ1
ZiAgKz0gb2Zmc2V0OwotICAgIHNpemUgLT0gb2Zmc2V0OwotICAgIHsKICAgICAgICAgd2hpbGUg
KCBzaXplICkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3Qgc3RydWN0IGNvbnRhaW5lcl9t
aWNyb2NvZGUgKm1jOwpAQCAtNDM5LDEzICszNTcsMTYgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2Nv
ZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29kZShjb25zdCB2b2lkICpidWYsIHNpemVfdCBz
aXoKICAgICAgICAgICAgIGlmICggc2l6ZSA8IHNpemVvZigqbWMpIHx8CiAgICAgICAgICAgICAg
ICAgIChtYyA9IGJ1ZiktPnR5cGUgIT0gVUNPREVfVUNPREVfVFlQRSB8fAogICAgICAgICAgICAg
ICAgICBzaXplIC0gc2l6ZW9mKCptYykgPCBtYy0+bGVuIHx8Ci0gICAgICAgICAgICAgICAgICF2
ZXJpZnlfcGF0Y2hfc2l6ZShtYy0+bGVuKSApCisgICAgICAgICAgICAgICAgICghc2tpcF91Y29k
ZSAmJiAhdmVyaWZ5X3BhdGNoX3NpemUobWMtPmxlbikpICkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAibWljcm9jb2RlOiBCYWQgbWljcm9jb2RlIGRh
dGFcbiIpOwogICAgICAgICAgICAgICAgIGVycm9yID0gLUVJTlZBTDsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKCBza2lwX3Vjb2RlICkK
KyAgICAgICAgICAgICAgICBnb3RvIHNraXA7CisKICAgICAgICAgICAgIC8qCiAgICAgICAgICAg
ICAgKiBJZiB0aGUgbmV3IHVjb2RlIGNvdmVycyBjdXJyZW50IENQVSwgY29tcGFyZSB1Y29kZXMg
YW5kIHN0b3JlIHRoZQogICAgICAgICAgICAgICogb25lIHdpdGggaGlnaGVyIHJldmlzaW9uLgpA
QCAtNDU4LDYgKzM3OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVx
dWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIC8qIE1vdmUgb3ZlciB0aGUgbWljcm9jb2RlIGJsb2IuICovCisgICAg
ICAgIHNraXA6CiAgICAgICAgICAgICBidWYgICs9IHNpemVvZigqbWMpICsgbWMtPmxlbjsKICAg
ICAgICAgICAgIHNpemUgLT0gc2l6ZW9mKCptYykgKyBtYy0+bGVuOwogCkBAIC00NzcsNyArMzk5
LDYgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKmNwdV9yZXF1ZXN0X21pY3JvY29k
ZShjb25zdCB2b2lkICpidWYsIHNpemVfdCBzaXoKICAgICAgICAgICAgIGVycm9yID0gLUVOT01F
TTsKICAgICB9CiAKLSAgb3V0OgogICAgIGlmICggZXJyb3IgJiYgIXBhdGNoICkKICAgICAgICAg
cGF0Y2ggPSBFUlJfUFRSKGVycm9yKTsKIAotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZv
ciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hh
bmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv
eGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:33:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsHh-0005Zm-Gk; Sat, 04 Apr 2020 23:33:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsHg-0005Zh-BZ
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:04 +0000
X-Inumbo-ID: a0b95d50-76cc-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a0b95d50-76cc-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 23:33:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=etT6Vq/NNTfH0onX1VnMNKvzM6uz5OtX4s6cu506Me0=; b=TWv98Sg2wdvt77+oY39lBw+CYY
 xjw3vMp4a7AoJtgg3ExyDRkTjsT/hZ8ffCBTwl6e5Goe8pNe4GPOX6msDkFanTzLr12rxy/FfkgUG
 Qjq0dH5r0m0qLOowHiRAQh1p+Z54fQFRr/Ezdfijw8lyO8jkNjXyEDkd95jBzyG7fYEk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsHe-0003pf-SC
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsHe-0001CD-Qq
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsHe-0001CD-Qq@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:33:02 +0000
Subject: [Xen-changelog] [xen master] credit2: avoid vCPUs to ever reach
 lower credits than idle
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============6988686663632266377=="
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

--===============6988686663632266377==
Content-Type: text/plain

commit 36f3662f27dec32d76c0edb4c6b62b9628d6869d
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Fri Apr 3 10:45:43 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 3 10:45:43 2020 +0200

    credit2: avoid vCPUs to ever reach lower credits than idle
    
    There have been report of stalls of guest vCPUs, when Credit2 was used.
    It seemed like these vCPUs were not getting scheduled for very long
    time, even under light load conditions (e.g., during dom0 boot).
    
    Investigations led to the discovery that --although rarely-- it can
    happen that a vCPU manages to run for very long timeslices. In Credit2,
    this means that, when runtime accounting happens, the vCPU will lose a
    large quantity of credits. This in turn may lead to the vCPU having less
    credits than the idle vCPUs (-2^30). At this point, the scheduler will
    pick the idle vCPU, instead of the ready to run vCPU, for a few
    "epochs", which often times is enough for the guest kernel to think the
    vCPU is not responding and crashing.
    
    An example of this situation is shown here. In fact, we can see d0v1
    sitting in the runqueue while all the CPUs are idle, as it has
    -1254238270 credits, which is smaller than -2^30 = −1073741824:
    
        (XEN) Runqueue 0:
        (XEN)   ncpus              = 28
        (XEN)   cpus               = 0-27
        (XEN)   max_weight         = 256
        (XEN)   pick_bias          = 22
        (XEN)   instload           = 1
        (XEN)   aveload            = 293391 (~111%)
        (XEN)   idlers: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        (XEN)   tickled: 00,00000000,00000000,00000000,00000000,00000000,00000000
        (XEN)   fully idle cores: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        [...]
        (XEN) Runqueue 0:
        (XEN) CPU[00] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[01] runq=0, sibling=00,..., core=00,...
        [...]
        (XEN) CPU[26] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[27] runq=0, sibling=00,..., core=00,...
        (XEN) RUNQ:
        (XEN)     0: [0.1] flags=0 cpu=5 credit=-1254238270 [w=256] load=262144 (~100%)
    
    We certainly don't want, under any circumstance, this to happen.
    Let's, therefore, define a minimum amount of credits a vCPU can have.
    During accounting, we make sure that, for however long the vCPU has
    run, it will never get to have less than such minimum amount of
    credits. Then, we set the credits of the idle vCPU to an even
    smaller value.
    
    NOTE: investigations have been done about _how_ it is possible for a
    vCPU to execute for so much time that its credits becomes so low. While
    still not completely clear, there are evidence that:
    - it only happens very rarely,
    - it appears to be both machine and workload specific,
    - it does not look to be a Credit2 (e.g., as it happens when
      running with Credit1 as well) issue, or a scheduler issue.
    
    This patch makes Credit2 more robust to events like this, whatever
    the cause is, and should hence be backported (as far as possible).
    
    Reported-by: Glen <glenbarney@gmail.com>
    Reported-by: Tomas Mozes <hydrapolic@gmail.com>
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  5 ++---
 xen/common/sched/credit2.c | 53 ++++++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index d6e7e3f800..8f126f65f1 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -55,7 +55,7 @@
 0x00022204  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_add
 0x00022205  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle_check   [ dom:vcpu = 0x%(1)08x, credit = %(2)d, score = %(3)d ]
 0x00022206  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle         [ cpu = %(1)d ]
-0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d, mult = %(4)d ]
+0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d ]
 0x00022208  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:sched_tasklet
 0x00022209  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:update_load
 0x0002220a  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_assign    [ dom:vcpu = 0x%(1)08x, rq_id = %(2)d ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index aa894673ad..d3c8368e9d 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7718,13 +7718,12 @@ void sched_process(struct pcpu_info *p)
                 struct {
                     unsigned int vcpuid:16, domid:16;
                     int credit_start, credit_end;
-                    unsigned int multiplier;
                 } *r = (typeof(r))ri->d;
 
                 printf(" %s csched2:reset_credits d%uv%u, "
-                       "credit_start = %d, credit_end = %d, mult = %u\n",
+                       "credit_start = %d, credit_end = %d\n",
                        ri->dump_header, r->domid, r->vcpuid,
-                       r->credit_start, r->credit_end, r->multiplier);
+                       r->credit_start, r->credit_end);
             }
             break;
         case TRC_SCHED_CLASS_EVT(CSCHED2, 8):  /* SCHED_TASKLET    */
diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c
index c7241944a8..cbf9ce2b97 100644
--- a/xen/common/sched/credit2.c
+++ b/xen/common/sched/credit2.c
@@ -230,11 +230,21 @@
  */
 #define CSCHED2_CREDIT_INIT          MILLISECS(10)
 /*
+ * Minimum amount of credits VMs can have. Ideally, no VM would get
+ * close to this (unless a vCPU manages to execute for really long
+ * time uninterrupted). In case it happens, it makes no sense to
+ * track even deeper undershoots.
+ *
+ * NOTE: If making this smaller than -CSCHED2_CREDIT_INIT, adjust
+ * reset_credit() accordingly.
+ */
+#define CSCHED2_CREDIT_MIN           (-CSCHED2_CREDIT_INIT)
+/*
  * Amount of credit the idle units have. It never changes, as idle
  * units does not consume credits, and it must be lower than whatever
  * amount of credit 'regular' unit would end up with.
  */
-#define CSCHED2_IDLE_CREDIT          (-(1U<<30))
+#define CSCHED2_IDLE_CREDIT          (CSCHED2_CREDIT_MIN-1)
 /*
  * Carryover: How much "extra" credit may be carried over after
  * a reset.
@@ -781,10 +791,15 @@ static int get_fallback_cpu(struct csched2_unit *svc)
 static void t2c_update(const struct csched2_runqueue_data *rqd, s_time_t time,
                           struct csched2_unit *svc)
 {
-    uint64_t val = time * rqd->max_weight + svc->residual;
+    int64_t val = time * rqd->max_weight + svc->residual;
 
     svc->residual = do_div(val, svc->weight);
-    svc->credit -= val;
+    /* Getting to lower credit than CSCHED2_CREDIT_MIN makes no sense. */
+    val = svc->credit - val;
+    if ( unlikely(val < CSCHED2_CREDIT_MIN) )
+        svc->credit = CSCHED2_CREDIT_MIN;
+    else
+        svc->credit = val;
 }
 
 static s_time_t c2t(const struct csched2_runqueue_data *rqd, s_time_t credit,
@@ -1616,28 +1631,25 @@ static void reset_credit(int cpu, s_time_t now, struct csched2_unit *snext)
 {
     struct csched2_runqueue_data *rqd = c2rqd(cpu);
     struct list_head *iter;
-    int m;
+    int reset = CSCHED2_CREDIT_INIT;
 
     /*
      * Under normal circumstances, snext->credit should never be less
      * than -CSCHED2_MIN_TIMER.  However, under some circumstances, an
      * unit with low credits may be allowed to run long enough that
-     * its credits are actually less than -CSCHED2_CREDIT_INIT.
+     * its credits are actually much lower than that.
      * (Instances have been observed, for example, where an unit with
      * 200us of credit was allowed to run for 11ms, giving it -10.8ms
      * of credit.  Thus it was still negative even after the reset.)
      *
      * If this is the case for snext, we simply want to keep moving
-     * everyone up until it is in the black again.  This fair because
-     * none of the other units want to run at the moment.
-     *
-     * Rather than looping, however, we just calculate a multiplier,
-     * avoiding an integer division and multiplication in the common
-     * case.
+     * everyone up until it is in the black again. This means that,
+     * since CSCHED2_CREDIT_MIN is -CSCHED2_CREDIT_INIT, we need to
+     * actually add 2*CSCHED2_CREDIT_INIT.
      */
-    m = 1;
-    if ( snext->credit < -CSCHED2_CREDIT_INIT )
-        m += (-snext->credit) / CSCHED2_CREDIT_INIT;
+    ASSERT(snext->credit >= CSCHED2_CREDIT_MIN);
+    if ( unlikely(snext->credit == CSCHED2_CREDIT_MIN) )
+        reset += CSCHED2_CREDIT_INIT;
 
     list_for_each( iter, &rqd->svc )
     {
@@ -1668,15 +1680,7 @@ static void reset_credit(int cpu, s_time_t now, struct csched2_unit *snext)
         }
 
         start_credit = svc->credit;
-
-        /*
-         * Add INIT * m, avoiding integer multiplication in the common case.
-         */
-        if ( likely(m==1) )
-            svc->credit += CSCHED2_CREDIT_INIT;
-        else
-            svc->credit += m * CSCHED2_CREDIT_INIT;
-
+        svc->credit += reset;
         /* "Clip" credits to max carryover */
         if ( svc->credit > CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX )
             svc->credit = CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX;
@@ -1688,19 +1692,18 @@ static void reset_credit(int cpu, s_time_t now, struct csched2_unit *snext)
             struct {
                 unsigned unit:16, dom:16;
                 int credit_start, credit_end;
-                unsigned multiplier;
             } d;
             d.dom = svc->unit->domain->domain_id;
             d.unit = svc->unit->unit_id;
             d.credit_start = start_credit;
             d.credit_end = svc->credit;
-            d.multiplier = m;
             __trace_var(TRC_CSCHED2_CREDIT_RESET, 1,
                         sizeof(d),
                         (unsigned char *)&d);
         }
     }
 
+    ASSERT(snext->credit > 0);
     SCHED_STAT_CRANK(credit_reset);
 
     /* No need to resort runqueue, as everyone's order should be the same. */
--
generated by git-patchbot for /home/xen/git/xen.git#master


--===============6988686663632266377==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5n
ZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw
czovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

--===============6988686663632266377==--

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:33:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:33:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsHs-0005aa-Ij; Sat, 04 Apr 2020 23:33:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsHr-0005aT-5r
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:15 +0000
X-Inumbo-ID: a647fefd-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a647fefd-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:33:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=S7eRNlJTpNDHzrTOwapcVEciRu7bpS0k3ZYketlLZ+E=; b=zzhu1zeiY+/yYw09mnvYt4Yr/N
 OwM1tda1GAOF9CVJ/65cte/doSxX/mE1po5XQubl7CF2mW7l1E50nkhNqh13d2ApFRFS3cXqQ7UpE
 h4yuxSANlpO4/tv7PfkvHOGnJTg8bsKJqozDsYeJbwgCySyUy8T4uhjbilq43pjKgLf4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsHo-0003po-Vg
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsHo-0001Cq-Uf
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsHo-0001Cq-Uf@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:33:12 +0000
Subject: [Xen-changelog] [xen master] credit2: fix credit reset happening
 too few times
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGRhZTdiNjJlOTc2YjI4YWY5YzhlZmExNTA2MThjMjU1MDFiZjE2NTAKQXV0aG9yOiAg
ICAgRGFyaW8gRmFnZ2lvbGkgPGRmYWdnaW9saUBzdXNlLmNvbT4KQXV0aG9yRGF0ZTogRnJpIEFw
ciAzIDEwOjQ2OjUzIDIwMjAgKzAyMDAKQ29tbWl0OiAgICAgSmFuIEJldWxpY2ggPGpiZXVsaWNo
QHN1c2UuY29tPgpDb21taXREYXRlOiBGcmkgQXByIDMgMTA6NDY6NTMgMjAyMCArMDIwMAoKICAg
IGNyZWRpdDI6IGZpeCBjcmVkaXQgcmVzZXQgaGFwcGVuaW5nIHRvbyBmZXcgdGltZXMKICAgIAog
ICAgVGhlcmUgaXMgYSBidWcgaW4gY29tbWl0IDVlNGI0MTk5NjY3YjkgKCJ4ZW46IGNyZWRpdDI6
IG9ubHkgcmVzZXQKICAgIGNyZWRpdCBvbiByZXNldCBjb25kaXRpb24iKS4gSW4gZmFjdCwgdGhl
IGFpbSBvZiB0aGF0IGNvbW1pdCB3YXMgdG8KICAgIG1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCBw
ZXJmb3JtIHRvbyBtYW55IGNyZWRpdCByZXNldCBvcGVyYXRpb25zCiAgICAod2hpY2ggYXJlIG5v
dCBzdXBlciBjaGVhcCwgYW5kIGluIGFuIGhvdC1wYXRoKS4gQnV0IHRoZSBjaGVjayB1c2VkCiAg
ICB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlc2V0IGlzIG5lY2Vzc2FyeSB3YXMgdGhlIHdyb25n
IG9uZS4KICAgIAogICAgSW4gZmFjdCwga25vd2luZyBqdXN0IHRoYXQgc29tZSB2Q1BVcyBoYXZl
IGJlZW4gc2tpcHBlZCwgd2hpbGUKICAgIHRyYXZlcnNpbmcgdGhlIHJ1bnF1ZXVlIChpbiBydW5x
X2NhbmRpZGF0ZSgpKSwgaXMgbm90IGVub3VnaC4gV2UKICAgIG5lZWQgdG8gY2hlY2sgZXhwbGlj
aXRseSB3aGV0aGVyIHRoZSBmaXJzdCB2Q1BVIGluIHRoZSBydW5xdWV1ZQogICAgaGFzIGEgbmVn
YXRpdmUgYW1vdW50IG9mIGNyZWRpdC4KICAgIAogICAgU2luY2UgYSB0cmFjZSByZWNvcmQgaXMg
Y2hhbmdlZCwgdGhpcyBwYXRjaCB1cGRhdGVzIHhlbnRyYWNlIGZvcm1hdCBmaWxlCiAgICBhbmQg
eGVuYWx5emUgYXMgd2VsbAogICAgCiAgICBUaGlzIHNob3VsZCBiZSBiYWNrcG9ydGVkLgogICAg
CiAgICBTaWduZWQtb2ZmLWJ5OiBEYXJpbyBGYWdnaW9saSA8ZGZhZ2dpb2xpQHN1c2UuY29tPgog
ICAgQWNrZWQtYnk6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4KLS0t
CiB0b29scy94ZW50cmFjZS9mb3JtYXRzICAgICB8ICAyICstCiB0b29scy94ZW50cmFjZS94ZW5h
bHl6ZS5jICB8ICA4ICsrKy0tLS0tCiB4ZW4vY29tbW9uL3NjaGVkL2NyZWRpdDIuYyB8IDMwICsr
KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRp
b25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy94ZW50cmFjZS9mb3Jt
YXRzIGIvdG9vbHMveGVudHJhY2UvZm9ybWF0cwppbmRleCA4ZjEyNmY2NWYxLi5kZWFjNGQ4NTk4
IDEwMDY0NAotLS0gYS90b29scy94ZW50cmFjZS9mb3JtYXRzCisrKyBiL3Rvb2xzL3hlbnRyYWNl
L2Zvcm1hdHMKQEAgLTY3LDcgKzY3LDcgQEAKIDB4MDAwMjIyMTAgIENQVSUoY3B1KWQgICUodHNj
KWQgKCslKHJlbHRzYyk4ZCkgIGNzY2hlZDI6bG9hZF9jaGVjayAgICAgWyBscnFfaWRbMTZdOm9y
cV9pZFsxNl0gPSAweCUoMSkwOHgsIGRlbHRhID0gJSgyKWQgXQogMHgwMDAyMjIxMSAgQ1BVJShj
cHUpZCAgJSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpsb2FkX2JhbGFuY2UgICBbIGxf
YmF2Z2xvYWQgPSAweCUoMikwOHglKDEpMDh4LCBvX2Jhdmdsb2FkID0gMHglKDQpMDh4JSgzKTA4
eCwgbHJxX2lkWzE2XTpvcnFfaWRbMTZdID0gMHglKDUpMDh4IF0KIDB4MDAwMjIyMTIgIENQVSUo
Y3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkgIGNzY2hlZDI6cGlja19jcHUgICAgICAgWyBi
X2F2Z2xvYWQgPSAweCUoMikwOHglKDEpMDh4LCBkb206dmNwdSA9IDB4JSgzKTA4eCwgcnFfaWRb
MTZdOm5ld19jcHVbMTZdID0gJSg0KWQgXQotMHgwMDAyMjIxMyAgQ1BVJShjcHUpZCAgJSh0c2Mp
ZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpydW5xX2NhbmRpZGF0ZSBbIGRvbTp2Y3B1ID0gMHgl
KDEpMDh4LCBjcmVkaXQgPSAlKDQpZCwgc2tpcHBlZF92Y3B1cyA9ICUoMylkLCB0aWNrbGVkX2Nw
dSA9ICUoMilkIF0KKzB4MDAwMjIyMTMgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4
ZCkgIGNzY2hlZDI6cnVucV9jYW5kaWRhdGUgWyBkb206dmNwdSA9IDB4JSgxKTA4eCwgY3JlZGl0
ID0gJSgzKWQsIHRpY2tsZWRfY3B1ID0gJSgyKWQgXQogMHgwMDAyMjIxNCAgQ1BVJShjcHUpZCAg
JSh0c2MpZCAoKyUocmVsdHNjKThkKSAgY3NjaGVkMjpzY2hlZHVsZSAgICAgICBbIHJxOmNwdSA9
IDB4JSgxKTA4eCwgdGFza2xldFs4XTppZGxlWzhdOnNtdF9pZGxlWzhdOnRpY2tsZWRbOF0gPSAl
KDIpMDh4IF0KIDB4MDAwMjIyMTUgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkg
IGNzY2hlZDI6cmF0ZWxpbWl0ICAgICAgWyBkb206dmNwdSA9IDB4JSgxKTA4eCwgcnVudGltZSA9
ICUoMilkIF0KIDB4MDAwMjIyMTYgIENQVSUoY3B1KWQgICUodHNjKWQgKCslKHJlbHRzYyk4ZCkg
IGNzY2hlZDI6cnVucV9jYW5kX2NoayAgWyBkb206dmNwdSA9IDB4JSgxKTA4eCBdCmRpZmYgLS1n
aXQgYS90b29scy94ZW50cmFjZS94ZW5hbHl6ZS5jIGIvdG9vbHMveGVudHJhY2UveGVuYWx5emUu
YwppbmRleCBkM2M4MzY4ZTlkLi5iN2Y0ZTJiZWE4IDEwMDY0NAotLS0gYS90b29scy94ZW50cmFj
ZS94ZW5hbHl6ZS5jCisrKyBiL3Rvb2xzL3hlbnRyYWNlL3hlbmFseXplLmMKQEAgLTc4NTUsMTQg
Kzc4NTUsMTIgQEAgdm9pZCBzY2hlZF9wcm9jZXNzKHN0cnVjdCBwY3B1X2luZm8gKnApCiAgICAg
ICAgICAgICBpZiAob3B0LmR1bXBfYWxsKSB7CiAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdmNwdWlkOjE2LCBkb21pZDoxNjsKLSAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgdGlja2xlZF9jcHUsIHNraXBwZWQ7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIHRpY2tsZWRfY3B1OwogICAgICAgICAgICAgICAgICAgICBpbnQgY3Jl
ZGl0OwogICAgICAgICAgICAgICAgIH0gKnIgPSAodHlwZW9mKHIpKXJpLT5kOwogCi0gICAgICAg
ICAgICAgICAgcHJpbnRmKCIgJXMgY3NjaGVkMjpydW5xX2NhbmRpZGF0ZSBkJXV2JXUsIGNyZWRp
dCA9ICVkLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICIldSB2Y3B1cyBza2lwcGVkLCAiLAot
ICAgICAgICAgICAgICAgICAgICAgICByaS0+ZHVtcF9oZWFkZXIsIHItPmRvbWlkLCByLT52Y3B1
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgIHItPmNyZWRpdCwgci0+c2tpcHBlZCk7CisgICAg
ICAgICAgICAgICAgcHJpbnRmKCIgJXMgY3NjaGVkMjpydW5xX2NhbmRpZGF0ZSBkJXV2JXUsIGNy
ZWRpdCA9ICVkLCAiLAorICAgICAgICAgICAgICAgICAgICAgICByaS0+ZHVtcF9oZWFkZXIsIHIt
PmRvbWlkLCByLT52Y3B1aWQsIHItPmNyZWRpdCk7CiAgICAgICAgICAgICAgICAgaWYgKHItPnRp
Y2tsZWRfY3B1ID09ICh1bnNpZ25lZCktMSkKICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJu
byBjcHUgd2FzIHRpY2tsZWRcbiIpOwogICAgICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBh
L3hlbi9jb21tb24vc2NoZWQvY3JlZGl0Mi5jIGIveGVuL2NvbW1vbi9zY2hlZC9jcmVkaXQyLmMK
aW5kZXggY2JmOWNlMmI5Ny4uMzRmMDVjM2UyYSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zY2hl
ZC9jcmVkaXQyLmMKKysrIGIveGVuL2NvbW1vbi9zY2hlZC9jcmVkaXQyLmMKQEAgLTMyMjQsOCAr
MzIyNCw3IEBAIGNzY2hlZDJfcnVudGltZShjb25zdCBzdHJ1Y3Qgc2NoZWR1bGVyICpvcHMsIGlu
dCBjcHUsCiBzdGF0aWMgc3RydWN0IGNzY2hlZDJfdW5pdCAqCiBydW5xX2NhbmRpZGF0ZShzdHJ1
Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgICAgICAgICBzdHJ1Y3QgY3Nj
aGVkMl91bml0ICpzY3VyciwKLSAgICAgICAgICAgICAgIGludCBjcHUsIHNfdGltZV90IG5vdywK
LSAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqc2tpcHBlZCkKKyAgICAgICAgICAgICAgIGlu
dCBjcHUsIHNfdGltZV90IG5vdykKIHsKICAgICBzdHJ1Y3QgbGlzdF9oZWFkICppdGVyLCAqdGVt
cDsKICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKnNyID0gZ2V0X3NjaGVkX3Jlcyhj
cHUpOwpAQCAtMzIzMyw4ICszMjMyLDYgQEAgcnVucV9jYW5kaWRhdGUoc3RydWN0IGNzY2hlZDJf
cnVucXVldWVfZGF0YSAqcnFkLAogICAgIHN0cnVjdCBjc2NoZWQyX3ByaXZhdGUgKnBydiA9IGNz
Y2hlZDJfcHJpdihzci0+c2NoZWR1bGVyKTsKICAgICBib29sIHlpZWxkID0gZmFsc2UsIHNvZnRf
YWZmX3ByZWVtcHQgPSBmYWxzZTsKIAotICAgICpza2lwcGVkID0gMDsKLQogICAgIGlmICggdW5s
aWtlbHkoaXNfaWRsZV91bml0KHNjdXJyLT51bml0KSkgKQogICAgIHsKICAgICAgICAgc25leHQg
PSBzY3VycjsKQEAgLTMzMjgsMTIgKzMzMjUsOSBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3Nj
aGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWdu
ZWQgY2hhciAqKSZkKTsKICAgICAgICAgfQogCi0gICAgICAgIC8qIE9ubHkgY29uc2lkZXIgdW5p
dHMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gb24gdGhpcyBwcm9jZXNzb3IuICovCisgICAgICAg
IC8qIE9ubHkgY29uc2lkZXIgdmNwdXMgdGhhdCBhcmUgYWxsb3dlZCB0byBydW4gb24gdGhpcyBw
cm9jZXNzb3IuICovCiAgICAgICAgIGlmICggIWNwdW1hc2tfdGVzdF9jcHUoY3B1LCBzdmMtPnVu
aXQtPmNwdV9oYXJkX2FmZmluaXR5KSApCi0gICAgICAgIHsKLSAgICAgICAgICAgICgqc2tpcHBl
ZCkrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CiAKICAgICAgICAgLyoKICAg
ICAgICAgICogSWYgYW4gdW5pdCBpcyBtZWFudCB0byBiZSBwaWNrZWQgdXAgYnkgYW5vdGhlciBw
cm9jZXNzb3IsIGFuZCBzdWNoCkBAIC0zMzQyLDcgKzMzMzYsNiBAQCBydW5xX2NhbmRpZGF0ZShz
dHJ1Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgIGlmICggc3ZjLT50aWNr
bGVkX2NwdSAhPSAtMSAmJiBzdmMtPnRpY2tsZWRfY3B1ICE9IGNwdSAmJgogICAgICAgICAgICAg
IGNwdW1hc2tfdGVzdF9jcHUoc3ZjLT50aWNrbGVkX2NwdSwgJnJxZC0+dGlja2xlZCkgKQogICAg
ICAgICB7Ci0gICAgICAgICAgICAoKnNraXBwZWQpKys7CiAgICAgICAgICAgICBTQ0hFRF9TVEFU
X0NSQU5LKGRlZmVycmVkX3RvX3RpY2tsZWRfY3B1KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CkBAIC0zMzU0LDcgKzMzNDcsNiBAQCBydW5xX2NhbmRpZGF0ZShzdHJ1Y3QgY3Nj
aGVkMl9ydW5xdWV1ZV9kYXRhICpycWQsCiAgICAgICAgIGlmICggc2NoZWRfdW5pdF9tYXN0ZXIo
c3ZjLT51bml0KSAhPSBjcHUKICAgICAgICAgICAgICAmJiBzbmV4dC0+Y3JlZGl0ICsgQ1NDSEVE
Ml9NSUdSQVRFX1JFU0lTVCA+IHN2Yy0+Y3JlZGl0ICkKICAgICAgICAgewotICAgICAgICAgICAg
KCpza2lwcGVkKSsrOwogICAgICAgICAgICAgU0NIRURfU1RBVF9DUkFOSyhtaWdyYXRlX3Jlc2lz
dGVkKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0zMzc4LDE0ICszMzcw
LDEzIEBAIHJ1bnFfY2FuZGlkYXRlKHN0cnVjdCBjc2NoZWQyX3J1bnF1ZXVlX2RhdGEgKnJxZCwK
ICAgICB7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICB1bnNpZ25lZCB1bml0OjE2LCBk
b206MTY7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0aWNrbGVkX2NwdSwgc2tpcHBlZDsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIHRpY2tsZWRfY3B1OwogICAgICAgICAgICAgaW50IGNyZWRpdDsKICAg
ICAgICAgfSBkOwogICAgICAgICBkLmRvbSA9IHNuZXh0LT51bml0LT5kb21haW4tPmRvbWFpbl9p
ZDsKICAgICAgICAgZC51bml0ID0gc25leHQtPnVuaXQtPnVuaXRfaWQ7CiAgICAgICAgIGQuY3Jl
ZGl0ID0gc25leHQtPmNyZWRpdDsKICAgICAgICAgZC50aWNrbGVkX2NwdSA9IHNuZXh0LT50aWNr
bGVkX2NwdTsKLSAgICAgICAgZC5za2lwcGVkID0gKnNraXBwZWQ7CiAgICAgICAgIF9fdHJhY2Vf
dmFyKFRSQ19DU0NIRUQyX1JVTlFfQ0FORElEQVRFLCAxLAogICAgICAgICAgICAgICAgICAgICBz
aXplb2YoZCksCiAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopJmQpOwpAQCAt
MzQxNyw3ICszNDA4LDYgQEAgc3RhdGljIHZvaWQgY3NjaGVkMl9zY2hlZHVsZSgKICAgICBzdHJ1
Y3QgY3NjaGVkMl9ydW5xdWV1ZV9kYXRhICpycWQ7CiAgICAgc3RydWN0IGNzY2hlZDJfdW5pdCAq
IGNvbnN0IHNjdXJyID0gY3NjaGVkMl91bml0KGN1cnJ1bml0KTsKICAgICBzdHJ1Y3QgY3NjaGVk
Ml91bml0ICpzbmV4dCA9IE5VTEw7Ci0gICAgdW5zaWduZWQgaW50IHNraXBwZWRfdW5pdHMgPSAw
OwogICAgIGJvb2wgdGlja2xlZDsKICAgICBib29sIG1pZ3JhdGVkID0gZmFsc2U7CiAKQEAgLTM0
OTUsNyArMzQ4NSw3IEBAIHN0YXRpYyB2b2lkIGNzY2hlZDJfc2NoZWR1bGUoCiAgICAgICAgIHNu
ZXh0ID0gY3NjaGVkMl91bml0KHNjaGVkX2lkbGVfdW5pdChzY2hlZF9jcHUpKTsKICAgICB9CiAg
ICAgZWxzZQotICAgICAgICBzbmV4dCA9IHJ1bnFfY2FuZGlkYXRlKHJxZCwgc2N1cnIsIHNjaGVk
X2NwdSwgbm93LCAmc2tpcHBlZF91bml0cyk7CisgICAgICAgIHNuZXh0ID0gcnVucV9jYW5kaWRh
dGUocnFkLCBzY3Vyciwgc2NoZWRfY3B1LCBub3cpOwogCiAgICAgLyogSWYgc3dpdGNoaW5nIGZy
b20gYSBub24taWRsZSBydW5uYWJsZSB1bml0LCBwdXQgaXQKICAgICAgKiBiYWNrIG9uIHRoZSBy
dW5xdWV1ZS4gKi8KQEAgLTM1MDcsNiArMzQ5Nyw4IEBAIHN0YXRpYyB2b2lkIGNzY2hlZDJfc2No
ZWR1bGUoCiAgICAgLyogQWNjb3VudGluZyBmb3Igbm9uLWlkbGUgdGFza3MgKi8KICAgICBpZiAo
ICFpc19pZGxlX3VuaXQoc25leHQtPnVuaXQpICkKICAgICB7CisgICAgICAgIGludCB0b3BfY3Jl
ZGl0OworCiAgICAgICAgIC8qIElmIHN3aXRjaGluZywgcmVtb3ZlIHRoaXMgZnJvbSB0aGUgcnVu
cXVldWUgYW5kIG1hcmsgaXQgc2NoZWR1bGVkICovCiAgICAgICAgIGlmICggc25leHQgIT0gc2N1
cnIgKQogICAgICAgICB7CkBAIC0zNTM0LDExICszNTI2LDE1IEBAIHN0YXRpYyB2b2lkIGNzY2hl
ZDJfc2NoZWR1bGUoCiAgICAgICAgICAqICAyKSBubyBvdGhlciB1bml0IHdpdGggaGlnaGVyIGNy
ZWRpdHMgd2FudHMgdG8gcnVuLgogICAgICAgICAgKgogICAgICAgICAgKiBIZXJlLCB3aGVyZSB3
ZSB3YW50IHRvIGNoZWNrIGZvciByZXNldCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlCi0gICAg
ICAgICAqIHByb3BlciB1bml0IGlzIGJlaW5nIHVzZWQuIEluIGZhY3QsIHJ1bnF1ZXVlX2NhbmRp
ZGF0ZSgpIG1heSBoYXZlCi0gICAgICAgICAqIG5vdCByZXR1cm5lZCB0aGUgZmlyc3QgdW5pdCBp
biB0aGUgcnVucXVldWUsIGZvciB2YXJpb3VzIHJlYXNvbnMKKyAgICAgICAgICogcHJvcGVyIHVu
aXQgaXMgYmVpbmcgdXNlZC4gSW4gZmFjdCwgcnVucV9jYW5kaWRhdGUoKSBtYXkgaGF2ZSBub3QK
KyAgICAgICAgICogcmV0dXJuZWQgdGhlIGZpcnN0IHVuaXQgaW4gdGhlIHJ1bnF1ZXVlLCBmb3Ig
dmFyaW91cyByZWFzb25zCiAgICAgICAgICAqIChlLmcuLCBhZmZpbml0eSkuIE9ubHkgdHJpZ2dl
ciBhIHJlc2V0IHdoZW4gaXQgZG9lcy4KICAgICAgICAgICovCi0gICAgICAgIGlmICggc2tpcHBl
ZF91bml0cyA9PSAwICYmIHNuZXh0LT5jcmVkaXQgPD0gQ1NDSEVEMl9DUkVESVRfUkVTRVQgKQor
ICAgICAgICBpZiAoIGxpc3RfZW1wdHkoJnJxZC0+cnVucSkgKQorICAgICAgICAgICAgdG9wX2Ny
ZWRpdCA9IHNuZXh0LT5jcmVkaXQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRvcF9jcmVk
aXQgPSBtYXgoc25leHQtPmNyZWRpdCwgcnVucV9lbGVtKHJxZC0+cnVucS5uZXh0KS0+Y3JlZGl0
KTsKKyAgICAgICAgaWYgKCB0b3BfY3JlZGl0IDw9IENTQ0hFRDJfQ1JFRElUX1JFU0VUICkKICAg
ICAgICAgewogICAgICAgICAgICAgcmVzZXRfY3JlZGl0KHNjaGVkX2NwdSwgbm93LCBzbmV4dCk7
CiAgICAgICAgICAgICBiYWxhbmNlX2xvYWQob3BzLCBzY2hlZF9jcHUsIG5vdyk7Ci0tCmdlbmVy
YXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNtYXN0ZXIKCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vs
b2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6
Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:33:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsI0-0005bh-L1; Sat, 04 Apr 2020 23:33:24 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsHz-0005bT-Nk
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:23 +0000
X-Inumbo-ID: acbea3bc-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id acbea3bc-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:33:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=FsB4IKig7r74b3Umv9/XXtzh6oqcjWe+dfpLFBpvpTc=; b=Pp/Gbo7dpWu22WBH/RNPmdyy9p
 gRUEHRXioHafxN2jNETOAOPubk9NEwUwYNhAxDaCJtpPpR47jz3tNgnWrr+F14gLyis/G+7fp/DUP
 AG3XKwgJHwaJTP+48oUYDIQM2mMn9sToNzuDc2vBJP1CeshZa4kNSS6+Z2NUr6OBtUWk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsHz-0003px-25
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsHz-0001DO-12
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsHz-0001DO-12@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:33:23 +0000
Subject: [Xen-changelog] [xen master] x86emul: suppress "not built" warning
 for test harness'es run targets
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGQ1OTk3Mzk5YjdhZGU2NTBhN2M4OTRiZjg0OGE3ZTk0NjNhZTgwZTcKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NDg6MzkgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo0ODozOSAyMDIwICswMjAwCgogICAgeDg2
ZW11bDogc3VwcHJlc3MgIm5vdCBidWlsdCIgd2FybmluZyBmb3IgdGVzdCBoYXJuZXNzJ2VzIHJ1
biB0YXJnZXRzCiAgICAKICAgIFRoZSBydW4qIHRhcmdldHMgY2FuIGJlIHVzZWQgdG8gdGVzdCB3
aGF0ZXZlciB0aGUgdG9vbCBjaGFpbiBpcyBjYXBhYmxlCiAgICBvZiBidWlsZGluZywgYXMgbG9u
ZyBhcyBhdCBsZWFzdCB0aGUgbWFpbiBoYXJuZXNzIHNvdXJjZSBmaWxlIGJ1aWxkcy4KICAgIERv
bid0IHByb2JlIHRoZSB0b29scyBjaGFpbiwgaW4gcGFydGljdWxhciB0byBhdm9pZCBpc3N1aW5n
IHRoZSB3YXJuaW5nLAogICAgaW4gdGhpcyBjYXNlLiBXaGlsZSBsb29raW5nIGludG8gdGhpcyBJ
IGFsc28gbm90aWNlZCB0aGUgd29yZGluZyBvZiB0aGUKICAgIHJlc3BlY3RpdmUgY29tbWVudCBp
c24ndCBxdWl0ZSByaWdodCwgd2hpY2ggdGhlcmVmb3JlIGdldHMgYWx0ZXJlZCBhdAogICAgdGhl
IHNhbWUgdGltZS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNo
QHN1c2UuY29tPgogICAgQWNrZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNp
dHJpeC5jb20+Ci0tLQogdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlIHwgNiArKysr
Ky0KIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg
LS1naXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUgYi90b29scy90ZXN0cy94
ODZfZW11bGF0b3IvTWFrZWZpbGUKaW5kZXggYTc5ZjEzZjM4My4uMjIyYzFiMTFlMiAxMDA2NDQK
LS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCisrKyBiL3Rvb2xzL3Rlc3Rz
L3g4Nl9lbXVsYXRvci9NYWtlZmlsZQpAQCAtOTcsMTEgKzk3LDEzIEBAIGF2eDUxMmRxLW9wbWFz
ay12ZWNzIDo9IDEgMgogYXZ4NTEyYnctb3BtYXNrLXZlY3MgOj0gNCA4CiAKICMgU3VwcHJlc3Mg
YnVpbGRpbmcgYnkgZGVmYXVsdCBvZiB0aGUgaGFybmVzcyBpZiB0aGUgY29tcGlsZXIgY2FuJ3Qg
ZGVhbAotIyB3aXRoIGFueSBvZiB0aGUgZXh0ZW5zaW9ucyB1c2VkLiAgRG9uJ3QgYWx0ZXIgdGhl
ICJydW4iIHRhcmdldCBkZXBlbmRlbmNpZXMKKyMgd2l0aCBzb21lIG9mIHRoZSBleHRlbnNpb25z
IHVzZWQuICBEb24ndCBhbHRlciB0aGUgInJ1biIgdGFyZ2V0IGRlcGVuZGVuY2llcwogIyB0aG91
Z2gsIGFzIHRoaXMgdGFyZ2V0IG5lZWRzIHRvIGJlIHNwZWNpZmllZCBtYW51YWxseSwgYW5kIHRo
aW5ncyBtYXkgd29yawogIyBwYXJ0aWFsbHkgZXZlbiB3aXRoIG9sZGVyIGNvbXBpbGVycy4KIFRB
UkdFVC15IDo9ICQoVEFSR0VUKQogCitpZmVxICgkKGZpbHRlciBydW4lLCQoTUFLRUNNREdPQUxT
KSksKQorCiBkZWZpbmUgc2ltZC1jaGVjay1jYwogVEFSR0VULSQoc2hlbGwgZWNobyAnaW50IGk7
JyB8ICQoQ0MpIC14IGMgLWMgLW8gL2Rldi9udWxsIC1tJCgxKSAtIHx8IGVjaG8geSkgOj0KIGVu
ZGVmCkBAIC0xMTYsNiArMTE4LDggQEAgaWZlcSAoJChUQVJHRVQteSksKQogJCh3YXJuaW5nIFRl
c3QgaGFybmVzcyBub3QgYnVpbHQsIHVzZSBuZXdlciBjb21waWxlciB0aGFuICIkKENDKSIgKHZl
cnNpb24gJChzaGVsbCAkKENDKSAtZHVtcHZlcnNpb24pKSBhbmQgYW4gIntldmV4fSIgY2FwYWJs
ZSBhc3NlbWJsZXIpCiBlbmRpZgogCitlbmRpZgorCiBhbGw6ICQoVEFSR0VULXkpCiAKICMgRm9y
IEFWWCBhbmQgbGF0ZXIsIGhhdmUgdGhlIGNvbXBpbGVyIGF2b2lkIFhNTTAgdG8gd2lkZW4gY292
ZXJhZ2Ugb2YKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94
ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5w
cm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:33:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:33:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsID-0005dB-Mk; Sat, 04 Apr 2020 23:33:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsIC-0005d5-Tb
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:36 +0000
X-Inumbo-ID: b2bfa108-76cc-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b2bfa108-76cc-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 23:33:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=g/rMuUCB09OLLQc0A7NWD1r3ECwcKd+X11euo6W2krQ=; b=Sw73LnKLFq96p4NH3zb6J7t+6a
 lPHWJ1T1W+ecPMRWybrX22idgsKJckTYT1/HWkOaE3Tt+eAYQ0GMTyMbXie2yjO37uGIBfDAN9qK2
 ZGyaXUdzWRYuTjhBY7fxz1uqFkCLDhlTlM+ZJ1SUOfrV7pQ2sD7KXH4mqUh7J4v7OwU0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsI9-0003q6-4v
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsI9-0001Dp-3o
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsI9-0001Dp-3o@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:33:33 +0000
Subject: [Xen-changelog] [xen master] x86emul: inherit HOSTCC when building
 32-bit harness on 64-bit host
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDViNmEzYzY3Y2Q3YzM4MzQyMzVlYjE3YTgyYzk4YWQwZWUzODQwMTcKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NTU6MTIgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo1NToxMiAyMDIwICswMjAwCgogICAgeDg2
ZW11bDogaW5oZXJpdCBIT1NUQ0Mgd2hlbiBidWlsZGluZyAzMi1iaXQgaGFybmVzcyBvbiA2NC1i
aXQgaG9zdAogICAgCiAgICBXZSdyZSBkZWxpYmVyYXRlbHkgYnJpbmdpbmcgWEVOX0NPTVBJTEVf
QVJDSCBhbmQgWEVOX1RBUkdFVF9BUkNIIG91dCBvZgogICAgc3luYyBpbiB0aGlzIGNhc2UsIGFu
ZCBoZW5jZSBIT1NUQ0Mgd29uJ3QgZ2V0IHNldCBmcm9tIENDLiBUaGVyZWZvcmUKICAgIHdpdGhv
dXQgdGhpcyBhZGRpdGlvbiBIT1NUQ0Mgd291bGQgbm90IG1hdGNoIGEgcG9zc2libGUgbWFrZSBj
b21tYW5kCiAgICBsaW5lIG92ZXJyaWRlIG9mIENDLCBidXQgZGVmYXVsdCB0byAiZ2NjIiwgbGlr
ZWx5IGNhdXNpbmcgdGhlIGJ1aWxkIHRvCiAgICBmYWlsIGZvciB0ZXN0X3g4Nl9lbXVsYXRvci5j
IG9uIHN5c3RlbXMgd2l0aCB0b28gb2xkIGEgZ2NjLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBK
YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CiAgICBBY2tlZC1ieTogQW5kcmV3IENvb3Bl
ciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB0b29scy90ZXN0cy94ODZfZW11bGF0
b3IvTWFrZWZpbGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs
ZXRpb24oLSkKCmRpZmYgLS1naXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUg
Yi90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUKaW5kZXggMjIyYzFiMTFlMi4uN2Nl
ODgyY2I3OCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCisr
KyBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9NYWtlZmlsZQpAQCAtMjY4LDcgKzI2OCw3IEBA
IGluc3RhbGwgdW5pbnN0YWxsOgogaWZlcSAoJChYRU5fQ09NUElMRV9BUkNIKSx4ODZfNjQpCiBy
dW4zMjogJChhZGRzdWZmaXggLmgsJChURVNUQ0FTRVMpKSAkKGFkZHN1ZmZpeCAtb3BtYXNrLmgs
JChPUE1BU0spKQogcnVuMzIgY2xlYW4zMjogJTMyOgotCSQoTUFLRSkgLUMgMzIgJCoKKwkkKE1B
S0UpIC1DIDMyIEhPU1RDQz0kKEhPU1RDQykgJCoKIGNsZWFuOiBjbGVhbjMyCiBlbHNlCiBydW4z
MiBjbGVhbjMyOiAlMzI6ICUKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUv
eGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0Bs
aXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFu
Z2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:33:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:33:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsIK-0005ex-QZ; Sat, 04 Apr 2020 23:33:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsIJ-0005eA-UI
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:43 +0000
X-Inumbo-ID: b8c5cdc0-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b8c5cdc0-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:33:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xlSXxwyf1o1yYtIAnr5vOZSJRWJ23ED1+SRWn/iGdqw=; b=GiFxW3iilp98UBmOhneC6qgQWy
 POn4j83vPrrh5E0evEdUTrnFnzfFCjnLBZ5OL4IrCKT27CBR+Ua7+psU+ILjnSsuxSYs5X4oYYKsb
 N/YNQCs8EtQFkz/FBMnPhUqHhXRcLqDJ4aR1P36OnPIuMesqc22JTvekJcQLMvFHTFlg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsIJ-0003qF-7s
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsIJ-0001EF-6m
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsIJ-0001EF-6m@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:33:43 +0000
Subject: [Xen-changelog] [xen master] x86/p2m: don't ignore
 p2m_remove_page()'s return value
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGE2YjA1MWE4N2E1ODYzNDc5NjliZmJhYTY5MjVhYzBmMGM4NDU0MTMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NTY6MTAgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo1NjoxMCAyMDIwICswMjAwCgogICAgeDg2
L3AybTogZG9uJ3QgaWdub3JlIHAybV9yZW1vdmVfcGFnZSgpJ3MgcmV0dXJuIHZhbHVlCiAgICAK
ICAgIEl0J3Mgbm90IHZlcnkgbmljZSB0byByZXR1cm4gZnJvbSBndWVzdF9waHlzbWFwX2FkZF9l
bnRyeSgpIGFmdGVyCiAgICBwZXJoYXBzIGFscmVhZHkgaGF2aW5nIG1hZGUgc29tZSBjaGFuZ2Vz
IHRvIHRoZSBQMk0sIGJ1dCB0aGlzIGlzIHByZS0KICAgIGV4aXN0aW5nIHByYWN0aWNlIGluIHRo
ZSBmdW5jdGlvbiwgYW5kIGltbyBiZXR0ZXIgdGhhbiBpZ25vcmluZyBlcnJvcnMuCiAgICAKICAg
IFRha2UgdGhlIGxpYmVydHkgYW5kIHJlcGxhY2UgYW4gbWZuX2FkZCgpIGluc3RhbmNlIHdpdGgg
YSBsb2NhbCB2YXJpYWJsZQogICAgYWxyZWFkeSBob2xkaW5nIHRoZSByZXN1bHQgKGFzIHByb3Zl
biBieSB0aGUgY2hlY2sgaW1tZWRpYXRlbHkgYWhlYWQpLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5
OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CiAgICBSZXZpZXdlZC1ieTogUGF1bCBE
dXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KICAgIEFja2VkLWJ5OiBBbmRyZXcgQ29v
cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0u
YyB8IDE2ICsrKysrKysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyks
IDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVu
L2FyY2gveDg2L21tL3AybS5jCmluZGV4IGQ5M2M0MThiY2YuLjk0YTliMTc5OWUgMTAwNjQ0Ci0t
LSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAg
LTc2Nyw4ICs3NjcsNyBAQCB2b2lkIHAybV9maW5hbF90ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpk
KQogICAgIHAybV90ZWFyZG93bl9ob3N0cDJtKGQpOwogfQogCi0KLXN0YXRpYyBpbnQKK3N0YXRp
YyBpbnQgX19tdXN0X2NoZWNrCiBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAy
bSwgdW5zaWduZWQgbG9uZyBnZm5fbCwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXIpCiB7CkBAIC05NzMsOSArOTcyLDkgQEAgZ3Vlc3Rf
cGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4s
CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChvbWZuKSk7CiAgICAgICAgICAgICAg
ICAgUDJNX0RFQlVHKCJvbGQgZ2ZuPSUjbHggLT4gbWZuICUjbHhcbiIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdmbl94KG9nZm4pICwgbWZuX3gob21mbikpOwotICAgICAgICAgICAgICAg
IGlmICggbWZuX2VxKG9tZm4sIG1mbl9hZGQobWZuLCBpKSkgKQotICAgICAgICAgICAgICAgICAg
ICBwMm1fcmVtb3ZlX3BhZ2UocDJtLCBnZm5feChvZ2ZuKSwgbWZuX3gobWZuX2FkZChtZm4sIGkp
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICAgICAg
ICAgIGlmICggbWZuX2VxKG9tZm4sIG1mbl9hZGQobWZuLCBpKSkgJiYKKyAgICAgICAgICAgICAg
ICAgICAgIChyYyA9IHAybV9yZW1vdmVfcGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5feChvbWZu
KSwgMCkpICkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9CkBAIC05OTcsNiArOTk2LDcgQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50
cnkoc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgIH0KICAg
ICB9CiAKK291dDoKICAgICBwMm1fdW5sb2NrKHAybSk7CiAKICAgICByZXR1cm4gcmM7CkBAIC0y
NzA1LDkgKzI3MDUsOSBAQCBpbnQgcDJtX2NoYW5nZV9hbHRwMm1fZ2ZuKHN0cnVjdCBkb21haW4g
KmQsIHVuc2lnbmVkIGludCBpZHgsCiAgICAgaWYgKCBnZm5fZXEobmV3X2dmbiwgSU5WQUxJRF9H
Rk4pICkKICAgICB7CiAgICAgICAgIG1mbiA9IGFwMm0tPmdldF9lbnRyeShhcDJtLCBvbGRfZ2Zu
LCAmdCwgJmEsIDAsIE5VTEwsIE5VTEwpOwotICAgICAgICBpZiAoIG1mbl92YWxpZChtZm4pICkK
LSAgICAgICAgICAgIHAybV9yZW1vdmVfcGFnZShhcDJtLCBnZm5feChvbGRfZ2ZuKSwgbWZuX3go
bWZuKSwgUEFHRV9PUkRFUl80Syk7Ci0gICAgICAgIHJjID0gMDsKKyAgICAgICAgcmMgPSBtZm5f
dmFsaWQobWZuKQorICAgICAgICAgICAgID8gcDJtX3JlbW92ZV9wYWdlKGFwMm0sIGdmbl94KG9s
ZF9nZm4pLCBtZm5feChtZm4pLCBQQUdFX09SREVSXzRLKQorICAgICAgICAgICAgIDogMDsKICAg
ICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9y
IC9ob21lL3hlbi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFu
Z2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94
ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:33:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:33:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsIV-0005g9-So; Sat, 04 Apr 2020 23:33:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsIU-0005g2-P7
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:54 +0000
X-Inumbo-ID: bec7d182-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bec7d182-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:33:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=pps4/TQjfY2ExYbXEw06pEKy5wgQV9oKXCCs2aJiYl8=; b=zHwM7iJN/tG0DO8tDuY7H1RH5P
 EPc2wRigaV97jSRZ7Rq4syss6ses7tqm6vKiuykzO1kW9djVkheY1jNltc/wuDAPEdS+B4OyDIqmj
 o8qxgxBOZIWhoHEAC5HS3QH9yWTdyoXWwkpGBfdRjr3lF5iVX6EVl5WU6wyZtZDitPVw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsIT-0003qv-AW
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsIT-0001Ej-9d
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:33:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsIT-0001Ej-9d@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:33:53 +0000
Subject: [Xen-changelog] [xen master] x86/p2m: don't assert that the passed
 in MFN matches for a remove
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGM2NWVhMTZkYmNhZmJlNGZlMjE2OTNiMThmOGMyYTNjNWQxNDYwMGUKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NTY6NTUgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo1Njo1NSAyMDIwICswMjAwCgogICAgeDg2
L3AybTogZG9uJ3QgYXNzZXJ0IHRoYXQgdGhlIHBhc3NlZCBpbiBNRk4gbWF0Y2hlcyBmb3IgYSBy
ZW1vdmUKICAgIAogICAgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZSgpIGdldHMgaGFuZGVkIGFu
IE1GTiBmcm9tIHRoZSBvdXRzaWRlLCB5ZXQKICAgIHRha2VzIHRoZSBuZWNlc3NhcnkgbG9jayB0
byBwcmV2ZW50IGZ1cnRoZXIgY2hhbmdlcyB0byB0aGUgR0ZOIDwtPiBNRk4KICAgIG1hcHBpbmcg
aXRzZWxmLiBXaGlsZSBzb21lIGNhbGxlcnMsIGluIHBhcnRpY3VsYXIgZ3Vlc3RfcmVtb3ZlX3Bh
Z2UoKQogICAgKGJ5IHdheSBvZiBoYXZpbmcgY2FsbGVkIGdldF9nZm5fcXVlcnkoKSksIGhvbGQg
dGhlIEdGTiBsb2NrIGFscmVhZHksCiAgICB2YXJpb3VzIG90aGVycyAobW9zdCBub3RhYmx5IHBl
cmhhcHMgdGhlIDJuZCBpbnN0YW5jZSBpbgogICAgeGVubWVtX2FkZF90b19waHlzbWFwX29uZSgp
KSBkb24ndC4gV2hpbGUgaXQgYWxzbyBpcyBhbiBvcHRpb24gdG8gZml4CiAgICBhbGwgdGhlIGNh
bGxlcnMsIGRlYWwgd2l0aCB0aGUgaXNzdWUgaW4gcDJtX3JlbW92ZV9wYWdlKCkgaW5zdGVhZDoK
ICAgIFJlcGxhY2UgdGhlIEFTU0VSVCgpIGJ5IGEgY29uZGl0aW9uYWwgYW5kIHNwbGl0IHRoZSBs
b29wIGludG8gdHdvLCBzdWNoCiAgICB0aGF0IGFsbCBjaGVja2luZyBnZXRzIGRvbmUgYmVmb3Jl
IGFueSBtb2RpZmljYXRpb24gd291bGQgb2NjdXIuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEph
biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KICAgIFJldmlld2VkLWJ5OiBQYXVsIER1cnJh
bnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgogICAgQWNrZWQtYnk6IEFuZHJldyBDb29wZXIg
PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L21tL3AybS5jIHwg
MTggKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwg
NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4v
YXJjaC94ODYvbW0vcDJtLmMKaW5kZXggOTRhOWIxNzk5ZS4uMTEzNDU2YTdlOSAxMDA2NDQKLS0t
IGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpAQCAt
NzczLDcgKzc3Myw2IEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1
bnNpZ25lZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1mbiwKIHsKICAgICB1bnNpZ25lZCBs
b25nIGk7CiAgICAgZ2ZuX3QgZ2ZuID0gX2dmbihnZm5fbCk7Ci0gICAgbWZuX3QgbWZuX3JldHVy
bjsKICAgICBwMm1fdHlwZV90IHQ7CiAgICAgcDJtX2FjY2Vzc190IGE7CiAKQEAgLTc4NCwxNSAr
NzgzLDI2IEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25l
ZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICBBU1NFUlQoZ2ZuX2xvY2tlZF9i
eV9tZShwMm0sIGdmbikpOwogICAgIFAyTV9ERUJVRygicmVtb3ZpbmcgZ2ZuPSUjbHggbWZuPSUj
bHhcbiIsIGdmbl9sLCBtZm4pOwogCisgICAgZm9yICggaSA9IDA7IGkgPCAoMVVMIDw8IHBhZ2Vf
b3JkZXIpOyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgY3VyX29yZGVyOworICAgICAg
ICBtZm5fdCBtZm5fcmV0dXJuID0gcDJtLT5nZXRfZW50cnkocDJtLCBnZm5fYWRkKGdmbiwgaSks
ICZ0LCAmYSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZj
dXJfb3JkZXIsIE5VTEwpOworCisgICAgICAgIGlmICggcDJtX2lzX3ZhbGlkKHQpICYmCisgICAg
ICAgICAgICAgKCFtZm5fdmFsaWQoX21mbihtZm4pKSB8fCBtZm4gKyBpICE9IG1mbl94KG1mbl9y
ZXR1cm4pKSApCisgICAgICAgICAgICByZXR1cm4gLUVJTFNFUTsKKworICAgICAgICBpICs9ICgx
VUwgPDwgY3VyX29yZGVyKSAtICgoZ2ZuX2wgKyBpKSAmICgoMVVMIDw8IGN1cl9vcmRlcikgLSAx
KSk7CisgICAgfQorCiAgICAgaWYgKCBtZm5fdmFsaWQoX21mbihtZm4pKSApCiAgICAgewogICAg
ICAgICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1mbl9yZXR1cm4gPSBwMm0tPmdldF9lbnRyeShwMm0sIGdmbl9hZGQo
Z2ZuLCBpKSwgJnQsICZhLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgcDJtLT5nZXRfZW50cnkocDJtLCBnZm5fYWRk
KGdmbiwgaSksICZ0LCAmYSwgMCwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoICFwMm1f
aXNfZ3JhbnQodCkgJiYgIXAybV9pc19zaGFyZWQodCkgJiYgIXAybV9pc19mb3JlaWduKHQpICkK
ICAgICAgICAgICAgICAgICBzZXRfZ3Bmbl9mcm9tX21mbihtZm4raSwgSU5WQUxJRF9NMlBfRU5U
UlkpOwotICAgICAgICAgICAgQVNTRVJUKCAhcDJtX2lzX3ZhbGlkKHQpIHx8IG1mbiArIGkgPT0g
bWZuX3gobWZuX3JldHVybikgKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gcDJtX3Nl
dF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9NRk4sIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlkLAot
LQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFz
dGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t
Y2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3Jn
Cmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:34:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:34:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsIf-0005hE-Uw; Sat, 04 Apr 2020 23:34:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsIe-0005h6-R8
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:04 +0000
X-Inumbo-ID: c4cab0c2-76cc-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c4cab0c2-76cc-11ea-9e09-bc764e2007e4;
 Sat, 04 Apr 2020 23:34:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=U+b4HVtJwWBjdQ06cvSwerbznDPw8ubopA164hKew58=; b=vK0NkLR5x1uXVHHrxE/8vqbEnq
 Kp8/+aE5t2JjuLN98oXjWOn0avcBEFZhyeG+mpVn1wwDOFGHWWNk3oa314ssTpt82J8nrkGu/09Hg
 448icHg9DOs8H6Uq4Gw2RXzGKIjkRBPR0HdHMMkaCLO/gHwrGIGKc+aEE8u3oTm6uMcM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsId-0003rK-DY
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsId-0001FX-CU
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsId-0001FX-CU@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:34:03 +0000
Subject: [Xen-changelog] [xen master] x86/p2m: drop pointless nested
 variable from guest_physmap_add_entry()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDQxY2ViZGQxYTZiNWU4ODBjNzY4YTRhZjY5NzI0ODUxZTZhMDYxMDgKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTA6NTc6NDEgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxMDo1Nzo0MSAyMDIwICswMjAwCgogICAgeDg2
L3AybTogZHJvcCBwb2ludGxlc3MgbmVzdGVkIHZhcmlhYmxlIGZyb20gZ3Vlc3RfcGh5c21hcF9h
ZGRfZW50cnkoKQogICAgCiAgICBUaGVyZSdzIGFuIG91dGVyIHNjb3BlIHJjIGFscmVhZHksIGFu
ZCBpdHMgdXNlIGZvciB0aGUgbWVtLXNoYXJpbmcgbG9naWMKICAgIGRvZXMgbm90IGNvbmZsaWN0
IHdpdGggaXRzIHVzZSBlbHNld2hlcmUgaW4gdGhlIGZ1bmN0aW9uLgogICAgCiAgICBTaWduZWQt
b2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CiAgICBBY2tlZC1ieTogQW5k
cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYv
bW0vcDJtLmMgfCAxIC0KIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0
IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5jCmluZGV4IDEx
MzQ1NmE3ZTkuLjUxYjllMjU4NGQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwor
KysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTkwMiw3ICs5MDIsNiBAQCBndWVzdF9waHlz
bWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIG1mbl90IG1mbiwKICAg
ICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKG90KSApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8q
IERvIGFuIHVuc2hhcmUgdG8gY2xlYW5seSB0YWtlIGNhcmUgb2YgYWxsIGNvcm5lciBjYXNlcy4g
Ki8KLSAgICAgICAgICAgIGludCByYzsKICAgICAgICAgICAgIHJjID0gbWVtX3NoYXJpbmdfdW5z
aGFyZV9wYWdlKHAybS0+ZG9tYWluLCBnZm5feChnZm5fYWRkKGdmbiwgaSkpKTsKICAgICAgICAg
ICAgIGlmICggcmMgKQogICAgICAgICAgICAgewotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90
IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4t
Y2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5v
cmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:34:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:34:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsIq-0005iH-0m; Sat, 04 Apr 2020 23:34:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsIo-0005i5-8f
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:14 +0000
X-Inumbo-ID: cacef690-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cacef690-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:34:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5zuND7zEcjio8ZhalV3mfhCLli6hI1r8MUGTZP+YBtg=; b=j/AaPmZACASwnlGPM9IHgncvlT
 r5yy7EAi7jHJR280JCWAa4IE2WFBBfh8iuY3wNuamh/Z4PEt4p/f1S7eFaKIsoHSuz3IO+gA7jZz+
 3WblTHCOR/AGJEtztrr+/rATiSY1tJCHNvuZ0xcNQGuotm6Yko5IQ1loF36TxbNUT2BI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsIn-0003rT-GY
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsIn-0001G8-FZ
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsIn-0001G8-FZ@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:34:13 +0000
Subject: [Xen-changelog] [xen master] x86: use macro DIV_ROUND_UP
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDAwOTM2MGFjYzljOTA1MTNlNGE4NWM3Mjg1ZDRmZDdhNjY1YzY2ZTEKQXV0aG9yOiAg
ICAgU2ltcmFuIFNpbmdoYWwgPHNpbmdoYWxzaW1yYW4wQGdtYWlsLmNvbT4KQXV0aG9yRGF0ZTog
RnJpIEFwciAzIDEwOjU4OjE4IDIwMjAgKzAyMDAKQ29tbWl0OiAgICAgSmFuIEJldWxpY2ggPGpi
ZXVsaWNoQHN1c2UuY29tPgpDb21taXREYXRlOiBGcmkgQXByIDMgMTA6NTg6MTggMjAyMCArMDIw
MAoKICAgIHg4NjogdXNlIG1hY3JvIERJVl9ST1VORF9VUAogICAgCiAgICBVc2UgdGhlIERJVl9S
T1VORF9VUCBtYWNybyB0byByZXBsYWNlIG9wZW4tY29kZWQgZGl2aXNvciBjYWxjdWxhdGlvbgog
ICAgKCgobikgKyAoZCkgLSAxKSAvIChkKSkgdG8gaW1wcm92ZSByZWFkYWJpbGl0eS4KICAgIAog
ICAgU2lnbmVkLW9mZi1ieTogU2ltcmFuIFNpbmdoYWwgPHNpbmdoYWxzaW1yYW4wQGdtYWlsLmNv
bT4KICAgIEFja2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t
PgotLS0KIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICB8IDIgKy0KIHhlbi9hcmNoL3g4Ni90Ym9v
dC5jICAgICB8IDIgKy0KIHhlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyB8IDIgKy0KIDMgZmlsZXMg
Y2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hl
bi9hcmNoL3g4Ni9tbS5jIGIveGVuL2FyY2gveDg2L21tLmMKaW5kZXggMmZhYzY3YWQ1Ny4uZmI1
M2Q2MmFiYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tLmMKKysrIGIveGVuL2FyY2gveDg2
L21tLmMKQEAgLTI0MCw3ICsyNDAsNyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9mcmFtZXRh
YmxlX2NodW5rKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpCiB2b2lkIF9faW5pdCBpbml0X2ZyYW1l
dGFibGUodm9pZCkKIHsKICAgICB1bnNpZ25lZCBpbnQgc2lkeCwgZWlkeCwgbmlkeDsKLSAgICB1
bnNpZ25lZCBpbnQgbWF4X2lkeCA9IChtYXhfcGR4ICsgUERYX0dST1VQX0NPVU5UIC0gMSkgLyBQ
RFhfR1JPVVBfQ09VTlQ7CisgICAgdW5zaWduZWQgaW50IG1heF9pZHggPSBESVZfUk9VTkRfVVAo
bWF4X3BkeCwgUERYX0dST1VQX0NPVU5UKTsKICAgICBzdHJ1Y3QgcGFnZV9pbmZvICplbmRfcGcs
ICp0b3BfcGc7CiAKICAgICBCVUlMRF9CVUdfT04oWEVOX1ZJUlRfRU5EID4gRlJBTUVUQUJMRV9W
SVJUX1NUQVJUKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni90Ym9vdC5jIGIveGVuL2FyY2gv
eDg2L3Rib290LmMKaW5kZXggMTAyYzNjZDIwMy4uMzIwZTA2ZjEyOSAxMDA2NDQKLS0tIGEveGVu
L2FyY2gveDg2L3Rib290LmMKKysrIGIveGVuL2FyY2gveDg2L3Rib290LmMKQEAgLTMxMCw3ICsz
MTAsNyBAQCBzdGF0aWMgdm9pZCB0Ym9vdF9nZW5fZnJhbWV0YWJsZV9pbnRlZ3JpdHkoY29uc3Qg
dWludDhfdCBrZXlbVEJfS0VZX1NJWkVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZtYWNfdCAqbWFjKQogewogICAgIHVuc2lnbmVkIGludCBzaWR4LCBlaWR4
LCBuaWR4OwotICAgIHVuc2lnbmVkIGludCBtYXhfaWR4ID0gKG1heF9wZHggKyBQRFhfR1JPVVBf
Q09VTlQgLSAxKS9QRFhfR1JPVVBfQ09VTlQ7CisgICAgdW5zaWduZWQgaW50IG1heF9pZHggPSBE
SVZfUk9VTkRfVVAobWF4X3BkeCwgUERYX0dST1VQX0NPVU5UKTsKICAgICB1aW50OF90IG5vbmNl
WzE2XSA9IHt9OwogICAgIHZtYWNfY3R4X3QgY3R4OwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94
ODYveDg2XzY0L21tLmMgYi94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKaW5kZXggYjdjZTgzM2Zm
Yy4uY2VlODM2ZWMzNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jCisrKyBi
L3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYwpAQCAtODAxLDcgKzgwMSw3IEBAIHN0YXRpYyBpbnQg
ZXh0ZW5kX2ZyYW1lX3RhYmxlKHN0cnVjdCBtZW1faG90YWRkX2luZm8gKmluZm8pCiAgICAgc3Bm
biA9IF9tZm4oaW5mby0+c3Bmbik7CiAgICAgZXBmbiA9IF9tZm4oaW5mby0+ZXBmbik7CiAKLSAg
ICBlaWR4ID0gKG1mbl90b19wZHgoZXBmbikgKyBQRFhfR1JPVVBfQ09VTlQgLSAxKSAvIFBEWF9H
Uk9VUF9DT1VOVDsKKyAgICBlaWR4ID0gRElWX1JPVU5EX1VQKG1mbl90b19wZHgoZXBmbiksIFBE
WF9HUk9VUF9DT1VOVCk7CiAgICAgbmlkeCA9IGNpZHggPSBtZm5fdG9fcGR4KHNwZm4pL1BEWF9H
Uk9VUF9DT1VOVDsKIAogICAgIEFTU0VSVCggbWZuX3RvX3BkeChlcGZuKSA8PSAoRElSRUNUTUFQ
X1NJWkUgPj4gUEFHRV9TSElGVCkgJiYKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3Ig
L2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5n
ZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hl
bi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:34:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:34:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsJ0-0005jO-2P; Sat, 04 Apr 2020 23:34:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsIy-0005jC-9L
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:24 +0000
X-Inumbo-ID: d0d1f4ac-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d0d1f4ac-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:34:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Q/K+bo9/1vIEZP2TUvnrrGv9YWT5Fnqew9LiTYZzEgA=; b=oW3r0/Y0zoDLaV47++OwxFR2Rw
 mncAJEiSxDqcytJXw137n6G9oNwEgT7sqdJeqPY77hjUGRa/NTIO6HIQhfcAhJS6FbT8T8EM8oIQV
 2XtUPrMNFHkQM58QWlZFYFuv7vY6IgsuoNCGP8Nb+SPsDPB7i5afE9shfaFMwIs6IcIE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsIx-0003rg-J9
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsIx-0001I0-IL
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsIx-0001I0-IL@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:34:23 +0000
Subject: [Xen-changelog] [xen master] x86/cpuidle: correct Cannon Lake
 residency MSRs
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDlmZjA5YWVmYzQ2Mzg1ZGMwNGMzOGI2ZGQxZjFhYzI1Zjc4NGY0ODIKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTc6MTU6NTggMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxNzoxNTo1OCAyMDIwICswMjAwCgogICAgeDg2
L2NwdWlkbGU6IGNvcnJlY3QgQ2Fubm9uIExha2UgcmVzaWRlbmN5IE1TUnMKICAgIAogICAgQXMg
cGVyIFNETSByZXYgMDcxIENhbm5vbiBMYWtlIGhhcwogICAgLSBubyBDQzMgcmVzaWRlbmN5IE1T
UiBhdCAzRkMsCiAgICAtIGEgQ0MxIHJlc2lkZW5jeSBNU1IgYXIgNjYwIChsaWtlIHZhcmlvdXMg
QXRvbXMpLAogICAgLSBhIHVzZWxlc3MgKGFsd2F5cyB6ZXJvKSBDQzMgcmVzaWRlbmN5IE1TUiBh
dCA2NjIuCiAgICAKICAgIFNpZ25lZC1vZmYtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNl
LmNvbT4KICAgIEFja2VkLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXgu
Y29tPgotLS0KIHhlbi9hcmNoL3g4Ni9hY3BpL2NwdV9pZGxlLmMgfCAxNCArKysrKysrKysrKy0t
LQogMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEveGVuL2FyY2gveDg2L2FjcGkvY3B1X2lkbGUuYyBiL3hlbi9hcmNoL3g4Ni9hY3Bp
L2NwdV9pZGxlLmMKaW5kZXggNWNkNzBkN2E0MC4uZTAwZjJhODJkZSAxMDA2NDQKLS0tIGEveGVu
L2FyY2gveDg2L2FjcGkvY3B1X2lkbGUuYworKysgYi94ZW4vYXJjaC94ODYvYWNwaS9jcHVfaWRs
ZS5jCkBAIC02OSw3ICs2OSw3IEBACiAjZGVmaW5lIEdFVF9QQzhfUkVTKHZhbCkgIEdFVF9IV19S
RVNfSU5fTlMoMHg2MzAsIHZhbCkgLyogc29tZSBIYXN3ZWxscyBvbmx5ICovCiAjZGVmaW5lIEdF
VF9QQzlfUkVTKHZhbCkgIEdFVF9IV19SRVNfSU5fTlMoMHg2MzEsIHZhbCkgLyogc29tZSBIYXN3
ZWxscyBvbmx5ICovCiAjZGVmaW5lIEdFVF9QQzEwX1JFUyh2YWwpIEdFVF9IV19SRVNfSU5fTlMo
MHg2MzIsIHZhbCkgLyogc29tZSBIYXN3ZWxscyBvbmx5ICovCi0jZGVmaW5lIEdFVF9DQzFfUkVT
KHZhbCkgIEdFVF9IV19SRVNfSU5fTlMoMHg2NjAsIHZhbCkgLyogU2lsdmVybW9udCBvbmx5ICov
CisjZGVmaW5lIEdFVF9DQzFfUkVTKHZhbCkgIEdFVF9IV19SRVNfSU5fTlMoMHg2NjAsIHZhbCkK
ICNkZWZpbmUgR0VUX0NDM19SRVModmFsKSAgR0VUX0hXX1JFU19JTl9OUygweDNGQywgdmFsKQog
I2RlZmluZSBHRVRfQ0M2X1JFUyh2YWwpICBHRVRfSFdfUkVTX0lOX05TKDB4M0ZELCB2YWwpCiAj
ZGVmaW5lIEdFVF9DQzdfUkVTKHZhbCkgIEdFVF9IV19SRVNfSU5fTlMoMHgzRkUsIHZhbCkgLyog
U05CIG9ud2FyZHMgKi8KQEAgLTE4MCw4ICsxODAsNiBAQCBzdGF0aWMgdm9pZCBkb19nZXRfaHdf
cmVzaWRlbmNpZXModm9pZCAqYXJnKQogICAgIGNhc2UgMHg0RToKICAgICBjYXNlIDB4NTU6CiAg
ICAgY2FzZSAweDVFOgotICAgIC8qIENhbm5vbiBMYWtlICovCi0gICAgY2FzZSAweDY2OgogICAg
IC8qIEthYnkgTGFrZSAqLwogICAgIGNhc2UgMHg4RToKICAgICBjYXNlIDB4OUU6CkBAIC0yMDMs
NiArMjAxLDE2IEBAIHN0YXRpYyB2b2lkIGRvX2dldF9od19yZXNpZGVuY2llcyh2b2lkICphcmcp
CiAgICAgICAgIEdFVF9DQzNfUkVTKGh3X3Jlcy0+Y2MzKTsKICAgICAgICAgR0VUX0NDNl9SRVMo
aHdfcmVzLT5jYzYpOwogICAgICAgICBicmVhazsKKyAgICAvKiBDYW5ub24gTGFrZSAqLworICAg
IGNhc2UgMHg2NjoKKyAgICAgICAgR0VUX1BDMl9SRVMoaHdfcmVzLT5wYzIpOworICAgICAgICBH
RVRfUEMzX1JFUyhod19yZXMtPnBjMyk7CisgICAgICAgIEdFVF9QQzZfUkVTKGh3X3Jlcy0+cGM2
KTsKKyAgICAgICAgR0VUX1BDN19SRVMoaHdfcmVzLT5wYzcpOworICAgICAgICBHRVRfQ0MxX1JF
Uyhod19yZXMtPmNjMSk7CisgICAgICAgIEdFVF9DQzZfUkVTKGh3X3Jlcy0+Y2M2KTsKKyAgICAg
ICAgR0VUX0NDN19SRVMoaHdfcmVzLT5jYzcpOworICAgICAgICBicmVhazsKICAgICAvKiBYZW9u
IFBoaSBLbmlnaHRzIExhbmRpbmcgKi8KICAgICBjYXNlIDB4NTc6CiAgICAgLyogWGVvbiBQaGkg
S25pZ2h0cyBNaWxsICovCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hl
bi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdl
bG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:34:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:34:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsJA-0005kT-4C; Sat, 04 Apr 2020 23:34:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsJ8-0005kI-Bv
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:34 +0000
X-Inumbo-ID: d6d30d8d-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d6d30d8d-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:34:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=SJnpQzKufty63xmKfCc0nEYnf4kXp/k3sjFTfObdbrE=; b=qdI4xJMgDa7Pl1gOxpWyGePhpz
 Z8iv0dVLMblHFkrnTSQYtFIygLtBJgCQFMebKEzl6rhq/FbXduzChFwGd02gQNiZEJKeEp1muZRWl
 ZTbe0L2U6KM7Od6RRPZXVyypuqkeQqZ5vbBlAqO+f7L01G4Svj5Xb5d8/ryCs8DZCTBc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJ7-0003rp-Lp
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJ7-0001J2-Kw
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsJ7-0001J2-Kw@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:34:33 +0000
Subject: [Xen-changelog] [xen master] x86/p2m: use available local variable
 in guest_physmap_add_entry()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGQ5MTcwNzdiOGQwYWRiNzhiMjdkNDI4MmEwOTZkOTgyNzhjNTIyNDMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTc6MTc6MjkgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxNzoxNzoyOSAyMDIwICswMjAwCgogICAgeDg2
L3AybTogdXNlIGF2YWlsYWJsZSBsb2NhbCB2YXJpYWJsZSBpbiBndWVzdF9waHlzbWFwX2FkZF9l
bnRyeSgpCiAgICAKICAgIFRoZSBkb21haW4gaXMgYmVpbmcgcGFzc2VkIGluIC0gbm8gbmVlZCB0
byBvYnRhaW4gaXQgZnJvbSBwMm0tPmRvbWFpbi4KICAgIEFsc28gZHJvcCBhIHBvaW50bGVzcyBj
YXN0IGFuZCBzaW1wbGlmeSBleHByZXNzaW9ucyB3aGlsZSB0b3VjaGluZyB0aGlzCiAgICBjb2Rl
IGFueXdheS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1
c2UuY29tPgogICAgQWNrZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJp
eC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L21tL3AybS5jIHwgNSArKy0tLQogMSBmaWxlIGNoYW5n
ZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJj
aC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5kZXggNTFiOWUyNTg0ZC4u
ZDZlOWE0ZDI3OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9h
cmNoL3g4Ni9tbS9wMm0uYwpAQCAtOTAyLDcgKzkwMiw3IEBAIGd1ZXN0X3BoeXNtYXBfYWRkX2Vu
dHJ5KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgbWZuX3QgbWZuLAogICAgICAgICBpZiAo
IHAybV9pc19zaGFyZWQob3QpICkKICAgICAgICAgewogICAgICAgICAgICAgLyogRG8gYW4gdW5z
aGFyZSB0byBjbGVhbmx5IHRha2UgY2FyZSBvZiBhbGwgY29ybmVyIGNhc2VzLiAqLwotICAgICAg
ICAgICAgcmMgPSBtZW1fc2hhcmluZ191bnNoYXJlX3BhZ2UocDJtLT5kb21haW4sIGdmbl94KGdm
bl9hZGQoZ2ZuLCBpKSkpOworICAgICAgICAgICAgcmMgPSBtZW1fc2hhcmluZ191bnNoYXJlX3Bh
Z2UoZCwgZ2ZuX3goZ2ZuKSArIGkpOwogICAgICAgICAgICAgaWYgKCByYyApCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgcDJtX3VubG9jayhwMm0pOwpAQCAtOTE5LDggKzkxOSw3IEBA
IGd1ZXN0X3BoeXNtYXBfYWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgbWZu
X3QgbWZuLAogICAgICAgICAgICAgICAgICAqIEZvcmVpZ24gZG9tYWlucyBhcmUgb2theSB0byBw
bGFjZSBhbiBldmVudCBhcyB0aGV5CiAgICAgICAgICAgICAgICAgICogd29uJ3QgZ28gdG8gc2xl
ZXAuCiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgKHZvaWQpbWVtX3NoYXJp
bmdfbm90aWZ5X2Vub21lbShwMm0tPmRvbWFpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdmbl94KGdmbl9hZGQoZ2ZuLCBpKSksIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICBtZW1fc2hhcmluZ19ub3RpZnlfZW5vbWVtKGQsIGdmbl94KGdmbikgKyBp
LCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgb21mbiA9IHAybS0+Z2V0X2VudHJ5KHAybSwgZ2ZuX2FkZChnZm4sIGkpLAotLQpn
ZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hlbi5naXQjbWFzdGVy
CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tY2hh
bmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0
dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:34:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:34:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsJK-0005m6-6J; Sat, 04 Apr 2020 23:34:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsJI-0005lr-Go
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:44 +0000
X-Inumbo-ID: dcd8a138-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dcd8a138-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:34:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=9eAVFo2+VhTiwmjUWpbo22sCqSXc8J9xJNIeqt9Xe1I=; b=WLxWAJvtdm46ixTxC97dcmTOKM
 cDi0zjA1QZcrLSBj7rOykL/KqMlBIy3adc7k7yxUUc1flwQcPqzFVbf58PWLFNV4ip69ZqYMbUQcP
 Tk6LFQ+4+OvEvIcJDZEgDj2AnomzKb3X6v1aWIsu+nG9kQD+sschgO1EPC4HfIoyMZ7A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJH-0003sd-On
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJH-0001KD-NZ
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsJH-0001KD-NZ@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:34:43 +0000
Subject: [Xen-changelog] [xen master] x86/p2m: make p2m_remove_page()'s
 parameters type-safe
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDBmMGY0YjdiMWYxZWI2Njc1YmYyYjdiYWFjNTY1N2U3MTFhMjBkZmMKQXV0aG9yOiAg
ICAgSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTc6MTk6MTEgMjAyMCArMDIwMApDb21taXQ6ICAgICBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+CkNvbW1pdERhdGU6IEZyaSBBcHIgMyAxNzoxOToxMSAyMDIwICswMjAwCgogICAgeDg2
L3AybTogbWFrZSBwMm1fcmVtb3ZlX3BhZ2UoKSdzIHBhcmFtZXRlcnMgdHlwZS1zYWZlCiAgICAK
ICAgIEFsc28gYWRkIGEgY291cGxlIG9mIGJsYW5rIGxpbmVzLgogICAgCiAgICBTaWduZWQtb2Zm
LWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CiAgICBBY2tlZC1ieTogQW5kcmV3
IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvbW0v
cDJtLmMgfCAyMyArKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEzIGlu
c2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t
bS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwppbmRleCBkNmU5YTRkMjc5Li4zYzA1MmRl
NjA2IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMKKysrIGIveGVuL2FyY2gveDg2
L21tL3AybS5jCkBAIC03NjgsMTEgKzc2OCwxMCBAQCB2b2lkIHAybV9maW5hbF90ZWFyZG93bihz
dHJ1Y3QgZG9tYWluICpkKQogfQogCiBzdGF0aWMgaW50IF9fbXVzdF9jaGVjawotcDJtX3JlbW92
ZV9wYWdlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuX2wsIHVuc2ln
bmVkIGxvbmcgbWZuLAorcDJtX3JlbW92ZV9wYWdlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGdm
bl90IGdmbiwgbWZuX3QgbWZuLAogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29y
ZGVyKQogewogICAgIHVuc2lnbmVkIGxvbmcgaTsKLSAgICBnZm5fdCBnZm4gPSBfZ2ZuKGdmbl9s
KTsKICAgICBwMm1fdHlwZV90IHQ7CiAgICAgcDJtX2FjY2Vzc190IGE7CiAKQEAgLTc4MSw3ICs3
ODAsNyBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQg
bG9uZyBnZm5fbCwgdW5zaWduZWQgbG9uZyBtZm4sCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
QVNTRVJUKGdmbl9sb2NrZWRfYnlfbWUocDJtLCBnZm4pKTsKLSAgICBQMk1fREVCVUcoInJlbW92
aW5nIGdmbj0lI2x4IG1mbj0lI2x4XG4iLCBnZm5fbCwgbWZuKTsKKyAgICBQMk1fREVCVUcoInJl
bW92aW5nIGdmbj0lI2x4IG1mbj0lI2x4XG4iLCBnZm5feChnZm4pLCBtZm5feChtZm4pKTsKIAog
ICAgIGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgKQogICAgIHsKQEAgLTc5
MCwyMSArNzg5LDIzIEBAIHAybV9yZW1vdmVfcGFnZShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1
bnNpZ25lZCBsb25nIGdmbl9sLCB1bnNpZ25lZCBsb25nIG1mbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZjdXJfb3JkZXIsIE5VTEwpOwogCiAgICAgICAgIGlm
ICggcDJtX2lzX3ZhbGlkKHQpICYmCi0gICAgICAgICAgICAgKCFtZm5fdmFsaWQoX21mbihtZm4p
KSB8fCBtZm4gKyBpICE9IG1mbl94KG1mbl9yZXR1cm4pKSApCisgICAgICAgICAgICAgKCFtZm5f
dmFsaWQobWZuKSB8fCAhbWZuX2VxKG1mbl9hZGQobWZuLCBpKSwgbWZuX3JldHVybikpICkKICAg
ICAgICAgICAgIHJldHVybiAtRUlMU0VROwogCi0gICAgICAgIGkgKz0gKDFVTCA8PCBjdXJfb3Jk
ZXIpIC0gKChnZm5fbCArIGkpICYgKCgxVUwgPDwgY3VyX29yZGVyKSAtIDEpKTsKKyAgICAgICAg
aSArPSAoMVVMIDw8IGN1cl9vcmRlcikgLQorICAgICAgICAgICAgICgoZ2ZuX3goZ2ZuKSArIGkp
ICYgKCgxVUwgPDwgY3VyX29yZGVyKSAtIDEpKTsKICAgICB9CiAKLSAgICBpZiAoIG1mbl92YWxp
ZChfbWZuKG1mbikpICkKKyAgICBpZiAoIG1mbl92YWxpZChtZm4pICkKICAgICB7CiAgICAgICAg
IGZvciAoIGkgPSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgaSsrICkKICAgICAgICAgewog
ICAgICAgICAgICAgcDJtLT5nZXRfZW50cnkocDJtLCBnZm5fYWRkKGdmbiwgaSksICZ0LCAmYSwg
MCwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoICFwMm1faXNfZ3JhbnQodCkgJiYgIXAy
bV9pc19zaGFyZWQodCkgJiYgIXAybV9pc19mb3JlaWduKHQpICkKLSAgICAgICAgICAgICAgICBz
ZXRfZ3Bmbl9mcm9tX21mbihtZm4raSwgSU5WQUxJRF9NMlBfRU5UUlkpOworICAgICAgICAgICAg
ICAgIHNldF9ncGZuX2Zyb21fbWZuKG1mbl94KG1mbikgKyBpLCBJTlZBTElEX00yUF9FTlRSWSk7
CiAgICAgICAgIH0KICAgICB9CisKICAgICByZXR1cm4gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwg
SU5WQUxJRF9NRk4sIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogfQpAQCAtODE1LDkgKzgxNiwxMSBAQCBndWVz
dF9waHlzbWFwX3JlbW92ZV9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwKIHsKICAg
ICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwogICAgIGludCBy
YzsKKwogICAgIGdmbl9sb2NrKHAybSwgZ2ZuLCBwYWdlX29yZGVyKTsKLSAgICByYyA9IHAybV9y
ZW1vdmVfcGFnZShwMm0sIGdmbl94KGdmbiksIG1mbl94KG1mbiksIHBhZ2Vfb3JkZXIpOworICAg
IHJjID0gcDJtX3JlbW92ZV9wYWdlKHAybSwgZ2ZuLCBtZm4sIHBhZ2Vfb3JkZXIpOwogICAgIGdm
bl91bmxvY2socDJtLCBnZm4sIHBhZ2Vfb3JkZXIpOworCiAgICAgcmV0dXJuIHJjOwogfQogCkBA
IC05ODEsNyArOTg0LDcgQEAgZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnkoc3RydWN0IGRvbWFpbiAq
ZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgICAgICAgICAgUDJNX0RFQlVHKCJvbGQg
Z2ZuPSUjbHggLT4gbWZuICUjbHhcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbl94
KG9nZm4pICwgbWZuX3gob21mbikpOwogICAgICAgICAgICAgICAgIGlmICggbWZuX2VxKG9tZm4s
IG1mbl9hZGQobWZuLCBpKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgIChyYyA9IHAybV9yZW1v
dmVfcGFnZShwMm0sIGdmbl94KG9nZm4pLCBtZm5feChvbWZuKSwgMCkpICkKKyAgICAgICAgICAg
ICAgICAgICAgIChyYyA9IHAybV9yZW1vdmVfcGFnZShwMm0sIG9nZm4sIG9tZm4sIDApKSApCiAg
ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0yNzE0LDcgKzI3MTcsNyBAQCBpbnQgcDJtX2NoYW5nZV9hbHRwMm1fZ2ZuKHN0cnVjdCBkb21h
aW4gKmQsIHVuc2lnbmVkIGludCBpZHgsCiAgICAgewogICAgICAgICBtZm4gPSBhcDJtLT5nZXRf
ZW50cnkoYXAybSwgb2xkX2dmbiwgJnQsICZhLCAwLCBOVUxMLCBOVUxMKTsKICAgICAgICAgcmMg
PSBtZm5fdmFsaWQobWZuKQotICAgICAgICAgICAgID8gcDJtX3JlbW92ZV9wYWdlKGFwMm0sIGdm
bl94KG9sZF9nZm4pLCBtZm5feChtZm4pLCBQQUdFX09SREVSXzRLKQorICAgICAgICAgICAgID8g
cDJtX3JlbW92ZV9wYWdlKGFwMm0sIG9sZF9nZm4sIG1mbiwgUEFHRV9PUkRFUl80SykKICAgICAg
ICAgICAgICA6IDA7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KLS0KZ2VuZXJhdGVkIGJ5IGdp
dC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5n
IGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhl
bnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:34:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:34:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsJU-0005nK-A1; Sat, 04 Apr 2020 23:34:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsJS-0005n8-Fe
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:54 +0000
X-Inumbo-ID: e2d81186-76cc-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e2d81186-76cc-11ea-b58d-bc764e2007e4;
 Sat, 04 Apr 2020 23:34:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=h3DY4doRIhFsbDpEeI7Gubxny+p2jPERKEsipHeGwUY=; b=iPTb53P9i3JBVfcnafGgPGED63
 eqMXygJOAklLBUQ3HBoZorwsWej4LTIAelXia4hd+xsnxgfGYD36wFzROrRfgiUdn4YGa5EihqnVn
 jE9EwkTQnHGuEwY6Jnz8337Iqw+04vEnKAbzABvgcJyamzZXIIRpcC+TTgaj4gaSIooQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJR-0003sq-RB
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJR-0001LQ-QO
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:34:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsJR-0001LQ-QO@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:34:53 +0000
Subject: [Xen-changelog] [xen master] tools/xenstore: fix a use after free
 problem in xenstored
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGJiMmEzNGZkNzQwZTlhMjZiZTllMjI0NGYxYTViNGNlZjQzOWU1YTgKQXV0aG9yOiAg
ICAgSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpBdXRob3JEYXRlOiBGcmkgQXByIDMg
MTM6MDM6NDAgMjAyMCArMDEwMApDb21taXQ6ICAgICBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25A
ZXUuY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDE3OjU3OjUxIDIwMjAgKzAxMDAK
CiAgICB0b29scy94ZW5zdG9yZTogZml4IGEgdXNlIGFmdGVyIGZyZWUgcHJvYmxlbSBpbiB4ZW5z
dG9yZWQKICAgIAogICAgQ29tbWl0IDU2MmExYzBmN2VmM2ZiICgidG9vbHMveGVuc3RvcmU6IGRv
bnQgdW5saW5rIGNvbm5lY3Rpb24gb2JqZWN0CiAgICB0d2ljZSIpIGludHJvZHVjZWQgYSBwb3Rl
bnRpYWwgdXNlIGFmdGVyIGZyZWUgcHJvYmxlbSBpbgogICAgZG9tYWluX2NsZWFudXAoKTogYWZ0
ZXIgY2FsbGluZyB0YWxsb2NfdW5saW5rKCkgZm9yIGRvbWFpbi0+Y29ubgogICAgZG9tYWluLT5j
b25uIGlzIHNldCB0byBOVUxMLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGRvbWFpbiBpcyByZWdpc3Rl
cmVkCiAgICBhcyB0YWxsb2MgY2hpbGQgb2YgZG9tYWluLT5jb25uLCBzbyBpdCBtaWdodCBiZSBm
cmVlZCBieSB0aGUKICAgIHRhbGxvY191bmxpbmsoKSBjYWxsLgogICAgCiAgICBXaXRoIFhlbnN0
b3JlIGJlaW5nIHNpbmdsZSB0aHJlYWRlZCB0aGVyZSBhcmUgbm9ybWFsbHkgbm8gY29uY3VycmVu
dAogICAgbWVtb3J5IGFsbG9jYXRpb25zIHJ1bm5pbmcgYW5kIGZyZWVpbmcgYSB2aXJ0dWFsIG1l
bW9yeSBhcmVhIG5vcm1hbGx5CiAgICBkb2Vzbid0IHJlc3VsdCBpbiB0aGF0IGFyZWEgbm8gbG9u
Z2VyIGJlaW5nIGFjY2Vzc2libGUuIEEgcHJvYmxlbQogICAgY291bGQgb2NjdXIgb25seSBpbiBj
YXNlIGVpdGhlciBhIHNpZ25hbCByZWNlaXZlZCByZXN1bHRzIGluIHNvbWUKICAgIG1lbW9yeSBh
bGxvY2F0aW9uIGRvbmUgaW4gdGhlIHNpZ25hbCBoYW5kbGVyIChTSUdIVVAgaXMgYSBwcmltYXJ5
CiAgICBjYW5kaWRhdGUgbGVhZGluZyB0byByZW9wZW5pbmcgdGhlIGxvZyBmaWxlKSwgb3IgaW4g
Y2FzZSB0aGUgdGFsbG9jCiAgICBmcmFtZXdvcmsgd291bGQgZG8gc29tZSBpbnRlcm5hbCBtZW1v
cnkgYWxsb2NhdGlvbiBkdXJpbmcgZnJlZWluZyBvZgogICAgdGhlIG1lbW9yeSAod2hpY2ggd291
bGQgbGVhZCB0byBjbG9iYmVyaW5nIG9mIHRoZSBmcmVlZCBkb21haW4KICAgIHN0cnVjdHVyZSku
CiAgICAKICAgIEZpeGVzOiA1NjJhMWMwZjdlZjNmYiAoInRvb2xzL3hlbnN0b3JlOiBkb250IHVu
bGluayBjb25uZWN0aW9uIG9iamVjdCB0d2ljZSIpCiAgICBTaWduZWQtb2ZmLWJ5OiBKdWVyZ2Vu
IEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CiAgICBSZXZpZXdlZC1ieTogSnVsaWVuIEdyYWxsIDxq
Z3JhbGxAYW1hem9uLmNvbT4KLS0tCiB0b29scy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMg
fCA1ICsrKystCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p
CgpkaWZmIC0tZ2l0IGEvdG9vbHMveGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5jIGIvdG9vbHMv
eGVuc3RvcmUveGVuc3RvcmVkX2RvbWFpbi5jCmluZGV4IGJhZGRhYmE1ZGYuLjU4NTgxODUyMTEg
MTAwNjQ0Ci0tLSBhL3Rvb2xzL3hlbnN0b3JlL3hlbnN0b3JlZF9kb21haW4uYworKysgYi90b29s
cy94ZW5zdG9yZS94ZW5zdG9yZWRfZG9tYWluLmMKQEAgLTIxNCw2ICsyMTQsNyBAQCBzdGF0aWMg
dm9pZCBkb21haW5fY2xlYW51cCh2b2lkKQogewogCXhjX2RvbWluZm9fdCBkb21pbmZvOwogCXN0
cnVjdCBkb21haW4gKmRvbWFpbjsKKwlzdHJ1Y3QgY29ubmVjdGlvbiAqY29ubjsKIAlpbnQgbm90
aWZ5ID0gMDsKIAogIGFnYWluOgpAQCAtMjMwLDggKzIzMSwxMCBAQCBzdGF0aWMgdm9pZCBkb21h
aW5fY2xlYW51cCh2b2lkKQogCQkJCWNvbnRpbnVlOwogCQl9CiAJCWlmIChkb21haW4tPmNvbm4p
IHsKLQkJCXRhbGxvY191bmxpbmsodGFsbG9jX2F1dG9mcmVlX2NvbnRleHQoKSwgZG9tYWluLT5j
b25uKTsKKwkJCS8qIGRvbWFpbiBpcyBhIHRhbGxvYyBjaGlsZCBvZiBkb21haW4tPmNvbm4uICov
CisJCQljb25uID0gZG9tYWluLT5jb25uOwogCQkJZG9tYWluLT5jb25uID0gTlVMTDsKKwkJCXRh
bGxvY191bmxpbmsodGFsbG9jX2F1dG9mcmVlX2NvbnRleHQoKSwgY29ubik7CiAJCQlub3RpZnkg
PSAwOyAvKiBkZXN0cm95X2RvbWFpbigpIGZpcmVzIHRoZSB3YXRjaCAqLwogCQkJZ290byBhZ2Fp
bjsKIAkJfQotLQpnZW5lcmF0ZWQgYnkgZ2l0LXBhdGNoYm90IGZvciAvaG9tZS94ZW4vZ2l0L3hl
bi5naXQjbWFzdGVyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpYZW4tY2hhbmdlbG9nIG1haWxpbmcgbGlzdApYZW4tY2hhbmdlbG9nQGxpc3RzLnhlbnBy
b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcveGVuLWNoYW5nZWxvZw==

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:35:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:35:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsJf-0005oX-C4; Sat, 04 Apr 2020 23:35:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsJd-0005oM-O6
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:05 +0000
X-Inumbo-ID: e8db9b3e-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e8db9b3e-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:35:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jhmYqKkuz+VC5PJ0hqifVJZ2waRE4u6p0D3vFhX4K7U=; b=5uvSLz42REe8pAxaSBCC8TrIM4
 f5NpYjFR7r3Y0x1trq0SzsOzzbKCuhjSeCROuXdNm/TE/lqTeWglPIc/Mnv0AC3+O/k+Md3kcpa2Z
 xo5RMSD6WZ20c/rFjN52mRnL7zaNTnp/q8eu6LrU/cWZduN9jalMSkcevlSRTTycGCM0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJb-0003tG-Tr
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJb-0001N5-Sn
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsJb-0001N5-Sn@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:35:03 +0000
Subject: [Xen-changelog] [xen master] docs: Render .md files using pandoc
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDM3MDUzNTc4ZThiZDU3ZGU5ZDExNGIxOWEyOWY1YWIxNTMzZDYwNzEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
RnJpIEFwciAzIDE0OjEyOjEyIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICBkb2NzOiBSZW5kZXIgLm1kIGZpbGVzIHVzaW5nIHBhbmRvYwogICAg
CiAgICBUaGlzIGZpeGVzIHRoZSBmYWN0IHRoYXQgcWVtdS1kZXByaXZpbGVnZS5tZCwgbm9uLWNv
b3BlcmF0aXZlLW1pZ3JhdGlvbi5tZCBhbmQKICAgIHhlbnN0b3JlLW1pZ3JhdGlvbi5tZCBkb24n
dCBjdXJyZW50bHkgZ2V0IHJlbmRlcmVkIGF0IGFsbCwgYW5kIGFyZSB0aGVyZWZvcmUKICAgIG1p
c3NpbmcgZnJvbSB4ZW5iaXRzLnhlbi5vcmcvZG9jcwogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBB
bmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6
IFBhdWwgRHVycmFudCA8cGF1bEB4ZW4ub3JnPgogICAgUmV2aWV3ZWQtYnk6IElhbiBKYWNrc29u
IDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgogICAgQmFja3BvcnQ6IDQuMTIKLS0tCiBkb2Nz
L01ha2VmaWxlIHwgMTUgKysrKysrKystLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRp
b25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvY3MvTWFrZWZpbGUgYi9kb2Nz
L01ha2VmaWxlCmluZGV4IGQ4YmE5OWIxZGMuLjNlYWUyZGFlNjAgMTAwNjQ0Ci0tLSBhL2RvY3Mv
TWFrZWZpbGUKKysrIGIvZG9jcy9NYWtlZmlsZQpAQCAtMTUsNyArMTUsNyBAQCBSU1QtU1JDLXkg
Oj0gJChzb3J0ICQoZmlsdGVyLW91dCAlaW5kZXgucnN0LCQoc2hlbGwgZmluZCAqIC10eXBlIGYg
LW5hbWUgJyoucnN0JwogCiBUWFRTUkMteSA6PSAkKHNvcnQgJChzaGVsbCBmaW5kIG1pc2MgLW5h
bWUgJyoudHh0JyAtcHJpbnQpKQogCi1QQU5ET0NTUkMteSA6PSAkKHNvcnQgJChzaGVsbCBmaW5k
IGRlc2lnbnMvIGZlYXR1cmVzLyBtaXNjLyBwcm9jZXNzLyBzcGVjcy8gLW5hbWUgJyoucGFuZG9j
JyAtcHJpbnQpKQorUEFORE9DU1JDLXkgOj0gJChzb3J0ICQoc2hlbGwgZmluZCBkZXNpZ25zLyBm
ZWF0dXJlcy8gbWlzYy8gcHJvY2Vzcy8gc3BlY3MvIFwoIC1uYW1lICcqLnBhbmRvYycgLW8gLW5h
bWUgJyoubWQnIFwpIC1wcmludCkpCiAKICMgRG9jdW1lbnRhdGlvbiB0YXJnZXRzCiAkKGZvcmVh
Y2ggaSwkKE1BTl9TRUNUSU9OUyksIFwKQEAgLTI0LDE1ICsyNCwxOCBAQCAkKGZvcmVhY2ggaSwk
KE1BTl9TRUNUSU9OUyksIFwKIAogRE9DX0hUTUwgOj0gaHRtbC9TVVBQT1JULmh0bWwgXAogICAg
ICAgICAgICAgJChwYXRzdWJzdCAlLnBhbmRvYyxodG1sLyUuaHRtbCwkKFBBTkRPQ1NSQy15KSkg
XAorICAgICAgICAgICAgJChwYXRzdWJzdCAlLm1kLGh0bWwvJS5odG1sLCQoUEFORE9DU1JDLXkp
KSBcCiAgICAgICAgICAgICAkKHBhdHN1YnN0ICUucnN0LGh0bWwvJS5odG1sLCQoUlNULVNSQy15
KSkgXAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLGh0bWwvJS5odG1sLCQoTUFOLVNSQy15KSkg
XAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLnR4dCxodG1sLyUudHh0LCQoVFhUU1JDLXkpKSBc
CiAgICAgICAgICAgICAkKHBhdHN1YnN0ICUsaHRtbC9oeXBlcmNhbGwvJS9pbmRleC5odG1sLCQo
RE9DX0FSQ0hFUykpCiBET0NfVFhUICA6PSAkKHBhdHN1YnN0ICUudHh0LHR4dC8lLnR4dCwkKFRY
VFNSQy15KSkgXAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLnBhbmRvYyx0eHQvJS50eHQsJChQ
QU5ET0NTUkMteSkpIFwKKyAgICAgICAgICAgICQocGF0c3Vic3QgJS5tZCx0eHQvJS50eHQsJChQ
QU5ET0NTUkMteSkpIFwKICAgICAgICAgICAgICQocGF0c3Vic3QgJS5yc3QsdHh0LyUudHh0LCQo
UlNULVNSQy15KSkgXAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLHR4dC8lLnR4dCwkKE1BTi1T
UkMteSkpCiBET0NfUERGICA6PSAkKHBhdHN1YnN0ICUucGFuZG9jLHBkZi8lLnBkZiwkKFBBTkRP
Q1NSQy15KSkgXAorICAgICAgICAgICAgJChwYXRzdWJzdCAlLm1kLHBkZi8lLnBkZiwkKFBBTkRP
Q1NSQy15KSkgXAogICAgICAgICAgICAgJChwYXRzdWJzdCAlLnJzdCxwZGYvJS5wZGYsJChSU1Qt
U1JDLXkpKQogCiAjIFRvcCBsZXZlbCBidWlsZCB0YXJnZXRzCkBAIC0yMjgsMTIgKzIzMSwxMCBA
QCBkZWZpbmUgR0VORVJBVEVfUEFORE9DX1JVTEUKICMgJCgxKSBpcyB0aGUgdGFyZ2V0IGRvY3Vt
ZW50YXRpb24gZm9ybWF0LiAkKDIpIGlzIHRoZSBzb3VyY2UgZm9ybWF0LgogJChjYWxsIEdFTkVS
QVRFX1BBTkRPQ19SVUxFX1JBVywkKDEpLyUuJCgxKSwlLiQoMikpCiBlbmRlZgotJChldmFsICQo
Y2FsbCBHRU5FUkFURV9QQU5ET0NfUlVMRSxwZGYscGFuZG9jKSkgICAjIHBkZi8lLnBkZjogJS5w
YW5kb2MKLSQoZXZhbCAkKGNhbGwgR0VORVJBVEVfUEFORE9DX1JVTEUscGRmLHJzdCkpICAgICAg
IyBwZGYvJS5wZGY6ICUucnN0Ci0kKGV2YWwgJChjYWxsIEdFTkVSQVRFX1BBTkRPQ19SVUxFLHR4
dCxwYW5kb2MpKSAgICMgdHh0LyUudHh0OiAlLnBhbmRvYwotJChldmFsICQoY2FsbCBHRU5FUkFU
RV9QQU5ET0NfUlVMRSx0eHQscnN0KSkgICAgICAjIHR4dC8lLnR4dDogJS5yc3QKLSQoZXZhbCAk
KGNhbGwgR0VORVJBVEVfUEFORE9DX1JVTEUsaHRtbCxwYW5kb2MpKSAgIyBodG1sLyUuaHRtbDog
JS5wYW5kb2MKLSQoZXZhbCAkKGNhbGwgR0VORVJBVEVfUEFORE9DX1JVTEUsaHRtbCxyc3QpKSAg
ICAgIyBodG1sLyUuaHRtbDogJS5yc3QKKworJChmb3JlYWNoIGRzdC1mbXQscGRmIHR4dCBodG1s
LFwKKyQoZm9yZWFjaCBzcmMtZm10LHBhbmRvYyBtZCByc3QsXAorJChldmFsICQoY2FsbCBHRU5F
UkFURV9QQU5ET0NfUlVMRSwkKGRzdC1mbXQpLCQoc3JjLWZtdCkpKSkpCiAKICQoZXZhbCAkKGNh
bGwgR0VORVJBVEVfUEFORE9DX1JVTEVfUkFXLGh0bWwvU1VQUE9SVC5odG1sLCQoWEVOX1JPT1Qp
L1NVUFBPUlQubWQpKQogCi0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hl
bi9naXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlz
dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdl
bG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:35:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:35:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsJo-0005pW-Dh; Sat, 04 Apr 2020 23:35:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsJn-0005pF-5c
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:15 +0000
X-Inumbo-ID: eedddc04-76cc-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id eedddc04-76cc-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:35:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=PN7POqyEQSYzKAjE1QIVyRZ+i0uvchrLTpZzOFGZq64=; b=OICINfSMP9EBBRcpOkI+YsSvQi
 KrYETrcMdHpdg6kl7a5+lGiGNZ0dWfqQ78YtQW5+tql+HwpVSVRhPxQf1W1kUWb5Yfztxxy12KIIV
 oZnGZV5A4n2UWI2I0kSx+lowPgNX+cMjKDoOJuyDuH+bhH6HuDRh8k03RZ8XkrmEWELQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJm-0003tT-0C
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJl-0001OZ-Vi
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsJl-0001OZ-Vi@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:35:13 +0000
Subject: [Xen-changelog] [xen master] x86/ucode/intel: Remove one CPUID from
 collect_cpu_info()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IGM4MWZiNGU0YTM1Y2JlZTRmMzczMzg3YzRlZDUyNzY3NmY2ZGM0YjEKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDE1OjUyOjQzIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGUvaW50ZWw6IFJlbW92ZSBvbmUgQ1BVSUQgZnJvbSBj
b2xsZWN0X2NwdV9pbmZvKCkKICAgIAogICAgVGhlIENQVUlEIGluc3RydWN0aW9uIGlzIGV4cGVu
c2l2ZS4gIE5vIHBvaW50IGV4ZWN1dGluZyBpdCB0d2ljZSB3aGVuIG9uY2UKICAgIHdpbGwgZG8g
ZmluZS4KICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl
cjNAY2l0cml4LmNvbT4KICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYyB8IDQgKy0tLQog
MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMgYi94ZW4vYXJjaC94ODYvY3B1
L21pY3JvY29kZS9pbnRlbC5jCmluZGV4IDcyYmQxYWQwYmMuLmYxZTY0ZTE4OGIgMTAwNjQ0Ci0t
LSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2
L2NwdS9taWNyb2NvZGUvaW50ZWwuYwpAQCAtMTIxLDE0ICsxMjEsMTIgQEAgc3RhdGljIGludCBj
b2xsZWN0X2NwdV9pbmZvKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKQogCiAgICAgbWVtc2V0
KGNzaWcsIDAsIHNpemVvZigqY3NpZykpOwogCi0gICAgY3NpZy0+c2lnID0gY3B1aWRfZWF4KDB4
MDAwMDAwMDEpOwotCiAgICAgcmRtc3JsKE1TUl9JQTMyX1BMQVRGT1JNX0lELCBtc3JfY29udGVu
dCk7CiAgICAgY3NpZy0+cGYgPSAxIDw8ICgobXNyX2NvbnRlbnQgPj4gNTApICYgNyk7CiAKICAg
ICB3cm1zcmwoTVNSX0lBMzJfVUNPREVfUkVWLCAweDBVTEwpOwogICAgIC8qIEFzIGRvY3VtZW50
ZWQgaW4gdGhlIFNETTogRG8gYSBDUFVJRCAxIGhlcmUgKi8KLSAgICBjcHVpZF9lYXgoMSk7Cisg
ICAgY3NpZy0+c2lnID0gY3B1aWRfZWF4KDEpOwogCiAgICAgLyogZ2V0IHRoZSBjdXJyZW50IHJl
dmlzaW9uIGZyb20gTVNSIDB4OEIgKi8KICAgICByZG1zcmwoTVNSX0lBMzJfVUNPREVfUkVWLCBt
c3JfY29udGVudCk7Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9n
aXQveGVuLmdpdCNtYXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fClhlbi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMu
eGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:35:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:35:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsJx-0005qb-FL; Sat, 04 Apr 2020 23:35:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsJw-0005qV-V5
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:24 +0000
X-Inumbo-ID: f4dfe458-76cc-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f4dfe458-76cc-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 23:35:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=dqGwwim0f48wo/bagt4PMrbz4L9mWCsU6xoK8rW1XjU=; b=2RaaaFC1WqhDdo4zxwkiZxR5Ni
 mramltzN9fNMNoPSnSbRat2jGFDCq2Oc1YVwQnvgkFZAjd6tw4kJjtOQZ2CL8VGnoO0f9dJl3/Yn2
 t6gIfv/haNCfbWxyZmDKaLY4z3o1LZWT/uoo5WZiigih4uX4injmqt0ymP+tm8lFXQ2k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJw-0003tg-2g
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsJw-0001Pp-1p
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsJw-0001Pp-1p@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:35:24 +0000
Subject: [Xen-changelog] [xen master] x86/ucode: Drop ops->match_cpu()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDYyZDdiMzJkZjdhZWRjYmI2Y2E0N2JhMTM2ZGMyMmM5MzMyMDczNTgKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDE3OjQ1OjUyIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGU6IERyb3Agb3BzLT5tYXRjaF9jcHUoKQogICAgCiAg
ICBJdCB0dXJucyBvdXQgdGhlcmUgYXJlIG5vIGNhbGxlcnMgb2YgdGhlIGhvb2soKS4gIFRoZSBv
bmx5IGNhbGxlcnMgYXJlIHRoZQogICAgbG9jYWwsIHdoaWNoIGNhbiBlYXNpbHkgYmUgcmVhcnJh
bmdlZCB0byB1c2UgdGhlIGFwcHJvcHJpYXRlIGludGVybmFsIGhlbHBlci4KICAgIAogICAgU2ln
bmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KICAg
IFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogeGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgICAgIHwgIDggKy0tLS0tLS0KIHhlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMgICB8IDExICstLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9wcml2YXRlLmggfCAgNiAtLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMiBp
bnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCmlu
ZGV4IGQ0NzYzZWE3NzYuLmM5NjU2ZGU1NWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUv
bWljcm9jb2RlL2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCkBA
IC0xODgsMTEgKzE4OCw2IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgbWlj
cm9jb2RlX2ZpdHMoCiAgICAgcmV0dXJuIE5FV19VQ09ERTsKIH0KIAotc3RhdGljIGJvb2wgbWF0
Y2hfY3B1KGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQotewotICAgIHJldHVy
biBwYXRjaCAmJiAobWljcm9jb2RlX2ZpdHMocGF0Y2gpID09IE5FV19VQ09ERSk7Ci19Ci0KIHN0
YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gpCiB7CiAg
ICAgeGZyZWUocGF0Y2gpOwpAQCAtMjI3LDcgKzIyMiw3IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWlj
cm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogICAgIGlmICggIXBh
dGNoICkKICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAKLSAgICBpZiAoICFtYXRjaF9jcHUocGF0
Y2gpICkKKyAgICBpZiAoIG1pY3JvY29kZV9maXRzKHBhdGNoKSAhPSBORVdfVUNPREUgKQogICAg
ICAgICByZXR1cm4gLUVJTlZBTDsKIAogICAgIGlmICggY2hlY2tfZmluYWxfcGF0Y2hfbGV2ZWxz
KHNpZykgKQpAQCAtNDI4LDUgKzQyMyw0IEBAIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzIGFt
ZF91Y29kZV9vcHMgPSB7CiAjZW5kaWYKICAgICAuZnJlZV9wYXRjaCAgICAgICAgICAgICAgICAg
ICAgICAgPSBmcmVlX3BhdGNoLAogICAgIC5jb21wYXJlX3BhdGNoICAgICAgICAgICAgICAgICAg
ICA9IGNvbXBhcmVfcGF0Y2gsCi0gICAgLm1hdGNoX2NwdSAgICAgICAgICAgICAgICAgICAgICAg
ID0gbWF0Y2hfY3B1LAogfTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2ludGVsLmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCmluZGV4IGYxZTY0
ZTE4OGIuLjMxNWZjYTlmZjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYwpAQCAtMjQ1
LDE0ICsyNDUsNiBAQCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IG1pY3JvY29k
ZV91cGRhdGVfbWF0Y2goCiAgICAgcmV0dXJuIG1jLT5yZXYgPiBjcHVfc2lnLT5yZXYgPyBORVdf
VUNPREUgOiBPTERfVUNPREU7CiB9CiAKLXN0YXRpYyBib29sIG1hdGNoX2NwdShjb25zdCBzdHJ1
Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKLXsKLSAgICBpZiAoICFwYXRjaCApCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKHBhdGNo
KSA9PSBORVdfVUNPREU7Ci19Ci0KIHN0YXRpYyB2b2lkIGZyZWVfcGF0Y2goc3RydWN0IG1pY3Jv
Y29kZV9wYXRjaCAqcGF0Y2gpCiB7CiAgICAgeGZyZWUocGF0Y2gpOwpAQCAtMjgxLDcgKzI3Myw3
IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0
Y2ggKnBhdGNoKQogICAgIGlmICggIXBhdGNoICkKICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAK
LSAgICBpZiAoICFtYXRjaF9jcHUocGF0Y2gpICkKKyAgICBpZiAoIG1pY3JvY29kZV91cGRhdGVf
bWF0Y2gocGF0Y2gpICE9IE5FV19VQ09ERSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCiAg
ICAgLyogd3JpdGUgbWljcm9jb2RlIHZpYSBNU1IgMHg3OSAqLwpAQCAtMzY5LDUgKzM2MSw0IEBA
IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzIGludGVsX3Vjb2RlX29wcyA9IHsKICAgICAuYXBw
bHlfbWljcm9jb2RlICAgICAgICAgICAgICAgICAgPSBhcHBseV9taWNyb2NvZGUsCiAgICAgLmZy
ZWVfcGF0Y2ggICAgICAgICAgICAgICAgICAgICAgID0gZnJlZV9wYXRjaCwKICAgICAuY29tcGFy
ZV9wYXRjaCAgICAgICAgICAgICAgICAgICAgPSBjb21wYXJlX3BhdGNoLAotICAgIC5tYXRjaF9j
cHUgICAgICAgICAgICAgICAgICAgICAgICA9IG1hdGNoX2NwdSwKIH07CmRpZmYgLS1naXQgYS94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9wcml2YXRlLmggYi94ZW4vYXJjaC94ODYvY3B1L21p
Y3JvY29kZS9wcml2YXRlLmgKaW5kZXggZGYwZDA4NTJjZC4uZDMxYmNmMTRiMSAxMDA2NDQKLS0t
IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvcHJpdmF0ZS5oCisrKyBiL3hlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUuaApAQCAtNjAsMTIgKzYwLDYgQEAgc3RydWN0IG1pY3Jv
Y29kZV9vcHMgewogICAgIHZvaWQgKCpmcmVlX3BhdGNoKShzdHJ1Y3QgbWljcm9jb2RlX3BhdGNo
ICpwYXRjaCk7CiAKICAgICAvKgotICAgICAqIElzIHRoZSBtaWNyb2NvZGUgcGF0Y2ggYXBwbGlj
YWJsZSBmb3IgdGhlIGN1cnJlbnQgQ1BVLCBhbmQgbmV3ZXIgdGhhbgotICAgICAqIHRoZSBjdXJy
ZW50bHkgcnVubmluZyBwYXRjaD8KLSAgICAgKi8KLSAgICBib29sICgqbWF0Y2hfY3B1KShjb25z
dCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCk7Ci0KLSAgICAvKgogICAgICAqIEdpdmVu
IHR3byBwYXRjaGVzLCBhcmUgdGhleSBib3RoIGFwcGxpY2FibGUgdG8gdGhlIGN1cnJlbnQgQ1BV
LCBhbmQgaXMKICAgICAgKiBuZXcgYSBoaWdoZXIgcmV2aXNpb24gdGhhbiBvbGQ/CiAgICAgICov
Ci0tCmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNt
YXN0ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl
bi1jaGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5v
cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:35:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:35:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsK7-0005rk-H8; Sat, 04 Apr 2020 23:35:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsK6-0005rb-PF
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:34 +0000
X-Inumbo-ID: fae3ad26-76cc-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fae3ad26-76cc-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 23:35:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HmVNWLPMuYegqBS1jKDlNSD8MIIBuwz+Va7Wyj+Qux8=; b=W6AIT5ibOPozr1VEVN9MX44CJU
 vNDZ5koJiLwUFPLAE9KFXPSG8s9TQV4C0ceoUbl0cvOeUuYRys9/bx4cVs6Krj8WYnBNe1gXug/NL
 ioqvU6ZgD1EWA+W2iCKzFc+54FcuPZiXv3o773+UnE4BSCcxrQe9Jv0yMwBgrmUO1koM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsK6-0003tt-5L
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsK6-0001R3-4W
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsK6-0001R3-4W@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:35:34 +0000
Subject: [Xen-changelog] [xen master] x86/ucode: Don't try to cope with NULL
 pointers in apply_microcode()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDQ4NTNmMDNkZWUyZWQxN2NjNDIxMjYwZDY2OTM3N2RiMjUzZjBkYWMKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDIyOjQ1OjIyIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGU6IERvbid0IHRyeSB0byBjb3BlIHdpdGggTlVMTCBw
b2ludGVycyBpbiBhcHBseV9taWNyb2NvZGUoKQogICAgCiAgICBObyBwYXRocyB0byBhcHBseV9t
aWNyb2NvZGUoKSBwYXNzIGEgTlVMTCBwb2ludGVyLCBhbmQgb3RoZXIgaG9va3MgZG9uJ3QKICAg
IHRvbGVyYXRlIG9uZSBpbiB0aGUgZmlyc3QgcGxhY2UuICBXZSBjYW4gZXhwZWN0IHRoZSBjb3Jl
IGxvZ2ljIG5vdCB0byBwYXNzIHVzCiAgICBqdW5rLCBzbyBkcm9wIHRoZSBjaGVja3MuCiAgICAK
ICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5j
b20+CiAgICBSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgotLS0K
IHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jICAgfCAzIC0tLQogeGVuL2FyY2gveDg2
L2NwdS9taWNyb2NvZGUvaW50ZWwuYyB8IDMgLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDYgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgYi94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwppbmRleCBjOTY1NmRlNTVkLi4wY2EwZTlh
MDM4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYworKysgYi94
ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpAQCAtMjE5LDkgKzIxOSw2IEBAIHN0YXRp
YyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNo
KQogICAgIHN0cnVjdCBjcHVfc2lnbmF0dXJlICpzaWcgPSAmcGVyX2NwdShjcHVfc2lnLCBjcHUp
OwogICAgIHVpbnQzMl90IHJldiwgb2xkX3JldiA9IHNpZy0+cmV2OwogCi0gICAgaWYgKCAhcGF0
Y2ggKQotICAgICAgICByZXR1cm4gLUVOT0VOVDsKLQogICAgIGlmICggbWljcm9jb2RlX2ZpdHMo
cGF0Y2gpICE9IE5FV19VQ09ERSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCmRpZmYgLS1n
aXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvaW50ZWwuYwppbmRleCAzMTVmY2E5ZmYyLi45Y2IwNzdiNTgzIDEwMDY0NAot
LS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCisrKyBiL3hlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKQEAgLTI3MCw5ICsyNzAsNiBAQCBzdGF0aWMgaW50IGFw
cGx5X21pY3JvY29kZShjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKICAgICBz
dHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnRoaXNfY3B1KGNwdV9zaWcpOwogICAgIHVpbnQz
Ml90IHJldiwgb2xkX3JldiA9IHNpZy0+cmV2OwogCi0gICAgaWYgKCAhcGF0Y2ggKQotICAgICAg
ICByZXR1cm4gLUVOT0VOVDsKLQogICAgIGlmICggbWljcm9jb2RlX3VwZGF0ZV9tYXRjaChwYXRj
aCkgIT0gTkVXX1VDT0RFICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLS0KZ2VuZXJhdGVk
IGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dpdC94ZW4uZ2l0I21hc3RlcgoKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWNoYW5nZWxvZyBt
YWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp
c3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:35:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:35:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsKH-0005tT-Iu; Sat, 04 Apr 2020 23:35:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsKH-0005tM-1D
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:45 +0000
X-Inumbo-ID: 00e4a090-76cd-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 00e4a090-76cd-11ea-b4f4-bc764e2007e4;
 Sat, 04 Apr 2020 23:35:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=OM415BWIPu8YlqBvqIJDfY/g8w67HvJbeoiWbZfXPXI=; b=2v5P7tjJujE9NuXe2btx97gCGE
 saU5CXFYGtWigrsOP6lyZaezLDdYEE4HciCSJMZBANHNxiuWd4ywRbRZsUxoIqZgZvNhGgki85HUV
 41ijS/rQjDolnFfGM8ZR+YPCE3YD4/8EyOdjRQ56KiVV4H0aJOam9Dbe+QvzAI3shTVM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsKG-0003uU-82
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsKG-0001SK-7D
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsKG-0001SK-7D@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:35:44 +0000
Subject: [Xen-changelog] [xen master] x86/ucode: Drop ops->free_patch()
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDZiODgzNmFhNjU5NDdlNThiYTJiNTg1NzNjZWNlMDM3NTRhZDY4ZjYKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDE2OjMyOjE2IDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGU6IERyb3Agb3BzLT5mcmVlX3BhdGNoKCkKICAgIAog
ICAgV2l0aCB0aGUgbmV3bHkgY2xlYW5lZCB1cCB2ZW5kb3IgbG9naWMsIGVhY2ggc3RydWN0IG1p
Y3JvY29kZV9wYXRjaCBpcyBhCiAgICB0cml2aWFsIG9iamVjdCBpbiBtZW1vcnkgd2l0aCBubyBk
ZXBlbmRlbnQgYWxsb2NhdGlvbnMuCiAgICAKICAgIFRoaXMgaXMgdW5saWtlbHkgdG8gY2hhbmdl
IG1vdmluZyBmb3J3YXJkcywgYW5kIGZ1bmN0aW9uIHBvaW50ZXJzIGFyZQogICAgZXhwZW5zaXZl
IGluIHRoZSBkYXlzIG9mIHJldHBvbGluZS4gIE1vdmUgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIHhm
cmVlKCkgYmFjawogICAgdG8gY29tbW9uIGNvZGUuICBJZiB0aGUgbmVlZCBkb2VzIGFyaXNlIGlu
IHRoZSBmdXR1cmUsIHdlIGNhbiBjb25zaWRlcgogICAgcmVpbnRyb2R1Y2luZyB0aGUgaG9vay4K
ICAgIAogICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0
cml4LmNvbT4KICAgIFJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+
Ci0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1kLmMgICAgIHwgNiAtLS0tLS0KIHhl
bi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUuYyAgICB8IDQgKystLQogeGVuL2FyY2gveDg2
L2NwdS9taWNyb2NvZGUvaW50ZWwuYyAgIHwgNiAtLS0tLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWlj
cm9jb2RlL3ByaXZhdGUuaCB8IDUgKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25z
KCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3Jv
Y29kZS9hbWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCmluZGV4IDBjYTBl
OWEwMzguLmUyM2JkZWY2ZjIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2Rl
L2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2FtZC5jCkBAIC0xODgsMTEg
KzE4OCw2IEBAIHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgbWljcm9jb2RlX2Zp
dHMoCiAgICAgcmV0dXJuIE5FV19VQ09ERTsKIH0KIAotc3RhdGljIHZvaWQgZnJlZV9wYXRjaChz
dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKLXsKLSAgICB4ZnJlZShwYXRjaCk7Ci19Ci0K
IHN0YXRpYyBlbnVtIG1pY3JvY29kZV9tYXRjaF9yZXN1bHQgY29tcGFyZV9oZWFkZXIoCiAgICAg
Y29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbmV3LCBjb25zdCBzdHJ1Y3QgbWljcm9jb2Rl
X3BhdGNoICpvbGQpCiB7CkBAIC00MTgsNiArNDEzLDUgQEAgY29uc3Qgc3RydWN0IG1pY3JvY29k
ZV9vcHMgYW1kX3Vjb2RlX29wcyA9IHsKICAgICAuc3RhcnRfdXBkYXRlICAgICAgICAgICAgICAg
ICAgICAgPSBzdGFydF91cGRhdGUsCiAgICAgLmVuZF91cGRhdGVfcGVyY3B1ICAgICAgICAgICAg
ICAgID0gc3ZtX2hvc3Rfb3N2d19pbml0LAogI2VuZGlmCi0gICAgLmZyZWVfcGF0Y2ggICAgICAg
ICAgICAgICAgICAgICAgID0gZnJlZV9wYXRjaCwKICAgICAuY29tcGFyZV9wYXRjaCAgICAgICAg
ICAgICAgICAgICAgPSBjb21wYXJlX3BhdGNoLAogfTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4
Ni9jcHUvbWljcm9jb2RlL2NvcmUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUu
YwppbmRleCBiM2U1OTEzZDQ5Li41M2U0NDdlYTlhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9jb3JlLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvY29y
ZS5jCkBAIC0yNDMsOSArMjQzLDkgQEAgc3RhdGljIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBh
cnNlX2Jsb2IoY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKQogICAgIHJldHVybiBOVUxMOwog
fQogCi1zdGF0aWMgdm9pZCBtaWNyb2NvZGVfZnJlZV9wYXRjaChzdHJ1Y3QgbWljcm9jb2RlX3Bh
dGNoICptaWNyb2NvZGVfcGF0Y2gpCitzdGF0aWMgdm9pZCBtaWNyb2NvZGVfZnJlZV9wYXRjaChz
dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCkKIHsKLSAgICBtaWNyb2NvZGVfb3BzLT5mcmVl
X3BhdGNoKG1pY3JvY29kZV9wYXRjaCk7CisgICAgeGZyZWUocGF0Y2gpOwogfQogCiAvKiBSZXR1
cm4gdHJ1ZSBpZiBjYWNoZSBnZXRzIHVwZGF0ZWQuIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlICov
CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jIGIveGVuL2Fy
Y2gveDg2L2NwdS9taWNyb2NvZGUvaW50ZWwuYwppbmRleCA5Y2IwNzdiNTgzLi4yOTc0NWVkNTVm
IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRlbC5jCisrKyBiL3hl
bi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMKQEAgLTI0NSwxMSArMjQ1LDYgQEAgc3Rh
dGljIGVudW0gbWljcm9jb2RlX21hdGNoX3Jlc3VsdCBtaWNyb2NvZGVfdXBkYXRlX21hdGNoKAog
ICAgIHJldHVybiBtYy0+cmV2ID4gY3B1X3NpZy0+cmV2ID8gTkVXX1VDT0RFIDogT0xEX1VDT0RF
OwogfQogCi1zdGF0aWMgdm9pZCBmcmVlX3BhdGNoKHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBh
dGNoKQotewotICAgIHhmcmVlKHBhdGNoKTsKLX0KLQogc3RhdGljIGVudW0gbWljcm9jb2RlX21h
dGNoX3Jlc3VsdCBjb21wYXJlX3BhdGNoKAogICAgIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0
Y2ggKm5ldywgY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqb2xkKQogewpAQCAtMzU2LDYg
KzM1MSw1IEBAIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzIGludGVsX3Vjb2RlX29wcyA9IHsK
ICAgICAuY3B1X3JlcXVlc3RfbWljcm9jb2RlICAgICAgICAgICAgPSBjcHVfcmVxdWVzdF9taWNy
b2NvZGUsCiAgICAgLmNvbGxlY3RfY3B1X2luZm8gICAgICAgICAgICAgICAgID0gY29sbGVjdF9j
cHVfaW5mbywKICAgICAuYXBwbHlfbWljcm9jb2RlICAgICAgICAgICAgICAgICAgPSBhcHBseV9t
aWNyb2NvZGUsCi0gICAgLmZyZWVfcGF0Y2ggICAgICAgICAgICAgICAgICAgICAgID0gZnJlZV9w
YXRjaCwKICAgICAuY29tcGFyZV9wYXRjaCAgICAgICAgICAgICAgICAgICAgPSBjb21wYXJlX3Bh
dGNoLAogfTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUu
aCBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUuaAppbmRleCBkMzFiY2YxNGIx
Li44NzhmOGQ4MDVmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9wcml2
YXRlLmgKKysrIGIveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvcHJpdmF0ZS5oCkBAIC0yNSw3
ICsyNSw3IEBAIHN0cnVjdCBtaWNyb2NvZGVfb3BzIHsKICAgICAgKgogICAgICAqIElmIG9uZSBp
cyBmb3VuZCwgYWxsb2NhdGUgYW5kIHJldHVybiBhIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2gKICAg
ICAgKiBlbmNhcHN1bGF0aW5nIHRoZSBhcHByb3ByaWF0ZSBtaWNyb2NvZGUgcGF0Y2guICBEb2Vz
IG5vdCBhbGlhcyB0aGUKLSAgICAgKiBvcmlnaW5hbCBidWZmZXIuCisgICAgICogb3JpZ2luYWwg
YnVmZmVyLiAgTXVzdCBiZSBzdWl0YWJsZSB0byBiZSBmcmVlZCB3aXRoIGEgc2luZ2xlIHhmcmVl
KCkuCiAgICAgICoKICAgICAgKiBJZiBvbmUgaXMgbm90IGZvdW5kLCAobm90aGluZyBtYXRjaGVz
IHRoZSBjdXJyZW50IENQVSksIHJldHVybiBOVUxMLgogICAgICAqIEFsc28gbWF5IHJldHVybiBF
UlJfUFRSKC1lcnIpLCBlLmcuIGJhZCBjb250YWluZXIsIG91dCBvZiBtZW1vcnkuCkBAIC01Niw5
ICs1Niw2IEBAIHN0cnVjdCBtaWNyb2NvZGVfb3BzIHsKICAgICAgKi8KICAgICB2b2lkICgqZW5k
X3VwZGF0ZV9wZXJjcHUpKHZvaWQpOwogCi0gICAgLyogRnJlZSBhIHBhdGNoIHByZXZpb3VzbHkg
YWxsb2NhdGVkIGJ5IGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpLiAqLwotICAgIHZvaWQgKCpmcmVl
X3BhdGNoKShzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCk7Ci0KICAgICAvKgogICAgICAq
IEdpdmVuIHR3byBwYXRjaGVzLCBhcmUgdGhleSBib3RoIGFwcGxpY2FibGUgdG8gdGhlIGN1cnJl
bnQgQ1BVLCBhbmQgaXMKICAgICAgKiBuZXcgYSBoaWdoZXIgcmV2aXNpb24gdGhhbiBvbGQ/Ci0t
CmdlbmVyYXRlZCBieSBnaXQtcGF0Y2hib3QgZm9yIC9ob21lL3hlbi9naXQveGVuLmdpdCNtYXN0
ZXIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1j
aGFuZ2Vsb2cgbWFpbGluZyBsaXN0Clhlbi1jaGFuZ2Vsb2dAbGlzdHMueGVucHJvamVjdC5vcmcK
aHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy94ZW4tY2hhbmdlbG9n

From xen-changelog-bounces@lists.xenproject.org Sat Apr 04 23:35:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 04 Apr 2020 23:35:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jKsKS-0005un-MD; Sat, 04 Apr 2020 23:35:56 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=sZG6=5U=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jKsKR-0005ug-Uv
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:55 +0000
X-Inumbo-ID: 06261acc-76cd-11ea-becc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 06261acc-76cd-11ea-becc-12813bfff9fa;
 Sat, 04 Apr 2020 23:35:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hJnVdL4xCmneFaNUqoLdjKXp8fFMqEXohiwAwuCNo8k=; b=hdG4qjDTMfFbckF/+AjJVBx3j1
 17YHc/N6+g11LOKZrtLBvvTEph+YlxHycdyoN0hJjzbst9m8l6dqcK6qs43qZZ/eOzoBohbNIwjbd
 BLKEP272Dr6wS6GaPZuXm31OUfPxfFUOR5Jbnn6a1m1KL067prQYZbswiw9jG7Jsl+tQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsKQ-0003ui-Ai
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jKsKQ-0001TP-9s
 for xen-changelog@lists.xenproject.org; Sat, 04 Apr 2020 23:35:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Message-Id: <E1jKsKQ-0001TP-9s@xenbits.xenproject.org>
Date: Sat, 04 Apr 2020 23:35:54 +0000
Subject: [Xen-changelog] [xen master] x86/ucode: Simplify the
 ops->collect_cpu_info() API
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

Y29tbWl0IDk5MGI2ZTM4ZDkzYzZlNjBmOWQ4MWU4YjcxZGRmZDIwOWZjYTAwYmQKQXV0aG9yOiAg
ICAgQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQXV0aG9yRGF0ZTog
V2VkIEFwciAxIDE2OjE4OjMyIDIwMjAgKzAxMDAKQ29tbWl0OiAgICAgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ29tbWl0RGF0ZTogRnJpIEFwciAzIDIwOjExOjQ2
IDIwMjAgKzAxMDAKCiAgICB4ODYvdWNvZGU6IFNpbXBsaWZ5IHRoZSBvcHMtPmNvbGxlY3RfY3B1
X2luZm8oKSBBUEkKICAgIAogICAgQWxsIGNhbGxlcnMgcGFzcyAmdGhpc19jcHUoY3B1X3NpZykg
Zm9yIHRoZSBjcHVfc2lnIHBhcmFtZXRlciwgYW5kIGFsbAogICAgaW1wbGVtZW50YXRpb25zIHVu
Y29uZGl0aW9uYWxseSByZXR1cm4gMC4gIFNpbXBsaWZ5IGl0IHRvIGJlIHZvaWQuCiAgICAKICAg
IERyb3AgdGhlIGxvbmctc3RhbGUgY29tbWVudCBvbiB0aGUgQU1EIHNpZGUsIHdob3NlIGNvdW50
ZXJwYXJ0IGluCiAgICBzdGFydF91cGRhdGUoKSB1c2VkIHRvIGJlICJjb2xsZWN0X2NwdV9pbmZv
KCkgZG9lc24ndCBmYWlsIHNvIHdlJ3JlIGZpbmUiLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBB
bmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgogICAgUmV2aWV3ZWQtYnk6
IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21p
Y3JvY29kZS9hbWQuYyAgICAgfCAgNyArKystLS0tCiB4ZW4vYXJjaC94ODYvY3B1L21pY3JvY29k
ZS9jb3JlLmMgICAgfCAxNCArKysrKystLS0tLS0tLQogeGVuL2FyY2gveDg2L2NwdS9taWNyb2Nv
ZGUvaW50ZWwuYyAgIHwgIDUgKystLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZh
dGUuaCB8ICA3ICsrKysrLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTcg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvYW1k
LmMgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwppbmRleCBlMjNiZGVmNmYyLi4x
M2JmOWY0ZGVlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwor
KysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9hbWQuYwpAQCAtOTAsOSArOTAsMTAgQEAg
c3RhdGljIHN0cnVjdCB7CiAgICAgdWludDE2X3QgaWQ7CiB9IGVxdWl2IF9fcmVhZF9tb3N0bHk7
CiAKLS8qIFNlZSBjb21tZW50IGluIHN0YXJ0X3VwZGF0ZSgpIGZvciBjYXNlcyB3aGVuIHRoaXMg
cm91dGluZSBmYWlscyAqLwotc3RhdGljIGludCBjb2xsZWN0X2NwdV9pbmZvKHN0cnVjdCBjcHVf
c2lnbmF0dXJlICpjc2lnKQorc3RhdGljIHZvaWQgY29sbGVjdF9jcHVfaW5mbyh2b2lkKQogewor
ICAgIHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnID0gJnRoaXNfY3B1KGNwdV9zaWcpOworCiAg
ICAgbWVtc2V0KGNzaWcsIDAsIHNpemVvZigqY3NpZykpOwogCiAgICAgY3NpZy0+c2lnID0gY3B1
aWRfZWF4KDEpOwpAQCAtMTAwLDggKzEwMSw2IEBAIHN0YXRpYyBpbnQgY29sbGVjdF9jcHVfaW5m
byhzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqY3NpZykKIAogICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6
IENQVSVkIGNvbGxlY3RfY3B1X2luZm86IHBhdGNoX2lkPSUjeFxuIiwKICAgICAgICAgICAgICBz
bXBfcHJvY2Vzc29yX2lkKCksIGNzaWctPnJldik7Ci0KLSAgICByZXR1cm4gMDsKIH0KIAogc3Rh
dGljIGJvb2xfdCB2ZXJpZnlfcGF0Y2hfc2l6ZSh1aW50MzJfdCBwYXRjaF9zaXplKQpkaWZmIC0t
Z2l0IGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvY29yZS5jIGIveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvY29yZS5jCmluZGV4IDUzZTQ0N2VhOWEuLmEyMjBmOTA4YjggMTAwNjQ0Ci0t
LSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2NvcmUuYworKysgYi94ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9jb3JlLmMKQEAgLTIzNywxMCArMjM3LDkgQEAgc3RhdGljIGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm5taV9wYXRjaCA9IFpFUk9fQkxPQ0tfUFRSOwogICovCiBz
dGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGFyc2VfYmxvYihjb25zdCBjaGFyICpidWYs
IHNpemVfdCBsZW4pCiB7Ci0gICAgaWYgKCBsaWtlbHkoIW1pY3JvY29kZV9vcHMtPmNvbGxlY3Rf
Y3B1X2luZm8oJnRoaXNfY3B1KGNwdV9zaWcpKSkgKQotICAgICAgICByZXR1cm4gbWljcm9jb2Rl
X29wcy0+Y3B1X3JlcXVlc3RfbWljcm9jb2RlKGJ1ZiwgbGVuKTsKKyAgICBtaWNyb2NvZGVfb3Bz
LT5jb2xsZWN0X2NwdV9pbmZvKCk7CiAKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gbWlj
cm9jb2RlX29wcy0+Y3B1X3JlcXVlc3RfbWljcm9jb2RlKGJ1ZiwgbGVuKTsKIH0KIAogc3RhdGlj
IHZvaWQgbWljcm9jb2RlX2ZyZWVfcGF0Y2goc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gp
CkBAIC0zMDYsMTAgKzMwNSw5IEBAIHN0YXRpYyBib29sIHdhaXRfY3B1X2NhbGxvdXQodW5zaWdu
ZWQgaW50IG5yKQogICovCiBzdGF0aWMgaW50IG1pY3JvY29kZV91cGRhdGVfY3B1KGNvbnN0IHN0
cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewotICAgIGludCBlcnIgPSBtaWNyb2NvZGVf
b3BzLT5jb2xsZWN0X2NwdV9pbmZvKCZ0aGlzX2NwdShjcHVfc2lnKSk7CisgICAgaW50IGVycjsK
IAotICAgIGlmICggdW5saWtlbHkoZXJyKSApCi0gICAgICAgIHJldHVybiBlcnI7CisgICAgbWlj
cm9jb2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbygpOwogCiAgICAgc3Bpbl9sb2NrKCZtaWNyb2Nv
ZGVfbXV0ZXgpOwogICAgIGlmICggcGF0Y2ggKQpAQCAtNzM3LDcgKzczNSw3IEBAIGludCBtaWNy
b2NvZGVfdXBkYXRlX29uZShib29sIHN0YXJ0X3VwZGF0ZSkKICAgICBpZiAoICFtaWNyb2NvZGVf
b3BzICkKICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwogCi0gICAgbWljcm9jb2RlX29wcy0+
Y29sbGVjdF9jcHVfaW5mbygmdGhpc19jcHUoY3B1X3NpZykpOworICAgIG1pY3JvY29kZV9vcHMt
PmNvbGxlY3RfY3B1X2luZm8oKTsKIAogICAgIGlmICggc3RhcnRfdXBkYXRlICYmIG1pY3JvY29k
ZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCiAgICAgewpAQCAtODE5LDcgKzgxNyw3IEBAIGludCBfX2lu
aXQgZWFybHlfbWljcm9jb2RlX2luaXQodm9pZCkKICAgICAgICAgcmV0dXJuIC1FTk9ERVY7CiAg
ICAgfQogCi0gICAgbWljcm9jb2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbygmdGhpc19jcHUoY3B1
X3NpZykpOworICAgIG1pY3JvY29kZV9vcHMtPmNvbGxlY3RfY3B1X2luZm8oKTsKIAogICAgIGlm
ICggdWNvZGVfbW9kLm1vZF9lbmQgfHwgdWNvZGVfYmxvYi5zaXplICkKICAgICAgICAgcmMgPSBl
YXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdSgpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvbWljcm9jb2RlL2ludGVsLmMK
aW5kZXggMjk3NDVlZDU1Zi4uYTlmNGQ2ZTgyOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Nw
dS9taWNyb2NvZGUvaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9pbnRl
bC5jCkBAIC0xMTUsOCArMTE1LDkgQEAgc3RhdGljIGJvb2wgc2lnbmF0dXJlX21hdGNoZXMoY29u
c3Qgc3RydWN0IGNwdV9zaWduYXR1cmUgKmNwdV9zaWcsCiAgICAgcmV0dXJuIGNwdV9zaWctPnBm
ICYgdWNvZGVfcGY7CiB9CiAKLXN0YXRpYyBpbnQgY29sbGVjdF9jcHVfaW5mbyhzdHJ1Y3QgY3B1
X3NpZ25hdHVyZSAqY3NpZykKK3N0YXRpYyB2b2lkIGNvbGxlY3RfY3B1X2luZm8odm9pZCkKIHsK
KyAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqY3NpZyA9ICZ0aGlzX2NwdShjcHVfc2lnKTsKICAg
ICB1aW50NjRfdCBtc3JfY29udGVudDsKIAogICAgIG1lbXNldChjc2lnLCAwLCBzaXplb2YoKmNz
aWcpKTsKQEAgLTEzMyw4ICsxMzQsNiBAQCBzdGF0aWMgaW50IGNvbGxlY3RfY3B1X2luZm8oc3Ry
dWN0IGNwdV9zaWduYXR1cmUgKmNzaWcpCiAgICAgY3NpZy0+cmV2ID0gKHVpbnQzMl90KShtc3Jf
Y29udGVudCA+PiAzMik7CiAgICAgcHJfZGVidWcoIm1pY3JvY29kZTogY29sbGVjdF9jcHVfaW5m
byA6IHNpZz0lI3gsIHBmPSUjeCwgcmV2PSUjeFxuIiwKICAgICAgICAgICAgICBjc2lnLT5zaWcs
IGNzaWctPnBmLCBjc2lnLT5yZXYpOwotCi0gICAgcmV0dXJuIDA7CiB9CiAKIC8qCmRpZmYgLS1n
aXQgYS94ZW4vYXJjaC94ODYvY3B1L21pY3JvY29kZS9wcml2YXRlLmggYi94ZW4vYXJjaC94ODYv
Y3B1L21pY3JvY29kZS9wcml2YXRlLmgKaW5kZXggODc4ZjhkODA1Zi4uZGM1YzdhODFhZSAxMDA2
NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9taWNyb2NvZGUvcHJpdmF0ZS5oCisrKyBiL3hlbi9h
cmNoL3g4Ni9jcHUvbWljcm9jb2RlL3ByaXZhdGUuaApAQCAtMzMsOCArMzMsMTEgQEAgc3RydWN0
IG1pY3JvY29kZV9vcHMgewogICAgIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKigqY3B1X3JlcXVl
c3RfbWljcm9jb2RlKShjb25zdCB2b2lkICpidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKTsKIAotICAgIC8qIE9idGFp
biBtaWNyb2NvZGUtcmVsZXZhbnQgZGV0YWlscyBmb3IgdGhlIGN1cnJlbnQgQ1BVLiAqLwotICAg
IGludCAoKmNvbGxlY3RfY3B1X2luZm8pKHN0cnVjdCBjcHVfc2lnbmF0dXJlICpjc2lnKTsKKyAg
ICAvKgorICAgICAqIE9idGFpbiBtaWNyb2NvZGUtcmVsZXZhbnQgZGV0YWlscyBmb3IgdGhlIGN1
cnJlbnQgQ1BVLiAgUmVzdWx0cyBpbgorICAgICAqIHBlcl9jcHUoY3B1X3NpZykuCisgICAgICov
CisgICAgdm9pZCAoKmNvbGxlY3RfY3B1X2luZm8pKHZvaWQpOwogCiAgICAgLyoKICAgICAgKiBB
dHRlbXB0IHRvIGxvYWQgdGhlIHByb3ZpZGVkIHBhdGNoIGludG8gdGhlIENQVS4gIFJldHVybnMg
YW4gZXJyb3IgaWYKLS0KZ2VuZXJhdGVkIGJ5IGdpdC1wYXRjaGJvdCBmb3IgL2hvbWUveGVuL2dp
dC94ZW4uZ2l0I21hc3RlcgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KWGVuLWNoYW5nZWxvZyBtYWlsaW5nIGxpc3QKWGVuLWNoYW5nZWxvZ0BsaXN0cy54
ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL3hlbi1jaGFuZ2Vsb2c=

From xen-changelog-bounces@lists.xenproject.org Tue Apr 07 20:11:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 07 Apr 2020 20:11:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jLuYt-00065O-Na; Tue, 07 Apr 2020 20:11:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=UCFj=5X=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jLuYs-00065J-Kl
 for xen-changelog@lists.xenproject.org; Tue, 07 Apr 2020 20:11:06 +0000
X-Inumbo-ID: e8ff7c16-790b-11ea-814a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e8ff7c16-790b-11ea-814a-12813bfff9fa;
 Tue, 07 Apr 2020 20:11:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=wRw7pMb0Pd95AaigiSATkTVUm3+ZIhyscRNfDvTwKX0=; b=HCRISaCUd53g1na9uI0OeDbTR0
 aCmRTqAaTQpunaCqtKU/IQtEq5wqGclOlF2CKbua6IonNKZwWg/hUSAo/Wq7rJKswDmjnsZa3YWSE
 wna1pmD74Dck+O0L4oaiSJryvvsaEJGcz4kJ/IDoD7PKXIhDVT3VQNc3wjfieLo8MMg4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jLuYq-0003R8-O6
 for xen-changelog@lists.xenproject.org; Tue, 07 Apr 2020 20:11:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jLuYq-0000pW-N2
 for xen-changelog@lists.xenproject.org; Tue, 07 Apr 2020 20:11:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] config: use mini-os master for unstable
Message-Id: <E1jLuYq-0000pW-N2@xenbits.xenproject.org>
Date: Tue, 07 Apr 2020 20:11:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e013e8514389b739153016349e49f5a78e34ddf0
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Tue Apr 7 15:48:31 2020 +0200
Commit:     Wei Liu <wl@xen.org>
CommitDate: Tue Apr 7 21:05:54 2020 +0100

    config: use mini-os master for unstable
    
    We haven't used mini-os master for about 2 years now due to a stubdom
    test failing [1]. Booting a guest with mini-os master used for building
    stubdom didn't reveal any problem, so use master for unstable in order
    to let OSStest find any problems not showing up in the local test.
    
    [1]: https://lists.xen.org/archives/html/minios-devel/2018-04/msg00015.html
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
---
 Config.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Config.mk b/Config.mk
index dc6e7d03df..0f303c79b2 100644
--- a/Config.mk
+++ b/Config.mk
@@ -245,7 +245,7 @@ MINIOS_UPSTREAM_URL ?= git://xenbits.xen.org/mini-os.git
 endif
 OVMF_UPSTREAM_REVISION ?= 20d2e5a125e34fc8501026613a71549b2a1a3e54
 QEMU_UPSTREAM_REVISION ?= master
-MINIOS_UPSTREAM_REVISION ?= 0b4b7897e08b967a09bed2028a79fabff82342dd
+MINIOS_UPSTREAM_REVISION ?= master
 
 SEABIOS_UPSTREAM_REVISION ?= rel-1.13.0
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 08 11:22:12 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2020 11:22:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jM8mX-0003jK-Au; Wed, 08 Apr 2020 11:22:09 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=gWv0=5Y=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jM8mW-0003jF-Ac
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:08 +0000
X-Inumbo-ID: 2d3e178c-798b-11ea-81ce-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2d3e178c-798b-11ea-81ce-12813bfff9fa;
 Wed, 08 Apr 2020 11:22:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=PvW/YyS7mMUbQUkfw0ZVggOCjM4iNqWXBEwSaTIQRoo=; b=uFaRjCWblUNK/DLtO1Y4vSASqS
 Pe/cmqw7eR4a/nYTvfmX77HpKhhv5bL1mwHl2Gpw05bZrIN6ATZydb3uIb+nMAWkMYdmM7BR+YjUx
 zenMtUbDL7vNAZLxmMALrqySnqahtFlf6Oe00u9rlIqzCLTcjljFxzgsdtbyaurLrsP4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jM8mT-0002Rl-BY
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jM8mT-0004vp-AC
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] mem_sharing: VM forking
Message-Id: <E1jM8mT-0004vp-AC@xenbits.xenproject.org>
Date: Wed, 08 Apr 2020 11:22:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 41548c5472a3ea514cb0173f2576096970358263
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Wed Apr 8 12:59:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 8 12:59:58 2020 +0200

    mem_sharing: VM forking
    
    VM forking is the process of creating a domain with an empty memory space and a
    parent domain specified from which to populate the memory when necessary. For
    the new domain to be functional the VM state is copied over as part of the fork
    operation (HVM params, hap allocation, etc).
    
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/x86/domain.c             |  13 ++
 xen/arch/x86/hvm/hvm.c            |   4 +-
 xen/arch/x86/mm/hap/hap.c         |   3 +-
 xen/arch/x86/mm/mem_sharing.c     | 342 ++++++++++++++++++++++++++++++++++++++
 xen/arch/x86/mm/p2m.c             |   9 +-
 xen/include/asm-arm/page.h        |   1 +
 xen/include/asm-x86/hap.h         |   1 +
 xen/include/asm-x86/hvm/hvm.h     |   2 +
 xen/include/asm-x86/mem_sharing.h |  18 ++
 xen/include/asm-x86/page.h        |   1 +
 xen/include/public/memory.h       |   5 +
 xen/include/xen/sched.h           |   1 +
 12 files changed, 395 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 683bc619aa..a008d7df1c 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -2211,6 +2211,19 @@ int domain_relinquish_resources(struct domain *d)
             ret = relinquish_shared_pages(d);
             if ( ret )
                 return ret;
+
+            /*
+             * If the domain is forked, decrement the parent's pause count
+             * and release the domain.
+             */
+            if ( mem_sharing_is_fork(d) )
+            {
+                struct domain *parent = d->parent;
+
+                d->parent = NULL;
+                domain_unpause(parent);
+                put_domain(parent);
+            }
         }
 #endif
 
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index a3d115b650..304b3d1562 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1917,7 +1917,7 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla,
     }
 #endif
 
-    /* Spurious fault? PoD and log-dirty also take this path. */
+    /* Spurious fault? PoD, log-dirty and VM forking also take this path. */
     if ( p2m_is_ram(p2mt) )
     {
         rc = 1;
@@ -4377,7 +4377,7 @@ static int hvm_allow_get_param(struct domain *d,
     return rc;
 }
 
-static int hvm_get_param(struct domain *d, uint32_t index, uint64_t *value)
+int hvm_get_param(struct domain *d, uint32_t index, uint64_t *value)
 {
     int rc;
 
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index a6d5e39b02..814d0c3253 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -321,8 +321,7 @@ static void hap_free_p2m_page(struct domain *d, struct page_info *pg)
 }
 
 /* Return the size of the pool, rounded up to the nearest MB */
-static unsigned int
-hap_get_allocation(struct domain *d)
+unsigned int hap_get_allocation(struct domain *d)
 {
     unsigned int pg = d->arch.paging.hap.total_pages
         + d->arch.paging.hap.p2m_pages;
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index f49f27a3ef..64cd706e5a 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -22,6 +22,7 @@
 
 #include <xen/types.h>
 #include <xen/domain_page.h>
+#include <xen/event.h>
 #include <xen/spinlock.h>
 #include <xen/rwlock.h>
 #include <xen/mm.h>
@@ -36,6 +37,8 @@
 #include <asm/altp2m.h>
 #include <asm/atomic.h>
 #include <asm/event.h>
+#include <asm/hap.h>
+#include <asm/hvm/hvm.h>
 #include <xsm/xsm.h>
 
 #include "mm-locks.h"
@@ -1443,6 +1446,309 @@ static inline int mem_sharing_control(struct domain *d, bool enable)
     return 0;
 }
 
+/*
+ * Forking a page only gets called when the VM faults due to no entry being
+ * in the EPT for the access. Depending on the type of access we either
+ * populate the physmap with a shared entry for read-only access or
+ * fork the page if its a write access.
+ *
+ * The client p2m is already locked so we only need to lock
+ * the parent's here.
+ */
+int mem_sharing_fork_page(struct domain *d, gfn_t gfn, bool unsharing)
+{
+    int rc = -ENOENT;
+    shr_handle_t handle;
+    struct domain *parent = d->parent;
+    struct p2m_domain *p2m;
+    unsigned long gfn_l = gfn_x(gfn);
+    mfn_t mfn, new_mfn;
+    p2m_type_t p2mt;
+    struct page_info *page;
+
+    if ( !mem_sharing_is_fork(d) )
+        return -ENOENT;
+
+    if ( !unsharing )
+    {
+        /* For read-only accesses we just add a shared entry to the physmap */
+        while ( parent )
+        {
+            if ( !(rc = nominate_page(parent, gfn, 0, &handle)) )
+                break;
+
+            parent = parent->parent;
+        }
+
+        if ( !rc )
+        {
+            /* The client's p2m is already locked */
+            p2m = p2m_get_hostp2m(parent);
+
+            p2m_lock(p2m);
+            rc = add_to_physmap(parent, gfn_l, handle, d, gfn_l, false);
+            p2m_unlock(p2m);
+
+            if ( !rc )
+                return 0;
+        }
+    }
+
+    /*
+     * If it's a write access (ie. unsharing) or if adding a shared entry to
+     * the physmap failed we'll fork the page directly.
+     */
+    p2m = p2m_get_hostp2m(d);
+    parent = d->parent;
+
+    while ( parent )
+    {
+        mfn = get_gfn_query(parent, gfn_l, &p2mt);
+
+        /* We can't fork grant memory from the parent, only regular ram */
+        if ( mfn_valid(mfn) && p2m_is_ram(p2mt) )
+            break;
+
+        put_gfn(parent, gfn_l);
+        parent = parent->parent;
+    }
+
+    if ( !parent )
+        return -ENOENT;
+
+    if ( !(page = alloc_domheap_page(d, 0)) )
+    {
+        put_gfn(parent, gfn_l);
+        return -ENOMEM;
+    }
+
+    new_mfn = page_to_mfn(page);
+    copy_domain_page(new_mfn, mfn);
+    set_gpfn_from_mfn(mfn_x(new_mfn), gfn_l);
+
+    put_gfn(parent, gfn_l);
+
+    return p2m->set_entry(p2m, gfn, new_mfn, PAGE_ORDER_4K, p2m_ram_rw,
+                          p2m->default_access, -1);
+}
+
+static int bring_up_vcpus(struct domain *cd, struct domain *d)
+{
+    unsigned int i;
+    int ret = -EINVAL;
+
+    if ( d->max_vcpus != cd->max_vcpus ||
+        (ret = cpupool_move_domain(cd, d->cpupool)) )
+        return ret;
+
+    for ( i = 0; i < cd->max_vcpus; i++ )
+    {
+        if ( !d->vcpu[i] || cd->vcpu[i] )
+            continue;
+
+        if ( !vcpu_create(cd, i) )
+            return -EINVAL;
+    }
+
+    domain_update_node_affinity(cd);
+    return 0;
+}
+
+static int copy_vcpu_settings(struct domain *cd, const struct domain *d)
+{
+    unsigned int i;
+    struct p2m_domain *p2m = p2m_get_hostp2m(cd);
+    int ret = -EINVAL;
+
+    for ( i = 0; i < cd->max_vcpus; i++ )
+    {
+        const struct vcpu *d_vcpu = d->vcpu[i];
+        struct vcpu *cd_vcpu = cd->vcpu[i];
+        mfn_t vcpu_info_mfn;
+
+        if ( !d_vcpu || !cd_vcpu )
+            continue;
+
+        /* Copy & map in the vcpu_info page if the guest uses one */
+        vcpu_info_mfn = d_vcpu->vcpu_info_mfn;
+        if ( !mfn_eq(vcpu_info_mfn, INVALID_MFN) )
+        {
+            mfn_t new_vcpu_info_mfn = cd_vcpu->vcpu_info_mfn;
+
+            /* Allocate & map the page for it if it hasn't been already */
+            if ( mfn_eq(new_vcpu_info_mfn, INVALID_MFN) )
+            {
+                gfn_t gfn = mfn_to_gfn(d, vcpu_info_mfn);
+                unsigned long gfn_l = gfn_x(gfn);
+                struct page_info *page;
+
+                if ( !(page = alloc_domheap_page(cd, 0)) )
+                    return -ENOMEM;
+
+                new_vcpu_info_mfn = page_to_mfn(page);
+                set_gpfn_from_mfn(mfn_x(new_vcpu_info_mfn), gfn_l);
+
+                ret = p2m->set_entry(p2m, gfn, new_vcpu_info_mfn,
+                                     PAGE_ORDER_4K, p2m_ram_rw,
+                                     p2m->default_access, -1);
+                if ( ret )
+                    return ret;
+
+                ret = map_vcpu_info(cd_vcpu, gfn_l,
+                                    PAGE_OFFSET(d_vcpu->vcpu_info));
+                if ( ret )
+                    return ret;
+            }
+
+            copy_domain_page(new_vcpu_info_mfn, vcpu_info_mfn);
+        }
+
+        /*
+         * TODO: to support VMs with PV interfaces copy additional
+         * settings here, such as PV timers.
+         */
+    }
+
+    return 0;
+}
+
+static int fork_hap_allocation(struct domain *cd, struct domain *d)
+{
+    int rc;
+    bool preempted;
+    unsigned long mb = hap_get_allocation(d);
+
+    if ( mb == hap_get_allocation(cd) )
+        return 0;
+
+    paging_lock(cd);
+    rc = hap_set_allocation(cd, mb << (20 - PAGE_SHIFT), &preempted);
+    paging_unlock(cd);
+
+    return preempted ? -ERESTART : rc;
+}
+
+static void copy_tsc(struct domain *cd, struct domain *d)
+{
+    uint32_t tsc_mode;
+    uint32_t gtsc_khz;
+    uint32_t incarnation;
+    uint64_t elapsed_nsec;
+
+    tsc_get_info(d, &tsc_mode, &elapsed_nsec, &gtsc_khz, &incarnation);
+    /* Don't bump incarnation on set */
+    tsc_set_info(cd, tsc_mode, elapsed_nsec, gtsc_khz, incarnation - 1);
+}
+
+static int copy_special_pages(struct domain *cd, struct domain *d)
+{
+    mfn_t new_mfn, old_mfn;
+    struct p2m_domain *p2m = p2m_get_hostp2m(cd);
+    static const unsigned int params[] =
+    {
+        HVM_PARAM_STORE_PFN,
+        HVM_PARAM_IOREQ_PFN,
+        HVM_PARAM_BUFIOREQ_PFN,
+        HVM_PARAM_CONSOLE_PFN
+    };
+    unsigned int i;
+    int rc;
+
+    for ( i = 0; i < ARRAY_SIZE(params); i++ )
+    {
+        p2m_type_t t;
+        uint64_t value = 0;
+        struct page_info *page;
+
+        if ( hvm_get_param(d, params[i], &value) || !value )
+            continue;
+
+        old_mfn = get_gfn_query_unlocked(d, value, &t);
+        new_mfn = get_gfn_query_unlocked(cd, value, &t);
+
+        /* Allocate the page and map it in if it's not present */
+        if ( mfn_eq(new_mfn, INVALID_MFN) )
+        {
+            if ( !(page = alloc_domheap_page(cd, 0)) )
+                return -ENOMEM;
+
+            new_mfn = page_to_mfn(page);
+            set_gpfn_from_mfn(mfn_x(new_mfn), value);
+
+            rc = p2m->set_entry(p2m, _gfn(value), new_mfn, PAGE_ORDER_4K,
+                                p2m_ram_rw, p2m->default_access, -1);
+            if ( rc )
+                return rc;
+        }
+
+        copy_domain_page(new_mfn, old_mfn);
+    }
+
+    old_mfn = _mfn(virt_to_mfn(d->shared_info));
+    new_mfn = _mfn(virt_to_mfn(cd->shared_info));
+    copy_domain_page(new_mfn, old_mfn);
+
+    return 0;
+}
+
+static int copy_settings(struct domain *cd, struct domain *d)
+{
+    int rc;
+
+    if ( (rc = copy_vcpu_settings(cd, d)) )
+        return rc;
+
+    if ( (rc = hvm_copy_context_and_params(cd, d)) )
+        return rc;
+
+    if ( (rc = copy_special_pages(cd, d)) )
+        return rc;
+
+    copy_tsc(cd, d);
+
+    return rc;
+}
+
+static int fork(struct domain *cd, struct domain *d)
+{
+    int rc = -EBUSY;
+
+    if ( !cd->controller_pause_count )
+        return rc;
+
+    if ( !cd->parent )
+    {
+        if ( !get_domain(d) )
+        {
+            ASSERT_UNREACHABLE();
+            return -EBUSY;
+        }
+
+        domain_pause(d);
+        cd->max_pages = d->max_pages;
+        cd->parent = d;
+    }
+
+    /* This is preemptible so it's the first to get done */
+    if ( (rc = fork_hap_allocation(cd, d)) )
+        goto done;
+
+    if ( (rc = bring_up_vcpus(cd, d)) )
+        goto done;
+
+    rc = copy_settings(cd, d);
+
+ done:
+    if ( rc && rc != -ERESTART )
+    {
+        domain_unpause(d);
+        put_domain(d);
+        cd->parent = NULL;
+    }
+
+    return rc;
+}
+
 int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
 {
     int rc;
@@ -1697,6 +2003,42 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         rc = debug_gref(d, mso.u.debug.u.gref);
         break;
 
+    case XENMEM_sharing_op_fork:
+    {
+        struct domain *pd;
+
+        rc = -EINVAL;
+        if ( mso.u.fork.pad[0] || mso.u.fork.pad[1] || mso.u.fork.pad[2] )
+            goto out;
+
+        rc = rcu_lock_live_remote_domain_by_id(mso.u.fork.parent_domain,
+                                               &pd);
+        if ( rc )
+            goto out;
+
+        rc = -EINVAL;
+        if ( pd->max_vcpus != d->max_vcpus )
+        {
+            rcu_unlock_domain(pd);
+            goto out;
+        }
+
+        if ( !mem_sharing_enabled(pd) && (rc = mem_sharing_control(pd, true)) )
+        {
+            rcu_unlock_domain(pd);
+            goto out;
+        }
+
+        rc = fork(d, pd);
+
+        if ( rc == -ERESTART )
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op,
+                                               "lh", XENMEM_sharing_op,
+                                               arg);
+        rcu_unlock_domain(pd);
+        break;
+    }
+
     default:
         rc = -ENOSYS;
         break;
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 3c052de606..b8727e267d 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -509,6 +509,12 @@ mfn_t __get_gfn_type_access(struct p2m_domain *p2m, unsigned long gfn_l,
 
     mfn = p2m->get_entry(p2m, gfn, t, a, q, page_order, NULL);
 
+    /* Check if we need to fork the page */
+    if ( (q & P2M_ALLOC) && p2m_is_hole(*t) &&
+         !mem_sharing_fork_page(p2m->domain, gfn, q & P2M_UNSHARE) )
+        mfn = p2m->get_entry(p2m, gfn, t, a, q, page_order, NULL);
+
+    /* Check if we need to unshare the page */
     if ( (q & P2M_UNSHARE) && p2m_is_shared(*t) )
     {
         ASSERT(p2m_is_hostp2m(p2m));
@@ -588,7 +594,8 @@ struct page_info *p2m_get_page_from_gfn(
             return page;
 
         /* Error path: not a suitable GFN at all */
-        if ( !p2m_is_ram(*t) && !p2m_is_paging(*t) && !p2m_is_pod(*t) )
+        if ( !p2m_is_ram(*t) && !p2m_is_paging(*t) && !p2m_is_pod(*t) &&
+             !mem_sharing_is_fork(p2m->domain) )
             return NULL;
     }
 
diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h
index 37e1d9aadb..4ea8e97247 100644
--- a/xen/include/asm-arm/page.h
+++ b/xen/include/asm-arm/page.h
@@ -12,6 +12,7 @@
 #define PADDR_BITS              40
 #endif
 #define PADDR_MASK              ((1ULL << PADDR_BITS)-1)
+#define PAGE_OFFSET(ptr)        ((vaddr_t)(ptr) & ~PAGE_MASK)
 
 #define VADDR_BITS              32
 #define VADDR_MASK              (~0UL)
diff --git a/xen/include/asm-x86/hap.h b/xen/include/asm-x86/hap.h
index b94bfb4ed0..1bf07e49fe 100644
--- a/xen/include/asm-x86/hap.h
+++ b/xen/include/asm-x86/hap.h
@@ -45,6 +45,7 @@ int   hap_track_dirty_vram(struct domain *d,
 
 extern const struct paging_mode *hap_paging_get_mode(struct vcpu *);
 int hap_set_allocation(struct domain *d, unsigned int pages, bool *preempted);
+unsigned int hap_get_allocation(struct domain *d);
 
 #endif /* XEN_HAP_H */
 
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index b007b2e343..f283c7d187 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -336,6 +336,8 @@ unsigned long hvm_cr4_guest_valid_bits(const struct domain *d, bool restore);
 
 int hvm_copy_context_and_params(struct domain *src, struct domain *dst);
 
+int hvm_get_param(struct domain *d, uint32_t index, uint64_t *value);
+
 #ifdef CONFIG_HVM
 
 #define hvm_get_guest_tsc(v) hvm_get_guest_tsc_fixed(v, 0)
diff --git a/xen/include/asm-x86/mem_sharing.h b/xen/include/asm-x86/mem_sharing.h
index 53b7929d0e..cf7a12f4d2 100644
--- a/xen/include/asm-x86/mem_sharing.h
+++ b/xen/include/asm-x86/mem_sharing.h
@@ -77,6 +77,14 @@ static inline int mem_sharing_unshare_page(struct domain *d,
     return rc;
 }
 
+static inline bool mem_sharing_is_fork(const struct domain *d)
+{
+    return d->parent;
+}
+
+int mem_sharing_fork_page(struct domain *d, gfn_t gfn,
+                          bool unsharing);
+
 /*
  * If called by a foreign domain, possible errors are
  *   -EBUSY -> ring full
@@ -130,6 +138,16 @@ static inline int mem_sharing_notify_enomem(struct domain *d, unsigned long gfn,
     return -EOPNOTSUPP;
 }
 
+static inline bool mem_sharing_is_fork(const struct domain *d)
+{
+    return false;
+}
+
+static inline int mem_sharing_fork_page(struct domain *d, gfn_t gfn, bool lock)
+{
+    return -EOPNOTSUPP;
+}
+
 #endif
 
 #endif /* __MEM_SHARING_H__ */
diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h
index c98d8f5ede..eb73a0fc23 100644
--- a/xen/include/asm-x86/page.h
+++ b/xen/include/asm-x86/page.h
@@ -10,6 +10,7 @@
 #define PAGE_SIZE           (_AC(1,L) << PAGE_SHIFT)
 #define PAGE_MASK           (~(PAGE_SIZE-1))
 #define PAGE_FLAG_MASK      (~0)
+#define PAGE_OFFSET(ptr)    ((unsigned long)(ptr) & ~PAGE_MASK)
 
 #define PAGE_ORDER_4K       0
 #define PAGE_ORDER_2M       9
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index 126d0ff06e..5ee4e0da12 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -482,6 +482,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_mem_access_op_t);
 #define XENMEM_sharing_op_add_physmap       6
 #define XENMEM_sharing_op_audit             7
 #define XENMEM_sharing_op_range_share       8
+#define XENMEM_sharing_op_fork              9
 
 #define XENMEM_SHARING_OP_S_HANDLE_INVALID  (-10)
 #define XENMEM_SHARING_OP_C_HANDLE_INVALID  (-9)
@@ -532,6 +533,10 @@ struct xen_mem_sharing_op {
                 uint32_t gref;     /* IN: gref to debug         */
             } u;
         } debug;
+        struct mem_sharing_op_fork {      /* OP_FORK */
+            domid_t parent_domain;        /* IN: parent's domain id */
+            uint16_t pad[3];              /* Must be set to 0 */
+        } fork;
     } u;
 };
 typedef struct xen_mem_sharing_op xen_mem_sharing_op_t;
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 4b78291d51..195e7ee583 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -481,6 +481,7 @@ struct domain
     /* Memory sharing support */
 #ifdef CONFIG_MEM_SHARING
     struct vm_event_domain *vm_event_share;
+    struct domain *parent; /* VM fork parent */
 #endif
     /* Memory paging support */
 #ifdef CONFIG_HAS_MEM_PAGING
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 08 11:22:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2020 11:22:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jM8mf-0003kW-Cd; Wed, 08 Apr 2020 11:22:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=gWv0=5Y=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jM8me-0003kN-HR
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:16 +0000
X-Inumbo-ID: 3350c296-798b-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3350c296-798b-11ea-9e09-bc764e2007e4;
 Wed, 08 Apr 2020 11:22:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HiVXZe+UMzuY7fy6pZ2GI2re6hM6qHAOnpHFSE85kYY=; b=tFURmlwGJQ9tqaCPMevZ3wVNRM
 EGrbA3VufjCyexzNkSCW8Wb4zGv6QbAC6pDkbWXpHHSgmE4ledlutTKtk785LKKJNpEOJP3hTLlzY
 QHxowiMX1sUIwruR8fGAIgNjfeRrpt62F8sJrNRF8dBj/7qrHZMwl1aN1VP3XdF9PQyQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jM8md-0002Rs-FW
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jM8md-0004wk-E9
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] mem_sharing: reset a fork
Message-Id: <E1jM8md-0004wk-E9@xenbits.xenproject.org>
Date: Wed, 08 Apr 2020 11:22:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c8dbdb32cef8e8ef796c925e91e347ea83735790
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Wed Apr 8 13:03:50 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 8 13:03:50 2020 +0200

    mem_sharing: reset a fork
    
    Implement hypercall that allows a fork to shed all memory that got allocated
    for it during its execution and re-load its vCPU context from the parent VM.
    This allows the forked VM to reset into the same state the parent VM is in a
    faster way then creating a new fork would be. Measurements show about a 2x
    speedup during normal fuzzing operations. Performance may vary depending how
    much memory got allocated for the forked VM. If it has been completely
    deduplicated from the parent VM then creating a new fork would likely be more
    performant.
    
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/mm/mem_sharing.c | 77 +++++++++++++++++++++++++++++++++++++++++++
 xen/include/public/memory.h   |  1 +
 2 files changed, 78 insertions(+)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 64cd706e5a..85951b7bea 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -1749,6 +1749,61 @@ static int fork(struct domain *cd, struct domain *d)
     return rc;
 }
 
+/*
+ * The fork reset operation is intended to be used on short-lived forks only.
+ * There is no hypercall continuation operation implemented for this reason.
+ * For forks that obtain a larger memory footprint it is likely going to be
+ * more performant to create a new fork instead of resetting an existing one.
+ *
+ * TODO: In case this hypercall would become useful on forks with larger memory
+ * footprints the hypercall continuation should be implemented (or if this
+ * feature needs to be become "stable").
+ */
+static int mem_sharing_fork_reset(struct domain *d, struct domain *pd)
+{
+    int rc;
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+    struct page_info *page, *tmp;
+
+    domain_pause(d);
+
+    /* need recursive lock because we will free pages */
+    spin_lock_recursive(&d->page_alloc_lock);
+    page_list_for_each_safe(page, tmp, &d->page_list)
+    {
+        p2m_type_t p2mt;
+        p2m_access_t p2ma;
+        mfn_t mfn = page_to_mfn(page);
+        gfn_t gfn = mfn_to_gfn(d, mfn);
+
+        mfn = __get_gfn_type_access(p2m, gfn_x(gfn), &p2mt, &p2ma,
+                                    0, NULL, false);
+
+        /* only reset pages that are sharable */
+        if ( !p2m_is_sharable(p2mt) )
+            continue;
+
+        /* take an extra reference or just skip if can't for whatever reason */
+        if ( !get_page(page, d) )
+            continue;
+
+        /* forked memory is 4k, not splitting large pages so this must work */
+        rc = p2m->set_entry(p2m, gfn, INVALID_MFN, PAGE_ORDER_4K,
+                            p2m_invalid, p2m_access_rwx, -1);
+        ASSERT(!rc);
+
+        put_page_alloc_ref(page);
+        put_page(page);
+    }
+    spin_unlock_recursive(&d->page_alloc_lock);
+
+    rc = copy_settings(d, pd);
+
+    domain_unpause(d);
+
+    return rc;
+}
+
 int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
 {
     int rc;
@@ -2039,6 +2094,28 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         break;
     }
 
+    case XENMEM_sharing_op_fork_reset:
+    {
+        struct domain *pd;
+
+        rc = -EINVAL;
+        if ( mso.u.fork.pad[0] || mso.u.fork.pad[1] || mso.u.fork.pad[2] )
+            goto out;
+
+        rc = -ENOSYS;
+        if ( !d->parent )
+            goto out;
+
+        rc = rcu_lock_live_remote_domain_by_id(d->parent->domain_id, &pd);
+        if ( rc )
+            goto out;
+
+        rc = mem_sharing_fork_reset(d, pd);
+
+        rcu_unlock_domain(pd);
+        break;
+    }
+
     default:
         rc = -ENOSYS;
         break;
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index 5ee4e0da12..d36d64b8dc 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -483,6 +483,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_mem_access_op_t);
 #define XENMEM_sharing_op_audit             7
 #define XENMEM_sharing_op_range_share       8
 #define XENMEM_sharing_op_fork              9
+#define XENMEM_sharing_op_fork_reset        10
 
 #define XENMEM_SHARING_OP_S_HANDLE_INVALID  (-10)
 #define XENMEM_SHARING_OP_C_HANDLE_INVALID  (-9)
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 08 11:22:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2020 11:22:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jM8mp-0003m5-Fe; Wed, 08 Apr 2020 11:22:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=gWv0=5Y=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jM8mo-0003lr-I0
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:26 +0000
X-Inumbo-ID: 394f343e-798b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 394f343e-798b-11ea-b4f4-bc764e2007e4;
 Wed, 08 Apr 2020 11:22:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=x4TeqkcxBy5TGHzCfrd2AfRrljtWOH2uc8K8YAR99EA=; b=WodUI/009hqdkjK6CqjFgpmjw7
 9I27fTlnOQGh3Iw53GETx4UZ46wsy4tnKPrP+n6P0VhMiDnX78NrwzSaIwNaYpygPeq/un8GbP7lL
 bn0L3gVxQC+S9rzY4kqXbVzD/yw7Rko0oO1gEkNDGj4e5oliGnz8C0/Nd+d+2BbtmT7Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jM8mn-0002S6-JO
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jM8mn-0004yQ-IO
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/HVM: __hvm_copy()'s size parameter is an unsigned
 quantity
Message-Id: <E1jM8mn-0004yQ-IO@xenbits.xenproject.org>
Date: Wed, 08 Apr 2020 11:22:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d3ff3e48db4a59d1972bcdeb08cac22048d14b27
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 8 13:11:24 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 8 13:11:24 2020 +0200

    x86/HVM: __hvm_copy()'s size parameter is an unsigned quantity
    
    There are no negative sizes. Make the function's parameter as well as
    that of its derivates "unsigned int". Similarly make its local "count"
    variable "unsigned int", and drop "todo" altogether. Don't use min_t()
    anymore to calculate "count". Restrict its scope as well as that of
    other local variables of the function.
    
    While at it I've also noticed that {copy_{from,to},clear}_user_hvm()
    have been returning "unsigned long" for no apparent reason, as their
    respective "size" parameters have already been "unsigned int". Adjust
    this as well as a slightly wrong comment there at the same time.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <pdurrant@amzn.com>
---
 xen/arch/x86/hvm/hvm.c                 | 34 ++++++++++++++++------------------
 xen/include/asm-x86/hvm/guest_access.h |  6 +++---
 xen/include/asm-x86/hvm/support.h      |  8 ++++----
 3 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 304b3d1562..827c5fa89d 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -3227,15 +3227,10 @@ enum hvm_translation_result hvm_translate_get_page(
 #define HVMCOPY_phys       (0u<<2)
 #define HVMCOPY_linear     (1u<<2)
 static enum hvm_translation_result __hvm_copy(
-    void *buf, paddr_t addr, int size, struct vcpu *v, unsigned int flags,
+    void *buf, paddr_t addr, unsigned int size, struct vcpu *v, unsigned int flags,
     uint32_t pfec, pagefault_info_t *pfinfo)
 {
-    gfn_t gfn;
-    struct page_info *page;
-    p2m_type_t p2mt;
     char *p;
-    int count, todo = size;
-
     ASSERT(is_hvm_vcpu(v));
 
     /*
@@ -3254,12 +3249,14 @@ static enum hvm_translation_result __hvm_copy(
         return HVMTRANS_unhandleable;
 #endif
 
-    while ( todo > 0 )
+    while ( size > 0 )
     {
+        struct page_info *page;
+        gfn_t gfn;
+        p2m_type_t p2mt;
         enum hvm_translation_result res;
         unsigned int pgoff = addr & ~PAGE_MASK;
-
-        count = min_t(int, PAGE_SIZE - pgoff, todo);
+        unsigned int count = min((unsigned int)PAGE_SIZE - pgoff, size);
 
         res = hvm_translate_get_page(v, addr, flags & HVMCOPY_linear,
                                      pfec, pfinfo, &page, &gfn, &p2mt);
@@ -3313,7 +3310,7 @@ static enum hvm_translation_result __hvm_copy(
         addr += count;
         if ( buf )
             buf += count;
-        todo -= count;
+        size -= count;
         put_page(page);
     }
 
@@ -3321,21 +3318,21 @@ static enum hvm_translation_result __hvm_copy(
 }
 
 enum hvm_translation_result hvm_copy_to_guest_phys(
-    paddr_t paddr, void *buf, int size, struct vcpu *v)
+    paddr_t paddr, void *buf, unsigned int size, struct vcpu *v)
 {
     return __hvm_copy(buf, paddr, size, v,
                       HVMCOPY_to_guest | HVMCOPY_phys, 0, NULL);
 }
 
 enum hvm_translation_result hvm_copy_from_guest_phys(
-    void *buf, paddr_t paddr, int size)
+    void *buf, paddr_t paddr, unsigned int size)
 {
     return __hvm_copy(buf, paddr, size, current,
                       HVMCOPY_from_guest | HVMCOPY_phys, 0, NULL);
 }
 
 enum hvm_translation_result hvm_copy_to_guest_linear(
-    unsigned long addr, void *buf, int size, uint32_t pfec,
+    unsigned long addr, void *buf, unsigned int size, uint32_t pfec,
     pagefault_info_t *pfinfo)
 {
     return __hvm_copy(buf, addr, size, current,
@@ -3344,7 +3341,7 @@ enum hvm_translation_result hvm_copy_to_guest_linear(
 }
 
 enum hvm_translation_result hvm_copy_from_guest_linear(
-    void *buf, unsigned long addr, int size, uint32_t pfec,
+    void *buf, unsigned long addr, unsigned int size, uint32_t pfec,
     pagefault_info_t *pfinfo)
 {
     return __hvm_copy(buf, addr, size, current,
@@ -3352,7 +3349,7 @@ enum hvm_translation_result hvm_copy_from_guest_linear(
                       PFEC_page_present | pfec, pfinfo);
 }
 
-unsigned long copy_to_user_hvm(void *to, const void *from, unsigned int len)
+unsigned int copy_to_user_hvm(void *to, const void *from, unsigned int len)
 {
     int rc;
 
@@ -3366,7 +3363,7 @@ unsigned long copy_to_user_hvm(void *to, const void *from, unsigned int len)
     return rc ? len : 0; /* fake a copy_to_user() return code */
 }
 
-unsigned long clear_user_hvm(void *to, unsigned int len)
+unsigned int clear_user_hvm(void *to, unsigned int len)
 {
     int rc;
 
@@ -3377,10 +3374,11 @@ unsigned long clear_user_hvm(void *to, unsigned int len)
     }
 
     rc = hvm_copy_to_guest_linear((unsigned long)to, NULL, len, 0, NULL);
-    return rc ? len : 0; /* fake a copy_to_user() return code */
+
+    return rc ? len : 0; /* fake a clear_user() return code */
 }
 
-unsigned long copy_from_user_hvm(void *to, const void *from, unsigned len)
+unsigned int copy_from_user_hvm(void *to, const void *from, unsigned int len)
 {
     int rc;
 
diff --git a/xen/include/asm-x86/hvm/guest_access.h b/xen/include/asm-x86/hvm/guest_access.h
index b92dbe90d5..edacba75db 100644
--- a/xen/include/asm-x86/hvm/guest_access.h
+++ b/xen/include/asm-x86/hvm/guest_access.h
@@ -1,8 +1,8 @@
 #ifndef __ASM_X86_HVM_GUEST_ACCESS_H__
 #define __ASM_X86_HVM_GUEST_ACCESS_H__
 
-unsigned long copy_to_user_hvm(void *to, const void *from, unsigned len);
-unsigned long clear_user_hvm(void *to, unsigned int len);
-unsigned long copy_from_user_hvm(void *to, const void *from, unsigned len);
+unsigned int copy_to_user_hvm(void *to, const void *from, unsigned int len);
+unsigned int clear_user_hvm(void *to, unsigned int len);
+unsigned int copy_from_user_hvm(void *to, const void *from, unsigned int len);
 
 #endif /* __ASM_X86_HVM_GUEST_ACCESS_H__ */
diff --git a/xen/include/asm-x86/hvm/support.h b/xen/include/asm-x86/hvm/support.h
index 1500e6c94b..e161907dfa 100644
--- a/xen/include/asm-x86/hvm/support.h
+++ b/xen/include/asm-x86/hvm/support.h
@@ -70,9 +70,9 @@ enum hvm_translation_result {
  * address range does not map entirely onto ordinary machine memory.
  */
 enum hvm_translation_result hvm_copy_to_guest_phys(
-    paddr_t paddr, void *buf, int size, struct vcpu *v);
+    paddr_t paddr, void *buf, unsigned int size, struct vcpu *v);
 enum hvm_translation_result hvm_copy_from_guest_phys(
-    void *buf, paddr_t paddr, int size);
+    void *buf, paddr_t paddr, unsigned int size);
 
 /*
  * Copy to/from a guest linear address. @pfec should include PFEC_user_mode
@@ -96,10 +96,10 @@ typedef struct pagefault_info
 } pagefault_info_t;
 
 enum hvm_translation_result hvm_copy_to_guest_linear(
-    unsigned long addr, void *buf, int size, uint32_t pfec,
+    unsigned long addr, void *buf, unsigned int size, uint32_t pfec,
     pagefault_info_t *pfinfo);
 enum hvm_translation_result hvm_copy_from_guest_linear(
-    void *buf, unsigned long addr, int size, uint32_t pfec,
+    void *buf, unsigned long addr, unsigned int size, uint32_t pfec,
     pagefault_info_t *pfinfo);
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 08 11:22:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 08 Apr 2020 11:22:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jM8mz-0003nB-Hd; Wed, 08 Apr 2020 11:22:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=gWv0=5Y=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jM8my-0003n2-DB
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:36 +0000
X-Inumbo-ID: 3ee8e517-798b-11ea-81ce-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3ee8e517-798b-11ea-81ce-12813bfff9fa;
 Wed, 08 Apr 2020 11:22:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VRysCNUO+cERIFhDsdViNTBEk7210QpcLPmBuUEg6Kc=; b=yzSL/cYVicbhTMnbamIquMPH52
 41H9givOtRZwfX3VjwIxdDx9ilpX9Fkv0NdQKEyDSomjeYcAQXetdRJnnYZOJPc4ASmVcAVGyRCzK
 4k5Bq1nnlLLO4aSCCBy45CrTFfL35R7Cz0lQ3oQvcChJOEpZzeXkkwQhBVFjbYgCvdqI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jM8mx-0002SK-Mg
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jM8mx-0004zR-L1
 for xen-changelog@lists.xenproject.org; Wed, 08 Apr 2020 11:22:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/PoD: correct ordering of checks in
 p2m_pod_zero_check()
Message-Id: <E1jM8mx-0004zR-L1@xenbits.xenproject.org>
Date: Wed, 08 Apr 2020 11:22:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9be0b2747bc7381c684cfbdd3fa2e40badefbeef
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 8 13:12:28 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 8 13:12:28 2020 +0200

    x86/PoD: correct ordering of checks in p2m_pod_zero_check()
    
    Commit 0537d246f8db ("mm: add 'is_special_page' inline function...")
    moved the is_special_page() checks first in its respective changes to
    PoD code. While this is fine for p2m_pod_zero_check_superpage(), the
    validity of the MFN is inferred in both cases from the p2m_is_ram()
    check, which therefore also needs to come first in this 2nd instance.
    
    Take the opportunity and address latent UB here as well - transform
    the MFN into struct page_info * only after having established that
    this is a valid page.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/arch/x86/mm/p2m-pod.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index 36bc471e7f..48e609d1ed 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -877,23 +877,25 @@ p2m_pod_zero_check(struct p2m_domain *p2m, const gfn_t *gfns, unsigned int count
     for ( i = 0; i < count; i++ )
     {
         p2m_access_t a;
-        struct page_info *pg;
 
         mfns[i] = p2m->get_entry(p2m, gfns[i], types + i, &a,
                                  0, NULL, NULL);
-        pg = mfn_to_page(mfns[i]);
 
         /*
          * If this is ram, and not a pagetable or a special page, and
          * probably not mapped elsewhere, map it; otherwise, skip.
          */
-        if ( !is_special_page(pg) && p2m_is_ram(types[i]) &&
-             (pg->count_info & PGC_allocated) &&
-             !(pg->count_info & PGC_page_table) &&
-             ((pg->count_info & PGC_count_mask) <= max_ref) )
-            map[i] = map_domain_page(mfns[i]);
-        else
-            map[i] = NULL;
+        map[i] = NULL;
+        if ( p2m_is_ram(types[i]) )
+        {
+            const struct page_info *pg = mfn_to_page(mfns[i]);
+
+            if ( !is_special_page(pg) &&
+                 (pg->count_info & PGC_allocated) &&
+                 !(pg->count_info & PGC_page_table) &&
+                 ((pg->count_info & PGC_count_mask) <= max_ref) )
+                map[i] = map_domain_page(mfns[i]);
+        }
     }
 
     /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:33:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:33:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRgR-0001Bn-Io; Thu, 09 Apr 2020 07:33:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRgQ-0001BX-Bp
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:06 +0000
X-Inumbo-ID: 59d7e526-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 59d7e526-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:33:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=txfRl3VIUmsxZfkdaSxLIES31oRYiYeYpbnCBkyJP2s=; b=0/M6JGdcPCNAgAglkhjPG6AVvw
 FyIOs+59qHUJLtuLEHfQgLrHe3fycmFYfHmMS1hq3EtEqjGIqsNZOhYmUeyvtPfjD5ZNS2iRqU+5s
 OWvuB7OVTnZZFL6kXMZTKOI47ves9yVYauvjnh33nvTLBF/VGzmSdr7WQps6Uw6KhNcA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRgP-0006sl-3J
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRgP-0001bB-28
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86: do not enable global pages when virtualized
 on AMD or Hygon hardware
Message-Id: <E1jMRgP-0001bB-28@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:33:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a8fbb0f1a3f314fe1bd4be6041097e584d89d9f1
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 9 08:56:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 08:56:08 2020 +0200

    x86: do not enable global pages when virtualized on AMD or Hygon hardware
    
    When using global pages a full tlb flush can only be performed by
    toggling the PGE bit in CR4, which is usually quite expensive in terms
    of performance when running virtualized. This is specially relevant on
    AMD or Hygon hardware, which doesn't have the ability to do selective
    CR4 trapping, but can also be relevant on e.g. Intel if the underlying
    hypervisor also traps accesses to the PGE CR4 bit.
    
    In order to avoid this performance penalty, do not use global pages
    when running virtualized on AMD or Hygon hardware. A command line option
    'global-pages' is provided in order to allow the user to select whether
    global pages will be enabled for PV guests.
    
    The above figures are from a PV shim running on AMD hardware with
    32 vCPUs:
    
    PGE enabled, x2APIC mode:
    
    (XEN) Global lock flush_lock: addr=ffff82d0804b01c0, lockval=1adb1adb, not locked
    (XEN)   lock:1841883(1375128998543), block:1658716(10193054890781)
    
    Average lock time:   746588ns
    Average block time: 6145147ns
    
    PGE disabled, x2APIC mode:
    
    (XEN) Global lock flush_lock: addr=ffff82d0804af1c0, lockval=a8bfa8bf, not locked
    (XEN)   lock:2730175(657505389886), block:2039716(2963768247738)
    
    Average lock time:   240829ns
    Average block time: 1453029ns
    
    As seen from the above figures the lock and block time of the flush
    lock is reduced to approximately 1/3 of the original value.
    
    Note that XEN_MINIMAL_CR4 and mmu_cr4_features are not modified, and
    thus global pages are left enabled for the hypervisor. This is not an
    issue because the code to switch the control registers (cr3 and cr4)
    already takes into account such situation and performs the necessary
    flushes. The same already happens when using XPTI or PCIDE, as the
    guest cr4 doesn't have global pages enabled in that case either.
    
    Also note that the suspend and resume code is correct in writing
    mmu_cr4_features into cr4 on resume, since that's the cr4 used by the
    idle vCPU which is the context used by the suspend and resume routine.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    
    x86/pv: Fix `global-pages` to match the documentation
    
    c/s 5de961d9c09 "x86: do not enable global pages when virtualized on AMD or
    Hygon hardware" in fact does.  Fix the calculation in pge_init().
    
    While fixing this, adjust the command line documenation, first to use the
    newer style, and to expand the description to discuss cases where the option
    might be useful to use, but Xen can't account for by default.
    
    Fixes: 5de961d9c09 ('x86: do not enable global pages when virtualized on AMD or Hygon hardware')
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 5de961d9c0976f0a03d830956a4e7ac3e9d887ff
    master date: 2019-12-10 11:34:00 +0100
    master commit: b041709c369b36cb17a019a196fba773ec7e77bd
    master date: 2019-12-16 16:04:10 +0000
---
 docs/misc/xen-command-line.pandoc | 19 +++++++++++++++++++
 xen/arch/x86/pv/domain.c          | 16 +++++++++++++++-
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8b10480786..1d9d816622 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1087,6 +1087,25 @@ value settable via Xen tools.
 
 Dom0 is using this value for sizing its maptrack table.
 
+### global-pages
+    = <boolean>
+
+    Applicability: x86
+    Default: true unless running virtualized on AMD or Hygon hardware
+
+Control whether to use global pages for PV guests, and thus the need to
+perform TLB flushes by writing to CR4.  This is a performance trade-off.
+
+AMD SVM does not support selective trapping of CR4 writes, which means that a
+global TLB flush (two CR4 writes) takes two VMExits, and massively outweigh
+the benefit of using global pages to begin with.  This case is easy for Xen to
+spot, and is accounted for in the default setting.
+
+Other cases where this option might be a benefit is on VT-x hardware when
+selective CR4 writes are not supported/enabled by the hypervisor, or in any
+virtualised case using shadow paging.  These are not easy for Xen to spot, so
+are not accounted for in the default setting.
+
 ### guest_loglvl
 > `= <level>[/<rate-limited level>]` where level is `none | error | warning | info | debug | all`
 
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 4b6f48dea2..ed5111fc47 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -118,6 +118,20 @@ unsigned long pv_fixup_guest_cr4(const struct vcpu *v, unsigned long cr4)
             (mmu_cr4_features & PV_CR4_GUEST_VISIBLE_MASK));
 }
 
+static int8_t __read_mostly opt_global_pages = -1;
+boolean_runtime_param("global-pages", opt_global_pages);
+
+static int __init pge_init(void)
+{
+    if ( opt_global_pages == -1 )
+        opt_global_pages = !cpu_has_hypervisor ||
+                           !(boot_cpu_data.x86_vendor &
+                             (X86_VENDOR_AMD | X86_VENDOR_HYGON));
+
+    return 0;
+}
+__initcall(pge_init);
+
 unsigned long pv_make_cr4(const struct vcpu *v)
 {
     const struct domain *d = v->domain;
@@ -130,7 +144,7 @@ unsigned long pv_make_cr4(const struct vcpu *v)
      */
     if ( d->arch.pv.pcid )
         cr4 |= X86_CR4_PCIDE;
-    else if ( !d->arch.pv.xpti )
+    else if ( !d->arch.pv.xpti && opt_global_pages )
         cr4 |= X86_CR4_PGE;
 
     /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:33:22 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:33:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRgg-0001Dg-LE; Thu, 09 Apr 2020 07:33:22 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRgf-0001DQ-5E
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:21 +0000
X-Inumbo-ID: 5fd9491a-7a34-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5fd9491a-7a34-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 07:33:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jdLIIJUXKaNubvtEJVd4ia5el9rk460MNsyYLKRhxvs=; b=a5RO85UFmBqwhhzTkFzQif/9XX
 HfGMGuRt2b5P7iiHyZ4CB5yl5FgzhNqVw18LdYZlH/h8z0MM4CgtfvZXKe+HgxmOslgiLP9RA05Lk
 OD7sanThItkcZsSHjjcgoOrfKThV23r5k+/8I0byiMi8SJsEh6RLeVJxgCh21rv7p4CA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRgZ-0006su-6I
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRgZ-0001cK-5P
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/time: update vtsc_last with cmpxchg and drop
 vtsc_lock
Message-Id: <E1jMRgZ-0001cK-5P@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:33:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 655897c9490a70d27a7be4a235531765e1af8a53
Author:     Igor Druzhinin <igor.druzhinin@citrix.com>
AuthorDate: Thu Apr 9 08:58:22 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 08:58:22 2020 +0200

    x86/time: update vtsc_last with cmpxchg and drop vtsc_lock
    
    Now that vtsc_last is the only entity protected by vtsc_lock we can
    simply update it using a single atomic operation and drop the spinlock
    entirely. This is extremely important for the case of running nested
    (e.g. shim instance with lots of vCPUs assigned) since if preemption
    happens somewhere inside the critical section that would immediately
    mean that other vCPU stop progressing (and probably being preempted
    as well) waiting for the spinlock to be freed.
    
    This fixes constant shim guest boot lockups with ~32 vCPUs if there is
    vCPU overcommit present (which increases the likelihood of preemption).
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: f9dee1f945ebb6fb5f9df6f5d95b15c25727f48e
    master date: 2019-12-20 16:44:38 +0100
---
 xen/arch/x86/domain.c        |  1 -
 xen/arch/x86/time.c          | 16 ++++++----------
 xen/include/asm-x86/domain.h |  1 -
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index bed19fc4dc..94531be05e 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -539,7 +539,6 @@ int arch_domain_create(struct domain *d,
     INIT_PAGE_LIST_HEAD(&d->arch.relmem_list);
 
     spin_lock_init(&d->arch.e820_lock);
-    spin_lock_init(&d->arch.vtsc_lock);
 
     /* Minimal initialisation for the idle domain. */
     if ( unlikely(is_idle_domain(d)) )
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 0aa052f5ae..3dac3f3ad6 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2141,11 +2141,9 @@ u64 gtsc_to_gtime(struct domain *d, u64 tsc)
 
 uint64_t pv_soft_rdtsc(const struct vcpu *v, const struct cpu_user_regs *regs)
 {
-    s_time_t now = get_s_time();
+    s_time_t old, new, now = get_s_time();
     struct domain *d = v->domain;
 
-    spin_lock(&d->arch.vtsc_lock);
-
 #if !defined(NDEBUG) || defined(CONFIG_PERF_COUNTERS)
     if ( guest_kernel_mode(v, regs) )
         d->arch.vtsc_kerncount++;
@@ -2153,14 +2151,12 @@ uint64_t pv_soft_rdtsc(const struct vcpu *v, const struct cpu_user_regs *regs)
         d->arch.vtsc_usercount++;
 #endif
 
-    if ( (int64_t)(now - d->arch.vtsc_last) > 0 )
-        d->arch.vtsc_last = now;
-    else
-        now = ++d->arch.vtsc_last;
-
-    spin_unlock(&d->arch.vtsc_lock);
+    do {
+        old = d->arch.vtsc_last;
+        new = now > d->arch.vtsc_last ? now : old + 1;
+    } while ( cmpxchg(&d->arch.vtsc_last, old, new) != old );
 
-    return gtime_to_gtsc(d, now);
+    return gtime_to_gtsc(d, new);
 }
 
 bool clocksource_is_tsc(void)
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 212303f371..2c0940899b 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -364,7 +364,6 @@ struct arch_domain
     int tsc_mode;            /* see include/asm-x86/time.h */
     bool_t vtsc;             /* tsc is emulated (may change after migrate) */
     s_time_t vtsc_last;      /* previous TSC value (guarantee monotonicity) */
-    spinlock_t vtsc_lock;
     uint64_t vtsc_offset;    /* adjustment for save/restore/migrate */
     uint32_t tsc_khz;        /* cached guest khz for certain emulated or
                                 hardware TSC scaling cases */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:33:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:33:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRgl-0001Em-Mp; Thu, 09 Apr 2020 07:33:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRgk-0001EZ-Ly
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:26 +0000
X-Inumbo-ID: 65e0216c-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 65e0216c-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:33:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XWoJXKNp1DsDakDj7zodUUWBe6+JpsAfEN8xbgd9Lm0=; b=3sA7d4mUXctJPFcliB7ZIoZw9Y
 oGkAU0hYkaNVVdRI7peHmxJIwvYnXn6naurWGjf3kNKgYiLZOjX9KJw8Dggj57uKwZjgeiT1nL3vt
 t31RxyhSoRmnRBFVTiubI05aMScVxjRXwPPOmoQLC0y9tocjHVXKsASSIHeTDj7ZqoDI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRgj-0006t3-9I
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRgj-0001dP-8C
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/amd: Avoid cpu_has_hypervisor evaluating true
 on native hardware
Message-Id: <E1jMRgj-0001dP-8C@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:33:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 5e106996495d98b7c8629f07e99d780db8491ea4
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 08:59:55 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 08:59:55 2020 +0200

    x86/amd: Avoid cpu_has_hypervisor evaluating true on native hardware
    
    Currently when booting native on AMD hardware, cpuidmask_defaults._1cd gets
    configured with the HYPERVISOR bit before native CPUID is scanned for feature
    bits.
    
    This results in cpu_has_hypervisor becoming set as part of identify_cpu(), and
    ends up appearing in the raw and host CPU policies.
    
    A combination of this bug, and c/s bb502a8ca59 "x86: check feature flags after
    resume" which checks that feature bits don't go missing, results in broken S3
    on AMD hardware.
    
    Alter amd_init_levelling() to exclude the HYPERVISOR bit from
    cpumask_defaults, and update domain_cpu_policy_changed() to allow it to be
    explicitly forwarded.
    
    This also fixes a bug on kexec, where the hypervisor bit is left enabled for
    the new kernel to find.
    
    These changes highlight a further but - dom0 construction is asymetric with
    domU construction, by not having any calls to domain_cpu_policy_changed().
    Extend arch_domain_create() to always call domain_cpu_policy_changed().
    
    Reported-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: e2d1254f5af2a6ff24d009523639b80ccba2c089
    master date: 2020-02-14 18:01:52 +0000
---
 xen/arch/x86/cpu/amd.c       | 3 ---
 xen/arch/x86/domain.c        | 2 ++
 xen/arch/x86/domctl.c        | 9 ++++++++-
 xen/include/asm-x86/domain.h | 2 ++
 4 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c
index 8b5f0f2e4c..0906b23582 100644
--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -297,9 +297,6 @@ static void __init noinline amd_init_levelling(void)
 			ecx |= cpufeat_mask(X86_FEATURE_OSXSAVE);
 		edx |= cpufeat_mask(X86_FEATURE_APIC);
 
-		/* Allow the HYPERVISOR bit to be set via guest policy. */
-		ecx |= cpufeat_mask(X86_FEATURE_HYPERVISOR);
-
 		cpuidmask_defaults._1cd = ((uint64_t)ecx << 32) | edx;
 	}
 
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 94531be05e..2ce00fb26f 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -665,6 +665,8 @@ int arch_domain_create(struct domain *d,
      */
     d->arch.x87_fip_width = cpu_has_fpu_sel ? 0 : 8;
 
+    domain_cpu_policy_changed(d);
+
     return 0;
 
  fail:
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7aed545d2d..d73bc8f318 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -46,7 +46,7 @@ static int gdbsx_guest_mem_io(domid_t domid, struct xen_domctl_gdbsx_memio *iop)
     return iop->remain ? -EFAULT : 0;
 }
 
-static void domain_cpu_policy_changed(struct domain *d)
+void domain_cpu_policy_changed(struct domain *d)
 {
     const struct cpuid_policy *p = d->arch.cpuid;
     struct vcpu *v;
@@ -104,6 +104,13 @@ static void domain_cpu_policy_changed(struct domain *d)
                     ecx = 0;
                 edx = cpufeat_mask(X86_FEATURE_APIC);
 
+                /*
+                 * If the Hypervisor bit is set in the policy, we can also
+                 * forward it into real CPUID.
+                 */
+                if ( p->basic.hypervisor )
+                    ecx |= cpufeat_mask(X86_FEATURE_HYPERVISOR);
+
                 mask |= ((uint64_t)ecx << 32) | edx;
                 break;
             }
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 2c0940899b..9dc7556980 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -627,6 +627,8 @@ struct guest_memory_policy
 void update_guest_memory_policy(struct vcpu *v,
                                 struct guest_memory_policy *policy);
 
+void domain_cpu_policy_changed(struct domain *d);
+
 bool update_runstate_area(struct vcpu *);
 bool update_secondary_system_time(struct vcpu *,
                                   struct vcpu_time_info *);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:33:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:33:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRgv-0001Gn-Om; Thu, 09 Apr 2020 07:33:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRgu-0001GX-7t
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:36 +0000
X-Inumbo-ID: 6be10054-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6be10054-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:33:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=zwqnoaj493iBpQycfq5M5GNdeKTKpE3fH/wJiJPIfFU=; b=M7o3O2vR6tVUtZvRmEtQz9UPyx
 fIy4A+jjW2U6ut25xsg7AHny4XupSxS2s8KBRhgWClO6MJewz8UGQaSWuZ6HyTxjpk1QjefUp0/lh
 +xTz5feYrRThLL/1xYy8h7qeaT4Pl8OLaVG1gEvd4fEkwJRqvB3I6U8GyqQ08bZBiRdo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRgt-0006tu-Bx
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRgt-0001e2-Aw
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/vPMU: don't blindly assume
 IA32_PERF_CAPABILITIES MSR exists
Message-Id: <E1jMRgt-0001e2-Aw@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:33:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 431ddeb205e5bc7e46842b75f5cd8aa4956e94af
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:01:28 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:01:28 2020 +0200

    x86/vPMU: don't blindly assume IA32_PERF_CAPABILITIES MSR exists
    
    Just like VMX'es lbr_tsx_fixup_check() the respective CPUID bit should
    be consulted first.
    
    Reported-by: Farrah Chen <farrah.chen@intel.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 15c39c7c913f26fba40231e103ce1ffa6101e7c9
    master date: 2020-02-26 17:35:48 +0100
---
 xen/arch/x86/cpu/vpmu_intel.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c
index 6e27f6ec8e..75aa11c6ad 100644
--- a/xen/arch/x86/cpu/vpmu_intel.c
+++ b/xen/arch/x86/cpu/vpmu_intel.c
@@ -900,7 +900,6 @@ int vmx_vpmu_initialise(struct vcpu *v)
 
 int __init core2_vpmu_init(void)
 {
-    u64 caps;
     unsigned int version = 0;
     unsigned int i;
 
@@ -932,8 +931,14 @@ int __init core2_vpmu_init(void)
 
     arch_pmc_cnt = core2_get_arch_pmc_count();
     fixed_pmc_cnt = core2_get_fixed_pmc_count();
-    rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
-    full_width_write = (caps >> 13) & 1;
+
+    if ( cpu_has_pdcm )
+    {
+        uint64_t caps;
+
+        rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
+        full_width_write = (caps >> 13) & 1;
+    }
 
     fixed_ctrl_mask = ~((1ull << (fixed_pmc_cnt * FIXED_CTR_CTRL_BITS)) - 1);
     /* mask .AnyThread bits for all fixed counters */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:33:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:33:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRh5-0001Ic-QR; Thu, 09 Apr 2020 07:33:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRh4-0001IM-8G
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:46 +0000
X-Inumbo-ID: 71e05bc6-7a34-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 71e05bc6-7a34-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 07:33:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HFU/n+DVqiR6UJPBOLLYCN9Juah7WVB1gx/UgCRNy9A=; b=xAXKaqNe+DywDwwUeIl/XdTTXD
 4czJ7MVrLvUeLDD7YXg53D86OHNTNHzQQ6TfaNgQDzhX4cYUBzEgVBq/P7BsJur2eS46TlbIoOyoo
 ZDtgF0/q5Wq5au+AcHMupOBGGCzRR78DkPgqDFPjSFBeLKo8IVwXaYo4VsQ+bwVEUu4Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRh3-0006u3-Eq
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRh3-0001ea-Dg
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen: make sure stop_machine_run() is always called
 in a tasklet
Message-Id: <E1jMRh3-0001ea-Dg@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:33:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 07ac8a9790a5efa580903c5428b72873a11a82dc
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:03:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:03:21 2020 +0200

    xen: make sure stop_machine_run() is always called in a tasklet
    
    With core scheduling active it is mandatory for stop_machine_run() to
    be called in idle context only (so either during boot or in a tasklet),
    as otherwise a scheduling deadlock would occur: stop_machine_run()
    does a cpu rendezvous by activating a tasklet on all other cpus. In
    case stop_machine_run() was not called in an idle vcpu it would block
    scheduling the idle vcpu on its siblings with core scheduling being
    active, resulting in a hang.
    
    Put a BUG_ON() into stop_machine_run() to test for being called in an
    idle vcpu only and adapt the missing call site (ucode loading) to use a
    tasklet for calling stop_machine_run().
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 188f479de4b77e5493a7df258974a0a9d119fb0c
    master date: 2020-03-02 13:08:04 +0000
---
 xen/arch/x86/microcode.c  | 55 ++++++++++++++++++++++++++++++-----------------
 xen/common/rcupdate.c     |  4 ++++
 xen/common/stop_machine.c |  7 ++++++
 3 files changed, 46 insertions(+), 20 deletions(-)

diff --git a/xen/arch/x86/microcode.c b/xen/arch/x86/microcode.c
index 6ced293d88..29b3f42cc2 100644
--- a/xen/arch/x86/microcode.c
+++ b/xen/arch/x86/microcode.c
@@ -584,30 +584,18 @@ static int do_microcode_update(void *patch)
     return ret;
 }
 
-int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
+struct ucode_buf {
+    unsigned int len;
+    char buffer[];
+};
+
+static long microcode_update_helper(void *data)
 {
     int ret;
-    void *buffer;
+    struct ucode_buf *buffer = data;
     unsigned int cpu, updated;
     struct microcode_patch *patch;
 
-    if ( len != (uint32_t)len )
-        return -E2BIG;
-
-    if ( microcode_ops == NULL )
-        return -EINVAL;
-
-    buffer = xmalloc_bytes(len);
-    if ( !buffer )
-        return -ENOMEM;
-
-    ret = copy_from_guest(buffer, buf, len);
-    if ( ret )
-    {
-        xfree(buffer);
-        return -EFAULT;
-    }
-
     /* cpu_online_map must not change during update */
     if ( !get_cpu_maps() )
     {
@@ -629,7 +617,7 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
         return -EPERM;
     }
 
-    patch = parse_blob(buffer, len);
+    patch = parse_blob(buffer->buffer, buffer->len);
     xfree(buffer);
     if ( IS_ERR(patch) )
     {
@@ -722,6 +710,33 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
     return ret;
 }
 
+int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
+{
+    int ret;
+    struct ucode_buf *buffer;
+
+    if ( len != (uint32_t)len )
+        return -E2BIG;
+
+    if ( microcode_ops == NULL )
+        return -EINVAL;
+
+    buffer = xmalloc_flex_struct(struct ucode_buf, buffer, len);
+    if ( !buffer )
+        return -ENOMEM;
+
+    ret = copy_from_guest(buffer->buffer, buf, len);
+    if ( ret )
+    {
+        xfree(buffer);
+        return -EFAULT;
+    }
+    buffer->len = len;
+
+    return continue_hypercall_on_cpu(smp_processor_id(),
+                                     microcode_update_helper, buffer);
+}
+
 static int __init microcode_init(void)
 {
     /*
diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c
index a56103c6f7..d6dc4b48db 100644
--- a/xen/common/rcupdate.c
+++ b/xen/common/rcupdate.c
@@ -177,6 +177,10 @@ static int rcu_barrier_action(void *_cpu_count)
     return 0;
 }
 
+/*
+ * As rcu_barrier() is using stop_machine_run() it is allowed to be used in
+ * idle context only (see comment for stop_machine_run()).
+ */
 int rcu_barrier(void)
 {
     atomic_t cpu_count = ATOMIC_INIT(0);
diff --git a/xen/common/stop_machine.c b/xen/common/stop_machine.c
index 681b40906d..5d95f2aaa9 100644
--- a/xen/common/stop_machine.c
+++ b/xen/common/stop_machine.c
@@ -67,6 +67,12 @@ static void stopmachine_wait_state(void)
         cpu_relax();
 }
 
+/*
+ * Sync all processors and call a function on one or all of them.
+ * As stop_machine_run() is using a tasklet for syncing the processors it is
+ * mandatory to be called only on an idle vcpu, as otherwise active core
+ * scheduling might hang.
+ */
 int stop_machine_run(int (*fn)(void *), void *data, unsigned int cpu)
 {
     unsigned int i, nr_cpus;
@@ -74,6 +80,7 @@ int stop_machine_run(int (*fn)(void *), void *data, unsigned int cpu)
     int ret;
 
     BUG_ON(!local_irq_is_enabled());
+    BUG_ON(!is_idle_vcpu(current));
 
     /* cpu_online_map must not change. */
     if ( !get_cpu_maps() )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:33:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:33:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRhF-0001KS-Tt; Thu, 09 Apr 2020 07:33:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRhE-0001K9-HE
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:56 +0000
X-Inumbo-ID: 77e6b600-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 77e6b600-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:33:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=wqGrXt7DBNoUqZExKk7Lx4rDDOhY7pFTsn8FhlrM4+M=; b=zq5XUxochY21nWfl6KtBc6a15E
 LOAfRCh4WZFZsUhd2zz0KEGATP+eeWEj5c+ipNhVyTPqg+1uWGB2FFQnYxeA4Mb7IpR8q/X0i43Dh
 17YhbxKdk1EO43vih21rmpwv0KuG8vl7regH5Zk5tB2MmPg4Dz6jelsWzDunomaW1JCY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhD-0006uK-I7
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhD-0001fg-HB
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:33:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen: do live patching only from main idle loop
Message-Id: <E1jMRhD-0001fg-HB@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:33:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0d16bb7e6ad4834c66366d84d419555c384485d9
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:04:19 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:04:19 2020 +0200

    xen: do live patching only from main idle loop
    
    One of the main design goals of core scheduling is to avoid actions
    which are not directly related to the domain currently running on a
    given cpu or core. Live patching is one of those actions which are
    allowed taking place on a cpu only when the idle scheduling unit is
    active on that cpu.
    
    Unfortunately live patching tries to force the cpus into the idle loop
    just by raising the schedule softirq, which will no longer be
    guaranteed to work with core scheduling active. Additionally there are
    still some places in the hypervisor calling check_for_livepatch_work()
    without being in the idle loop.
    
    It is easy to force a cpu into the main idle loop by scheduling a
    tasklet on it. So switch live patching to use tasklets for switching to
    idle and raising scheduling events. Additionally the calls of
    check_for_livepatch_work() outside the main idle loop can be dropped.
    
    As tasklets are only running on idle vcpus and stop_machine_run()
    is activating tasklets on all cpus but the one it has been called on
    to rendezvous, it is mandatory for stop_machine_run() to be called on
    an idle vcpu, too, as otherwise there is no way for scheduling to
    activate the idle vcpu for the tasklet on the sibling of the cpu
    stop_machine_run() has been called on.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    master commit: 005de45c887e0fefde59570686877afeda2c7b4e
    master date: 2020-03-02 18:36:50 +0000
---
 xen/arch/arm/domain.c       |  9 ++++-----
 xen/arch/arm/traps.c        |  6 ------
 xen/arch/x86/domain.c       |  9 ++++-----
 xen/arch/x86/hvm/svm/svm.c  |  2 +-
 xen/arch/x86/hvm/vmx/vmcs.c |  2 +-
 xen/arch/x86/pv/domain.c    |  2 +-
 xen/arch/x86/setup.c        |  2 +-
 xen/common/livepatch.c      | 39 ++++++++++++++++++++++++++++++++++-----
 8 files changed, 46 insertions(+), 25 deletions(-)

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index c0a13aa0ab..283eb6bb43 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -72,7 +72,11 @@ void idle_loop(void)
 
         /* Are we here for running vcpu context tasklets, or for idling? */
         if ( unlikely(tasklet_work_to_do(cpu)) )
+        {
             do_tasklet();
+            /* Livepatch work is always kicked off via a tasklet. */
+            check_for_livepatch_work();
+        }
         /*
          * Test softirqs twice --- first to see if should even try scrubbing
          * and then, after it is done, whether softirqs became pending
@@ -83,11 +87,6 @@ void idle_loop(void)
             do_idle();
 
         do_softirq();
-        /*
-         * We MUST be last (or before dsb, wfi). Otherwise after we get the
-         * softirq we would execute dsb,wfi (and sleep) and not patch.
-         */
-        check_for_livepatch_work();
     }
 }
 
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index d028ec9224..1d2b762e22 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -23,7 +23,6 @@
 #include <xen/iocap.h>
 #include <xen/irq.h>
 #include <xen/lib.h>
-#include <xen/livepatch.h>
 #include <xen/mem_access.h>
 #include <xen/mm.h>
 #include <xen/perfc.h>
@@ -2231,11 +2230,6 @@ static void check_for_pcpu_work(void)
     {
         local_irq_enable();
         do_softirq();
-        /*
-         * Must be the last one - as the IPI will trigger us to come here
-         * and we want to patch the hypervisor with almost no stack.
-         */
-        check_for_livepatch_work();
         local_irq_disable();
     }
 }
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 2ce00fb26f..d42a32c8a9 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -141,7 +141,11 @@ static void idle_loop(void)
 
         /* Are we here for running vcpu context tasklets, or for idling? */
         if ( unlikely(tasklet_work_to_do(cpu)) )
+        {
             do_tasklet();
+            /* Livepatch work is always kicked off via a tasklet. */
+            check_for_livepatch_work();
+        }
         /*
          * Test softirqs twice --- first to see if should even try scrubbing
          * and then, after it is done, whether softirqs became pending
@@ -151,11 +155,6 @@ static void idle_loop(void)
                     !softirq_pending(cpu) )
             pm_idle();
         do_softirq();
-        /*
-         * We MUST be last (or before pm_idle). Otherwise after we get the
-         * softirq we would execute pm_idle (and sleep) and not patch.
-         */
-        check_for_livepatch_work();
     }
 }
 
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 6ae43999ff..dc1bd32b9b 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1032,7 +1032,7 @@ static void noreturn svm_do_resume(struct vcpu *v)
 
     hvm_do_resume(v);
 
-    reset_stack_and_jump(svm_asm_do_resume);
+    reset_stack_and_jump_nolp(svm_asm_do_resume);
 }
 
 void svm_vmenter_helper(const struct cpu_user_regs *regs)
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index f10f6b78ec..d53eceb23a 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -1889,7 +1889,7 @@ void vmx_do_resume(struct vcpu *v)
     if ( host_cr4 != read_cr4() )
         __vmwrite(HOST_CR4, read_cr4());
 
-    reset_stack_and_jump(vmx_asm_do_vmentry);
+    reset_stack_and_jump_nolp(vmx_asm_do_vmentry);
 }
 
 static inline unsigned long vmr(unsigned long field)
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index ed5111fc47..3308b6b7d4 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -61,7 +61,7 @@ custom_runtime_param("pcid", parse_pcid);
 static void noreturn continue_nonidle_domain(struct vcpu *v)
 {
     check_wakeup_from_wait();
-    reset_stack_and_jump(ret_from_intr);
+    reset_stack_and_jump_nolp(ret_from_intr);
 }
 
 static int setup_compat_l4(struct vcpu *v)
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index cc7274eae6..ae61e93024 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -631,7 +631,7 @@ static void __init noreturn reinit_bsp_stack(void)
     stack_base[0] = stack;
     memguard_guard_stack(stack);
 
-    reset_stack_and_jump(init_done);
+    reset_stack_and_jump_nolp(init_done);
 }
 
 /*
diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c
index 7ab1f82290..1f89984c9a 100644
--- a/xen/common/livepatch.c
+++ b/xen/common/livepatch.c
@@ -17,6 +17,7 @@
 #include <xen/spinlock.h>
 #include <xen/string.h>
 #include <xen/symbols.h>
+#include <xen/tasklet.h>
 #include <xen/version.h>
 #include <xen/virtual_region.h>
 #include <xen/vmap.h>
@@ -103,6 +104,7 @@ static struct livepatch_work livepatch_work;
  * Having an per-cpu lessens the load.
  */
 static DEFINE_PER_CPU(bool_t, work_to_do);
+static DEFINE_PER_CPU(struct tasklet, livepatch_tasklet);
 
 static int get_name(const struct xen_livepatch_name *name, char *n)
 {
@@ -1247,17 +1249,16 @@ static int schedule_work(struct payload *data, uint32_t cmd, uint32_t timeout)
     smp_wmb();
 
     livepatch_work.do_work = 1;
-    this_cpu(work_to_do) = 1;
+    tasklet_schedule_on_cpu(&this_cpu(livepatch_tasklet), smp_processor_id());
 
     put_cpu_maps();
 
     return 0;
 }
 
-static void reschedule_fn(void *unused)
+static void tasklet_fn(unsigned long unused)
 {
     this_cpu(work_to_do) = 1;
-    raise_softirq(SCHEDULE_SOFTIRQ);
 }
 
 static int livepatch_spin(atomic_t *counter, s_time_t timeout,
@@ -1317,7 +1318,7 @@ void check_for_livepatch_work(void)
     if ( atomic_inc_and_test(&livepatch_work.semaphore) )
     {
         struct payload *p;
-        unsigned int cpus;
+        unsigned int cpus, i;
 
         p = livepatch_work.data;
         if ( !get_cpu_maps() )
@@ -1346,7 +1347,9 @@ void check_for_livepatch_work(void)
         {
             dprintk(XENLOG_DEBUG, LIVEPATCH "%s: CPU%u - IPIing the other %u CPUs\n",
                     p->name, cpu, cpus);
-            smp_call_function(reschedule_fn, NULL, 0);
+            for_each_online_cpu ( i )
+                if ( i != cpu )
+                    tasklet_schedule_on_cpu(&per_cpu(livepatch_tasklet, i), i);
         }
 
         timeout = livepatch_work.timeout + NOW();
@@ -1668,8 +1671,34 @@ static void livepatch_printall(unsigned char key)
     spin_unlock(&payload_lock);
 }
 
+static int cpu_callback(
+    struct notifier_block *nfb, unsigned long action, void *hcpu)
+{
+    unsigned int cpu = (unsigned long)hcpu;
+
+    if ( action == CPU_UP_PREPARE )
+        tasklet_init(&per_cpu(livepatch_tasklet, cpu), tasklet_fn, 0);
+
+    return NOTIFY_DONE;
+}
+
+static struct notifier_block cpu_nfb = {
+    .notifier_call = cpu_callback
+};
+
 static int __init livepatch_init(void)
 {
+    unsigned int cpu;
+
+    for_each_online_cpu ( cpu )
+    {
+        void *hcpu = (void *)(long)cpu;
+
+        cpu_callback(&cpu_nfb, CPU_UP_PREPARE, hcpu);
+    }
+
+    register_cpu_notifier(&cpu_nfb);
+
     register_keyhandler('x', livepatch_printall, "print livepatch info", 1);
 
     arch_livepatch_init();
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:34:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:34:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRhQ-0001Lf-VW; Thu, 09 Apr 2020 07:34:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRhO-0001LQ-Sk
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:06 +0000
X-Inumbo-ID: 7dec6ae0-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7dec6ae0-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:34:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vAuOUe0h9qAKubdaLsCKVEtu6J6fW6KjVjQOc4hfLfg=; b=ZZQjq0jDPxZwwvrnuRsKGRo7wb
 c5mlcMAi4nzHDUd0BREK7SwotYb17d2EOSWe1bzLb+6dVbc3xpoZmbZZMt6fP04y8+WyFHNRbgmQ2
 QipqgxgrdBimMfZ3Lne9V+dV4DEZMIxzTSr1LV+itHt0p4cDgjm9ThwfcQBsMj/KpxrE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhN-0006um-L0
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhN-0001gU-Jt
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] sched: fix error path in
 cpupool_unassign_cpu_start()
Message-Id: <E1jMRhN-0001gU-Jt@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:34:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e1e24c5e5563c34f5e063924e4b13aa3d169ed03
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:05:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:05:26 2020 +0200

    sched: fix error path in cpupool_unassign_cpu_start()
    
    In case moving away all domains from the cpu to be removed is failing
    in cpupool_unassign_cpu_start() the error path is missing to release
    sched_res_rculock.
    
    The normal exit path is releasing domlist_read_lock instead (this is
    currently no problem as the reference to the specific rcu lock is not
    used by rcu_read_unlock()).
    
    While at it indent the present error label by one space.
    
    Reported-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: 98ed1f43cc2c89efd38deed1035dba5b1ced5d45
    master date: 2020-03-03 16:02:32 +0100
---
 xen/common/cpupool.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c
index 4d3adbdd8d..5a90bdc9ff 100644
--- a/xen/common/cpupool.c
+++ b/xen/common/cpupool.c
@@ -465,7 +465,7 @@ static int cpupool_unassign_cpu_start(struct cpupool *c, unsigned int cpu)
         }
         rcu_read_unlock(&domlist_read_lock);
         if ( ret )
-            goto out;
+            goto out_rcu;
     }
     cpupool_moving_cpu = cpu;
     atomic_inc(&c->refcnt);
@@ -473,8 +473,9 @@ static int cpupool_unassign_cpu_start(struct cpupool *c, unsigned int cpu)
     cpumask_andnot(c->cpu_valid, c->cpu_valid, cpus);
     cpumask_and(c->res_valid, c->cpu_valid, &sched_res_mask);
 
-    rcu_read_unlock(&domlist_read_lock);
-out:
+ out_rcu:
+    rcu_read_unlock(&sched_res_rculock);
+ out:
     spin_unlock(&cpupool_lock);
 
     return ret;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:34:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:34:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRha-0001Mt-1B; Thu, 09 Apr 2020 07:34:18 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRhY-0001Mj-Hx
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:16 +0000
X-Inumbo-ID: 83f0d6f6-7a34-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 83f0d6f6-7a34-11ea-83d8-bc764e2007e4;
 Thu, 09 Apr 2020 07:34:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8I1Ok8Wm/E3SFad8LrotNYSpLEWoKuR6vGozUADPpdw=; b=jnyKyQSVaCRDMXk8bseLA1pauw
 N+bAdGqhyNHNzpnZhZNGVF3POWpjs7fNYXgdPk81rIHSXFKMHfU+JRpHobI954uNsLUcP1AoAP/sk
 a+svFNmCtRRqGhMZFQYvUXMBr4HGUpauMroCuRfyNkKFY/Q56quM3zDlyNZpli/tw3Vs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhX-0006v1-O7
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhX-0001hh-Mn
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/dom0: improve PVH initrd and metadata placement
Message-Id: <E1jMRhX-0001hh-Mn@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:34:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a99de9de81c7f1c8af532a23b895806225eaf192
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 9 09:06:31 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:06:31 2020 +0200

    x86/dom0: improve PVH initrd and metadata placement
    
    Don't assume there's going to be enough space at the tail of the
    loaded kernel and instead try to find a suitable memory area where the
    initrd and metadata can be loaded.
    
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    
    x86/dom0: Fix build with clang
    
    find_memory() isn't marked as __init, so if it isn't fully inlined, it ends up
    tripping:
    
      Error: size of dom0_build.o:.text is 0x0c1
    
    Fixes: 73b47eea21 "x86/dom0: improve PVH initrd and metadata placement"
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    master commit: 73b47eea21045556dc5334e4f17d0c05c23f3c16
    master date: 2020-03-05 10:43:15 +0100
    master commit: 40213cd8626bac712fa69c4978993e87b57a7d0c
    master date: 2020-03-05 18:11:51 +0000
---
 xen/arch/x86/hvm/dom0_build.c | 58 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 57 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 380412151b..9a46005494 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -491,6 +491,45 @@ static int __init pvh_populate_p2m(struct domain *d)
 #undef MB1_PAGES
 }
 
+static paddr_t __init find_memory(
+    const struct domain *d, const struct elf_binary *elf, size_t size)
+{
+    paddr_t kernel_start = (paddr_t)elf->dest_base & PAGE_MASK;
+    paddr_t kernel_end = ROUNDUP((paddr_t)elf->dest_base + elf->dest_size,
+                                 PAGE_SIZE);
+    unsigned int i;
+
+    /*
+     * The memory map is sorted and all RAM regions starts and sizes are
+     * aligned to page boundaries.
+     */
+    for ( i = 0; i < d->arch.nr_e820; i++ )
+    {
+        paddr_t start, end = d->arch.e820[i].addr + d->arch.e820[i].size;
+
+        /* Don't use memory below 1MB, as it could overwrite BDA/EBDA/IBFT. */
+        if ( end <= MB(1) || d->arch.e820[i].type != E820_RAM )
+            continue;
+
+        start = MAX(ROUNDUP(d->arch.e820[i].addr, PAGE_SIZE), MB(1));
+
+        ASSERT(IS_ALIGNED(start, PAGE_SIZE) && IS_ALIGNED(end, PAGE_SIZE));
+
+        if ( end <= kernel_start || start >= kernel_end )
+            ; /* No overlap, nothing to do. */
+        /* Deal with the kernel already being loaded in the region. */
+        else if ( kernel_start - start > end - kernel_end )
+            end = kernel_start;
+        else
+            start = kernel_end;
+
+        if ( end - start >= size )
+            return start;
+    }
+
+    return INVALID_PADDR;
+}
+
 static int __init pvh_load_kernel(struct domain *d, const module_t *image,
                                   unsigned long image_headroom,
                                   module_t *initrd, void *image_base,
@@ -547,7 +586,24 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
         return rc;
     }
 
-    last_addr = ROUNDUP(parms.virt_kend - parms.virt_base, PAGE_SIZE);
+    /*
+     * Find a RAM region big enough (and that doesn't overlap with the loaded
+     * kernel) in order to load the initrd and the metadata. Note it could be
+     * split into smaller allocations, done as a single region in order to
+     * simplify it.
+     */
+    last_addr = find_memory(d, &elf, sizeof(start_info) +
+                            (initrd ? ROUNDUP(initrd->mod_end, PAGE_SIZE) +
+                                      sizeof(mod)
+                                    : 0) +
+                            (cmdline ? ROUNDUP(strlen(cmdline) + 1,
+                                               elf_64bit(&elf) ? 8 : 4)
+                                     : 0));
+    if ( last_addr == INVALID_PADDR )
+    {
+        printk("Unable to find a memory region to load initrd and metadata\n");
+        return -ENOMEM;
+    }
 
     if ( initrd != NULL )
     {
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:34:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:34:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRhk-0001OB-2t; Thu, 09 Apr 2020 07:34:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRhi-0001Nx-Gg
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:26 +0000
X-Inumbo-ID: 89f12524-7a34-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 89f12524-7a34-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 07:34:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=m6z6fWG+U/K8Za2EFQCpL2GcBZ7EWKkqr7TCXULDQvU=; b=R8TnvkjI2WY7dgZSig7rD6jNex
 prjzSAWowzStY3+38Xn65Nl/oPke2UTqtcpzgNXThO157AlrNsYvI/sLOBhvFc4rsaqIIDsIKBS9r
 295c+y1F6hkc8H2e4XhkyXrUuVwHIUlAHTDOJVGUNcTZXDiD3OOBkjn/wGH0tg79zSzg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhh-0006vA-Qu
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhh-0001jj-Pv
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] iommu: fix check for autotranslated hardware domain
Message-Id: <E1jMRhh-0001jj-Pv@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:34:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ac75ea8b670a5b4029909b38987da996b8a94dae
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 9 09:08:17 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:08:17 2020 +0200

    iommu: fix check for autotranslated hardware domain
    
    The current position of the check_hwdom_reqs is wrong, as there's a
    is_iommu_enabled at the top of the function that will prevent getting
    to the check on systems without an IOMMU, because the hardware domain
    won't have the XEN_DOMCTL_CDF_iommu flag set.
    
    Move the position of the check so it's done before the
    is_iommu_enabled one, and thus attempts to create a translated
    hardware domain without an IOMMU can be detected.
    
    Fixes: f89f555827a ('remove late (on-demand) construction of IOMMU page tables')
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: faf0d606a6eb911449075b83ea0ad085960c9acb
    master date: 2020-03-05 10:43:46 +0100
---
 xen/drivers/passthrough/iommu.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c
index 05e740757a..bab7a3d099 100644
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -171,6 +171,9 @@ int iommu_domain_init(struct domain *d, unsigned int opts)
     struct domain_iommu *hd = dom_iommu(d);
     int ret = 0;
 
+    if ( is_hardware_domain(d) )
+        check_hwdom_reqs(d); /* may modify iommu_hwdom_strict */
+
     if ( !is_iommu_enabled(d) )
         return 0;
 
@@ -187,9 +190,6 @@ int iommu_domain_init(struct domain *d, unsigned int opts)
     if ( ret || is_system_domain(d) )
         return ret;
 
-    if ( is_hardware_domain(d) )
-        check_hwdom_reqs(d); /* may modify iommu_hwdom_strict */
-
     /*
      * Use shared page tables for HAP and IOMMU if the global option
      * is enabled (from which we can infer the h/w is capable) and
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:34:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:34:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRhu-0001PY-4c; Thu, 09 Apr 2020 07:34:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRhs-0001PK-Hi
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:36 +0000
X-Inumbo-ID: 8ff35730-7a34-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8ff35730-7a34-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 07:34:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=fQqekme3V32lmLwAW4TzHRUh6AiA19M0s5tghP4fqyI=; b=fBahD3MMh6SEaMUCQgCuSHFz7C
 8WbrTNznHPsQ7LGod5tmQ6qwBxbpWn5w5Tq58NZiH+GFzAG2nc1KKT6BHe0LC/BTKFUBXwv0zS6Kt
 hUhTaD50sGbM1GT7L8QPc7s9XDTXl8Vd2hWHunQx5oI2GTRpy42XTPtbqoGzH06Drcfc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhr-0006vt-Tg
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRhr-0001kZ-Sj
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/shim: fix ballooning up the guest
Message-Id: <E1jMRhr-0001kZ-Sj@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:34:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e9fdf6a455da1d3ab7e7d127738afc6456b13914
Author:     Igor Druzhinin <igor.druzhinin@citrix.com>
AuthorDate: Thu Apr 9 09:09:40 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:09:40 2020 +0200

    x86/shim: fix ballooning up the guest
    
    args.preempted is meaningless here as it doesn't signal whether the
    hypercall was preempted before. Use start_extent instead which is
    correct (as long as the hypercall was invoked in a "normal" way).
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    master commit: 76dbabb59eeaa78e9f57407e5b15a6606488333e
    master date: 2020-03-18 12:55:54 +0100
---
 xen/common/memory.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/memory.c b/xen/common/memory.c
index 309e872edf..3c085a0cd0 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1190,8 +1190,8 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         }
 
 #ifdef CONFIG_X86
-        if ( pv_shim && op != XENMEM_decrease_reservation && !args.preempted )
-            /* Avoid calling pv_shim_online_memory when preempted. */
+        if ( pv_shim && op != XENMEM_decrease_reservation && !start_extent )
+            /* Avoid calling pv_shim_online_memory when in a continuation. */
             pv_shim_online_memory(args.nr_extents, args.extent_order);
 #endif
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:34:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:34:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRi4-0001Rc-8W; Thu, 09 Apr 2020 07:34:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRi3-0001RU-Dq
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:47 +0000
X-Inumbo-ID: 95f6af38-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 95f6af38-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:34:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=3wRCX+7Lxc4NKhZudkqHX2X1/bJfIhboioJEh52nyNk=; b=S7cvju+b8BsMmRDe+lUocFoW2D
 pT4NGoByF4pc/HQMsx7chgKcAQyQTlRyT+Syupb7NyYSofiVFhC+qDVHXtVWXh4WbgCYzoIuNTEnM
 E8R6rBdU6KE9VyXFGwqCnKQ6XpIKY0HrqvA3zK0FRJ2MJkSCvL59ayEgv2sSFVZW3iWA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRi2-0006w2-04
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:46 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRi1-0001lJ-VP
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] sched: fix onlining cpu with core scheduling active
Message-Id: <E1jMRi1-0001lJ-VP@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:34:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6a5ebbb1fcfa25a4f0aa4c16b4abd63c1e7718bf
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:10:55 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:10:55 2020 +0200

    sched: fix onlining cpu with core scheduling active
    
    When onlining a cpu cpupool_cpu_add() checks whether all siblings of
    the new cpu are free in order to decide whether to add it to cpupool0.
    In case the added cpu is not the last sibling to be onlined this test
    is wrong as it only checks for all online siblings to be free. The
    test should include the check for the number of siblings having
    reached the scheduling granularity of cpupool0, too.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: 4c7d340f75abc64f131b0f9bffd6d66d72e43528
    master date: 2020-03-24 17:36:44 +0100
---
 xen/common/cpupool.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c
index 5a90bdc9ff..b90bf42703 100644
--- a/xen/common/cpupool.c
+++ b/xen/common/cpupool.c
@@ -615,7 +615,8 @@ static int cpupool_cpu_add(unsigned int cpu)
     get_sched_res(cpu)->cpupool = NULL;
 
     cpus = sched_get_opt_cpumask(cpupool0->gran, cpu);
-    if ( cpumask_subset(cpus, &cpupool_free_cpus) )
+    if ( cpumask_subset(cpus, &cpupool_free_cpus) &&
+         cpumask_weight(cpus) == cpupool_get_granularity(cpupool0) )
         ret = cpupool_assign_cpu_locked(cpupool0, cpu);
 
     rcu_read_unlock(&sched_res_rculock);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:34:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:34:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRiE-0001Sg-AO; Thu, 09 Apr 2020 07:34:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRiD-0001SV-0p
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:57 +0000
X-Inumbo-ID: 9bfa8d96-7a34-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9bfa8d96-7a34-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 07:34:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZDRL9DehtGLPLD2PZ6YQQLiSiWCLH5LDyeaRTL+g9mM=; b=qMq1amdnEQg/jQsVsC86x8n6LL
 Ua9PcP52sLhTRC4UZAzeAdr3c2eFzGeCOX1pww/kMr208+rtU3A5LTa2G7PIlQzIuouSndFqlLB6p
 k/KQoz2WfQX3D+jzDxGpDZvON45hKnuYullIDJd2WOhS4JWhvAhYKdlsH2G5bbQwzL08=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRiC-0006wJ-2s
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:56 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRiC-0001mf-1x
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:34:56 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] sched: fix cpu offlining with core scheduling
Message-Id: <E1jMRiC-0001mf-1x@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:34:56 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 680356ed13b62b790b2f8903e76f3941f71ac0ad
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:11:42 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:11:42 2020 +0200

    sched: fix cpu offlining with core scheduling
    
    Offlining a cpu with core scheduling active can result in a hanging
    system. Reason is the scheduling resource and unit of the to be removed
    cpus needs to be split in order to remove the cpu from its cpupool and
    move it to the idle scheduler. In case one of the involved cpus happens
    to have received a sched slave event due to a vcpu former having been
    running on that cpu being woken up again, it can happen that this cpu
    will enter sched_wait_rendezvous_in() while its scheduling resource is
    just about to be split. It might wait for ever for the other sibling
    to join, which will never happen due to the resources already being
    modified.
    
    This can easily be avoided by:
    - resetting the rendezvous counters of the idle unit which is kept
    - checking for a new scheduling resource in sched_wait_rendezvous_in()
      after reacquiring the scheduling lock and resetting the counters in
      that case without scheduling another vcpu
    - moving schedule resource modifications (in schedule_cpu_rm()) and
      retrieving (schedule(), sched_slave() is fine already, others are not
      critical) into locked regions
    
    Reported-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: b6f5334aeaca133ad47ade06f4d22baf5984b55d
    master date: 2020-03-26 12:23:59 +0100
---
 xen/common/schedule.c | 39 ++++++++++++++++++++++++++++++++-------
 1 file changed, 32 insertions(+), 7 deletions(-)

diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index 27fde772be..820bd5050c 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -2112,6 +2112,10 @@ void sched_context_switched(struct vcpu *vprev, struct vcpu *vnext)
     rcu_read_unlock(&sched_res_rculock);
 }
 
+/*
+ * Switch to a new context or keep the current one running.
+ * On x86 it won't return, so it needs to drop the still held sched_res_rculock.
+ */
 static void sched_context_switch(struct vcpu *vprev, struct vcpu *vnext,
                                  bool reset_idle_unit, s_time_t now)
 {
@@ -2221,6 +2225,9 @@ static struct vcpu *sched_force_context_switch(struct vcpu *vprev,
  * zero do_schedule() is called and the rendezvous counter for leaving
  * context_switch() is set. All other members will wait until the counter is
  * becoming zero, dropping the schedule lock in between.
+ * Either returns the new unit to run, or NULL if no context switch is
+ * required or (on Arm) has already been performed. If NULL is returned
+ * sched_res_rculock has been dropped.
  */
 static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
                                                    spinlock_t **lock, int cpu,
@@ -2228,7 +2235,8 @@ static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
 {
     struct sched_unit *next;
     struct vcpu *v;
-    unsigned int gran = get_sched_res(cpu)->granularity;
+    struct sched_resource *sr = get_sched_res(cpu);
+    unsigned int gran = sr->granularity;
 
     if ( !--prev->rendezvous_in_cnt )
     {
@@ -2295,6 +2303,21 @@ static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
             atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
             prev->rendezvous_in_cnt = 0;
         }
+
+        /*
+         * Check for scheduling resource switched. This happens when we are
+         * moved away from our cpupool and cpus are subject of the idle
+         * scheduler now.
+         */
+        if ( unlikely(sr != get_sched_res(cpu)) )
+        {
+            ASSERT(is_idle_unit(prev));
+            atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
+            prev->rendezvous_in_cnt = 0;
+            pcpu_schedule_unlock_irq(*lock, cpu);
+            rcu_read_unlock(&sched_res_rculock);
+            return NULL;
+        }
     }
 
     return prev->next_task;
@@ -2380,11 +2403,11 @@ static void schedule(void)
 
     rcu_read_lock(&sched_res_rculock);
 
+    lock = pcpu_schedule_lock_irq(cpu);
+
     sr = get_sched_res(cpu);
     gran = sr->granularity;
 
-    lock = pcpu_schedule_lock_irq(cpu);
-
     if ( prev->rendezvous_in_cnt )
     {
         /*
@@ -2965,7 +2988,10 @@ int schedule_cpu_rm(unsigned int cpu)
         per_cpu(sched_res_idx, cpu_iter) = 0;
         if ( cpu_iter == cpu )
         {
-            idle_vcpu[cpu_iter]->sched_unit->priv = NULL;
+            unit = idle_vcpu[cpu_iter]->sched_unit;
+            unit->priv = NULL;
+            atomic_set(&unit->next_task->rendezvous_out_cnt, 0);
+            unit->rendezvous_in_cnt = 0;
         }
         else
         {
@@ -2996,6 +3022,8 @@ int schedule_cpu_rm(unsigned int cpu)
     }
     sr->scheduler = &sched_idle_ops;
     sr->sched_priv = NULL;
+    sr->granularity = 1;
+    sr->cpupool = NULL;
 
     smp_mb();
     sr->schedule_lock = &sched_free_cpu_lock;
@@ -3008,9 +3036,6 @@ int schedule_cpu_rm(unsigned int cpu)
     sched_free_udata(old_ops, vpriv_old);
     sched_free_pdata(old_ops, ppriv_old, cpu);
 
-    sr->granularity = 1;
-    sr->cpupool = NULL;
-
 out:
     rcu_read_unlock(&sched_res_rculock);
     xfree(sr_new);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:35:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:35:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRiN-0001Tl-CZ; Thu, 09 Apr 2020 07:35:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRiM-0001Td-SV
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:06 +0000
X-Inumbo-ID: a2081320-7a34-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a2081320-7a34-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 07:35:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=g9RsMlDo9IZCgvgEpTe7BxkFnow4tWkDywW9DM2iqdU=; b=3Nz9p1UbtShjMbYAKoMkQc3yKO
 4oAV5IWQTmLAvs8PFoHqY5dWSrtJEOQ8VmBgU4Sgv2Q9OlAo0lP1O3eCuRYVAUn6biQr0p6U04VZZ
 Blj80NtYDTbg6qD9ow5QS6VmfelHKegrhyvt/M2sf5Qi6eVrL4qv1c2etYoHNw/w0MH4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRiM-0006wj-83
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:06 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRiM-0001o8-65
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:06 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/ucode/amd: Fix assertion in compare_patch()
Message-Id: <E1jMRiM-0001o8-65@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:35:06 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e5195730f1c1d0dee68ffa951008c01431c371e8
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:12:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:12:26 2020 +0200

    x86/ucode/amd: Fix assertion in compare_patch()
    
    This is clearly a typo.
    
    Fixes: 9da23943ccd "microcode: introduce a global cache of ucode patch"
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 13ed5d49a4214dc3521d4af7bfcf13fbcf5bfd63
    master date: 2020-03-26 18:57:45 +0000
---
 xen/arch/x86/microcode_amd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 00750f7bbb..eb7ae79918 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -222,7 +222,7 @@ static enum microcode_match_result compare_patch(
 
     /* Both patches to compare are supposed to be applicable to local CPU. */
     ASSERT(microcode_fits(new->mc_amd) != MIS_UCODE);
-    ASSERT(microcode_fits(new->mc_amd) != MIS_UCODE);
+    ASSERT(microcode_fits(old->mc_amd) != MIS_UCODE);
 
     return compare_header(new_header, old_header);
 }
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:35:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:35:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRiY-0001V2-EL; Thu, 09 Apr 2020 07:35:18 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRiX-0001Ur-7s
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:17 +0000
X-Inumbo-ID: a8147380-7a34-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a8147380-7a34-11ea-9e09-bc764e2007e4;
 Thu, 09 Apr 2020 07:35:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=iIhgjWcK/+QyRSB8Chp2Qz82L9DerFTbB9YkDomUw44=; b=NXoXEvhqe892/SO6Wsr9ljGcMY
 84msZ1K6DKAiDtIReWuxzRnJDkaAktWntS7+7jx0M/TQDt0aU460HgW/q3jy1MJHxATTNkBXjegFo
 rpoRWYCADdwXWBa/HLjbWBDHyYXz6vU6GPcUwsDGGNzFLp+ppoFetaN61avR/zbZke9M=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRiW-0006ws-CP
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:16 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRiW-0001pK-BS
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:16 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/ucode: Fix error paths in apply_microcode()
Message-Id: <E1jMRiW-0001pK-BS@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:35:16 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 69c8307da29edf34fd2bd0d8c2e1973dc23da06c
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:13:15 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:13:15 2020 +0200

    x86/ucode: Fix error paths in apply_microcode()
    
    In the unlikley case that patch application completes, but the resutling
    revision isn't expected, sig->rev doesn't get updated to match reality.
    
    It will get adjusted the next time collect_cpu_info() gets called, but in the
    meantime Xen might operate on a stale value.  Nothing good will come of this.
    
    Rewrite the logic to always update the stashed revision, before worrying about
    whether the attempt was a success or failure.
    
    Take the opportunity to make the printk() messages as consistent as possible.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: d2a0a96cf76603b2e2b87c3ce80c3f9d098327d4
    master date: 2020-03-26 18:57:45 +0000
---
 xen/arch/x86/microcode_amd.c   | 14 +++++++-------
 xen/arch/x86/microcode_intel.c | 22 +++++++++++-----------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index eb7ae79918..4931a725ea 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -229,11 +229,11 @@ static enum microcode_match_result compare_patch(
 
 static int apply_microcode(const struct microcode_patch *patch)
 {
-    uint32_t rev;
     int hw_err;
     unsigned int cpu = smp_processor_id();
     struct cpu_signature *sig = &per_cpu(cpu_sig, cpu);
     const struct microcode_header_amd *hdr;
+    uint32_t rev, old_rev = sig->rev;
 
     if ( !patch )
         return -ENOENT;
@@ -249,6 +249,7 @@ static int apply_microcode(const struct microcode_patch *patch)
 
     /* get patch id after patching */
     rdmsrl(MSR_AMD_PATCHLEVEL, rev);
+    sig->rev = rev;
 
     /*
      * Some processors leave the ucode blob mapping as UC after the update.
@@ -259,15 +260,14 @@ static int apply_microcode(const struct microcode_patch *patch)
     /* check current patch id and patch's id for match */
     if ( hw_err || (rev != hdr->patch_id) )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed\n", cpu, rev, hdr->patch_id);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, hdr->patch_id, rev);
         return -EIO;
     }
 
-    printk(KERN_WARNING "microcode: CPU%d updated from revision %#x to %#x\n",
-           cpu, sig->rev, hdr->patch_id);
-
-    sig->rev = rev;
+    printk(XENLOG_WARNING "microcode: CPU%u updated from revision %#x to %#x\n",
+           cpu, old_rev, rev);
 
     return 0;
 }
diff --git a/xen/arch/x86/microcode_intel.c b/xen/arch/x86/microcode_intel.c
index 9f66057aad..e37c46a836 100644
--- a/xen/arch/x86/microcode_intel.c
+++ b/xen/arch/x86/microcode_intel.c
@@ -285,10 +285,10 @@ static enum microcode_match_result compare_patch(
 static int apply_microcode(const struct microcode_patch *patch)
 {
     uint64_t msr_content;
-    unsigned int val[2];
-    unsigned int cpu_num = raw_smp_processor_id();
+    unsigned int cpu = smp_processor_id();
     struct cpu_signature *sig = &this_cpu(cpu_sig);
     const struct microcode_intel *mc_intel;
+    uint32_t rev, old_rev = sig->rev;
 
     if ( !patch )
         return -ENOENT;
@@ -309,20 +309,20 @@ static int apply_microcode(const struct microcode_patch *patch)
 
     /* get the current revision from MSR 0x8B */
     rdmsrl(MSR_IA32_UCODE_REV, msr_content);
-    val[1] = (uint32_t)(msr_content >> 32);
+    sig->rev = rev = msr_content >> 32;
 
-    if ( val[1] != mc_intel->hdr.rev )
+    if ( rev != mc_intel->hdr.rev )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed. Resulting revision is %#x.\n", cpu_num,
-               sig->rev, mc_intel->hdr.rev, val[1]);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, mc_intel->hdr.rev, rev);
         return -EIO;
     }
-    printk(KERN_INFO "microcode: CPU%d updated from revision "
-           "%#x to %#x, date = %04x-%02x-%02x\n",
-           cpu_num, sig->rev, val[1], mc_intel->hdr.year,
+
+    printk(XENLOG_WARNING
+           "microcode: CPU%u updated from revision %#x to %#x, date = %04x-%02x-%02x\n",
+           cpu, old_rev, rev, mc_intel->hdr.year,
            mc_intel->hdr.month, mc_intel->hdr.day);
-    sig->rev = val[1];
 
     return 0;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:35:29 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:35:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRij-0001W4-GH; Thu, 09 Apr 2020 07:35:29 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRii-0001Vx-QL
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:28 +0000
X-Inumbo-ID: ae1708d8-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ae1708d8-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:35:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=YiFUc+klnRvyF9Dpi4V5r3YgdUJV24UL3PqbeuMc7SU=; b=GIFg/EjhhaXOLmJHm4rFMD0Awt
 f5LGVmY59kczu3LmvEXnyRqVyxc9uij8CnHomgGBPuYEATxkP3eCIAtSgcqo1dFJ037h+6H3zeAoL
 KSYZb4vOHb9iCWeSHXoaGtLZSip9JU1m4e7Q0FTteybrWzei3q5gs3x453hxVmrxgip4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRig-0006x3-FO
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:26 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRig-0001qi-EX
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] SVM: Add union intstat_t for offset 68h in vmcb
 struct
Message-Id: <E1jMRig-0001qi-EX@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:35:26 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 16670ad459ff62cfbb56422a8b24e9400e18cf22
Author:     Pu Wen <puwen@hygon.cn>
AuthorDate: Thu Apr 9 09:14:09 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:14:09 2020 +0200

    SVM: Add union intstat_t for offset 68h in vmcb struct
    
    According to chapter "Appendix B Layout of VMCB" in the new version
    (v3.32) AMD64 APM[1], bit 1 of the VMCB offset 68h is defined as
    GUEST_INTERRUPT_MASK.
    
    In current xen codes, it use whole u64 interrupt_shadow to setup
    interrupt shadow, which will misuse other bit in VMCB offset 68h
    as part of interrupt_shadow, causing svm_get_interrupt_shadow() to
    mistake the guest having interrupts enabled as being in an interrupt
    shadow.  This has been observed to cause SeaBIOS to hang on boot.
    
    Add union intstat_t for VMCB offset 68h and fix codes to only use
    bit 0 as intr_shadow according to the new APM description.
    
    Reference:
    [1] https://www.amd.com/system/files/TechDocs/24593.pdf
    
    Signed-off-by: Pu Wen <puwen@hygon.cn>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 51900bb0288e1db213d218079c11003b5bb2426f
    master date: 2020-03-26 18:58:56 +0000
---
 xen/arch/x86/hvm/svm/nestedsvm.c   |  8 ++++----
 xen/arch/x86/hvm/svm/svm.c         |  8 ++++----
 xen/arch/x86/hvm/svm/svmdebug.c    |  4 ++--
 xen/include/asm-x86/hvm/svm/vmcb.h | 10 +++++++++-
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index fef124fb11..51719d6899 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -507,8 +507,8 @@ static int nsvm_vmcb_prepare4vmrun(struct vcpu *v, struct cpu_user_regs *regs)
         n2vmcb->_vintr.fields.intr_masking = 1;
     }
 
-    /* Shadow Mode */
-    n2vmcb->interrupt_shadow = ns_vmcb->interrupt_shadow;
+    /* Interrupt state */
+    n2vmcb->int_stat = ns_vmcb->int_stat;
 
     /* Exit codes */
     n2vmcb->exitcode = ns_vmcb->exitcode;
@@ -1060,8 +1060,8 @@ nsvm_vmcb_prepare4vmexit(struct vcpu *v, struct cpu_user_regs *regs)
     if (!(svm->ns_hostflags.fields.vintrmask))
         ns_vmcb->_vintr.fields.intr_masking = 0;
 
-    /* Shadow mode */
-    ns_vmcb->interrupt_shadow = n2vmcb->interrupt_shadow;
+    /* Interrupt state */
+    ns_vmcb->int_stat = n2vmcb->int_stat;
 
     /* Exit codes */
     ns_vmcb->exitcode = n2vmcb->exitcode;
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index dc1bd32b9b..dd2ec68650 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -116,7 +116,7 @@ void __update_guest_eip(struct cpu_user_regs *regs, unsigned int inst_len)
     regs->rip += inst_len;
     regs->eflags &= ~X86_EFLAGS_RF;
 
-    curr->arch.hvm.svm.vmcb->interrupt_shadow = 0;
+    curr->arch.hvm.svm.vmcb->int_stat.intr_shadow = 0;
 
     if ( regs->eflags & X86_EFLAGS_TF )
         hvm_inject_hw_exception(TRAP_debug, X86_EVENT_NO_EC);
@@ -432,7 +432,7 @@ static unsigned int svm_get_interrupt_shadow(struct vcpu *v)
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
     unsigned int intr_shadow = 0;
 
-    if ( vmcb->interrupt_shadow )
+    if ( vmcb->int_stat.intr_shadow )
         intr_shadow |= HVM_INTR_SHADOW_MOV_SS | HVM_INTR_SHADOW_STI;
 
     if ( vmcb_get_general1_intercepts(vmcb) & GENERAL1_INTERCEPT_IRET )
@@ -446,7 +446,7 @@ static void svm_set_interrupt_shadow(struct vcpu *v, unsigned int intr_shadow)
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
     u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
 
-    vmcb->interrupt_shadow =
+    vmcb->int_stat.intr_shadow =
         !!(intr_shadow & (HVM_INTR_SHADOW_MOV_SS|HVM_INTR_SHADOW_STI));
 
     general1_intercepts &= ~GENERAL1_INTERCEPT_IRET;
@@ -2971,7 +2971,7 @@ void svm_vmexit_handler(struct cpu_user_regs *regs)
          * retired.
          */
         general1_intercepts &= ~GENERAL1_INTERCEPT_IRET;
-        vmcb->interrupt_shadow = 1;
+        vmcb->int_stat.intr_shadow = 1;
 
         vmcb_set_general1_intercepts(vmcb, general1_intercepts);
         break;
diff --git a/xen/arch/x86/hvm/svm/svmdebug.c b/xen/arch/x86/hvm/svm/svmdebug.c
index 4293d8dba5..cf4eb6839d 100644
--- a/xen/arch/x86/hvm/svm/svmdebug.c
+++ b/xen/arch/x86/hvm/svm/svmdebug.c
@@ -51,9 +51,9 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb)
     printk("iopm_base_pa = %#"PRIx64" msrpm_base_pa = %#"PRIx64" tsc_offset = %#"PRIx64"\n",
            vmcb_get_iopm_base_pa(vmcb), vmcb_get_msrpm_base_pa(vmcb),
            vmcb_get_tsc_offset(vmcb));
-    printk("tlb_control = %#x vintr = %#"PRIx64" interrupt_shadow = %#"PRIx64"\n",
+    printk("tlb_control = %#x vintr = %#"PRIx64" int_stat = %#"PRIx64"\n",
            vmcb->tlb_control, vmcb_get_vintr(vmcb).bytes,
-           vmcb->interrupt_shadow);
+           vmcb->int_stat.raw);
     printk("eventinj %016"PRIx64", valid? %d, ec? %d, type %u, vector %#x\n",
            vmcb->eventinj.bytes, vmcb->eventinj.fields.v,
            vmcb->eventinj.fields.ev, vmcb->eventinj.fields.type,
diff --git a/xen/include/asm-x86/hvm/svm/vmcb.h b/xen/include/asm-x86/hvm/svm/vmcb.h
index 5c710286f7..10b51c64bb 100644
--- a/xen/include/asm-x86/hvm/svm/vmcb.h
+++ b/xen/include/asm-x86/hvm/svm/vmcb.h
@@ -318,6 +318,14 @@ typedef union
     } fields;
 } eventinj_t;
 
+typedef union {
+    struct {
+        bool intr_shadow:    1;
+        bool guest_intr_mask:1;
+    };
+    uint64_t raw;
+} intstat_t;
+
 typedef union
 {
     u64 bytes;
@@ -421,7 +429,7 @@ struct vmcb_struct {
     u8  tlb_control;            /* offset 0x5C */
     u8  res07[3];
     vintr_t _vintr;             /* offset 0x60 - cleanbit 3 */
-    u64 interrupt_shadow;       /* offset 0x68 */
+    intstat_t int_stat;         /* offset 0x68 */
     u64 exitcode;               /* offset 0x70 */
     u64 exitinfo1;              /* offset 0x78 */
     u64 exitinfo2;              /* offset 0x80 */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:35:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:35:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRis-0001XF-KJ; Thu, 09 Apr 2020 07:35:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRir-0001X6-9P
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:37 +0000
X-Inumbo-ID: b41a4506-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b41a4506-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:35:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Itukm1U0eMwMZoWj+4bzstmVdXlh7LuEUaheukoJRZk=; b=IenbQ5y6Bvta7KNXBpMG5PaTv3
 B1vAfr7edhps/xIm1scEV5pw0xegk9vrA5QbxGnktm9kB7myA4MlVJy4cUzljSQ8+SqQK2TuZnR4e
 EmgR6MfoUdzB4sd7Flr57zwthk0z1JJ9ZUueTwebxxIzcfFr7KII8Cb4NOGRnCWDYlFo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRiq-0006xr-IG
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRiq-0001sE-HK
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] libx86/CPUID: fix (not just) leaf 7 processing
Message-Id: <E1jMRiq-0001sE-HK@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:35:36 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 18d9129f44bdb70fbcc7c1f4b5fd4948f087f4a0
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:15:38 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:15:38 2020 +0200

    libx86/CPUID: fix (not just) leaf 7 processing
    
    For one, subleaves within the respective union shouldn't live in
    separate sub-structures. And then x86_cpuid_policy_fill_native() should,
    as it did originally, iterate over all subleaves here as well as over
    all main leaves. Switch to using a "<= MIN()"-based approach similar to
    that used in x86_cpuid_copy_to_buffer(). Also follow this for the
    extended main leaves then.
    
    Fixes: 1bd2b750537b ("libx86: Fix 32bit stubdom build of x86_cpuid_policy_fill_native()")
    Fixes: 97e4ebdcd765 ("x86/CPUID: support leaf 7 subleaf 1 / AVX512_BF16")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: eb0bad81fceb3e81df5f73441771b49b732edf56
    master date: 2020-03-27 11:40:59 +0100
---
 xen/include/xen/lib/x86/cpuid.h |  3 +--
 xen/lib/x86/cpuid.c             | 12 ++++++------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/xen/include/xen/lib/x86/cpuid.h b/xen/include/xen/lib/x86/cpuid.h
index 331ef4f4f0..f4ef8a9f2f 100644
--- a/xen/include/xen/lib/x86/cpuid.h
+++ b/xen/include/xen/lib/x86/cpuid.h
@@ -181,8 +181,7 @@ struct cpuid_policy
                 uint32_t _7d0;
                 struct { DECL_BITFIELD(7d0); };
             };
-        };
-        struct {
+
             /* Subleaf 1. */
             union {
                 uint32_t _7a1;
diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c
index 76b8511034..c111d43b00 100644
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -71,8 +71,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
     unsigned int i;
 
     cpuid_leaf(0, &p->basic.raw[0]);
-    for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->basic.raw),
-                           p->basic.max_leaf); ++i )
+    for ( i = 1; i <= MIN(p->basic.max_leaf,
+                          ARRAY_SIZE(p->basic.raw) - 1); ++i )
     {
         switch ( i )
         {
@@ -116,8 +116,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
     {
         cpuid_count_leaf(7, 0, &p->feat.raw[0]);
 
-        for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->feat.raw),
-                               p->feat.max_subleaf); ++i )
+        for ( i = 1; i <= MIN(p->feat.max_subleaf,
+                              ARRAY_SIZE(p->feat.raw) - 1); ++i )
             cpuid_count_leaf(7, i, &p->feat.raw[i]);
     }
 
@@ -172,8 +172,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
 
     /* Extended leaves. */
     cpuid_leaf(0x80000000, &p->extd.raw[0]);
-    for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->extd.raw),
-                           p->extd.max_leaf + 1 - 0x80000000); ++i )
+    for ( i = 1; i <= MIN(p->extd.max_leaf & 0xffffU,
+                          ARRAY_SIZE(p->extd.raw) - 1); ++i )
         cpuid_leaf(0x80000000 + i, &p->extd.raw[i]);
 
     x86_cpuid_policy_recalc_synth(p);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:35:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:35:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRj2-0001Z5-MG; Thu, 09 Apr 2020 07:35:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRj1-0001Ys-D5
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:47 +0000
X-Inumbo-ID: b9b34969-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b9b34969-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:35:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=oZkZfNkxpqumXBO0MwqdV2S7LNgQqVfnFNJ4VkNE1zk=; b=jGb2g/582yRG5vYDyOoCMozUMG
 0YN7g8tSiDGoWONT7eU/zydSn0fbQib4lFo1fhAQsPSLwaDCJi1Yaf+ZduSnvBkF5KDzZX3yvX7Un
 QN0U/YXEo3HoabnpdFM3qbuGPAs8pZW4IvHLX7TDl7mzhGylaTTw0aaTy4tXKZY9+GfQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRj0-0006y8-Ls
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:46 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRj0-0001ta-Kc
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:46 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/ucode/amd: Fix potential buffer overrun with
 equiv table handling
Message-Id: <E1jMRj0-0001ta-Kc@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:35:46 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c7a1e588d85c01e2e8a979ebd7c2277c73c13d6e
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:17:11 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:17:11 2020 +0200

    x86/ucode/amd: Fix potential buffer overrun with equiv table handling
    
    find_equiv_cpu_id() loops until it finds a 0 installed_cpu entry.  Well formed
    AMD microcode containers have this property.
    
    Extend the checking in install_equiv_cpu_table() to reject tables which don't
    have a sentinal at the end.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 1f97b6b9f1b5978659c5735954c37c130e7bb151
    master date: 2020-03-27 13:13:26 +0000
---
 xen/arch/x86/microcode_amd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 4931a725ea..5d85b94575 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -321,6 +321,7 @@ static int install_equiv_cpu_table(
     size_t *offset)
 {
     const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct equiv_cpu_entry *eq;
 
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
@@ -330,7 +331,9 @@ static int install_equiv_cpu_table(
         return -EINVAL;
     }
 
-    if ( mpbuf->len == 0 )
+    if ( mpbuf->len == 0 || mpbuf->len % sizeof(*eq) ||
+         (eq = (const void *)mpbuf->data,
+          eq[(mpbuf->len / sizeof(*eq)) - 1].installed_cpu) )
     {
         printk(KERN_ERR "microcode: Wrong microcode equivalent cpu table length\n");
         return -EINVAL;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:35:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:35:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRjC-0001aR-Ny; Thu, 09 Apr 2020 07:35:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRjB-0001aF-DA
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:57 +0000
X-Inumbo-ID: c024f4f4-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c024f4f4-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:35:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=CGy3IpYPJNBSOgKFDZXO4UFxBdb01sD4HB72lvI6N3M=; b=kP2A8VP7o23EcVruSB/lzTohzi
 PsvQ1IKUDsDsOExZ0IFWOrnD06eQgimTjzkUQ7rw5deE240W57dBbQyR1SWYJSFaGIyDARKL2H9B5
 CIXEHhNJPzsDUaBPIGYzVxTkP2vnpnko0sQ1IglCqNHRM57pP//Bqh6M/SrUdA0Gbi+4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjA-0006yL-Oq
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:56 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjA-0001v3-Nz
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:35:56 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/HVM: fix AMD ECS handling for Fam10
Message-Id: <E1jMRjA-0001v3-Nz@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:35:56 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d5be08064a42a8eb4f70701557942c039395137a
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:18:11 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:18:11 2020 +0200

    x86/HVM: fix AMD ECS handling for Fam10
    
    The involved comparison was, very likely inadvertently, converted from
    >= to > when making changes unrelated to the actual family range.
    
    Fixes: 9841eb71ea87 ("x86/cpuid: Drop a guests cached x86 family and model information")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    master commit: 5d515b1c296ebad6889748ea1e49e063453216a3
    master date: 2020-04-01 12:28:30 +0200
---
 xen/arch/x86/hvm/ioreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index e51aebd69a..0b54536bde 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -1283,7 +1283,7 @@ struct hvm_ioreq_server *hvm_select_ioreq_server(struct domain *d,
         if ( CF8_ADDR_HI(cf8) &&
              d->arch.cpuid->x86_vendor == X86_VENDOR_AMD &&
              (x86_fam = get_cpu_family(
-                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) > 0x10 &&
+                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) >= 0x10 &&
              x86_fam < 0x17 )
         {
             uint64_t msr_val;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:36:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:36:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRjM-0001bP-Pk; Thu, 09 Apr 2020 07:36:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRjL-0001bE-E6
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:07 +0000
X-Inumbo-ID: c626696e-7a34-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c626696e-7a34-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 07:36:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=c1l72sSZcSjN7qcafmbNn5N1/zcaki/0BdDwV08VqjA=; b=HbCoyU4kWCac+uth2HT1xNIgOi
 qzZSEue8UGd64wy81ZwMHa+HKJ76mP3MBvs5ED3ctCjWp20jkVoaRoabCLBpycGQwZwpaAYTkz9q2
 xRpLjcVf3m5+t1suQOYdvAks+MXEnqH+KySTvUAD1djEeGy5UDugL5yBZ20l2r4gYPHQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjK-0006yh-RX
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:06 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjK-0001ww-Qk
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:06 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/dom0: fix copy of low 1MB data for PVH
Message-Id: <E1jMRjK-0001ww-Qk@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:36:06 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 71b7eadb0b5ed0f6aade8e05dcdefa3d3fee8e88
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 9 09:18:56 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:18:56 2020 +0200

    x86/dom0: fix copy of low 1MB data for PVH
    
    The orders of start and end are inverted in order to calculate the
    size of the copy operation.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 3925402f5dd7ae93010c48688eb64f880c794267
    master date: 2020-04-01 12:36:57 +0200
---
 xen/arch/x86/hvm/dom0_build.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 9a46005494..78042bd702 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -463,7 +463,7 @@ static int __init pvh_populate_p2m(struct domain *d)
             enum hvm_translation_result res =
                  hvm_copy_to_guest_phys(mfn_to_maddr(_mfn(addr)),
                                         mfn_to_virt(addr),
-                                        d->arch.e820[i].addr - end,
+                                        end - d->arch.e820[i].addr,
                                         v);
 
             if ( res != HVMTRANS_okay )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:36:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:36:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRjW-0001cU-Rk; Thu, 09 Apr 2020 07:36:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRjV-0001cH-O2
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:17 +0000
X-Inumbo-ID: cc2b0e14-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cc2b0e14-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:36:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=bFo0cxyMejQUMh1KesCvjmiVW5Uj5cESswPuoF2XNpk=; b=xh/FGNpgmO6BNQfrzYG3uDbYW+
 Bw5GkLWMrY0lvYGuIeLGGdEzrQutXEuDpcLB0JWsWrmuGdcDUso4COhh6pmYhEnpcRl0+IZGGGGlP
 hikTlokG4juEk1V528P7K6ozFvno2aOgrof/ERAJyxUKXbo5xMPZZyJ8NMAirwHPtZCw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjU-0006yq-UO
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:16 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjU-0001yU-TV
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:16 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/ucode/amd: Fix more potential buffer overruns
 with microcode parsing
Message-Id: <E1jMRjU-0001yU-TV@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:36:16 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b3e08a6657bc7df96276a6039cd8f368709e13b8
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:19:51 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:19:51 2020 +0200

    x86/ucode/amd: Fix more potential buffer overruns with microcode parsing
    
    cpu_request_microcode() doesn't know the buffer is at least 4 bytes long
    before inspecting UCODE_MAGIC.
    
    install_equiv_cpu_table() doesn't know the boundary of the buffer it is
    interpreting as an equivalency table.  This case was clearly observed at one
    point in the past, given the subsequent overrun detection, but without
    comprehending that the damage was already done.
    
    Make the logic consistent with container_fast_forward() and pass size_left in
    to install_equiv_cpu_table().
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 718d1432000079ea7120f6cb770372afe707ce27
    master date: 2020-04-01 14:00:12 +0100
---
 xen/arch/x86/microcode_amd.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 5d85b94575..846cf099e8 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -318,11 +318,20 @@ static int get_ucode_from_buffer_amd(
 static int install_equiv_cpu_table(
     struct microcode_amd *mc_amd,
     const void *data,
+    size_t size_left,
     size_t *offset)
 {
-    const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct mpbhdr *mpbuf;
     const struct equiv_cpu_entry *eq;
 
+    if ( size_left < (sizeof(*mpbuf) + 4) ||
+         (mpbuf = data + *offset + 4,
+          size_left - sizeof(*mpbuf) - 4 < mpbuf->len) )
+    {
+        printk(XENLOG_WARNING "microcode: No space for equivalent cpu table\n");
+        return -EINVAL;
+    }
+
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
     if ( mpbuf->type != UCODE_EQUIV_CPU_TABLE_TYPE )
@@ -436,7 +445,7 @@ static struct microcode_patch *cpu_request_microcode(const void *buf,
 
     current_cpu_id = cpuid_eax(0x00000001);
 
-    if ( *(const uint32_t *)buf != UCODE_MAGIC )
+    if ( bufsize < 4 || *(const uint32_t *)buf != UCODE_MAGIC )
     {
         printk(KERN_ERR "microcode: Wrong microcode patch file magic\n");
         error = -EINVAL;
@@ -466,24 +475,13 @@ static struct microcode_patch *cpu_request_microcode(const void *buf,
      */
     while ( offset < bufsize )
     {
-        error = install_equiv_cpu_table(mc_amd, buf, &offset);
+        error = install_equiv_cpu_table(mc_amd, buf, bufsize - offset, &offset);
         if ( error )
         {
             printk(KERN_ERR "microcode: installing equivalent cpu table failed\n");
             break;
         }
 
-        /*
-         * Could happen as we advance 'offset' early
-         * in install_equiv_cpu_table
-         */
-        if ( offset > bufsize )
-        {
-            printk(KERN_ERR "microcode: Microcode buffer overrun\n");
-            error = -EINVAL;
-            break;
-        }
-
         if ( find_equiv_cpu_id(mc_amd->equiv_cpu_table, current_cpu_id,
                                &equiv_cpu_id) )
             break;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:36:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:36:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRjg-0001dU-Th; Thu, 09 Apr 2020 07:36:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRjg-0001dO-4i
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:28 +0000
X-Inumbo-ID: d23235ee-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d23235ee-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:36:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xHil2jX58QFGv057Cm44TNzgk5gvF6O/sxxlZiQ85Tc=; b=jIND/T21jdck4Va3Lp1HDjEwYU
 LBOGnpvn5f5BKkmvgLPVOyMOqdSQdRlecrWq4igw4E9vURAJf0Su8yK9Si/9fkQM2qcvExHflE+XU
 u6CB78pwnXwJceJQ1+rMU5LUi9x1ovaKGvCwZ8efG4/1ls5e8MAUbBHkEvPSWcVuEq5g=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjf-0006yz-1g
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:27 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjf-0001zO-0i
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:27 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] credit2: avoid vCPUs to ever reach lower credits
 than idle
Message-Id: <E1jMRjf-0001zO-0i@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:36:27 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ad5e611d04c463ca2c2dc1e477934cfaf75fc260
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 09:20:41 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:20:41 2020 +0200

    credit2: avoid vCPUs to ever reach lower credits than idle
    
    There have been report of stalls of guest vCPUs, when Credit2 was used.
    It seemed like these vCPUs were not getting scheduled for very long
    time, even under light load conditions (e.g., during dom0 boot).
    
    Investigations led to the discovery that --although rarely-- it can
    happen that a vCPU manages to run for very long timeslices. In Credit2,
    this means that, when runtime accounting happens, the vCPU will lose a
    large quantity of credits. This in turn may lead to the vCPU having less
    credits than the idle vCPUs (-2^30). At this point, the scheduler will
    pick the idle vCPU, instead of the ready to run vCPU, for a few
    "epochs", which often times is enough for the guest kernel to think the
    vCPU is not responding and crashing.
    
    An example of this situation is shown here. In fact, we can see d0v1
    sitting in the runqueue while all the CPUs are idle, as it has
    -1254238270 credits, which is smaller than -2^30 = −1073741824:
    
        (XEN) Runqueue 0:
        (XEN)   ncpus              = 28
        (XEN)   cpus               = 0-27
        (XEN)   max_weight         = 256
        (XEN)   pick_bias          = 22
        (XEN)   instload           = 1
        (XEN)   aveload            = 293391 (~111%)
        (XEN)   idlers: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        (XEN)   tickled: 00,00000000,00000000,00000000,00000000,00000000,00000000
        (XEN)   fully idle cores: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        [...]
        (XEN) Runqueue 0:
        (XEN) CPU[00] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[01] runq=0, sibling=00,..., core=00,...
        [...]
        (XEN) CPU[26] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[27] runq=0, sibling=00,..., core=00,...
        (XEN) RUNQ:
        (XEN)     0: [0.1] flags=0 cpu=5 credit=-1254238270 [w=256] load=262144 (~100%)
    
    We certainly don't want, under any circumstance, this to happen.
    Let's, therefore, define a minimum amount of credits a vCPU can have.
    During accounting, we make sure that, for however long the vCPU has
    run, it will never get to have less than such minimum amount of
    credits. Then, we set the credits of the idle vCPU to an even
    smaller value.
    
    NOTE: investigations have been done about _how_ it is possible for a
    vCPU to execute for so much time that its credits becomes so low. While
    still not completely clear, there are evidence that:
    - it only happens very rarely,
    - it appears to be both machine and workload specific,
    - it does not look to be a Credit2 (e.g., as it happens when
      running with Credit1 as well) issue, or a scheduler issue.
    
    This patch makes Credit2 more robust to events like this, whatever
    the cause is, and should hence be backported (as far as possible).
    
    Reported-by: Glen <glenbarney@gmail.com>
    Reported-by: Tomas Mozes <hydrapolic@gmail.com>
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    master commit: 36f3662f27dec32d76c0edb4c6b62b9628d6869d
    master date: 2020-04-03 10:45:43 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  5 ++---
 xen/common/sched_credit2.c | 53 ++++++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index d6e7e3f800..8f126f65f1 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -55,7 +55,7 @@
 0x00022204  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_add
 0x00022205  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle_check   [ dom:vcpu = 0x%(1)08x, credit = %(2)d, score = %(3)d ]
 0x00022206  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle         [ cpu = %(1)d ]
-0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d, mult = %(4)d ]
+0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d ]
 0x00022208  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:sched_tasklet
 0x00022209  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:update_load
 0x0002220a  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_assign    [ dom:vcpu = 0x%(1)08x, rq_id = %(2)d ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index aa894673ad..d3c8368e9d 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7718,13 +7718,12 @@ void sched_process(struct pcpu_info *p)
                 struct {
                     unsigned int vcpuid:16, domid:16;
                     int credit_start, credit_end;
-                    unsigned int multiplier;
                 } *r = (typeof(r))ri->d;
 
                 printf(" %s csched2:reset_credits d%uv%u, "
-                       "credit_start = %d, credit_end = %d, mult = %u\n",
+                       "credit_start = %d, credit_end = %d\n",
                        ri->dump_header, r->domid, r->vcpuid,
-                       r->credit_start, r->credit_end, r->multiplier);
+                       r->credit_start, r->credit_end);
             }
             break;
         case TRC_SCHED_CLASS_EVT(CSCHED2, 8):  /* SCHED_TASKLET    */
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index f7c477053c..42c9538da3 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -228,11 +228,21 @@
  */
 #define CSCHED2_CREDIT_INIT          MILLISECS(10)
 /*
+ * Minimum amount of credits VMs can have. Ideally, no VM would get
+ * close to this (unless a vCPU manages to execute for really long
+ * time uninterrupted). In case it happens, it makes no sense to
+ * track even deeper undershoots.
+ *
+ * NOTE: If making this smaller than -CSCHED2_CREDIT_INIT, adjust
+ * reset_credit() accordingly.
+ */
+#define CSCHED2_CREDIT_MIN           (-CSCHED2_CREDIT_INIT)
+/*
  * Amount of credit the idle units have. It never changes, as idle
  * units does not consume credits, and it must be lower than whatever
  * amount of credit 'regular' unit would end up with.
  */
-#define CSCHED2_IDLE_CREDIT          (-(1U<<30))
+#define CSCHED2_IDLE_CREDIT          (CSCHED2_CREDIT_MIN-1)
 /*
  * Carryover: How much "extra" credit may be carried over after
  * a reset.
@@ -776,10 +786,15 @@ static int get_fallback_cpu(struct csched2_unit *svc)
 static void t2c_update(struct csched2_runqueue_data *rqd, s_time_t time,
                           struct csched2_unit *svc)
 {
-    uint64_t val = time * rqd->max_weight + svc->residual;
+    int64_t val = time * rqd->max_weight + svc->residual;
 
     svc->residual = do_div(val, svc->weight);
-    svc->credit -= val;
+    /* Getting to lower credit than CSCHED2_CREDIT_MIN makes no sense. */
+    val = svc->credit - val;
+    if ( unlikely(val < CSCHED2_CREDIT_MIN) )
+        svc->credit = CSCHED2_CREDIT_MIN;
+    else
+        svc->credit = val;
 }
 
 static s_time_t c2t(struct csched2_runqueue_data *rqd, s_time_t credit, struct csched2_unit *svc)
@@ -1620,28 +1635,25 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
 {
     struct csched2_runqueue_data *rqd = c2rqd(ops, cpu);
     struct list_head *iter;
-    int m;
+    int reset = CSCHED2_CREDIT_INIT;
 
     /*
      * Under normal circumstances, snext->credit should never be less
      * than -CSCHED2_MIN_TIMER.  However, under some circumstances, an
      * unit with low credits may be allowed to run long enough that
-     * its credits are actually less than -CSCHED2_CREDIT_INIT.
+     * its credits are actually much lower than that.
      * (Instances have been observed, for example, where an unit with
      * 200us of credit was allowed to run for 11ms, giving it -10.8ms
      * of credit.  Thus it was still negative even after the reset.)
      *
      * If this is the case for snext, we simply want to keep moving
-     * everyone up until it is in the black again.  This fair because
-     * none of the other units want to run at the moment.
-     *
-     * Rather than looping, however, we just calculate a multiplier,
-     * avoiding an integer division and multiplication in the common
-     * case.
+     * everyone up until it is in the black again. This means that,
+     * since CSCHED2_CREDIT_MIN is -CSCHED2_CREDIT_INIT, we need to
+     * actually add 2*CSCHED2_CREDIT_INIT.
      */
-    m = 1;
-    if ( snext->credit < -CSCHED2_CREDIT_INIT )
-        m += (-snext->credit) / CSCHED2_CREDIT_INIT;
+    ASSERT(snext->credit >= CSCHED2_CREDIT_MIN);
+    if ( unlikely(snext->credit == CSCHED2_CREDIT_MIN) )
+        reset += CSCHED2_CREDIT_INIT;
 
     list_for_each( iter, &rqd->svc )
     {
@@ -1672,15 +1684,7 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
         }
 
         start_credit = svc->credit;
-
-        /*
-         * Add INIT * m, avoiding integer multiplication in the common case.
-         */
-        if ( likely(m==1) )
-            svc->credit += CSCHED2_CREDIT_INIT;
-        else
-            svc->credit += m * CSCHED2_CREDIT_INIT;
-
+        svc->credit += reset;
         /* "Clip" credits to max carryover */
         if ( svc->credit > CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX )
             svc->credit = CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX;
@@ -1692,19 +1696,18 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
             struct {
                 unsigned unit:16, dom:16;
                 int credit_start, credit_end;
-                unsigned multiplier;
             } d;
             d.dom = svc->unit->domain->domain_id;
             d.unit = svc->unit->unit_id;
             d.credit_start = start_credit;
             d.credit_end = svc->credit;
-            d.multiplier = m;
             __trace_var(TRC_CSCHED2_CREDIT_RESET, 1,
                         sizeof(d),
                         (unsigned char *)&d);
         }
     }
 
+    ASSERT(snext->credit > 0);
     SCHED_STAT_CRANK(credit_reset);
 
     /* No need to resort runqueue, as everyone's order should be the same. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:36:39 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:36:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRjr-0001ej-0t; Thu, 09 Apr 2020 07:36:39 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRjq-0001ec-34
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:38 +0000
X-Inumbo-ID: d835c988-7a34-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d835c988-7a34-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:36:37 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=eyAd+rMWmVFgZCzYGBMhmfNQVFPYhIZCIhDE4C2u1ao=; b=R0GXLxs/OarHJ9MGBTbLbXO1pj
 snQGClRLcyfWWoxsD1Vo+UmCf6FnxaYVwvSnuRgAVStWUg+dYxtb8QtD7kZNNQfMbLukcdQe/ZH3b
 wM7D2RkReX/dE31wFV1zbvVQMMv4xket/TKaa4ebSXNe5NyHRUgnGHpa44E4WkTz1R3o=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjp-0006za-4l
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:37 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjp-00020I-41
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:37 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] credit2: fix credit reset happening too few times
Message-Id: <E1jMRjp-00020I-41@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:36:37 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 04497b354f98240e150acad7b1a7ab09dbb77989
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 09:21:25 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:21:25 2020 +0200

    credit2: fix credit reset happening too few times
    
    There is a bug in commit 5e4b4199667b9 ("xen: credit2: only reset
    credit on reset condition"). In fact, the aim of that commit was to
    make sure that we do not perform too many credit reset operations
    (which are not super cheap, and in an hot-path). But the check used
    to determine whether a reset is necessary was the wrong one.
    
    In fact, knowing just that some vCPUs have been skipped, while
    traversing the runqueue (in runq_candidate()), is not enough. We
    need to check explicitly whether the first vCPU in the runqueue
    has a negative amount of credit.
    
    Since a trace record is changed, this patch updates xentrace format file
    and xenalyze as well
    
    This should be backported.
    
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Acked-by: George Dunlap <george.dunlap@citrix.com>
    master commit: dae7b62e976b28af9c8efa150618c25501bf1650
    master date: 2020-04-03 10:46:53 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  8 +++-----
 xen/common/sched_credit2.c | 30 +++++++++++++-----------------
 3 files changed, 17 insertions(+), 23 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index 8f126f65f1..deac4d8598 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -67,7 +67,7 @@
 0x00022210  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_check     [ lrq_id[16]:orq_id[16] = 0x%(1)08x, delta = %(2)d ]
 0x00022211  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_balance   [ l_bavgload = 0x%(2)08x%(1)08x, o_bavgload = 0x%(4)08x%(3)08x, lrq_id[16]:orq_id[16] = 0x%(5)08x ]
 0x00022212  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:pick_cpu       [ b_avgload = 0x%(2)08x%(1)08x, dom:vcpu = 0x%(3)08x, rq_id[16]:new_cpu[16] = %(4)d ]
-0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(4)d, skipped_vcpus = %(3)d, tickled_cpu = %(2)d ]
+0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(3)d, tickled_cpu = %(2)d ]
 0x00022214  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:schedule       [ rq:cpu = 0x%(1)08x, tasklet[8]:idle[8]:smt_idle[8]:tickled[8] = %(2)08x ]
 0x00022215  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:ratelimit      [ dom:vcpu = 0x%(1)08x, runtime = %(2)d ]
 0x00022216  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_cand_chk  [ dom:vcpu = 0x%(1)08x ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index d3c8368e9d..b7f4e2bea8 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7855,14 +7855,12 @@ void sched_process(struct pcpu_info *p)
             if (opt.dump_all) {
                 struct {
                     unsigned vcpuid:16, domid:16;
-                    unsigned tickled_cpu, skipped;
+                    unsigned tickled_cpu;
                     int credit;
                 } *r = (typeof(r))ri->d;
 
-                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, "
-                       "%u vcpus skipped, ",
-                       ri->dump_header, r->domid, r->vcpuid,
-                       r->credit, r->skipped);
+                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, ",
+                       ri->dump_header, r->domid, r->vcpuid, r->credit);
                 if (r->tickled_cpu == (unsigned)-1)
                     printf("no cpu was tickled\n");
                 else
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index 42c9538da3..ce7c56147b 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -3267,8 +3267,7 @@ csched2_runtime(const struct scheduler *ops, int cpu,
 static struct csched2_unit *
 runq_candidate(struct csched2_runqueue_data *rqd,
                struct csched2_unit *scurr,
-               int cpu, s_time_t now,
-               unsigned int *skipped)
+               int cpu, s_time_t now)
 {
     struct list_head *iter, *temp;
     struct sched_resource *sr = get_sched_res(cpu);
@@ -3276,8 +3275,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
     struct csched2_private *prv = csched2_priv(sr->scheduler);
     bool yield = false, soft_aff_preempt = false;
 
-    *skipped = 0;
-
     if ( unlikely(is_idle_unit(scurr->unit)) )
     {
         snext = scurr;
@@ -3371,12 +3368,9 @@ runq_candidate(struct csched2_runqueue_data *rqd,
                         (unsigned char *)&d);
         }
 
-        /* Only consider units that are allowed to run on this processor. */
+        /* Only consider vcpus that are allowed to run on this processor. */
         if ( !cpumask_test_cpu(cpu, svc->unit->cpu_hard_affinity) )
-        {
-            (*skipped)++;
             continue;
-        }
 
         /*
          * If an unit is meant to be picked up by another processor, and such
@@ -3385,7 +3379,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->tickled_cpu != -1 && svc->tickled_cpu != cpu &&
              cpumask_test_cpu(svc->tickled_cpu, &rqd->tickled) )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(deferred_to_tickled_cpu);
             continue;
         }
@@ -3397,7 +3390,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( sched_unit_master(svc->unit) != cpu
              && snext->credit + CSCHED2_MIGRATE_RESIST > svc->credit )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(migrate_resisted);
             continue;
         }
@@ -3421,14 +3413,13 @@ runq_candidate(struct csched2_runqueue_data *rqd,
     {
         struct {
             unsigned unit:16, dom:16;
-            unsigned tickled_cpu, skipped;
+            unsigned tickled_cpu;
             int credit;
         } d;
         d.dom = snext->unit->domain->domain_id;
         d.unit = snext->unit->unit_id;
         d.credit = snext->credit;
         d.tickled_cpu = snext->tickled_cpu;
-        d.skipped = *skipped;
         __trace_var(TRC_CSCHED2_RUNQ_CANDIDATE, 1,
                     sizeof(d),
                     (unsigned char *)&d);
@@ -3460,7 +3451,6 @@ static void csched2_schedule(
     struct csched2_runqueue_data *rqd;
     struct csched2_unit * const scurr = csched2_unit(currunit);
     struct csched2_unit *snext = NULL;
-    unsigned int skipped_units = 0;
     bool tickled;
     bool migrated = false;
 
@@ -3538,7 +3528,7 @@ static void csched2_schedule(
         snext = csched2_unit(sched_idle_unit(sched_cpu));
     }
     else
-        snext = runq_candidate(rqd, scurr, sched_cpu, now, &skipped_units);
+        snext = runq_candidate(rqd, scurr, sched_cpu, now);
 
     /* If switching from a non-idle runnable unit, put it
      * back on the runqueue. */
@@ -3550,6 +3540,8 @@ static void csched2_schedule(
     /* Accounting for non-idle tasks */
     if ( !is_idle_unit(snext->unit) )
     {
+        int top_credit;
+
         /* If switching, remove this from the runqueue and mark it scheduled */
         if ( snext != scurr )
         {
@@ -3577,11 +3569,15 @@ static void csched2_schedule(
          *  2) no other unit with higher credits wants to run.
          *
          * Here, where we want to check for reset, we need to make sure the
-         * proper unit is being used. In fact, runqueue_candidate() may have
-         * not returned the first unit in the runqueue, for various reasons
+         * proper unit is being used. In fact, runq_candidate() may have not
+         * returned the first unit in the runqueue, for various reasons
          * (e.g., affinity). Only trigger a reset when it does.
          */
-        if ( skipped_units == 0 && snext->credit <= CSCHED2_CREDIT_RESET )
+        if ( list_empty(&rqd->runq) )
+            top_credit = snext->credit;
+        else
+            top_credit = max(snext->credit, runq_elem(rqd->runq.next)->credit);
+        if ( top_credit <= CSCHED2_CREDIT_RESET )
         {
             reset_credit(ops, sched_cpu, now, snext);
             balance_load(ops, sched_cpu, now);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:36:49 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:36:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRk1-0001gU-2n; Thu, 09 Apr 2020 07:36:49 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRk0-0001gL-8R
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:48 +0000
X-Inumbo-ID: de39ca50-7a34-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id de39ca50-7a34-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 07:36:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=fp8GrhkBi4JRZG3jmslnimUxHmCnvtTp849kHzyCpNE=; b=xPZMR03rI9AaZ2YYEGonpgkjYr
 lSu4Z7lnkEqRlpv7GEri1eglZ2lvPuz7XAq0bvcvCYN0WbJHOZZE34aRXqqIY0RPZBZxxt0FHMI5j
 wJWDFgLr7j3Pn0Mb/AURMSzBPK7yzisx/RCV1D9olgKAoj15K2+hqYz2OE6L9QkFm43s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjz-0006zl-7l
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:47 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRjz-000217-6e
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:36:47 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] AMD/IOMMU: fix off-by-one in
 amd_iommu_get_paging_mode() callers
Message-Id: <E1jMRjz-000217-6e@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:36:47 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 181614a71070ee1dfb8d1fb954ca6127c24691a3
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:26:54 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:26:54 2020 +0200

    AMD/IOMMU: fix off-by-one in amd_iommu_get_paging_mode() callers
    
    amd_iommu_get_paging_mode() expects a count, not a "maximum possible"
    value. Prior to b4f042236ae0 dropping the reference, the use of our mis-
    named "max_page" in amd_iommu_domain_init() may have lead to such a
    misunderstanding. In an attempt to avoid such confusion in the future,
    rename the function's parameter and - while at it - convert it to an
    inline function.
    
    Also replace a literal 4 by an expression tying it to a wider use
    constant, just like amd_iommu_quarantine_init() does.
    
    Fixes: ea38867831da ("x86 / iommu: set up a scratch page in the quarantine domain")
    Fixes: b4f042236ae0 ("AMD/IOMMU: Cease using a dynamic height for the IOMMU pagetables")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: b75b3c62fe4afe381c6f74a07f614c0b39fe2f5d
    master date: 2020-03-16 11:24:29 +0100
---
 xen/drivers/passthrough/amd/iommu_map.c       |  6 +++---
 xen/drivers/passthrough/amd/pci_amd_iommu.c   | 22 ++++------------------
 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h | 17 ++++++++++++++++-
 3 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu_map.c b/xen/drivers/passthrough/amd/iommu_map.c
index 4e041b960f..5be27fe9f8 100644
--- a/xen/drivers/passthrough/amd/iommu_map.c
+++ b/xen/drivers/passthrough/amd/iommu_map.c
@@ -455,9 +455,9 @@ int amd_iommu_reserve_domain_unity_map(struct domain *domain,
 int __init amd_iommu_quarantine_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
-    unsigned long max_gfn =
-        PFN_DOWN((1ul << DEFAULT_DOMAIN_ADDRESS_WIDTH) - 1);
-    unsigned int level = amd_iommu_get_paging_mode(max_gfn);
+    unsigned long end_gfn =
+        1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT);
+    unsigned int level = amd_iommu_get_paging_mode(end_gfn);
     struct amd_iommu_pte *table;
 
     if ( hd->arch.root_table )
diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c
index dd3401f0dc..fd12858578 100644
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c
@@ -231,22 +231,6 @@ static int __must_check allocate_domain_resources(struct domain_iommu *hd)
     return rc;
 }
 
-int amd_iommu_get_paging_mode(unsigned long entries)
-{
-    int level = 1;
-
-    BUG_ON( !entries );
-
-    while ( entries > PTE_PER_TABLE_SIZE )
-    {
-        entries = PTE_PER_TABLE_ALIGN(entries) >> PTE_PER_TABLE_SHIFT;
-        if ( ++level > 6 )
-            return -ENOMEM;
-    }
-
-    return level;
-}
-
 static int amd_iommu_domain_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
@@ -259,8 +243,10 @@ static int amd_iommu_domain_init(struct domain *d)
      *   physical address space we give it, but this isn't known yet so use 4
      *   unilaterally.
      */
-    hd->arch.paging_mode = is_hvm_domain(d)
-        ? 4 : amd_iommu_get_paging_mode(get_upper_mfn_bound());
+    hd->arch.paging_mode = amd_iommu_get_paging_mode(
+        is_hvm_domain(d)
+        ? 1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT)
+        : get_upper_mfn_bound() + 1);
 
     return 0;
 }
diff --git a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
index 664dfc93b9..94e288f52d 100644
--- a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
+++ b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
@@ -54,7 +54,6 @@ int amd_iommu_init_late(void);
 int amd_iommu_update_ivrs_mapping_acpi(void);
 int iov_adjust_irq_affinities(void);
 
-int amd_iommu_get_paging_mode(unsigned long entries);
 int amd_iommu_quarantine_init(struct domain *d);
 
 /* mapping functions */
@@ -177,6 +176,22 @@ static inline unsigned long region_to_pages(unsigned long addr, unsigned long si
     return (PAGE_ALIGN(addr + size) - (addr & PAGE_MASK)) >> PAGE_SHIFT;
 }
 
+static inline int amd_iommu_get_paging_mode(unsigned long max_frames)
+{
+    int level = 1;
+
+    BUG_ON(!max_frames);
+
+    while ( max_frames > PTE_PER_TABLE_SIZE )
+    {
+        max_frames = PTE_PER_TABLE_ALIGN(max_frames) >> PTE_PER_TABLE_SHIFT;
+        if ( ++level > 6 )
+            return -ENOMEM;
+    }
+
+    return level;
+}
+
 static inline struct page_info* alloc_amd_iommu_pgtable(void)
 {
     struct page_info *pg;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:44:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:44:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRr4-0002XM-T9; Thu, 09 Apr 2020 07:44:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRr3-0002XH-Gp
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:05 +0000
X-Inumbo-ID: e2f65b34-7a35-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e2f65b34-7a35-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 07:44:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=c99Ln0A0vrsV0Y0UJGg3l9r8CBtiWCXNvy5UrBNq74c=; b=iIKmtxwDNjaWcDiEfiSeBtq47O
 lLwDT0S7s2EgxeTdhPQk41XQZYwF3o6VwyRnPrEQibe7Et//TypioEHMkCATmUGb6Yv5eIqgh1eJj
 ZqgYzd2J4LMV4mJlrx9pKF0NtCy5XLtbpdC8AROoD5Y0/d4KKPks8dhgMiqZvwcpymJY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRr2-00078w-Ke
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRr2-0002ie-JP
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] AMD/IOMMU: fix off-by-one in
 amd_iommu_get_paging_mode() callers
Message-Id: <E1jMRr2-0002ie-JP@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:44:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 813757cf12eab38f3f86fc76a59d9e11749b4b27
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:29:00 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:29:00 2020 +0200

    AMD/IOMMU: fix off-by-one in amd_iommu_get_paging_mode() callers
    
    amd_iommu_get_paging_mode() expects a count, not a "maximum possible"
    value. Prior to b4f042236ae0 dropping the reference, the use of our mis-
    named "max_page" in amd_iommu_domain_init() may have lead to such a
    misunderstanding. In an attempt to avoid such confusion in the future,
    rename the function's parameter and - while at it - convert it to an
    inline function.
    
    Also replace a literal 4 by an expression tying it to a wider use
    constant, just like amd_iommu_quarantine_init() does.
    
    Fixes: ea38867831da ("x86 / iommu: set up a scratch page in the quarantine domain")
    Fixes: b4f042236ae0 ("AMD/IOMMU: Cease using a dynamic height for the IOMMU pagetables")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: b75b3c62fe4afe381c6f74a07f614c0b39fe2f5d
    master date: 2020-03-16 11:24:29 +0100
---
 xen/drivers/passthrough/amd/iommu_map.c       |  6 +++---
 xen/drivers/passthrough/amd/pci_amd_iommu.c   | 22 ++++------------------
 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h | 17 ++++++++++++++++-
 3 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu_map.c b/xen/drivers/passthrough/amd/iommu_map.c
index c05ed9c317..8f0ec3dc8e 100644
--- a/xen/drivers/passthrough/amd/iommu_map.c
+++ b/xen/drivers/passthrough/amd/iommu_map.c
@@ -653,9 +653,9 @@ void amd_iommu_share_p2m(struct domain *d)
 int __init amd_iommu_quarantine_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
-    unsigned long max_gfn =
-        PFN_DOWN((1ul << DEFAULT_DOMAIN_ADDRESS_WIDTH) - 1);
-    unsigned int level = amd_iommu_get_paging_mode(max_gfn);
+    unsigned long end_gfn =
+        1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT);
+    unsigned int level = amd_iommu_get_paging_mode(end_gfn);
     uint64_t *table;
 
     if ( hd->arch.root_table )
diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c
index 00b34bf930..a0555e30a4 100644
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c
@@ -222,22 +222,6 @@ static int __must_check allocate_domain_resources(struct domain_iommu *hd)
     return rc;
 }
 
-int amd_iommu_get_paging_mode(unsigned long entries)
-{
-    int level = 1;
-
-    BUG_ON( !entries );
-
-    while ( entries > PTE_PER_TABLE_SIZE )
-    {
-        entries = PTE_PER_TABLE_ALIGN(entries) >> PTE_PER_TABLE_SHIFT;
-        if ( ++level > 6 )
-            return -ENOMEM;
-    }
-
-    return level;
-}
-
 static int amd_iommu_domain_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
@@ -250,8 +234,10 @@ static int amd_iommu_domain_init(struct domain *d)
      *   physical address space we give it, but this isn't known yet so use 4
      *   unilaterally.
      */
-    hd->arch.paging_mode = is_hvm_domain(d)
-        ? 4 : amd_iommu_get_paging_mode(get_upper_mfn_bound());
+    hd->arch.paging_mode = amd_iommu_get_paging_mode(
+        is_hvm_domain(d)
+        ? 1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT)
+        : get_upper_mfn_bound() + 1);
 
     return 0;
 }
diff --git a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
index 5a160b89ca..53189806bb 100644
--- a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
+++ b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
@@ -51,7 +51,6 @@ void get_iommu_features(struct amd_iommu *iommu);
 int amd_iommu_init(void);
 int amd_iommu_update_ivrs_mapping_acpi(void);
 
-int amd_iommu_get_paging_mode(unsigned long entries);
 int amd_iommu_quarantine_init(struct domain *d);
 
 /* mapping functions */
@@ -169,6 +168,22 @@ static inline unsigned long region_to_pages(unsigned long addr, unsigned long si
     return (PAGE_ALIGN(addr + size) - (addr & PAGE_MASK)) >> PAGE_SHIFT;
 }
 
+static inline int amd_iommu_get_paging_mode(unsigned long max_frames)
+{
+    int level = 1;
+
+    BUG_ON(!max_frames);
+
+    while ( max_frames > PTE_PER_TABLE_SIZE )
+    {
+        max_frames = PTE_PER_TABLE_ALIGN(max_frames) >> PTE_PER_TABLE_SHIFT;
+        if ( ++level > 6 )
+            return -ENOMEM;
+    }
+
+    return level;
+}
+
 static inline struct page_info* alloc_amd_iommu_pgtable(void)
 {
     struct page_info *pg;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:44:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:44:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRrE-0002Y8-Uw; Thu, 09 Apr 2020 07:44:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRrD-0002Xy-Bb
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:15 +0000
X-Inumbo-ID: e8f46b3e-7a35-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e8f46b3e-7a35-11ea-9e09-bc764e2007e4;
 Thu, 09 Apr 2020 07:44:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HNVGVD8ExhXs/p/MO1P4adv/URj1ItT/YG9blzQJ/Hs=; b=aWwRN//QL0W5V/dHSl5g0hhkiY
 rbxV4AR6cVbRhbK5VHqYlLVyS97jPdLyLE6GDoq09EKEM3ISIM7p0u4ZGz1uuJehIrq3+WynTbF+i
 Vk47o6RRqKZhL926AJhN9VvI9/38rqXkif3gSw+oW3pruG1gexQIg/NuMtFa+7hpVFfc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrC-000798-Nc
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrC-0002jR-MQ
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/vPMU: don't blindly assume
 IA32_PERF_CAPABILITIES MSR exists
Message-Id: <E1jMRrC-0002jR-MQ@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:44:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3c37292c844a23beffc802192600386e2ea6888c
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:30:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:30:14 2020 +0200

    x86/vPMU: don't blindly assume IA32_PERF_CAPABILITIES MSR exists
    
    Just like VMX'es lbr_tsx_fixup_check() the respective CPUID bit should
    be consulted first.
    
    Reported-by: Farrah Chen <farrah.chen@intel.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 15c39c7c913f26fba40231e103ce1ffa6101e7c9
    master date: 2020-02-26 17:35:48 +0100
---
 xen/arch/x86/cpu/vpmu_intel.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c
index 6e27f6ec8e..75aa11c6ad 100644
--- a/xen/arch/x86/cpu/vpmu_intel.c
+++ b/xen/arch/x86/cpu/vpmu_intel.c
@@ -900,7 +900,6 @@ int vmx_vpmu_initialise(struct vcpu *v)
 
 int __init core2_vpmu_init(void)
 {
-    u64 caps;
     unsigned int version = 0;
     unsigned int i;
 
@@ -932,8 +931,14 @@ int __init core2_vpmu_init(void)
 
     arch_pmc_cnt = core2_get_arch_pmc_count();
     fixed_pmc_cnt = core2_get_fixed_pmc_count();
-    rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
-    full_width_write = (caps >> 13) & 1;
+
+    if ( cpu_has_pdcm )
+    {
+        uint64_t caps;
+
+        rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
+        full_width_write = (caps >> 13) & 1;
+    }
 
     fixed_ctrl_mask = ~((1ull << (fixed_pmc_cnt * FIXED_CTR_CTRL_BITS)) - 1);
     /* mask .AnyThread bits for all fixed counters */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:44:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:44:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRrP-0002ZL-0d; Thu, 09 Apr 2020 07:44:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRrN-0002Z8-F1
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:25 +0000
X-Inumbo-ID: eef7e1e6-7a35-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id eef7e1e6-7a35-11ea-9e09-bc764e2007e4;
 Thu, 09 Apr 2020 07:44:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=tn13CdZAJhvN3Kw4y2Z59WGnn9p7JvLYxlWiy56+Zuw=; b=L4x4AzAGgsKGe/WjxCS1ita1fK
 VFQFuS2EoJG+vzFUa0HOmE6AqKZUo2nYQCuGcFDCw/Rcb1VkRkpK+e3jhYZQXtzkw/hsfhUAniOlG
 XwHkuTkO/idqwvnYXjyHU/J0mO1N86HN1FylpRFdQK6QAJaTXMN1GOIJhSBUEmesKzeA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrM-00079H-QN
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrM-0002lz-PN
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/shim: fix ballooning up the guest
Message-Id: <E1jMRrM-0002lz-PN@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:44:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4c187457d1890067350c1770b84b75cea1d97214
Author:     Igor Druzhinin <igor.druzhinin@citrix.com>
AuthorDate: Thu Apr 9 09:30:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:30:58 2020 +0200

    x86/shim: fix ballooning up the guest
    
    args.preempted is meaningless here as it doesn't signal whether the
    hypercall was preempted before. Use start_extent instead which is
    correct (as long as the hypercall was invoked in a "normal" way).
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    master commit: 76dbabb59eeaa78e9f57407e5b15a6606488333e
    master date: 2020-03-18 12:55:54 +0100
---
 xen/common/memory.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/memory.c b/xen/common/memory.c
index 74d6880ffd..dbc06fb0bf 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1198,8 +1198,8 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         }
 
 #ifdef CONFIG_X86
-        if ( pv_shim && op != XENMEM_decrease_reservation && !args.preempted )
-            /* Avoid calling pv_shim_online_memory when preempted. */
+        if ( pv_shim && op != XENMEM_decrease_reservation && !start_extent )
+            /* Avoid calling pv_shim_online_memory when in a continuation. */
             pv_shim_online_memory(args.nr_extents, args.extent_order);
 #endif
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:44:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:44:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRra-0002ai-4I; Thu, 09 Apr 2020 07:44:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRrY-0002aX-IT
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:36 +0000
X-Inumbo-ID: f4fa4264-7a35-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f4fa4264-7a35-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:44:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=EOha2ElXRrpsO0rgB25QK+gSXHBaL4yHNoNkLd4aPXc=; b=vp89NbnnoHG7q//8pKctgBdE8S
 0ubSszypzSQuXjlzMD5keI0M5yWwERRH78/4Z72UWKKg3M1xFAUk9r8lcLb0WnBLCtSjonHCURx24
 lQn+t9bLwhB8zhsaXIbPU+8Xzlpto07fjzQUiDguzYBTT9lA3C9AWcnCtdPKgL1wim7Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrW-00079s-T4
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrW-0002mX-Ry
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/ucode: Fix error paths in apply_microcode()
Message-Id: <E1jMRrW-0002mX-Ry@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:44:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 94f0bb7c3ff63b7322849cd80ed0d6c2b9998ee4
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:31:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:31:45 2020 +0200

    x86/ucode: Fix error paths in apply_microcode()
    
    In the unlikley case that patch application completes, but the resutling
    revision isn't expected, sig->rev doesn't get updated to match reality.
    
    It will get adjusted the next time collect_cpu_info() gets called, but in the
    meantime Xen might operate on a stale value.  Nothing good will come of this.
    
    Rewrite the logic to always update the stashed revision, before worrying about
    whether the attempt was a success or failure.
    
    Take the opportunity to make the printk() messages as consistent as possible.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: d2a0a96cf76603b2e2b87c3ce80c3f9d098327d4
    master date: 2020-03-26 18:57:45 +0000
---
 xen/arch/x86/microcode_amd.c   | 14 +++++++-------
 xen/arch/x86/microcode_intel.c | 21 +++++++++++----------
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 7a854c012f..01bd6d6cc1 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -194,7 +194,7 @@ static int apply_microcode(unsigned int cpu)
 {
     unsigned long flags;
     struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
-    uint32_t rev;
+    uint32_t rev, old_rev = uci->cpu_sig.rev;
     struct microcode_amd *mc_amd = uci->mc.mc_amd;
     struct microcode_header_amd *hdr;
     int hw_err;
@@ -215,6 +215,7 @@ static int apply_microcode(unsigned int cpu)
 
     /* get patch id after patching */
     rdmsrl(MSR_AMD_PATCHLEVEL, rev);
+    uci->cpu_sig.rev = rev;
 
     spin_unlock_irqrestore(&microcode_update_lock, flags);
 
@@ -227,15 +228,14 @@ static int apply_microcode(unsigned int cpu)
     /* check current patch id and patch's id for match */
     if ( hw_err || (rev != hdr->patch_id) )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed\n", cpu, rev, hdr->patch_id);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, hdr->patch_id, rev);
         return -EIO;
     }
 
-    printk(KERN_WARNING "microcode: CPU%d updated from revision %#x to %#x\n",
-           cpu, uci->cpu_sig.rev, hdr->patch_id);
-
-    uci->cpu_sig.rev = rev;
+    printk(XENLOG_WARNING "microcode: CPU%u updated from revision %#x to %#x\n",
+           cpu, old_rev, rev);
 
     return 0;
 }
diff --git a/xen/arch/x86/microcode_intel.c b/xen/arch/x86/microcode_intel.c
index 9657575c29..e511bd853c 100644
--- a/xen/arch/x86/microcode_intel.c
+++ b/xen/arch/x86/microcode_intel.c
@@ -281,9 +281,9 @@ static int apply_microcode(unsigned int cpu)
 {
     unsigned long flags;
     uint64_t msr_content;
-    unsigned int val[2];
     unsigned int cpu_num = raw_smp_processor_id();
     struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu_num);
+    uint32_t rev, old_rev = uci->cpu_sig.rev;
 
     /* We should bind the task to the CPU */
     BUG_ON(cpu_num != cpu);
@@ -303,23 +303,24 @@ static int apply_microcode(unsigned int cpu)
 
     /* get the current revision from MSR 0x8B */
     rdmsrl(MSR_IA32_UCODE_REV, msr_content);
-    val[1] = (uint32_t)(msr_content >> 32);
+    uci->cpu_sig.rev = rev = msr_content >> 32;
 
     spin_unlock_irqrestore(&microcode_update_lock, flags);
-    if ( val[1] != uci->mc.mc_intel->hdr.rev )
+
+    if ( rev != uci->mc.mc_intel->hdr.rev )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed. Resulting revision is %#x.\n", cpu_num,
-               uci->cpu_sig.rev, uci->mc.mc_intel->hdr.rev, val[1]);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, uci->mc.mc_intel->hdr.rev, rev);
         return -EIO;
     }
-    printk(KERN_INFO "microcode: CPU%d updated from revision "
-           "%#x to %#x, date = %04x-%02x-%02x \n",
-           cpu_num, uci->cpu_sig.rev, val[1],
+
+    printk(XENLOG_WARNING
+           "microcode: CPU%u updated from revision %#x to %#x, date = %04x-%02x-%02x\n",
+           cpu, old_rev, rev,
            uci->mc.mc_intel->hdr.date & 0xffff,
            uci->mc.mc_intel->hdr.date >> 24,
            (uci->mc.mc_intel->hdr.date >> 16) & 0xff);
-    uci->cpu_sig.rev = val[1];
 
     return 0;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:44:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:44:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRri-0002bd-68; Thu, 09 Apr 2020 07:44:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRrh-0002bN-Ki
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:45 +0000
X-Inumbo-ID: fafad750-7a35-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fafad750-7a35-11ea-83d8-bc764e2007e4;
 Thu, 09 Apr 2020 07:44:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=UTyDQmMFo88Bd6rtvLlMqIGByliRnMRP7135Qvv9YBc=; b=dlttPztphCiBDwiBEDXrUJmKky
 xsoJJUl0UC+tJUmJ6o+b7cwOU0OWoTHQ1vlfe1+za2v2R5AMuTx2c0oP1HJje7ncAkU4g0aJoBOAR
 sfcpTpZ5Kbd/BPuUiK7g5GLWrBgJz+CZqx5jeWywNPBQHoLbsiEHl9JiRA6Fq1VWunHs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrg-0007A4-VZ
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrg-0002nG-Uc
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] libx86/CPUID: fix (not just) leaf 7 processing
Message-Id: <E1jMRrg-0002nG-Uc@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:44:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 736c67bc46a333b24a9b0ffc902768ab96505ad6
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:32:36 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:32:36 2020 +0200

    libx86/CPUID: fix (not just) leaf 7 processing
    
    x86_cpuid_policy_fill_native() should, as it did originally, iterate
    over all subleaves here as well as over all main leaves. Switch to
    using a "<= MIN()"-based approach similar to that used in
    x86_cpuid_copy_to_buffer(). Also follow this for the extended main
    leaves then.
    
    Fixes: 1bd2b750537b ("libx86: Fix 32bit stubdom build of x86_cpuid_policy_fill_native()")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: eb0bad81fceb3e81df5f73441771b49b732edf56
    master date: 2020-03-27 11:40:59 +0100
---
 xen/lib/x86/cpuid.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c
index 5a3159b357..2e99e30dc9 100644
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -7,8 +7,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
     unsigned int i;
 
     cpuid_leaf(0, &p->basic.raw[0]);
-    for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->basic.raw),
-                           p->basic.max_leaf); ++i )
+    for ( i = 1; i <= MIN(p->basic.max_leaf,
+                          ARRAY_SIZE(p->basic.raw) - 1); ++i )
     {
         switch ( i )
         {
@@ -52,8 +52,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
     {
         cpuid_count_leaf(7, 0, &p->feat.raw[0]);
 
-        for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->feat.raw),
-                               p->feat.max_subleaf); ++i )
+        for ( i = 1; i <= MIN(p->feat.max_subleaf,
+                              ARRAY_SIZE(p->feat.raw) - 1); ++i )
             cpuid_count_leaf(7, i, &p->feat.raw[i]);
     }
 
@@ -106,8 +106,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
 
     /* Extended leaves. */
     cpuid_leaf(0x80000000, &p->extd.raw[0]);
-    for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->extd.raw),
-                           p->extd.max_leaf + 1 - 0x80000000); ++i )
+    for ( i = 1; i <= MIN(p->extd.max_leaf & 0xffffU,
+                          ARRAY_SIZE(p->extd.raw) - 1); ++i )
         cpuid_leaf(0x80000000 + i, &p->extd.raw[i]);
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:44:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:44:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRrs-0002dU-7m; Thu, 09 Apr 2020 07:44:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRrr-0002dN-Mb
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:55 +0000
X-Inumbo-ID: 00ffb6f2-7a36-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 00ffb6f2-7a36-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 07:44:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Q7huOnfQZ2dG3lzdANu+XWkT7C+ZSKLumG5DL57iwgg=; b=iILrw0nbEjc5zOyxGMmtdGsdBE
 LDEahSTxz9q7RqlTTalMKw9v3OhJZ23Cf3si2w6F97VqBlcqeoUOQwNKO8jFpdt61GD41cEAa/P/4
 6i2DHh3/idS0R2z0wJw+ukJ1MVpNT7Anhqb0BDpZoLyh1/nx9G4gKwaTdnpollwx7I3w=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrr-0007AF-2L
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRrr-0002ny-1D
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:44:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/ucode/amd: Fix potential buffer overrun with
 equiv table handling
Message-Id: <E1jMRrr-0002ny-1D@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:44:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f3264407d0feadd948359242ac346567d8afa23a
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:33:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:33:20 2020 +0200

    x86/ucode/amd: Fix potential buffer overrun with equiv table handling
    
    find_equiv_cpu_id() loops until it finds a 0 installed_cpu entry.  Well formed
    AMD microcode containers have this property.
    
    Extend the checking in install_equiv_cpu_table() to reject tables which don't
    have a sentinal at the end.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 1f97b6b9f1b5978659c5735954c37c130e7bb151
    master date: 2020-03-27 13:13:26 +0000
---
 xen/arch/x86/microcode_amd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 01bd6d6cc1..4a75cab684 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -297,6 +297,7 @@ static int install_equiv_cpu_table(
     size_t *offset)
 {
     const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct equiv_cpu_entry *eq;
 
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
@@ -306,7 +307,9 @@ static int install_equiv_cpu_table(
         return -EINVAL;
     }
 
-    if ( mpbuf->len == 0 )
+    if ( mpbuf->len == 0 || mpbuf->len % sizeof(*eq) ||
+         (eq = (const void *)mpbuf->data,
+          eq[(mpbuf->len / sizeof(*eq)) - 1].installed_cpu) )
     {
         printk(KERN_ERR "microcode: Wrong microcode equivalent cpu table length\n");
         return -EINVAL;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:45:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:45:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRs2-0002ed-9e; Thu, 09 Apr 2020 07:45:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRs1-0002eV-RQ
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:05 +0000
X-Inumbo-ID: 0692e9af-7a36-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0692e9af-7a36-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:45:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=71dAGFyx01S5Zk7oIWtUdpZlhJoxkAMMQOy1uUG/Etg=; b=6HqKvF+MkUDFMaeJ3SQw9IoPwX
 4OTxKOl74ERX5aw0Ux59cvqf+lVlrpwpD+8d9L+kWf11gyHopsxrWQ+jal6/aKbfuLpDJdz6sWLCu
 Rh1kl6zXxo/bHs6bfxgzm87ZapTs5tnL7gkXtqTBHkuJUIbS+P9aeZakyCkGU51Oc9jY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRs1-0007Ao-4u
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRs1-0002p0-3v
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/HVM: fix AMD ECS handling for Fam10
Message-Id: <E1jMRs1-0002p0-3v@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:45:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e282e87f151adab1b269cafc404e0f554d896a45
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:34:19 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:34:19 2020 +0200

    x86/HVM: fix AMD ECS handling for Fam10
    
    The involved comparison was, very likely inadvertently, converted from
    >= to > when making changes unrelated to the actual family range.
    
    Fixes: 9841eb71ea87 ("x86/cpuid: Drop a guests cached x86 family and model information")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    master commit: 5d515b1c296ebad6889748ea1e49e063453216a3
    master date: 2020-04-01 12:28:30 +0200
---
 xen/arch/x86/hvm/ioreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index 3b9d96bbc0..f7466bf4bd 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -1287,7 +1287,7 @@ struct hvm_ioreq_server *hvm_select_ioreq_server(struct domain *d,
         if ( CF8_ADDR_HI(cf8) &&
              d->arch.cpuid->x86_vendor == X86_VENDOR_AMD &&
              (x86_fam = get_cpu_family(
-                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) > 0x10 &&
+                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) >= 0x10 &&
              x86_fam < 0x17 )
         {
             uint64_t msr_val;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:45:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:45:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRsC-0002fp-Bc; Thu, 09 Apr 2020 07:45:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRsB-0002fj-Vj
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:16 +0000
X-Inumbo-ID: 0d04f840-7a36-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0d04f840-7a36-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 07:45:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=dCCK49ryTqyKQOrpxDaF6PuYAwAEkDhWaaVzX1ezNR4=; b=5BzMCFeKCMnAWHzIS26zO9T+VV
 7ipNfAZpTiGzrhrvL/wllfaePWKssUwjXOLSBpmuUIkoegWL/6WncbetBtod4H7sxCPO+wWelyP5g
 RljnJGHaLreciZ/t8qiKoD5AKboE/+yp0xB4Yu/TFTMpEcmkgG5iUvMdaU4PGULu8kqQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRsB-0007Ax-7o
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRsB-0002pp-6k
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/ucode/amd: Fix more potential buffer overruns
 with microcode parsing
Message-Id: <E1jMRsB-0002pp-6k@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:45:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9a082e14c66947f0acc4ca05d563b76a50571638
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:35:24 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:35:24 2020 +0200

    x86/ucode/amd: Fix more potential buffer overruns with microcode parsing
    
    cpu_request_microcode() doesn't know the buffer is at least 4 bytes long
    before inspecting UCODE_MAGIC.
    
    install_equiv_cpu_table() doesn't know the boundary of the buffer it is
    interpreting as an equivalency table.  This case was clearly observed at one
    point in the past, given the subsequent overrun detection, but without
    comprehending that the damage was already done.
    
    Make the logic consistent with container_fast_forward() and pass size_left in
    to install_equiv_cpu_table().
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 718d1432000079ea7120f6cb770372afe707ce27
    master date: 2020-04-01 14:00:12 +0100
---
 xen/arch/x86/microcode_amd.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 4a75cab684..d672c60713 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -294,11 +294,20 @@ static int get_ucode_from_buffer_amd(
 static int install_equiv_cpu_table(
     struct microcode_amd *mc_amd,
     const void *data,
+    size_t size_left,
     size_t *offset)
 {
-    const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct mpbhdr *mpbuf;
     const struct equiv_cpu_entry *eq;
 
+    if ( size_left < (sizeof(*mpbuf) + 4) ||
+         (mpbuf = data + *offset + 4,
+          size_left - sizeof(*mpbuf) - 4 < mpbuf->len) )
+    {
+        printk(XENLOG_WARNING "microcode: No space for equivalent cpu table\n");
+        return -EINVAL;
+    }
+
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
     if ( mpbuf->type != UCODE_EQUIV_CPU_TABLE_TYPE )
@@ -413,7 +422,7 @@ static int cpu_request_microcode(unsigned int cpu, const void *buf,
 
     current_cpu_id = cpuid_eax(0x00000001);
 
-    if ( *(const uint32_t *)buf != UCODE_MAGIC )
+    if ( bufsize < 4 || *(const uint32_t *)buf != UCODE_MAGIC )
     {
         printk(KERN_ERR "microcode: Wrong microcode patch file magic\n");
         error = -EINVAL;
@@ -443,24 +452,13 @@ static int cpu_request_microcode(unsigned int cpu, const void *buf,
      */
     while ( offset < bufsize )
     {
-        error = install_equiv_cpu_table(mc_amd, buf, &offset);
+        error = install_equiv_cpu_table(mc_amd, buf, bufsize - offset, &offset);
         if ( error )
         {
             printk(KERN_ERR "microcode: installing equivalent cpu table failed\n");
             break;
         }
 
-        /*
-         * Could happen as we advance 'offset' early
-         * in install_equiv_cpu_table
-         */
-        if ( offset > bufsize )
-        {
-            printk(KERN_ERR "microcode: Microcode buffer overrun\n");
-            error = -EINVAL;
-            break;
-        }
-
         if ( find_equiv_cpu_id(mc_amd->equiv_cpu_table, current_cpu_id,
                                &equiv_cpu_id) )
             break;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:45:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:45:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRsN-0002gq-Dg; Thu, 09 Apr 2020 07:45:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRsM-0002gg-GW
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:26 +0000
X-Inumbo-ID: 130fd39a-7a36-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 130fd39a-7a36-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 07:45:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=7D/kYCmjSBVWiWfBQYixyv8NBvlKj4iiyeOPYo6u1XE=; b=4eV0LdkvToXfbtmLZq+ulbA4cl
 L04lUQV6H7aXpQ8ifPWol1I2+zpDK8F9x8m+v+TypvwTq/wvivLcol5Wpzt8SyksT/5I/IAc85SuR
 HaTPHBMAMJvOHiFgsBOzunkNCSBd4IkbOM0ZHY6wAV7ZzTmHjbHpfpnQdGWcdlHXinQg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRsL-0007B6-C8
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRsL-0002qa-AF
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] credit2: avoid vCPUs to ever reach lower credits
 than idle
Message-Id: <E1jMRsL-0002qa-AF@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:45:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4c69d1c2dbe0ad1f5343852d9e596fe870892a6c
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 09:36:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:36:08 2020 +0200

    credit2: avoid vCPUs to ever reach lower credits than idle
    
    There have been report of stalls of guest vCPUs, when Credit2 was used.
    It seemed like these vCPUs were not getting scheduled for very long
    time, even under light load conditions (e.g., during dom0 boot).
    
    Investigations led to the discovery that --although rarely-- it can
    happen that a vCPU manages to run for very long timeslices. In Credit2,
    this means that, when runtime accounting happens, the vCPU will lose a
    large quantity of credits. This in turn may lead to the vCPU having less
    credits than the idle vCPUs (-2^30). At this point, the scheduler will
    pick the idle vCPU, instead of the ready to run vCPU, for a few
    "epochs", which often times is enough for the guest kernel to think the
    vCPU is not responding and crashing.
    
    An example of this situation is shown here. In fact, we can see d0v1
    sitting in the runqueue while all the CPUs are idle, as it has
    -1254238270 credits, which is smaller than -2^30 = −1073741824:
    
        (XEN) Runqueue 0:
        (XEN)   ncpus              = 28
        (XEN)   cpus               = 0-27
        (XEN)   max_weight         = 256
        (XEN)   pick_bias          = 22
        (XEN)   instload           = 1
        (XEN)   aveload            = 293391 (~111%)
        (XEN)   idlers: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        (XEN)   tickled: 00,00000000,00000000,00000000,00000000,00000000,00000000
        (XEN)   fully idle cores: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        [...]
        (XEN) Runqueue 0:
        (XEN) CPU[00] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[01] runq=0, sibling=00,..., core=00,...
        [...]
        (XEN) CPU[26] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[27] runq=0, sibling=00,..., core=00,...
        (XEN) RUNQ:
        (XEN)     0: [0.1] flags=0 cpu=5 credit=-1254238270 [w=256] load=262144 (~100%)
    
    We certainly don't want, under any circumstance, this to happen.
    Let's, therefore, define a minimum amount of credits a vCPU can have.
    During accounting, we make sure that, for however long the vCPU has
    run, it will never get to have less than such minimum amount of
    credits. Then, we set the credits of the idle vCPU to an even
    smaller value.
    
    NOTE: investigations have been done about _how_ it is possible for a
    vCPU to execute for so much time that its credits becomes so low. While
    still not completely clear, there are evidence that:
    - it only happens very rarely,
    - it appears to be both machine and workload specific,
    - it does not look to be a Credit2 (e.g., as it happens when
      running with Credit1 as well) issue, or a scheduler issue.
    
    This patch makes Credit2 more robust to events like this, whatever
    the cause is, and should hence be backported (as far as possible).
    
    Reported-by: Glen <glenbarney@gmail.com>
    Reported-by: Tomas Mozes <hydrapolic@gmail.com>
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    master commit: 36f3662f27dec32d76c0edb4c6b62b9628d6869d
    master date: 2020-04-03 10:45:43 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  5 ++---
 xen/common/sched_credit2.c | 53 ++++++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index d6e7e3f800..8f126f65f1 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -55,7 +55,7 @@
 0x00022204  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_add
 0x00022205  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle_check   [ dom:vcpu = 0x%(1)08x, credit = %(2)d, score = %(3)d ]
 0x00022206  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle         [ cpu = %(1)d ]
-0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d, mult = %(4)d ]
+0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d ]
 0x00022208  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:sched_tasklet
 0x00022209  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:update_load
 0x0002220a  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_assign    [ dom:vcpu = 0x%(1)08x, rq_id = %(2)d ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index aa894673ad..d3c8368e9d 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7718,13 +7718,12 @@ void sched_process(struct pcpu_info *p)
                 struct {
                     unsigned int vcpuid:16, domid:16;
                     int credit_start, credit_end;
-                    unsigned int multiplier;
                 } *r = (typeof(r))ri->d;
 
                 printf(" %s csched2:reset_credits d%uv%u, "
-                       "credit_start = %d, credit_end = %d, mult = %u\n",
+                       "credit_start = %d, credit_end = %d\n",
                        ri->dump_header, r->domid, r->vcpuid,
-                       r->credit_start, r->credit_end, r->multiplier);
+                       r->credit_start, r->credit_end);
             }
             break;
         case TRC_SCHED_CLASS_EVT(CSCHED2, 8):  /* SCHED_TASKLET    */
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index e24c1f7762..4e7f0aa29e 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -228,11 +228,21 @@
  */
 #define CSCHED2_CREDIT_INIT          MILLISECS(10)
 /*
+ * Minimum amount of credits VMs can have. Ideally, no VM would get
+ * close to this (unless a vCPU manages to execute for really long
+ * time uninterrupted). In case it happens, it makes no sense to
+ * track even deeper undershoots.
+ *
+ * NOTE: If making this smaller than -CSCHED2_CREDIT_INIT, adjust
+ * reset_credit() accordingly.
+ */
+#define CSCHED2_CREDIT_MIN           (-CSCHED2_CREDIT_INIT)
+/*
  * Amount of credit the idle vcpus have. It never changes, as idle
  * vcpus does not consume credits, and it must be lower than whatever
  * amount of credit 'regular' vcpu would end up with.
  */
-#define CSCHED2_IDLE_CREDIT          (-(1U<<30))
+#define CSCHED2_IDLE_CREDIT          (CSCHED2_CREDIT_MIN-1)
 /*
  * Carryover: How much "extra" credit may be carried over after
  * a reset.
@@ -775,10 +785,15 @@ static int get_fallback_cpu(struct csched2_vcpu *svc)
 static void t2c_update(struct csched2_runqueue_data *rqd, s_time_t time,
                           struct csched2_vcpu *svc)
 {
-    uint64_t val = time * rqd->max_weight + svc->residual;
+    int64_t val = time * rqd->max_weight + svc->residual;
 
     svc->residual = do_div(val, svc->weight);
-    svc->credit -= val;
+    /* Getting to lower credit than CSCHED2_CREDIT_MIN makes no sense. */
+    val = svc->credit - val;
+    if ( unlikely(val < CSCHED2_CREDIT_MIN) )
+        svc->credit = CSCHED2_CREDIT_MIN;
+    else
+        svc->credit = val;
 }
 
 static s_time_t c2t(struct csched2_runqueue_data *rqd, s_time_t credit, struct csched2_vcpu *svc)
@@ -1618,28 +1633,25 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
 {
     struct csched2_runqueue_data *rqd = c2rqd(ops, cpu);
     struct list_head *iter;
-    int m;
+    int reset = CSCHED2_CREDIT_INIT;
 
     /*
      * Under normal circumstances, snext->credit should never be less
      * than -CSCHED2_MIN_TIMER.  However, under some circumstances, a
      * vcpu with low credits may be allowed to run long enough that
-     * its credits are actually less than -CSCHED2_CREDIT_INIT.
+     * its credits are actually much lower than that.
      * (Instances have been observed, for example, where a vcpu with
      * 200us of credit was allowed to run for 11ms, giving it -10.8ms
      * of credit.  Thus it was still negative even after the reset.)
      *
      * If this is the case for snext, we simply want to keep moving
-     * everyone up until it is in the black again.  This fair because
-     * none of the other vcpus want to run at the moment.
-     *
-     * Rather than looping, however, we just calculate a multiplier,
-     * avoiding an integer division and multiplication in the common
-     * case.
+     * everyone up until it is in the black again. This means that,
+     * since CSCHED2_CREDIT_MIN is -CSCHED2_CREDIT_INIT, we need to
+     * actually add 2*CSCHED2_CREDIT_INIT.
      */
-    m = 1;
-    if ( snext->credit < -CSCHED2_CREDIT_INIT )
-        m += (-snext->credit) / CSCHED2_CREDIT_INIT;
+    ASSERT(snext->credit >= CSCHED2_CREDIT_MIN);
+    if ( unlikely(snext->credit == CSCHED2_CREDIT_MIN) )
+        reset += CSCHED2_CREDIT_INIT;
 
     list_for_each( iter, &rqd->svc )
     {
@@ -1670,15 +1682,7 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
         }
 
         start_credit = svc->credit;
-
-        /*
-         * Add INIT * m, avoiding integer multiplication in the common case.
-         */
-        if ( likely(m==1) )
-            svc->credit += CSCHED2_CREDIT_INIT;
-        else
-            svc->credit += m * CSCHED2_CREDIT_INIT;
-
+        svc->credit += reset;
         /* "Clip" credits to max carryover */
         if ( svc->credit > CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX )
             svc->credit = CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX;
@@ -1690,19 +1694,18 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
             struct {
                 unsigned vcpu:16, dom:16;
                 int credit_start, credit_end;
-                unsigned multiplier;
             } d;
             d.dom = svc->vcpu->domain->domain_id;
             d.vcpu = svc->vcpu->vcpu_id;
             d.credit_start = start_credit;
             d.credit_end = svc->credit;
-            d.multiplier = m;
             __trace_var(TRC_CSCHED2_CREDIT_RESET, 1,
                         sizeof(d),
                         (unsigned char *)&d);
         }
     }
 
+    ASSERT(snext->credit > 0);
     SCHED_STAT_CRANK(credit_reset);
 
     /* No need to resort runqueue, as everyone's order should be the same. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 07:45:39 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 07:45:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMRsY-0002i8-H0; Thu, 09 Apr 2020 07:45:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMRsX-0002hz-4I
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:37 +0000
X-Inumbo-ID: 191452ac-7a36-11ea-8296-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 191452ac-7a36-11ea-8296-12813bfff9fa;
 Thu, 09 Apr 2020 07:45:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=KH87mXoOyteIYBJkOIF/H/t1S7NTUnqL+M5mWHO4WTo=; b=trCFdTsfdMrNdb1s76QQk7GMGx
 6eD8d943CsihV1+Dhvsc5DGNIO9H/lkpVLE5g0hKeAcIOI1AOe6GZcR5DzffEC4JouA3F9nAjq0pG
 TxztpntfIivg4nogrRvyf1GSZTbGPe8lckEpIug6vK453F/MiJljI0/RfkhvtazcAVqQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRsV-0007Bw-FM
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMRsV-0002rc-EM
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 07:45:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] credit2: fix credit reset happening too few times
Message-Id: <E1jMRsV-0002rc-EM@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 07:45:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c1a1c4e8fb54038aee36305531426da4e3ad3872
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 09:36:51 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:36:51 2020 +0200

    credit2: fix credit reset happening too few times
    
    There is a bug in commit 5e4b4199667b9 ("xen: credit2: only reset
    credit on reset condition"). In fact, the aim of that commit was to
    make sure that we do not perform too many credit reset operations
    (which are not super cheap, and in an hot-path). But the check used
    to determine whether a reset is necessary was the wrong one.
    
    In fact, knowing just that some vCPUs have been skipped, while
    traversing the runqueue (in runq_candidate()), is not enough. We
    need to check explicitly whether the first vCPU in the runqueue
    has a negative amount of credit.
    
    Since a trace record is changed, this patch updates xentrace format file
    and xenalyze as well
    
    This should be backported.
    
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Acked-by: George Dunlap <george.dunlap@citrix.com>
    master commit: dae7b62e976b28af9c8efa150618c25501bf1650
    master date: 2020-04-03 10:46:53 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  8 +++-----
 xen/common/sched_credit2.c | 28 ++++++++++++----------------
 3 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index 8f126f65f1..deac4d8598 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -67,7 +67,7 @@
 0x00022210  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_check     [ lrq_id[16]:orq_id[16] = 0x%(1)08x, delta = %(2)d ]
 0x00022211  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_balance   [ l_bavgload = 0x%(2)08x%(1)08x, o_bavgload = 0x%(4)08x%(3)08x, lrq_id[16]:orq_id[16] = 0x%(5)08x ]
 0x00022212  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:pick_cpu       [ b_avgload = 0x%(2)08x%(1)08x, dom:vcpu = 0x%(3)08x, rq_id[16]:new_cpu[16] = %(4)d ]
-0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(4)d, skipped_vcpus = %(3)d, tickled_cpu = %(2)d ]
+0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(3)d, tickled_cpu = %(2)d ]
 0x00022214  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:schedule       [ rq:cpu = 0x%(1)08x, tasklet[8]:idle[8]:smt_idle[8]:tickled[8] = %(2)08x ]
 0x00022215  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:ratelimit      [ dom:vcpu = 0x%(1)08x, runtime = %(2)d ]
 0x00022216  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_cand_chk  [ dom:vcpu = 0x%(1)08x ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index d3c8368e9d..b7f4e2bea8 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7855,14 +7855,12 @@ void sched_process(struct pcpu_info *p)
             if (opt.dump_all) {
                 struct {
                     unsigned vcpuid:16, domid:16;
-                    unsigned tickled_cpu, skipped;
+                    unsigned tickled_cpu;
                     int credit;
                 } *r = (typeof(r))ri->d;
 
-                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, "
-                       "%u vcpus skipped, ",
-                       ri->dump_header, r->domid, r->vcpuid,
-                       r->credit, r->skipped);
+                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, ",
+                       ri->dump_header, r->domid, r->vcpuid, r->credit);
                 if (r->tickled_cpu == (unsigned)-1)
                     printf("no cpu was tickled\n");
                 else
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index 4e7f0aa29e..d6ebd126de 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -3260,16 +3260,13 @@ csched2_runtime(const struct scheduler *ops, int cpu,
 static struct csched2_vcpu *
 runq_candidate(struct csched2_runqueue_data *rqd,
                struct csched2_vcpu *scurr,
-               int cpu, s_time_t now,
-               unsigned int *skipped)
+               int cpu, s_time_t now)
 {
     struct list_head *iter, *temp;
     struct csched2_vcpu *snext = NULL;
     struct csched2_private *prv = csched2_priv(per_cpu(scheduler, cpu));
     bool yield = false, soft_aff_preempt = false;
 
-    *skipped = 0;
-
     if ( unlikely(is_idle_vcpu(scurr->vcpu)) )
     {
         snext = scurr;
@@ -3366,10 +3363,7 @@ runq_candidate(struct csched2_runqueue_data *rqd,
 
         /* Only consider vcpus that are allowed to run on this processor. */
         if ( !cpumask_test_cpu(cpu, svc->vcpu->cpu_hard_affinity) )
-        {
-            (*skipped)++;
             continue;
-        }
 
         /*
          * If a vcpu is meant to be picked up by another processor, and such
@@ -3378,7 +3372,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->tickled_cpu != -1 && svc->tickled_cpu != cpu &&
              cpumask_test_cpu(svc->tickled_cpu, &rqd->tickled) )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(deferred_to_tickled_cpu);
             continue;
         }
@@ -3390,7 +3383,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->vcpu->processor != cpu
              && snext->credit + CSCHED2_MIGRATE_RESIST > svc->credit )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(migrate_resisted);
             continue;
         }
@@ -3413,14 +3405,13 @@ runq_candidate(struct csched2_runqueue_data *rqd,
     {
         struct {
             unsigned vcpu:16, dom:16;
-            unsigned tickled_cpu, skipped;
+            unsigned tickled_cpu;
             int credit;
         } d;
         d.dom = snext->vcpu->domain->domain_id;
         d.vcpu = snext->vcpu->vcpu_id;
         d.credit = snext->credit;
         d.tickled_cpu = snext->tickled_cpu;
-        d.skipped = *skipped;
         __trace_var(TRC_CSCHED2_RUNQ_CANDIDATE, 1,
                     sizeof(d),
                     (unsigned char *)&d);
@@ -3451,7 +3442,6 @@ csched2_schedule(
     struct csched2_runqueue_data *rqd;
     struct csched2_vcpu * const scurr = csched2_vcpu(current);
     struct csched2_vcpu *snext = NULL;
-    unsigned int skipped_vcpus = 0;
     struct task_slice ret;
     bool tickled;
 
@@ -3529,7 +3519,7 @@ csched2_schedule(
         snext = csched2_vcpu(idle_vcpu[cpu]);
     }
     else
-        snext = runq_candidate(rqd, scurr, cpu, now, &skipped_vcpus);
+        snext = runq_candidate(rqd, scurr, cpu, now);
 
     /* If switching from a non-idle runnable vcpu, put it
      * back on the runqueue. */
@@ -3543,6 +3533,8 @@ csched2_schedule(
     /* Accounting for non-idle tasks */
     if ( !is_idle_vcpu(snext->vcpu) )
     {
+        int top_credit;
+
         /* If switching, remove this from the runqueue and mark it scheduled */
         if ( snext != scurr )
         {
@@ -3570,11 +3562,15 @@ csched2_schedule(
          *  2) no other vcpu with higher credits wants to run.
          *
          * Here, where we want to check for reset, we need to make sure the
-         * proper vcpu is being used. In fact, runqueue_candidate() may have
-         * not returned the first vcpu in the runqueue, for various reasons
+         * proper vcpu is being used. In fact, runq_candidate() may have not
+         * returned the first vcpu in the runqueue, for various reasons
          * (e.g., affinity). Only trigger a reset when it does.
          */
-        if ( skipped_vcpus == 0 && snext->credit <= CSCHED2_CREDIT_RESET )
+        if ( list_empty(&rqd->runq) )
+            top_credit = snext->credit;
+        else
+            top_credit = max(snext->credit, runq_elem(rqd->runq.next)->credit);
+        if ( top_credit <= CSCHED2_CREDIT_RESET )
         {
             reset_credit(ops, cpu, now, snext);
             balance_load(ops, cpu, now);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:22:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:22:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMSRq-0006kY-QM; Thu, 09 Apr 2020 08:22:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMSRp-0006kT-Cb
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:05 +0000
X-Inumbo-ID: 319af29a-7a3b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 319af29a-7a3b-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 08:22:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Hj8HmijS22W0lKbUCV8x8oM8JSujOejRDCEk8obZxqU=; b=ZhyZqUU8NbbF0n8N5fB1j4Ka98
 QetPtMxbZocApxhfsiqouW8+udbpuiH8zDcyt6sy/EOOeRQ0fX+6y/qDfxAWo0h0so1s6eoXtAQD9
 HQwm3FT3LME1AusaJx+p28HzIG5H3qXIOBxSXpHki2mUe+BAkrfMyqsDH61gihAx7oSM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSRo-0008SZ-3B
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSRo-0005dl-1y
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] AMD/IOMMU: fix off-by-one in
 amd_iommu_get_paging_mode() callers
Message-Id: <E1jMSRo-0005dl-1y@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:22:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 696d142276e277264a9c6fcdd4f00edc8a6ce292
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 10:11:50 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:11:50 2020 +0200

    AMD/IOMMU: fix off-by-one in amd_iommu_get_paging_mode() callers
    
    amd_iommu_get_paging_mode() expects a count, not a "maximum possible"
    value. Prior to b4f042236ae0 dropping the reference, the use of our mis-
    named "max_page" in amd_iommu_domain_init() may have lead to such a
    misunderstanding. In an attempt to avoid such confusion in the future,
    rename the function's parameter and - while at it - convert it to an
    inline function.
    
    Also replace a literal 4 by an expression tying it to a wider use
    constant, just like amd_iommu_quarantine_init() does.
    
    Fixes: ea38867831da ("x86 / iommu: set up a scratch page in the quarantine domain")
    Fixes: b4f042236ae0 ("AMD/IOMMU: Cease using a dynamic height for the IOMMU pagetables")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: b75b3c62fe4afe381c6f74a07f614c0b39fe2f5d
    master date: 2020-03-16 11:24:29 +0100
---
 xen/drivers/passthrough/amd/iommu_map.c       |  6 +++---
 xen/drivers/passthrough/amd/pci_amd_iommu.c   | 23 ++++-------------------
 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h | 17 ++++++++++++++++-
 3 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu_map.c b/xen/drivers/passthrough/amd/iommu_map.c
index 21fbea0467..aa382dbabd 100644
--- a/xen/drivers/passthrough/amd/iommu_map.c
+++ b/xen/drivers/passthrough/amd/iommu_map.c
@@ -745,9 +745,9 @@ void amd_iommu_share_p2m(struct domain *d)
 int __init amd_iommu_quarantine_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
-    unsigned long max_gfn =
-        PFN_DOWN((1ul << DEFAULT_DOMAIN_ADDRESS_WIDTH) - 1);
-    unsigned int level = amd_iommu_get_paging_mode(max_gfn);
+    unsigned long end_gfn =
+        1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT);
+    unsigned int level = amd_iommu_get_paging_mode(end_gfn);
     uint64_t *table;
 
     if ( hd->arch.root_table )
diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c
index 0b641ff75c..983ece5981 100644
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c
@@ -218,22 +218,6 @@ static int __must_check allocate_domain_resources(struct domain_iommu *hd)
     return rc;
 }
 
-int amd_iommu_get_paging_mode(unsigned long entries)
-{
-    int level = 1;
-
-    BUG_ON( !entries );
-
-    while ( entries > PTE_PER_TABLE_SIZE )
-    {
-        entries = PTE_PER_TABLE_ALIGN(entries) >> PTE_PER_TABLE_SHIFT;
-        if ( ++level > 6 )
-            return -ENOMEM;
-    }
-
-    return level;
-}
-
 static int amd_iommu_domain_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
@@ -246,9 +230,10 @@ static int amd_iommu_domain_init(struct domain *d)
      *   physical address space we give it, but this isn't known yet so use 4
      *   unilaterally.
      */
-    hd->arch.paging_mode = is_hvm_domain(d)
-        ? IOMMU_PAGING_MODE_LEVEL_4
-        : amd_iommu_get_paging_mode(get_upper_mfn_bound());
+    hd->arch.paging_mode = amd_iommu_get_paging_mode(
+        is_hvm_domain(d)
+        ? 1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT)
+        : get_upper_mfn_bound() + 1);
 
     return 0;
 }
diff --git a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
index c42688fe51..22d6614169 100644
--- a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
+++ b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
@@ -51,7 +51,6 @@ void get_iommu_features(struct amd_iommu *iommu);
 int amd_iommu_init(void);
 int amd_iommu_update_ivrs_mapping_acpi(void);
 
-int amd_iommu_get_paging_mode(unsigned long entries);
 int amd_iommu_quarantine_init(struct domain *d);
 
 /* mapping functions */
@@ -168,6 +167,22 @@ static inline unsigned long region_to_pages(unsigned long addr, unsigned long si
     return (PAGE_ALIGN(addr + size) - (addr & PAGE_MASK)) >> PAGE_SHIFT;
 }
 
+static inline int amd_iommu_get_paging_mode(unsigned long max_frames)
+{
+    int level = 1;
+
+    BUG_ON(!max_frames);
+
+    while ( max_frames > PTE_PER_TABLE_SIZE )
+    {
+        max_frames = PTE_PER_TABLE_ALIGN(max_frames) >> PTE_PER_TABLE_SHIFT;
+        if ( ++level > 6 )
+            return -ENOMEM;
+    }
+
+    return level;
+}
+
 static inline struct page_info* alloc_amd_iommu_pgtable(void)
 {
     struct page_info *pg;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:22:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:22:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMSRz-0006l5-SA; Thu, 09 Apr 2020 08:22:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMSRy-0006ky-RR
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:14 +0000
X-Inumbo-ID: 37a2136c-7a3b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 37a2136c-7a3b-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 08:22:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Of7XBbkG8aGbslVdgmmtcYKHh5Nyhfiel87dnK+FMhA=; b=KjorCepsDfr8cE7nTQrMiicSxQ
 TG7pe+1Z5kDfa5rxf3YoC8jwlcngV0/ozfYMld9qnG7ufjHV+5EyNEJkv8mJLvaoadBESigsJ4hQr
 tguTgNYJ/Rpr6sHszTbQG2SIRNAkTEKLmA4ppvjKdxIKIWpGW3kZfFXKC67P9gjDjk50=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSRy-0008Si-6Q
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSRy-0005eQ-5G
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] x86/vPMU: don't blindly assume
 IA32_PERF_CAPABILITIES MSR exists
Message-Id: <E1jMSRy-0005eQ-5G@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:22:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit dfcd120e81e476a421814e08e264e9b47dcc5c35
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 10:13:01 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:13:01 2020 +0200

    x86/vPMU: don't blindly assume IA32_PERF_CAPABILITIES MSR exists
    
    Just like VMX'es lbr_tsx_fixup_check() the respective CPUID bit should
    be consulted first.
    
    Reported-by: Farrah Chen <farrah.chen@intel.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 15c39c7c913f26fba40231e103ce1ffa6101e7c9
    master date: 2020-02-26 17:35:48 +0100
---
 xen/arch/x86/cpu/vpmu_intel.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c
index 6e27f6ec8e..75aa11c6ad 100644
--- a/xen/arch/x86/cpu/vpmu_intel.c
+++ b/xen/arch/x86/cpu/vpmu_intel.c
@@ -900,7 +900,6 @@ int vmx_vpmu_initialise(struct vcpu *v)
 
 int __init core2_vpmu_init(void)
 {
-    u64 caps;
     unsigned int version = 0;
     unsigned int i;
 
@@ -932,8 +931,14 @@ int __init core2_vpmu_init(void)
 
     arch_pmc_cnt = core2_get_arch_pmc_count();
     fixed_pmc_cnt = core2_get_fixed_pmc_count();
-    rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
-    full_width_write = (caps >> 13) & 1;
+
+    if ( cpu_has_pdcm )
+    {
+        uint64_t caps;
+
+        rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
+        full_width_write = (caps >> 13) & 1;
+    }
 
     fixed_ctrl_mask = ~((1ull << (fixed_pmc_cnt * FIXED_CTR_CTRL_BITS)) - 1);
     /* mask .AnyThread bits for all fixed counters */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:22:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:22:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMSSA-0006mN-Tv; Thu, 09 Apr 2020 08:22:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMSS8-0006mB-Vv
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:25 +0000
X-Inumbo-ID: 3da986f0-7a3b-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3da986f0-7a3b-11ea-9e09-bc764e2007e4;
 Thu, 09 Apr 2020 08:22:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=CI0NeMyGBN13b9EgqUdk6JVjAA7+/hba4WcpB4uOu2k=; b=nIHncjMzFmJP6i6eeWTAvyRc5e
 tFWTQzwezzaxhFrgkHaHcCjljx9ktL0z9JM3WwCAgxe2kkX7e7+9Xywnk5lR+o82SzO/LABjMip1w
 bkJNsEfqm6ltaQAVUDTk0oKyudED1DZEqSscipPqrUKVs203R5ONXPjX909SYBj8/HGo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSS8-0008Su-A7
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSS8-0005f7-86
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] x86/shim: fix ballooning up the guest
Message-Id: <E1jMSS8-0005f7-86@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:22:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 480d9b47840a354c56eacece5c1ea206c577ee15
Author:     Igor Druzhinin <igor.druzhinin@citrix.com>
AuthorDate: Thu Apr 9 10:13:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:13:45 2020 +0200

    x86/shim: fix ballooning up the guest
    
    args.preempted is meaningless here as it doesn't signal whether the
    hypercall was preempted before. Use start_extent instead which is
    correct (as long as the hypercall was invoked in a "normal" way).
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    master commit: 76dbabb59eeaa78e9f57407e5b15a6606488333e
    master date: 2020-03-18 12:55:54 +0100
---
 xen/common/memory.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/memory.c b/xen/common/memory.c
index dee85f1496..312a8ec91c 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1128,8 +1128,8 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         }
 
 #ifdef CONFIG_X86
-        if ( pv_shim && op != XENMEM_decrease_reservation && !args.preempted )
-            /* Avoid calling pv_shim_online_memory when preempted. */
+        if ( pv_shim && op != XENMEM_decrease_reservation && !start_extent )
+            /* Avoid calling pv_shim_online_memory when in a continuation. */
             pv_shim_online_memory(args.nr_extents, args.extent_order);
 #endif
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:22:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:22:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMSSL-0006nb-Vw; Thu, 09 Apr 2020 08:22:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMSSK-0006nU-ND
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:36 +0000
X-Inumbo-ID: 43acd2dc-7a3b-11ea-8299-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 43acd2dc-7a3b-11ea-8299-12813bfff9fa;
 Thu, 09 Apr 2020 08:22:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=lazfGVteP64AUIAlNpsurpzgA5e1NGVLIY/TX3L1dRY=; b=QXt4wt3E9cUYdbGUsXkg/W45mi
 wLjOrDyHJOABBPeh9GseOq4MpqIJADHOwpM0ZM6IaxIWPrdDNtOFXcbYSzWhRVleDW0KK3br8YHcm
 FEBgKON+FNrf4otPofQ1LYnkuE1/e9hwV8BqRQXFtMIRmr1S3G8qgsgaG3UOsjX81vRc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSI-0008Ta-Cx
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSI-0005fz-Bo
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] x86/ucode: Fix error paths in apply_microcode()
Message-Id: <E1jMSSI-0005fz-Bo@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:22:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ac3b39ce8386de5066760425e6895dc7735248a2
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 10:14:32 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:14:32 2020 +0200

    x86/ucode: Fix error paths in apply_microcode()
    
    In the unlikley case that patch application completes, but the resutling
    revision isn't expected, sig->rev doesn't get updated to match reality.
    
    It will get adjusted the next time collect_cpu_info() gets called, but in the
    meantime Xen might operate on a stale value.  Nothing good will come of this.
    
    Rewrite the logic to always update the stashed revision, before worrying about
    whether the attempt was a success or failure.
    
    Take the opportunity to make the printk() messages as consistent as possible.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: d2a0a96cf76603b2e2b87c3ce80c3f9d098327d4
    master date: 2020-03-26 18:57:45 +0000
---
 xen/arch/x86/microcode_amd.c   | 14 +++++++-------
 xen/arch/x86/microcode_intel.c | 21 +++++++++++----------
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 835d0f9906..afceaf83ba 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -194,7 +194,7 @@ static int apply_microcode(unsigned int cpu)
 {
     unsigned long flags;
     struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
-    uint32_t rev;
+    uint32_t rev, old_rev = uci->cpu_sig.rev;
     struct microcode_amd *mc_amd = uci->mc.mc_amd;
     struct microcode_header_amd *hdr;
     int hw_err;
@@ -215,6 +215,7 @@ static int apply_microcode(unsigned int cpu)
 
     /* get patch id after patching */
     rdmsrl(MSR_AMD_PATCHLEVEL, rev);
+    uci->cpu_sig.rev = rev;
 
     spin_unlock_irqrestore(&microcode_update_lock, flags);
 
@@ -227,15 +228,14 @@ static int apply_microcode(unsigned int cpu)
     /* check current patch id and patch's id for match */
     if ( hw_err || (rev != hdr->patch_id) )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed\n", cpu, rev, hdr->patch_id);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, hdr->patch_id, rev);
         return -EIO;
     }
 
-    printk(KERN_WARNING "microcode: CPU%d updated from revision %#x to %#x\n",
-           cpu, uci->cpu_sig.rev, hdr->patch_id);
-
-    uci->cpu_sig.rev = rev;
+    printk(XENLOG_WARNING "microcode: CPU%u updated from revision %#x to %#x\n",
+           cpu, old_rev, rev);
 
     return 0;
 }
diff --git a/xen/arch/x86/microcode_intel.c b/xen/arch/x86/microcode_intel.c
index 9657575c29..e511bd853c 100644
--- a/xen/arch/x86/microcode_intel.c
+++ b/xen/arch/x86/microcode_intel.c
@@ -281,9 +281,9 @@ static int apply_microcode(unsigned int cpu)
 {
     unsigned long flags;
     uint64_t msr_content;
-    unsigned int val[2];
     unsigned int cpu_num = raw_smp_processor_id();
     struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu_num);
+    uint32_t rev, old_rev = uci->cpu_sig.rev;
 
     /* We should bind the task to the CPU */
     BUG_ON(cpu_num != cpu);
@@ -303,23 +303,24 @@ static int apply_microcode(unsigned int cpu)
 
     /* get the current revision from MSR 0x8B */
     rdmsrl(MSR_IA32_UCODE_REV, msr_content);
-    val[1] = (uint32_t)(msr_content >> 32);
+    uci->cpu_sig.rev = rev = msr_content >> 32;
 
     spin_unlock_irqrestore(&microcode_update_lock, flags);
-    if ( val[1] != uci->mc.mc_intel->hdr.rev )
+
+    if ( rev != uci->mc.mc_intel->hdr.rev )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed. Resulting revision is %#x.\n", cpu_num,
-               uci->cpu_sig.rev, uci->mc.mc_intel->hdr.rev, val[1]);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, uci->mc.mc_intel->hdr.rev, rev);
         return -EIO;
     }
-    printk(KERN_INFO "microcode: CPU%d updated from revision "
-           "%#x to %#x, date = %04x-%02x-%02x \n",
-           cpu_num, uci->cpu_sig.rev, val[1],
+
+    printk(XENLOG_WARNING
+           "microcode: CPU%u updated from revision %#x to %#x, date = %04x-%02x-%02x\n",
+           cpu, old_rev, rev,
            uci->mc.mc_intel->hdr.date & 0xffff,
            uci->mc.mc_intel->hdr.date >> 24,
            (uci->mc.mc_intel->hdr.date >> 16) & 0xff);
-    uci->cpu_sig.rev = val[1];
 
     return 0;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:22:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:22:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMSSV-0006ok-2q; Thu, 09 Apr 2020 08:22:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMSST-0006oZ-B1
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:45 +0000
X-Inumbo-ID: 49b8b7c2-7a3b-11ea-8299-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 49b8b7c2-7a3b-11ea-8299-12813bfff9fa;
 Thu, 09 Apr 2020 08:22:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hd3lZpZajpi5aKb8dN1C2yCq3gexaU/ZBY89SmuxSEo=; b=7CYMQKF2RJhYx2sJg4xVxtQSVw
 QVyDfkY61G2Q5e5S4Yp/pgIYy9XkUCN/gdGBa+OimFhi0PblENEInD2q9mJ6e/o5pnulcKmHmZTWH
 T+/dmcqCDeWissY5PBrSAOdEU9SAwAU+FmShlJkCQZI+0BpQfIrDBnA3dFE5MNozxjdw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSS-0008Tl-HC
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSS-0005gs-FV
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] x86/ucode/amd: Fix potential buffer overrun with
 equiv table handling
Message-Id: <E1jMSSS-0005gs-FV@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:22:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 09508fda40f08deed89e5f7e9f9b9744ff2bbeca
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 10:15:17 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:15:17 2020 +0200

    x86/ucode/amd: Fix potential buffer overrun with equiv table handling
    
    find_equiv_cpu_id() loops until it finds a 0 installed_cpu entry.  Well formed
    AMD microcode containers have this property.
    
    Extend the checking in install_equiv_cpu_table() to reject tables which don't
    have a sentinal at the end.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 1f97b6b9f1b5978659c5735954c37c130e7bb151
    master date: 2020-03-27 13:13:26 +0000
---
 xen/arch/x86/microcode_amd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index afceaf83ba..5080e54409 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -297,6 +297,7 @@ static int install_equiv_cpu_table(
     size_t *offset)
 {
     const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct equiv_cpu_entry *eq;
 
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
@@ -306,7 +307,9 @@ static int install_equiv_cpu_table(
         return -EINVAL;
     }
 
-    if ( mpbuf->len == 0 )
+    if ( mpbuf->len == 0 || mpbuf->len % sizeof(*eq) ||
+         (eq = (const void *)mpbuf->data,
+          eq[(mpbuf->len / sizeof(*eq)) - 1].installed_cpu) )
     {
         printk(KERN_ERR "microcode: Wrong microcode equivalent cpu table length\n");
         return -EINVAL;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:22:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:22:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMSSf-0006qV-4T; Thu, 09 Apr 2020 08:22:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMSSd-0006qK-6U
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:55 +0000
X-Inumbo-ID: 4fb6a5ee-7a3b-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4fb6a5ee-7a3b-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 08:22:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=p3x2U31KSKeATlHlHWBxnOuw0Deb0BU1AKbhLeX6/58=; b=MS4tSnuFfPo0+Z5CYlgQjs/gxj
 qVM6gcgJqrUgVYvB4+vPd9wm6iWiZbPKRuAoxzotohWXnsA22qBK40EN7IOP24LvunbFZM2n4b6g/
 hkuwEBnDa5AaV+zmSkDvn2Ng4EI6YiE2UELZ+S278ArDPwulRjbAslvZB5uygQ3HdBeM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSc-0008Tu-K0
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSc-0005hX-J6
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:22:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] x86/HVM: fix AMD ECS handling for Fam10
Message-Id: <E1jMSSc-0005hX-J6@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:22:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8f51dad75bcbf6b4b7954f27e9cec92742eb8c15
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 10:16:27 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:16:27 2020 +0200

    x86/HVM: fix AMD ECS handling for Fam10
    
    The involved comparison was, very likely inadvertently, converted from
    >= to > when making changes unrelated to the actual family range.
    
    Fixes: 9841eb71ea87 ("x86/cpuid: Drop a guests cached x86 family and model information")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    master commit: 5d515b1c296ebad6889748ea1e49e063453216a3
    master date: 2020-04-01 12:28:30 +0200
---
 xen/arch/x86/hvm/ioreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index f95fb18c1f..3698f07f29 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -1333,7 +1333,7 @@ struct hvm_ioreq_server *hvm_select_ioreq_server(struct domain *d,
         if ( CF8_ADDR_HI(cf8) &&
              d->arch.cpuid->x86_vendor == X86_VENDOR_AMD &&
              (x86_fam = get_cpu_family(
-                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) > 0x10 &&
+                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) >= 0x10 &&
              x86_fam < 0x17 )
         {
             uint64_t msr_val;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:23:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:23:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMSSp-0006rU-62; Thu, 09 Apr 2020 08:23:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMSSn-0006rK-E0
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:05 +0000
X-Inumbo-ID: 55b89f88-7a3b-11ea-8299-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 55b89f88-7a3b-11ea-8299-12813bfff9fa;
 Thu, 09 Apr 2020 08:23:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=oFC1ly62Wf415zvCAvnh6dPzSUtg5klq97PPl1BPUyw=; b=OCbP2aTFl+25ZIpXBWDnS+1wjR
 Hq+HYz5W6Xf0KWc0pPCrasMRGUar2+2vkj2950s4N169YmeUiFQ4TMMFJz4wNrtdI49WVnwK5KGvM
 dMMCtkTmOD0rLV2LjvdY7hN+Eni/VH5pmCg1Spr6luj1DsqG2YfmLIX9aRaQ/7cr7KUw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSm-0008UI-MR
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSm-0005iO-Lc
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] x86/ucode/amd: Fix more potential buffer overruns
 with microcode parsing
Message-Id: <E1jMSSm-0005iO-Lc@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:23:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4b4ec479731f6cbb9f9c11b5c0f6ab391c2e193d
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 10:17:10 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:17:10 2020 +0200

    x86/ucode/amd: Fix more potential buffer overruns with microcode parsing
    
    cpu_request_microcode() doesn't know the buffer is at least 4 bytes long
    before inspecting UCODE_MAGIC.
    
    install_equiv_cpu_table() doesn't know the boundary of the buffer it is
    interpreting as an equivalency table.  This case was clearly observed at one
    point in the past, given the subsequent overrun detection, but without
    comprehending that the damage was already done.
    
    Make the logic consistent with container_fast_forward() and pass size_left in
    to install_equiv_cpu_table().
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 718d1432000079ea7120f6cb770372afe707ce27
    master date: 2020-04-01 14:00:12 +0100
---
 xen/arch/x86/microcode_amd.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 5080e54409..cccfcaed2f 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -294,11 +294,20 @@ static int get_ucode_from_buffer_amd(
 static int install_equiv_cpu_table(
     struct microcode_amd *mc_amd,
     const void *data,
+    size_t size_left,
     size_t *offset)
 {
-    const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct mpbhdr *mpbuf;
     const struct equiv_cpu_entry *eq;
 
+    if ( size_left < (sizeof(*mpbuf) + 4) ||
+         (mpbuf = data + *offset + 4,
+          size_left - sizeof(*mpbuf) - 4 < mpbuf->len) )
+    {
+        printk(XENLOG_WARNING "microcode: No space for equivalent cpu table\n");
+        return -EINVAL;
+    }
+
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
     if ( mpbuf->type != UCODE_EQUIV_CPU_TABLE_TYPE )
@@ -413,7 +422,7 @@ static int cpu_request_microcode(unsigned int cpu, const void *buf,
 
     current_cpu_id = cpuid_eax(0x00000001);
 
-    if ( *(const uint32_t *)buf != UCODE_MAGIC )
+    if ( bufsize < 4 || *(const uint32_t *)buf != UCODE_MAGIC )
     {
         printk(KERN_ERR "microcode: Wrong microcode patch file magic\n");
         error = -EINVAL;
@@ -443,24 +452,13 @@ static int cpu_request_microcode(unsigned int cpu, const void *buf,
      */
     while ( offset < bufsize )
     {
-        error = install_equiv_cpu_table(mc_amd, buf, &offset);
+        error = install_equiv_cpu_table(mc_amd, buf, bufsize - offset, &offset);
         if ( error )
         {
             printk(KERN_ERR "microcode: installing equivalent cpu table failed\n");
             break;
         }
 
-        /*
-         * Could happen as we advance 'offset' early
-         * in install_equiv_cpu_table
-         */
-        if ( offset > bufsize )
-        {
-            printk(KERN_ERR "microcode: Microcode buffer overrun\n");
-            error = -EINVAL;
-            break;
-        }
-
         if ( find_equiv_cpu_id(mc_amd->equiv_cpu_table, current_cpu_id,
                                &equiv_cpu_id) )
             break;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:23:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:23:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMSSz-0006sd-7Y; Thu, 09 Apr 2020 08:23:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMSSx-0006sT-Qp
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:15 +0000
X-Inumbo-ID: 5bbe6cfa-7a3b-11ea-8299-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5bbe6cfa-7a3b-11ea-8299-12813bfff9fa;
 Thu, 09 Apr 2020 08:23:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=3TJ43H/e68tCLCMdH3zt4LgBkS86zZA9KbIkGKqfOgo=; b=HRlT1g4TifThahRlR2FpkNBaKW
 q+QQQmazlHX01tDHutMsU+Ikgppx85cNboK8FbLmltkMoIasBX6Sm5V0Rl6RP4/0xOKf9FldQ995K
 QQiZq7l+cIZ4GKJR+TWlkIdi8B9664sPz9xpRO5nOjpBBJGRP5kWOp97LnGF9v6a+VK4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSw-0008US-Po
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMSSw-0005jI-Or
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] credit2: avoid vCPUs to ever reach lower credits
 than idle
Message-Id: <E1jMSSw-0005jI-Or@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:23:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 5adb81ae7b26288851c825f62b50d34acb803839
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 10:18:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:18:14 2020 +0200

    credit2: avoid vCPUs to ever reach lower credits than idle
    
    There have been report of stalls of guest vCPUs, when Credit2 was used.
    It seemed like these vCPUs were not getting scheduled for very long
    time, even under light load conditions (e.g., during dom0 boot).
    
    Investigations led to the discovery that --although rarely-- it can
    happen that a vCPU manages to run for very long timeslices. In Credit2,
    this means that, when runtime accounting happens, the vCPU will lose a
    large quantity of credits. This in turn may lead to the vCPU having less
    credits than the idle vCPUs (-2^30). At this point, the scheduler will
    pick the idle vCPU, instead of the ready to run vCPU, for a few
    "epochs", which often times is enough for the guest kernel to think the
    vCPU is not responding and crashing.
    
    An example of this situation is shown here. In fact, we can see d0v1
    sitting in the runqueue while all the CPUs are idle, as it has
    -1254238270 credits, which is smaller than -2^30 = −1073741824:
    
        (XEN) Runqueue 0:
        (XEN)   ncpus              = 28
        (XEN)   cpus               = 0-27
        (XEN)   max_weight         = 256
        (XEN)   pick_bias          = 22
        (XEN)   instload           = 1
        (XEN)   aveload            = 293391 (~111%)
        (XEN)   idlers: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        (XEN)   tickled: 00,00000000,00000000,00000000,00000000,00000000,00000000
        (XEN)   fully idle cores: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        [...]
        (XEN) Runqueue 0:
        (XEN) CPU[00] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[01] runq=0, sibling=00,..., core=00,...
        [...]
        (XEN) CPU[26] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[27] runq=0, sibling=00,..., core=00,...
        (XEN) RUNQ:
        (XEN)     0: [0.1] flags=0 cpu=5 credit=-1254238270 [w=256] load=262144 (~100%)
    
    We certainly don't want, under any circumstance, this to happen.
    Let's, therefore, define a minimum amount of credits a vCPU can have.
    During accounting, we make sure that, for however long the vCPU has
    run, it will never get to have less than such minimum amount of
    credits. Then, we set the credits of the idle vCPU to an even
    smaller value.
    
    NOTE: investigations have been done about _how_ it is possible for a
    vCPU to execute for so much time that its credits becomes so low. While
    still not completely clear, there are evidence that:
    - it only happens very rarely,
    - it appears to be both machine and workload specific,
    - it does not look to be a Credit2 (e.g., as it happens when
      running with Credit1 as well) issue, or a scheduler issue.
    
    This patch makes Credit2 more robust to events like this, whatever
    the cause is, and should hence be backported (as far as possible).
    
    Reported-by: Glen <glenbarney@gmail.com>
    Reported-by: Tomas Mozes <hydrapolic@gmail.com>
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    master commit: 36f3662f27dec32d76c0edb4c6b62b9628d6869d
    master date: 2020-04-03 10:45:43 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  5 ++---
 xen/common/sched_credit2.c | 53 ++++++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index d6e7e3f800..8f126f65f1 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -55,7 +55,7 @@
 0x00022204  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_add
 0x00022205  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle_check   [ dom:vcpu = 0x%(1)08x, credit = %(2)d, score = %(3)d ]
 0x00022206  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle         [ cpu = %(1)d ]
-0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d, mult = %(4)d ]
+0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d ]
 0x00022208  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:sched_tasklet
 0x00022209  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:update_load
 0x0002220a  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_assign    [ dom:vcpu = 0x%(1)08x, rq_id = %(2)d ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index 5ed0a12327..23332dab59 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7718,13 +7718,12 @@ void sched_process(struct pcpu_info *p)
                 struct {
                     unsigned int vcpuid:16, domid:16;
                     int credit_start, credit_end;
-                    unsigned int multiplier;
                 } *r = (typeof(r))ri->d;
 
                 printf(" %s csched2:reset_credits d%uv%u, "
-                       "credit_start = %d, credit_end = %d, mult = %u\n",
+                       "credit_start = %d, credit_end = %d\n",
                        ri->dump_header, r->domid, r->vcpuid,
-                       r->credit_start, r->credit_end, r->multiplier);
+                       r->credit_start, r->credit_end);
             }
             break;
         case TRC_SCHED_CLASS_EVT(CSCHED2, 8):  /* SCHED_TASKLET    */
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index d532972af0..3038c862ba 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -234,11 +234,21 @@
  */
 #define CSCHED2_CREDIT_INIT          MILLISECS(10)
 /*
+ * Minimum amount of credits VMs can have. Ideally, no VM would get
+ * close to this (unless a vCPU manages to execute for really long
+ * time uninterrupted). In case it happens, it makes no sense to
+ * track even deeper undershoots.
+ *
+ * NOTE: If making this smaller than -CSCHED2_CREDIT_INIT, adjust
+ * reset_credit() accordingly.
+ */
+#define CSCHED2_CREDIT_MIN           (-CSCHED2_CREDIT_INIT)
+/*
  * Amount of credit the idle vcpus have. It never changes, as idle
  * vcpus does not consume credits, and it must be lower than whatever
  * amount of credit 'regular' vcpu would end up with.
  */
-#define CSCHED2_IDLE_CREDIT          (-(1U<<30))
+#define CSCHED2_IDLE_CREDIT          (CSCHED2_CREDIT_MIN-1)
 /*
  * Carryover: How much "extra" credit may be carried over after
  * a reset.
@@ -781,10 +791,15 @@ static int get_fallback_cpu(struct csched2_vcpu *svc)
 static void t2c_update(struct csched2_runqueue_data *rqd, s_time_t time,
                           struct csched2_vcpu *svc)
 {
-    uint64_t val = time * rqd->max_weight + svc->residual;
+    int64_t val = time * rqd->max_weight + svc->residual;
 
     svc->residual = do_div(val, svc->weight);
-    svc->credit -= val;
+    /* Getting to lower credit than CSCHED2_CREDIT_MIN makes no sense. */
+    val = svc->credit - val;
+    if ( unlikely(val < CSCHED2_CREDIT_MIN) )
+        svc->credit = CSCHED2_CREDIT_MIN;
+    else
+        svc->credit = val;
 }
 
 static s_time_t c2t(struct csched2_runqueue_data *rqd, s_time_t credit, struct csched2_vcpu *svc)
@@ -1624,28 +1639,25 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
 {
     struct csched2_runqueue_data *rqd = c2rqd(ops, cpu);
     struct list_head *iter;
-    int m;
+    int reset = CSCHED2_CREDIT_INIT;
 
     /*
      * Under normal circumstances, snext->credit should never be less
      * than -CSCHED2_MIN_TIMER.  However, under some circumstances, a
      * vcpu with low credits may be allowed to run long enough that
-     * its credits are actually less than -CSCHED2_CREDIT_INIT.
+     * its credits are actually much lower than that.
      * (Instances have been observed, for example, where a vcpu with
      * 200us of credit was allowed to run for 11ms, giving it -10.8ms
      * of credit.  Thus it was still negative even after the reset.)
      *
      * If this is the case for snext, we simply want to keep moving
-     * everyone up until it is in the black again.  This fair because
-     * none of the other vcpus want to run at the moment.
-     *
-     * Rather than looping, however, we just calculate a multiplier,
-     * avoiding an integer division and multiplication in the common
-     * case.
+     * everyone up until it is in the black again. This means that,
+     * since CSCHED2_CREDIT_MIN is -CSCHED2_CREDIT_INIT, we need to
+     * actually add 2*CSCHED2_CREDIT_INIT.
      */
-    m = 1;
-    if ( snext->credit < -CSCHED2_CREDIT_INIT )
-        m += (-snext->credit) / CSCHED2_CREDIT_INIT;
+    ASSERT(snext->credit >= CSCHED2_CREDIT_MIN);
+    if ( unlikely(snext->credit == CSCHED2_CREDIT_MIN) )
+        reset += CSCHED2_CREDIT_INIT;
 
     list_for_each( iter, &rqd->svc )
     {
@@ -1676,15 +1688,7 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
         }
 
         start_credit = svc->credit;
-
-        /*
-         * Add INIT * m, avoiding integer multiplication in the common case.
-         */
-        if ( likely(m==1) )
-            svc->credit += CSCHED2_CREDIT_INIT;
-        else
-            svc->credit += m * CSCHED2_CREDIT_INIT;
-
+        svc->credit += reset;
         /* "Clip" credits to max carryover */
         if ( svc->credit > CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX )
             svc->credit = CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX;
@@ -1696,19 +1700,18 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
             struct {
                 unsigned vcpu:16, dom:16;
                 int credit_start, credit_end;
-                unsigned multiplier;
             } d;
             d.dom = svc->vcpu->domain->domain_id;
             d.vcpu = svc->vcpu->vcpu_id;
             d.credit_start = start_credit;
             d.credit_end = svc->credit;
-            d.multiplier = m;
             __trace_var(TRC_CSCHED2_CREDIT_RESET, 1,
                         sizeof(d),
                         (unsigned char *)&d);
         }
     }
 
+    ASSERT(snext->credit > 0);
     SCHED_STAT_CRANK(credit_reset);
 
     /* No need to resort runqueue, as everyone's order should be the same. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 08:23:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 08:23:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMST9-0006te-9B; Thu, 09 Apr 2020 08:23:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMST7-0006tR-RM
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:25 +0000
X-Inumbo-ID: 61c24662-7a3b-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 61c24662-7a3b-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 08:23:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=H+vncpdUL60wgf585r0P3My8fTFF5SVjZULZlUvRzkc=; b=T5GEVrSqx2hL+mLCwlxgFxqEsU
 4emSLXirixlpROBwXyL5H3Z7tOUeyvN3wIgfULxy5xhWjJVgd8kzD8ZYkNmxyfOm+SZg+2OdctJ+N
 yp6umQ5ul3SXIuMFs/jyCHXTemB0/ta6E5h/z6do0AMQuleI0NoBRk2RNDU8Pnfwmzs8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMST6-0008Ud-Sv
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMST6-0005kw-S3
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 08:23:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] credit2: fix credit reset happening too few times
Message-Id: <E1jMST6-0005kw-S3@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 08:23:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit affb032b9b2624b67ffc7fb246a915dd08074b3f
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 10:18:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:18:58 2020 +0200

    credit2: fix credit reset happening too few times
    
    There is a bug in commit 5e4b4199667b9 ("xen: credit2: only reset
    credit on reset condition"). In fact, the aim of that commit was to
    make sure that we do not perform too many credit reset operations
    (which are not super cheap, and in an hot-path). But the check used
    to determine whether a reset is necessary was the wrong one.
    
    In fact, knowing just that some vCPUs have been skipped, while
    traversing the runqueue (in runq_candidate()), is not enough. We
    need to check explicitly whether the first vCPU in the runqueue
    has a negative amount of credit.
    
    Since a trace record is changed, this patch updates xentrace format file
    and xenalyze as well
    
    This should be backported.
    
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Acked-by: George Dunlap <george.dunlap@citrix.com>
    master commit: dae7b62e976b28af9c8efa150618c25501bf1650
    master date: 2020-04-03 10:46:53 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  8 +++-----
 xen/common/sched_credit2.c | 28 ++++++++++++----------------
 3 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index 8f126f65f1..deac4d8598 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -67,7 +67,7 @@
 0x00022210  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_check     [ lrq_id[16]:orq_id[16] = 0x%(1)08x, delta = %(2)d ]
 0x00022211  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_balance   [ l_bavgload = 0x%(2)08x%(1)08x, o_bavgload = 0x%(4)08x%(3)08x, lrq_id[16]:orq_id[16] = 0x%(5)08x ]
 0x00022212  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:pick_cpu       [ b_avgload = 0x%(2)08x%(1)08x, dom:vcpu = 0x%(3)08x, rq_id[16]:new_cpu[16] = %(4)d ]
-0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(4)d, skipped_vcpus = %(3)d, tickled_cpu = %(2)d ]
+0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(3)d, tickled_cpu = %(2)d ]
 0x00022214  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:schedule       [ rq:cpu = 0x%(1)08x, tasklet[8]:idle[8]:smt_idle[8]:tickled[8] = %(2)08x ]
 0x00022215  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:ratelimit      [ dom:vcpu = 0x%(1)08x, runtime = %(2)d ]
 0x00022216  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_cand_chk  [ dom:vcpu = 0x%(1)08x ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index 23332dab59..eb77787f6f 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7855,14 +7855,12 @@ void sched_process(struct pcpu_info *p)
             if (opt.dump_all) {
                 struct {
                     unsigned vcpuid:16, domid:16;
-                    unsigned tickled_cpu, skipped;
+                    unsigned tickled_cpu;
                     int credit;
                 } *r = (typeof(r))ri->d;
 
-                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, "
-                       "%u vcpus skipped, ",
-                       ri->dump_header, r->domid, r->vcpuid,
-                       r->credit, r->skipped);
+                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, ",
+                       ri->dump_header, r->domid, r->vcpuid, r->credit);
                 if (r->tickled_cpu == (unsigned)-1)
                     printf("no cpu was tickled\n");
                 else
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index 3038c862ba..a99248398b 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -3265,16 +3265,13 @@ csched2_runtime(const struct scheduler *ops, int cpu,
 static struct csched2_vcpu *
 runq_candidate(struct csched2_runqueue_data *rqd,
                struct csched2_vcpu *scurr,
-               int cpu, s_time_t now,
-               unsigned int *skipped)
+               int cpu, s_time_t now)
 {
     struct list_head *iter, *temp;
     struct csched2_vcpu *snext = NULL;
     struct csched2_private *prv = csched2_priv(per_cpu(scheduler, cpu));
     bool yield = false, soft_aff_preempt = false;
 
-    *skipped = 0;
-
     if ( unlikely(is_idle_vcpu(scurr->vcpu)) )
     {
         snext = scurr;
@@ -3371,10 +3368,7 @@ runq_candidate(struct csched2_runqueue_data *rqd,
 
         /* Only consider vcpus that are allowed to run on this processor. */
         if ( !cpumask_test_cpu(cpu, svc->vcpu->cpu_hard_affinity) )
-        {
-            (*skipped)++;
             continue;
-        }
 
         /*
          * If a vcpu is meant to be picked up by another processor, and such
@@ -3383,7 +3377,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->tickled_cpu != -1 && svc->tickled_cpu != cpu &&
              cpumask_test_cpu(svc->tickled_cpu, &rqd->tickled) )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(deferred_to_tickled_cpu);
             continue;
         }
@@ -3395,7 +3388,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->vcpu->processor != cpu
              && snext->credit + CSCHED2_MIGRATE_RESIST > svc->credit )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(migrate_resisted);
             continue;
         }
@@ -3418,14 +3410,13 @@ runq_candidate(struct csched2_runqueue_data *rqd,
     {
         struct {
             unsigned vcpu:16, dom:16;
-            unsigned tickled_cpu, skipped;
+            unsigned tickled_cpu;
             int credit;
         } d;
         d.dom = snext->vcpu->domain->domain_id;
         d.vcpu = snext->vcpu->vcpu_id;
         d.credit = snext->credit;
         d.tickled_cpu = snext->tickled_cpu;
-        d.skipped = *skipped;
         __trace_var(TRC_CSCHED2_RUNQ_CANDIDATE, 1,
                     sizeof(d),
                     (unsigned char *)&d);
@@ -3456,7 +3447,6 @@ csched2_schedule(
     struct csched2_runqueue_data *rqd;
     struct csched2_vcpu * const scurr = csched2_vcpu(current);
     struct csched2_vcpu *snext = NULL;
-    unsigned int skipped_vcpus = 0;
     struct task_slice ret;
     bool tickled;
 
@@ -3534,7 +3524,7 @@ csched2_schedule(
         snext = csched2_vcpu(idle_vcpu[cpu]);
     }
     else
-        snext = runq_candidate(rqd, scurr, cpu, now, &skipped_vcpus);
+        snext = runq_candidate(rqd, scurr, cpu, now);
 
     /* If switching from a non-idle runnable vcpu, put it
      * back on the runqueue. */
@@ -3548,6 +3538,8 @@ csched2_schedule(
     /* Accounting for non-idle tasks */
     if ( !is_idle_vcpu(snext->vcpu) )
     {
+        int top_credit;
+
         /* If switching, remove this from the runqueue and mark it scheduled */
         if ( snext != scurr )
         {
@@ -3568,11 +3560,15 @@ csched2_schedule(
          *  2) no other vcpu with higher credits wants to run.
          *
          * Here, where we want to check for reset, we need to make sure the
-         * proper vcpu is being used. In fact, runqueue_candidate() may have
-         * not returned the first vcpu in the runqueue, for various reasons
+         * proper vcpu is being used. In fact, runq_candidate() may have not
+         * returned the first vcpu in the runqueue, for various reasons
          * (e.g., affinity). Only trigger a reset when it does.
          */
-        if ( skipped_vcpus == 0 && snext->credit <= CSCHED2_CREDIT_RESET )
+        if ( list_empty(&rqd->runq) )
+            top_credit = snext->credit;
+        else
+            top_credit = max(snext->credit, runq_elem(rqd->runq.next)->credit);
+        if ( top_credit <= CSCHED2_CREDIT_RESET )
         {
             reset_credit(ops, cpu, now, snext);
             balance_load(ops, cpu, now);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 14:44:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 14:44:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMYPU-0006KJ-QO; Thu, 09 Apr 2020 14:44:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMYPT-0006KE-JS
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:03 +0000
X-Inumbo-ID: 8e147c46-7a70-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8e147c46-7a70-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 14:44:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=FNWsxCpVOdC5UC2M1SAarSZbyNos6WUDMegQ7/LQ2Xg=; b=NBpx4wq2S9g9mU70hXg3B/PInp
 R5hoHZ4W7i0zBQBsUJm+T9IPAH0IXafr5vjFM4EcbESZG+oxMOmO//h/pJMyOpEXSPNO4h1YZxkaF
 bUocML7GuCYsKfYnkUdYO1PGhYGm40JM5GCv4SMNI8Q7bYmZJ0vDuFnqOD5PetsyIC5s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYPS-0007VI-HE
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYPS-0005PK-Ff
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [mini-os master] mini-os: fix double free() in netfront
Message-Id: <E1jMYPS-0005PK-Ff@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 14:44:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 1eeb57067a3e12ab6d5f01f9bdc719ee70cbc8fc
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 16:12:38 2020 +0200
Commit:     Wei Liu <liuw@liuw.name>
CommitDate: Thu Apr 9 15:40:10 2020 +0100

    mini-os: fix double free() in netfront
    
    Commit d225f4012d69a19 ("Save/Restore Support: Add suspend/restore
    support for netfront") introduced a regression in form of freeing a
    netfront device structure twice.
    
    Fix that.
    
    Coverity-ID: 1433637
    Fixes: d225f4012d69a19 ("Save/Restore Support: Add suspend/restore support for netfront")
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 netfront.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/netfront.c b/netfront.c
index 50b3a57..fe7bb62 100644
--- a/netfront.c
+++ b/netfront.c
@@ -584,8 +584,6 @@ void shutdown_netfront(struct netfront_dev *dev)
     list->refcount--;
     if (list->refcount == 0) {
         _shutdown_netfront(dev);
-        free(dev->nodename);
-        free(dev);
 
         to_del = list;
         if (to_del == dev_list) {
--
generated by git-patchbot for /home/xen/git/mini-os.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 14:44:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 14:44:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMYPf-0006Kz-Sa; Thu, 09 Apr 2020 14:44:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMYPe-0006Kp-8w
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:14 +0000
X-Inumbo-ID: 94129bfa-7a70-11ea-82dc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 94129bfa-7a70-11ea-82dc-12813bfff9fa;
 Thu, 09 Apr 2020 14:44:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=WV5LIHwgXqMWKNX7NeeEx8EPevX5eog1nGiQ/BRTsGA=; b=J4rtpI3JtUgvYit8DQDJuHTk7H
 EPR+IYz5gEZjebyFC3F5wsKIgfKeyez5ujuU4mzg0TpHlfLJkZwcYKzJxb9Y41jyfaLEGfgRrvl8F
 ky/HnRQSwEmRzeQON0cJIo9jc3Q+ByGXFO2Ta7eNG5k80/awyUCMbTYNSQkHycJSc04w=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYPc-0007VO-K4
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYPc-0005Pv-Iw
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [mini-os master] mini-os: fix double free() in xenbus
Message-Id: <E1jMYPc-0005Pv-Iw@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 14:44:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c7f57245bff5daa133b4c8473cbf038b753496d9
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 16:12:39 2020 +0200
Commit:     Wei Liu <liuw@liuw.name>
CommitDate: Thu Apr 9 15:40:27 2020 +0100

    mini-os: fix double free() in xenbus
    
    Commit 973ad0c4de1b48 ("Save/Restore Support: Add suspend/restore
    support for xenbus") introduced a double free of some memory and leaked
    another memory allocation.
    
    Fix those.
    
    Coverity-ID: 1433640
    Fixes: 973ad0c4de1b48 ("Save/Restore Support: Add suspend/restore support for xenbus")
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 xenbus/xenbus.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xenbus/xenbus.c b/xenbus/xenbus.c
index d72dc3a..b12cef7 100644
--- a/xenbus/xenbus.c
+++ b/xenbus/xenbus.c
@@ -413,9 +413,11 @@ void resume_xenbus(int canceled)
 
             rep = xenbus_msg_reply(XS_WATCH, XBT_NIL, req, ARRAY_SIZE(req));
             msg = errmsg(rep);
-            if (msg)
+            if (msg) {
                 xprintk("error on XS_WATCH: %s\n", msg);
-            free(rep);
+                free(msg);
+            } else
+                free(rep);
         }
     }
 
--
generated by git-patchbot for /home/xen/git/mini-os.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 14:44:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 14:44:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMYPo-0006MK-Uh; Thu, 09 Apr 2020 14:44:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMYPn-0006M8-SN
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:23 +0000
X-Inumbo-ID: 9a16b658-7a70-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9a16b658-7a70-11ea-83d8-bc764e2007e4;
 Thu, 09 Apr 2020 14:44:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=KTfcvnymBx02l2vBsE0U16VuWFtpkYfJj6EanfgoekI=; b=T0YtnTS1i7ZEZItrxc40b94Yr8
 ff7X0dRLt45UJnHWVP9Qt1Fzb9whPypeb4fxcCgalwDsPdxk6G6Os9MZgeh/0rQ++KXUBkDZObtod
 8/viYzo3UDmjTBSAEaWXNkqJA73BtUnI3iE660dppCjpOURA4OmcMEYHP1rSj55zjxkE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYPm-0007Va-Mo
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYPm-0005Qf-Lh
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [mini-os master] mini-os: fix several memory leaks related to xenbus
Message-Id: <E1jMYPm-0005Qf-Lh@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 14:44:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9d91003b4faf2008f4502d662b428e470f0baac4
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 16:12:40 2020 +0200
Commit:     Wei Liu <liuw@liuw.name>
CommitDate: Thu Apr 9 15:40:34 2020 +0100

    mini-os: fix several memory leaks related to xenbus
    
    There are several instances of calls to xenbus functions which don't
    test for an error and in consequence are not freeing the returned
    error strings, or which are just not freeing the string after e.g.
    printing it.
    
    Fix that by either adding the needed calls of free().
    
    Coverity-ID: 1433632
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 blkfront.c       |  4 ++--
 console/xenbus.c |  2 +-
 fbfront.c        |  4 ++--
 netfront.c       |  2 +-
 pcifront.c       | 28 +++++++++++++---------------
 shutdown.c       |  2 +-
 xenbus/xenbus.c  |  2 ++
 7 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/blkfront.c b/blkfront.c
index f747216..834a978 100644
--- a/blkfront.c
+++ b/blkfront.c
@@ -200,7 +200,7 @@ done:
 
         snprintf(path, sizeof(path), "%s/state", dev->backend);
 
-        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
 
         msg = NULL;
         state = xenbus_read_integer(path);
@@ -208,7 +208,7 @@ done:
             msg = xenbus_wait_for_state_change(path, &state, &dev->events);
         if (msg != NULL || state != XenbusStateConnected) {
             printk("backend not available, state=%d\n", state);
-            xenbus_unwatch_path_token(XBT_NIL, path, path);
+            free(xenbus_unwatch_path_token(XBT_NIL, path, path));
             goto error;
         }
 
diff --git a/console/xenbus.c b/console/xenbus.c
index 654b469..05fc31c 100644
--- a/console/xenbus.c
+++ b/console/xenbus.c
@@ -164,7 +164,7 @@ done:
         char path[strlen(dev->backend) + strlen("/state") + 1];
         snprintf(path, sizeof(path), "%s/state", dev->backend);
         
-	xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+	free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
         msg = NULL;
         state = xenbus_read_integer(path);
         while (msg == NULL && state < XenbusStateConnected)
diff --git a/fbfront.c b/fbfront.c
index 9cc07b4..d3b3848 100644
--- a/fbfront.c
+++ b/fbfront.c
@@ -163,7 +163,7 @@ done:
 
         snprintf(path, sizeof(path), "%s/state", dev->backend);
 
-        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
 
         err = NULL;
         state = xenbus_read_integer(path);
@@ -530,7 +530,7 @@ done:
 
         snprintf(path, sizeof(path), "%s/state", dev->backend);
 
-        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
 
         err = NULL;
         state = xenbus_read_integer(path);
diff --git a/netfront.c b/netfront.c
index fe7bb62..66f2bbc 100644
--- a/netfront.c
+++ b/netfront.c
@@ -513,7 +513,7 @@ done:
             err = xenbus_wait_for_state_change(path, &state, &dev->events);
         if (state != XenbusStateConnected) {
             printk("backend not avalable, state=%d\n", state);
-            xenbus_unwatch_path_token(XBT_NIL, path, path);
+            free(xenbus_unwatch_path_token(XBT_NIL, path, path));
             goto error;
         }
 
diff --git a/pcifront.c b/pcifront.c
index 0fc5b30..5642356 100644
--- a/pcifront.c
+++ b/pcifront.c
@@ -70,28 +70,28 @@ void pcifront_watches(void *opaque)
 
     while (1) {
         printk("pcifront_watches: waiting for backend path to appear %s\n", path);
-        xenbus_watch_path_token(XBT_NIL, path, path, &events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &events));
         while ((err = xenbus_read(XBT_NIL, path, &be_path)) != NULL) {
             free(err);
             xenbus_wait_for_watch(&events);
         }
-        xenbus_unwatch_path_token(XBT_NIL, path, path);
+        free(xenbus_unwatch_path_token(XBT_NIL, path, path));
         printk("pcifront_watches: waiting for backend to get into the right state %s\n", be_path);
         be_state = (char *) malloc(strlen(be_path) +  7);
         snprintf(be_state, strlen(be_path) +  7, "%s/state", be_path);
-        xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events);
+        free(xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events));
         while ((err = xenbus_read(XBT_NIL, be_state, &msg)) != NULL || msg[0] > '4') {
             free(msg);
             free(err);
             xenbus_wait_for_watch(&events);
         }
-        xenbus_unwatch_path_token(XBT_NIL, be_state, be_state);
+        free(xenbus_unwatch_path_token(XBT_NIL, be_state, be_state));
         if (init_pcifront(NULL) == NULL) {
             free(be_state);
             free(be_path);
             continue;
         }
-        xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events);
+        free(xenbus_watch_path_token(XBT_NIL, be_state, be_state, &events));
         state = XenbusStateConnected;
         printk("pcifront_watches: waiting for backend events %s\n", be_state);
         while ((err = xenbus_wait_for_state_change(be_state, &state, &events)) == NULL &&
@@ -103,10 +103,9 @@ void pcifront_watches(void *opaque)
                 if ((err = xenbus_switch_state(XBT_NIL, fe_state, XenbusStateReconfiguring)) != NULL) {
                     printk("pcifront_watches: error changing state to %d: %s\n",
                             XenbusStateReconfiguring, err);
-                    if (!strcmp(err, "ENOENT")) {
-                        xenbus_write(XBT_NIL, fe_state, "7");
-                        free(err);
-                    }
+                    if (!strcmp(err, "ENOENT"))
+                        free(xenbus_write(XBT_NIL, fe_state, "7"));
+                    free(err);
                 }
             } else if (state == XenbusStateReconfigured) {
                 printk("pcifront_watches: writing %s %d\n", fe_state, XenbusStateConnected);
@@ -114,10 +113,9 @@ void pcifront_watches(void *opaque)
                 if ((err = xenbus_switch_state(XBT_NIL, fe_state, XenbusStateConnected)) != NULL) {
                     printk("pcifront_watches: error changing state to %d: %s\n",
                             XenbusStateConnected, err);
-                    if (!strcmp(err, "ENOENT")) {
-                        xenbus_write(XBT_NIL, fe_state, "4");
-                        free(err);
-                    }
+                    if (!strcmp(err, "ENOENT"))
+                        free(xenbus_write(XBT_NIL, fe_state, "4"));
+                    free(err);
                 }
             } else if (state == XenbusStateClosing)
                 break;
@@ -135,7 +133,7 @@ void pcifront_watches(void *opaque)
         pcidev = NULL;
     }
 
-    xenbus_unwatch_path_token(XBT_NIL, path, path);
+    free(xenbus_unwatch_path_token(XBT_NIL, path, path));
 }
 
 struct pcifront_dev *init_pcifront(char *_nodename)
@@ -243,7 +241,7 @@ done:
         XenbusState state;
         snprintf(path, sizeof(path), "%s/state", dev->backend);
 
-        xenbus_watch_path_token(XBT_NIL, path, path, &dev->events);
+        free(xenbus_watch_path_token(XBT_NIL, path, path, &dev->events));
 
         err = NULL;
         state = xenbus_read_integer(path);
diff --git a/shutdown.c b/shutdown.c
index c7c92cb..4c0b13c 100644
--- a/shutdown.c
+++ b/shutdown.c
@@ -71,7 +71,7 @@ static void shutdown_thread(void *p)
     char *shutdown, *err;
     unsigned int shutdown_reason;
 
-    xenbus_watch_path_token(XBT_NIL, path, token, &events);
+    free(xenbus_watch_path_token(XBT_NIL, path, token, &events));
 
     for ( ;; ) {
         xenbus_wait_for_watch(&events);
diff --git a/xenbus/xenbus.c b/xenbus/xenbus.c
index b12cef7..9e61930 100644
--- a/xenbus/xenbus.c
+++ b/xenbus/xenbus.c
@@ -198,6 +198,8 @@ exit:
         }
         if (msg == NULL && msg2 != NULL)
             msg = msg2;
+        else
+            free(msg2);
     } while (retry);
 
     return msg;
--
generated by git-patchbot for /home/xen/git/mini-os.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 14:44:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 14:44:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMYQ2-0006Nk-0G; Thu, 09 Apr 2020 14:44:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMYQ0-0006Nc-KV
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:36 +0000
X-Inumbo-ID: a0c982e8-7a70-11ea-82dc-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a0c982e8-7a70-11ea-82dc-12813bfff9fa;
 Thu, 09 Apr 2020 14:44:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=3ykc/UR2o8434J3Gcvo1Q9qmOdG6hKXP3h7S/Mh15RA=; b=lBZvkPnowPiz5Sr/4hk2tM8w2H
 xV2wakc79r6rREggtswpcL3Me1PfzoIe6RZmtoNh6qjAlcKRQSuwPZ/7euOn0aSPKeJwWjuveHU1f
 bIXVc5kkMy8TaohaW7mJmNVaAbeCPiVkO8bVE18R9J61pTXCXU/SCULwWWNzNNvsiOZM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYPz-0007Vj-41
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYPz-0005V1-2r
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 14:44:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] libxc/migration: Abort migration on precopy policy
 request
Message-Id: <E1jMYPz-0005V1-2r@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 14:44:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 69f741347d9718b470fe29c012b7a2622249b709
Author:     Andrew Panyakin <apanyaki@amazon.com>
AuthorDate: Tue Apr 7 14:52:22 2020 +0000
Commit:     Wei Liu <wl@xen.org>
CommitDate: Thu Apr 9 15:43:18 2020 +0100

    libxc/migration: Abort migration on precopy policy request
    
    libxc defines XGS_POLICY_ABORT for precopy policy to signal that migration
    should be aborted (eg. if the estimated pause time is too huge for the
    instance). Default simple precopy policy never returns that, but it could be
    overriden with a custom one.
    
    Signed-off-by: Andrew Panyakin <apanyaki@amazon.com>
    Acked-by: Wei Liu <wl@xen.org>
    [wei: fix coding style issue]
---
 tools/libxc/xc_sr_save.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tools/libxc/xc_sr_save.c b/tools/libxc/xc_sr_save.c
index fa736a311f..6ba6623ff3 100644
--- a/tools/libxc/xc_sr_save.c
+++ b/tools/libxc/xc_sr_save.c
@@ -560,6 +560,13 @@ static int send_memory_live(struct xc_sr_context *ctx)
 
     }
 
+    if ( policy_decision == XGS_POLICY_ABORT )
+    {
+        PERROR("Abort precopy loop");
+        rc = -1;
+        goto out;
+    }
+
  out:
     xc_set_progress_prefix(xch, NULL);
     free(progress_str);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 15:00:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 15:00:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMYf1-00087y-0j; Thu, 09 Apr 2020 15:00:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMYez-0007yC-TN
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 15:00:05 +0000
X-Inumbo-ID: cb3a7754-7a72-11ea-82e5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cb3a7754-7a72-11ea-82e5-12813bfff9fa;
 Thu, 09 Apr 2020 15:00:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=PHTmDFh+rYREhjaC2CBieWnP/sOK170reehCZTDThlA=; b=EWq8lrsoZhQIpvxhf+OwQTQBeK
 sVEwNMmPLJpIfn6o6OaibWc3c8229l0SL4AUoTgrixYpdm6eUNPBVYHFDBrVlWsjtpQ8y26iJLba8
 /eAMjEVQNo4wY+LxdNPE6/wVWA7Ti7wgvqmKf1EM0gtYGv1IzLONqdp5hkIHYSIIPn/k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYey-0007qb-4x
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 15:00:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMYey-0006Wa-3k
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 15:00:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] tools/xl: Remove the filelock when building VM if
 autoballooning is off
Message-Id: <E1jMYey-0006Wa-3k@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 15:00:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4fb402b486121c0110dd8cbc2ef2791ab9c1af73
Author:     Dmitry Isaykin <isaikin-dmitry@yandex.ru>
AuthorDate: Thu Apr 9 15:55:50 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Thu Apr 9 15:55:50 2020 +0100

    tools/xl: Remove the filelock when building VM if autoballooning is off
    
    The presence of this filelock does not allow building several VMs at the same
    time. This filelock was added to prevent other xl instances from using memory
    freed for the currently building VM in autoballoon mode.
    
    Signed-off-by: Dmitry Isaykin <isaikin-dmitry@yandex.ru>
    Reviewed-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
 tools/xl/xl_vmcontrol.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c
index 2e2d427492..17b4514c94 100644
--- a/tools/xl/xl_vmcontrol.c
+++ b/tools/xl/xl_vmcontrol.c
@@ -874,9 +874,11 @@ int create_domain(struct domain_create *dom_info)
 start:
     assert(domid == INVALID_DOMID);
 
-    rc = acquire_lock();
-    if (rc < 0)
-        goto error_out;
+    if (autoballoon) {
+        rc = acquire_lock();
+        if (rc < 0)
+            goto error_out;
+    }
 
     if (domid_soft_reset == INVALID_DOMID) {
         if (!freemem(domid, &d_config)) {
@@ -939,7 +941,8 @@ start:
     if ( ret )
         goto error_out;
 
-    release_lock();
+    if (autoballoon)
+        release_lock();
 
     if (restore_fd_to_close >= 0) {
         if (close(restore_fd_to_close))
@@ -1113,7 +1116,8 @@ start:
     }
 
 error_out:
-    release_lock();
+    if (autoballoon)
+        release_lock();
     if (libxl_domid_valid_guest(domid)) {
         libxl_domain_destroy(ctx, domid, 0);
         domid = INVALID_DOMID;
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:55:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:55:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaSI-00017x-Uu; Thu, 09 Apr 2020 16:55:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaSH-00017s-FO
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:05 +0000
X-Inumbo-ID: db04d50d-7a82-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id db04d50d-7a82-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:55:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8pUA1iVj7RftiEVV2MZEoit+O9fcUL/l5FZ9BxLo5VU=; b=CKFZgaJ9LocYyyO307uqMNQH2o
 ociyEUQsZVQ6YhbpHSpz6NT8ecCAAQ+HnocvUtoP0aFtPNJ8mfjbJx5/YsXIWY6dc8T9aoH1sfz4L
 6rGq6SnRqkrpUbYPoDbCTlI+s1JCQwPK8dWKh9Lb4nScUhQaB6GONdNZO2ZU/47xJAYY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSE-00026r-MV
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSE-00061u-LF
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86: do not enable global pages when virtualized on
 AMD or Hygon hardware
Message-Id: <E1jMaSE-00061u-LF@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:55:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a8fbb0f1a3f314fe1bd4be6041097e584d89d9f1
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 9 08:56:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 08:56:08 2020 +0200

    x86: do not enable global pages when virtualized on AMD or Hygon hardware
    
    When using global pages a full tlb flush can only be performed by
    toggling the PGE bit in CR4, which is usually quite expensive in terms
    of performance when running virtualized. This is specially relevant on
    AMD or Hygon hardware, which doesn't have the ability to do selective
    CR4 trapping, but can also be relevant on e.g. Intel if the underlying
    hypervisor also traps accesses to the PGE CR4 bit.
    
    In order to avoid this performance penalty, do not use global pages
    when running virtualized on AMD or Hygon hardware. A command line option
    'global-pages' is provided in order to allow the user to select whether
    global pages will be enabled for PV guests.
    
    The above figures are from a PV shim running on AMD hardware with
    32 vCPUs:
    
    PGE enabled, x2APIC mode:
    
    (XEN) Global lock flush_lock: addr=ffff82d0804b01c0, lockval=1adb1adb, not locked
    (XEN)   lock:1841883(1375128998543), block:1658716(10193054890781)
    
    Average lock time:   746588ns
    Average block time: 6145147ns
    
    PGE disabled, x2APIC mode:
    
    (XEN) Global lock flush_lock: addr=ffff82d0804af1c0, lockval=a8bfa8bf, not locked
    (XEN)   lock:2730175(657505389886), block:2039716(2963768247738)
    
    Average lock time:   240829ns
    Average block time: 1453029ns
    
    As seen from the above figures the lock and block time of the flush
    lock is reduced to approximately 1/3 of the original value.
    
    Note that XEN_MINIMAL_CR4 and mmu_cr4_features are not modified, and
    thus global pages are left enabled for the hypervisor. This is not an
    issue because the code to switch the control registers (cr3 and cr4)
    already takes into account such situation and performs the necessary
    flushes. The same already happens when using XPTI or PCIDE, as the
    guest cr4 doesn't have global pages enabled in that case either.
    
    Also note that the suspend and resume code is correct in writing
    mmu_cr4_features into cr4 on resume, since that's the cr4 used by the
    idle vCPU which is the context used by the suspend and resume routine.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    
    x86/pv: Fix `global-pages` to match the documentation
    
    c/s 5de961d9c09 "x86: do not enable global pages when virtualized on AMD or
    Hygon hardware" in fact does.  Fix the calculation in pge_init().
    
    While fixing this, adjust the command line documenation, first to use the
    newer style, and to expand the description to discuss cases where the option
    might be useful to use, but Xen can't account for by default.
    
    Fixes: 5de961d9c09 ('x86: do not enable global pages when virtualized on AMD or Hygon hardware')
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 5de961d9c0976f0a03d830956a4e7ac3e9d887ff
    master date: 2019-12-10 11:34:00 +0100
    master commit: b041709c369b36cb17a019a196fba773ec7e77bd
    master date: 2019-12-16 16:04:10 +0000
---
 docs/misc/xen-command-line.pandoc | 19 +++++++++++++++++++
 xen/arch/x86/pv/domain.c          | 16 +++++++++++++++-
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8b10480786..1d9d816622 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1087,6 +1087,25 @@ value settable via Xen tools.
 
 Dom0 is using this value for sizing its maptrack table.
 
+### global-pages
+    = <boolean>
+
+    Applicability: x86
+    Default: true unless running virtualized on AMD or Hygon hardware
+
+Control whether to use global pages for PV guests, and thus the need to
+perform TLB flushes by writing to CR4.  This is a performance trade-off.
+
+AMD SVM does not support selective trapping of CR4 writes, which means that a
+global TLB flush (two CR4 writes) takes two VMExits, and massively outweigh
+the benefit of using global pages to begin with.  This case is easy for Xen to
+spot, and is accounted for in the default setting.
+
+Other cases where this option might be a benefit is on VT-x hardware when
+selective CR4 writes are not supported/enabled by the hypervisor, or in any
+virtualised case using shadow paging.  These are not easy for Xen to spot, so
+are not accounted for in the default setting.
+
 ### guest_loglvl
 > `= <level>[/<rate-limited level>]` where level is `none | error | warning | info | debug | all`
 
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 4b6f48dea2..ed5111fc47 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -118,6 +118,20 @@ unsigned long pv_fixup_guest_cr4(const struct vcpu *v, unsigned long cr4)
             (mmu_cr4_features & PV_CR4_GUEST_VISIBLE_MASK));
 }
 
+static int8_t __read_mostly opt_global_pages = -1;
+boolean_runtime_param("global-pages", opt_global_pages);
+
+static int __init pge_init(void)
+{
+    if ( opt_global_pages == -1 )
+        opt_global_pages = !cpu_has_hypervisor ||
+                           !(boot_cpu_data.x86_vendor &
+                             (X86_VENDOR_AMD | X86_VENDOR_HYGON));
+
+    return 0;
+}
+__initcall(pge_init);
+
 unsigned long pv_make_cr4(const struct vcpu *v)
 {
     const struct domain *d = v->domain;
@@ -130,7 +144,7 @@ unsigned long pv_make_cr4(const struct vcpu *v)
      */
     if ( d->arch.pv.pcid )
         cr4 |= X86_CR4_PCIDE;
-    else if ( !d->arch.pv.xpti )
+    else if ( !d->arch.pv.xpti && opt_global_pages )
         cr4 |= X86_CR4_PGE;
 
     /*
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:55:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:55:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaSR-00018b-1k; Thu, 09 Apr 2020 16:55:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaSP-00018S-Mo
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:13 +0000
X-Inumbo-ID: e059a5a2-7a82-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e059a5a2-7a82-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:55:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=dCHd1rV46Ni+8IJQGwsqplGCiDcLBti8nZ3RsIbnDFM=; b=4SiFeoRCdE/jQVe5HAW18PGnah
 ppaNruLXu+c/hQ8k5uo9bHrXF7AiVyCC0EyQdl2GdwsJ9Q3PgGWaVKBSnyQmd1uVq8VWHSjfLx48N
 LblVoCn983Crsz6BsafVLL/jgwPQdV747tPacgUSY9VZVqIzLr3RwyVQnTDRPIvC/3Xo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSO-00026u-Qn
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSO-00062b-Oq
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/time: update vtsc_last with cmpxchg and drop
 vtsc_lock
Message-Id: <E1jMaSO-00062b-Oq@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:55:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 655897c9490a70d27a7be4a235531765e1af8a53
Author:     Igor Druzhinin <igor.druzhinin@citrix.com>
AuthorDate: Thu Apr 9 08:58:22 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 08:58:22 2020 +0200

    x86/time: update vtsc_last with cmpxchg and drop vtsc_lock
    
    Now that vtsc_last is the only entity protected by vtsc_lock we can
    simply update it using a single atomic operation and drop the spinlock
    entirely. This is extremely important for the case of running nested
    (e.g. shim instance with lots of vCPUs assigned) since if preemption
    happens somewhere inside the critical section that would immediately
    mean that other vCPU stop progressing (and probably being preempted
    as well) waiting for the spinlock to be freed.
    
    This fixes constant shim guest boot lockups with ~32 vCPUs if there is
    vCPU overcommit present (which increases the likelihood of preemption).
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: f9dee1f945ebb6fb5f9df6f5d95b15c25727f48e
    master date: 2019-12-20 16:44:38 +0100
---
 xen/arch/x86/domain.c        |  1 -
 xen/arch/x86/time.c          | 16 ++++++----------
 xen/include/asm-x86/domain.h |  1 -
 3 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index bed19fc4dc..94531be05e 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -539,7 +539,6 @@ int arch_domain_create(struct domain *d,
     INIT_PAGE_LIST_HEAD(&d->arch.relmem_list);
 
     spin_lock_init(&d->arch.e820_lock);
-    spin_lock_init(&d->arch.vtsc_lock);
 
     /* Minimal initialisation for the idle domain. */
     if ( unlikely(is_idle_domain(d)) )
diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c
index 0aa052f5ae..3dac3f3ad6 100644
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2141,11 +2141,9 @@ u64 gtsc_to_gtime(struct domain *d, u64 tsc)
 
 uint64_t pv_soft_rdtsc(const struct vcpu *v, const struct cpu_user_regs *regs)
 {
-    s_time_t now = get_s_time();
+    s_time_t old, new, now = get_s_time();
     struct domain *d = v->domain;
 
-    spin_lock(&d->arch.vtsc_lock);
-
 #if !defined(NDEBUG) || defined(CONFIG_PERF_COUNTERS)
     if ( guest_kernel_mode(v, regs) )
         d->arch.vtsc_kerncount++;
@@ -2153,14 +2151,12 @@ uint64_t pv_soft_rdtsc(const struct vcpu *v, const struct cpu_user_regs *regs)
         d->arch.vtsc_usercount++;
 #endif
 
-    if ( (int64_t)(now - d->arch.vtsc_last) > 0 )
-        d->arch.vtsc_last = now;
-    else
-        now = ++d->arch.vtsc_last;
-
-    spin_unlock(&d->arch.vtsc_lock);
+    do {
+        old = d->arch.vtsc_last;
+        new = now > d->arch.vtsc_last ? now : old + 1;
+    } while ( cmpxchg(&d->arch.vtsc_last, old, new) != old );
 
-    return gtime_to_gtsc(d, now);
+    return gtime_to_gtsc(d, new);
 }
 
 bool clocksource_is_tsc(void)
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 212303f371..2c0940899b 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -364,7 +364,6 @@ struct arch_domain
     int tsc_mode;            /* see include/asm-x86/time.h */
     bool_t vtsc;             /* tsc is emulated (may change after migrate) */
     s_time_t vtsc_last;      /* previous TSC value (guarantee monotonicity) */
-    spinlock_t vtsc_lock;
     uint64_t vtsc_offset;    /* adjustment for save/restore/migrate */
     uint32_t tsc_khz;        /* cached guest khz for certain emulated or
                                 hardware TSC scaling cases */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:55:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:55:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaSb-00019o-3g; Thu, 09 Apr 2020 16:55:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaSZ-00019c-VP
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:23 +0000
X-Inumbo-ID: e7276d86-7a82-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e7276d86-7a82-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:55:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=dEoqmZm9x4ubo242S6tQmV6tAfftew4T96jntiq9goE=; b=QXOtM/K//fsbokUKGSYeRWq4TD
 vKNZJnWgNQJQ+wOj0BtkwYeI4pt6OU1Olc+kFe+6KHSXNwT/YPLt0U+ERbc0XIz9mnnDCdUGrK8xj
 q3BNj7kXfJrJPZWtIG0XtlsDaA9d0l7A8gfWMlIKQZ9hQRUhBVBwQfpFGDF8NWEhMGsg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSY-00027G-UC
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSY-00063L-Sp
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/amd: Avoid cpu_has_hypervisor evaluating true
 on native hardware
Message-Id: <E1jMaSY-00063L-Sp@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:55:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 5e106996495d98b7c8629f07e99d780db8491ea4
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 08:59:55 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 08:59:55 2020 +0200

    x86/amd: Avoid cpu_has_hypervisor evaluating true on native hardware
    
    Currently when booting native on AMD hardware, cpuidmask_defaults._1cd gets
    configured with the HYPERVISOR bit before native CPUID is scanned for feature
    bits.
    
    This results in cpu_has_hypervisor becoming set as part of identify_cpu(), and
    ends up appearing in the raw and host CPU policies.
    
    A combination of this bug, and c/s bb502a8ca59 "x86: check feature flags after
    resume" which checks that feature bits don't go missing, results in broken S3
    on AMD hardware.
    
    Alter amd_init_levelling() to exclude the HYPERVISOR bit from
    cpumask_defaults, and update domain_cpu_policy_changed() to allow it to be
    explicitly forwarded.
    
    This also fixes a bug on kexec, where the hypervisor bit is left enabled for
    the new kernel to find.
    
    These changes highlight a further but - dom0 construction is asymetric with
    domU construction, by not having any calls to domain_cpu_policy_changed().
    Extend arch_domain_create() to always call domain_cpu_policy_changed().
    
    Reported-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: e2d1254f5af2a6ff24d009523639b80ccba2c089
    master date: 2020-02-14 18:01:52 +0000
---
 xen/arch/x86/cpu/amd.c       | 3 ---
 xen/arch/x86/domain.c        | 2 ++
 xen/arch/x86/domctl.c        | 9 ++++++++-
 xen/include/asm-x86/domain.h | 2 ++
 4 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c
index 8b5f0f2e4c..0906b23582 100644
--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -297,9 +297,6 @@ static void __init noinline amd_init_levelling(void)
 			ecx |= cpufeat_mask(X86_FEATURE_OSXSAVE);
 		edx |= cpufeat_mask(X86_FEATURE_APIC);
 
-		/* Allow the HYPERVISOR bit to be set via guest policy. */
-		ecx |= cpufeat_mask(X86_FEATURE_HYPERVISOR);
-
 		cpuidmask_defaults._1cd = ((uint64_t)ecx << 32) | edx;
 	}
 
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 94531be05e..2ce00fb26f 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -665,6 +665,8 @@ int arch_domain_create(struct domain *d,
      */
     d->arch.x87_fip_width = cpu_has_fpu_sel ? 0 : 8;
 
+    domain_cpu_policy_changed(d);
+
     return 0;
 
  fail:
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 7aed545d2d..d73bc8f318 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -46,7 +46,7 @@ static int gdbsx_guest_mem_io(domid_t domid, struct xen_domctl_gdbsx_memio *iop)
     return iop->remain ? -EFAULT : 0;
 }
 
-static void domain_cpu_policy_changed(struct domain *d)
+void domain_cpu_policy_changed(struct domain *d)
 {
     const struct cpuid_policy *p = d->arch.cpuid;
     struct vcpu *v;
@@ -104,6 +104,13 @@ static void domain_cpu_policy_changed(struct domain *d)
                     ecx = 0;
                 edx = cpufeat_mask(X86_FEATURE_APIC);
 
+                /*
+                 * If the Hypervisor bit is set in the policy, we can also
+                 * forward it into real CPUID.
+                 */
+                if ( p->basic.hypervisor )
+                    ecx |= cpufeat_mask(X86_FEATURE_HYPERVISOR);
+
                 mask |= ((uint64_t)ecx << 32) | edx;
                 break;
             }
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 2c0940899b..9dc7556980 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -627,6 +627,8 @@ struct guest_memory_policy
 void update_guest_memory_policy(struct vcpu *v,
                                 struct guest_memory_policy *policy);
 
+void domain_cpu_policy_changed(struct domain *d);
+
 bool update_runstate_area(struct vcpu *);
 bool update_secondary_system_time(struct vcpu *,
                                   struct vcpu_time_info *);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:55:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:55:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaSl-0001B2-5P; Thu, 09 Apr 2020 16:55:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaSj-0001Ar-Vm
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:34 +0000
X-Inumbo-ID: ed281622-7a82-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ed281622-7a82-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:55:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=9IBhbIRBLRwOkQqmRRvobF7IDvjb9mtX5MHTlRnTduY=; b=hY/jpAKqUbcaN3sVDs10jsrvcX
 hXzckSEse0hRdBLhGDx/pfS1wDt9Ic485tvkJ6I3YmgbVhL3WMIKP5Hl+C220/kPmH6y1Y57jY1Z7
 Zap9TV1lHKnd5YJPQZ0+vO63zaTuFme/I0WMFCQPOacAml+df01akt/78SUbopH2dEl8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSj-00027R-0q
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSi-00063v-W0
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/vPMU: don't blindly assume
 IA32_PERF_CAPABILITIES MSR exists
Message-Id: <E1jMaSi-00063v-W0@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:55:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 431ddeb205e5bc7e46842b75f5cd8aa4956e94af
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:01:28 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:01:28 2020 +0200

    x86/vPMU: don't blindly assume IA32_PERF_CAPABILITIES MSR exists
    
    Just like VMX'es lbr_tsx_fixup_check() the respective CPUID bit should
    be consulted first.
    
    Reported-by: Farrah Chen <farrah.chen@intel.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 15c39c7c913f26fba40231e103ce1ffa6101e7c9
    master date: 2020-02-26 17:35:48 +0100
---
 xen/arch/x86/cpu/vpmu_intel.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c
index 6e27f6ec8e..75aa11c6ad 100644
--- a/xen/arch/x86/cpu/vpmu_intel.c
+++ b/xen/arch/x86/cpu/vpmu_intel.c
@@ -900,7 +900,6 @@ int vmx_vpmu_initialise(struct vcpu *v)
 
 int __init core2_vpmu_init(void)
 {
-    u64 caps;
     unsigned int version = 0;
     unsigned int i;
 
@@ -932,8 +931,14 @@ int __init core2_vpmu_init(void)
 
     arch_pmc_cnt = core2_get_arch_pmc_count();
     fixed_pmc_cnt = core2_get_fixed_pmc_count();
-    rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
-    full_width_write = (caps >> 13) & 1;
+
+    if ( cpu_has_pdcm )
+    {
+        uint64_t caps;
+
+        rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
+        full_width_write = (caps >> 13) & 1;
+    }
 
     fixed_ctrl_mask = ~((1ull << (fixed_pmc_cnt * FIXED_CTR_CTRL_BITS)) - 1);
     /* mask .AnyThread bits for all fixed counters */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:55:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:55:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaSw-0001CJ-73; Thu, 09 Apr 2020 16:55:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaSu-0001C7-2p
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:44 +0000
X-Inumbo-ID: f32a2e70-7a82-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f32a2e70-7a82-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:55:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=QxQeOBNEW/j+1V/bShnyy9vmKYVLz4Z8bO/lmz0Zjvk=; b=nKk3XFJNwhag0Jvcq2euqa1Ys7
 qrOaFEbD3FFA1DXu1FObx6LyrmUHtWE9yaMNrlYdiyH7ZvPlNu0AB0iRfLzYVcFubJwY/AgERNRkY
 en5eJ5rmA4r5njrvqH4xX7nhLkH9roFH0mC2+JBPC/DeTIdD5qIevmZ99IncgcQ3PDxg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSt-00027a-3X
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaSt-00064X-2Y
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen: make sure stop_machine_run() is always called
 in a tasklet
Message-Id: <E1jMaSt-00064X-2Y@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:55:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 07ac8a9790a5efa580903c5428b72873a11a82dc
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:03:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:03:21 2020 +0200

    xen: make sure stop_machine_run() is always called in a tasklet
    
    With core scheduling active it is mandatory for stop_machine_run() to
    be called in idle context only (so either during boot or in a tasklet),
    as otherwise a scheduling deadlock would occur: stop_machine_run()
    does a cpu rendezvous by activating a tasklet on all other cpus. In
    case stop_machine_run() was not called in an idle vcpu it would block
    scheduling the idle vcpu on its siblings with core scheduling being
    active, resulting in a hang.
    
    Put a BUG_ON() into stop_machine_run() to test for being called in an
    idle vcpu only and adapt the missing call site (ucode loading) to use a
    tasklet for calling stop_machine_run().
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 188f479de4b77e5493a7df258974a0a9d119fb0c
    master date: 2020-03-02 13:08:04 +0000
---
 xen/arch/x86/microcode.c  | 55 ++++++++++++++++++++++++++++++-----------------
 xen/common/rcupdate.c     |  4 ++++
 xen/common/stop_machine.c |  7 ++++++
 3 files changed, 46 insertions(+), 20 deletions(-)

diff --git a/xen/arch/x86/microcode.c b/xen/arch/x86/microcode.c
index 6ced293d88..29b3f42cc2 100644
--- a/xen/arch/x86/microcode.c
+++ b/xen/arch/x86/microcode.c
@@ -584,30 +584,18 @@ static int do_microcode_update(void *patch)
     return ret;
 }
 
-int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
+struct ucode_buf {
+    unsigned int len;
+    char buffer[];
+};
+
+static long microcode_update_helper(void *data)
 {
     int ret;
-    void *buffer;
+    struct ucode_buf *buffer = data;
     unsigned int cpu, updated;
     struct microcode_patch *patch;
 
-    if ( len != (uint32_t)len )
-        return -E2BIG;
-
-    if ( microcode_ops == NULL )
-        return -EINVAL;
-
-    buffer = xmalloc_bytes(len);
-    if ( !buffer )
-        return -ENOMEM;
-
-    ret = copy_from_guest(buffer, buf, len);
-    if ( ret )
-    {
-        xfree(buffer);
-        return -EFAULT;
-    }
-
     /* cpu_online_map must not change during update */
     if ( !get_cpu_maps() )
     {
@@ -629,7 +617,7 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
         return -EPERM;
     }
 
-    patch = parse_blob(buffer, len);
+    patch = parse_blob(buffer->buffer, buffer->len);
     xfree(buffer);
     if ( IS_ERR(patch) )
     {
@@ -722,6 +710,33 @@ int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
     return ret;
 }
 
+int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void) buf, unsigned long len)
+{
+    int ret;
+    struct ucode_buf *buffer;
+
+    if ( len != (uint32_t)len )
+        return -E2BIG;
+
+    if ( microcode_ops == NULL )
+        return -EINVAL;
+
+    buffer = xmalloc_flex_struct(struct ucode_buf, buffer, len);
+    if ( !buffer )
+        return -ENOMEM;
+
+    ret = copy_from_guest(buffer->buffer, buf, len);
+    if ( ret )
+    {
+        xfree(buffer);
+        return -EFAULT;
+    }
+    buffer->len = len;
+
+    return continue_hypercall_on_cpu(smp_processor_id(),
+                                     microcode_update_helper, buffer);
+}
+
 static int __init microcode_init(void)
 {
     /*
diff --git a/xen/common/rcupdate.c b/xen/common/rcupdate.c
index a56103c6f7..d6dc4b48db 100644
--- a/xen/common/rcupdate.c
+++ b/xen/common/rcupdate.c
@@ -177,6 +177,10 @@ static int rcu_barrier_action(void *_cpu_count)
     return 0;
 }
 
+/*
+ * As rcu_barrier() is using stop_machine_run() it is allowed to be used in
+ * idle context only (see comment for stop_machine_run()).
+ */
 int rcu_barrier(void)
 {
     atomic_t cpu_count = ATOMIC_INIT(0);
diff --git a/xen/common/stop_machine.c b/xen/common/stop_machine.c
index 681b40906d..5d95f2aaa9 100644
--- a/xen/common/stop_machine.c
+++ b/xen/common/stop_machine.c
@@ -67,6 +67,12 @@ static void stopmachine_wait_state(void)
         cpu_relax();
 }
 
+/*
+ * Sync all processors and call a function on one or all of them.
+ * As stop_machine_run() is using a tasklet for syncing the processors it is
+ * mandatory to be called only on an idle vcpu, as otherwise active core
+ * scheduling might hang.
+ */
 int stop_machine_run(int (*fn)(void *), void *data, unsigned int cpu)
 {
     unsigned int i, nr_cpus;
@@ -74,6 +80,7 @@ int stop_machine_run(int (*fn)(void *), void *data, unsigned int cpu)
     int ret;
 
     BUG_ON(!local_irq_is_enabled());
+    BUG_ON(!is_idle_vcpu(current));
 
     /* cpu_online_map must not change. */
     if ( !get_cpu_maps() )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:55:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:55:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaT6-0001DC-97; Thu, 09 Apr 2020 16:55:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaT4-0001D3-PH
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:54 +0000
X-Inumbo-ID: f92e9414-7a82-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f92e9414-7a82-11ea-83d8-bc764e2007e4;
 Thu, 09 Apr 2020 16:55:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hVMdLk6M0azqRoeGQw78iE1qR+vUEGFZvs7C9+2WsLI=; b=unl2O1nLC4STpkmsRS4XoL8JCB
 jIq4hcawg4e06KKmLCnWLKXGaY5e4LkolqmlGnlNNDyv9IXug1iu72qLYjtKogSuXKq/md6JuyfGP
 fIQawcdleyPyDR2RIhY1QgUB5hOuLTerLLAdbJ2HbNFYJ8ISLaf5nxHmQRFMO7ubt7lE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaT3-00028T-6n
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaT3-00065L-5o
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:55:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen: do live patching only from main idle loop
Message-Id: <E1jMaT3-00065L-5o@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:55:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0d16bb7e6ad4834c66366d84d419555c384485d9
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:04:19 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:04:19 2020 +0200

    xen: do live patching only from main idle loop
    
    One of the main design goals of core scheduling is to avoid actions
    which are not directly related to the domain currently running on a
    given cpu or core. Live patching is one of those actions which are
    allowed taking place on a cpu only when the idle scheduling unit is
    active on that cpu.
    
    Unfortunately live patching tries to force the cpus into the idle loop
    just by raising the schedule softirq, which will no longer be
    guaranteed to work with core scheduling active. Additionally there are
    still some places in the hypervisor calling check_for_livepatch_work()
    without being in the idle loop.
    
    It is easy to force a cpu into the main idle loop by scheduling a
    tasklet on it. So switch live patching to use tasklets for switching to
    idle and raising scheduling events. Additionally the calls of
    check_for_livepatch_work() outside the main idle loop can be dropped.
    
    As tasklets are only running on idle vcpus and stop_machine_run()
    is activating tasklets on all cpus but the one it has been called on
    to rendezvous, it is mandatory for stop_machine_run() to be called on
    an idle vcpu, too, as otherwise there is no way for scheduling to
    activate the idle vcpu for the tasklet on the sibling of the cpu
    stop_machine_run() has been called on.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Tested-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    master commit: 005de45c887e0fefde59570686877afeda2c7b4e
    master date: 2020-03-02 18:36:50 +0000
---
 xen/arch/arm/domain.c       |  9 ++++-----
 xen/arch/arm/traps.c        |  6 ------
 xen/arch/x86/domain.c       |  9 ++++-----
 xen/arch/x86/hvm/svm/svm.c  |  2 +-
 xen/arch/x86/hvm/vmx/vmcs.c |  2 +-
 xen/arch/x86/pv/domain.c    |  2 +-
 xen/arch/x86/setup.c        |  2 +-
 xen/common/livepatch.c      | 39 ++++++++++++++++++++++++++++++++++-----
 8 files changed, 46 insertions(+), 25 deletions(-)

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index c0a13aa0ab..283eb6bb43 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -72,7 +72,11 @@ void idle_loop(void)
 
         /* Are we here for running vcpu context tasklets, or for idling? */
         if ( unlikely(tasklet_work_to_do(cpu)) )
+        {
             do_tasklet();
+            /* Livepatch work is always kicked off via a tasklet. */
+            check_for_livepatch_work();
+        }
         /*
          * Test softirqs twice --- first to see if should even try scrubbing
          * and then, after it is done, whether softirqs became pending
@@ -83,11 +87,6 @@ void idle_loop(void)
             do_idle();
 
         do_softirq();
-        /*
-         * We MUST be last (or before dsb, wfi). Otherwise after we get the
-         * softirq we would execute dsb,wfi (and sleep) and not patch.
-         */
-        check_for_livepatch_work();
     }
 }
 
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index d028ec9224..1d2b762e22 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -23,7 +23,6 @@
 #include <xen/iocap.h>
 #include <xen/irq.h>
 #include <xen/lib.h>
-#include <xen/livepatch.h>
 #include <xen/mem_access.h>
 #include <xen/mm.h>
 #include <xen/perfc.h>
@@ -2231,11 +2230,6 @@ static void check_for_pcpu_work(void)
     {
         local_irq_enable();
         do_softirq();
-        /*
-         * Must be the last one - as the IPI will trigger us to come here
-         * and we want to patch the hypervisor with almost no stack.
-         */
-        check_for_livepatch_work();
         local_irq_disable();
     }
 }
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 2ce00fb26f..d42a32c8a9 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -141,7 +141,11 @@ static void idle_loop(void)
 
         /* Are we here for running vcpu context tasklets, or for idling? */
         if ( unlikely(tasklet_work_to_do(cpu)) )
+        {
             do_tasklet();
+            /* Livepatch work is always kicked off via a tasklet. */
+            check_for_livepatch_work();
+        }
         /*
          * Test softirqs twice --- first to see if should even try scrubbing
          * and then, after it is done, whether softirqs became pending
@@ -151,11 +155,6 @@ static void idle_loop(void)
                     !softirq_pending(cpu) )
             pm_idle();
         do_softirq();
-        /*
-         * We MUST be last (or before pm_idle). Otherwise after we get the
-         * softirq we would execute pm_idle (and sleep) and not patch.
-         */
-        check_for_livepatch_work();
     }
 }
 
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 6ae43999ff..dc1bd32b9b 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1032,7 +1032,7 @@ static void noreturn svm_do_resume(struct vcpu *v)
 
     hvm_do_resume(v);
 
-    reset_stack_and_jump(svm_asm_do_resume);
+    reset_stack_and_jump_nolp(svm_asm_do_resume);
 }
 
 void svm_vmenter_helper(const struct cpu_user_regs *regs)
diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c
index f10f6b78ec..d53eceb23a 100644
--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -1889,7 +1889,7 @@ void vmx_do_resume(struct vcpu *v)
     if ( host_cr4 != read_cr4() )
         __vmwrite(HOST_CR4, read_cr4());
 
-    reset_stack_and_jump(vmx_asm_do_vmentry);
+    reset_stack_and_jump_nolp(vmx_asm_do_vmentry);
 }
 
 static inline unsigned long vmr(unsigned long field)
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index ed5111fc47..3308b6b7d4 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -61,7 +61,7 @@ custom_runtime_param("pcid", parse_pcid);
 static void noreturn continue_nonidle_domain(struct vcpu *v)
 {
     check_wakeup_from_wait();
-    reset_stack_and_jump(ret_from_intr);
+    reset_stack_and_jump_nolp(ret_from_intr);
 }
 
 static int setup_compat_l4(struct vcpu *v)
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index cc7274eae6..ae61e93024 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -631,7 +631,7 @@ static void __init noreturn reinit_bsp_stack(void)
     stack_base[0] = stack;
     memguard_guard_stack(stack);
 
-    reset_stack_and_jump(init_done);
+    reset_stack_and_jump_nolp(init_done);
 }
 
 /*
diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c
index 7ab1f82290..1f89984c9a 100644
--- a/xen/common/livepatch.c
+++ b/xen/common/livepatch.c
@@ -17,6 +17,7 @@
 #include <xen/spinlock.h>
 #include <xen/string.h>
 #include <xen/symbols.h>
+#include <xen/tasklet.h>
 #include <xen/version.h>
 #include <xen/virtual_region.h>
 #include <xen/vmap.h>
@@ -103,6 +104,7 @@ static struct livepatch_work livepatch_work;
  * Having an per-cpu lessens the load.
  */
 static DEFINE_PER_CPU(bool_t, work_to_do);
+static DEFINE_PER_CPU(struct tasklet, livepatch_tasklet);
 
 static int get_name(const struct xen_livepatch_name *name, char *n)
 {
@@ -1247,17 +1249,16 @@ static int schedule_work(struct payload *data, uint32_t cmd, uint32_t timeout)
     smp_wmb();
 
     livepatch_work.do_work = 1;
-    this_cpu(work_to_do) = 1;
+    tasklet_schedule_on_cpu(&this_cpu(livepatch_tasklet), smp_processor_id());
 
     put_cpu_maps();
 
     return 0;
 }
 
-static void reschedule_fn(void *unused)
+static void tasklet_fn(unsigned long unused)
 {
     this_cpu(work_to_do) = 1;
-    raise_softirq(SCHEDULE_SOFTIRQ);
 }
 
 static int livepatch_spin(atomic_t *counter, s_time_t timeout,
@@ -1317,7 +1318,7 @@ void check_for_livepatch_work(void)
     if ( atomic_inc_and_test(&livepatch_work.semaphore) )
     {
         struct payload *p;
-        unsigned int cpus;
+        unsigned int cpus, i;
 
         p = livepatch_work.data;
         if ( !get_cpu_maps() )
@@ -1346,7 +1347,9 @@ void check_for_livepatch_work(void)
         {
             dprintk(XENLOG_DEBUG, LIVEPATCH "%s: CPU%u - IPIing the other %u CPUs\n",
                     p->name, cpu, cpus);
-            smp_call_function(reschedule_fn, NULL, 0);
+            for_each_online_cpu ( i )
+                if ( i != cpu )
+                    tasklet_schedule_on_cpu(&per_cpu(livepatch_tasklet, i), i);
         }
 
         timeout = livepatch_work.timeout + NOW();
@@ -1668,8 +1671,34 @@ static void livepatch_printall(unsigned char key)
     spin_unlock(&payload_lock);
 }
 
+static int cpu_callback(
+    struct notifier_block *nfb, unsigned long action, void *hcpu)
+{
+    unsigned int cpu = (unsigned long)hcpu;
+
+    if ( action == CPU_UP_PREPARE )
+        tasklet_init(&per_cpu(livepatch_tasklet, cpu), tasklet_fn, 0);
+
+    return NOTIFY_DONE;
+}
+
+static struct notifier_block cpu_nfb = {
+    .notifier_call = cpu_callback
+};
+
 static int __init livepatch_init(void)
 {
+    unsigned int cpu;
+
+    for_each_online_cpu ( cpu )
+    {
+        void *hcpu = (void *)(long)cpu;
+
+        cpu_callback(&cpu_nfb, CPU_UP_PREPARE, hcpu);
+    }
+
+    register_cpu_notifier(&cpu_nfb);
+
     register_keyhandler('x', livepatch_printall, "print livepatch info", 1);
 
     arch_livepatch_init();
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:56:04 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:56:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaTE-0001Eo-Cd; Thu, 09 Apr 2020 16:56:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaTD-0001Eg-UZ
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:03 +0000
X-Inumbo-ID: ff30bbbc-7a82-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ff30bbbc-7a82-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 16:56:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=MaFQ9iptibVqqQZhUEtXsbwazgo1MvYjTkS8yNMNbLQ=; b=vOYP16ccvueNuvPd4GzNYNKMYJ
 mjqgR/4gWoXpwI/ri7pqfUnIRBhexTrnN2TYVbrZsU20RpPfxi+N6zdP9HdIUj4dWAfPqAS8kMIBA
 fgvgTHTTSZlEGG9o18H+sgUARhFNLCoa+DsR2E6SFZCxWeIO2TJbBCfHwm9BAKGZVNVA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTD-00028v-9N
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTD-00066B-8Q
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] sched: fix error path in
 cpupool_unassign_cpu_start()
Message-Id: <E1jMaTD-00066B-8Q@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:56:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e1e24c5e5563c34f5e063924e4b13aa3d169ed03
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:05:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:05:26 2020 +0200

    sched: fix error path in cpupool_unassign_cpu_start()
    
    In case moving away all domains from the cpu to be removed is failing
    in cpupool_unassign_cpu_start() the error path is missing to release
    sched_res_rculock.
    
    The normal exit path is releasing domlist_read_lock instead (this is
    currently no problem as the reference to the specific rcu lock is not
    used by rcu_read_unlock()).
    
    While at it indent the present error label by one space.
    
    Reported-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: 98ed1f43cc2c89efd38deed1035dba5b1ced5d45
    master date: 2020-03-03 16:02:32 +0100
---
 xen/common/cpupool.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c
index 4d3adbdd8d..5a90bdc9ff 100644
--- a/xen/common/cpupool.c
+++ b/xen/common/cpupool.c
@@ -465,7 +465,7 @@ static int cpupool_unassign_cpu_start(struct cpupool *c, unsigned int cpu)
         }
         rcu_read_unlock(&domlist_read_lock);
         if ( ret )
-            goto out;
+            goto out_rcu;
     }
     cpupool_moving_cpu = cpu;
     atomic_inc(&c->refcnt);
@@ -473,8 +473,9 @@ static int cpupool_unassign_cpu_start(struct cpupool *c, unsigned int cpu)
     cpumask_andnot(c->cpu_valid, c->cpu_valid, cpus);
     cpumask_and(c->res_valid, c->cpu_valid, &sched_res_mask);
 
-    rcu_read_unlock(&domlist_read_lock);
-out:
+ out_rcu:
+    rcu_read_unlock(&sched_res_rculock);
+ out:
     spin_unlock(&cpupool_lock);
 
     return ret;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:56:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:56:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaTP-0001G1-EG; Thu, 09 Apr 2020 16:56:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaTO-0001Fu-83
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:14 +0000
X-Inumbo-ID: 053d5182-7a83-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 053d5182-7a83-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 16:56:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=455viBJ3HMCTZoYGbyRaQkzhXml9dAPEpEr9mALwtjQ=; b=bRYOkfENI8TUFoHv7q72c2V1Cp
 D1p4eTxXD6QvoxnJiH89lixabe68HTTtNRjzX9Pkeq2IeLwrwMfc/ZumA1WnHTCJb4VNdoyjQrZEB
 4BoLWSFbp4nJTcuPQrtU6imfayrJ2Ol4kznkjd4MVeazZAWt2plgqeKc1zXbJqIi6tdw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTN-000294-C3
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTN-000677-B9
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/dom0: improve PVH initrd and metadata placement
Message-Id: <E1jMaTN-000677-B9@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:56:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a99de9de81c7f1c8af532a23b895806225eaf192
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 9 09:06:31 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:06:31 2020 +0200

    x86/dom0: improve PVH initrd and metadata placement
    
    Don't assume there's going to be enough space at the tail of the
    loaded kernel and instead try to find a suitable memory area where the
    initrd and metadata can be loaded.
    
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    
    x86/dom0: Fix build with clang
    
    find_memory() isn't marked as __init, so if it isn't fully inlined, it ends up
    tripping:
    
      Error: size of dom0_build.o:.text is 0x0c1
    
    Fixes: 73b47eea21 "x86/dom0: improve PVH initrd and metadata placement"
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    master commit: 73b47eea21045556dc5334e4f17d0c05c23f3c16
    master date: 2020-03-05 10:43:15 +0100
    master commit: 40213cd8626bac712fa69c4978993e87b57a7d0c
    master date: 2020-03-05 18:11:51 +0000
---
 xen/arch/x86/hvm/dom0_build.c | 58 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 57 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 380412151b..9a46005494 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -491,6 +491,45 @@ static int __init pvh_populate_p2m(struct domain *d)
 #undef MB1_PAGES
 }
 
+static paddr_t __init find_memory(
+    const struct domain *d, const struct elf_binary *elf, size_t size)
+{
+    paddr_t kernel_start = (paddr_t)elf->dest_base & PAGE_MASK;
+    paddr_t kernel_end = ROUNDUP((paddr_t)elf->dest_base + elf->dest_size,
+                                 PAGE_SIZE);
+    unsigned int i;
+
+    /*
+     * The memory map is sorted and all RAM regions starts and sizes are
+     * aligned to page boundaries.
+     */
+    for ( i = 0; i < d->arch.nr_e820; i++ )
+    {
+        paddr_t start, end = d->arch.e820[i].addr + d->arch.e820[i].size;
+
+        /* Don't use memory below 1MB, as it could overwrite BDA/EBDA/IBFT. */
+        if ( end <= MB(1) || d->arch.e820[i].type != E820_RAM )
+            continue;
+
+        start = MAX(ROUNDUP(d->arch.e820[i].addr, PAGE_SIZE), MB(1));
+
+        ASSERT(IS_ALIGNED(start, PAGE_SIZE) && IS_ALIGNED(end, PAGE_SIZE));
+
+        if ( end <= kernel_start || start >= kernel_end )
+            ; /* No overlap, nothing to do. */
+        /* Deal with the kernel already being loaded in the region. */
+        else if ( kernel_start - start > end - kernel_end )
+            end = kernel_start;
+        else
+            start = kernel_end;
+
+        if ( end - start >= size )
+            return start;
+    }
+
+    return INVALID_PADDR;
+}
+
 static int __init pvh_load_kernel(struct domain *d, const module_t *image,
                                   unsigned long image_headroom,
                                   module_t *initrd, void *image_base,
@@ -547,7 +586,24 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
         return rc;
     }
 
-    last_addr = ROUNDUP(parms.virt_kend - parms.virt_base, PAGE_SIZE);
+    /*
+     * Find a RAM region big enough (and that doesn't overlap with the loaded
+     * kernel) in order to load the initrd and the metadata. Note it could be
+     * split into smaller allocations, done as a single region in order to
+     * simplify it.
+     */
+    last_addr = find_memory(d, &elf, sizeof(start_info) +
+                            (initrd ? ROUNDUP(initrd->mod_end, PAGE_SIZE) +
+                                      sizeof(mod)
+                                    : 0) +
+                            (cmdline ? ROUNDUP(strlen(cmdline) + 1,
+                                               elf_64bit(&elf) ? 8 : 4)
+                                     : 0));
+    if ( last_addr == INVALID_PADDR )
+    {
+        printk("Unable to find a memory region to load initrd and metadata\n");
+        return -ENOMEM;
+    }
 
     if ( initrd != NULL )
     {
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:56:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:56:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaTZ-0001H2-GP; Thu, 09 Apr 2020 16:56:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaTY-0001Gt-7Q
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:24 +0000
X-Inumbo-ID: 0b36e77e-7a83-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0b36e77e-7a83-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:56:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Ga/4nQWQCyMrlRLnK3GRiumlDDI9ElltBd7hM3lh370=; b=NdPkHrfS8zjvyem6e3z7WEOXFc
 0RSKPHhbVxefjxtuBoyM3Pj2Vy2p619wi0CczbFS9znNMkJdmFJYaq+uns1A2Hf7Vd2TIV2rb4Qtj
 0ApPVDcYkBguBU5mKj35cNMKkpvG+Q+pimTCNPYu0/2ThP1DiH5ZpHrYhgSwRIVjJWpY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTX-00029D-Et
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTX-00067u-Ds
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] iommu: fix check for autotranslated hardware domain
Message-Id: <E1jMaTX-00067u-Ds@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:56:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ac75ea8b670a5b4029909b38987da996b8a94dae
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 9 09:08:17 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:08:17 2020 +0200

    iommu: fix check for autotranslated hardware domain
    
    The current position of the check_hwdom_reqs is wrong, as there's a
    is_iommu_enabled at the top of the function that will prevent getting
    to the check on systems without an IOMMU, because the hardware domain
    won't have the XEN_DOMCTL_CDF_iommu flag set.
    
    Move the position of the check so it's done before the
    is_iommu_enabled one, and thus attempts to create a translated
    hardware domain without an IOMMU can be detected.
    
    Fixes: f89f555827a ('remove late (on-demand) construction of IOMMU page tables')
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: faf0d606a6eb911449075b83ea0ad085960c9acb
    master date: 2020-03-05 10:43:46 +0100
---
 xen/drivers/passthrough/iommu.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c
index 05e740757a..bab7a3d099 100644
--- a/xen/drivers/passthrough/iommu.c
+++ b/xen/drivers/passthrough/iommu.c
@@ -171,6 +171,9 @@ int iommu_domain_init(struct domain *d, unsigned int opts)
     struct domain_iommu *hd = dom_iommu(d);
     int ret = 0;
 
+    if ( is_hardware_domain(d) )
+        check_hwdom_reqs(d); /* may modify iommu_hwdom_strict */
+
     if ( !is_iommu_enabled(d) )
         return 0;
 
@@ -187,9 +190,6 @@ int iommu_domain_init(struct domain *d, unsigned int opts)
     if ( ret || is_system_domain(d) )
         return ret;
 
-    if ( is_hardware_domain(d) )
-        check_hwdom_reqs(d); /* may modify iommu_hwdom_strict */
-
     /*
      * Use shared page tables for HAP and IOMMU if the global option
      * is enabled (from which we can infer the h/w is capable) and
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:56:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:56:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaTi-0001I1-IK; Thu, 09 Apr 2020 16:56:34 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaTi-0001Hv-4q
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:34 +0000
X-Inumbo-ID: 113c370a-7a83-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 113c370a-7a83-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 16:56:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=srAXUIa3wfFW3LLcML8FaattI3sk6SmxOt8DqDCqO/I=; b=vNkLALOcvpNDEtaW0sh/RwrOG/
 627nZBPTuPlrKAfbTXS6GJqofEcokKN7nF4FRDmG6g2CrpUF1c4ZrMDl9/efRFA9QDQgSnGlGPEVc
 MDrvYsz2QwuQz3f/xNAYqTu5TINNJQlJJ96nGPrdUDoHs+cCtczHKjv+MEwiqo+wYhog=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTh-00029M-IE
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTh-00068U-Ge
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/shim: fix ballooning up the guest
Message-Id: <E1jMaTh-00068U-Ge@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:56:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e9fdf6a455da1d3ab7e7d127738afc6456b13914
Author:     Igor Druzhinin <igor.druzhinin@citrix.com>
AuthorDate: Thu Apr 9 09:09:40 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:09:40 2020 +0200

    x86/shim: fix ballooning up the guest
    
    args.preempted is meaningless here as it doesn't signal whether the
    hypercall was preempted before. Use start_extent instead which is
    correct (as long as the hypercall was invoked in a "normal" way).
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    master commit: 76dbabb59eeaa78e9f57407e5b15a6606488333e
    master date: 2020-03-18 12:55:54 +0100
---
 xen/common/memory.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/memory.c b/xen/common/memory.c
index 309e872edf..3c085a0cd0 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1190,8 +1190,8 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         }
 
 #ifdef CONFIG_X86
-        if ( pv_shim && op != XENMEM_decrease_reservation && !args.preempted )
-            /* Avoid calling pv_shim_online_memory when preempted. */
+        if ( pv_shim && op != XENMEM_decrease_reservation && !start_extent )
+            /* Avoid calling pv_shim_online_memory when in a continuation. */
             pv_shim_online_memory(args.nr_extents, args.extent_order);
 #endif
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:56:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:56:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaTt-0001JB-KZ; Thu, 09 Apr 2020 16:56:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaTs-0001J4-9f
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:44 +0000
X-Inumbo-ID: 174047f4-7a83-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 174047f4-7a83-11ea-b4f4-bc764e2007e4;
 Thu, 09 Apr 2020 16:56:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=itsa12iNSqYkDi0Q5+EXC5zBBs2S+bqe7ELGBS/VgZM=; b=kSGIzf65tXfB/ZjDcaJYLJh8DA
 qPkxSqZRArzL1wqH6G8xNw6Clotuy9tWbi1bHkYPjuxGbdXOBbCWPfM5M3HET2SJoF8nedjgKrK3b
 eobLSI6/hLq/9mzw94wmQn4K6X1XkAr0+i24JiZ/FkKq2eTrJJY0oZM4Lvcrquw254l0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTr-00029X-LA
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaTr-00069B-K1
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] sched: fix onlining cpu with core scheduling active
Message-Id: <E1jMaTr-00069B-K1@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:56:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6a5ebbb1fcfa25a4f0aa4c16b4abd63c1e7718bf
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:10:55 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:10:55 2020 +0200

    sched: fix onlining cpu with core scheduling active
    
    When onlining a cpu cpupool_cpu_add() checks whether all siblings of
    the new cpu are free in order to decide whether to add it to cpupool0.
    In case the added cpu is not the last sibling to be onlined this test
    is wrong as it only checks for all online siblings to be free. The
    test should include the check for the number of siblings having
    reached the scheduling granularity of cpupool0, too.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: 4c7d340f75abc64f131b0f9bffd6d66d72e43528
    master date: 2020-03-24 17:36:44 +0100
---
 xen/common/cpupool.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/xen/common/cpupool.c b/xen/common/cpupool.c
index 5a90bdc9ff..b90bf42703 100644
--- a/xen/common/cpupool.c
+++ b/xen/common/cpupool.c
@@ -615,7 +615,8 @@ static int cpupool_cpu_add(unsigned int cpu)
     get_sched_res(cpu)->cpupool = NULL;
 
     cpus = sched_get_opt_cpumask(cpupool0->gran, cpu);
-    if ( cpumask_subset(cpus, &cpupool_free_cpus) )
+    if ( cpumask_subset(cpus, &cpupool_free_cpus) &&
+         cpumask_weight(cpus) == cpupool_get_granularity(cpupool0) )
         ret = cpupool_assign_cpu_locked(cpupool0, cpu);
 
     rcu_read_unlock(&sched_res_rculock);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:56:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:56:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaU3-0001LI-Mh; Thu, 09 Apr 2020 16:56:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaU2-0001LA-Il
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:54 +0000
X-Inumbo-ID: 1d42e9fe-7a83-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1d42e9fe-7a83-11ea-b58d-bc764e2007e4;
 Thu, 09 Apr 2020 16:56:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=BlH+2zFIu91guKQVjOCvQj7I42DCUqkKuVJrYmi6TFw=; b=p+NDwnLq74w1frmkPG7Y+TMYcJ
 fT4DQ4uWtilp/boAxS4palhnX24cwyXCxAybJCLHHLr5GSlv0s/bHzuSHl0/VYlY8nmQHGK90N05Q
 NmmFF2JHfUDRL2+82lDe8w7GD4WtefqAUDeTlTGs/zTgtEzmVpz0bvb6+Dvz4MBu2jvg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaU1-0002B9-Nt
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaU1-0006AB-Ms
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:56:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] sched: fix cpu offlining with core scheduling
Message-Id: <E1jMaU1-0006AB-Ms@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:56:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 680356ed13b62b790b2f8903e76f3941f71ac0ad
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 9 09:11:42 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:11:42 2020 +0200

    sched: fix cpu offlining with core scheduling
    
    Offlining a cpu with core scheduling active can result in a hanging
    system. Reason is the scheduling resource and unit of the to be removed
    cpus needs to be split in order to remove the cpu from its cpupool and
    move it to the idle scheduler. In case one of the involved cpus happens
    to have received a sched slave event due to a vcpu former having been
    running on that cpu being woken up again, it can happen that this cpu
    will enter sched_wait_rendezvous_in() while its scheduling resource is
    just about to be split. It might wait for ever for the other sibling
    to join, which will never happen due to the resources already being
    modified.
    
    This can easily be avoided by:
    - resetting the rendezvous counters of the idle unit which is kept
    - checking for a new scheduling resource in sched_wait_rendezvous_in()
      after reacquiring the scheduling lock and resetting the counters in
      that case without scheduling another vcpu
    - moving schedule resource modifications (in schedule_cpu_rm()) and
      retrieving (schedule(), sched_slave() is fine already, others are not
      critical) into locked regions
    
    Reported-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: b6f5334aeaca133ad47ade06f4d22baf5984b55d
    master date: 2020-03-26 12:23:59 +0100
---
 xen/common/schedule.c | 39 ++++++++++++++++++++++++++++++++-------
 1 file changed, 32 insertions(+), 7 deletions(-)

diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index 27fde772be..820bd5050c 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -2112,6 +2112,10 @@ void sched_context_switched(struct vcpu *vprev, struct vcpu *vnext)
     rcu_read_unlock(&sched_res_rculock);
 }
 
+/*
+ * Switch to a new context or keep the current one running.
+ * On x86 it won't return, so it needs to drop the still held sched_res_rculock.
+ */
 static void sched_context_switch(struct vcpu *vprev, struct vcpu *vnext,
                                  bool reset_idle_unit, s_time_t now)
 {
@@ -2221,6 +2225,9 @@ static struct vcpu *sched_force_context_switch(struct vcpu *vprev,
  * zero do_schedule() is called and the rendezvous counter for leaving
  * context_switch() is set. All other members will wait until the counter is
  * becoming zero, dropping the schedule lock in between.
+ * Either returns the new unit to run, or NULL if no context switch is
+ * required or (on Arm) has already been performed. If NULL is returned
+ * sched_res_rculock has been dropped.
  */
 static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
                                                    spinlock_t **lock, int cpu,
@@ -2228,7 +2235,8 @@ static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
 {
     struct sched_unit *next;
     struct vcpu *v;
-    unsigned int gran = get_sched_res(cpu)->granularity;
+    struct sched_resource *sr = get_sched_res(cpu);
+    unsigned int gran = sr->granularity;
 
     if ( !--prev->rendezvous_in_cnt )
     {
@@ -2295,6 +2303,21 @@ static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
             atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
             prev->rendezvous_in_cnt = 0;
         }
+
+        /*
+         * Check for scheduling resource switched. This happens when we are
+         * moved away from our cpupool and cpus are subject of the idle
+         * scheduler now.
+         */
+        if ( unlikely(sr != get_sched_res(cpu)) )
+        {
+            ASSERT(is_idle_unit(prev));
+            atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
+            prev->rendezvous_in_cnt = 0;
+            pcpu_schedule_unlock_irq(*lock, cpu);
+            rcu_read_unlock(&sched_res_rculock);
+            return NULL;
+        }
     }
 
     return prev->next_task;
@@ -2380,11 +2403,11 @@ static void schedule(void)
 
     rcu_read_lock(&sched_res_rculock);
 
+    lock = pcpu_schedule_lock_irq(cpu);
+
     sr = get_sched_res(cpu);
     gran = sr->granularity;
 
-    lock = pcpu_schedule_lock_irq(cpu);
-
     if ( prev->rendezvous_in_cnt )
     {
         /*
@@ -2965,7 +2988,10 @@ int schedule_cpu_rm(unsigned int cpu)
         per_cpu(sched_res_idx, cpu_iter) = 0;
         if ( cpu_iter == cpu )
         {
-            idle_vcpu[cpu_iter]->sched_unit->priv = NULL;
+            unit = idle_vcpu[cpu_iter]->sched_unit;
+            unit->priv = NULL;
+            atomic_set(&unit->next_task->rendezvous_out_cnt, 0);
+            unit->rendezvous_in_cnt = 0;
         }
         else
         {
@@ -2996,6 +3022,8 @@ int schedule_cpu_rm(unsigned int cpu)
     }
     sr->scheduler = &sched_idle_ops;
     sr->sched_priv = NULL;
+    sr->granularity = 1;
+    sr->cpupool = NULL;
 
     smp_mb();
     sr->schedule_lock = &sched_free_cpu_lock;
@@ -3008,9 +3036,6 @@ int schedule_cpu_rm(unsigned int cpu)
     sched_free_udata(old_ops, vpriv_old);
     sched_free_pdata(old_ops, ppriv_old, cpu);
 
-    sr->granularity = 1;
-    sr->cpupool = NULL;
-
 out:
     rcu_read_unlock(&sched_res_rculock);
     xfree(sr_new);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:57:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:57:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaUD-0001N8-QM; Thu, 09 Apr 2020 16:57:05 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaUC-0001Mz-T6
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:04 +0000
X-Inumbo-ID: 23457ab0-7a83-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 23457ab0-7a83-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:57:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=mV0DbGONVb+dMTQogR6giNJNmoHmYTh9dvl/Wn369gQ=; b=VvIQeSRkMPvFGX/OAF2r5YlYoH
 csNUvW9+f612e4tb4WF3zvj3k/CdbtnQsxp6xa6Ouis+uU28UwT05ZouHgHtB2bQBKvSKhSDp1MdG
 EuvKIRLdX+WLhWu9AMlUCfZS551HQQ7ao3IjoM2kH27qLobpT9K/b3YU+Y8B7RolXIBU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUB-0002BW-QH
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUB-0006Au-PR
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/ucode/amd: Fix assertion in compare_patch()
Message-Id: <E1jMaUB-0006Au-PR@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:57:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e5195730f1c1d0dee68ffa951008c01431c371e8
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:12:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:12:26 2020 +0200

    x86/ucode/amd: Fix assertion in compare_patch()
    
    This is clearly a typo.
    
    Fixes: 9da23943ccd "microcode: introduce a global cache of ucode patch"
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 13ed5d49a4214dc3521d4af7bfcf13fbcf5bfd63
    master date: 2020-03-26 18:57:45 +0000
---
 xen/arch/x86/microcode_amd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 00750f7bbb..eb7ae79918 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -222,7 +222,7 @@ static enum microcode_match_result compare_patch(
 
     /* Both patches to compare are supposed to be applicable to local CPU. */
     ASSERT(microcode_fits(new->mc_amd) != MIS_UCODE);
-    ASSERT(microcode_fits(new->mc_amd) != MIS_UCODE);
+    ASSERT(microcode_fits(old->mc_amd) != MIS_UCODE);
 
     return compare_header(new_header, old_header);
 }
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:57:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:57:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaUN-0001OB-S1; Thu, 09 Apr 2020 16:57:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaUM-0001O2-Lw
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:14 +0000
X-Inumbo-ID: 29469f3e-7a83-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 29469f3e-7a83-11ea-83d8-bc764e2007e4;
 Thu, 09 Apr 2020 16:57:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=E5UHLcfEv7jdoGTkFtmm/7q0/9jl+LzVpzt2/AhfB6A=; b=p1SNoUqUwbyTBetdvKQGiyYdqh
 C5QQQvDd1XLiPsJ40IGh72pIh8qOXjsu2NpJey+cWzs5h0rkxiu5c4vz832vP/+7ASFDhXsR95j5O
 gxqKhqgO4gC9cp0Y3bxsQROo6JwQXRjVdxuJ7jkEW1CxjAKjUWOyhHjb0R8ICp3WlrwA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUL-0002Bg-Sz
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUL-0006BU-Rw
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/ucode: Fix error paths in apply_microcode()
Message-Id: <E1jMaUL-0006BU-Rw@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:57:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 69c8307da29edf34fd2bd0d8c2e1973dc23da06c
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:13:15 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:13:15 2020 +0200

    x86/ucode: Fix error paths in apply_microcode()
    
    In the unlikley case that patch application completes, but the resutling
    revision isn't expected, sig->rev doesn't get updated to match reality.
    
    It will get adjusted the next time collect_cpu_info() gets called, but in the
    meantime Xen might operate on a stale value.  Nothing good will come of this.
    
    Rewrite the logic to always update the stashed revision, before worrying about
    whether the attempt was a success or failure.
    
    Take the opportunity to make the printk() messages as consistent as possible.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: d2a0a96cf76603b2e2b87c3ce80c3f9d098327d4
    master date: 2020-03-26 18:57:45 +0000
---
 xen/arch/x86/microcode_amd.c   | 14 +++++++-------
 xen/arch/x86/microcode_intel.c | 22 +++++++++++-----------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index eb7ae79918..4931a725ea 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -229,11 +229,11 @@ static enum microcode_match_result compare_patch(
 
 static int apply_microcode(const struct microcode_patch *patch)
 {
-    uint32_t rev;
     int hw_err;
     unsigned int cpu = smp_processor_id();
     struct cpu_signature *sig = &per_cpu(cpu_sig, cpu);
     const struct microcode_header_amd *hdr;
+    uint32_t rev, old_rev = sig->rev;
 
     if ( !patch )
         return -ENOENT;
@@ -249,6 +249,7 @@ static int apply_microcode(const struct microcode_patch *patch)
 
     /* get patch id after patching */
     rdmsrl(MSR_AMD_PATCHLEVEL, rev);
+    sig->rev = rev;
 
     /*
      * Some processors leave the ucode blob mapping as UC after the update.
@@ -259,15 +260,14 @@ static int apply_microcode(const struct microcode_patch *patch)
     /* check current patch id and patch's id for match */
     if ( hw_err || (rev != hdr->patch_id) )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed\n", cpu, rev, hdr->patch_id);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, hdr->patch_id, rev);
         return -EIO;
     }
 
-    printk(KERN_WARNING "microcode: CPU%d updated from revision %#x to %#x\n",
-           cpu, sig->rev, hdr->patch_id);
-
-    sig->rev = rev;
+    printk(XENLOG_WARNING "microcode: CPU%u updated from revision %#x to %#x\n",
+           cpu, old_rev, rev);
 
     return 0;
 }
diff --git a/xen/arch/x86/microcode_intel.c b/xen/arch/x86/microcode_intel.c
index 9f66057aad..e37c46a836 100644
--- a/xen/arch/x86/microcode_intel.c
+++ b/xen/arch/x86/microcode_intel.c
@@ -285,10 +285,10 @@ static enum microcode_match_result compare_patch(
 static int apply_microcode(const struct microcode_patch *patch)
 {
     uint64_t msr_content;
-    unsigned int val[2];
-    unsigned int cpu_num = raw_smp_processor_id();
+    unsigned int cpu = smp_processor_id();
     struct cpu_signature *sig = &this_cpu(cpu_sig);
     const struct microcode_intel *mc_intel;
+    uint32_t rev, old_rev = sig->rev;
 
     if ( !patch )
         return -ENOENT;
@@ -309,20 +309,20 @@ static int apply_microcode(const struct microcode_patch *patch)
 
     /* get the current revision from MSR 0x8B */
     rdmsrl(MSR_IA32_UCODE_REV, msr_content);
-    val[1] = (uint32_t)(msr_content >> 32);
+    sig->rev = rev = msr_content >> 32;
 
-    if ( val[1] != mc_intel->hdr.rev )
+    if ( rev != mc_intel->hdr.rev )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed. Resulting revision is %#x.\n", cpu_num,
-               sig->rev, mc_intel->hdr.rev, val[1]);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, mc_intel->hdr.rev, rev);
         return -EIO;
     }
-    printk(KERN_INFO "microcode: CPU%d updated from revision "
-           "%#x to %#x, date = %04x-%02x-%02x\n",
-           cpu_num, sig->rev, val[1], mc_intel->hdr.year,
+
+    printk(XENLOG_WARNING
+           "microcode: CPU%u updated from revision %#x to %#x, date = %04x-%02x-%02x\n",
+           cpu, old_rev, rev, mc_intel->hdr.year,
            mc_intel->hdr.month, mc_intel->hdr.day);
-    sig->rev = val[1];
 
     return 0;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:57:32 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:57:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaUe-0001QB-B0; Thu, 09 Apr 2020 16:57:32 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaUc-0001Pv-HW
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:30 +0000
X-Inumbo-ID: 2f4abe74-7a83-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2f4abe74-7a83-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:57:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0FY24cD3lVdhV8Fea5rAr6oy3RsSvffYWCHwl2pEx9s=; b=oLqkMhT9GGm/FILI3FXmT7ziUw
 lmilzRf+pbIvjeZ3RkiOKZpsQG8MEwvj6cgN8cqjbOLvHjFBzWVZD3xThNeHdhq/qqwQUQoipFMNN
 gipTt4oGU7BBOq0ld1kLlLcZvnztAKwVqbYtZT9tBE9wYXrK1ITtrez2D8xKccKVJ7kY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUV-0002Bv-Vh
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUV-0006CG-Um
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] SVM: Add union intstat_t for offset 68h in vmcb
 struct
Message-Id: <E1jMaUV-0006CG-Um@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:57:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 16670ad459ff62cfbb56422a8b24e9400e18cf22
Author:     Pu Wen <puwen@hygon.cn>
AuthorDate: Thu Apr 9 09:14:09 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:14:09 2020 +0200

    SVM: Add union intstat_t for offset 68h in vmcb struct
    
    According to chapter "Appendix B Layout of VMCB" in the new version
    (v3.32) AMD64 APM[1], bit 1 of the VMCB offset 68h is defined as
    GUEST_INTERRUPT_MASK.
    
    In current xen codes, it use whole u64 interrupt_shadow to setup
    interrupt shadow, which will misuse other bit in VMCB offset 68h
    as part of interrupt_shadow, causing svm_get_interrupt_shadow() to
    mistake the guest having interrupts enabled as being in an interrupt
    shadow.  This has been observed to cause SeaBIOS to hang on boot.
    
    Add union intstat_t for VMCB offset 68h and fix codes to only use
    bit 0 as intr_shadow according to the new APM description.
    
    Reference:
    [1] https://www.amd.com/system/files/TechDocs/24593.pdf
    
    Signed-off-by: Pu Wen <puwen@hygon.cn>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 51900bb0288e1db213d218079c11003b5bb2426f
    master date: 2020-03-26 18:58:56 +0000
---
 xen/arch/x86/hvm/svm/nestedsvm.c   |  8 ++++----
 xen/arch/x86/hvm/svm/svm.c         |  8 ++++----
 xen/arch/x86/hvm/svm/svmdebug.c    |  4 ++--
 xen/include/asm-x86/hvm/svm/vmcb.h | 10 +++++++++-
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/nestedsvm.c b/xen/arch/x86/hvm/svm/nestedsvm.c
index fef124fb11..51719d6899 100644
--- a/xen/arch/x86/hvm/svm/nestedsvm.c
+++ b/xen/arch/x86/hvm/svm/nestedsvm.c
@@ -507,8 +507,8 @@ static int nsvm_vmcb_prepare4vmrun(struct vcpu *v, struct cpu_user_regs *regs)
         n2vmcb->_vintr.fields.intr_masking = 1;
     }
 
-    /* Shadow Mode */
-    n2vmcb->interrupt_shadow = ns_vmcb->interrupt_shadow;
+    /* Interrupt state */
+    n2vmcb->int_stat = ns_vmcb->int_stat;
 
     /* Exit codes */
     n2vmcb->exitcode = ns_vmcb->exitcode;
@@ -1060,8 +1060,8 @@ nsvm_vmcb_prepare4vmexit(struct vcpu *v, struct cpu_user_regs *regs)
     if (!(svm->ns_hostflags.fields.vintrmask))
         ns_vmcb->_vintr.fields.intr_masking = 0;
 
-    /* Shadow mode */
-    ns_vmcb->interrupt_shadow = n2vmcb->interrupt_shadow;
+    /* Interrupt state */
+    ns_vmcb->int_stat = n2vmcb->int_stat;
 
     /* Exit codes */
     ns_vmcb->exitcode = n2vmcb->exitcode;
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index dc1bd32b9b..dd2ec68650 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -116,7 +116,7 @@ void __update_guest_eip(struct cpu_user_regs *regs, unsigned int inst_len)
     regs->rip += inst_len;
     regs->eflags &= ~X86_EFLAGS_RF;
 
-    curr->arch.hvm.svm.vmcb->interrupt_shadow = 0;
+    curr->arch.hvm.svm.vmcb->int_stat.intr_shadow = 0;
 
     if ( regs->eflags & X86_EFLAGS_TF )
         hvm_inject_hw_exception(TRAP_debug, X86_EVENT_NO_EC);
@@ -432,7 +432,7 @@ static unsigned int svm_get_interrupt_shadow(struct vcpu *v)
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
     unsigned int intr_shadow = 0;
 
-    if ( vmcb->interrupt_shadow )
+    if ( vmcb->int_stat.intr_shadow )
         intr_shadow |= HVM_INTR_SHADOW_MOV_SS | HVM_INTR_SHADOW_STI;
 
     if ( vmcb_get_general1_intercepts(vmcb) & GENERAL1_INTERCEPT_IRET )
@@ -446,7 +446,7 @@ static void svm_set_interrupt_shadow(struct vcpu *v, unsigned int intr_shadow)
     struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
     u32 general1_intercepts = vmcb_get_general1_intercepts(vmcb);
 
-    vmcb->interrupt_shadow =
+    vmcb->int_stat.intr_shadow =
         !!(intr_shadow & (HVM_INTR_SHADOW_MOV_SS|HVM_INTR_SHADOW_STI));
 
     general1_intercepts &= ~GENERAL1_INTERCEPT_IRET;
@@ -2971,7 +2971,7 @@ void svm_vmexit_handler(struct cpu_user_regs *regs)
          * retired.
          */
         general1_intercepts &= ~GENERAL1_INTERCEPT_IRET;
-        vmcb->interrupt_shadow = 1;
+        vmcb->int_stat.intr_shadow = 1;
 
         vmcb_set_general1_intercepts(vmcb, general1_intercepts);
         break;
diff --git a/xen/arch/x86/hvm/svm/svmdebug.c b/xen/arch/x86/hvm/svm/svmdebug.c
index 4293d8dba5..cf4eb6839d 100644
--- a/xen/arch/x86/hvm/svm/svmdebug.c
+++ b/xen/arch/x86/hvm/svm/svmdebug.c
@@ -51,9 +51,9 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb)
     printk("iopm_base_pa = %#"PRIx64" msrpm_base_pa = %#"PRIx64" tsc_offset = %#"PRIx64"\n",
            vmcb_get_iopm_base_pa(vmcb), vmcb_get_msrpm_base_pa(vmcb),
            vmcb_get_tsc_offset(vmcb));
-    printk("tlb_control = %#x vintr = %#"PRIx64" interrupt_shadow = %#"PRIx64"\n",
+    printk("tlb_control = %#x vintr = %#"PRIx64" int_stat = %#"PRIx64"\n",
            vmcb->tlb_control, vmcb_get_vintr(vmcb).bytes,
-           vmcb->interrupt_shadow);
+           vmcb->int_stat.raw);
     printk("eventinj %016"PRIx64", valid? %d, ec? %d, type %u, vector %#x\n",
            vmcb->eventinj.bytes, vmcb->eventinj.fields.v,
            vmcb->eventinj.fields.ev, vmcb->eventinj.fields.type,
diff --git a/xen/include/asm-x86/hvm/svm/vmcb.h b/xen/include/asm-x86/hvm/svm/vmcb.h
index 5c710286f7..10b51c64bb 100644
--- a/xen/include/asm-x86/hvm/svm/vmcb.h
+++ b/xen/include/asm-x86/hvm/svm/vmcb.h
@@ -318,6 +318,14 @@ typedef union
     } fields;
 } eventinj_t;
 
+typedef union {
+    struct {
+        bool intr_shadow:    1;
+        bool guest_intr_mask:1;
+    };
+    uint64_t raw;
+} intstat_t;
+
 typedef union
 {
     u64 bytes;
@@ -421,7 +429,7 @@ struct vmcb_struct {
     u8  tlb_control;            /* offset 0x5C */
     u8  res07[3];
     vintr_t _vintr;             /* offset 0x60 - cleanbit 3 */
-    u64 interrupt_shadow;       /* offset 0x68 */
+    intstat_t int_stat;         /* offset 0x68 */
     u64 exitcode;               /* offset 0x70 */
     u64 exitinfo1;              /* offset 0x78 */
     u64 exitinfo2;              /* offset 0x80 */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:57:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:57:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaUj-0001Qx-Cg; Thu, 09 Apr 2020 16:57:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaUh-0001Ql-Nw
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:35 +0000
X-Inumbo-ID: 354ae2b8-7a83-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 354ae2b8-7a83-11ea-9e09-bc764e2007e4;
 Thu, 09 Apr 2020 16:57:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HpKlgGAp1j+n1VYngqVZ8A0UwwhildVKU/ZcMj25QQ8=; b=JPtvZX3uecSUQge2+ExGV0TG9d
 jLfRhfVrGux0TwM9XyRENS58hZR+XhGWSVLprbBdqoB4Z5MrZPh9GNKERhVvQ9QSZj8ZuwE/DL5At
 MXmFPJq4OxQfmD51og5XKig+GW0co+bHWZ6VbCzTb2L5K0bXC5Ktq351O+dkXOq+rDJk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUg-0002C7-1t
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUg-0006Cu-16
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] libx86/CPUID: fix (not just) leaf 7 processing
Message-Id: <E1jMaUg-0006Cu-16@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:57:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 18d9129f44bdb70fbcc7c1f4b5fd4948f087f4a0
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:15:38 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:15:38 2020 +0200

    libx86/CPUID: fix (not just) leaf 7 processing
    
    For one, subleaves within the respective union shouldn't live in
    separate sub-structures. And then x86_cpuid_policy_fill_native() should,
    as it did originally, iterate over all subleaves here as well as over
    all main leaves. Switch to using a "<= MIN()"-based approach similar to
    that used in x86_cpuid_copy_to_buffer(). Also follow this for the
    extended main leaves then.
    
    Fixes: 1bd2b750537b ("libx86: Fix 32bit stubdom build of x86_cpuid_policy_fill_native()")
    Fixes: 97e4ebdcd765 ("x86/CPUID: support leaf 7 subleaf 1 / AVX512_BF16")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: eb0bad81fceb3e81df5f73441771b49b732edf56
    master date: 2020-03-27 11:40:59 +0100
---
 xen/include/xen/lib/x86/cpuid.h |  3 +--
 xen/lib/x86/cpuid.c             | 12 ++++++------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/xen/include/xen/lib/x86/cpuid.h b/xen/include/xen/lib/x86/cpuid.h
index 331ef4f4f0..f4ef8a9f2f 100644
--- a/xen/include/xen/lib/x86/cpuid.h
+++ b/xen/include/xen/lib/x86/cpuid.h
@@ -181,8 +181,7 @@ struct cpuid_policy
                 uint32_t _7d0;
                 struct { DECL_BITFIELD(7d0); };
             };
-        };
-        struct {
+
             /* Subleaf 1. */
             union {
                 uint32_t _7a1;
diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c
index 76b8511034..c111d43b00 100644
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -71,8 +71,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
     unsigned int i;
 
     cpuid_leaf(0, &p->basic.raw[0]);
-    for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->basic.raw),
-                           p->basic.max_leaf); ++i )
+    for ( i = 1; i <= MIN(p->basic.max_leaf,
+                          ARRAY_SIZE(p->basic.raw) - 1); ++i )
     {
         switch ( i )
         {
@@ -116,8 +116,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
     {
         cpuid_count_leaf(7, 0, &p->feat.raw[0]);
 
-        for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->feat.raw),
-                               p->feat.max_subleaf); ++i )
+        for ( i = 1; i <= MIN(p->feat.max_subleaf,
+                              ARRAY_SIZE(p->feat.raw) - 1); ++i )
             cpuid_count_leaf(7, i, &p->feat.raw[i]);
     }
 
@@ -172,8 +172,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
 
     /* Extended leaves. */
     cpuid_leaf(0x80000000, &p->extd.raw[0]);
-    for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->extd.raw),
-                           p->extd.max_leaf + 1 - 0x80000000); ++i )
+    for ( i = 1; i <= MIN(p->extd.max_leaf & 0xffffU,
+                          ARRAY_SIZE(p->extd.raw) - 1); ++i )
         cpuid_leaf(0x80000000 + i, &p->extd.raw[i]);
 
     x86_cpuid_policy_recalc_synth(p);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:57:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:57:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaUs-0001Sn-EO; Thu, 09 Apr 2020 16:57:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaUq-0001SU-Pg
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:44 +0000
X-Inumbo-ID: 3b4cae1c-7a83-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3b4cae1c-7a83-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:57:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ndjIA1Ahl5TKY6L+VzXO66XjzUst4C/xDmaAamihQ8A=; b=gnERP+ZAbWyVvSV7wKVKscQ0t+
 tmvRhRyOjN/LyKm/hPjJ59jfQWtAJpXiW2FXQaQEE5R4rXmM3hrC5kdXtJv//ohiMPKQAR3HgBlOB
 KigTIXM0YC6fNyw/toBnWg61tLSMg/vfJNGfeNarFT6y+CeJm4s2nMsinJcWevyEkpeM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUq-0002CL-4J
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaUq-0006Mc-3Y
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/ucode/amd: Fix potential buffer overrun with
 equiv table handling
Message-Id: <E1jMaUq-0006Mc-3Y@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:57:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c7a1e588d85c01e2e8a979ebd7c2277c73c13d6e
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:17:11 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:17:11 2020 +0200

    x86/ucode/amd: Fix potential buffer overrun with equiv table handling
    
    find_equiv_cpu_id() loops until it finds a 0 installed_cpu entry.  Well formed
    AMD microcode containers have this property.
    
    Extend the checking in install_equiv_cpu_table() to reject tables which don't
    have a sentinal at the end.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 1f97b6b9f1b5978659c5735954c37c130e7bb151
    master date: 2020-03-27 13:13:26 +0000
---
 xen/arch/x86/microcode_amd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 4931a725ea..5d85b94575 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -321,6 +321,7 @@ static int install_equiv_cpu_table(
     size_t *offset)
 {
     const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct equiv_cpu_entry *eq;
 
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
@@ -330,7 +331,9 @@ static int install_equiv_cpu_table(
         return -EINVAL;
     }
 
-    if ( mpbuf->len == 0 )
+    if ( mpbuf->len == 0 || mpbuf->len % sizeof(*eq) ||
+         (eq = (const void *)mpbuf->data,
+          eq[(mpbuf->len / sizeof(*eq)) - 1].installed_cpu) )
     {
         printk(KERN_ERR "microcode: Wrong microcode equivalent cpu table length\n");
         return -EINVAL;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:57:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:57:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaV2-0001UN-G5; Thu, 09 Apr 2020 16:57:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaV0-0001U6-Rz
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:54 +0000
X-Inumbo-ID: 414f97ca-7a83-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 414f97ca-7a83-11ea-9e09-bc764e2007e4;
 Thu, 09 Apr 2020 16:57:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=THXXtzQUiwS4AqoTBDu3KDb0xcHs59ok8YaCxuHw7Zg=; b=NaqsZo/qcsdlVxcSKVa2fGuEIi
 AEvICUbjzaGWgpC8ey3F6WrJCsbZc3jvQ/xNHGqOUKypO8fA43qKzVxseGih3M/03KEdP49f47emz
 yLyenSe8sF0p6zT+287Sh1pmk/D41EzwA6J4ThxEG53PLiBu64lv05HeLxGZw7ZLpLAw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaV0-0002D9-73
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaV0-0006NG-5y
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:57:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/HVM: fix AMD ECS handling for Fam10
Message-Id: <E1jMaV0-0006NG-5y@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:57:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d5be08064a42a8eb4f70701557942c039395137a
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:18:11 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:18:11 2020 +0200

    x86/HVM: fix AMD ECS handling for Fam10
    
    The involved comparison was, very likely inadvertently, converted from
    >= to > when making changes unrelated to the actual family range.
    
    Fixes: 9841eb71ea87 ("x86/cpuid: Drop a guests cached x86 family and model information")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    master commit: 5d515b1c296ebad6889748ea1e49e063453216a3
    master date: 2020-04-01 12:28:30 +0200
---
 xen/arch/x86/hvm/ioreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index e51aebd69a..0b54536bde 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -1283,7 +1283,7 @@ struct hvm_ioreq_server *hvm_select_ioreq_server(struct domain *d,
         if ( CF8_ADDR_HI(cf8) &&
              d->arch.cpuid->x86_vendor == X86_VENDOR_AMD &&
              (x86_fam = get_cpu_family(
-                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) > 0x10 &&
+                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) >= 0x10 &&
              x86_fam < 0x17 )
         {
             uint64_t msr_val;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:58:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:58:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaVC-0001WZ-JT; Thu, 09 Apr 2020 16:58:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaVB-0001WM-52
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:05 +0000
X-Inumbo-ID: 4751078a-7a83-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4751078a-7a83-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:58:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=AcUTJ3TD/JT3kJBI8TYRThbyHLix5dKz7W8Gz3oyaFo=; b=Tu3Rh+gXhR1TZg+4JpBlLGVJoU
 yAlYVUBg6JjIxNixrN8mtBqDcEXN2cpQsX7rWzLGrzo0wwGQbYI7tSHBZJ0xZVNOS1q2QI6p3Egr3
 o7zCpe3K5BH3S8sd1CFTtjkAaNIfWANDfyFpzX68pXSiD+cBqejA7+l/hWW8MdSXdLxY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVA-0002DV-9W
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVA-0006O7-8g
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/dom0: fix copy of low 1MB data for PVH
Message-Id: <E1jMaVA-0006O7-8g@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:58:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 71b7eadb0b5ed0f6aade8e05dcdefa3d3fee8e88
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 9 09:18:56 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:18:56 2020 +0200

    x86/dom0: fix copy of low 1MB data for PVH
    
    The orders of start and end are inverted in order to calculate the
    size of the copy operation.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 3925402f5dd7ae93010c48688eb64f880c794267
    master date: 2020-04-01 12:36:57 +0200
---
 xen/arch/x86/hvm/dom0_build.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 9a46005494..78042bd702 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -463,7 +463,7 @@ static int __init pvh_populate_p2m(struct domain *d)
             enum hvm_translation_result res =
                  hvm_copy_to_guest_phys(mfn_to_maddr(_mfn(addr)),
                                         mfn_to_virt(addr),
-                                        d->arch.e820[i].addr - end,
+                                        end - d->arch.e820[i].addr,
                                         v);
 
             if ( res != HVMTRANS_okay )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:58:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:58:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaVM-0001YO-LS; Thu, 09 Apr 2020 16:58:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaVL-0001Y7-3u
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:15 +0000
X-Inumbo-ID: 4d5331da-7a83-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4d5331da-7a83-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:58:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Vmrd5MgRMcWZ1BTtckIhmlN6KmyVcZcPKKDJToCB6Xc=; b=EcoU2XWrOfah2EXZXKTZpfWvll
 LHXSaK8Z6mvrZbjAflueKNtsBVk09+IEn42hcJTWLrNXJcbAzqkBO2At1bFUy4jGwaF1LtP8ETItL
 0dBt2KrubJ6gqZDedIS1ANxdl8atfK0D/BuWHR8ZJ6NhE1rDAkdI4GE9HJy4kmXofwFg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVK-0002Df-C9
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVK-0006Ov-BE
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/ucode/amd: Fix more potential buffer overruns
 with microcode parsing
Message-Id: <E1jMaVK-0006Ov-BE@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:58:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b3e08a6657bc7df96276a6039cd8f368709e13b8
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:19:51 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:19:51 2020 +0200

    x86/ucode/amd: Fix more potential buffer overruns with microcode parsing
    
    cpu_request_microcode() doesn't know the buffer is at least 4 bytes long
    before inspecting UCODE_MAGIC.
    
    install_equiv_cpu_table() doesn't know the boundary of the buffer it is
    interpreting as an equivalency table.  This case was clearly observed at one
    point in the past, given the subsequent overrun detection, but without
    comprehending that the damage was already done.
    
    Make the logic consistent with container_fast_forward() and pass size_left in
    to install_equiv_cpu_table().
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 718d1432000079ea7120f6cb770372afe707ce27
    master date: 2020-04-01 14:00:12 +0100
---
 xen/arch/x86/microcode_amd.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 5d85b94575..846cf099e8 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -318,11 +318,20 @@ static int get_ucode_from_buffer_amd(
 static int install_equiv_cpu_table(
     struct microcode_amd *mc_amd,
     const void *data,
+    size_t size_left,
     size_t *offset)
 {
-    const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct mpbhdr *mpbuf;
     const struct equiv_cpu_entry *eq;
 
+    if ( size_left < (sizeof(*mpbuf) + 4) ||
+         (mpbuf = data + *offset + 4,
+          size_left - sizeof(*mpbuf) - 4 < mpbuf->len) )
+    {
+        printk(XENLOG_WARNING "microcode: No space for equivalent cpu table\n");
+        return -EINVAL;
+    }
+
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
     if ( mpbuf->type != UCODE_EQUIV_CPU_TABLE_TYPE )
@@ -436,7 +445,7 @@ static struct microcode_patch *cpu_request_microcode(const void *buf,
 
     current_cpu_id = cpuid_eax(0x00000001);
 
-    if ( *(const uint32_t *)buf != UCODE_MAGIC )
+    if ( bufsize < 4 || *(const uint32_t *)buf != UCODE_MAGIC )
     {
         printk(KERN_ERR "microcode: Wrong microcode patch file magic\n");
         error = -EINVAL;
@@ -466,24 +475,13 @@ static struct microcode_patch *cpu_request_microcode(const void *buf,
      */
     while ( offset < bufsize )
     {
-        error = install_equiv_cpu_table(mc_amd, buf, &offset);
+        error = install_equiv_cpu_table(mc_amd, buf, bufsize - offset, &offset);
         if ( error )
         {
             printk(KERN_ERR "microcode: installing equivalent cpu table failed\n");
             break;
         }
 
-        /*
-         * Could happen as we advance 'offset' early
-         * in install_equiv_cpu_table
-         */
-        if ( offset > bufsize )
-        {
-            printk(KERN_ERR "microcode: Microcode buffer overrun\n");
-            error = -EINVAL;
-            break;
-        }
-
         if ( find_equiv_cpu_id(mc_amd->equiv_cpu_table, current_cpu_id,
                                &equiv_cpu_id) )
             break;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:58:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:58:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaVX-0001Zr-ND; Thu, 09 Apr 2020 16:58:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaVV-0001Za-L3
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:25 +0000
X-Inumbo-ID: 5357af84-7a83-11ea-8301-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5357af84-7a83-11ea-8301-12813bfff9fa;
 Thu, 09 Apr 2020 16:58:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=DR1bWtEO+borIsAsbfQlov/mk8wf2T13avZbAL7eScI=; b=YE4lakyZeiGwRltv4yl/DzBae6
 WDJN25dZuAYAI2zGkSnDKcTVKKS0F2ZO+fwKV5qJynWoy3jTy0mGtA7U0c2vW8Yq647wUiF14BwrK
 wsOMuaJ+hVgj9DAZu9ggsPBtx0//eJTvcpQXu0CjimjwYp5PVypI7WnVFowxDzmxhWr4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVU-0002Do-FG
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVU-0006PV-EM
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] credit2: avoid vCPUs to ever reach lower credits
 than idle
Message-Id: <E1jMaVU-0006PV-EM@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:58:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ad5e611d04c463ca2c2dc1e477934cfaf75fc260
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 09:20:41 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:20:41 2020 +0200

    credit2: avoid vCPUs to ever reach lower credits than idle
    
    There have been report of stalls of guest vCPUs, when Credit2 was used.
    It seemed like these vCPUs were not getting scheduled for very long
    time, even under light load conditions (e.g., during dom0 boot).
    
    Investigations led to the discovery that --although rarely-- it can
    happen that a vCPU manages to run for very long timeslices. In Credit2,
    this means that, when runtime accounting happens, the vCPU will lose a
    large quantity of credits. This in turn may lead to the vCPU having less
    credits than the idle vCPUs (-2^30). At this point, the scheduler will
    pick the idle vCPU, instead of the ready to run vCPU, for a few
    "epochs", which often times is enough for the guest kernel to think the
    vCPU is not responding and crashing.
    
    An example of this situation is shown here. In fact, we can see d0v1
    sitting in the runqueue while all the CPUs are idle, as it has
    -1254238270 credits, which is smaller than -2^30 = −1073741824:
    
        (XEN) Runqueue 0:
        (XEN)   ncpus              = 28
        (XEN)   cpus               = 0-27
        (XEN)   max_weight         = 256
        (XEN)   pick_bias          = 22
        (XEN)   instload           = 1
        (XEN)   aveload            = 293391 (~111%)
        (XEN)   idlers: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        (XEN)   tickled: 00,00000000,00000000,00000000,00000000,00000000,00000000
        (XEN)   fully idle cores: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        [...]
        (XEN) Runqueue 0:
        (XEN) CPU[00] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[01] runq=0, sibling=00,..., core=00,...
        [...]
        (XEN) CPU[26] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[27] runq=0, sibling=00,..., core=00,...
        (XEN) RUNQ:
        (XEN)     0: [0.1] flags=0 cpu=5 credit=-1254238270 [w=256] load=262144 (~100%)
    
    We certainly don't want, under any circumstance, this to happen.
    Let's, therefore, define a minimum amount of credits a vCPU can have.
    During accounting, we make sure that, for however long the vCPU has
    run, it will never get to have less than such minimum amount of
    credits. Then, we set the credits of the idle vCPU to an even
    smaller value.
    
    NOTE: investigations have been done about _how_ it is possible for a
    vCPU to execute for so much time that its credits becomes so low. While
    still not completely clear, there are evidence that:
    - it only happens very rarely,
    - it appears to be both machine and workload specific,
    - it does not look to be a Credit2 (e.g., as it happens when
      running with Credit1 as well) issue, or a scheduler issue.
    
    This patch makes Credit2 more robust to events like this, whatever
    the cause is, and should hence be backported (as far as possible).
    
    Reported-by: Glen <glenbarney@gmail.com>
    Reported-by: Tomas Mozes <hydrapolic@gmail.com>
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    master commit: 36f3662f27dec32d76c0edb4c6b62b9628d6869d
    master date: 2020-04-03 10:45:43 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  5 ++---
 xen/common/sched_credit2.c | 53 ++++++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index d6e7e3f800..8f126f65f1 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -55,7 +55,7 @@
 0x00022204  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_add
 0x00022205  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle_check   [ dom:vcpu = 0x%(1)08x, credit = %(2)d, score = %(3)d ]
 0x00022206  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle         [ cpu = %(1)d ]
-0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d, mult = %(4)d ]
+0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d ]
 0x00022208  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:sched_tasklet
 0x00022209  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:update_load
 0x0002220a  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_assign    [ dom:vcpu = 0x%(1)08x, rq_id = %(2)d ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index aa894673ad..d3c8368e9d 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7718,13 +7718,12 @@ void sched_process(struct pcpu_info *p)
                 struct {
                     unsigned int vcpuid:16, domid:16;
                     int credit_start, credit_end;
-                    unsigned int multiplier;
                 } *r = (typeof(r))ri->d;
 
                 printf(" %s csched2:reset_credits d%uv%u, "
-                       "credit_start = %d, credit_end = %d, mult = %u\n",
+                       "credit_start = %d, credit_end = %d\n",
                        ri->dump_header, r->domid, r->vcpuid,
-                       r->credit_start, r->credit_end, r->multiplier);
+                       r->credit_start, r->credit_end);
             }
             break;
         case TRC_SCHED_CLASS_EVT(CSCHED2, 8):  /* SCHED_TASKLET    */
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index f7c477053c..42c9538da3 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -228,11 +228,21 @@
  */
 #define CSCHED2_CREDIT_INIT          MILLISECS(10)
 /*
+ * Minimum amount of credits VMs can have. Ideally, no VM would get
+ * close to this (unless a vCPU manages to execute for really long
+ * time uninterrupted). In case it happens, it makes no sense to
+ * track even deeper undershoots.
+ *
+ * NOTE: If making this smaller than -CSCHED2_CREDIT_INIT, adjust
+ * reset_credit() accordingly.
+ */
+#define CSCHED2_CREDIT_MIN           (-CSCHED2_CREDIT_INIT)
+/*
  * Amount of credit the idle units have. It never changes, as idle
  * units does not consume credits, and it must be lower than whatever
  * amount of credit 'regular' unit would end up with.
  */
-#define CSCHED2_IDLE_CREDIT          (-(1U<<30))
+#define CSCHED2_IDLE_CREDIT          (CSCHED2_CREDIT_MIN-1)
 /*
  * Carryover: How much "extra" credit may be carried over after
  * a reset.
@@ -776,10 +786,15 @@ static int get_fallback_cpu(struct csched2_unit *svc)
 static void t2c_update(struct csched2_runqueue_data *rqd, s_time_t time,
                           struct csched2_unit *svc)
 {
-    uint64_t val = time * rqd->max_weight + svc->residual;
+    int64_t val = time * rqd->max_weight + svc->residual;
 
     svc->residual = do_div(val, svc->weight);
-    svc->credit -= val;
+    /* Getting to lower credit than CSCHED2_CREDIT_MIN makes no sense. */
+    val = svc->credit - val;
+    if ( unlikely(val < CSCHED2_CREDIT_MIN) )
+        svc->credit = CSCHED2_CREDIT_MIN;
+    else
+        svc->credit = val;
 }
 
 static s_time_t c2t(struct csched2_runqueue_data *rqd, s_time_t credit, struct csched2_unit *svc)
@@ -1620,28 +1635,25 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
 {
     struct csched2_runqueue_data *rqd = c2rqd(ops, cpu);
     struct list_head *iter;
-    int m;
+    int reset = CSCHED2_CREDIT_INIT;
 
     /*
      * Under normal circumstances, snext->credit should never be less
      * than -CSCHED2_MIN_TIMER.  However, under some circumstances, an
      * unit with low credits may be allowed to run long enough that
-     * its credits are actually less than -CSCHED2_CREDIT_INIT.
+     * its credits are actually much lower than that.
      * (Instances have been observed, for example, where an unit with
      * 200us of credit was allowed to run for 11ms, giving it -10.8ms
      * of credit.  Thus it was still negative even after the reset.)
      *
      * If this is the case for snext, we simply want to keep moving
-     * everyone up until it is in the black again.  This fair because
-     * none of the other units want to run at the moment.
-     *
-     * Rather than looping, however, we just calculate a multiplier,
-     * avoiding an integer division and multiplication in the common
-     * case.
+     * everyone up until it is in the black again. This means that,
+     * since CSCHED2_CREDIT_MIN is -CSCHED2_CREDIT_INIT, we need to
+     * actually add 2*CSCHED2_CREDIT_INIT.
      */
-    m = 1;
-    if ( snext->credit < -CSCHED2_CREDIT_INIT )
-        m += (-snext->credit) / CSCHED2_CREDIT_INIT;
+    ASSERT(snext->credit >= CSCHED2_CREDIT_MIN);
+    if ( unlikely(snext->credit == CSCHED2_CREDIT_MIN) )
+        reset += CSCHED2_CREDIT_INIT;
 
     list_for_each( iter, &rqd->svc )
     {
@@ -1672,15 +1684,7 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
         }
 
         start_credit = svc->credit;
-
-        /*
-         * Add INIT * m, avoiding integer multiplication in the common case.
-         */
-        if ( likely(m==1) )
-            svc->credit += CSCHED2_CREDIT_INIT;
-        else
-            svc->credit += m * CSCHED2_CREDIT_INIT;
-
+        svc->credit += reset;
         /* "Clip" credits to max carryover */
         if ( svc->credit > CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX )
             svc->credit = CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX;
@@ -1692,19 +1696,18 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
             struct {
                 unsigned unit:16, dom:16;
                 int credit_start, credit_end;
-                unsigned multiplier;
             } d;
             d.dom = svc->unit->domain->domain_id;
             d.unit = svc->unit->unit_id;
             d.credit_start = start_credit;
             d.credit_end = svc->credit;
-            d.multiplier = m;
             __trace_var(TRC_CSCHED2_CREDIT_RESET, 1,
                         sizeof(d),
                         (unsigned char *)&d);
         }
     }
 
+    ASSERT(snext->credit > 0);
     SCHED_STAT_CRANK(credit_reset);
 
     /* No need to resort runqueue, as everyone's order should be the same. */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:58:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:58:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaVf-0001bA-Ov; Thu, 09 Apr 2020 16:58:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaVf-0001b2-HN
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:35 +0000
X-Inumbo-ID: 595c99b2-7a83-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 595c99b2-7a83-11ea-9e09-bc764e2007e4;
 Thu, 09 Apr 2020 16:58:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Da9IckD4pNyYNOAQ3+ef5L5x10eYrR4imErbtm/VApY=; b=X1SPAv3SXjN/4BDeWSoe2v/B91
 AZgHDbP+87EgHR9t/Py7rgxeCyK1RYpyHQ2OodqiAJ+hCiPEBwOOsIH0iwklddkUyivcH/5/q3zcm
 jhut9YW0Or55mIhXKnMf8hIz2Bh9V7pQxfnoFvNiwjfH6rFkLZJmqX7aJEepFxlYuarc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVe-0002Dx-IQ
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVe-0006Py-HV
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] credit2: fix credit reset happening too few times
Message-Id: <E1jMaVe-0006Py-HV@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:58:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 04497b354f98240e150acad7b1a7ab09dbb77989
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 09:21:25 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:21:25 2020 +0200

    credit2: fix credit reset happening too few times
    
    There is a bug in commit 5e4b4199667b9 ("xen: credit2: only reset
    credit on reset condition"). In fact, the aim of that commit was to
    make sure that we do not perform too many credit reset operations
    (which are not super cheap, and in an hot-path). But the check used
    to determine whether a reset is necessary was the wrong one.
    
    In fact, knowing just that some vCPUs have been skipped, while
    traversing the runqueue (in runq_candidate()), is not enough. We
    need to check explicitly whether the first vCPU in the runqueue
    has a negative amount of credit.
    
    Since a trace record is changed, this patch updates xentrace format file
    and xenalyze as well
    
    This should be backported.
    
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Acked-by: George Dunlap <george.dunlap@citrix.com>
    master commit: dae7b62e976b28af9c8efa150618c25501bf1650
    master date: 2020-04-03 10:46:53 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  8 +++-----
 xen/common/sched_credit2.c | 30 +++++++++++++-----------------
 3 files changed, 17 insertions(+), 23 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index 8f126f65f1..deac4d8598 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -67,7 +67,7 @@
 0x00022210  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_check     [ lrq_id[16]:orq_id[16] = 0x%(1)08x, delta = %(2)d ]
 0x00022211  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_balance   [ l_bavgload = 0x%(2)08x%(1)08x, o_bavgload = 0x%(4)08x%(3)08x, lrq_id[16]:orq_id[16] = 0x%(5)08x ]
 0x00022212  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:pick_cpu       [ b_avgload = 0x%(2)08x%(1)08x, dom:vcpu = 0x%(3)08x, rq_id[16]:new_cpu[16] = %(4)d ]
-0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(4)d, skipped_vcpus = %(3)d, tickled_cpu = %(2)d ]
+0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(3)d, tickled_cpu = %(2)d ]
 0x00022214  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:schedule       [ rq:cpu = 0x%(1)08x, tasklet[8]:idle[8]:smt_idle[8]:tickled[8] = %(2)08x ]
 0x00022215  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:ratelimit      [ dom:vcpu = 0x%(1)08x, runtime = %(2)d ]
 0x00022216  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_cand_chk  [ dom:vcpu = 0x%(1)08x ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index d3c8368e9d..b7f4e2bea8 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7855,14 +7855,12 @@ void sched_process(struct pcpu_info *p)
             if (opt.dump_all) {
                 struct {
                     unsigned vcpuid:16, domid:16;
-                    unsigned tickled_cpu, skipped;
+                    unsigned tickled_cpu;
                     int credit;
                 } *r = (typeof(r))ri->d;
 
-                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, "
-                       "%u vcpus skipped, ",
-                       ri->dump_header, r->domid, r->vcpuid,
-                       r->credit, r->skipped);
+                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, ",
+                       ri->dump_header, r->domid, r->vcpuid, r->credit);
                 if (r->tickled_cpu == (unsigned)-1)
                     printf("no cpu was tickled\n");
                 else
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index 42c9538da3..ce7c56147b 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -3267,8 +3267,7 @@ csched2_runtime(const struct scheduler *ops, int cpu,
 static struct csched2_unit *
 runq_candidate(struct csched2_runqueue_data *rqd,
                struct csched2_unit *scurr,
-               int cpu, s_time_t now,
-               unsigned int *skipped)
+               int cpu, s_time_t now)
 {
     struct list_head *iter, *temp;
     struct sched_resource *sr = get_sched_res(cpu);
@@ -3276,8 +3275,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
     struct csched2_private *prv = csched2_priv(sr->scheduler);
     bool yield = false, soft_aff_preempt = false;
 
-    *skipped = 0;
-
     if ( unlikely(is_idle_unit(scurr->unit)) )
     {
         snext = scurr;
@@ -3371,12 +3368,9 @@ runq_candidate(struct csched2_runqueue_data *rqd,
                         (unsigned char *)&d);
         }
 
-        /* Only consider units that are allowed to run on this processor. */
+        /* Only consider vcpus that are allowed to run on this processor. */
         if ( !cpumask_test_cpu(cpu, svc->unit->cpu_hard_affinity) )
-        {
-            (*skipped)++;
             continue;
-        }
 
         /*
          * If an unit is meant to be picked up by another processor, and such
@@ -3385,7 +3379,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->tickled_cpu != -1 && svc->tickled_cpu != cpu &&
              cpumask_test_cpu(svc->tickled_cpu, &rqd->tickled) )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(deferred_to_tickled_cpu);
             continue;
         }
@@ -3397,7 +3390,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( sched_unit_master(svc->unit) != cpu
              && snext->credit + CSCHED2_MIGRATE_RESIST > svc->credit )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(migrate_resisted);
             continue;
         }
@@ -3421,14 +3413,13 @@ runq_candidate(struct csched2_runqueue_data *rqd,
     {
         struct {
             unsigned unit:16, dom:16;
-            unsigned tickled_cpu, skipped;
+            unsigned tickled_cpu;
             int credit;
         } d;
         d.dom = snext->unit->domain->domain_id;
         d.unit = snext->unit->unit_id;
         d.credit = snext->credit;
         d.tickled_cpu = snext->tickled_cpu;
-        d.skipped = *skipped;
         __trace_var(TRC_CSCHED2_RUNQ_CANDIDATE, 1,
                     sizeof(d),
                     (unsigned char *)&d);
@@ -3460,7 +3451,6 @@ static void csched2_schedule(
     struct csched2_runqueue_data *rqd;
     struct csched2_unit * const scurr = csched2_unit(currunit);
     struct csched2_unit *snext = NULL;
-    unsigned int skipped_units = 0;
     bool tickled;
     bool migrated = false;
 
@@ -3538,7 +3528,7 @@ static void csched2_schedule(
         snext = csched2_unit(sched_idle_unit(sched_cpu));
     }
     else
-        snext = runq_candidate(rqd, scurr, sched_cpu, now, &skipped_units);
+        snext = runq_candidate(rqd, scurr, sched_cpu, now);
 
     /* If switching from a non-idle runnable unit, put it
      * back on the runqueue. */
@@ -3550,6 +3540,8 @@ static void csched2_schedule(
     /* Accounting for non-idle tasks */
     if ( !is_idle_unit(snext->unit) )
     {
+        int top_credit;
+
         /* If switching, remove this from the runqueue and mark it scheduled */
         if ( snext != scurr )
         {
@@ -3577,11 +3569,15 @@ static void csched2_schedule(
          *  2) no other unit with higher credits wants to run.
          *
          * Here, where we want to check for reset, we need to make sure the
-         * proper unit is being used. In fact, runqueue_candidate() may have
-         * not returned the first unit in the runqueue, for various reasons
+         * proper unit is being used. In fact, runq_candidate() may have not
+         * returned the first unit in the runqueue, for various reasons
          * (e.g., affinity). Only trigger a reset when it does.
          */
-        if ( skipped_units == 0 && snext->credit <= CSCHED2_CREDIT_RESET )
+        if ( list_empty(&rqd->runq) )
+            top_credit = snext->credit;
+        else
+            top_credit = max(snext->credit, runq_elem(rqd->runq.next)->credit);
+        if ( top_credit <= CSCHED2_CREDIT_RESET )
         {
             reset_credit(ops, sched_cpu, now, snext);
             balance_load(ops, sched_cpu, now);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 09 16:58:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 09 Apr 2020 16:58:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMaVp-0001cu-Sb; Thu, 09 Apr 2020 16:58:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=eGBr=5Z=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMaVp-0001cm-Dy
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:45 +0000
X-Inumbo-ID: 5f5ddc7c-7a83-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5f5ddc7c-7a83-11ea-83d8-bc764e2007e4;
 Thu, 09 Apr 2020 16:58:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=+tOPzKojy09rFIFIxTdYbHU7PeAv9A3f/10NokbMXKY=; b=JsmvHr4bJrqhHj4hJvGG1XYeXT
 Pq+XFBcFK4bdqE18WTXVXWTIeMTH6787L24WbFKkRl2WG0JMwtKER8SFYoH4D5Vf2HL9CgB8tYBgS
 2LGRh+Jv1RH5e+lLaX5RYfiJ87BG/EKWxeeERNZ/iC2bNkUEqAawRIgSRSzF6PeBSbeM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVo-0002EY-Kp
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMaVo-0006R9-K5
 for xen-changelog@lists.xenproject.org; Thu, 09 Apr 2020 16:58:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] AMD/IOMMU: fix off-by-one in
 amd_iommu_get_paging_mode() callers
Message-Id: <E1jMaVo-0006R9-K5@xenbits.xenproject.org>
Date: Thu, 09 Apr 2020 16:58:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 181614a71070ee1dfb8d1fb954ca6127c24691a3
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:26:54 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:26:54 2020 +0200

    AMD/IOMMU: fix off-by-one in amd_iommu_get_paging_mode() callers
    
    amd_iommu_get_paging_mode() expects a count, not a "maximum possible"
    value. Prior to b4f042236ae0 dropping the reference, the use of our mis-
    named "max_page" in amd_iommu_domain_init() may have lead to such a
    misunderstanding. In an attempt to avoid such confusion in the future,
    rename the function's parameter and - while at it - convert it to an
    inline function.
    
    Also replace a literal 4 by an expression tying it to a wider use
    constant, just like amd_iommu_quarantine_init() does.
    
    Fixes: ea38867831da ("x86 / iommu: set up a scratch page in the quarantine domain")
    Fixes: b4f042236ae0 ("AMD/IOMMU: Cease using a dynamic height for the IOMMU pagetables")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: b75b3c62fe4afe381c6f74a07f614c0b39fe2f5d
    master date: 2020-03-16 11:24:29 +0100
---
 xen/drivers/passthrough/amd/iommu_map.c       |  6 +++---
 xen/drivers/passthrough/amd/pci_amd_iommu.c   | 22 ++++------------------
 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h | 17 ++++++++++++++++-
 3 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu_map.c b/xen/drivers/passthrough/amd/iommu_map.c
index 4e041b960f..5be27fe9f8 100644
--- a/xen/drivers/passthrough/amd/iommu_map.c
+++ b/xen/drivers/passthrough/amd/iommu_map.c
@@ -455,9 +455,9 @@ int amd_iommu_reserve_domain_unity_map(struct domain *domain,
 int __init amd_iommu_quarantine_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
-    unsigned long max_gfn =
-        PFN_DOWN((1ul << DEFAULT_DOMAIN_ADDRESS_WIDTH) - 1);
-    unsigned int level = amd_iommu_get_paging_mode(max_gfn);
+    unsigned long end_gfn =
+        1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT);
+    unsigned int level = amd_iommu_get_paging_mode(end_gfn);
     struct amd_iommu_pte *table;
 
     if ( hd->arch.root_table )
diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c
index dd3401f0dc..fd12858578 100644
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c
@@ -231,22 +231,6 @@ static int __must_check allocate_domain_resources(struct domain_iommu *hd)
     return rc;
 }
 
-int amd_iommu_get_paging_mode(unsigned long entries)
-{
-    int level = 1;
-
-    BUG_ON( !entries );
-
-    while ( entries > PTE_PER_TABLE_SIZE )
-    {
-        entries = PTE_PER_TABLE_ALIGN(entries) >> PTE_PER_TABLE_SHIFT;
-        if ( ++level > 6 )
-            return -ENOMEM;
-    }
-
-    return level;
-}
-
 static int amd_iommu_domain_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
@@ -259,8 +243,10 @@ static int amd_iommu_domain_init(struct domain *d)
      *   physical address space we give it, but this isn't known yet so use 4
      *   unilaterally.
      */
-    hd->arch.paging_mode = is_hvm_domain(d)
-        ? 4 : amd_iommu_get_paging_mode(get_upper_mfn_bound());
+    hd->arch.paging_mode = amd_iommu_get_paging_mode(
+        is_hvm_domain(d)
+        ? 1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT)
+        : get_upper_mfn_bound() + 1);
 
     return 0;
 }
diff --git a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
index 664dfc93b9..94e288f52d 100644
--- a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
+++ b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
@@ -54,7 +54,6 @@ int amd_iommu_init_late(void);
 int amd_iommu_update_ivrs_mapping_acpi(void);
 int iov_adjust_irq_affinities(void);
 
-int amd_iommu_get_paging_mode(unsigned long entries);
 int amd_iommu_quarantine_init(struct domain *d);
 
 /* mapping functions */
@@ -177,6 +176,22 @@ static inline unsigned long region_to_pages(unsigned long addr, unsigned long si
     return (PAGE_ALIGN(addr + size) - (addr & PAGE_MASK)) >> PAGE_SHIFT;
 }
 
+static inline int amd_iommu_get_paging_mode(unsigned long max_frames)
+{
+    int level = 1;
+
+    BUG_ON(!max_frames);
+
+    while ( max_frames > PTE_PER_TABLE_SIZE )
+    {
+        max_frames = PTE_PER_TABLE_ALIGN(max_frames) >> PTE_PER_TABLE_SHIFT;
+        if ( ++level > 6 )
+            return -ENOMEM;
+    }
+
+    return level;
+}
+
 static inline struct page_info* alloc_amd_iommu_pgtable(void)
 {
     struct page_info *pg;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:33:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjTd-0002qo-P9; Fri, 10 Apr 2020 02:33:05 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjTb-0002qj-Rr
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:03 +0000
X-Inumbo-ID: 99e13eb6-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 99e13eb6-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:33:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=sqczrRaFXMuBybsSdjVkFSv+aZBiU2GLnmHQoBbAZp8=; b=T+EAjuum3VlROePlVllf/cDbO+
 0jMubENNgIBY9S+MRHZpa97gld1b3dHy69jHUKM+nj0jfqYtWcK2wD/mmtld9V7zZVdNt20/0paKS
 bZq5KliFifSPKJKpyP6jpRNJUOzGKFLyIFT4/kCqd9zonb1mRVxOsqljr3gZJCXnnoyI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjTa-0001tb-G3
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjTa-0005Vf-EQ
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] AMD/IOMMU: fix off-by-one in
 amd_iommu_get_paging_mode() callers
Message-Id: <E1jMjTa-0005Vf-EQ@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:33:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 696d142276e277264a9c6fcdd4f00edc8a6ce292
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 10:11:50 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:11:50 2020 +0200

    AMD/IOMMU: fix off-by-one in amd_iommu_get_paging_mode() callers
    
    amd_iommu_get_paging_mode() expects a count, not a "maximum possible"
    value. Prior to b4f042236ae0 dropping the reference, the use of our mis-
    named "max_page" in amd_iommu_domain_init() may have lead to such a
    misunderstanding. In an attempt to avoid such confusion in the future,
    rename the function's parameter and - while at it - convert it to an
    inline function.
    
    Also replace a literal 4 by an expression tying it to a wider use
    constant, just like amd_iommu_quarantine_init() does.
    
    Fixes: ea38867831da ("x86 / iommu: set up a scratch page in the quarantine domain")
    Fixes: b4f042236ae0 ("AMD/IOMMU: Cease using a dynamic height for the IOMMU pagetables")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: b75b3c62fe4afe381c6f74a07f614c0b39fe2f5d
    master date: 2020-03-16 11:24:29 +0100
---
 xen/drivers/passthrough/amd/iommu_map.c       |  6 +++---
 xen/drivers/passthrough/amd/pci_amd_iommu.c   | 23 ++++-------------------
 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h | 17 ++++++++++++++++-
 3 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu_map.c b/xen/drivers/passthrough/amd/iommu_map.c
index 21fbea0467..aa382dbabd 100644
--- a/xen/drivers/passthrough/amd/iommu_map.c
+++ b/xen/drivers/passthrough/amd/iommu_map.c
@@ -745,9 +745,9 @@ void amd_iommu_share_p2m(struct domain *d)
 int __init amd_iommu_quarantine_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
-    unsigned long max_gfn =
-        PFN_DOWN((1ul << DEFAULT_DOMAIN_ADDRESS_WIDTH) - 1);
-    unsigned int level = amd_iommu_get_paging_mode(max_gfn);
+    unsigned long end_gfn =
+        1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT);
+    unsigned int level = amd_iommu_get_paging_mode(end_gfn);
     uint64_t *table;
 
     if ( hd->arch.root_table )
diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c
index 0b641ff75c..983ece5981 100644
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c
@@ -218,22 +218,6 @@ static int __must_check allocate_domain_resources(struct domain_iommu *hd)
     return rc;
 }
 
-int amd_iommu_get_paging_mode(unsigned long entries)
-{
-    int level = 1;
-
-    BUG_ON( !entries );
-
-    while ( entries > PTE_PER_TABLE_SIZE )
-    {
-        entries = PTE_PER_TABLE_ALIGN(entries) >> PTE_PER_TABLE_SHIFT;
-        if ( ++level > 6 )
-            return -ENOMEM;
-    }
-
-    return level;
-}
-
 static int amd_iommu_domain_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
@@ -246,9 +230,10 @@ static int amd_iommu_domain_init(struct domain *d)
      *   physical address space we give it, but this isn't known yet so use 4
      *   unilaterally.
      */
-    hd->arch.paging_mode = is_hvm_domain(d)
-        ? IOMMU_PAGING_MODE_LEVEL_4
-        : amd_iommu_get_paging_mode(get_upper_mfn_bound());
+    hd->arch.paging_mode = amd_iommu_get_paging_mode(
+        is_hvm_domain(d)
+        ? 1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT)
+        : get_upper_mfn_bound() + 1);
 
     return 0;
 }
diff --git a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
index c42688fe51..22d6614169 100644
--- a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
+++ b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
@@ -51,7 +51,6 @@ void get_iommu_features(struct amd_iommu *iommu);
 int amd_iommu_init(void);
 int amd_iommu_update_ivrs_mapping_acpi(void);
 
-int amd_iommu_get_paging_mode(unsigned long entries);
 int amd_iommu_quarantine_init(struct domain *d);
 
 /* mapping functions */
@@ -168,6 +167,22 @@ static inline unsigned long region_to_pages(unsigned long addr, unsigned long si
     return (PAGE_ALIGN(addr + size) - (addr & PAGE_MASK)) >> PAGE_SHIFT;
 }
 
+static inline int amd_iommu_get_paging_mode(unsigned long max_frames)
+{
+    int level = 1;
+
+    BUG_ON(!max_frames);
+
+    while ( max_frames > PTE_PER_TABLE_SIZE )
+    {
+        max_frames = PTE_PER_TABLE_ALIGN(max_frames) >> PTE_PER_TABLE_SHIFT;
+        if ( ++level > 6 )
+            return -ENOMEM;
+    }
+
+    return level;
+}
+
 static inline struct page_info* alloc_amd_iommu_pgtable(void)
 {
     struct page_info *pg;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:33:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:33:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjTm-0002rT-RE; Fri, 10 Apr 2020 02:33:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjTl-0002rN-IF
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:13 +0000
X-Inumbo-ID: 9fe6e554-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9fe6e554-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=F4MruaO815CF6ImuaDZ3PQ9wxpIljXobWO2ncQbstTk=; b=aUMG5lUcO2aM8V4rf+cTyuZuT/
 sFkHJg06hXDuNKJK33HVfKIHo+7h2s+TZQVgF2vdOgzSovo89yRPSxCGrugmJVETR1/+6eMW5cq9F
 QrYHwVKd503YXZIilDFpN4cHSiD51SS0ERMrFASac6RXACqWzmMExWuhBMgZAW1rw+wI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjTk-0001ti-J2
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjTk-0005WG-Hu
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] x86/vPMU: don't blindly assume
 IA32_PERF_CAPABILITIES MSR exists
Message-Id: <E1jMjTk-0005WG-Hu@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:33:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit dfcd120e81e476a421814e08e264e9b47dcc5c35
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 10:13:01 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:13:01 2020 +0200

    x86/vPMU: don't blindly assume IA32_PERF_CAPABILITIES MSR exists
    
    Just like VMX'es lbr_tsx_fixup_check() the respective CPUID bit should
    be consulted first.
    
    Reported-by: Farrah Chen <farrah.chen@intel.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 15c39c7c913f26fba40231e103ce1ffa6101e7c9
    master date: 2020-02-26 17:35:48 +0100
---
 xen/arch/x86/cpu/vpmu_intel.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c
index 6e27f6ec8e..75aa11c6ad 100644
--- a/xen/arch/x86/cpu/vpmu_intel.c
+++ b/xen/arch/x86/cpu/vpmu_intel.c
@@ -900,7 +900,6 @@ int vmx_vpmu_initialise(struct vcpu *v)
 
 int __init core2_vpmu_init(void)
 {
-    u64 caps;
     unsigned int version = 0;
     unsigned int i;
 
@@ -932,8 +931,14 @@ int __init core2_vpmu_init(void)
 
     arch_pmc_cnt = core2_get_arch_pmc_count();
     fixed_pmc_cnt = core2_get_fixed_pmc_count();
-    rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
-    full_width_write = (caps >> 13) & 1;
+
+    if ( cpu_has_pdcm )
+    {
+        uint64_t caps;
+
+        rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
+        full_width_write = (caps >> 13) & 1;
+    }
 
     fixed_ctrl_mask = ~((1ull << (fixed_pmc_cnt * FIXED_CTR_CTRL_BITS)) - 1);
     /* mask .AnyThread bits for all fixed counters */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:33:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjTw-0002tI-TI; Fri, 10 Apr 2020 02:33:24 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjTv-0002t3-ME
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:23 +0000
X-Inumbo-ID: a5e97caa-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a5e97caa-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:33:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jXmioA5b4cNBBbwQJ3xVuqrHP0Cs6TYqa8SbMe81nOU=; b=hyGcTaK5BXqtPSpW/rRzSQ+xXF
 r0er7guJ7to4UFAbDUVO2gEOQ6aI4sVQswSZMdT1XvdD3D++eYztqOZzRq3PW23qiFCl49R1sAN/x
 UNnhQxsCYoq90z9/yMQ0aan9gISdLS8cDh614lZvoKt0ZFyq4MIqxevafQiUUqTNn/JI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjTu-0001tr-Ln
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjTu-0005Ww-Kf
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] x86/shim: fix ballooning up the guest
Message-Id: <E1jMjTu-0005Ww-Kf@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:33:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 480d9b47840a354c56eacece5c1ea206c577ee15
Author:     Igor Druzhinin <igor.druzhinin@citrix.com>
AuthorDate: Thu Apr 9 10:13:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:13:45 2020 +0200

    x86/shim: fix ballooning up the guest
    
    args.preempted is meaningless here as it doesn't signal whether the
    hypercall was preempted before. Use start_extent instead which is
    correct (as long as the hypercall was invoked in a "normal" way).
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    master commit: 76dbabb59eeaa78e9f57407e5b15a6606488333e
    master date: 2020-03-18 12:55:54 +0100
---
 xen/common/memory.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/memory.c b/xen/common/memory.c
index dee85f1496..312a8ec91c 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1128,8 +1128,8 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         }
 
 #ifdef CONFIG_X86
-        if ( pv_shim && op != XENMEM_decrease_reservation && !args.preempted )
-            /* Avoid calling pv_shim_online_memory when preempted. */
+        if ( pv_shim && op != XENMEM_decrease_reservation && !start_extent )
+            /* Avoid calling pv_shim_online_memory when in a continuation. */
             pv_shim_online_memory(args.nr_extents, args.extent_order);
 #endif
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:33:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:33:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjU5-0002uM-V1; Fri, 10 Apr 2020 02:33:33 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjU5-0002uE-H9
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:33 +0000
X-Inumbo-ID: abe3eafa-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id abe3eafa-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:33:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=A+NQ1FeSFjiPkUjoX7/s+LWAfXmI7QZuRR2uM6UdbKU=; b=6niJB4ev/eekQCPRokwY30VUy7
 2kA3IoTkZVG3yMt/f+q2zuwaZfNsRObyiRwkCtRduQHVRABun7HZFbofxywv5m+4vDjj3uNxHDezZ
 MO6QmszNp0IUF4XMXgRa+I8LQ1ZKkP9XrvZhKhjNfqG7hTXBCzGLVvjko5E+k34KBpeo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjU4-0001u0-OW
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjU4-0005ch-NW
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] x86/ucode: Fix error paths in apply_microcode()
Message-Id: <E1jMjU4-0005ch-NW@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:33:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ac3b39ce8386de5066760425e6895dc7735248a2
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 10:14:32 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:14:32 2020 +0200

    x86/ucode: Fix error paths in apply_microcode()
    
    In the unlikley case that patch application completes, but the resutling
    revision isn't expected, sig->rev doesn't get updated to match reality.
    
    It will get adjusted the next time collect_cpu_info() gets called, but in the
    meantime Xen might operate on a stale value.  Nothing good will come of this.
    
    Rewrite the logic to always update the stashed revision, before worrying about
    whether the attempt was a success or failure.
    
    Take the opportunity to make the printk() messages as consistent as possible.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: d2a0a96cf76603b2e2b87c3ce80c3f9d098327d4
    master date: 2020-03-26 18:57:45 +0000
---
 xen/arch/x86/microcode_amd.c   | 14 +++++++-------
 xen/arch/x86/microcode_intel.c | 21 +++++++++++----------
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 835d0f9906..afceaf83ba 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -194,7 +194,7 @@ static int apply_microcode(unsigned int cpu)
 {
     unsigned long flags;
     struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
-    uint32_t rev;
+    uint32_t rev, old_rev = uci->cpu_sig.rev;
     struct microcode_amd *mc_amd = uci->mc.mc_amd;
     struct microcode_header_amd *hdr;
     int hw_err;
@@ -215,6 +215,7 @@ static int apply_microcode(unsigned int cpu)
 
     /* get patch id after patching */
     rdmsrl(MSR_AMD_PATCHLEVEL, rev);
+    uci->cpu_sig.rev = rev;
 
     spin_unlock_irqrestore(&microcode_update_lock, flags);
 
@@ -227,15 +228,14 @@ static int apply_microcode(unsigned int cpu)
     /* check current patch id and patch's id for match */
     if ( hw_err || (rev != hdr->patch_id) )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed\n", cpu, rev, hdr->patch_id);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, hdr->patch_id, rev);
         return -EIO;
     }
 
-    printk(KERN_WARNING "microcode: CPU%d updated from revision %#x to %#x\n",
-           cpu, uci->cpu_sig.rev, hdr->patch_id);
-
-    uci->cpu_sig.rev = rev;
+    printk(XENLOG_WARNING "microcode: CPU%u updated from revision %#x to %#x\n",
+           cpu, old_rev, rev);
 
     return 0;
 }
diff --git a/xen/arch/x86/microcode_intel.c b/xen/arch/x86/microcode_intel.c
index 9657575c29..e511bd853c 100644
--- a/xen/arch/x86/microcode_intel.c
+++ b/xen/arch/x86/microcode_intel.c
@@ -281,9 +281,9 @@ static int apply_microcode(unsigned int cpu)
 {
     unsigned long flags;
     uint64_t msr_content;
-    unsigned int val[2];
     unsigned int cpu_num = raw_smp_processor_id();
     struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu_num);
+    uint32_t rev, old_rev = uci->cpu_sig.rev;
 
     /* We should bind the task to the CPU */
     BUG_ON(cpu_num != cpu);
@@ -303,23 +303,24 @@ static int apply_microcode(unsigned int cpu)
 
     /* get the current revision from MSR 0x8B */
     rdmsrl(MSR_IA32_UCODE_REV, msr_content);
-    val[1] = (uint32_t)(msr_content >> 32);
+    uci->cpu_sig.rev = rev = msr_content >> 32;
 
     spin_unlock_irqrestore(&microcode_update_lock, flags);
-    if ( val[1] != uci->mc.mc_intel->hdr.rev )
+
+    if ( rev != uci->mc.mc_intel->hdr.rev )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed. Resulting revision is %#x.\n", cpu_num,
-               uci->cpu_sig.rev, uci->mc.mc_intel->hdr.rev, val[1]);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, uci->mc.mc_intel->hdr.rev, rev);
         return -EIO;
     }
-    printk(KERN_INFO "microcode: CPU%d updated from revision "
-           "%#x to %#x, date = %04x-%02x-%02x \n",
-           cpu_num, uci->cpu_sig.rev, val[1],
+
+    printk(XENLOG_WARNING
+           "microcode: CPU%u updated from revision %#x to %#x, date = %04x-%02x-%02x\n",
+           cpu, old_rev, rev,
            uci->mc.mc_intel->hdr.date & 0xffff,
            uci->mc.mc_intel->hdr.date >> 24,
            (uci->mc.mc_intel->hdr.date >> 16) & 0xff);
-    uci->cpu_sig.rev = val[1];
 
     return 0;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:33:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:33:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjUG-0002ve-23; Fri, 10 Apr 2020 02:33:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjUF-0002vZ-NL
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:43 +0000
X-Inumbo-ID: b1e604ec-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b1e604ec-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:33:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ESj34QtgHnt1+cokbbTGx2+Njm64SfqV6dHO1/4hdIM=; b=KRjOplAVOrbck6NDH3iNUVjrnV
 wYqJnU4sHQSy0YC6jfG+vMyMNJvgehoMJN0J4HKUDtJyfaV2C2nv2Y5QNOlloVOyvxidkRUo8Zh8W
 s+wFtGy6w4ul8hd47UsKlAYfPApI/LCcSnt8YQle9FU87DDp63b7U5fLo+Ew8z0+vwVk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUE-0001uB-RD
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUE-0005hh-QC
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] x86/ucode/amd: Fix potential buffer overrun with
 equiv table handling
Message-Id: <E1jMjUE-0005hh-QC@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:33:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 09508fda40f08deed89e5f7e9f9b9744ff2bbeca
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 10:15:17 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:15:17 2020 +0200

    x86/ucode/amd: Fix potential buffer overrun with equiv table handling
    
    find_equiv_cpu_id() loops until it finds a 0 installed_cpu entry.  Well formed
    AMD microcode containers have this property.
    
    Extend the checking in install_equiv_cpu_table() to reject tables which don't
    have a sentinal at the end.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 1f97b6b9f1b5978659c5735954c37c130e7bb151
    master date: 2020-03-27 13:13:26 +0000
---
 xen/arch/x86/microcode_amd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index afceaf83ba..5080e54409 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -297,6 +297,7 @@ static int install_equiv_cpu_table(
     size_t *offset)
 {
     const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct equiv_cpu_entry *eq;
 
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
@@ -306,7 +307,9 @@ static int install_equiv_cpu_table(
         return -EINVAL;
     }
 
-    if ( mpbuf->len == 0 )
+    if ( mpbuf->len == 0 || mpbuf->len % sizeof(*eq) ||
+         (eq = (const void *)mpbuf->data,
+          eq[(mpbuf->len / sizeof(*eq)) - 1].installed_cpu) )
     {
         printk(KERN_ERR "microcode: Wrong microcode equivalent cpu table length\n");
         return -EINVAL;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:33:54 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:33:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjUQ-0002wl-3u; Fri, 10 Apr 2020 02:33:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjUP-0002wc-L0
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:53 +0000
X-Inumbo-ID: b7ebc426-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b7ebc426-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:33:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VglRgVu1j6HqCF7uCST+HmmV2Frvv1g/3VQ5qLT/YT4=; b=R5RwLquNg8YMRrgqP/G5NIgXYp
 BaJf5WEHCoCIy1cKzTrWk3m8IIhE3kk55wwdLCMwsbN4oUGShLqj3DBp7GQBWMZ/+7DpW8Lx8mdAx
 ZsZNdk+9h6dF5Flf/978qAfd4t0r3LVcE4X1SYZpL+xaKbSV4eY+mv5GZN7O0eqDPMwM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUO-0001uM-Tr
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:52 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUO-0005iO-Sw
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:33:52 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] x86/HVM: fix AMD ECS handling for Fam10
Message-Id: <E1jMjUO-0005iO-Sw@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:33:52 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8f51dad75bcbf6b4b7954f27e9cec92742eb8c15
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 10:16:27 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:16:27 2020 +0200

    x86/HVM: fix AMD ECS handling for Fam10
    
    The involved comparison was, very likely inadvertently, converted from
    >= to > when making changes unrelated to the actual family range.
    
    Fixes: 9841eb71ea87 ("x86/cpuid: Drop a guests cached x86 family and model information")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    master commit: 5d515b1c296ebad6889748ea1e49e063453216a3
    master date: 2020-04-01 12:28:30 +0200
---
 xen/arch/x86/hvm/ioreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index f95fb18c1f..3698f07f29 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -1333,7 +1333,7 @@ struct hvm_ioreq_server *hvm_select_ioreq_server(struct domain *d,
         if ( CF8_ADDR_HI(cf8) &&
              d->arch.cpuid->x86_vendor == X86_VENDOR_AMD &&
              (x86_fam = get_cpu_family(
-                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) > 0x10 &&
+                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) >= 0x10 &&
              x86_fam < 0x17 )
         {
             uint64_t msr_val;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:34:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:34:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjUb-0002xt-5p; Fri, 10 Apr 2020 02:34:05 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjUZ-0002xn-QK
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:03 +0000
X-Inumbo-ID: bde9fd98-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bde9fd98-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:34:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=FBU273UNOb/4jhqqZektrmzSbMiQFiHyydXnkPOdxyw=; b=DDaMFKASiY2I+2E1N1rfiHQzvN
 sJYXfHkLmvbAWUqBEZFqphmUUnj+E/YbEn4lB9B3jKrE+7lXhhwy1Gg+ynhrXUJCVmXu+sHIjFANo
 e8PZCKEMRkK4V2RJSd9BIXhsmrOlkH6Ji0R6s0cq8GRVoCxRIE8oQlJpGwvaZt29lu3E=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUZ-0001vV-0A
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUY-0005jW-VT
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] x86/ucode/amd: Fix more potential buffer overruns
 with microcode parsing
Message-Id: <E1jMjUY-0005jW-VT@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:34:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4b4ec479731f6cbb9f9c11b5c0f6ab391c2e193d
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 10:17:10 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:17:10 2020 +0200

    x86/ucode/amd: Fix more potential buffer overruns with microcode parsing
    
    cpu_request_microcode() doesn't know the buffer is at least 4 bytes long
    before inspecting UCODE_MAGIC.
    
    install_equiv_cpu_table() doesn't know the boundary of the buffer it is
    interpreting as an equivalency table.  This case was clearly observed at one
    point in the past, given the subsequent overrun detection, but without
    comprehending that the damage was already done.
    
    Make the logic consistent with container_fast_forward() and pass size_left in
    to install_equiv_cpu_table().
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 718d1432000079ea7120f6cb770372afe707ce27
    master date: 2020-04-01 14:00:12 +0100
---
 xen/arch/x86/microcode_amd.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 5080e54409..cccfcaed2f 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -294,11 +294,20 @@ static int get_ucode_from_buffer_amd(
 static int install_equiv_cpu_table(
     struct microcode_amd *mc_amd,
     const void *data,
+    size_t size_left,
     size_t *offset)
 {
-    const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct mpbhdr *mpbuf;
     const struct equiv_cpu_entry *eq;
 
+    if ( size_left < (sizeof(*mpbuf) + 4) ||
+         (mpbuf = data + *offset + 4,
+          size_left - sizeof(*mpbuf) - 4 < mpbuf->len) )
+    {
+        printk(XENLOG_WARNING "microcode: No space for equivalent cpu table\n");
+        return -EINVAL;
+    }
+
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
     if ( mpbuf->type != UCODE_EQUIV_CPU_TABLE_TYPE )
@@ -413,7 +422,7 @@ static int cpu_request_microcode(unsigned int cpu, const void *buf,
 
     current_cpu_id = cpuid_eax(0x00000001);
 
-    if ( *(const uint32_t *)buf != UCODE_MAGIC )
+    if ( bufsize < 4 || *(const uint32_t *)buf != UCODE_MAGIC )
     {
         printk(KERN_ERR "microcode: Wrong microcode patch file magic\n");
         error = -EINVAL;
@@ -443,24 +452,13 @@ static int cpu_request_microcode(unsigned int cpu, const void *buf,
      */
     while ( offset < bufsize )
     {
-        error = install_equiv_cpu_table(mc_amd, buf, &offset);
+        error = install_equiv_cpu_table(mc_amd, buf, bufsize - offset, &offset);
         if ( error )
         {
             printk(KERN_ERR "microcode: installing equivalent cpu table failed\n");
             break;
         }
 
-        /*
-         * Could happen as we advance 'offset' early
-         * in install_equiv_cpu_table
-         */
-        if ( offset > bufsize )
-        {
-            printk(KERN_ERR "microcode: Microcode buffer overrun\n");
-            error = -EINVAL;
-            break;
-        }
-
         if ( find_equiv_cpu_id(mc_amd->equiv_cpu_table, current_cpu_id,
                                &equiv_cpu_id) )
             break;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:34:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:34:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjUm-0002yx-7n; Fri, 10 Apr 2020 02:34:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjUl-0002yq-8K
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:15 +0000
X-Inumbo-ID: c343005b-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c343005b-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:34:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nct9HWIoXuTOOiSQaxfVbAHvqHRDG87aDHdbrhGxca4=; b=7AZiqRC2IO5Y0DFZzS3xaTMbEh
 4Qti9RN/PHNabxzVfd2MyllLqSeoCN5B1Jy+C85YF+lNj8YczwD+C30IEQKX3jMXqe3NZqEizf7PT
 NJQytMgQv3PyTWlqN1oo5LwerK7QYGLYJsYY+s0/l3MaDALblCvo1E1aZlPvXKgbTV/0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUj-0001ve-3D
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUj-0005kk-2K
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] credit2: avoid vCPUs to ever reach lower credits
 than idle
Message-Id: <E1jMjUj-0005kk-2K@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:34:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 5adb81ae7b26288851c825f62b50d34acb803839
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 10:18:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:18:14 2020 +0200

    credit2: avoid vCPUs to ever reach lower credits than idle
    
    There have been report of stalls of guest vCPUs, when Credit2 was used.
    It seemed like these vCPUs were not getting scheduled for very long
    time, even under light load conditions (e.g., during dom0 boot).
    
    Investigations led to the discovery that --although rarely-- it can
    happen that a vCPU manages to run for very long timeslices. In Credit2,
    this means that, when runtime accounting happens, the vCPU will lose a
    large quantity of credits. This in turn may lead to the vCPU having less
    credits than the idle vCPUs (-2^30). At this point, the scheduler will
    pick the idle vCPU, instead of the ready to run vCPU, for a few
    "epochs", which often times is enough for the guest kernel to think the
    vCPU is not responding and crashing.
    
    An example of this situation is shown here. In fact, we can see d0v1
    sitting in the runqueue while all the CPUs are idle, as it has
    -1254238270 credits, which is smaller than -2^30 = −1073741824:
    
        (XEN) Runqueue 0:
        (XEN)   ncpus              = 28
        (XEN)   cpus               = 0-27
        (XEN)   max_weight         = 256
        (XEN)   pick_bias          = 22
        (XEN)   instload           = 1
        (XEN)   aveload            = 293391 (~111%)
        (XEN)   idlers: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        (XEN)   tickled: 00,00000000,00000000,00000000,00000000,00000000,00000000
        (XEN)   fully idle cores: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        [...]
        (XEN) Runqueue 0:
        (XEN) CPU[00] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[01] runq=0, sibling=00,..., core=00,...
        [...]
        (XEN) CPU[26] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[27] runq=0, sibling=00,..., core=00,...
        (XEN) RUNQ:
        (XEN)     0: [0.1] flags=0 cpu=5 credit=-1254238270 [w=256] load=262144 (~100%)
    
    We certainly don't want, under any circumstance, this to happen.
    Let's, therefore, define a minimum amount of credits a vCPU can have.
    During accounting, we make sure that, for however long the vCPU has
    run, it will never get to have less than such minimum amount of
    credits. Then, we set the credits of the idle vCPU to an even
    smaller value.
    
    NOTE: investigations have been done about _how_ it is possible for a
    vCPU to execute for so much time that its credits becomes so low. While
    still not completely clear, there are evidence that:
    - it only happens very rarely,
    - it appears to be both machine and workload specific,
    - it does not look to be a Credit2 (e.g., as it happens when
      running with Credit1 as well) issue, or a scheduler issue.
    
    This patch makes Credit2 more robust to events like this, whatever
    the cause is, and should hence be backported (as far as possible).
    
    Reported-by: Glen <glenbarney@gmail.com>
    Reported-by: Tomas Mozes <hydrapolic@gmail.com>
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    master commit: 36f3662f27dec32d76c0edb4c6b62b9628d6869d
    master date: 2020-04-03 10:45:43 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  5 ++---
 xen/common/sched_credit2.c | 53 ++++++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index d6e7e3f800..8f126f65f1 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -55,7 +55,7 @@
 0x00022204  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_add
 0x00022205  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle_check   [ dom:vcpu = 0x%(1)08x, credit = %(2)d, score = %(3)d ]
 0x00022206  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle         [ cpu = %(1)d ]
-0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d, mult = %(4)d ]
+0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d ]
 0x00022208  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:sched_tasklet
 0x00022209  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:update_load
 0x0002220a  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_assign    [ dom:vcpu = 0x%(1)08x, rq_id = %(2)d ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index 5ed0a12327..23332dab59 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7718,13 +7718,12 @@ void sched_process(struct pcpu_info *p)
                 struct {
                     unsigned int vcpuid:16, domid:16;
                     int credit_start, credit_end;
-                    unsigned int multiplier;
                 } *r = (typeof(r))ri->d;
 
                 printf(" %s csched2:reset_credits d%uv%u, "
-                       "credit_start = %d, credit_end = %d, mult = %u\n",
+                       "credit_start = %d, credit_end = %d\n",
                        ri->dump_header, r->domid, r->vcpuid,
-                       r->credit_start, r->credit_end, r->multiplier);
+                       r->credit_start, r->credit_end);
             }
             break;
         case TRC_SCHED_CLASS_EVT(CSCHED2, 8):  /* SCHED_TASKLET    */
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index d532972af0..3038c862ba 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -234,11 +234,21 @@
  */
 #define CSCHED2_CREDIT_INIT          MILLISECS(10)
 /*
+ * Minimum amount of credits VMs can have. Ideally, no VM would get
+ * close to this (unless a vCPU manages to execute for really long
+ * time uninterrupted). In case it happens, it makes no sense to
+ * track even deeper undershoots.
+ *
+ * NOTE: If making this smaller than -CSCHED2_CREDIT_INIT, adjust
+ * reset_credit() accordingly.
+ */
+#define CSCHED2_CREDIT_MIN           (-CSCHED2_CREDIT_INIT)
+/*
  * Amount of credit the idle vcpus have. It never changes, as idle
  * vcpus does not consume credits, and it must be lower than whatever
  * amount of credit 'regular' vcpu would end up with.
  */
-#define CSCHED2_IDLE_CREDIT          (-(1U<<30))
+#define CSCHED2_IDLE_CREDIT          (CSCHED2_CREDIT_MIN-1)
 /*
  * Carryover: How much "extra" credit may be carried over after
  * a reset.
@@ -781,10 +791,15 @@ static int get_fallback_cpu(struct csched2_vcpu *svc)
 static void t2c_update(struct csched2_runqueue_data *rqd, s_time_t time,
                           struct csched2_vcpu *svc)
 {
-    uint64_t val = time * rqd->max_weight + svc->residual;
+    int64_t val = time * rqd->max_weight + svc->residual;
 
     svc->residual = do_div(val, svc->weight);
-    svc->credit -= val;
+    /* Getting to lower credit than CSCHED2_CREDIT_MIN makes no sense. */
+    val = svc->credit - val;
+    if ( unlikely(val < CSCHED2_CREDIT_MIN) )
+        svc->credit = CSCHED2_CREDIT_MIN;
+    else
+        svc->credit = val;
 }
 
 static s_time_t c2t(struct csched2_runqueue_data *rqd, s_time_t credit, struct csched2_vcpu *svc)
@@ -1624,28 +1639,25 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
 {
     struct csched2_runqueue_data *rqd = c2rqd(ops, cpu);
     struct list_head *iter;
-    int m;
+    int reset = CSCHED2_CREDIT_INIT;
 
     /*
      * Under normal circumstances, snext->credit should never be less
      * than -CSCHED2_MIN_TIMER.  However, under some circumstances, a
      * vcpu with low credits may be allowed to run long enough that
-     * its credits are actually less than -CSCHED2_CREDIT_INIT.
+     * its credits are actually much lower than that.
      * (Instances have been observed, for example, where a vcpu with
      * 200us of credit was allowed to run for 11ms, giving it -10.8ms
      * of credit.  Thus it was still negative even after the reset.)
      *
      * If this is the case for snext, we simply want to keep moving
-     * everyone up until it is in the black again.  This fair because
-     * none of the other vcpus want to run at the moment.
-     *
-     * Rather than looping, however, we just calculate a multiplier,
-     * avoiding an integer division and multiplication in the common
-     * case.
+     * everyone up until it is in the black again. This means that,
+     * since CSCHED2_CREDIT_MIN is -CSCHED2_CREDIT_INIT, we need to
+     * actually add 2*CSCHED2_CREDIT_INIT.
      */
-    m = 1;
-    if ( snext->credit < -CSCHED2_CREDIT_INIT )
-        m += (-snext->credit) / CSCHED2_CREDIT_INIT;
+    ASSERT(snext->credit >= CSCHED2_CREDIT_MIN);
+    if ( unlikely(snext->credit == CSCHED2_CREDIT_MIN) )
+        reset += CSCHED2_CREDIT_INIT;
 
     list_for_each( iter, &rqd->svc )
     {
@@ -1676,15 +1688,7 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
         }
 
         start_credit = svc->credit;
-
-        /*
-         * Add INIT * m, avoiding integer multiplication in the common case.
-         */
-        if ( likely(m==1) )
-            svc->credit += CSCHED2_CREDIT_INIT;
-        else
-            svc->credit += m * CSCHED2_CREDIT_INIT;
-
+        svc->credit += reset;
         /* "Clip" credits to max carryover */
         if ( svc->credit > CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX )
             svc->credit = CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX;
@@ -1696,19 +1700,18 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
             struct {
                 unsigned vcpu:16, dom:16;
                 int credit_start, credit_end;
-                unsigned multiplier;
             } d;
             d.dom = svc->vcpu->domain->domain_id;
             d.vcpu = svc->vcpu->vcpu_id;
             d.credit_start = start_credit;
             d.credit_end = svc->credit;
-            d.multiplier = m;
             __trace_var(TRC_CSCHED2_CREDIT_RESET, 1,
                         sizeof(d),
                         (unsigned char *)&d);
         }
     }
 
+    ASSERT(snext->credit > 0);
     SCHED_STAT_CRANK(credit_reset);
 
     /* No need to resort runqueue, as everyone's order should be the same. */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 02:34:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 02:34:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMjUv-00030H-9u; Fri, 10 Apr 2020 02:34:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMjUu-000307-5x
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:24 +0000
X-Inumbo-ID: c9f4c5b4-7ad3-11ea-8397-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c9f4c5b4-7ad3-11ea-8397-12813bfff9fa;
 Fri, 10 Apr 2020 02:34:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=YSVXsuk8zgdeFYXuXb+j+hZQO04MWqg/pP2jPr5eET4=; b=dT3Rm6mdWxwLuEpuSpV6X2aUMQ
 KJtvDyvGhwy8heUNKJITzBgO6rahFg3sVzkjIYUyl7tWA5UgU8tqFqzjjqaRDHfakHbVxqQjSPUYn
 DBzCO6/iovbjr8tbSmqzDsw+KCZCR/DVGDLsR5Fo84OFw/i5hXztiBJ4WqV24pspMFIQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUt-0001vn-6d
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMjUt-0005lw-5c
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 02:34:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] credit2: fix credit reset happening too few times
Message-Id: <E1jMjUt-0005lw-5c@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 02:34:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit affb032b9b2624b67ffc7fb246a915dd08074b3f
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 10:18:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 10:18:58 2020 +0200

    credit2: fix credit reset happening too few times
    
    There is a bug in commit 5e4b4199667b9 ("xen: credit2: only reset
    credit on reset condition"). In fact, the aim of that commit was to
    make sure that we do not perform too many credit reset operations
    (which are not super cheap, and in an hot-path). But the check used
    to determine whether a reset is necessary was the wrong one.
    
    In fact, knowing just that some vCPUs have been skipped, while
    traversing the runqueue (in runq_candidate()), is not enough. We
    need to check explicitly whether the first vCPU in the runqueue
    has a negative amount of credit.
    
    Since a trace record is changed, this patch updates xentrace format file
    and xenalyze as well
    
    This should be backported.
    
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Acked-by: George Dunlap <george.dunlap@citrix.com>
    master commit: dae7b62e976b28af9c8efa150618c25501bf1650
    master date: 2020-04-03 10:46:53 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  8 +++-----
 xen/common/sched_credit2.c | 28 ++++++++++++----------------
 3 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index 8f126f65f1..deac4d8598 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -67,7 +67,7 @@
 0x00022210  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_check     [ lrq_id[16]:orq_id[16] = 0x%(1)08x, delta = %(2)d ]
 0x00022211  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_balance   [ l_bavgload = 0x%(2)08x%(1)08x, o_bavgload = 0x%(4)08x%(3)08x, lrq_id[16]:orq_id[16] = 0x%(5)08x ]
 0x00022212  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:pick_cpu       [ b_avgload = 0x%(2)08x%(1)08x, dom:vcpu = 0x%(3)08x, rq_id[16]:new_cpu[16] = %(4)d ]
-0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(4)d, skipped_vcpus = %(3)d, tickled_cpu = %(2)d ]
+0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(3)d, tickled_cpu = %(2)d ]
 0x00022214  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:schedule       [ rq:cpu = 0x%(1)08x, tasklet[8]:idle[8]:smt_idle[8]:tickled[8] = %(2)08x ]
 0x00022215  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:ratelimit      [ dom:vcpu = 0x%(1)08x, runtime = %(2)d ]
 0x00022216  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_cand_chk  [ dom:vcpu = 0x%(1)08x ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index 23332dab59..eb77787f6f 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7855,14 +7855,12 @@ void sched_process(struct pcpu_info *p)
             if (opt.dump_all) {
                 struct {
                     unsigned vcpuid:16, domid:16;
-                    unsigned tickled_cpu, skipped;
+                    unsigned tickled_cpu;
                     int credit;
                 } *r = (typeof(r))ri->d;
 
-                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, "
-                       "%u vcpus skipped, ",
-                       ri->dump_header, r->domid, r->vcpuid,
-                       r->credit, r->skipped);
+                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, ",
+                       ri->dump_header, r->domid, r->vcpuid, r->credit);
                 if (r->tickled_cpu == (unsigned)-1)
                     printf("no cpu was tickled\n");
                 else
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index 3038c862ba..a99248398b 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -3265,16 +3265,13 @@ csched2_runtime(const struct scheduler *ops, int cpu,
 static struct csched2_vcpu *
 runq_candidate(struct csched2_runqueue_data *rqd,
                struct csched2_vcpu *scurr,
-               int cpu, s_time_t now,
-               unsigned int *skipped)
+               int cpu, s_time_t now)
 {
     struct list_head *iter, *temp;
     struct csched2_vcpu *snext = NULL;
     struct csched2_private *prv = csched2_priv(per_cpu(scheduler, cpu));
     bool yield = false, soft_aff_preempt = false;
 
-    *skipped = 0;
-
     if ( unlikely(is_idle_vcpu(scurr->vcpu)) )
     {
         snext = scurr;
@@ -3371,10 +3368,7 @@ runq_candidate(struct csched2_runqueue_data *rqd,
 
         /* Only consider vcpus that are allowed to run on this processor. */
         if ( !cpumask_test_cpu(cpu, svc->vcpu->cpu_hard_affinity) )
-        {
-            (*skipped)++;
             continue;
-        }
 
         /*
          * If a vcpu is meant to be picked up by another processor, and such
@@ -3383,7 +3377,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->tickled_cpu != -1 && svc->tickled_cpu != cpu &&
              cpumask_test_cpu(svc->tickled_cpu, &rqd->tickled) )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(deferred_to_tickled_cpu);
             continue;
         }
@@ -3395,7 +3388,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->vcpu->processor != cpu
              && snext->credit + CSCHED2_MIGRATE_RESIST > svc->credit )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(migrate_resisted);
             continue;
         }
@@ -3418,14 +3410,13 @@ runq_candidate(struct csched2_runqueue_data *rqd,
     {
         struct {
             unsigned vcpu:16, dom:16;
-            unsigned tickled_cpu, skipped;
+            unsigned tickled_cpu;
             int credit;
         } d;
         d.dom = snext->vcpu->domain->domain_id;
         d.vcpu = snext->vcpu->vcpu_id;
         d.credit = snext->credit;
         d.tickled_cpu = snext->tickled_cpu;
-        d.skipped = *skipped;
         __trace_var(TRC_CSCHED2_RUNQ_CANDIDATE, 1,
                     sizeof(d),
                     (unsigned char *)&d);
@@ -3456,7 +3447,6 @@ csched2_schedule(
     struct csched2_runqueue_data *rqd;
     struct csched2_vcpu * const scurr = csched2_vcpu(current);
     struct csched2_vcpu *snext = NULL;
-    unsigned int skipped_vcpus = 0;
     struct task_slice ret;
     bool tickled;
 
@@ -3534,7 +3524,7 @@ csched2_schedule(
         snext = csched2_vcpu(idle_vcpu[cpu]);
     }
     else
-        snext = runq_candidate(rqd, scurr, cpu, now, &skipped_vcpus);
+        snext = runq_candidate(rqd, scurr, cpu, now);
 
     /* If switching from a non-idle runnable vcpu, put it
      * back on the runqueue. */
@@ -3548,6 +3538,8 @@ csched2_schedule(
     /* Accounting for non-idle tasks */
     if ( !is_idle_vcpu(snext->vcpu) )
     {
+        int top_credit;
+
         /* If switching, remove this from the runqueue and mark it scheduled */
         if ( snext != scurr )
         {
@@ -3568,11 +3560,15 @@ csched2_schedule(
          *  2) no other vcpu with higher credits wants to run.
          *
          * Here, where we want to check for reset, we need to make sure the
-         * proper vcpu is being used. In fact, runqueue_candidate() may have
-         * not returned the first vcpu in the runqueue, for various reasons
+         * proper vcpu is being used. In fact, runq_candidate() may have not
+         * returned the first vcpu in the runqueue, for various reasons
          * (e.g., affinity). Only trigger a reset when it does.
          */
-        if ( skipped_vcpus == 0 && snext->credit <= CSCHED2_CREDIT_RESET )
+        if ( list_empty(&rqd->runq) )
+            top_credit = snext->credit;
+        else
+            top_credit = max(snext->credit, runq_elem(rqd->runq.next)->credit);
+        if ( top_credit <= CSCHED2_CREDIT_RESET )
         {
             reset_credit(ops, cpu, now, snext);
             balance_load(ops, cpu, now);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 11:33:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 11:33:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMruE-00066x-KX; Fri, 10 Apr 2020 11:33:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMruD-00066s-Kw
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:05 +0000
X-Inumbo-ID: 0b29e3f2-7b1f-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0b29e3f2-7b1f-11ea-9e09-bc764e2007e4;
 Fri, 10 Apr 2020 11:33:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hgVdk02ioE9hWSjOhXj65MfJh+qck0iCjUamqDQVQ3k=; b=MbjKQ1+gG3BXDbFnvcE+HjYTxM
 GKR932zuUoxKnWBEqkc1FY4+htGE+gFCi4AJwobmv7V81xoYTL7jE2gEnAHgrfQjVnZQl5TjsPaHE
 pI7usj1n/0XJx+oSGIYOGuyMb28+FtsoXbLKR/ZanlAjElU1Usfz1iUro37cP6f+mo6o=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMruC-0004lG-RJ
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMruC-0004Ew-Pv
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/x86: ioapic: Use true/false in bad_ioapic_register()
Message-Id: <E1jMruC-0004Ew-Pv@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 11:33:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8c4aed6ee1073f01f257d170c14c41af7a9cfd39
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Fri Mar 27 18:16:22 2020 +0000
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Fri Apr 10 12:23:48 2020 +0100

    xen/x86: ioapic: Use true/false in bad_ioapic_register()
    
    bad_ioapic_register() is returning a bool, so we should switch to
    true/false.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/io_apic.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index e98e08e9c8..9868933287 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -2531,10 +2531,10 @@ static __init bool bad_ioapic_register(unsigned int idx)
     {
         printk(KERN_WARNING "I/O APIC %#x registers return all ones, skipping!\n",
                mp_ioapics[idx].mpc_apicaddr);
-        return 1;
+        return true;
     }
 
-    return 0;
+    return false;
 }
 
 void __init init_ioapic_mappings(void)
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 11:33:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 11:33:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMruO-00067Z-MJ; Fri, 10 Apr 2020 11:33:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMruN-00067U-Kw
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:15 +0000
X-Inumbo-ID: 112cbf22-7b1f-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 112cbf22-7b1f-11ea-83d8-bc764e2007e4;
 Fri, 10 Apr 2020 11:33:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=MA6SppDPiThv4Kzag09B0GEbh39ov/DIKHYQMb9PCkM=; b=Vi39T7KmCXKAnvSSoHrfyZ6fRM
 YnKaM7NhZm5dMxjXgtODyPNA4XeQgrMEfzBnnsAvlvBRNF1f7IpiTSLAvl6zkJJxEhlP06oBxOp4I
 DFUHfswk/d5WXal351pz/QAHQhODO1cFu5+6ufdpYxz5AS4Npy7OKCFAxBEG9f5m+uyE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMruM-0004lp-US
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMruM-0004Fa-T4
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/x86: ioapic: Rename init_ioapic_mappings() to
 ioapic_init()
Message-Id: <E1jMruM-0004Fa-T4@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 11:33:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 996ff16416b62154400468fb91fc32ba7eccf620
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Fri Mar 27 18:23:21 2020 +0000
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Fri Apr 10 12:23:48 2020 +0100

    xen/x86: ioapic: Rename init_ioapic_mappings() to ioapic_init()
    
    The function init_ioapic_mappings() is doing more than initialization
    mappings. It is also initialization the number of IRQs/GSIs supported.
    
    So rename the function to ioapic_init().
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/apic.c           | 2 +-
 xen/arch/x86/io_apic.c        | 2 +-
 xen/include/asm-x86/io_apic.h | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
index cde67cd87e..71f4efb2fe 100644
--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -978,7 +978,7 @@ __next:
         boot_cpu_physical_apicid = get_apic_id();
     x86_cpu_to_apicid[0] = get_apic_id();
 
-    init_ioapic_mappings();
+    ioapic_init();
 }
 
 /*****************************************************************************
diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index 9868933287..8233eb44e1 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -2537,7 +2537,7 @@ static __init bool bad_ioapic_register(unsigned int idx)
     return false;
 }
 
-void __init init_ioapic_mappings(void)
+void __init ioapic_init(void)
 {
     unsigned long ioapic_phys;
     unsigned int i, idx = FIX_IO_APIC_BASE_0;
diff --git a/xen/include/asm-x86/io_apic.h b/xen/include/asm-x86/io_apic.h
index 998905186b..e006b2b8dd 100644
--- a/xen/include/asm-x86/io_apic.h
+++ b/xen/include/asm-x86/io_apic.h
@@ -180,7 +180,7 @@ extern int io_apic_get_version (int ioapic);
 extern int io_apic_get_redir_entries (int ioapic);
 extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int active_high_low);
 
-extern void init_ioapic_mappings(void);
+extern void ioapic_init(void);
 
 extern void ioapic_suspend(void);
 extern void ioapic_resume(void);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 11:33:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 11:33:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMruY-00068t-O2; Fri, 10 Apr 2020 11:33:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMruX-00068k-PX
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:25 +0000
X-Inumbo-ID: 1734c1d0-7b1f-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1734c1d0-7b1f-11ea-83d8-bc764e2007e4;
 Fri, 10 Apr 2020 11:33:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=NbzDsL0OlGbTTA8rR44VrH9VNJQ5TL3rqXRXYsDNqGU=; b=e2WhyyNzsl8UuX3AKJB6tPke45
 PirHlNJnnmFW2Y/CfrqHmbTfesuSpe8ShikqCm3rQJNnLqdYw4l26n1DLM7BDiJGcffRWidR7kwb7
 Vc1Fb/d/B7uIQPI27fTsD0uB3g4XiTbTlQnYtIrbnBuxGnL0ekLcTWwX9wbdlz+GxQdM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMruX-0004m3-14
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMruW-0004G7-WA
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 11:33:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/x86: ioapic: Simplify ioapic_init()
Message-Id: <E1jMruW-0004G7-WA@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 11:33:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 13dcb32b6b585d9a29997e81c0a9610cf1a7f64d
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Fri Mar 27 18:36:20 2020 +0000
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Fri Apr 10 12:23:48 2020 +0100

    xen/x86: ioapic: Simplify ioapic_init()
    
    Since commit 9facd54a45 "x86/ioapic: Add register level checks to detect
    bogus io-apic entries", Xen is able to cope with IO APICs not mapped in
    the fixmap.
    
    Therefore the whole logic to allocate a fake page for some IO APICs is
    unnecessary.
    
    With the logic removed, the code can be simplified a lot as we don't
    need to go through all the IO APIC if SMP has not been detected or a
    bogus zero IO-APIC address has been detected.
    
    To avoid another level of tabulation, the simplification is now moved in
    its own function.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/io_apic.c | 61 +++++++++++++++++++++++---------------------------
 1 file changed, 28 insertions(+), 33 deletions(-)

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index 8233eb44e1..878ee5192d 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -2537,34 +2537,26 @@ static __init bool bad_ioapic_register(unsigned int idx)
     return false;
 }
 
-void __init ioapic_init(void)
+static void __init ioapic_init_mappings(void)
 {
-    unsigned long ioapic_phys;
     unsigned int i, idx = FIX_IO_APIC_BASE_0;
-    union IO_APIC_reg_01 reg_01;
 
-    if ( smp_found_config )
-        nr_irqs_gsi = 0;
+    nr_irqs_gsi = 0;
+
     for ( i = 0; i < nr_ioapics; i++ )
     {
-        if ( smp_found_config )
-        {
-            ioapic_phys = mp_ioapics[i].mpc_apicaddr;
-            if ( !ioapic_phys )
-            {
-                printk(KERN_ERR "WARNING: bogus zero IO-APIC address "
-                       "found in MPTABLE, disabling IO/APIC support!\n");
-                smp_found_config = false;
-                skip_ioapic_setup = true;
-                goto fake_ioapic_page;
-            }
-        }
-        else
+        union IO_APIC_reg_01 reg_01;
+        paddr_t ioapic_phys = mp_ioapics[i].mpc_apicaddr;
+
+        if ( !ioapic_phys )
         {
- fake_ioapic_page:
-            ioapic_phys = __pa(alloc_xenheap_page());
-            clear_page(__va(ioapic_phys));
+            printk(KERN_ERR
+                   "WARNING: bogus zero IO-APIC address found in MPTABLE, disabling IO/APIC support!\n");
+            smp_found_config = false;
+            skip_ioapic_setup = true;
+            break;
         }
+
         set_fixmap_nocache(idx, ioapic_phys);
         apic_printk(APIC_VERBOSE, "mapped IOAPIC to %08Lx (%08lx)\n",
                     __fix_to_virt(idx), ioapic_phys);
@@ -2576,19 +2568,22 @@ void __init ioapic_init(void)
             continue;
         }
 
-        if ( smp_found_config )
-        {
-            /* The number of IO-APIC IRQ registers (== #pins): */
-            reg_01.raw = io_apic_read(i, 1);
-            nr_ioapic_entries[i] = reg_01.bits.entries + 1;
-            nr_irqs_gsi += nr_ioapic_entries[i];
-
-            if ( rangeset_add_singleton(mmio_ro_ranges,
-                                        ioapic_phys >> PAGE_SHIFT) )
-                printk(KERN_ERR "Failed to mark IO-APIC page %lx read-only\n",
-                       ioapic_phys);
-        }
+        /* The number of IO-APIC IRQ registers (== #pins): */
+        reg_01.raw = io_apic_read(i, 1);
+        nr_ioapic_entries[i] = reg_01.bits.entries + 1;
+        nr_irqs_gsi += nr_ioapic_entries[i];
+
+        if ( rangeset_add_singleton(mmio_ro_ranges,
+                                    ioapic_phys >> PAGE_SHIFT) )
+            printk(KERN_ERR "Failed to mark IO-APIC page %lx read-only\n",
+                   ioapic_phys);
     }
+}
+
+void __init ioapic_init(void)
+{
+    if ( smp_found_config )
+        ioapic_init_mappings();
 
     nr_irqs_gsi = max(nr_irqs_gsi, highest_gsi() + 1);
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 14:33:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 14:33:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMuiR-0003wo-Iv; Fri, 10 Apr 2020 14:33:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMuiQ-0003wj-B0
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 14:33:06 +0000
X-Inumbo-ID: 306ce4fc-7b38-11ea-8429-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 306ce4fc-7b38-11ea-8429-12813bfff9fa;
 Fri, 10 Apr 2020 14:33:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=pWRdexQXHXum8v7XD+7xmUXDz/rtVrGfsxKaeQszJEc=; b=fjbjw++XkIV7DD4uZQS81qrKFF
 6mfbD8IDWXHgPWQ7xkJJjauezRG0ihM1+u65refGpCdrIdexDuyRFapA1qr+0weRfdKKeQ0Cbqvrh
 fwj+Y1nW9U/kZOtU3rZaYboufl1j6T7Jh/jye7ILWSIQysscICsKKuFCC8SDrL8dqjdM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMuiO-0008EX-Nt
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 14:33:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMuiO-0006Aw-M3
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 14:33:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/mem_sharing: Fix build with !CONFIG_XSM
Message-Id: <E1jMuiO-0006Aw-M3@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 14:33:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7372466b21c3b6c96bb7a52754e432bac883a1e3
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 21:44:11 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Fri Apr 10 15:20:10 2020 +0100

    x86/mem_sharing: Fix build with !CONFIG_XSM
    
    A build fails with:
    
      mem_sharing.c: In function ‘copy_special_pages’:
      mem_sharing.c:1649:9: error: ‘HVM_PARAM_STORE_PFN’ undeclared (first use in this function)
               HVM_PARAM_STORE_PFN,
               ^~~~~~~~~~~~~~~~~~~
      ...
    
    This is because xsm/xsm.h includes xsm/dummy.h for the !CONFIG_XSM case, which
    brings public/hvm/params.h in.
    
    Fixes: 41548c5472a "mem_sharing: VM forking"
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tamas K Lengyel <tamas@tklengyel.com>
---
 xen/arch/x86/mm/mem_sharing.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 85951b7bea..e572e9e39d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -41,6 +41,8 @@
 #include <asm/hvm/hvm.h>
 #include <xsm/xsm.h>
 
+#include <public/hvm/params.h>
+
 #include "mm-locks.h"
 
 static shr_handle_t next_handle = 1;
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:33:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwaW-00061h-Uc; Fri, 10 Apr 2020 16:33:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwaV-00061a-Mp
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:03 +0000
X-Inumbo-ID: f24b96bc-7b48-11ea-845a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f24b96bc-7b48-11ea-845a-12813bfff9fa;
 Fri, 10 Apr 2020 16:33:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=50olYRGh4GEwkN6EReMJFK1k8TmpQQWEG5mOEWtUKP0=; b=u6OLMXHcEJAGaU0Q4tq3mZkPiG
 RO/VnwU4f9/44WscHK6ElZadCKOMP40FwF8X9yf0/Op7l836GjoVXuaIiHarYhVfdxl6Ud3pFgGfh
 ofX/4tdhZSolQUArBzKFweDqI2WS5jOqWT5ZSKQfl5BrGM95TO1Ixz4W0ZwaDu+TN69g=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwaT-0002b6-UD
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwaT-0005vZ-Sz
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] config: use mini-os master for unstable
Message-Id: <E1jMwaT-0005vZ-Sz@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:33:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e013e8514389b739153016349e49f5a78e34ddf0
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Tue Apr 7 15:48:31 2020 +0200
Commit:     Wei Liu <wl@xen.org>
CommitDate: Tue Apr 7 21:05:54 2020 +0100

    config: use mini-os master for unstable
    
    We haven't used mini-os master for about 2 years now due to a stubdom
    test failing [1]. Booting a guest with mini-os master used for building
    stubdom didn't reveal any problem, so use master for unstable in order
    to let OSStest find any problems not showing up in the local test.
    
    [1]: https://lists.xen.org/archives/html/minios-devel/2018-04/msg00015.html
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
---
 Config.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Config.mk b/Config.mk
index dc6e7d03df..0f303c79b2 100644
--- a/Config.mk
+++ b/Config.mk
@@ -245,7 +245,7 @@ MINIOS_UPSTREAM_URL ?= git://xenbits.xen.org/mini-os.git
 endif
 OVMF_UPSTREAM_REVISION ?= 20d2e5a125e34fc8501026613a71549b2a1a3e54
 QEMU_UPSTREAM_REVISION ?= master
-MINIOS_UPSTREAM_REVISION ?= 0b4b7897e08b967a09bed2028a79fabff82342dd
+MINIOS_UPSTREAM_REVISION ?= master
 
 SEABIOS_UPSTREAM_REVISION ?= rel-1.13.0
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:33:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:33:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwah-00062H-0Q; Fri, 10 Apr 2020 16:33:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwaf-000628-Sr
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:13 +0000
X-Inumbo-ID: f84e2fb6-7b48-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f84e2fb6-7b48-11ea-b4f4-bc764e2007e4;
 Fri, 10 Apr 2020 16:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=yBrKrAl1QpVWuTPXV45/0SDe3P0GJ/ivRnIrhPuI93k=; b=EOe0bXrmTWWySxCWbO7Uwo2A41
 xpB3QLVZYwjZayNp3TTyAOfOJhyIBhu6r2MDRjhTlUstYt6sNk9Jcd1sgZIxogdWBSxMIujddutZs
 VRzE8Wy4Obd5YuNTDI5KywBiMIwPfbzbJ1PYlxOdY7gD63XYfcEA/fbWbUHaWFtdqVuw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwae-0002bD-1Z
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwae-0005w6-0X
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] mem_sharing: VM forking
Message-Id: <E1jMwae-0005w6-0X@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:33:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 41548c5472a3ea514cb0173f2576096970358263
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Wed Apr 8 12:59:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 8 12:59:58 2020 +0200

    mem_sharing: VM forking
    
    VM forking is the process of creating a domain with an empty memory space and a
    parent domain specified from which to populate the memory when necessary. For
    the new domain to be functional the VM state is copied over as part of the fork
    operation (HVM params, hap allocation, etc).
    
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/x86/domain.c             |  13 ++
 xen/arch/x86/hvm/hvm.c            |   4 +-
 xen/arch/x86/mm/hap/hap.c         |   3 +-
 xen/arch/x86/mm/mem_sharing.c     | 342 ++++++++++++++++++++++++++++++++++++++
 xen/arch/x86/mm/p2m.c             |   9 +-
 xen/include/asm-arm/page.h        |   1 +
 xen/include/asm-x86/hap.h         |   1 +
 xen/include/asm-x86/hvm/hvm.h     |   2 +
 xen/include/asm-x86/mem_sharing.h |  18 ++
 xen/include/asm-x86/page.h        |   1 +
 xen/include/public/memory.h       |   5 +
 xen/include/xen/sched.h           |   1 +
 12 files changed, 395 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 683bc619aa..a008d7df1c 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -2211,6 +2211,19 @@ int domain_relinquish_resources(struct domain *d)
             ret = relinquish_shared_pages(d);
             if ( ret )
                 return ret;
+
+            /*
+             * If the domain is forked, decrement the parent's pause count
+             * and release the domain.
+             */
+            if ( mem_sharing_is_fork(d) )
+            {
+                struct domain *parent = d->parent;
+
+                d->parent = NULL;
+                domain_unpause(parent);
+                put_domain(parent);
+            }
         }
 #endif
 
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index a3d115b650..304b3d1562 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1917,7 +1917,7 @@ int hvm_hap_nested_page_fault(paddr_t gpa, unsigned long gla,
     }
 #endif
 
-    /* Spurious fault? PoD and log-dirty also take this path. */
+    /* Spurious fault? PoD, log-dirty and VM forking also take this path. */
     if ( p2m_is_ram(p2mt) )
     {
         rc = 1;
@@ -4377,7 +4377,7 @@ static int hvm_allow_get_param(struct domain *d,
     return rc;
 }
 
-static int hvm_get_param(struct domain *d, uint32_t index, uint64_t *value)
+int hvm_get_param(struct domain *d, uint32_t index, uint64_t *value)
 {
     int rc;
 
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index a6d5e39b02..814d0c3253 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -321,8 +321,7 @@ static void hap_free_p2m_page(struct domain *d, struct page_info *pg)
 }
 
 /* Return the size of the pool, rounded up to the nearest MB */
-static unsigned int
-hap_get_allocation(struct domain *d)
+unsigned int hap_get_allocation(struct domain *d)
 {
     unsigned int pg = d->arch.paging.hap.total_pages
         + d->arch.paging.hap.p2m_pages;
diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index f49f27a3ef..64cd706e5a 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -22,6 +22,7 @@
 
 #include <xen/types.h>
 #include <xen/domain_page.h>
+#include <xen/event.h>
 #include <xen/spinlock.h>
 #include <xen/rwlock.h>
 #include <xen/mm.h>
@@ -36,6 +37,8 @@
 #include <asm/altp2m.h>
 #include <asm/atomic.h>
 #include <asm/event.h>
+#include <asm/hap.h>
+#include <asm/hvm/hvm.h>
 #include <xsm/xsm.h>
 
 #include "mm-locks.h"
@@ -1443,6 +1446,309 @@ static inline int mem_sharing_control(struct domain *d, bool enable)
     return 0;
 }
 
+/*
+ * Forking a page only gets called when the VM faults due to no entry being
+ * in the EPT for the access. Depending on the type of access we either
+ * populate the physmap with a shared entry for read-only access or
+ * fork the page if its a write access.
+ *
+ * The client p2m is already locked so we only need to lock
+ * the parent's here.
+ */
+int mem_sharing_fork_page(struct domain *d, gfn_t gfn, bool unsharing)
+{
+    int rc = -ENOENT;
+    shr_handle_t handle;
+    struct domain *parent = d->parent;
+    struct p2m_domain *p2m;
+    unsigned long gfn_l = gfn_x(gfn);
+    mfn_t mfn, new_mfn;
+    p2m_type_t p2mt;
+    struct page_info *page;
+
+    if ( !mem_sharing_is_fork(d) )
+        return -ENOENT;
+
+    if ( !unsharing )
+    {
+        /* For read-only accesses we just add a shared entry to the physmap */
+        while ( parent )
+        {
+            if ( !(rc = nominate_page(parent, gfn, 0, &handle)) )
+                break;
+
+            parent = parent->parent;
+        }
+
+        if ( !rc )
+        {
+            /* The client's p2m is already locked */
+            p2m = p2m_get_hostp2m(parent);
+
+            p2m_lock(p2m);
+            rc = add_to_physmap(parent, gfn_l, handle, d, gfn_l, false);
+            p2m_unlock(p2m);
+
+            if ( !rc )
+                return 0;
+        }
+    }
+
+    /*
+     * If it's a write access (ie. unsharing) or if adding a shared entry to
+     * the physmap failed we'll fork the page directly.
+     */
+    p2m = p2m_get_hostp2m(d);
+    parent = d->parent;
+
+    while ( parent )
+    {
+        mfn = get_gfn_query(parent, gfn_l, &p2mt);
+
+        /* We can't fork grant memory from the parent, only regular ram */
+        if ( mfn_valid(mfn) && p2m_is_ram(p2mt) )
+            break;
+
+        put_gfn(parent, gfn_l);
+        parent = parent->parent;
+    }
+
+    if ( !parent )
+        return -ENOENT;
+
+    if ( !(page = alloc_domheap_page(d, 0)) )
+    {
+        put_gfn(parent, gfn_l);
+        return -ENOMEM;
+    }
+
+    new_mfn = page_to_mfn(page);
+    copy_domain_page(new_mfn, mfn);
+    set_gpfn_from_mfn(mfn_x(new_mfn), gfn_l);
+
+    put_gfn(parent, gfn_l);
+
+    return p2m->set_entry(p2m, gfn, new_mfn, PAGE_ORDER_4K, p2m_ram_rw,
+                          p2m->default_access, -1);
+}
+
+static int bring_up_vcpus(struct domain *cd, struct domain *d)
+{
+    unsigned int i;
+    int ret = -EINVAL;
+
+    if ( d->max_vcpus != cd->max_vcpus ||
+        (ret = cpupool_move_domain(cd, d->cpupool)) )
+        return ret;
+
+    for ( i = 0; i < cd->max_vcpus; i++ )
+    {
+        if ( !d->vcpu[i] || cd->vcpu[i] )
+            continue;
+
+        if ( !vcpu_create(cd, i) )
+            return -EINVAL;
+    }
+
+    domain_update_node_affinity(cd);
+    return 0;
+}
+
+static int copy_vcpu_settings(struct domain *cd, const struct domain *d)
+{
+    unsigned int i;
+    struct p2m_domain *p2m = p2m_get_hostp2m(cd);
+    int ret = -EINVAL;
+
+    for ( i = 0; i < cd->max_vcpus; i++ )
+    {
+        const struct vcpu *d_vcpu = d->vcpu[i];
+        struct vcpu *cd_vcpu = cd->vcpu[i];
+        mfn_t vcpu_info_mfn;
+
+        if ( !d_vcpu || !cd_vcpu )
+            continue;
+
+        /* Copy & map in the vcpu_info page if the guest uses one */
+        vcpu_info_mfn = d_vcpu->vcpu_info_mfn;
+        if ( !mfn_eq(vcpu_info_mfn, INVALID_MFN) )
+        {
+            mfn_t new_vcpu_info_mfn = cd_vcpu->vcpu_info_mfn;
+
+            /* Allocate & map the page for it if it hasn't been already */
+            if ( mfn_eq(new_vcpu_info_mfn, INVALID_MFN) )
+            {
+                gfn_t gfn = mfn_to_gfn(d, vcpu_info_mfn);
+                unsigned long gfn_l = gfn_x(gfn);
+                struct page_info *page;
+
+                if ( !(page = alloc_domheap_page(cd, 0)) )
+                    return -ENOMEM;
+
+                new_vcpu_info_mfn = page_to_mfn(page);
+                set_gpfn_from_mfn(mfn_x(new_vcpu_info_mfn), gfn_l);
+
+                ret = p2m->set_entry(p2m, gfn, new_vcpu_info_mfn,
+                                     PAGE_ORDER_4K, p2m_ram_rw,
+                                     p2m->default_access, -1);
+                if ( ret )
+                    return ret;
+
+                ret = map_vcpu_info(cd_vcpu, gfn_l,
+                                    PAGE_OFFSET(d_vcpu->vcpu_info));
+                if ( ret )
+                    return ret;
+            }
+
+            copy_domain_page(new_vcpu_info_mfn, vcpu_info_mfn);
+        }
+
+        /*
+         * TODO: to support VMs with PV interfaces copy additional
+         * settings here, such as PV timers.
+         */
+    }
+
+    return 0;
+}
+
+static int fork_hap_allocation(struct domain *cd, struct domain *d)
+{
+    int rc;
+    bool preempted;
+    unsigned long mb = hap_get_allocation(d);
+
+    if ( mb == hap_get_allocation(cd) )
+        return 0;
+
+    paging_lock(cd);
+    rc = hap_set_allocation(cd, mb << (20 - PAGE_SHIFT), &preempted);
+    paging_unlock(cd);
+
+    return preempted ? -ERESTART : rc;
+}
+
+static void copy_tsc(struct domain *cd, struct domain *d)
+{
+    uint32_t tsc_mode;
+    uint32_t gtsc_khz;
+    uint32_t incarnation;
+    uint64_t elapsed_nsec;
+
+    tsc_get_info(d, &tsc_mode, &elapsed_nsec, &gtsc_khz, &incarnation);
+    /* Don't bump incarnation on set */
+    tsc_set_info(cd, tsc_mode, elapsed_nsec, gtsc_khz, incarnation - 1);
+}
+
+static int copy_special_pages(struct domain *cd, struct domain *d)
+{
+    mfn_t new_mfn, old_mfn;
+    struct p2m_domain *p2m = p2m_get_hostp2m(cd);
+    static const unsigned int params[] =
+    {
+        HVM_PARAM_STORE_PFN,
+        HVM_PARAM_IOREQ_PFN,
+        HVM_PARAM_BUFIOREQ_PFN,
+        HVM_PARAM_CONSOLE_PFN
+    };
+    unsigned int i;
+    int rc;
+
+    for ( i = 0; i < ARRAY_SIZE(params); i++ )
+    {
+        p2m_type_t t;
+        uint64_t value = 0;
+        struct page_info *page;
+
+        if ( hvm_get_param(d, params[i], &value) || !value )
+            continue;
+
+        old_mfn = get_gfn_query_unlocked(d, value, &t);
+        new_mfn = get_gfn_query_unlocked(cd, value, &t);
+
+        /* Allocate the page and map it in if it's not present */
+        if ( mfn_eq(new_mfn, INVALID_MFN) )
+        {
+            if ( !(page = alloc_domheap_page(cd, 0)) )
+                return -ENOMEM;
+
+            new_mfn = page_to_mfn(page);
+            set_gpfn_from_mfn(mfn_x(new_mfn), value);
+
+            rc = p2m->set_entry(p2m, _gfn(value), new_mfn, PAGE_ORDER_4K,
+                                p2m_ram_rw, p2m->default_access, -1);
+            if ( rc )
+                return rc;
+        }
+
+        copy_domain_page(new_mfn, old_mfn);
+    }
+
+    old_mfn = _mfn(virt_to_mfn(d->shared_info));
+    new_mfn = _mfn(virt_to_mfn(cd->shared_info));
+    copy_domain_page(new_mfn, old_mfn);
+
+    return 0;
+}
+
+static int copy_settings(struct domain *cd, struct domain *d)
+{
+    int rc;
+
+    if ( (rc = copy_vcpu_settings(cd, d)) )
+        return rc;
+
+    if ( (rc = hvm_copy_context_and_params(cd, d)) )
+        return rc;
+
+    if ( (rc = copy_special_pages(cd, d)) )
+        return rc;
+
+    copy_tsc(cd, d);
+
+    return rc;
+}
+
+static int fork(struct domain *cd, struct domain *d)
+{
+    int rc = -EBUSY;
+
+    if ( !cd->controller_pause_count )
+        return rc;
+
+    if ( !cd->parent )
+    {
+        if ( !get_domain(d) )
+        {
+            ASSERT_UNREACHABLE();
+            return -EBUSY;
+        }
+
+        domain_pause(d);
+        cd->max_pages = d->max_pages;
+        cd->parent = d;
+    }
+
+    /* This is preemptible so it's the first to get done */
+    if ( (rc = fork_hap_allocation(cd, d)) )
+        goto done;
+
+    if ( (rc = bring_up_vcpus(cd, d)) )
+        goto done;
+
+    rc = copy_settings(cd, d);
+
+ done:
+    if ( rc && rc != -ERESTART )
+    {
+        domain_unpause(d);
+        put_domain(d);
+        cd->parent = NULL;
+    }
+
+    return rc;
+}
+
 int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
 {
     int rc;
@@ -1697,6 +2003,42 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         rc = debug_gref(d, mso.u.debug.u.gref);
         break;
 
+    case XENMEM_sharing_op_fork:
+    {
+        struct domain *pd;
+
+        rc = -EINVAL;
+        if ( mso.u.fork.pad[0] || mso.u.fork.pad[1] || mso.u.fork.pad[2] )
+            goto out;
+
+        rc = rcu_lock_live_remote_domain_by_id(mso.u.fork.parent_domain,
+                                               &pd);
+        if ( rc )
+            goto out;
+
+        rc = -EINVAL;
+        if ( pd->max_vcpus != d->max_vcpus )
+        {
+            rcu_unlock_domain(pd);
+            goto out;
+        }
+
+        if ( !mem_sharing_enabled(pd) && (rc = mem_sharing_control(pd, true)) )
+        {
+            rcu_unlock_domain(pd);
+            goto out;
+        }
+
+        rc = fork(d, pd);
+
+        if ( rc == -ERESTART )
+            rc = hypercall_create_continuation(__HYPERVISOR_memory_op,
+                                               "lh", XENMEM_sharing_op,
+                                               arg);
+        rcu_unlock_domain(pd);
+        break;
+    }
+
     default:
         rc = -ENOSYS;
         break;
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 3c052de606..b8727e267d 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -509,6 +509,12 @@ mfn_t __get_gfn_type_access(struct p2m_domain *p2m, unsigned long gfn_l,
 
     mfn = p2m->get_entry(p2m, gfn, t, a, q, page_order, NULL);
 
+    /* Check if we need to fork the page */
+    if ( (q & P2M_ALLOC) && p2m_is_hole(*t) &&
+         !mem_sharing_fork_page(p2m->domain, gfn, q & P2M_UNSHARE) )
+        mfn = p2m->get_entry(p2m, gfn, t, a, q, page_order, NULL);
+
+    /* Check if we need to unshare the page */
     if ( (q & P2M_UNSHARE) && p2m_is_shared(*t) )
     {
         ASSERT(p2m_is_hostp2m(p2m));
@@ -588,7 +594,8 @@ struct page_info *p2m_get_page_from_gfn(
             return page;
 
         /* Error path: not a suitable GFN at all */
-        if ( !p2m_is_ram(*t) && !p2m_is_paging(*t) && !p2m_is_pod(*t) )
+        if ( !p2m_is_ram(*t) && !p2m_is_paging(*t) && !p2m_is_pod(*t) &&
+             !mem_sharing_is_fork(p2m->domain) )
             return NULL;
     }
 
diff --git a/xen/include/asm-arm/page.h b/xen/include/asm-arm/page.h
index 37e1d9aadb..4ea8e97247 100644
--- a/xen/include/asm-arm/page.h
+++ b/xen/include/asm-arm/page.h
@@ -12,6 +12,7 @@
 #define PADDR_BITS              40
 #endif
 #define PADDR_MASK              ((1ULL << PADDR_BITS)-1)
+#define PAGE_OFFSET(ptr)        ((vaddr_t)(ptr) & ~PAGE_MASK)
 
 #define VADDR_BITS              32
 #define VADDR_MASK              (~0UL)
diff --git a/xen/include/asm-x86/hap.h b/xen/include/asm-x86/hap.h
index b94bfb4ed0..1bf07e49fe 100644
--- a/xen/include/asm-x86/hap.h
+++ b/xen/include/asm-x86/hap.h
@@ -45,6 +45,7 @@ int   hap_track_dirty_vram(struct domain *d,
 
 extern const struct paging_mode *hap_paging_get_mode(struct vcpu *);
 int hap_set_allocation(struct domain *d, unsigned int pages, bool *preempted);
+unsigned int hap_get_allocation(struct domain *d);
 
 #endif /* XEN_HAP_H */
 
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index b007b2e343..f283c7d187 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -336,6 +336,8 @@ unsigned long hvm_cr4_guest_valid_bits(const struct domain *d, bool restore);
 
 int hvm_copy_context_and_params(struct domain *src, struct domain *dst);
 
+int hvm_get_param(struct domain *d, uint32_t index, uint64_t *value);
+
 #ifdef CONFIG_HVM
 
 #define hvm_get_guest_tsc(v) hvm_get_guest_tsc_fixed(v, 0)
diff --git a/xen/include/asm-x86/mem_sharing.h b/xen/include/asm-x86/mem_sharing.h
index 53b7929d0e..cf7a12f4d2 100644
--- a/xen/include/asm-x86/mem_sharing.h
+++ b/xen/include/asm-x86/mem_sharing.h
@@ -77,6 +77,14 @@ static inline int mem_sharing_unshare_page(struct domain *d,
     return rc;
 }
 
+static inline bool mem_sharing_is_fork(const struct domain *d)
+{
+    return d->parent;
+}
+
+int mem_sharing_fork_page(struct domain *d, gfn_t gfn,
+                          bool unsharing);
+
 /*
  * If called by a foreign domain, possible errors are
  *   -EBUSY -> ring full
@@ -130,6 +138,16 @@ static inline int mem_sharing_notify_enomem(struct domain *d, unsigned long gfn,
     return -EOPNOTSUPP;
 }
 
+static inline bool mem_sharing_is_fork(const struct domain *d)
+{
+    return false;
+}
+
+static inline int mem_sharing_fork_page(struct domain *d, gfn_t gfn, bool lock)
+{
+    return -EOPNOTSUPP;
+}
+
 #endif
 
 #endif /* __MEM_SHARING_H__ */
diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h
index c98d8f5ede..eb73a0fc23 100644
--- a/xen/include/asm-x86/page.h
+++ b/xen/include/asm-x86/page.h
@@ -10,6 +10,7 @@
 #define PAGE_SIZE           (_AC(1,L) << PAGE_SHIFT)
 #define PAGE_MASK           (~(PAGE_SIZE-1))
 #define PAGE_FLAG_MASK      (~0)
+#define PAGE_OFFSET(ptr)    ((unsigned long)(ptr) & ~PAGE_MASK)
 
 #define PAGE_ORDER_4K       0
 #define PAGE_ORDER_2M       9
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index 126d0ff06e..5ee4e0da12 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -482,6 +482,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_mem_access_op_t);
 #define XENMEM_sharing_op_add_physmap       6
 #define XENMEM_sharing_op_audit             7
 #define XENMEM_sharing_op_range_share       8
+#define XENMEM_sharing_op_fork              9
 
 #define XENMEM_SHARING_OP_S_HANDLE_INVALID  (-10)
 #define XENMEM_SHARING_OP_C_HANDLE_INVALID  (-9)
@@ -532,6 +533,10 @@ struct xen_mem_sharing_op {
                 uint32_t gref;     /* IN: gref to debug         */
             } u;
         } debug;
+        struct mem_sharing_op_fork {      /* OP_FORK */
+            domid_t parent_domain;        /* IN: parent's domain id */
+            uint16_t pad[3];              /* Must be set to 0 */
+        } fork;
     } u;
 };
 typedef struct xen_mem_sharing_op xen_mem_sharing_op_t;
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 4b78291d51..195e7ee583 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -481,6 +481,7 @@ struct domain
     /* Memory sharing support */
 #ifdef CONFIG_MEM_SHARING
     struct vm_event_domain *vm_event_share;
+    struct domain *parent; /* VM fork parent */
 #endif
     /* Memory paging support */
 #ifdef CONFIG_HAS_MEM_PAGING
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:33:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwaq-00063Q-2h; Fri, 10 Apr 2020 16:33:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwao-00063E-Vq
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:23 +0000
X-Inumbo-ID: fe4f7c08-7b48-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fe4f7c08-7b48-11ea-83d8-bc764e2007e4;
 Fri, 10 Apr 2020 16:33:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=bsvO78QJLDD3D/nb6UnD2dHoBimnHv+V+Bw0UgFFg0M=; b=XZnZRwMEH0EZYOd3FKy2pACl9k
 uo0BFDmAh3rTA5Am86htkWYW32zHZ9lugbYG1oovygh/fWBiueBe2UmPGE4jejhNPR7+hBGj+LeBy
 LmpOkHQUI8EqByfK455U9FXXHV/qw15jEgMelaPzlKspYS2SekEjWGBzxMOSzX8Hx75E=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwao-0002bP-4S
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwao-0005wj-3K
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] mem_sharing: reset a fork
Message-Id: <E1jMwao-0005wj-3K@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:33:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c8dbdb32cef8e8ef796c925e91e347ea83735790
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Wed Apr 8 13:03:50 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 8 13:03:50 2020 +0200

    mem_sharing: reset a fork
    
    Implement hypercall that allows a fork to shed all memory that got allocated
    for it during its execution and re-load its vCPU context from the parent VM.
    This allows the forked VM to reset into the same state the parent VM is in a
    faster way then creating a new fork would be. Measurements show about a 2x
    speedup during normal fuzzing operations. Performance may vary depending how
    much memory got allocated for the forked VM. If it has been completely
    deduplicated from the parent VM then creating a new fork would likely be more
    performant.
    
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/mm/mem_sharing.c | 77 +++++++++++++++++++++++++++++++++++++++++++
 xen/include/public/memory.h   |  1 +
 2 files changed, 78 insertions(+)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 64cd706e5a..85951b7bea 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -1749,6 +1749,61 @@ static int fork(struct domain *cd, struct domain *d)
     return rc;
 }
 
+/*
+ * The fork reset operation is intended to be used on short-lived forks only.
+ * There is no hypercall continuation operation implemented for this reason.
+ * For forks that obtain a larger memory footprint it is likely going to be
+ * more performant to create a new fork instead of resetting an existing one.
+ *
+ * TODO: In case this hypercall would become useful on forks with larger memory
+ * footprints the hypercall continuation should be implemented (or if this
+ * feature needs to be become "stable").
+ */
+static int mem_sharing_fork_reset(struct domain *d, struct domain *pd)
+{
+    int rc;
+    struct p2m_domain *p2m = p2m_get_hostp2m(d);
+    struct page_info *page, *tmp;
+
+    domain_pause(d);
+
+    /* need recursive lock because we will free pages */
+    spin_lock_recursive(&d->page_alloc_lock);
+    page_list_for_each_safe(page, tmp, &d->page_list)
+    {
+        p2m_type_t p2mt;
+        p2m_access_t p2ma;
+        mfn_t mfn = page_to_mfn(page);
+        gfn_t gfn = mfn_to_gfn(d, mfn);
+
+        mfn = __get_gfn_type_access(p2m, gfn_x(gfn), &p2mt, &p2ma,
+                                    0, NULL, false);
+
+        /* only reset pages that are sharable */
+        if ( !p2m_is_sharable(p2mt) )
+            continue;
+
+        /* take an extra reference or just skip if can't for whatever reason */
+        if ( !get_page(page, d) )
+            continue;
+
+        /* forked memory is 4k, not splitting large pages so this must work */
+        rc = p2m->set_entry(p2m, gfn, INVALID_MFN, PAGE_ORDER_4K,
+                            p2m_invalid, p2m_access_rwx, -1);
+        ASSERT(!rc);
+
+        put_page_alloc_ref(page);
+        put_page(page);
+    }
+    spin_unlock_recursive(&d->page_alloc_lock);
+
+    rc = copy_settings(d, pd);
+
+    domain_unpause(d);
+
+    return rc;
+}
+
 int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
 {
     int rc;
@@ -2039,6 +2094,28 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         break;
     }
 
+    case XENMEM_sharing_op_fork_reset:
+    {
+        struct domain *pd;
+
+        rc = -EINVAL;
+        if ( mso.u.fork.pad[0] || mso.u.fork.pad[1] || mso.u.fork.pad[2] )
+            goto out;
+
+        rc = -ENOSYS;
+        if ( !d->parent )
+            goto out;
+
+        rc = rcu_lock_live_remote_domain_by_id(d->parent->domain_id, &pd);
+        if ( rc )
+            goto out;
+
+        rc = mem_sharing_fork_reset(d, pd);
+
+        rcu_unlock_domain(pd);
+        break;
+    }
+
     default:
         rc = -ENOSYS;
         break;
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index 5ee4e0da12..d36d64b8dc 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -483,6 +483,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_mem_access_op_t);
 #define XENMEM_sharing_op_audit             7
 #define XENMEM_sharing_op_range_share       8
 #define XENMEM_sharing_op_fork              9
+#define XENMEM_sharing_op_fork_reset        10
 
 #define XENMEM_SHARING_OP_S_HANDLE_INVALID  (-10)
 #define XENMEM_SHARING_OP_C_HANDLE_INVALID  (-9)
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:33:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:33:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwb0-000656-6o; Fri, 10 Apr 2020 16:33:34 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwaz-00064y-5Z
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:33 +0000
X-Inumbo-ID: 04508444-7b49-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 04508444-7b49-11ea-9e09-bc764e2007e4;
 Fri, 10 Apr 2020 16:33:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=W1DOmiP7p4UOIulXOfY5rhHyKwQ3/m9SnzrZ8ZYmJZM=; b=WJ/0WB8WIkbHynXUgGWuOQ04NO
 Y+6ZuFH0cfsZ+P7OMb5XomOHVsVnaNnItOOSfAgyOn1nYfeC28zE3dcwC3s5nu3EXQlj9NtyqnYvX
 EadkctbYke4CPfXYERsTCkMpuM+C4bLSwVvhvB0LOdaAsampD180i6LTy3oQKZDaF5rM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMway-0002c2-7E
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMway-0005xM-6G
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/HVM: __hvm_copy()'s size parameter is an unsigned
 quantity
Message-Id: <E1jMway-0005xM-6G@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:33:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d3ff3e48db4a59d1972bcdeb08cac22048d14b27
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 8 13:11:24 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 8 13:11:24 2020 +0200

    x86/HVM: __hvm_copy()'s size parameter is an unsigned quantity
    
    There are no negative sizes. Make the function's parameter as well as
    that of its derivates "unsigned int". Similarly make its local "count"
    variable "unsigned int", and drop "todo" altogether. Don't use min_t()
    anymore to calculate "count". Restrict its scope as well as that of
    other local variables of the function.
    
    While at it I've also noticed that {copy_{from,to},clear}_user_hvm()
    have been returning "unsigned long" for no apparent reason, as their
    respective "size" parameters have already been "unsigned int". Adjust
    this as well as a slightly wrong comment there at the same time.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <pdurrant@amzn.com>
---
 xen/arch/x86/hvm/hvm.c                 | 34 ++++++++++++++++------------------
 xen/include/asm-x86/hvm/guest_access.h |  6 +++---
 xen/include/asm-x86/hvm/support.h      |  8 ++++----
 3 files changed, 23 insertions(+), 25 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 304b3d1562..827c5fa89d 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -3227,15 +3227,10 @@ enum hvm_translation_result hvm_translate_get_page(
 #define HVMCOPY_phys       (0u<<2)
 #define HVMCOPY_linear     (1u<<2)
 static enum hvm_translation_result __hvm_copy(
-    void *buf, paddr_t addr, int size, struct vcpu *v, unsigned int flags,
+    void *buf, paddr_t addr, unsigned int size, struct vcpu *v, unsigned int flags,
     uint32_t pfec, pagefault_info_t *pfinfo)
 {
-    gfn_t gfn;
-    struct page_info *page;
-    p2m_type_t p2mt;
     char *p;
-    int count, todo = size;
-
     ASSERT(is_hvm_vcpu(v));
 
     /*
@@ -3254,12 +3249,14 @@ static enum hvm_translation_result __hvm_copy(
         return HVMTRANS_unhandleable;
 #endif
 
-    while ( todo > 0 )
+    while ( size > 0 )
     {
+        struct page_info *page;
+        gfn_t gfn;
+        p2m_type_t p2mt;
         enum hvm_translation_result res;
         unsigned int pgoff = addr & ~PAGE_MASK;
-
-        count = min_t(int, PAGE_SIZE - pgoff, todo);
+        unsigned int count = min((unsigned int)PAGE_SIZE - pgoff, size);
 
         res = hvm_translate_get_page(v, addr, flags & HVMCOPY_linear,
                                      pfec, pfinfo, &page, &gfn, &p2mt);
@@ -3313,7 +3310,7 @@ static enum hvm_translation_result __hvm_copy(
         addr += count;
         if ( buf )
             buf += count;
-        todo -= count;
+        size -= count;
         put_page(page);
     }
 
@@ -3321,21 +3318,21 @@ static enum hvm_translation_result __hvm_copy(
 }
 
 enum hvm_translation_result hvm_copy_to_guest_phys(
-    paddr_t paddr, void *buf, int size, struct vcpu *v)
+    paddr_t paddr, void *buf, unsigned int size, struct vcpu *v)
 {
     return __hvm_copy(buf, paddr, size, v,
                       HVMCOPY_to_guest | HVMCOPY_phys, 0, NULL);
 }
 
 enum hvm_translation_result hvm_copy_from_guest_phys(
-    void *buf, paddr_t paddr, int size)
+    void *buf, paddr_t paddr, unsigned int size)
 {
     return __hvm_copy(buf, paddr, size, current,
                       HVMCOPY_from_guest | HVMCOPY_phys, 0, NULL);
 }
 
 enum hvm_translation_result hvm_copy_to_guest_linear(
-    unsigned long addr, void *buf, int size, uint32_t pfec,
+    unsigned long addr, void *buf, unsigned int size, uint32_t pfec,
     pagefault_info_t *pfinfo)
 {
     return __hvm_copy(buf, addr, size, current,
@@ -3344,7 +3341,7 @@ enum hvm_translation_result hvm_copy_to_guest_linear(
 }
 
 enum hvm_translation_result hvm_copy_from_guest_linear(
-    void *buf, unsigned long addr, int size, uint32_t pfec,
+    void *buf, unsigned long addr, unsigned int size, uint32_t pfec,
     pagefault_info_t *pfinfo)
 {
     return __hvm_copy(buf, addr, size, current,
@@ -3352,7 +3349,7 @@ enum hvm_translation_result hvm_copy_from_guest_linear(
                       PFEC_page_present | pfec, pfinfo);
 }
 
-unsigned long copy_to_user_hvm(void *to, const void *from, unsigned int len)
+unsigned int copy_to_user_hvm(void *to, const void *from, unsigned int len)
 {
     int rc;
 
@@ -3366,7 +3363,7 @@ unsigned long copy_to_user_hvm(void *to, const void *from, unsigned int len)
     return rc ? len : 0; /* fake a copy_to_user() return code */
 }
 
-unsigned long clear_user_hvm(void *to, unsigned int len)
+unsigned int clear_user_hvm(void *to, unsigned int len)
 {
     int rc;
 
@@ -3377,10 +3374,11 @@ unsigned long clear_user_hvm(void *to, unsigned int len)
     }
 
     rc = hvm_copy_to_guest_linear((unsigned long)to, NULL, len, 0, NULL);
-    return rc ? len : 0; /* fake a copy_to_user() return code */
+
+    return rc ? len : 0; /* fake a clear_user() return code */
 }
 
-unsigned long copy_from_user_hvm(void *to, const void *from, unsigned len)
+unsigned int copy_from_user_hvm(void *to, const void *from, unsigned int len)
 {
     int rc;
 
diff --git a/xen/include/asm-x86/hvm/guest_access.h b/xen/include/asm-x86/hvm/guest_access.h
index b92dbe90d5..edacba75db 100644
--- a/xen/include/asm-x86/hvm/guest_access.h
+++ b/xen/include/asm-x86/hvm/guest_access.h
@@ -1,8 +1,8 @@
 #ifndef __ASM_X86_HVM_GUEST_ACCESS_H__
 #define __ASM_X86_HVM_GUEST_ACCESS_H__
 
-unsigned long copy_to_user_hvm(void *to, const void *from, unsigned len);
-unsigned long clear_user_hvm(void *to, unsigned int len);
-unsigned long copy_from_user_hvm(void *to, const void *from, unsigned len);
+unsigned int copy_to_user_hvm(void *to, const void *from, unsigned int len);
+unsigned int clear_user_hvm(void *to, unsigned int len);
+unsigned int copy_from_user_hvm(void *to, const void *from, unsigned int len);
 
 #endif /* __ASM_X86_HVM_GUEST_ACCESS_H__ */
diff --git a/xen/include/asm-x86/hvm/support.h b/xen/include/asm-x86/hvm/support.h
index 1500e6c94b..e161907dfa 100644
--- a/xen/include/asm-x86/hvm/support.h
+++ b/xen/include/asm-x86/hvm/support.h
@@ -70,9 +70,9 @@ enum hvm_translation_result {
  * address range does not map entirely onto ordinary machine memory.
  */
 enum hvm_translation_result hvm_copy_to_guest_phys(
-    paddr_t paddr, void *buf, int size, struct vcpu *v);
+    paddr_t paddr, void *buf, unsigned int size, struct vcpu *v);
 enum hvm_translation_result hvm_copy_from_guest_phys(
-    void *buf, paddr_t paddr, int size);
+    void *buf, paddr_t paddr, unsigned int size);
 
 /*
  * Copy to/from a guest linear address. @pfec should include PFEC_user_mode
@@ -96,10 +96,10 @@ typedef struct pagefault_info
 } pagefault_info_t;
 
 enum hvm_translation_result hvm_copy_to_guest_linear(
-    unsigned long addr, void *buf, int size, uint32_t pfec,
+    unsigned long addr, void *buf, unsigned int size, uint32_t pfec,
     pagefault_info_t *pfinfo);
 enum hvm_translation_result hvm_copy_from_guest_linear(
-    void *buf, unsigned long addr, int size, uint32_t pfec,
+    void *buf, unsigned long addr, unsigned int size, uint32_t pfec,
     pagefault_info_t *pfinfo);
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:33:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:33:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwbA-00066l-8c; Fri, 10 Apr 2020 16:33:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwb9-00065y-1m
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:43 +0000
X-Inumbo-ID: 0a52a8a4-7b49-11ea-845a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0a52a8a4-7b49-11ea-845a-12813bfff9fa;
 Fri, 10 Apr 2020 16:33:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=YKnqXPPIAaoOWK23iUG5u+gcEJfjtHuqMh2pUMcuoK0=; b=3JMoTzdi1z0kTqNLwgKR6K1p98
 +SQodS2HLcMgGuaWOpX3h/XMLBbnXKhvNRCT0AtCy71jADImmmzMDnlvrVZmDzTFkSljPDMixlk7/
 /WtZ2zKaxNsjtttuVAte/tF9RXgHoRe0srV7JWhs1PpIxeqkDAxpbbWvVQJbNWzEA56w=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwb8-0002cE-A4
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwb8-0005y4-92
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/PoD: correct ordering of checks in
 p2m_pod_zero_check()
Message-Id: <E1jMwb8-0005y4-92@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:33:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9be0b2747bc7381c684cfbdd3fa2e40badefbeef
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 8 13:12:28 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 8 13:12:28 2020 +0200

    x86/PoD: correct ordering of checks in p2m_pod_zero_check()
    
    Commit 0537d246f8db ("mm: add 'is_special_page' inline function...")
    moved the is_special_page() checks first in its respective changes to
    PoD code. While this is fine for p2m_pod_zero_check_superpage(), the
    validity of the MFN is inferred in both cases from the p2m_is_ram()
    check, which therefore also needs to come first in this 2nd instance.
    
    Take the opportunity and address latent UB here as well - transform
    the MFN into struct page_info * only after having established that
    this is a valid page.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/arch/x86/mm/p2m-pod.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
index 36bc471e7f..48e609d1ed 100644
--- a/xen/arch/x86/mm/p2m-pod.c
+++ b/xen/arch/x86/mm/p2m-pod.c
@@ -877,23 +877,25 @@ p2m_pod_zero_check(struct p2m_domain *p2m, const gfn_t *gfns, unsigned int count
     for ( i = 0; i < count; i++ )
     {
         p2m_access_t a;
-        struct page_info *pg;
 
         mfns[i] = p2m->get_entry(p2m, gfns[i], types + i, &a,
                                  0, NULL, NULL);
-        pg = mfn_to_page(mfns[i]);
 
         /*
          * If this is ram, and not a pagetable or a special page, and
          * probably not mapped elsewhere, map it; otherwise, skip.
          */
-        if ( !is_special_page(pg) && p2m_is_ram(types[i]) &&
-             (pg->count_info & PGC_allocated) &&
-             !(pg->count_info & PGC_page_table) &&
-             ((pg->count_info & PGC_count_mask) <= max_ref) )
-            map[i] = map_domain_page(mfns[i]);
-        else
-            map[i] = NULL;
+        map[i] = NULL;
+        if ( p2m_is_ram(types[i]) )
+        {
+            const struct page_info *pg = mfn_to_page(mfns[i]);
+
+            if ( !is_special_page(pg) &&
+                 (pg->count_info & PGC_allocated) &&
+                 !(pg->count_info & PGC_page_table) &&
+                 ((pg->count_info & PGC_count_mask) <= max_ref) )
+                map[i] = map_domain_page(mfns[i]);
+        }
     }
 
     /*
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:33:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:33:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwbN-000681-AL; Fri, 10 Apr 2020 16:33:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwbM-00067u-Eg
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:56 +0000
X-Inumbo-ID: 120bfa8c-7b49-11ea-845a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 120bfa8c-7b49-11ea-845a-12813bfff9fa;
 Fri, 10 Apr 2020 16:33:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HKHdNemTu4aWIipVbwacYC10zpTjU1pXxSEm2jV29KU=; b=VnD9WsAYOLErq5sShsiCfmeZhb
 sL8QQO6jLcTTGMLcA2ysDaBCoL7ZQvahaBa+CUopyhkHZK1GUBc9TMCTqx6NxlJ/0S4Bdj/5KPbtf
 cjfrnq+ZnuKLplWldBoujwZE1Q353PGenggDMFyoqU+Wgwf3OnR+DsBbiJRmf67dCzEY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbL-0002cS-89
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbL-000671-7C
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:33:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen/arm: Handle unimplemented VGICv3 registers as
 RAZ/WI
Message-Id: <E1jMwbL-000671-7C@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:33:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 436c54e1d2b3900aa3bb25ed872d3f83d4691962
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Feb 4 14:51:50 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:28:38 2020 -0700

    xen/arm: Handle unimplemented VGICv3 registers as RAZ/WI
    
    Per the ARM Generic Interrupt Controller Architecture Specification (ARM
    IHI 0069E), reserved registers should generally be treated as RAZ/WI.
    To simplify the VGICv3 design and improve guest compatibility, treat the
    default case for GICD and GICR registers as read_as_zero/write_ignore.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit 69da7d5440c609c57c5bba9a73b91c62ba2852e6)
---
 xen/arch/arm/vgic-v3.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 422b94f902..4e60ba15cc 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -320,7 +320,7 @@ static int __vgic_v3_rdistr_rd_mmio_read(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto read_as_zero;
     }
 bad_width:
     printk(XENLOG_G_ERR "%pv vGICR: bad read width %d r%d offset %#08x\n",
@@ -337,6 +337,10 @@ read_as_zero_32:
     *r = 0;
     return 1;
 
+read_as_zero:
+    *r = 0;
+    return 1;
+
 read_impl_defined:
     printk(XENLOG_G_DEBUG
            "%pv: vGICR: RAZ on implementation defined register offset %#08x\n",
@@ -638,7 +642,7 @@ static int __vgic_v3_rdistr_rd_mmio_write(struct vcpu *v, mmio_info_t *info,
     default:
         printk(XENLOG_G_ERR "%pv: vGICR: unhandled write r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto write_ignore;
     }
 bad_width:
     printk(XENLOG_G_ERR
@@ -654,6 +658,9 @@ write_ignore_32:
     if ( dabt.size != DABT_WORD ) goto bad_width;
     return 1;
 
+write_ignore:
+    return 1;
+
 write_impl_defined:
     printk(XENLOG_G_DEBUG
            "%pv: vGICR: WI on implementation defined register offset %#08x\n",
@@ -925,7 +932,7 @@ static int vgic_v3_rdistr_sgi_mmio_read(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: SGI: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto read_as_zero;
     }
 bad_width:
     printk(XENLOG_G_ERR "%pv: vGICR: SGI: bad read width %d r%d offset %#08x\n",
@@ -1002,7 +1009,7 @@ static int vgic_v3_rdistr_sgi_mmio_write(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: SGI: unhandled write r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto write_ignore;
     }
 
 bad_width:
@@ -1014,6 +1021,9 @@ bad_width:
 write_ignore_32:
     if ( dabt.size != DABT_WORD ) goto bad_width;
     return 1;
+
+write_ignore:
+    return 1;
 }
 
 static struct vcpu *get_vcpu_from_rdist(struct domain *d,
@@ -1252,7 +1262,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mmio_info_t *info,
     default:
         printk(XENLOG_G_ERR "%pv: vGICD: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicd_reg);
-        return 0;
+        goto read_as_zero;
     }
 
 bad_width:
@@ -1438,7 +1448,7 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICD: unhandled write r%d=%"PRIregister" offset %#08x\n",
                v, dabt.reg, r, gicd_reg);
-        return 0;
+        goto write_ignore;
     }
 
 bad_width:
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:34:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:34:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwbX-00068r-CH; Fri, 10 Apr 2020 16:34:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwbW-00068h-11
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:06 +0000
X-Inumbo-ID: 180aa802-7b49-11ea-845a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 180aa802-7b49-11ea-845a-12813bfff9fa;
 Fri, 10 Apr 2020 16:34:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0iq11FWhIxLl8EdQGjiuEO5tAjJVrtLZTJupKMshQLc=; b=uf07OAjhGssapdPzeSX0BBrUnr
 8clKJKymCtcbHLqdSqi40O19e6ePn2VvJYev4k+s16XwzvstHfWiH2pgptqpsTf71PYoQDzWcfp1U
 nq3ZdZzZ+yWOWBBPatgcorhL7t42gZ/w0JDLy9b5T6Cil4bvalrEDNe3rroZO+aTd3bA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbV-0002cs-Aa
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbV-00067h-9j
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen/arm: initialize vpl011 flag register
Message-Id: <E1jMwbV-00067h-9j@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:34:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c0dad816c6de702ddbe87908a9e5ab12f83c397f
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Mon Nov 25 15:58:00 2019 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:29:25 2020 -0700

    xen/arm: initialize vpl011 flag register
    
    The tx/rx fifo flags were not set when the vpl011 is initialized. This
    is a problem for certain guests that are operating in polled mode, as a
    guest will generally check the rx fifo empty flag to determine if there
    is data before doing a read. The result is a continuous spam of the
    message "vpl011: Unexpected IN ring buffer empty" before the first valid
    character is received. This initializes the flag status register to the
    default specified in the PL011 technical reference manual.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit b4637ed6cd5375f04ac51d6b900a9ccad6c6c03a)
---
 xen/arch/arm/vpl011.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c
index 7bc5eeb207..895f436cc4 100644
--- a/xen/arch/arm/vpl011.c
+++ b/xen/arch/arm/vpl011.c
@@ -668,6 +668,8 @@ int domain_vpl011_init(struct domain *d, struct vpl011_init_info *info)
         goto out2;
     }
 
+    vpl011->uartfr = TXFE | RXFE;
+
     spin_lock_init(&vpl011->lock);
 
     register_mmio_handler(d, &vpl011_mmio_handler,
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:34:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:34:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwbh-0006A0-EF; Fri, 10 Apr 2020 16:34:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwbg-00069r-3A
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:16 +0000
X-Inumbo-ID: 1e0c4fb2-7b49-11ea-845a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1e0c4fb2-7b49-11ea-845a-12813bfff9fa;
 Fri, 10 Apr 2020 16:34:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5lgWY37T88a6kSm0SI0sFA5wyA+AcIeiBsXQBQnfQGc=; b=jgISKn4rWeaHFq7aPbDt+NVVuZ
 qVbMl1lq83GAj89x71YnMcJQAijTJR3aOKUH2gaLxW+mTjk7/1aeu+qo5XsYs8Fq5GkPsynMAdPZu
 vwgIhlHe8UDdhH+Rq+FRuhDCZJ7MV1HZw6gyNw+WasY1dpr64sjO2mML+9cXMWLBQREo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbf-0002d3-D4
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbf-00068j-CD
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen/arm: during efi boot,
 improve the check for usable memory
Message-Id: <E1jMwbf-00068j-CD@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:34:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2e05b8ac6b505ac1f80cc73ff0faedfaf5636503
Author:     Stefano Stabellini <sstabellini@kernel.org>
AuthorDate: Tue Jan 14 15:31:55 2020 -0800
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:29:37 2020 -0700

    xen/arm: during efi boot, improve the check for usable memory
    
    When booting via EFI, the EFI memory map has information about memory
    regions and their type. Improve the check for the type and attribute of
    each memory region to figure out whether it is usable memory or not.
    This patch brings the check on par with Linux v5.5-rc6 and makes more
    memory reusable as normal memory by Xen (except that Linux also reuses
    EFI_PERSISTENT_MEMORY, which we do not).
    
    Specifically, this patch also reuses memory marked as
    EfiLoaderCode/Data, and it uses both Attribute and Type for the check
    (Attribute needs to be EFI_MEMORY_WB).
    
    Reported-by: Roman Shaposhnik <roman@zededa.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit b31666c8912bf18d9eff963b06d856e7e818ff34)
---
 xen/arch/arm/efi/efi-boot.h | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
index ca655ff003..3c0772d3f2 100644
--- a/xen/arch/arm/efi/efi-boot.h
+++ b/xen/arch/arm/efi/efi-boot.h
@@ -149,10 +149,13 @@ static EFI_STATUS __init efi_process_memory_map_bootinfo(EFI_MEMORY_DESCRIPTOR *
 
     for ( Index = 0; Index < (mmap_size / desc_size); Index++ )
     {
-        if ( desc_ptr->Type == EfiConventionalMemory ||
-             (!map_bs &&
-              (desc_ptr->Type == EfiBootServicesCode ||
-               desc_ptr->Type == EfiBootServicesData)) )
+        if ( desc_ptr->Attribute & EFI_MEMORY_WB &&
+             (desc_ptr->Type == EfiConventionalMemory ||
+              desc_ptr->Type == EfiLoaderCode ||
+              desc_ptr->Type == EfiLoaderData ||
+              (!map_bs &&
+               (desc_ptr->Type == EfiBootServicesCode ||
+                desc_ptr->Type == EfiBootServicesData))) )
         {
             if ( !meminfo_add_bank(&bootinfo.mem, desc_ptr) )
             {
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:34:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:34:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwbr-0006B9-IB; Fri, 10 Apr 2020 16:34:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwbq-0006B1-8k
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:26 +0000
X-Inumbo-ID: 240d8142-7b49-11ea-845a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 240d8142-7b49-11ea-845a-12813bfff9fa;
 Fri, 10 Apr 2020 16:34:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xAtPo3UXlgVsCsPh/YV6SlRJe7oTDY+B6xkvjpPYWDs=; b=wnP4GK01+x45OF5VUDRtTN5DLD
 HHzUlXXMmPXoEoghJQMRr+tp59xM+R3hp9g0qEEfbkDqlfq13tG6EGvwrgjl7zmkeeoIsYcLYKlCG
 d7jx1NmaOOBsSeYtAVMwOJ41HuvfK5rZFmrWZOjKqosPl17WlLfrqrhNzsisBS/OT55c=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbp-0002dr-FZ
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbp-0006Aw-Ee
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen/arm: remove physical timer offset
Message-Id: <E1jMwbp-0006Aw-Ee@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:34:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 460003ef280478e74915c61be159c1a1bdf80806
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Jan 21 10:07:03 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:29:51 2020 -0700

    xen/arm: remove physical timer offset
    
    The physical timer traps apply an offset so that time starts at 0 for
    the guest. However, this offset is not currently applied to the physical
    counter. Per the ARMv8 Reference Manual (ARM DDI 0487E.a), section
    D11.2.4 Timers, the "Offset" between the counter and timer should be
    zero for a physical timer. This removes the offset to make the timer and
    counter consistent.
    
    This also cleans up the physical timer implementation to better match
    the virtual timer - both cval's now hold the hardware value.
    
    In the case the guest sets cval to a time before Xen started, the correct
    behavior is to expire the timer immediately. To do this, we set the expires
    argument of set_timer to zero.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit f14f55b7ee295277c8dd09e37e0fa0902ccf7eb4)
---
 xen/arch/arm/vtimer.c        | 46 +++++++++++++++++++++++++++++---------------
 xen/include/asm-arm/domain.h |  3 ---
 2 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index e6aebdac9e..bb8ad4ef27 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -62,7 +62,6 @@ static void virt_timer_expired(void *data)
 
 int domain_vtimer_init(struct domain *d, struct xen_arch_domainconfig *config)
 {
-    d->arch.phys_timer_base.offset = NOW();
     d->arch.virt_timer_base.offset = READ_SYSREG64(CNTPCT_EL0);
     d->time_offset_seconds = ticks_to_ns(d->arch.virt_timer_base.offset - boot_count);
     do_div(d->time_offset_seconds, 1000000000);
@@ -108,7 +107,6 @@ int vcpu_vtimer_init(struct vcpu *v)
 
     init_timer(&t->timer, phys_timer_expired, t, v->processor);
     t->ctl = 0;
-    t->cval = NOW();
     t->irq = d0
         ? timer_get_irq(TIMER_PHYS_NONSECURE_PPI)
         : GUEST_TIMER_PHYS_NS_PPI;
@@ -167,6 +165,7 @@ void virt_timer_restore(struct vcpu *v)
 static bool vtimer_cntp_ctl(struct cpu_user_regs *regs, uint32_t *r, bool read)
 {
     struct vcpu *v = current;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
@@ -184,8 +183,13 @@ static bool vtimer_cntp_ctl(struct cpu_user_regs *regs, uint32_t *r, bool read)
 
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval + v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
         else
             stop_timer(&v->arch.phys_timer.timer);
@@ -197,26 +201,31 @@ static bool vtimer_cntp_tval(struct cpu_user_regs *regs, uint32_t *r,
                              bool read)
 {
     struct vcpu *v = current;
-    s_time_t now;
+    uint64_t cntpct;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
 
-    now = NOW() - v->domain->arch.phys_timer_base.offset;
+    cntpct = get_cycles();
 
     if ( read )
     {
-        *r = (uint32_t)(ns_to_ticks(v->arch.phys_timer.cval - now) & 0xffffffffull);
+        *r = (uint32_t)((v->arch.phys_timer.cval - cntpct) & 0xffffffffull);
     }
     else
     {
-        v->arch.phys_timer.cval = now + ticks_to_ns(*r);
+        v->arch.phys_timer.cval = cntpct + *r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval +
-                      v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
     }
     return true;
@@ -226,23 +235,28 @@ static bool vtimer_cntp_cval(struct cpu_user_regs *regs, uint64_t *r,
                              bool read)
 {
     struct vcpu *v = current;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
 
     if ( read )
     {
-        *r = ns_to_ticks(v->arch.phys_timer.cval);
+        *r = v->arch.phys_timer.cval;
     }
     else
     {
-        v->arch.phys_timer.cval = ticks_to_ns(*r);
+        v->arch.phys_timer.cval = *r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval +
-                      v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
     }
     return true;
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index 86ebdd2bcf..16a7150a95 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -67,9 +67,6 @@ struct arch_domain
 
     struct {
         uint64_t offset;
-    } phys_timer_base;
-    struct {
-        uint64_t offset;
     } virt_timer_base;
 
     struct vgic_dist vgic;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:34:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:34:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwc1-0006CF-K3; Fri, 10 Apr 2020 16:34:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwc0-0006C7-7T
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:36 +0000
X-Inumbo-ID: 2a1027fc-7b49-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2a1027fc-7b49-11ea-9e09-bc764e2007e4;
 Fri, 10 Apr 2020 16:34:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2YMlR0Gg2naPYnaWSbp/mvpkBuMnzUwjo7/nx/KWRmA=; b=LKqYE8nUmchX6V5EXoK0wVAPdo
 B1BdiaxbTV783SYUS4KqTa2KyLZpKIPsimjnAhP5bXKbPjvi8DrKFkY1kGMX57Qe+19LcJpsVDaD9
 syz9GXVyOpCSydp5SBE3oPxKMIb8W61WEZkBDuVQqkO9gIQKuLGZIPgEuc+KDVzSeS84=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbz-0002e0-IK
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwbz-0006C0-H8
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:34:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen/arm: Sign extend TimerValue when computing the
 CompareValue
Message-Id: <E1jMwbz-0006C0-H8@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:34:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 736da59cbe2752502ad863b6e71eb83352e22276
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Jan 21 10:07:04 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:30:02 2020 -0700

    xen/arm: Sign extend TimerValue when computing the CompareValue
    
    Xen will only store the CompareValue as it can be derived from the
    TimerValue (ARM DDI 0487E.a section D11.2.4):
    
      CompareValue = (Counter[63:0] + SignExtend(TimerValue))[63:0]
    
    While the TimerValue is a 32-bit signed value, our implementation
    assumed it is a 32-bit unsigned value.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit 3c601c5f056fba055b7a1438b84b69fc649275c3)
---
 xen/arch/arm/vtimer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index bb8ad4ef27..a80009882f 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -215,7 +215,7 @@ static bool vtimer_cntp_tval(struct cpu_user_regs *regs, uint32_t *r,
     }
     else
     {
-        v->arch.phys_timer.cval = cntpct + *r;
+        v->arch.phys_timer.cval = cntpct + (uint64_t)(int32_t)*r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:44:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:44:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwlB-0007BG-Tc; Fri, 10 Apr 2020 16:44:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwlB-0007BB-7U
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:05 +0000
X-Inumbo-ID: 7d0c4dd6-7b4a-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7d0c4dd6-7b4a-11ea-9e09-bc764e2007e4;
 Fri, 10 Apr 2020 16:44:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nRsT4vUh9WtDaZo0Kw+YurZTci/WV15StzKZE6nWua4=; b=4ZPuwK/YFIQl5Ixks5GYW7E9Eu
 U/LrJf2VGsNyKJ1A+otASbfSX+676WEcXujTlSm26EkkmrElY4XFVuYnv2SsDa93cwg9OxH/S/EPx
 t42FyDoahsod/842e1y82fj7ZplhLg6kp4zqv9HvUUL0L5qXa1pp9LcohCCDRK0XlomM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwlA-0002pJ-7C
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwlA-0006zu-62
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xen/arm: Handle unimplemented VGICv3 registers as
 RAZ/WI
Message-Id: <E1jMwlA-0006zu-62@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:44:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 752558e68eef32f74fc11c51fcac10d3147f928b
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Feb 4 14:51:50 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:33:53 2020 -0700

    xen/arm: Handle unimplemented VGICv3 registers as RAZ/WI
    
    Per the ARM Generic Interrupt Controller Architecture Specification (ARM
    IHI 0069E), reserved registers should generally be treated as RAZ/WI.
    To simplify the VGICv3 design and improve guest compatibility, treat the
    default case for GICD and GICR registers as read_as_zero/write_ignore.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit 69da7d5440c609c57c5bba9a73b91c62ba2852e6)
---
 xen/arch/arm/vgic-v3.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 474be134c1..6195565fa0 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -320,7 +320,7 @@ static int __vgic_v3_rdistr_rd_mmio_read(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto read_as_zero;
     }
 bad_width:
     printk(XENLOG_G_ERR "%pv vGICR: bad read width %d r%d offset %#08x\n",
@@ -337,6 +337,10 @@ read_as_zero_32:
     *r = 0;
     return 1;
 
+read_as_zero:
+    *r = 0;
+    return 1;
+
 read_impl_defined:
     printk(XENLOG_G_DEBUG
            "%pv: vGICR: RAZ on implementation defined register offset %#08x\n",
@@ -638,7 +642,7 @@ static int __vgic_v3_rdistr_rd_mmio_write(struct vcpu *v, mmio_info_t *info,
     default:
         printk(XENLOG_G_ERR "%pv: vGICR: unhandled write r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto write_ignore;
     }
 bad_width:
     printk(XENLOG_G_ERR
@@ -654,6 +658,9 @@ write_ignore_32:
     if ( dabt.size != DABT_WORD ) goto bad_width;
     return 1;
 
+write_ignore:
+    return 1;
+
 write_impl_defined:
     printk(XENLOG_G_DEBUG
            "%pv: vGICR: WI on implementation defined register offset %#08x\n",
@@ -925,7 +932,7 @@ static int vgic_v3_rdistr_sgi_mmio_read(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: SGI: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto read_as_zero;
     }
 bad_width:
     printk(XENLOG_G_ERR "%pv: vGICR: SGI: bad read width %d r%d offset %#08x\n",
@@ -1002,7 +1009,7 @@ static int vgic_v3_rdistr_sgi_mmio_write(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: SGI: unhandled write r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto write_ignore;
     }
 
 bad_width:
@@ -1014,6 +1021,9 @@ bad_width:
 write_ignore_32:
     if ( dabt.size != DABT_WORD ) goto bad_width;
     return 1;
+
+write_ignore:
+    return 1;
 }
 
 static struct vcpu *get_vcpu_from_rdist(struct domain *d,
@@ -1252,7 +1262,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mmio_info_t *info,
     default:
         printk(XENLOG_G_ERR "%pv: vGICD: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicd_reg);
-        return 0;
+        goto read_as_zero;
     }
 
 bad_width:
@@ -1438,7 +1448,7 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICD: unhandled write r%d=%"PRIregister" offset %#08x\n",
                v, dabt.reg, r, gicd_reg);
-        return 0;
+        goto write_ignore;
     }
 
 bad_width:
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:44:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwlL-0007Bx-VI; Fri, 10 Apr 2020 16:44:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwlL-0007Bq-48
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:15 +0000
X-Inumbo-ID: 830675e0-7b4a-11ea-845b-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 830675e0-7b4a-11ea-845b-12813bfff9fa;
 Fri, 10 Apr 2020 16:44:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HA5t6GQp5pLP561ZFgDafYnsOJuDlp5c6xWpiQJei3c=; b=TxqSVBZl6F56dpUhWCEynyufeP
 /K/gbngvUglvfqo6mHxl6/t0fY/3sWJwgg0lJIt5EJoIB5dvKoJa2WkPvoO5Ye0MPVm7gvJyMA1vU
 FRKRkVXvau/yirYHncWYv4vCAqq+K3/KPCSFXnDd6NkvOUupiGZFWpRY7O0QUxqu3hFA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwlK-0002pQ-A7
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwlK-00070U-93
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xen/arm: initialize vpl011 flag register
Message-Id: <E1jMwlK-00070U-93@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:44:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 36f810b33f46c41331eb13402de5e224cc5aa291
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Mon Nov 25 15:58:00 2019 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:33:59 2020 -0700

    xen/arm: initialize vpl011 flag register
    
    The tx/rx fifo flags were not set when the vpl011 is initialized. This
    is a problem for certain guests that are operating in polled mode, as a
    guest will generally check the rx fifo empty flag to determine if there
    is data before doing a read. The result is a continuous spam of the
    message "vpl011: Unexpected IN ring buffer empty" before the first valid
    character is received. This initializes the flag status register to the
    default specified in the PL011 technical reference manual.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit b4637ed6cd5375f04ac51d6b900a9ccad6c6c03a)
---
 xen/arch/arm/vpl011.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c
index 7bc5eeb207..895f436cc4 100644
--- a/xen/arch/arm/vpl011.c
+++ b/xen/arch/arm/vpl011.c
@@ -668,6 +668,8 @@ int domain_vpl011_init(struct domain *d, struct vpl011_init_info *info)
         goto out2;
     }
 
+    vpl011->uartfr = TXFE | RXFE;
+
     spin_lock_init(&vpl011->lock);
 
     register_mmio_handler(d, &vpl011_mmio_handler,
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:44:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:44:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwlW-0007D6-0x; Fri, 10 Apr 2020 16:44:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwlV-0007Cy-5b
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:25 +0000
X-Inumbo-ID: 88c30a67-7b4a-11ea-845b-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 88c30a67-7b4a-11ea-845b-12813bfff9fa;
 Fri, 10 Apr 2020 16:44:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=elfY4kmCeHMG0MISk1+LPdjHCh9lcBuMaQQQ4iDCa/4=; b=hC+tDzfCuWKEBCdRhLZYKFNRj7
 aOhy1ukW5cM8gVOvKWvN4u9Ft5g1DZlzR0a5Z24QJRUwMTKibgOerDtTgI8MybWEUOa5+WQXwY6JR
 Pp8xDvmtygizUDWQR02mOSrLkDUrXOUNabHDMpzIg40qV/zcMaIqXUN11s2UqS9IPfHU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwlU-0002qE-F2
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwlU-000726-Br
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xen/arm: during efi boot,
 improve the check for usable memory
Message-Id: <E1jMwlU-000726-Br@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:44:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 524e739a49f5a62f2bfc8248b44ea4ec9f9d81f9
Author:     Stefano Stabellini <sstabellini@kernel.org>
AuthorDate: Tue Jan 14 15:31:55 2020 -0800
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:34:05 2020 -0700

    xen/arm: during efi boot, improve the check for usable memory
    
    When booting via EFI, the EFI memory map has information about memory
    regions and their type. Improve the check for the type and attribute of
    each memory region to figure out whether it is usable memory or not.
    This patch brings the check on par with Linux v5.5-rc6 and makes more
    memory reusable as normal memory by Xen (except that Linux also reuses
    EFI_PERSISTENT_MEMORY, which we do not).
    
    Specifically, this patch also reuses memory marked as
    EfiLoaderCode/Data, and it uses both Attribute and Type for the check
    (Attribute needs to be EFI_MEMORY_WB).
    
    Reported-by: Roman Shaposhnik <roman@zededa.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit b31666c8912bf18d9eff963b06d856e7e818ff34)
---
 xen/arch/arm/efi/efi-boot.h | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
index ca655ff003..3c0772d3f2 100644
--- a/xen/arch/arm/efi/efi-boot.h
+++ b/xen/arch/arm/efi/efi-boot.h
@@ -149,10 +149,13 @@ static EFI_STATUS __init efi_process_memory_map_bootinfo(EFI_MEMORY_DESCRIPTOR *
 
     for ( Index = 0; Index < (mmap_size / desc_size); Index++ )
     {
-        if ( desc_ptr->Type == EfiConventionalMemory ||
-             (!map_bs &&
-              (desc_ptr->Type == EfiBootServicesCode ||
-               desc_ptr->Type == EfiBootServicesData)) )
+        if ( desc_ptr->Attribute & EFI_MEMORY_WB &&
+             (desc_ptr->Type == EfiConventionalMemory ||
+              desc_ptr->Type == EfiLoaderCode ||
+              desc_ptr->Type == EfiLoaderData ||
+              (!map_bs &&
+               (desc_ptr->Type == EfiBootServicesCode ||
+                desc_ptr->Type == EfiBootServicesData))) )
         {
             if ( !meminfo_add_bank(&bootinfo.mem, desc_ptr) )
             {
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:44:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:44:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwlh-0007EI-35; Fri, 10 Apr 2020 16:44:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwlg-0007EB-43
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:36 +0000
X-Inumbo-ID: 8f190e38-7b4a-11ea-845b-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8f190e38-7b4a-11ea-845b-12813bfff9fa;
 Fri, 10 Apr 2020 16:44:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=zjncHtQmhFE35QjA4oNW2fom4/bfjJS3Ea1jtouuBeA=; b=vIGq+PH+yy6O7IBdGpIsOAXbPr
 RFZF2vs9MINc90Y57P4n4osrCsxL4a6wX5HUtQ+P7AY32IaoSXHLRthz5/SwSLP9bVC6mlvE8sds8
 EOZP1oeJhKJnu8FuZbxyu3+lmW6rQWOzjJUqvYs3J2T/xDUGnoCGzPJErziA4Xr9nwzw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwle-0002qQ-Hs
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwle-00072g-Gh
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xen/arm: remove physical timer offset
Message-Id: <E1jMwle-00072g-Gh@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:44:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a46cd06d92e698a71e4c845301a19468265809d3
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Jan 21 10:07:03 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:34:11 2020 -0700

    xen/arm: remove physical timer offset
    
    The physical timer traps apply an offset so that time starts at 0 for
    the guest. However, this offset is not currently applied to the physical
    counter. Per the ARMv8 Reference Manual (ARM DDI 0487E.a), section
    D11.2.4 Timers, the "Offset" between the counter and timer should be
    zero for a physical timer. This removes the offset to make the timer and
    counter consistent.
    
    This also cleans up the physical timer implementation to better match
    the virtual timer - both cval's now hold the hardware value.
    
    In the case the guest sets cval to a time before Xen started, the correct
    behavior is to expire the timer immediately. To do this, we set the expires
    argument of set_timer to zero.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit f14f55b7ee295277c8dd09e37e0fa0902ccf7eb4)
---
 xen/arch/arm/vtimer.c        | 46 +++++++++++++++++++++++++++++---------------
 xen/include/asm-arm/domain.h |  3 ---
 2 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index c99dd237d1..b15f304c1e 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -62,7 +62,6 @@ static void virt_timer_expired(void *data)
 
 int domain_vtimer_init(struct domain *d, struct xen_arch_domainconfig *config)
 {
-    d->arch.phys_timer_base.offset = NOW();
     d->arch.virt_timer_base.offset = READ_SYSREG64(CNTPCT_EL0);
     d->time_offset_seconds = ticks_to_ns(d->arch.virt_timer_base.offset - boot_count);
     do_div(d->time_offset_seconds, 1000000000);
@@ -108,7 +107,6 @@ int vcpu_vtimer_init(struct vcpu *v)
 
     init_timer(&t->timer, phys_timer_expired, t, v->processor);
     t->ctl = 0;
-    t->cval = NOW();
     t->irq = d0
         ? timer_get_irq(TIMER_PHYS_NONSECURE_PPI)
         : GUEST_TIMER_PHYS_NS_PPI;
@@ -169,6 +167,7 @@ int virt_timer_restore(struct vcpu *v)
 static bool vtimer_cntp_ctl(struct cpu_user_regs *regs, uint32_t *r, bool read)
 {
     struct vcpu *v = current;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
@@ -186,8 +185,13 @@ static bool vtimer_cntp_ctl(struct cpu_user_regs *regs, uint32_t *r, bool read)
 
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval + v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
         else
             stop_timer(&v->arch.phys_timer.timer);
@@ -199,26 +203,31 @@ static bool vtimer_cntp_tval(struct cpu_user_regs *regs, uint32_t *r,
                              bool read)
 {
     struct vcpu *v = current;
-    s_time_t now;
+    uint64_t cntpct;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
 
-    now = NOW() - v->domain->arch.phys_timer_base.offset;
+    cntpct = get_cycles();
 
     if ( read )
     {
-        *r = (uint32_t)(ns_to_ticks(v->arch.phys_timer.cval - now) & 0xffffffffull);
+        *r = (uint32_t)((v->arch.phys_timer.cval - cntpct) & 0xffffffffull);
     }
     else
     {
-        v->arch.phys_timer.cval = now + ticks_to_ns(*r);
+        v->arch.phys_timer.cval = cntpct + *r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval +
-                      v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
     }
     return true;
@@ -228,23 +237,28 @@ static bool vtimer_cntp_cval(struct cpu_user_regs *regs, uint64_t *r,
                              bool read)
 {
     struct vcpu *v = current;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
 
     if ( read )
     {
-        *r = ns_to_ticks(v->arch.phys_timer.cval);
+        *r = v->arch.phys_timer.cval;
     }
     else
     {
-        v->arch.phys_timer.cval = ticks_to_ns(*r);
+        v->arch.phys_timer.cval = *r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval +
-                      v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
     }
     return true;
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index def28606c9..5b49509e80 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -66,9 +66,6 @@ struct arch_domain
 
     struct {
         uint64_t offset;
-    } phys_timer_base;
-    struct {
-        uint64_t offset;
     } virt_timer_base;
 
     struct vgic_dist vgic;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Fri Apr 10 16:44:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 10 Apr 2020 16:44:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jMwlq-0007Fr-6g; Fri, 10 Apr 2020 16:44:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=Y6vq=52=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jMwlp-0007Fj-90
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:45 +0000
X-Inumbo-ID: 951ac7fe-7b4a-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 951ac7fe-7b4a-11ea-b58d-bc764e2007e4;
 Fri, 10 Apr 2020 16:44:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8BZMNgoFuvTKvRqStiPCVerjOaHmckxo+gTRWhnQn7k=; b=gZ6aUKjlwxFw9ogOfA6gTMM/Vn
 /qvkdvAeKlEHNfEcj7222FricY3ZeOcjL79/PsXub3DgYHBPXT4NQN4p0e3cIORhgqA/yigugIE2Z
 TqcJaguayvxdOp4xk9PcIphKOZBQFjTP9XMA9j7WrZCkwQ16Edu9oYwJmIrIMAmbV/bE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwlo-0002qb-KT
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jMwlo-00073D-JU
 for xen-changelog@lists.xenproject.org; Fri, 10 Apr 2020 16:44:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xen/arm: Sign extend TimerValue when computing the
 CompareValue
Message-Id: <E1jMwlo-00073D-JU@xenbits.xenproject.org>
Date: Fri, 10 Apr 2020 16:44:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e8c8071f4ac2cce6f2a0ef75ea53720a7744e875
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Jan 21 10:07:04 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:34:16 2020 -0700

    xen/arm: Sign extend TimerValue when computing the CompareValue
    
    Xen will only store the CompareValue as it can be derived from the
    TimerValue (ARM DDI 0487E.a section D11.2.4):
    
      CompareValue = (Counter[63:0] + SignExtend(TimerValue))[63:0]
    
    While the TimerValue is a 32-bit signed value, our implementation
    assumed it is a 32-bit unsigned value.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit 3c601c5f056fba055b7a1438b84b69fc649275c3)
---
 xen/arch/arm/vtimer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index b15f304c1e..2697e6a784 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -217,7 +217,7 @@ static bool vtimer_cntp_tval(struct cpu_user_regs *regs, uint32_t *r,
     }
     else
     {
-        v->arch.phys_timer.cval = cntpct + *r;
+        v->arch.phys_timer.cval = cntpct + (uint64_t)(int32_t)*r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 04:55:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 04:55:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jN8Ac-0002Dy-Vp; Sat, 11 Apr 2020 04:55:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jN8Ab-0002Dt-Ce
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:05 +0000
X-Inumbo-ID: 9abc8fb0-7bb0-11ea-8516-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9abc8fb0-7bb0-11ea-8516-12813bfff9fa;
 Sat, 11 Apr 2020 04:55:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=QdhCTpMBQ6tfRQW8I2j1Js6ucpDADAdQ9mDQ6zu7SuU=; b=zXeAKNSnk9kEoQTn4uzHhDBKTU
 LhYeujndqW4m1gm+w0+RmcxiGddRVnU9uZCLI0pjAnI2qUGlOZoST36UeJ8YoefgishEA0qF3u+t4
 G80ALmtaXYDF/DIkkTozymnKgs338C67Wf7NJgO/kFPAxxyIIFYK4icKxP4JeGQtwfNc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8AY-0005rE-Nz
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8AY-0004tl-MH
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen/arm: Handle unimplemented VGICv3 registers as
 RAZ/WI
Message-Id: <E1jN8AY-0004tl-MH@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 04:55:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 436c54e1d2b3900aa3bb25ed872d3f83d4691962
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Feb 4 14:51:50 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:28:38 2020 -0700

    xen/arm: Handle unimplemented VGICv3 registers as RAZ/WI
    
    Per the ARM Generic Interrupt Controller Architecture Specification (ARM
    IHI 0069E), reserved registers should generally be treated as RAZ/WI.
    To simplify the VGICv3 design and improve guest compatibility, treat the
    default case for GICD and GICR registers as read_as_zero/write_ignore.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit 69da7d5440c609c57c5bba9a73b91c62ba2852e6)
---
 xen/arch/arm/vgic-v3.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 422b94f902..4e60ba15cc 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -320,7 +320,7 @@ static int __vgic_v3_rdistr_rd_mmio_read(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto read_as_zero;
     }
 bad_width:
     printk(XENLOG_G_ERR "%pv vGICR: bad read width %d r%d offset %#08x\n",
@@ -337,6 +337,10 @@ read_as_zero_32:
     *r = 0;
     return 1;
 
+read_as_zero:
+    *r = 0;
+    return 1;
+
 read_impl_defined:
     printk(XENLOG_G_DEBUG
            "%pv: vGICR: RAZ on implementation defined register offset %#08x\n",
@@ -638,7 +642,7 @@ static int __vgic_v3_rdistr_rd_mmio_write(struct vcpu *v, mmio_info_t *info,
     default:
         printk(XENLOG_G_ERR "%pv: vGICR: unhandled write r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto write_ignore;
     }
 bad_width:
     printk(XENLOG_G_ERR
@@ -654,6 +658,9 @@ write_ignore_32:
     if ( dabt.size != DABT_WORD ) goto bad_width;
     return 1;
 
+write_ignore:
+    return 1;
+
 write_impl_defined:
     printk(XENLOG_G_DEBUG
            "%pv: vGICR: WI on implementation defined register offset %#08x\n",
@@ -925,7 +932,7 @@ static int vgic_v3_rdistr_sgi_mmio_read(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: SGI: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto read_as_zero;
     }
 bad_width:
     printk(XENLOG_G_ERR "%pv: vGICR: SGI: bad read width %d r%d offset %#08x\n",
@@ -1002,7 +1009,7 @@ static int vgic_v3_rdistr_sgi_mmio_write(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: SGI: unhandled write r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto write_ignore;
     }
 
 bad_width:
@@ -1014,6 +1021,9 @@ bad_width:
 write_ignore_32:
     if ( dabt.size != DABT_WORD ) goto bad_width;
     return 1;
+
+write_ignore:
+    return 1;
 }
 
 static struct vcpu *get_vcpu_from_rdist(struct domain *d,
@@ -1252,7 +1262,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mmio_info_t *info,
     default:
         printk(XENLOG_G_ERR "%pv: vGICD: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicd_reg);
-        return 0;
+        goto read_as_zero;
     }
 
 bad_width:
@@ -1438,7 +1448,7 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICD: unhandled write r%d=%"PRIregister" offset %#08x\n",
                v, dabt.reg, r, gicd_reg);
-        return 0;
+        goto write_ignore;
     }
 
 bad_width:
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 04:55:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 04:55:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jN8Al-0002ET-1I; Sat, 11 Apr 2020 04:55:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jN8Aj-0002EL-NL
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:13 +0000
X-Inumbo-ID: a0bbb972-7bb0-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a0bbb972-7bb0-11ea-9e09-bc764e2007e4;
 Sat, 11 Apr 2020 04:55:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=cTIoBA4313EUOCK/9vtzrSorqRcGnMicmVtBlTUbpVM=; b=syTcLiu2g95fa5oCUDHkELv8nu
 pSd9feew2ANWGykfKfJa0yHSGvPdpUQhq7xQW/26tJKaQHiPeY6jMk4wYyoYRaw47r98uGw3BfMm9
 n3jYZ5pyq50DQ5thIQ9GF22zDF+1S+tqd56GTwr6gLHH/RZph1m62yjloZHCSD4fHOcw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8Ai-0005rH-Qh
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8Ai-0004uI-Pc
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen/arm: initialize vpl011 flag register
Message-Id: <E1jN8Ai-0004uI-Pc@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 04:55:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c0dad816c6de702ddbe87908a9e5ab12f83c397f
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Mon Nov 25 15:58:00 2019 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:29:25 2020 -0700

    xen/arm: initialize vpl011 flag register
    
    The tx/rx fifo flags were not set when the vpl011 is initialized. This
    is a problem for certain guests that are operating in polled mode, as a
    guest will generally check the rx fifo empty flag to determine if there
    is data before doing a read. The result is a continuous spam of the
    message "vpl011: Unexpected IN ring buffer empty" before the first valid
    character is received. This initializes the flag status register to the
    default specified in the PL011 technical reference manual.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit b4637ed6cd5375f04ac51d6b900a9ccad6c6c03a)
---
 xen/arch/arm/vpl011.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c
index 7bc5eeb207..895f436cc4 100644
--- a/xen/arch/arm/vpl011.c
+++ b/xen/arch/arm/vpl011.c
@@ -668,6 +668,8 @@ int domain_vpl011_init(struct domain *d, struct vpl011_init_info *info)
         goto out2;
     }
 
+    vpl011->uartfr = TXFE | RXFE;
+
     spin_lock_init(&vpl011->lock);
 
     register_mmio_handler(d, &vpl011_mmio_handler,
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 04:55:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 04:55:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jN8Av-0002Fe-3K; Sat, 11 Apr 2020 04:55:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jN8At-0002FU-R6
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:23 +0000
X-Inumbo-ID: a6c36c20-7bb0-11ea-8516-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a6c36c20-7bb0-11ea-8516-12813bfff9fa;
 Sat, 11 Apr 2020 04:55:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=6PBG6h+WJ7AiCE8Vc7qQWw6SPP5zL/IkAqhVdWfAZZc=; b=UwkztzRIM+xWLftNGmDcl5agno
 jXoeUJRU0Thmkc6WqsqxklMWl5oO2iyoFnxjjkuA7nc8pVPHZJKAZh96LQ8lCs8+TvzrxQuqVNNHO
 mla4ZZUO8orKhjeD4ytjEMSRTsVHk+BjoRw9uZnshmA39ZKeV2kU+SeSK+fubAARXCos=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8As-0005rV-TN
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8As-0004uo-SG
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen/arm: during efi boot,
 improve the check for usable memory
Message-Id: <E1jN8As-0004uo-SG@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 04:55:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2e05b8ac6b505ac1f80cc73ff0faedfaf5636503
Author:     Stefano Stabellini <sstabellini@kernel.org>
AuthorDate: Tue Jan 14 15:31:55 2020 -0800
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:29:37 2020 -0700

    xen/arm: during efi boot, improve the check for usable memory
    
    When booting via EFI, the EFI memory map has information about memory
    regions and their type. Improve the check for the type and attribute of
    each memory region to figure out whether it is usable memory or not.
    This patch brings the check on par with Linux v5.5-rc6 and makes more
    memory reusable as normal memory by Xen (except that Linux also reuses
    EFI_PERSISTENT_MEMORY, which we do not).
    
    Specifically, this patch also reuses memory marked as
    EfiLoaderCode/Data, and it uses both Attribute and Type for the check
    (Attribute needs to be EFI_MEMORY_WB).
    
    Reported-by: Roman Shaposhnik <roman@zededa.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit b31666c8912bf18d9eff963b06d856e7e818ff34)
---
 xen/arch/arm/efi/efi-boot.h | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
index ca655ff003..3c0772d3f2 100644
--- a/xen/arch/arm/efi/efi-boot.h
+++ b/xen/arch/arm/efi/efi-boot.h
@@ -149,10 +149,13 @@ static EFI_STATUS __init efi_process_memory_map_bootinfo(EFI_MEMORY_DESCRIPTOR *
 
     for ( Index = 0; Index < (mmap_size / desc_size); Index++ )
     {
-        if ( desc_ptr->Type == EfiConventionalMemory ||
-             (!map_bs &&
-              (desc_ptr->Type == EfiBootServicesCode ||
-               desc_ptr->Type == EfiBootServicesData)) )
+        if ( desc_ptr->Attribute & EFI_MEMORY_WB &&
+             (desc_ptr->Type == EfiConventionalMemory ||
+              desc_ptr->Type == EfiLoaderCode ||
+              desc_ptr->Type == EfiLoaderData ||
+              (!map_bs &&
+               (desc_ptr->Type == EfiBootServicesCode ||
+                desc_ptr->Type == EfiBootServicesData))) )
         {
             if ( !meminfo_add_bank(&bootinfo.mem, desc_ptr) )
             {
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 04:55:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 04:55:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jN8B6-0002Gj-5M; Sat, 11 Apr 2020 04:55:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jN8B4-0002GY-5P
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:34 +0000
X-Inumbo-ID: acc84e24-7bb0-11ea-8516-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id acc84e24-7bb0-11ea-8516-12813bfff9fa;
 Sat, 11 Apr 2020 04:55:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=QyFUiv6if8XyeB7Swl6A31qkb6jN+MZXouLrM8bWkBw=; b=dDReuhgXrl/rUmzyWEaswRwFTo
 YF6wQM87A6ssufopMmu3A5/D5N2kvfCwcazwPHCHy7htev2Z2P/mtjYoF4mf1RDtLCSwCRI8pNTFx
 qgU1SOqi6qs1JLewH92Mlz3IatuNSzOrD9iw+DnGFp9KUhRFxQTX06qMkeiqFOgHd/h4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8B2-0005rm-W4
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8B2-0004vJ-Uw
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen/arm: remove physical timer offset
Message-Id: <E1jN8B2-0004vJ-Uw@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 04:55:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 460003ef280478e74915c61be159c1a1bdf80806
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Jan 21 10:07:03 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:29:51 2020 -0700

    xen/arm: remove physical timer offset
    
    The physical timer traps apply an offset so that time starts at 0 for
    the guest. However, this offset is not currently applied to the physical
    counter. Per the ARMv8 Reference Manual (ARM DDI 0487E.a), section
    D11.2.4 Timers, the "Offset" between the counter and timer should be
    zero for a physical timer. This removes the offset to make the timer and
    counter consistent.
    
    This also cleans up the physical timer implementation to better match
    the virtual timer - both cval's now hold the hardware value.
    
    In the case the guest sets cval to a time before Xen started, the correct
    behavior is to expire the timer immediately. To do this, we set the expires
    argument of set_timer to zero.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit f14f55b7ee295277c8dd09e37e0fa0902ccf7eb4)
---
 xen/arch/arm/vtimer.c        | 46 +++++++++++++++++++++++++++++---------------
 xen/include/asm-arm/domain.h |  3 ---
 2 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index e6aebdac9e..bb8ad4ef27 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -62,7 +62,6 @@ static void virt_timer_expired(void *data)
 
 int domain_vtimer_init(struct domain *d, struct xen_arch_domainconfig *config)
 {
-    d->arch.phys_timer_base.offset = NOW();
     d->arch.virt_timer_base.offset = READ_SYSREG64(CNTPCT_EL0);
     d->time_offset_seconds = ticks_to_ns(d->arch.virt_timer_base.offset - boot_count);
     do_div(d->time_offset_seconds, 1000000000);
@@ -108,7 +107,6 @@ int vcpu_vtimer_init(struct vcpu *v)
 
     init_timer(&t->timer, phys_timer_expired, t, v->processor);
     t->ctl = 0;
-    t->cval = NOW();
     t->irq = d0
         ? timer_get_irq(TIMER_PHYS_NONSECURE_PPI)
         : GUEST_TIMER_PHYS_NS_PPI;
@@ -167,6 +165,7 @@ void virt_timer_restore(struct vcpu *v)
 static bool vtimer_cntp_ctl(struct cpu_user_regs *regs, uint32_t *r, bool read)
 {
     struct vcpu *v = current;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
@@ -184,8 +183,13 @@ static bool vtimer_cntp_ctl(struct cpu_user_regs *regs, uint32_t *r, bool read)
 
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval + v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
         else
             stop_timer(&v->arch.phys_timer.timer);
@@ -197,26 +201,31 @@ static bool vtimer_cntp_tval(struct cpu_user_regs *regs, uint32_t *r,
                              bool read)
 {
     struct vcpu *v = current;
-    s_time_t now;
+    uint64_t cntpct;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
 
-    now = NOW() - v->domain->arch.phys_timer_base.offset;
+    cntpct = get_cycles();
 
     if ( read )
     {
-        *r = (uint32_t)(ns_to_ticks(v->arch.phys_timer.cval - now) & 0xffffffffull);
+        *r = (uint32_t)((v->arch.phys_timer.cval - cntpct) & 0xffffffffull);
     }
     else
     {
-        v->arch.phys_timer.cval = now + ticks_to_ns(*r);
+        v->arch.phys_timer.cval = cntpct + *r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval +
-                      v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
     }
     return true;
@@ -226,23 +235,28 @@ static bool vtimer_cntp_cval(struct cpu_user_regs *regs, uint64_t *r,
                              bool read)
 {
     struct vcpu *v = current;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
 
     if ( read )
     {
-        *r = ns_to_ticks(v->arch.phys_timer.cval);
+        *r = v->arch.phys_timer.cval;
     }
     else
     {
-        v->arch.phys_timer.cval = ticks_to_ns(*r);
+        v->arch.phys_timer.cval = *r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval +
-                      v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
     }
     return true;
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index 86ebdd2bcf..16a7150a95 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -67,9 +67,6 @@ struct arch_domain
 
     struct {
         uint64_t offset;
-    } phys_timer_base;
-    struct {
-        uint64_t offset;
     } virt_timer_base;
 
     struct vgic_dist vgic;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 04:55:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 04:55:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jN8BF-0002Hm-7L; Sat, 11 Apr 2020 04:55:45 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jN8BD-0002Hc-Qy
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:43 +0000
X-Inumbo-ID: b2c43ec8-7bb0-11ea-8516-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b2c43ec8-7bb0-11ea-8516-12813bfff9fa;
 Sat, 11 Apr 2020 04:55:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=r49Wmb4vARvFSo9euBPgnO2n3FpQ+HVmzwvj96FaiHE=; b=WgcKpECjIuEyADauRRY88cnlbp
 rT3YESkTn7W2jausQaRHBevX9haG4z7dqcvyFIg8cchsNxIIBG1nqq6o479VgOEXky6uHoZZcGTwX
 CIk1Y2Bz0VWVRMa2+KTFBZ+NJw1kKh0UILvTjjuor1YZgf3LBb6IVSmtsrYGhx5VgjGw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8BD-0005sN-2c
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jN8BD-0004vw-1P
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 04:55:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen/arm: Sign extend TimerValue when computing the
 CompareValue
Message-Id: <E1jN8BD-0004vw-1P@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 04:55:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 736da59cbe2752502ad863b6e71eb83352e22276
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Jan 21 10:07:04 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:30:02 2020 -0700

    xen/arm: Sign extend TimerValue when computing the CompareValue
    
    Xen will only store the CompareValue as it can be derived from the
    TimerValue (ARM DDI 0487E.a section D11.2.4):
    
      CompareValue = (Counter[63:0] + SignExtend(TimerValue))[63:0]
    
    While the TimerValue is a 32-bit signed value, our implementation
    assumed it is a 32-bit unsigned value.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit 3c601c5f056fba055b7a1438b84b69fc649275c3)
---
 xen/arch/arm/vtimer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index bb8ad4ef27..a80009882f 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -215,7 +215,7 @@ static bool vtimer_cntp_tval(struct cpu_user_regs *regs, uint32_t *r,
     }
     else
     {
-        v->arch.phys_timer.cval = cntpct + *r;
+        v->arch.phys_timer.cval = cntpct + (uint64_t)(int32_t)*r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 10:33:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 10:33:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNDRg-0004nh-78; Sat, 11 Apr 2020 10:33:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNDRe-0004nb-TN
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:02 +0000
X-Inumbo-ID: d21772de-7bdf-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d21772de-7bdf-11ea-b58d-bc764e2007e4;
 Sat, 11 Apr 2020 10:33:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/aHT3xyBQjv3jxhc8rY4p78ntJ/AZtpIBIUl3lIrDr8=; b=KS5JtcdwMYd6YYtmmwDmJrAoyz
 56lmfVL70qOiOXm2wqj5JYmRPi1IKuRjLXH1IwEx7U5b4385xv2s8GBUF9u+HxWs4ORe6xysUuo/v
 KuaZfSe7usWkIuTSk9STfqaxaPM1WsV/ASvn3oB78OHght5cZPRcKrL8hTFMKS7vzAZY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDRd-0004hN-V8
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDRd-0000LI-Tw
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] libxc/migration: Abort migration on precopy policy
 request
Message-Id: <E1jNDRd-0000LI-Tw@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 10:33:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 69f741347d9718b470fe29c012b7a2622249b709
Author:     Andrew Panyakin <apanyaki@amazon.com>
AuthorDate: Tue Apr 7 14:52:22 2020 +0000
Commit:     Wei Liu <wl@xen.org>
CommitDate: Thu Apr 9 15:43:18 2020 +0100

    libxc/migration: Abort migration on precopy policy request
    
    libxc defines XGS_POLICY_ABORT for precopy policy to signal that migration
    should be aborted (eg. if the estimated pause time is too huge for the
    instance). Default simple precopy policy never returns that, but it could be
    overriden with a custom one.
    
    Signed-off-by: Andrew Panyakin <apanyaki@amazon.com>
    Acked-by: Wei Liu <wl@xen.org>
    [wei: fix coding style issue]
---
 tools/libxc/xc_sr_save.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tools/libxc/xc_sr_save.c b/tools/libxc/xc_sr_save.c
index fa736a311f..6ba6623ff3 100644
--- a/tools/libxc/xc_sr_save.c
+++ b/tools/libxc/xc_sr_save.c
@@ -560,6 +560,13 @@ static int send_memory_live(struct xc_sr_context *ctx)
 
     }
 
+    if ( policy_decision == XGS_POLICY_ABORT )
+    {
+        PERROR("Abort precopy loop");
+        rc = -1;
+        goto out;
+    }
+
  out:
     xc_set_progress_prefix(xch, NULL);
     free(progress_str);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 10:33:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 10:33:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNDRq-0004oP-8x; Sat, 11 Apr 2020 10:33:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNDRp-0004oJ-3V
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:13 +0000
X-Inumbo-ID: d818ced0-7bdf-11ea-8559-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d818ced0-7bdf-11ea-8559-12813bfff9fa;
 Sat, 11 Apr 2020 10:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2nn4r96s7qkegxN2IQ0325uCoinICLZk2U0lfWHC+VA=; b=bEq5ZwxuFA+IC0T48yeOzGTNKk
 8Tw5n0Vv7ZGxY10QhXE/hJaxIfCxpfeB4xQWGEwRnv3XmKHu825zIWpnduT9VdYnQ/MKQm1hwD9QQ
 BNivGrVSrpnHoEei+gf4q0P2OZupWRO3U6kPsxhk7N84IozBNcuOeeg0FN1mK9sGV9hk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDRo-0004hj-1d
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDRo-0000Lz-0O
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] tools/xl: Remove the filelock when building VM if
 autoballooning is off
Message-Id: <E1jNDRo-0000Lz-0O@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 10:33:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4fb402b486121c0110dd8cbc2ef2791ab9c1af73
Author:     Dmitry Isaykin <isaikin-dmitry@yandex.ru>
AuthorDate: Thu Apr 9 15:55:50 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Thu Apr 9 15:55:50 2020 +0100

    tools/xl: Remove the filelock when building VM if autoballooning is off
    
    The presence of this filelock does not allow building several VMs at the same
    time. This filelock was added to prevent other xl instances from using memory
    freed for the currently building VM in autoballoon mode.
    
    Signed-off-by: Dmitry Isaykin <isaikin-dmitry@yandex.ru>
    Reviewed-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
 tools/xl/xl_vmcontrol.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/xl/xl_vmcontrol.c b/tools/xl/xl_vmcontrol.c
index 2e2d427492..17b4514c94 100644
--- a/tools/xl/xl_vmcontrol.c
+++ b/tools/xl/xl_vmcontrol.c
@@ -874,9 +874,11 @@ int create_domain(struct domain_create *dom_info)
 start:
     assert(domid == INVALID_DOMID);
 
-    rc = acquire_lock();
-    if (rc < 0)
-        goto error_out;
+    if (autoballoon) {
+        rc = acquire_lock();
+        if (rc < 0)
+            goto error_out;
+    }
 
     if (domid_soft_reset == INVALID_DOMID) {
         if (!freemem(domid, &d_config)) {
@@ -939,7 +941,8 @@ start:
     if ( ret )
         goto error_out;
 
-    release_lock();
+    if (autoballoon)
+        release_lock();
 
     if (restore_fd_to_close >= 0) {
         if (close(restore_fd_to_close))
@@ -1113,7 +1116,8 @@ start:
     }
 
 error_out:
-    release_lock();
+    if (autoballoon)
+        release_lock();
     if (libxl_domid_valid_guest(domid)) {
         libxl_domain_destroy(ctx, domid, 0);
         domid = INVALID_DOMID;
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 10:33:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 10:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNDS0-0004pz-B8; Sat, 11 Apr 2020 10:33:24 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNDRy-0004pr-KF
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:22 +0000
X-Inumbo-ID: de1d24de-7bdf-11ea-8559-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id de1d24de-7bdf-11ea-8559-12813bfff9fa;
 Sat, 11 Apr 2020 10:33:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nwcAPJMpsnxbizaqQWqniTQGhxYRnXldK87z6xWogeM=; b=pj+iGWwLgJWNM5nICkSxy0jsq6
 YbU5B2b0o24CHgez9HP/zUFsRM9en9fUYacgmHOBrw3Kk3kAL8iR3MIe5JPvvTY5yAQgfHqv69kUp
 X0jTrcC0yEATQBCLxxyY3r7ikt8mgbCkHs8YVkdr0PJFDLfctCyr1J4ceqFXetgEf6BE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDRy-0004hu-4K
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDRy-0000MZ-3M
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/x86: ioapic: Use true/false in bad_ioapic_register()
Message-Id: <E1jNDRy-0000MZ-3M@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 10:33:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8c4aed6ee1073f01f257d170c14c41af7a9cfd39
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Fri Mar 27 18:16:22 2020 +0000
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Fri Apr 10 12:23:48 2020 +0100

    xen/x86: ioapic: Use true/false in bad_ioapic_register()
    
    bad_ioapic_register() is returning a bool, so we should switch to
    true/false.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/io_apic.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index e98e08e9c8..9868933287 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -2531,10 +2531,10 @@ static __init bool bad_ioapic_register(unsigned int idx)
     {
         printk(KERN_WARNING "I/O APIC %#x registers return all ones, skipping!\n",
                mp_ioapics[idx].mpc_apicaddr);
-        return 1;
+        return true;
     }
 
-    return 0;
+    return false;
 }
 
 void __init init_ioapic_mappings(void)
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 10:33:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 10:33:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNDSA-0004rC-D9; Sat, 11 Apr 2020 10:33:34 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNDS8-0004r1-Ti
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:32 +0000
X-Inumbo-ID: e425bd96-7bdf-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e425bd96-7bdf-11ea-83d8-bc764e2007e4;
 Sat, 11 Apr 2020 10:33:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XFKZLtoSHnPFJsdR9bReTDqEWN+OTV4I1MAmBPScsUI=; b=swsZ8upCIhRZB5Dx8oJAMr5W3Q
 m9/0H9szK0/0AitMh6d1EElSSPAbZTOIApKT6TmexlpSI5yZr1UeqHQQLWKFCfmRiAzULBJXVDACG
 7gN5N6ebVGRXzxuxpphmmeD/ZXXOcTB1R7NU6pk7k6SJg4VoWShJlwa8t8nYHFRwttMM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDS8-0004i6-7y
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDS8-0000NI-6A
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/x86: ioapic: Rename init_ioapic_mappings() to
 ioapic_init()
Message-Id: <E1jNDS8-0000NI-6A@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 10:33:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 996ff16416b62154400468fb91fc32ba7eccf620
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Fri Mar 27 18:23:21 2020 +0000
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Fri Apr 10 12:23:48 2020 +0100

    xen/x86: ioapic: Rename init_ioapic_mappings() to ioapic_init()
    
    The function init_ioapic_mappings() is doing more than initialization
    mappings. It is also initialization the number of IRQs/GSIs supported.
    
    So rename the function to ioapic_init().
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/apic.c           | 2 +-
 xen/arch/x86/io_apic.c        | 2 +-
 xen/include/asm-x86/io_apic.h | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/apic.c b/xen/arch/x86/apic.c
index cde67cd87e..71f4efb2fe 100644
--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -978,7 +978,7 @@ __next:
         boot_cpu_physical_apicid = get_apic_id();
     x86_cpu_to_apicid[0] = get_apic_id();
 
-    init_ioapic_mappings();
+    ioapic_init();
 }
 
 /*****************************************************************************
diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index 9868933287..8233eb44e1 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -2537,7 +2537,7 @@ static __init bool bad_ioapic_register(unsigned int idx)
     return false;
 }
 
-void __init init_ioapic_mappings(void)
+void __init ioapic_init(void)
 {
     unsigned long ioapic_phys;
     unsigned int i, idx = FIX_IO_APIC_BASE_0;
diff --git a/xen/include/asm-x86/io_apic.h b/xen/include/asm-x86/io_apic.h
index 998905186b..e006b2b8dd 100644
--- a/xen/include/asm-x86/io_apic.h
+++ b/xen/include/asm-x86/io_apic.h
@@ -180,7 +180,7 @@ extern int io_apic_get_version (int ioapic);
 extern int io_apic_get_redir_entries (int ioapic);
 extern int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int active_high_low);
 
-extern void init_ioapic_mappings(void);
+extern void ioapic_init(void);
 
 extern void ioapic_suspend(void);
 extern void ioapic_resume(void);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 10:33:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 10:33:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNDSK-0004sD-Eh; Sat, 11 Apr 2020 10:33:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNDSI-0004rz-Ql
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:42 +0000
X-Inumbo-ID: ea27be74-7bdf-11ea-8559-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ea27be74-7bdf-11ea-8559-12813bfff9fa;
 Sat, 11 Apr 2020 10:33:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VdhHEjxCy15799riYbCdeZ3O24NvUGhbLgIW0jOF7wQ=; b=oD5JmMAI8e/be18f7QzSXMGvF3
 SHlw1xerwpgOv9yElf84RKdr9nsFoT4LwMm4ZpHlHLcfAlBsuVgqAP3orYe4gaP5rXiLWma8Urz6I
 efGw6gINSMqbBkhC9t8sPutqx9aSve9eK004g5LRuqH/9tyn8Zwgly5sy6ZeEpRrl/6E=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDSI-0004iF-BO
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNDSI-0000Nv-9f
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 10:33:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/x86: ioapic: Simplify ioapic_init()
Message-Id: <E1jNDSI-0000Nv-9f@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 10:33:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 13dcb32b6b585d9a29997e81c0a9610cf1a7f64d
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Fri Mar 27 18:36:20 2020 +0000
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Fri Apr 10 12:23:48 2020 +0100

    xen/x86: ioapic: Simplify ioapic_init()
    
    Since commit 9facd54a45 "x86/ioapic: Add register level checks to detect
    bogus io-apic entries", Xen is able to cope with IO APICs not mapped in
    the fixmap.
    
    Therefore the whole logic to allocate a fake page for some IO APICs is
    unnecessary.
    
    With the logic removed, the code can be simplified a lot as we don't
    need to go through all the IO APIC if SMP has not been detected or a
    bogus zero IO-APIC address has been detected.
    
    To avoid another level of tabulation, the simplification is now moved in
    its own function.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/io_apic.c | 61 +++++++++++++++++++++++---------------------------
 1 file changed, 28 insertions(+), 33 deletions(-)

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index 8233eb44e1..878ee5192d 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -2537,34 +2537,26 @@ static __init bool bad_ioapic_register(unsigned int idx)
     return false;
 }
 
-void __init ioapic_init(void)
+static void __init ioapic_init_mappings(void)
 {
-    unsigned long ioapic_phys;
     unsigned int i, idx = FIX_IO_APIC_BASE_0;
-    union IO_APIC_reg_01 reg_01;
 
-    if ( smp_found_config )
-        nr_irqs_gsi = 0;
+    nr_irqs_gsi = 0;
+
     for ( i = 0; i < nr_ioapics; i++ )
     {
-        if ( smp_found_config )
-        {
-            ioapic_phys = mp_ioapics[i].mpc_apicaddr;
-            if ( !ioapic_phys )
-            {
-                printk(KERN_ERR "WARNING: bogus zero IO-APIC address "
-                       "found in MPTABLE, disabling IO/APIC support!\n");
-                smp_found_config = false;
-                skip_ioapic_setup = true;
-                goto fake_ioapic_page;
-            }
-        }
-        else
+        union IO_APIC_reg_01 reg_01;
+        paddr_t ioapic_phys = mp_ioapics[i].mpc_apicaddr;
+
+        if ( !ioapic_phys )
         {
- fake_ioapic_page:
-            ioapic_phys = __pa(alloc_xenheap_page());
-            clear_page(__va(ioapic_phys));
+            printk(KERN_ERR
+                   "WARNING: bogus zero IO-APIC address found in MPTABLE, disabling IO/APIC support!\n");
+            smp_found_config = false;
+            skip_ioapic_setup = true;
+            break;
         }
+
         set_fixmap_nocache(idx, ioapic_phys);
         apic_printk(APIC_VERBOSE, "mapped IOAPIC to %08Lx (%08lx)\n",
                     __fix_to_virt(idx), ioapic_phys);
@@ -2576,19 +2568,22 @@ void __init ioapic_init(void)
             continue;
         }
 
-        if ( smp_found_config )
-        {
-            /* The number of IO-APIC IRQ registers (== #pins): */
-            reg_01.raw = io_apic_read(i, 1);
-            nr_ioapic_entries[i] = reg_01.bits.entries + 1;
-            nr_irqs_gsi += nr_ioapic_entries[i];
-
-            if ( rangeset_add_singleton(mmio_ro_ranges,
-                                        ioapic_phys >> PAGE_SHIFT) )
-                printk(KERN_ERR "Failed to mark IO-APIC page %lx read-only\n",
-                       ioapic_phys);
-        }
+        /* The number of IO-APIC IRQ registers (== #pins): */
+        reg_01.raw = io_apic_read(i, 1);
+        nr_ioapic_entries[i] = reg_01.bits.entries + 1;
+        nr_irqs_gsi += nr_ioapic_entries[i];
+
+        if ( rangeset_add_singleton(mmio_ro_ranges,
+                                    ioapic_phys >> PAGE_SHIFT) )
+            printk(KERN_ERR "Failed to mark IO-APIC page %lx read-only\n",
+                   ioapic_phys);
     }
+}
+
+void __init ioapic_init(void)
+{
+    if ( smp_found_config )
+        ioapic_init_mappings();
 
     nr_irqs_gsi = max(nr_irqs_gsi, highest_gsi() + 1);
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:33:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:33:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNENl-0001A4-JJ; Sat, 11 Apr 2020 11:33:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNENk-00019z-5i
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:04 +0000
X-Inumbo-ID: 34691ae8-7be8-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 34691ae8-7be8-11ea-9e09-bc764e2007e4;
 Sat, 11 Apr 2020 11:33:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=sXkauoX1uf6mGeJZsNtDs5ijs74rDGpcsWIhLujogiI=; b=m49C3yvo4/8/xwPMSzuJOqu8+w
 0wPPcmElKyzGrxKYjx+etOfplsjvO++y1jrcUdmtlozXy5bSJ2NZq0Q6DwBDkzxFEw0JS2T95pU/O
 TD//l3qzbKdODltEvua1Dys4fGFfibGtXOZqorcg/jvLTHBfiGQCBXFIy9kNS+nC0l38=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNENi-0005or-SD
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNENi-0003wG-QQ
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] AMD/IOMMU: fix off-by-one in
 amd_iommu_get_paging_mode() callers
Message-Id: <E1jNENi-0003wG-QQ@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:33:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 813757cf12eab38f3f86fc76a59d9e11749b4b27
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:29:00 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:29:00 2020 +0200

    AMD/IOMMU: fix off-by-one in amd_iommu_get_paging_mode() callers
    
    amd_iommu_get_paging_mode() expects a count, not a "maximum possible"
    value. Prior to b4f042236ae0 dropping the reference, the use of our mis-
    named "max_page" in amd_iommu_domain_init() may have lead to such a
    misunderstanding. In an attempt to avoid such confusion in the future,
    rename the function's parameter and - while at it - convert it to an
    inline function.
    
    Also replace a literal 4 by an expression tying it to a wider use
    constant, just like amd_iommu_quarantine_init() does.
    
    Fixes: ea38867831da ("x86 / iommu: set up a scratch page in the quarantine domain")
    Fixes: b4f042236ae0 ("AMD/IOMMU: Cease using a dynamic height for the IOMMU pagetables")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: b75b3c62fe4afe381c6f74a07f614c0b39fe2f5d
    master date: 2020-03-16 11:24:29 +0100
---
 xen/drivers/passthrough/amd/iommu_map.c       |  6 +++---
 xen/drivers/passthrough/amd/pci_amd_iommu.c   | 22 ++++------------------
 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h | 17 ++++++++++++++++-
 3 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu_map.c b/xen/drivers/passthrough/amd/iommu_map.c
index c05ed9c317..8f0ec3dc8e 100644
--- a/xen/drivers/passthrough/amd/iommu_map.c
+++ b/xen/drivers/passthrough/amd/iommu_map.c
@@ -653,9 +653,9 @@ void amd_iommu_share_p2m(struct domain *d)
 int __init amd_iommu_quarantine_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
-    unsigned long max_gfn =
-        PFN_DOWN((1ul << DEFAULT_DOMAIN_ADDRESS_WIDTH) - 1);
-    unsigned int level = amd_iommu_get_paging_mode(max_gfn);
+    unsigned long end_gfn =
+        1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT);
+    unsigned int level = amd_iommu_get_paging_mode(end_gfn);
     uint64_t *table;
 
     if ( hd->arch.root_table )
diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c
index 00b34bf930..a0555e30a4 100644
--- a/xen/drivers/passthrough/amd/pci_amd_iommu.c
+++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c
@@ -222,22 +222,6 @@ static int __must_check allocate_domain_resources(struct domain_iommu *hd)
     return rc;
 }
 
-int amd_iommu_get_paging_mode(unsigned long entries)
-{
-    int level = 1;
-
-    BUG_ON( !entries );
-
-    while ( entries > PTE_PER_TABLE_SIZE )
-    {
-        entries = PTE_PER_TABLE_ALIGN(entries) >> PTE_PER_TABLE_SHIFT;
-        if ( ++level > 6 )
-            return -ENOMEM;
-    }
-
-    return level;
-}
-
 static int amd_iommu_domain_init(struct domain *d)
 {
     struct domain_iommu *hd = dom_iommu(d);
@@ -250,8 +234,10 @@ static int amd_iommu_domain_init(struct domain *d)
      *   physical address space we give it, but this isn't known yet so use 4
      *   unilaterally.
      */
-    hd->arch.paging_mode = is_hvm_domain(d)
-        ? 4 : amd_iommu_get_paging_mode(get_upper_mfn_bound());
+    hd->arch.paging_mode = amd_iommu_get_paging_mode(
+        is_hvm_domain(d)
+        ? 1ul << (DEFAULT_DOMAIN_ADDRESS_WIDTH - PAGE_SHIFT)
+        : get_upper_mfn_bound() + 1);
 
     return 0;
 }
diff --git a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
index 5a160b89ca..53189806bb 100644
--- a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
+++ b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h
@@ -51,7 +51,6 @@ void get_iommu_features(struct amd_iommu *iommu);
 int amd_iommu_init(void);
 int amd_iommu_update_ivrs_mapping_acpi(void);
 
-int amd_iommu_get_paging_mode(unsigned long entries);
 int amd_iommu_quarantine_init(struct domain *d);
 
 /* mapping functions */
@@ -169,6 +168,22 @@ static inline unsigned long region_to_pages(unsigned long addr, unsigned long si
     return (PAGE_ALIGN(addr + size) - (addr & PAGE_MASK)) >> PAGE_SHIFT;
 }
 
+static inline int amd_iommu_get_paging_mode(unsigned long max_frames)
+{
+    int level = 1;
+
+    BUG_ON(!max_frames);
+
+    while ( max_frames > PTE_PER_TABLE_SIZE )
+    {
+        max_frames = PTE_PER_TABLE_ALIGN(max_frames) >> PTE_PER_TABLE_SHIFT;
+        if ( ++level > 6 )
+            return -ENOMEM;
+    }
+
+    return level;
+}
+
 static inline struct page_info* alloc_amd_iommu_pgtable(void)
 {
     struct page_info *pg;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:33:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:33:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNENv-0001Am-MI; Sat, 11 Apr 2020 11:33:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNENu-0001Ag-P2
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:14 +0000
X-Inumbo-ID: 3a6ebf06-7be8-11ea-8563-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3a6ebf06-7be8-11ea-8563-12813bfff9fa;
 Sat, 11 Apr 2020 11:33:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=//cQM2l1K3MvWd4I03R565y/idlRf33FukJZGbsCWnU=; b=gLP4gs4lUhSynoZSYFR9SKIdV9
 5Yn1iSa0QFrS9UpSWPq/bAaK+y2+PQq1iTmUtFmcrf6ytPOANsGMTtOt7QKPn0lsDzAaTuaeTDAhE
 XG07Clb1OO1IaSWlv6ufR1RoRxNxTs7feyBbSRj8girWKHnEHmeJhp3LBrquKfD9/Gww=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNENs-0005oy-V9
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNENs-0003wo-Ty
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/vPMU: don't blindly assume
 IA32_PERF_CAPABILITIES MSR exists
Message-Id: <E1jNENs-0003wo-Ty@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:33:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3c37292c844a23beffc802192600386e2ea6888c
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:30:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:30:14 2020 +0200

    x86/vPMU: don't blindly assume IA32_PERF_CAPABILITIES MSR exists
    
    Just like VMX'es lbr_tsx_fixup_check() the respective CPUID bit should
    be consulted first.
    
    Reported-by: Farrah Chen <farrah.chen@intel.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: 15c39c7c913f26fba40231e103ce1ffa6101e7c9
    master date: 2020-02-26 17:35:48 +0100
---
 xen/arch/x86/cpu/vpmu_intel.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/cpu/vpmu_intel.c b/xen/arch/x86/cpu/vpmu_intel.c
index 6e27f6ec8e..75aa11c6ad 100644
--- a/xen/arch/x86/cpu/vpmu_intel.c
+++ b/xen/arch/x86/cpu/vpmu_intel.c
@@ -900,7 +900,6 @@ int vmx_vpmu_initialise(struct vcpu *v)
 
 int __init core2_vpmu_init(void)
 {
-    u64 caps;
     unsigned int version = 0;
     unsigned int i;
 
@@ -932,8 +931,14 @@ int __init core2_vpmu_init(void)
 
     arch_pmc_cnt = core2_get_arch_pmc_count();
     fixed_pmc_cnt = core2_get_fixed_pmc_count();
-    rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
-    full_width_write = (caps >> 13) & 1;
+
+    if ( cpu_has_pdcm )
+    {
+        uint64_t caps;
+
+        rdmsrl(MSR_IA32_PERF_CAPABILITIES, caps);
+        full_width_write = (caps >> 13) & 1;
+    }
 
     fixed_ctrl_mask = ~((1ull << (fixed_pmc_cnt * FIXED_CTR_CTRL_BITS)) - 1);
     /* mask .AnyThread bits for all fixed counters */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:33:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEO4-0001CP-OU; Sat, 11 Apr 2020 11:33:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEO3-0001C9-NR
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:23 +0000
X-Inumbo-ID: 40701bde-7be8-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 40701bde-7be8-11ea-83d8-bc764e2007e4;
 Sat, 11 Apr 2020 11:33:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jTX9vHlSCTGehP/oQKumPJqM5jdg35x6vILL0ZGmXAk=; b=dKYfiV3xXFf3bU7C/ZM/JEDCDi
 sIKI9Xo83jL3VnKaPvmGDbihLfkegxcJz9ErNORMh4wiB3rY85RSkpvpy7mni0GVn5jhhByBwhuFC
 rDp6OAytfSeUXHJn7O9LpYVU1z+A7fuZ2TRiDFNB0vsVDkddCHLe+IfwIXYGgYxX5UJ8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEO3-0005p9-1X
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEO3-0003xO-0b
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/shim: fix ballooning up the guest
Message-Id: <E1jNEO3-0003xO-0b@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:33:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4c187457d1890067350c1770b84b75cea1d97214
Author:     Igor Druzhinin <igor.druzhinin@citrix.com>
AuthorDate: Thu Apr 9 09:30:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:30:58 2020 +0200

    x86/shim: fix ballooning up the guest
    
    args.preempted is meaningless here as it doesn't signal whether the
    hypercall was preempted before. Use start_extent instead which is
    correct (as long as the hypercall was invoked in a "normal" way).
    
    Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    master commit: 76dbabb59eeaa78e9f57407e5b15a6606488333e
    master date: 2020-03-18 12:55:54 +0100
---
 xen/common/memory.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/memory.c b/xen/common/memory.c
index 74d6880ffd..dbc06fb0bf 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -1198,8 +1198,8 @@ long do_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         }
 
 #ifdef CONFIG_X86
-        if ( pv_shim && op != XENMEM_decrease_reservation && !args.preempted )
-            /* Avoid calling pv_shim_online_memory when preempted. */
+        if ( pv_shim && op != XENMEM_decrease_reservation && !start_extent )
+            /* Avoid calling pv_shim_online_memory when in a continuation. */
             pv_shim_online_memory(args.nr_extents, args.extent_order);
 #endif
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:33:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:33:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEOF-0001Dm-Q4; Sat, 11 Apr 2020 11:33:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEOE-0001Dd-4z
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:34 +0000
X-Inumbo-ID: 466dffd8-7be8-11ea-8563-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 466dffd8-7be8-11ea-8563-12813bfff9fa;
 Sat, 11 Apr 2020 11:33:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Ytintk48UsVxPoxCsKhXl0QABnW8P5B+Dckw1Ijjd/0=; b=MpIxIsToJfSQDiFyJXYQEWT4mq
 WJK79R2A4ST3y4YmiSYFXooh9sHD4vLt1S/qUQ7kK094Y1YJxqTtYyRMxRCaFBaXOEc/NgOY9TEft
 hZ8pzjeRTxlg7/3XERZuBkLtQNNi1NpQ866FRaWRM+jG2xHDfTewUsJJ43zIEwso+nUk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEOD-0005pI-4N
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEOD-0003y5-3H
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/ucode: Fix error paths in apply_microcode()
Message-Id: <E1jNEOD-0003y5-3H@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:33:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 94f0bb7c3ff63b7322849cd80ed0d6c2b9998ee4
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:31:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:31:45 2020 +0200

    x86/ucode: Fix error paths in apply_microcode()
    
    In the unlikley case that patch application completes, but the resutling
    revision isn't expected, sig->rev doesn't get updated to match reality.
    
    It will get adjusted the next time collect_cpu_info() gets called, but in the
    meantime Xen might operate on a stale value.  Nothing good will come of this.
    
    Rewrite the logic to always update the stashed revision, before worrying about
    whether the attempt was a success or failure.
    
    Take the opportunity to make the printk() messages as consistent as possible.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: d2a0a96cf76603b2e2b87c3ce80c3f9d098327d4
    master date: 2020-03-26 18:57:45 +0000
---
 xen/arch/x86/microcode_amd.c   | 14 +++++++-------
 xen/arch/x86/microcode_intel.c | 21 +++++++++++----------
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 7a854c012f..01bd6d6cc1 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -194,7 +194,7 @@ static int apply_microcode(unsigned int cpu)
 {
     unsigned long flags;
     struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
-    uint32_t rev;
+    uint32_t rev, old_rev = uci->cpu_sig.rev;
     struct microcode_amd *mc_amd = uci->mc.mc_amd;
     struct microcode_header_amd *hdr;
     int hw_err;
@@ -215,6 +215,7 @@ static int apply_microcode(unsigned int cpu)
 
     /* get patch id after patching */
     rdmsrl(MSR_AMD_PATCHLEVEL, rev);
+    uci->cpu_sig.rev = rev;
 
     spin_unlock_irqrestore(&microcode_update_lock, flags);
 
@@ -227,15 +228,14 @@ static int apply_microcode(unsigned int cpu)
     /* check current patch id and patch's id for match */
     if ( hw_err || (rev != hdr->patch_id) )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed\n", cpu, rev, hdr->patch_id);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, hdr->patch_id, rev);
         return -EIO;
     }
 
-    printk(KERN_WARNING "microcode: CPU%d updated from revision %#x to %#x\n",
-           cpu, uci->cpu_sig.rev, hdr->patch_id);
-
-    uci->cpu_sig.rev = rev;
+    printk(XENLOG_WARNING "microcode: CPU%u updated from revision %#x to %#x\n",
+           cpu, old_rev, rev);
 
     return 0;
 }
diff --git a/xen/arch/x86/microcode_intel.c b/xen/arch/x86/microcode_intel.c
index 9657575c29..e511bd853c 100644
--- a/xen/arch/x86/microcode_intel.c
+++ b/xen/arch/x86/microcode_intel.c
@@ -281,9 +281,9 @@ static int apply_microcode(unsigned int cpu)
 {
     unsigned long flags;
     uint64_t msr_content;
-    unsigned int val[2];
     unsigned int cpu_num = raw_smp_processor_id();
     struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu_num);
+    uint32_t rev, old_rev = uci->cpu_sig.rev;
 
     /* We should bind the task to the CPU */
     BUG_ON(cpu_num != cpu);
@@ -303,23 +303,24 @@ static int apply_microcode(unsigned int cpu)
 
     /* get the current revision from MSR 0x8B */
     rdmsrl(MSR_IA32_UCODE_REV, msr_content);
-    val[1] = (uint32_t)(msr_content >> 32);
+    uci->cpu_sig.rev = rev = msr_content >> 32;
 
     spin_unlock_irqrestore(&microcode_update_lock, flags);
-    if ( val[1] != uci->mc.mc_intel->hdr.rev )
+
+    if ( rev != uci->mc.mc_intel->hdr.rev )
     {
-        printk(KERN_ERR "microcode: CPU%d update from revision "
-               "%#x to %#x failed. Resulting revision is %#x.\n", cpu_num,
-               uci->cpu_sig.rev, uci->mc.mc_intel->hdr.rev, val[1]);
+        printk(XENLOG_ERR
+               "microcode: CPU%u update rev %#x to %#x failed, result %#x\n",
+               cpu, old_rev, uci->mc.mc_intel->hdr.rev, rev);
         return -EIO;
     }
-    printk(KERN_INFO "microcode: CPU%d updated from revision "
-           "%#x to %#x, date = %04x-%02x-%02x \n",
-           cpu_num, uci->cpu_sig.rev, val[1],
+
+    printk(XENLOG_WARNING
+           "microcode: CPU%u updated from revision %#x to %#x, date = %04x-%02x-%02x\n",
+           cpu, old_rev, rev,
            uci->mc.mc_intel->hdr.date & 0xffff,
            uci->mc.mc_intel->hdr.date >> 24,
            (uci->mc.mc_intel->hdr.date >> 16) & 0xff);
-    uci->cpu_sig.rev = val[1];
 
     return 0;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:33:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:33:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEOP-0001Ev-5D; Sat, 11 Apr 2020 11:33:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEON-0001Ef-RN
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:43 +0000
X-Inumbo-ID: 4c6fba2a-7be8-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4c6fba2a-7be8-11ea-b58d-bc764e2007e4;
 Sat, 11 Apr 2020 11:33:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5O2H4L7uLB6oKLDT/PxDfXRGq+RUgcn1i8bGBiWHaso=; b=1csPfa2ub38IWAGXtzdrCIGsvP
 iBbXVWs5jpoc8KjLUfmN7Dla75Yd7UnfHrODlw2/jhViDYJSps9Eahjp7z3ySbSECEiVdvijvXraK
 Kez/APGJrRWChUcfS/aBmrDFI5FREDjdi1imaPiCG0ezqnqND5w2B+4XLrmVyPKbRM+U=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEON-0005pT-6s
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEON-0003yj-5x
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] libx86/CPUID: fix (not just) leaf 7 processing
Message-Id: <E1jNEON-0003yj-5x@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:33:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 736c67bc46a333b24a9b0ffc902768ab96505ad6
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:32:36 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:32:36 2020 +0200

    libx86/CPUID: fix (not just) leaf 7 processing
    
    x86_cpuid_policy_fill_native() should, as it did originally, iterate
    over all subleaves here as well as over all main leaves. Switch to
    using a "<= MIN()"-based approach similar to that used in
    x86_cpuid_copy_to_buffer(). Also follow this for the extended main
    leaves then.
    
    Fixes: 1bd2b750537b ("libx86: Fix 32bit stubdom build of x86_cpuid_policy_fill_native()")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: eb0bad81fceb3e81df5f73441771b49b732edf56
    master date: 2020-03-27 11:40:59 +0100
---
 xen/lib/x86/cpuid.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c
index 5a3159b357..2e99e30dc9 100644
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -7,8 +7,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
     unsigned int i;
 
     cpuid_leaf(0, &p->basic.raw[0]);
-    for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->basic.raw),
-                           p->basic.max_leaf); ++i )
+    for ( i = 1; i <= MIN(p->basic.max_leaf,
+                          ARRAY_SIZE(p->basic.raw) - 1); ++i )
     {
         switch ( i )
         {
@@ -52,8 +52,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
     {
         cpuid_count_leaf(7, 0, &p->feat.raw[0]);
 
-        for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->feat.raw),
-                               p->feat.max_subleaf); ++i )
+        for ( i = 1; i <= MIN(p->feat.max_subleaf,
+                              ARRAY_SIZE(p->feat.raw) - 1); ++i )
             cpuid_count_leaf(7, i, &p->feat.raw[i]);
     }
 
@@ -106,8 +106,8 @@ void x86_cpuid_policy_fill_native(struct cpuid_policy *p)
 
     /* Extended leaves. */
     cpuid_leaf(0x80000000, &p->extd.raw[0]);
-    for ( i = 1; i < min_t(unsigned int, ARRAY_SIZE(p->extd.raw),
-                           p->extd.max_leaf + 1 - 0x80000000); ++i )
+    for ( i = 1; i <= MIN(p->extd.max_leaf & 0xffffU,
+                          ARRAY_SIZE(p->extd.raw) - 1); ++i )
         cpuid_leaf(0x80000000 + i, &p->extd.raw[i]);
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:33:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:33:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEOZ-0001GO-7R; Sat, 11 Apr 2020 11:33:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEOY-0001GB-1H
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:54 +0000
X-Inumbo-ID: 527b90c4-7be8-11ea-8563-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 527b90c4-7be8-11ea-8563-12813bfff9fa;
 Sat, 11 Apr 2020 11:33:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ddrXypSkKS2pyOx6bLUtRvKHxHSUauCDKi3JMKfR3I0=; b=ipRgLwZ2F8MazwJeyGAhTXu8pA
 c2ee7JIntIoMw1D1aUGHhRpVL0QNgSpsi8rJxKeYyCOhX7LnX2DVAnSPt0a+pzKwH89jO0TjHcNi1
 Wcf4lWmZ+r1nNkYz+4sgNF2Jn+HsSl7RVRKMF7353WoUvmijO0l2LrIFokpXqgkDFqOw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEOX-0005q8-9q
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEOX-0003zj-8n
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:33:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/ucode/amd: Fix potential buffer overrun with
 equiv table handling
Message-Id: <E1jNEOX-0003zj-8n@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:33:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f3264407d0feadd948359242ac346567d8afa23a
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:33:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:33:20 2020 +0200

    x86/ucode/amd: Fix potential buffer overrun with equiv table handling
    
    find_equiv_cpu_id() loops until it finds a 0 installed_cpu entry.  Well formed
    AMD microcode containers have this property.
    
    Extend the checking in install_equiv_cpu_table() to reject tables which don't
    have a sentinal at the end.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 1f97b6b9f1b5978659c5735954c37c130e7bb151
    master date: 2020-03-27 13:13:26 +0000
---
 xen/arch/x86/microcode_amd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 01bd6d6cc1..4a75cab684 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -297,6 +297,7 @@ static int install_equiv_cpu_table(
     size_t *offset)
 {
     const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct equiv_cpu_entry *eq;
 
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
@@ -306,7 +307,9 @@ static int install_equiv_cpu_table(
         return -EINVAL;
     }
 
-    if ( mpbuf->len == 0 )
+    if ( mpbuf->len == 0 || mpbuf->len % sizeof(*eq) ||
+         (eq = (const void *)mpbuf->data,
+          eq[(mpbuf->len / sizeof(*eq)) - 1].installed_cpu) )
     {
         printk(KERN_ERR "microcode: Wrong microcode equivalent cpu table length\n");
         return -EINVAL;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:34:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:34:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEOk-0001IB-9E; Sat, 11 Apr 2020 11:34:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEOi-0001Hr-Dd
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:04 +0000
X-Inumbo-ID: 5876552c-7be8-11ea-8563-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5876552c-7be8-11ea-8563-12813bfff9fa;
 Sat, 11 Apr 2020 11:34:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=dfFPgEl7bJDiePgjn2mPNQs25XmDMr7N2xKn6uj4cI8=; b=jEUCHGYJxlVGZnumUzMBlUStl4
 hjVXEnWvVGDtBvg/YXQW6FznDP317vcilErnmarwq+tWDBtuBnrKyzPhyBQXOICgaTmlGroWuPizd
 h7EYCk/kDMhmr/MmtxofFoad6qI4lirEw5cKEpaKd0hM1I3GZbEqYjbQ45jWsSU5V7H4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEOh-0005qf-Cb
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEOh-00040Z-BW
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/HVM: fix AMD ECS handling for Fam10
Message-Id: <E1jNEOh-00040Z-BW@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:34:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e282e87f151adab1b269cafc404e0f554d896a45
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 9 09:34:19 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:34:19 2020 +0200

    x86/HVM: fix AMD ECS handling for Fam10
    
    The involved comparison was, very likely inadvertently, converted from
    >= to > when making changes unrelated to the actual family range.
    
    Fixes: 9841eb71ea87 ("x86/cpuid: Drop a guests cached x86 family and model information")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    master commit: 5d515b1c296ebad6889748ea1e49e063453216a3
    master date: 2020-04-01 12:28:30 +0200
---
 xen/arch/x86/hvm/ioreq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/ioreq.c b/xen/arch/x86/hvm/ioreq.c
index 3b9d96bbc0..f7466bf4bd 100644
--- a/xen/arch/x86/hvm/ioreq.c
+++ b/xen/arch/x86/hvm/ioreq.c
@@ -1287,7 +1287,7 @@ struct hvm_ioreq_server *hvm_select_ioreq_server(struct domain *d,
         if ( CF8_ADDR_HI(cf8) &&
              d->arch.cpuid->x86_vendor == X86_VENDOR_AMD &&
              (x86_fam = get_cpu_family(
-                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) > 0x10 &&
+                 d->arch.cpuid->basic.raw_fms, NULL, NULL)) >= 0x10 &&
              x86_fam < 0x17 )
         {
             uint64_t msr_val;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:34:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:34:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEOu-0001KP-Ax; Sat, 11 Apr 2020 11:34:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEOs-0001JK-5Y
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:14 +0000
X-Inumbo-ID: 5e772b90-7be8-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5e772b90-7be8-11ea-9e09-bc764e2007e4;
 Sat, 11 Apr 2020 11:34:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=M9GPjdGPC9v0jlkeVMuAcEkR4osKVCrTjfkTARwP/+Y=; b=CbO3puT3VcSxRr2JQ3c732ZkuD
 9SdilnE7z/tLOueeYki4UINxCsRw+cs3/ygka4heb+V7NW6mo6b1tYww0ZRKQwAHeqb5lnuj+deWI
 tydgnrdqVVX3W5pGnCRfG7WjpL5sVjzeDhVeDKSNGq7xzlrqIk3VZy6mNocHd4A021ck=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEOr-0005qo-FH
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEOr-00041W-EC
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/ucode/amd: Fix more potential buffer overruns
 with microcode parsing
Message-Id: <E1jNEOr-00041W-EC@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:34:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9a082e14c66947f0acc4ca05d563b76a50571638
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 09:35:24 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:35:24 2020 +0200

    x86/ucode/amd: Fix more potential buffer overruns with microcode parsing
    
    cpu_request_microcode() doesn't know the buffer is at least 4 bytes long
    before inspecting UCODE_MAGIC.
    
    install_equiv_cpu_table() doesn't know the boundary of the buffer it is
    interpreting as an equivalency table.  This case was clearly observed at one
    point in the past, given the subsequent overrun detection, but without
    comprehending that the damage was already done.
    
    Make the logic consistent with container_fast_forward() and pass size_left in
    to install_equiv_cpu_table().
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 718d1432000079ea7120f6cb770372afe707ce27
    master date: 2020-04-01 14:00:12 +0100
---
 xen/arch/x86/microcode_amd.c | 26 ++++++++++++--------------
 1 file changed, 12 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/microcode_amd.c
index 4a75cab684..d672c60713 100644
--- a/xen/arch/x86/microcode_amd.c
+++ b/xen/arch/x86/microcode_amd.c
@@ -294,11 +294,20 @@ static int get_ucode_from_buffer_amd(
 static int install_equiv_cpu_table(
     struct microcode_amd *mc_amd,
     const void *data,
+    size_t size_left,
     size_t *offset)
 {
-    const struct mpbhdr *mpbuf = data + *offset + 4;
+    const struct mpbhdr *mpbuf;
     const struct equiv_cpu_entry *eq;
 
+    if ( size_left < (sizeof(*mpbuf) + 4) ||
+         (mpbuf = data + *offset + 4,
+          size_left - sizeof(*mpbuf) - 4 < mpbuf->len) )
+    {
+        printk(XENLOG_WARNING "microcode: No space for equivalent cpu table\n");
+        return -EINVAL;
+    }
+
     *offset += mpbuf->len + CONT_HDR_SIZE;	/* add header length */
 
     if ( mpbuf->type != UCODE_EQUIV_CPU_TABLE_TYPE )
@@ -413,7 +422,7 @@ static int cpu_request_microcode(unsigned int cpu, const void *buf,
 
     current_cpu_id = cpuid_eax(0x00000001);
 
-    if ( *(const uint32_t *)buf != UCODE_MAGIC )
+    if ( bufsize < 4 || *(const uint32_t *)buf != UCODE_MAGIC )
     {
         printk(KERN_ERR "microcode: Wrong microcode patch file magic\n");
         error = -EINVAL;
@@ -443,24 +452,13 @@ static int cpu_request_microcode(unsigned int cpu, const void *buf,
      */
     while ( offset < bufsize )
     {
-        error = install_equiv_cpu_table(mc_amd, buf, &offset);
+        error = install_equiv_cpu_table(mc_amd, buf, bufsize - offset, &offset);
         if ( error )
         {
             printk(KERN_ERR "microcode: installing equivalent cpu table failed\n");
             break;
         }
 
-        /*
-         * Could happen as we advance 'offset' early
-         * in install_equiv_cpu_table
-         */
-        if ( offset > bufsize )
-        {
-            printk(KERN_ERR "microcode: Microcode buffer overrun\n");
-            error = -EINVAL;
-            break;
-        }
-
         if ( find_equiv_cpu_id(mc_amd->equiv_cpu_table, current_cpu_id,
                                &equiv_cpu_id) )
             break;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:34:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:34:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEP3-0001Lw-EE; Sat, 11 Apr 2020 11:34:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEP2-0001Ll-Nb
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:24 +0000
X-Inumbo-ID: 638d0489-7be8-11ea-8563-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 638d0489-7be8-11ea-8563-12813bfff9fa;
 Sat, 11 Apr 2020 11:34:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=u8Q65qC4sNj4Yx02zbWVMhp4GOJbqUu34I2fgnqhM3Y=; b=yhT2XVigamb33hFVDb52NST+nD
 95gZ7L3JbhFQlJxQ6YE8jQCMLR7iRoChZXWMvS/b06n0vZFIEtHHf3GkayGzgYqBaO2vV/ONOGBc+
 x8a7N0l1t+2b7qNsY40a3+frV5W0TSqeADDQ+SkQ4CltEIjjBwr7768I4VllISdF7xr4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEP1-0005r1-IP
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEP1-00043Z-HR
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] credit2: avoid vCPUs to ever reach lower credits
 than idle
Message-Id: <E1jNEP1-00043Z-HR@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:34:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4c69d1c2dbe0ad1f5343852d9e596fe870892a6c
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 09:36:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:36:08 2020 +0200

    credit2: avoid vCPUs to ever reach lower credits than idle
    
    There have been report of stalls of guest vCPUs, when Credit2 was used.
    It seemed like these vCPUs were not getting scheduled for very long
    time, even under light load conditions (e.g., during dom0 boot).
    
    Investigations led to the discovery that --although rarely-- it can
    happen that a vCPU manages to run for very long timeslices. In Credit2,
    this means that, when runtime accounting happens, the vCPU will lose a
    large quantity of credits. This in turn may lead to the vCPU having less
    credits than the idle vCPUs (-2^30). At this point, the scheduler will
    pick the idle vCPU, instead of the ready to run vCPU, for a few
    "epochs", which often times is enough for the guest kernel to think the
    vCPU is not responding and crashing.
    
    An example of this situation is shown here. In fact, we can see d0v1
    sitting in the runqueue while all the CPUs are idle, as it has
    -1254238270 credits, which is smaller than -2^30 = −1073741824:
    
        (XEN) Runqueue 0:
        (XEN)   ncpus              = 28
        (XEN)   cpus               = 0-27
        (XEN)   max_weight         = 256
        (XEN)   pick_bias          = 22
        (XEN)   instload           = 1
        (XEN)   aveload            = 293391 (~111%)
        (XEN)   idlers: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        (XEN)   tickled: 00,00000000,00000000,00000000,00000000,00000000,00000000
        (XEN)   fully idle cores: 00,00000000,00000000,00000000,00000000,00000000,0fffffff
        [...]
        (XEN) Runqueue 0:
        (XEN) CPU[00] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[01] runq=0, sibling=00,..., core=00,...
        [...]
        (XEN) CPU[26] runq=0, sibling=00,..., core=00,...
        (XEN) CPU[27] runq=0, sibling=00,..., core=00,...
        (XEN) RUNQ:
        (XEN)     0: [0.1] flags=0 cpu=5 credit=-1254238270 [w=256] load=262144 (~100%)
    
    We certainly don't want, under any circumstance, this to happen.
    Let's, therefore, define a minimum amount of credits a vCPU can have.
    During accounting, we make sure that, for however long the vCPU has
    run, it will never get to have less than such minimum amount of
    credits. Then, we set the credits of the idle vCPU to an even
    smaller value.
    
    NOTE: investigations have been done about _how_ it is possible for a
    vCPU to execute for so much time that its credits becomes so low. While
    still not completely clear, there are evidence that:
    - it only happens very rarely,
    - it appears to be both machine and workload specific,
    - it does not look to be a Credit2 (e.g., as it happens when
      running with Credit1 as well) issue, or a scheduler issue.
    
    This patch makes Credit2 more robust to events like this, whatever
    the cause is, and should hence be backported (as far as possible).
    
    Reported-by: Glen <glenbarney@gmail.com>
    Reported-by: Tomas Mozes <hydrapolic@gmail.com>
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    master commit: 36f3662f27dec32d76c0edb4c6b62b9628d6869d
    master date: 2020-04-03 10:45:43 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  5 ++---
 xen/common/sched_credit2.c | 53 ++++++++++++++++++++++++----------------------
 3 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index d6e7e3f800..8f126f65f1 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -55,7 +55,7 @@
 0x00022204  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_add
 0x00022205  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle_check   [ dom:vcpu = 0x%(1)08x, credit = %(2)d, score = %(3)d ]
 0x00022206  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:tickle         [ cpu = %(1)d ]
-0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d, mult = %(4)d ]
+0x00022207  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:credit_reset   [ dom:vcpu = 0x%(1)08x, cr_start = %(2)d, cr_end = %(3)d ]
 0x00022208  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:sched_tasklet
 0x00022209  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:update_load
 0x0002220a  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_assign    [ dom:vcpu = 0x%(1)08x, rq_id = %(2)d ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index aa894673ad..d3c8368e9d 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7718,13 +7718,12 @@ void sched_process(struct pcpu_info *p)
                 struct {
                     unsigned int vcpuid:16, domid:16;
                     int credit_start, credit_end;
-                    unsigned int multiplier;
                 } *r = (typeof(r))ri->d;
 
                 printf(" %s csched2:reset_credits d%uv%u, "
-                       "credit_start = %d, credit_end = %d, mult = %u\n",
+                       "credit_start = %d, credit_end = %d\n",
                        ri->dump_header, r->domid, r->vcpuid,
-                       r->credit_start, r->credit_end, r->multiplier);
+                       r->credit_start, r->credit_end);
             }
             break;
         case TRC_SCHED_CLASS_EVT(CSCHED2, 8):  /* SCHED_TASKLET    */
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index e24c1f7762..4e7f0aa29e 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -228,11 +228,21 @@
  */
 #define CSCHED2_CREDIT_INIT          MILLISECS(10)
 /*
+ * Minimum amount of credits VMs can have. Ideally, no VM would get
+ * close to this (unless a vCPU manages to execute for really long
+ * time uninterrupted). In case it happens, it makes no sense to
+ * track even deeper undershoots.
+ *
+ * NOTE: If making this smaller than -CSCHED2_CREDIT_INIT, adjust
+ * reset_credit() accordingly.
+ */
+#define CSCHED2_CREDIT_MIN           (-CSCHED2_CREDIT_INIT)
+/*
  * Amount of credit the idle vcpus have. It never changes, as idle
  * vcpus does not consume credits, and it must be lower than whatever
  * amount of credit 'regular' vcpu would end up with.
  */
-#define CSCHED2_IDLE_CREDIT          (-(1U<<30))
+#define CSCHED2_IDLE_CREDIT          (CSCHED2_CREDIT_MIN-1)
 /*
  * Carryover: How much "extra" credit may be carried over after
  * a reset.
@@ -775,10 +785,15 @@ static int get_fallback_cpu(struct csched2_vcpu *svc)
 static void t2c_update(struct csched2_runqueue_data *rqd, s_time_t time,
                           struct csched2_vcpu *svc)
 {
-    uint64_t val = time * rqd->max_weight + svc->residual;
+    int64_t val = time * rqd->max_weight + svc->residual;
 
     svc->residual = do_div(val, svc->weight);
-    svc->credit -= val;
+    /* Getting to lower credit than CSCHED2_CREDIT_MIN makes no sense. */
+    val = svc->credit - val;
+    if ( unlikely(val < CSCHED2_CREDIT_MIN) )
+        svc->credit = CSCHED2_CREDIT_MIN;
+    else
+        svc->credit = val;
 }
 
 static s_time_t c2t(struct csched2_runqueue_data *rqd, s_time_t credit, struct csched2_vcpu *svc)
@@ -1618,28 +1633,25 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
 {
     struct csched2_runqueue_data *rqd = c2rqd(ops, cpu);
     struct list_head *iter;
-    int m;
+    int reset = CSCHED2_CREDIT_INIT;
 
     /*
      * Under normal circumstances, snext->credit should never be less
      * than -CSCHED2_MIN_TIMER.  However, under some circumstances, a
      * vcpu with low credits may be allowed to run long enough that
-     * its credits are actually less than -CSCHED2_CREDIT_INIT.
+     * its credits are actually much lower than that.
      * (Instances have been observed, for example, where a vcpu with
      * 200us of credit was allowed to run for 11ms, giving it -10.8ms
      * of credit.  Thus it was still negative even after the reset.)
      *
      * If this is the case for snext, we simply want to keep moving
-     * everyone up until it is in the black again.  This fair because
-     * none of the other vcpus want to run at the moment.
-     *
-     * Rather than looping, however, we just calculate a multiplier,
-     * avoiding an integer division and multiplication in the common
-     * case.
+     * everyone up until it is in the black again. This means that,
+     * since CSCHED2_CREDIT_MIN is -CSCHED2_CREDIT_INIT, we need to
+     * actually add 2*CSCHED2_CREDIT_INIT.
      */
-    m = 1;
-    if ( snext->credit < -CSCHED2_CREDIT_INIT )
-        m += (-snext->credit) / CSCHED2_CREDIT_INIT;
+    ASSERT(snext->credit >= CSCHED2_CREDIT_MIN);
+    if ( unlikely(snext->credit == CSCHED2_CREDIT_MIN) )
+        reset += CSCHED2_CREDIT_INIT;
 
     list_for_each( iter, &rqd->svc )
     {
@@ -1670,15 +1682,7 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
         }
 
         start_credit = svc->credit;
-
-        /*
-         * Add INIT * m, avoiding integer multiplication in the common case.
-         */
-        if ( likely(m==1) )
-            svc->credit += CSCHED2_CREDIT_INIT;
-        else
-            svc->credit += m * CSCHED2_CREDIT_INIT;
-
+        svc->credit += reset;
         /* "Clip" credits to max carryover */
         if ( svc->credit > CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX )
             svc->credit = CSCHED2_CREDIT_INIT + CSCHED2_CARRYOVER_MAX;
@@ -1690,19 +1694,18 @@ static void reset_credit(const struct scheduler *ops, int cpu, s_time_t now,
             struct {
                 unsigned vcpu:16, dom:16;
                 int credit_start, credit_end;
-                unsigned multiplier;
             } d;
             d.dom = svc->vcpu->domain->domain_id;
             d.vcpu = svc->vcpu->vcpu_id;
             d.credit_start = start_credit;
             d.credit_end = svc->credit;
-            d.multiplier = m;
             __trace_var(TRC_CSCHED2_CREDIT_RESET, 1,
                         sizeof(d),
                         (unsigned char *)&d);
         }
     }
 
+    ASSERT(snext->credit > 0);
     SCHED_STAT_CRANK(credit_reset);
 
     /* No need to resort runqueue, as everyone's order should be the same. */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:34:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:34:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEPD-0001NT-Fx; Sat, 11 Apr 2020 11:34:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEPC-0001NI-KS
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:34 +0000
X-Inumbo-ID: 6a82467c-7be8-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6a82467c-7be8-11ea-b4f4-bc764e2007e4;
 Sat, 11 Apr 2020 11:34:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=txrUSxBq+1Oo0/eIKw+yicbUxoBjZjwjibx0YhWOcOM=; b=3tQDG1Ix2GbS2TDn6CAsfVskRU
 +ddh9WxV/IGdzU3f+59/V841nc5KNNlhgWBS17rdS/N59z/sTTodm2kUwe0QQELpZau86vacrtJuK
 +ybXOO/j8gl2d3Zbp5o/ZQs7E1WZTDJj5IFU68y66HSw+WIe8f+5KqY0ilttZFMGUsAc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPB-0005rA-La
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPB-00044Y-Ke
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] credit2: fix credit reset happening too few times
Message-Id: <E1jNEPB-00044Y-Ke@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:34:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c1a1c4e8fb54038aee36305531426da4e3ad3872
Author:     Dario Faggioli <dfaggioli@suse.com>
AuthorDate: Thu Apr 9 09:36:51 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 9 09:36:51 2020 +0200

    credit2: fix credit reset happening too few times
    
    There is a bug in commit 5e4b4199667b9 ("xen: credit2: only reset
    credit on reset condition"). In fact, the aim of that commit was to
    make sure that we do not perform too many credit reset operations
    (which are not super cheap, and in an hot-path). But the check used
    to determine whether a reset is necessary was the wrong one.
    
    In fact, knowing just that some vCPUs have been skipped, while
    traversing the runqueue (in runq_candidate()), is not enough. We
    need to check explicitly whether the first vCPU in the runqueue
    has a negative amount of credit.
    
    Since a trace record is changed, this patch updates xentrace format file
    and xenalyze as well
    
    This should be backported.
    
    Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
    Acked-by: George Dunlap <george.dunlap@citrix.com>
    master commit: dae7b62e976b28af9c8efa150618c25501bf1650
    master date: 2020-04-03 10:46:53 +0200
---
 tools/xentrace/formats     |  2 +-
 tools/xentrace/xenalyze.c  |  8 +++-----
 xen/common/sched_credit2.c | 28 ++++++++++++----------------
 3 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/tools/xentrace/formats b/tools/xentrace/formats
index 8f126f65f1..deac4d8598 100644
--- a/tools/xentrace/formats
+++ b/tools/xentrace/formats
@@ -67,7 +67,7 @@
 0x00022210  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_check     [ lrq_id[16]:orq_id[16] = 0x%(1)08x, delta = %(2)d ]
 0x00022211  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:load_balance   [ l_bavgload = 0x%(2)08x%(1)08x, o_bavgload = 0x%(4)08x%(3)08x, lrq_id[16]:orq_id[16] = 0x%(5)08x ]
 0x00022212  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:pick_cpu       [ b_avgload = 0x%(2)08x%(1)08x, dom:vcpu = 0x%(3)08x, rq_id[16]:new_cpu[16] = %(4)d ]
-0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(4)d, skipped_vcpus = %(3)d, tickled_cpu = %(2)d ]
+0x00022213  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_candidate [ dom:vcpu = 0x%(1)08x, credit = %(3)d, tickled_cpu = %(2)d ]
 0x00022214  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:schedule       [ rq:cpu = 0x%(1)08x, tasklet[8]:idle[8]:smt_idle[8]:tickled[8] = %(2)08x ]
 0x00022215  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:ratelimit      [ dom:vcpu = 0x%(1)08x, runtime = %(2)d ]
 0x00022216  CPU%(cpu)d  %(tsc)d (+%(reltsc)8d)  csched2:runq_cand_chk  [ dom:vcpu = 0x%(1)08x ]
diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
index d3c8368e9d..b7f4e2bea8 100644
--- a/tools/xentrace/xenalyze.c
+++ b/tools/xentrace/xenalyze.c
@@ -7855,14 +7855,12 @@ void sched_process(struct pcpu_info *p)
             if (opt.dump_all) {
                 struct {
                     unsigned vcpuid:16, domid:16;
-                    unsigned tickled_cpu, skipped;
+                    unsigned tickled_cpu;
                     int credit;
                 } *r = (typeof(r))ri->d;
 
-                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, "
-                       "%u vcpus skipped, ",
-                       ri->dump_header, r->domid, r->vcpuid,
-                       r->credit, r->skipped);
+                printf(" %s csched2:runq_candidate d%uv%u, credit = %d, ",
+                       ri->dump_header, r->domid, r->vcpuid, r->credit);
                 if (r->tickled_cpu == (unsigned)-1)
                     printf("no cpu was tickled\n");
                 else
diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c
index 4e7f0aa29e..d6ebd126de 100644
--- a/xen/common/sched_credit2.c
+++ b/xen/common/sched_credit2.c
@@ -3260,16 +3260,13 @@ csched2_runtime(const struct scheduler *ops, int cpu,
 static struct csched2_vcpu *
 runq_candidate(struct csched2_runqueue_data *rqd,
                struct csched2_vcpu *scurr,
-               int cpu, s_time_t now,
-               unsigned int *skipped)
+               int cpu, s_time_t now)
 {
     struct list_head *iter, *temp;
     struct csched2_vcpu *snext = NULL;
     struct csched2_private *prv = csched2_priv(per_cpu(scheduler, cpu));
     bool yield = false, soft_aff_preempt = false;
 
-    *skipped = 0;
-
     if ( unlikely(is_idle_vcpu(scurr->vcpu)) )
     {
         snext = scurr;
@@ -3366,10 +3363,7 @@ runq_candidate(struct csched2_runqueue_data *rqd,
 
         /* Only consider vcpus that are allowed to run on this processor. */
         if ( !cpumask_test_cpu(cpu, svc->vcpu->cpu_hard_affinity) )
-        {
-            (*skipped)++;
             continue;
-        }
 
         /*
          * If a vcpu is meant to be picked up by another processor, and such
@@ -3378,7 +3372,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->tickled_cpu != -1 && svc->tickled_cpu != cpu &&
              cpumask_test_cpu(svc->tickled_cpu, &rqd->tickled) )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(deferred_to_tickled_cpu);
             continue;
         }
@@ -3390,7 +3383,6 @@ runq_candidate(struct csched2_runqueue_data *rqd,
         if ( svc->vcpu->processor != cpu
              && snext->credit + CSCHED2_MIGRATE_RESIST > svc->credit )
         {
-            (*skipped)++;
             SCHED_STAT_CRANK(migrate_resisted);
             continue;
         }
@@ -3413,14 +3405,13 @@ runq_candidate(struct csched2_runqueue_data *rqd,
     {
         struct {
             unsigned vcpu:16, dom:16;
-            unsigned tickled_cpu, skipped;
+            unsigned tickled_cpu;
             int credit;
         } d;
         d.dom = snext->vcpu->domain->domain_id;
         d.vcpu = snext->vcpu->vcpu_id;
         d.credit = snext->credit;
         d.tickled_cpu = snext->tickled_cpu;
-        d.skipped = *skipped;
         __trace_var(TRC_CSCHED2_RUNQ_CANDIDATE, 1,
                     sizeof(d),
                     (unsigned char *)&d);
@@ -3451,7 +3442,6 @@ csched2_schedule(
     struct csched2_runqueue_data *rqd;
     struct csched2_vcpu * const scurr = csched2_vcpu(current);
     struct csched2_vcpu *snext = NULL;
-    unsigned int skipped_vcpus = 0;
     struct task_slice ret;
     bool tickled;
 
@@ -3529,7 +3519,7 @@ csched2_schedule(
         snext = csched2_vcpu(idle_vcpu[cpu]);
     }
     else
-        snext = runq_candidate(rqd, scurr, cpu, now, &skipped_vcpus);
+        snext = runq_candidate(rqd, scurr, cpu, now);
 
     /* If switching from a non-idle runnable vcpu, put it
      * back on the runqueue. */
@@ -3543,6 +3533,8 @@ csched2_schedule(
     /* Accounting for non-idle tasks */
     if ( !is_idle_vcpu(snext->vcpu) )
     {
+        int top_credit;
+
         /* If switching, remove this from the runqueue and mark it scheduled */
         if ( snext != scurr )
         {
@@ -3570,11 +3562,15 @@ csched2_schedule(
          *  2) no other vcpu with higher credits wants to run.
          *
          * Here, where we want to check for reset, we need to make sure the
-         * proper vcpu is being used. In fact, runqueue_candidate() may have
-         * not returned the first vcpu in the runqueue, for various reasons
+         * proper vcpu is being used. In fact, runq_candidate() may have not
+         * returned the first vcpu in the runqueue, for various reasons
          * (e.g., affinity). Only trigger a reset when it does.
          */
-        if ( skipped_vcpus == 0 && snext->credit <= CSCHED2_CREDIT_RESET )
+        if ( list_empty(&rqd->runq) )
+            top_credit = snext->credit;
+        else
+            top_credit = max(snext->credit, runq_elem(rqd->runq.next)->credit);
+        if ( top_credit <= CSCHED2_CREDIT_RESET )
         {
             reset_credit(ops, cpu, now, snext);
             balance_load(ops, cpu, now);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:34:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:34:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEPN-0001Oh-Hl; Sat, 11 Apr 2020 11:34:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEPM-0001OZ-EZ
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:44 +0000
X-Inumbo-ID: 70833ee6-7be8-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 70833ee6-7be8-11ea-b58d-bc764e2007e4;
 Sat, 11 Apr 2020 11:34:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5vFWfTg+nynVsfICOgxAqPyt6MhX1fZjcMxYyH8vD6E=; b=WYJheF5mM6sWWH172/Sclc2rvc
 znSXxX9krZ5DIIWWsbS/WpXlwIk5Mne1kpTfGubvzC9c/j8WGDUMQf7/SXoFRp4aa19Zi1KKRnixU
 em2ML3TjNcVpYic1c41flwrIU8t41TSCqUrl0nPXSc1jf76l1k3lBUeEu5ymaeXlsw0I=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPL-0005rL-OF
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPL-00045h-NN
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xen/arm: Handle unimplemented VGICv3 registers as
 RAZ/WI
Message-Id: <E1jNEPL-00045h-NN@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:34:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 752558e68eef32f74fc11c51fcac10d3147f928b
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Feb 4 14:51:50 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:33:53 2020 -0700

    xen/arm: Handle unimplemented VGICv3 registers as RAZ/WI
    
    Per the ARM Generic Interrupt Controller Architecture Specification (ARM
    IHI 0069E), reserved registers should generally be treated as RAZ/WI.
    To simplify the VGICv3 design and improve guest compatibility, treat the
    default case for GICD and GICR registers as read_as_zero/write_ignore.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit 69da7d5440c609c57c5bba9a73b91c62ba2852e6)
---
 xen/arch/arm/vgic-v3.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 474be134c1..6195565fa0 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -320,7 +320,7 @@ static int __vgic_v3_rdistr_rd_mmio_read(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto read_as_zero;
     }
 bad_width:
     printk(XENLOG_G_ERR "%pv vGICR: bad read width %d r%d offset %#08x\n",
@@ -337,6 +337,10 @@ read_as_zero_32:
     *r = 0;
     return 1;
 
+read_as_zero:
+    *r = 0;
+    return 1;
+
 read_impl_defined:
     printk(XENLOG_G_DEBUG
            "%pv: vGICR: RAZ on implementation defined register offset %#08x\n",
@@ -638,7 +642,7 @@ static int __vgic_v3_rdistr_rd_mmio_write(struct vcpu *v, mmio_info_t *info,
     default:
         printk(XENLOG_G_ERR "%pv: vGICR: unhandled write r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto write_ignore;
     }
 bad_width:
     printk(XENLOG_G_ERR
@@ -654,6 +658,9 @@ write_ignore_32:
     if ( dabt.size != DABT_WORD ) goto bad_width;
     return 1;
 
+write_ignore:
+    return 1;
+
 write_impl_defined:
     printk(XENLOG_G_DEBUG
            "%pv: vGICR: WI on implementation defined register offset %#08x\n",
@@ -925,7 +932,7 @@ static int vgic_v3_rdistr_sgi_mmio_read(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: SGI: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto read_as_zero;
     }
 bad_width:
     printk(XENLOG_G_ERR "%pv: vGICR: SGI: bad read width %d r%d offset %#08x\n",
@@ -1002,7 +1009,7 @@ static int vgic_v3_rdistr_sgi_mmio_write(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICR: SGI: unhandled write r%d offset %#08x\n",
                v, dabt.reg, gicr_reg);
-        return 0;
+        goto write_ignore;
     }
 
 bad_width:
@@ -1014,6 +1021,9 @@ bad_width:
 write_ignore_32:
     if ( dabt.size != DABT_WORD ) goto bad_width;
     return 1;
+
+write_ignore:
+    return 1;
 }
 
 static struct vcpu *get_vcpu_from_rdist(struct domain *d,
@@ -1252,7 +1262,7 @@ static int vgic_v3_distr_mmio_read(struct vcpu *v, mmio_info_t *info,
     default:
         printk(XENLOG_G_ERR "%pv: vGICD: unhandled read r%d offset %#08x\n",
                v, dabt.reg, gicd_reg);
-        return 0;
+        goto read_as_zero;
     }
 
 bad_width:
@@ -1438,7 +1448,7 @@ static int vgic_v3_distr_mmio_write(struct vcpu *v, mmio_info_t *info,
         printk(XENLOG_G_ERR
                "%pv: vGICD: unhandled write r%d=%"PRIregister" offset %#08x\n",
                v, dabt.reg, r, gicd_reg);
-        return 0;
+        goto write_ignore;
     }
 
 bad_width:
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:34:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:34:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEPY-0001Q0-JZ; Sat, 11 Apr 2020 11:34:56 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEPX-0001Pr-Jl
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:55 +0000
X-Inumbo-ID: 75f7e61b-7be8-11ea-8563-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 75f7e61b-7be8-11ea-8563-12813bfff9fa;
 Sat, 11 Apr 2020 11:34:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=J8P3lXsMFKD6f0tfwRFS0dlxa2DM55XBANjEs2U+2xE=; b=uWAxdU1MqyTfXejVtpoMPcHdx4
 AIejQ32M+IQXBzfOKOifv2D1NTHa0bnqwejOv8HHzCYWN/nmGSPzrxExKyf4F5Mg/yS898jgXVnAX
 SrTCva4xE5yOw2VoxHooLClV2YzldGYsW0hp/oJLcIi1uHZHAgRUcV6tIt57z3zAeFV4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPV-0005sF-Qr
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPV-00046u-Pr
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:34:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xen/arm: initialize vpl011 flag register
Message-Id: <E1jNEPV-00046u-Pr@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:34:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 36f810b33f46c41331eb13402de5e224cc5aa291
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Mon Nov 25 15:58:00 2019 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:33:59 2020 -0700

    xen/arm: initialize vpl011 flag register
    
    The tx/rx fifo flags were not set when the vpl011 is initialized. This
    is a problem for certain guests that are operating in polled mode, as a
    guest will generally check the rx fifo empty flag to determine if there
    is data before doing a read. The result is a continuous spam of the
    message "vpl011: Unexpected IN ring buffer empty" before the first valid
    character is received. This initializes the flag status register to the
    default specified in the PL011 technical reference manual.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit b4637ed6cd5375f04ac51d6b900a9ccad6c6c03a)
---
 xen/arch/arm/vpl011.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c
index 7bc5eeb207..895f436cc4 100644
--- a/xen/arch/arm/vpl011.c
+++ b/xen/arch/arm/vpl011.c
@@ -668,6 +668,8 @@ int domain_vpl011_init(struct domain *d, struct vpl011_init_info *info)
         goto out2;
     }
 
+    vpl011->uartfr = TXFE | RXFE;
+
     spin_lock_init(&vpl011->lock);
 
     register_mmio_handler(d, &vpl011_mmio_handler,
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:35:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:35:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEPh-0001RW-NL; Sat, 11 Apr 2020 11:35:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEPg-0001RK-KH
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:04 +0000
X-Inumbo-ID: 7c8bf7c8-7be8-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7c8bf7c8-7be8-11ea-b4f4-bc764e2007e4;
 Sat, 11 Apr 2020 11:35:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nDEz4o8PFTsOnSudjZbxT0h5uz9Ke0KRKr0b9uT6rKQ=; b=3051NpPGdTK1iMsBuSQidxdj5U
 KGbW0DkivIUlINMLTUu5Z0D0GpseO6nkIIaRo8+8JgnTWntE7ljar2n3Jl/nwiMrOAHXBdAA5Umkz
 LAI/tDxV0JqsLpAXOrj5u3YWUCaw1s9SQEBbSoRtyoGD1XLPwQVH9fuoRmFDIbJb6VBo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPf-0005sb-U5
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPf-00048Q-SS
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xen/arm: during efi boot,
 improve the check for usable memory
Message-Id: <E1jNEPf-00048Q-SS@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:35:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 524e739a49f5a62f2bfc8248b44ea4ec9f9d81f9
Author:     Stefano Stabellini <sstabellini@kernel.org>
AuthorDate: Tue Jan 14 15:31:55 2020 -0800
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:34:05 2020 -0700

    xen/arm: during efi boot, improve the check for usable memory
    
    When booting via EFI, the EFI memory map has information about memory
    regions and their type. Improve the check for the type and attribute of
    each memory region to figure out whether it is usable memory or not.
    This patch brings the check on par with Linux v5.5-rc6 and makes more
    memory reusable as normal memory by Xen (except that Linux also reuses
    EFI_PERSISTENT_MEMORY, which we do not).
    
    Specifically, this patch also reuses memory marked as
    EfiLoaderCode/Data, and it uses both Attribute and Type for the check
    (Attribute needs to be EFI_MEMORY_WB).
    
    Reported-by: Roman Shaposhnik <roman@zededa.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit b31666c8912bf18d9eff963b06d856e7e818ff34)
---
 xen/arch/arm/efi/efi-boot.h | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h
index ca655ff003..3c0772d3f2 100644
--- a/xen/arch/arm/efi/efi-boot.h
+++ b/xen/arch/arm/efi/efi-boot.h
@@ -149,10 +149,13 @@ static EFI_STATUS __init efi_process_memory_map_bootinfo(EFI_MEMORY_DESCRIPTOR *
 
     for ( Index = 0; Index < (mmap_size / desc_size); Index++ )
     {
-        if ( desc_ptr->Type == EfiConventionalMemory ||
-             (!map_bs &&
-              (desc_ptr->Type == EfiBootServicesCode ||
-               desc_ptr->Type == EfiBootServicesData)) )
+        if ( desc_ptr->Attribute & EFI_MEMORY_WB &&
+             (desc_ptr->Type == EfiConventionalMemory ||
+              desc_ptr->Type == EfiLoaderCode ||
+              desc_ptr->Type == EfiLoaderData ||
+              (!map_bs &&
+               (desc_ptr->Type == EfiBootServicesCode ||
+                desc_ptr->Type == EfiBootServicesData))) )
         {
             if ( !meminfo_add_bank(&bootinfo.mem, desc_ptr) )
             {
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:35:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:35:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEPr-0001Sk-PH; Sat, 11 Apr 2020 11:35:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEPq-0001Sb-SQ
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:14 +0000
X-Inumbo-ID: 828db8d2-7be8-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 828db8d2-7be8-11ea-b58d-bc764e2007e4;
 Sat, 11 Apr 2020 11:35:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/82TVBM+ZmQdOY2gjv6W4410aE4gDMka6obmgn+c1hw=; b=GOaKpDkca2RTViY97PCB6Dv377
 Tu00S8KEWQo510CWOqYLF/h70kfJNe6bxn2eZOc4ekSHjHP0ozdTlpzVCdg2I5/i3qGXk6l0CkL/l
 lu18fbBmCef9/gJAF+hsQdHqT+TA9UMcLj8T967I4T4FmBaZZiAaTM2dgA5h6ayLl3pY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPq-0005sk-0I
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEPp-00049d-Vk
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xen/arm: remove physical timer offset
Message-Id: <E1jNEPp-00049d-Vk@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:35:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a46cd06d92e698a71e4c845301a19468265809d3
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Jan 21 10:07:03 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:34:11 2020 -0700

    xen/arm: remove physical timer offset
    
    The physical timer traps apply an offset so that time starts at 0 for
    the guest. However, this offset is not currently applied to the physical
    counter. Per the ARMv8 Reference Manual (ARM DDI 0487E.a), section
    D11.2.4 Timers, the "Offset" between the counter and timer should be
    zero for a physical timer. This removes the offset to make the timer and
    counter consistent.
    
    This also cleans up the physical timer implementation to better match
    the virtual timer - both cval's now hold the hardware value.
    
    In the case the guest sets cval to a time before Xen started, the correct
    behavior is to expire the timer immediately. To do this, we set the expires
    argument of set_timer to zero.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit f14f55b7ee295277c8dd09e37e0fa0902ccf7eb4)
---
 xen/arch/arm/vtimer.c        | 46 +++++++++++++++++++++++++++++---------------
 xen/include/asm-arm/domain.h |  3 ---
 2 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index c99dd237d1..b15f304c1e 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -62,7 +62,6 @@ static void virt_timer_expired(void *data)
 
 int domain_vtimer_init(struct domain *d, struct xen_arch_domainconfig *config)
 {
-    d->arch.phys_timer_base.offset = NOW();
     d->arch.virt_timer_base.offset = READ_SYSREG64(CNTPCT_EL0);
     d->time_offset_seconds = ticks_to_ns(d->arch.virt_timer_base.offset - boot_count);
     do_div(d->time_offset_seconds, 1000000000);
@@ -108,7 +107,6 @@ int vcpu_vtimer_init(struct vcpu *v)
 
     init_timer(&t->timer, phys_timer_expired, t, v->processor);
     t->ctl = 0;
-    t->cval = NOW();
     t->irq = d0
         ? timer_get_irq(TIMER_PHYS_NONSECURE_PPI)
         : GUEST_TIMER_PHYS_NS_PPI;
@@ -169,6 +167,7 @@ int virt_timer_restore(struct vcpu *v)
 static bool vtimer_cntp_ctl(struct cpu_user_regs *regs, uint32_t *r, bool read)
 {
     struct vcpu *v = current;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
@@ -186,8 +185,13 @@ static bool vtimer_cntp_ctl(struct cpu_user_regs *regs, uint32_t *r, bool read)
 
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval + v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
         else
             stop_timer(&v->arch.phys_timer.timer);
@@ -199,26 +203,31 @@ static bool vtimer_cntp_tval(struct cpu_user_regs *regs, uint32_t *r,
                              bool read)
 {
     struct vcpu *v = current;
-    s_time_t now;
+    uint64_t cntpct;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
 
-    now = NOW() - v->domain->arch.phys_timer_base.offset;
+    cntpct = get_cycles();
 
     if ( read )
     {
-        *r = (uint32_t)(ns_to_ticks(v->arch.phys_timer.cval - now) & 0xffffffffull);
+        *r = (uint32_t)((v->arch.phys_timer.cval - cntpct) & 0xffffffffull);
     }
     else
     {
-        v->arch.phys_timer.cval = now + ticks_to_ns(*r);
+        v->arch.phys_timer.cval = cntpct + *r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval +
-                      v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
     }
     return true;
@@ -228,23 +237,28 @@ static bool vtimer_cntp_cval(struct cpu_user_regs *regs, uint64_t *r,
                              bool read)
 {
     struct vcpu *v = current;
+    s_time_t expires;
 
     if ( !ACCESS_ALLOWED(regs, EL0PTEN) )
         return false;
 
     if ( read )
     {
-        *r = ns_to_ticks(v->arch.phys_timer.cval);
+        *r = v->arch.phys_timer.cval;
     }
     else
     {
-        v->arch.phys_timer.cval = ticks_to_ns(*r);
+        v->arch.phys_timer.cval = *r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
-            set_timer(&v->arch.phys_timer.timer,
-                      v->arch.phys_timer.cval +
-                      v->domain->arch.phys_timer_base.offset);
+            /*
+             * If cval is before the point Xen started, expire timer
+             * immediately.
+             */
+            expires = v->arch.phys_timer.cval > boot_count
+                      ? ticks_to_ns(v->arch.phys_timer.cval - boot_count) : 0;
+            set_timer(&v->arch.phys_timer.timer, expires);
         }
     }
     return true;
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index def28606c9..5b49509e80 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -66,9 +66,6 @@ struct arch_domain
 
     struct {
         uint64_t offset;
-    } phys_timer_base;
-    struct {
-        uint64_t offset;
     } virt_timer_base;
 
     struct vgic_dist vgic;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 11:35:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 11:35:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNEQ1-0001UY-R4; Sat, 11 Apr 2020 11:35:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNEQ0-0001UO-No
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:24 +0000
X-Inumbo-ID: 889034b2-7be8-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 889034b2-7be8-11ea-b4f4-bc764e2007e4;
 Sat, 11 Apr 2020 11:35:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=bFTim9lxq8neTUG5jiRPms4US3M5ybeFJyHcyu0uqO0=; b=0yr1ApTebzg2i60Nfwhan81Kuw
 rUAP7oGdmgXKjHHj243mcBjU2IQmiRnA4xIFHtKVen5NpL0p0wCH7Jzo3s+1A7xq7VwZRq3P+SsZJ
 EMQzDX2BxzoN54AEeAQyNI5l+KVvXAeyWx29Umzy2xEa3aHyi3spstYouJHrkz//O1Lg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEQ0-0005st-2u
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNEQ0-0004Az-1w
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 11:35:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xen/arm: Sign extend TimerValue when computing the
 CompareValue
Message-Id: <E1jNEQ0-0004Az-1w@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 11:35:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e8c8071f4ac2cce6f2a0ef75ea53720a7744e875
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Tue Jan 21 10:07:04 2020 -0500
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 10 09:34:16 2020 -0700

    xen/arm: Sign extend TimerValue when computing the CompareValue
    
    Xen will only store the CompareValue as it can be derived from the
    TimerValue (ARM DDI 0487E.a section D11.2.4):
    
      CompareValue = (Counter[63:0] + SignExtend(TimerValue))[63:0]
    
    While the TimerValue is a 32-bit signed value, our implementation
    assumed it is a 32-bit unsigned value.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Acked-by: Julien Grall <julien@xen.org>
    (cherry picked from commit 3c601c5f056fba055b7a1438b84b69fc649275c3)
---
 xen/arch/arm/vtimer.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/vtimer.c b/xen/arch/arm/vtimer.c
index b15f304c1e..2697e6a784 100644
--- a/xen/arch/arm/vtimer.c
+++ b/xen/arch/arm/vtimer.c
@@ -217,7 +217,7 @@ static bool vtimer_cntp_tval(struct cpu_user_regs *regs, uint32_t *r,
     }
     else
     {
-        v->arch.phys_timer.cval = cntpct + *r;
+        v->arch.phys_timer.cval = cntpct + (uint64_t)(int32_t)*r;
         if ( v->arch.phys_timer.ctl & CNTx_CTL_ENABLE )
         {
             v->arch.phys_timer.ctl &= ~CNTx_CTL_PENDING;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Sat Apr 11 22:55:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 11 Apr 2020 22:55:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jNP1j-0005Re-OI; Sat, 11 Apr 2020 22:55:03 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JMyQ=53=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jNP1j-0005RZ-8J
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 22:55:03 +0000
X-Inumbo-ID: 79edbc7c-7c47-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 79edbc7c-7c47-11ea-9e09-bc764e2007e4;
 Sat, 11 Apr 2020 22:55:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=tHBOMr0efCsddD7lQyb3gM7NW7blyRsu1p0GPHClSLE=; b=6VxDR3rMAhVJQd2Vu6XZbSAixk
 9UR30AXr0Hac4NoyLKfWMHyUzy0ou590PYm2Bj2uj1iNLzrvlXhWkxWVh7X4vdJig4cgG1NM7DutR
 pVPZV9+9TsBaSlhU39RtbJZNW35aJXU/A1PLn37ekmg5+dGnUVSFuHGydpj7wTu9VHns=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNP1h-0002Mq-MH
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 22:55:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jNP1h-0001zV-L5
 for xen-changelog@lists.xenproject.org; Sat, 11 Apr 2020 22:55:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/mem_sharing: Fix build with !CONFIG_XSM
Message-Id: <E1jNP1h-0001zV-L5@xenbits.xenproject.org>
Date: Sat, 11 Apr 2020 22:55:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7372466b21c3b6c96bb7a52754e432bac883a1e3
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 9 21:44:11 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Fri Apr 10 15:20:10 2020 +0100

    x86/mem_sharing: Fix build with !CONFIG_XSM
    
    A build fails with:
    
      mem_sharing.c: In function ‘copy_special_pages’:
      mem_sharing.c:1649:9: error: ‘HVM_PARAM_STORE_PFN’ undeclared (first use in this function)
               HVM_PARAM_STORE_PFN,
               ^~~~~~~~~~~~~~~~~~~
      ...
    
    This is because xsm/xsm.h includes xsm/dummy.h for the !CONFIG_XSM case, which
    brings public/hvm/params.h in.
    
    Fixes: 41548c5472a "mem_sharing: VM forking"
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tamas K Lengyel <tamas@tklengyel.com>
---
 xen/arch/x86/mm/mem_sharing.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 85951b7bea..e572e9e39d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -41,6 +41,8 @@
 #include <asm/hvm/hvm.h>
 #include <xsm/xsm.h>
 
+#include <public/hvm/params.h>
+
 #include "mm-locks.h"
 
 static shr_handle_t next_handle = 1;
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 09:55:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 09:55:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOIHb-00032O-Jb; Tue, 14 Apr 2020 09:55:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOIHa-00032J-DF
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 09:55:06 +0000
X-Inumbo-ID: 04115fe0-7e36-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 04115fe0-7e36-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 09:55:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=G1QtM38Fg87rLCvLL7MmqVP5sWFjQ7lRpovAOJdkTSA=; b=GYBlkKA3NhEPxbIU8NoUJAU5Q4
 Gye/HOLs1BSip3uCTYzqKcVtN9U6CRqJuCjo6AO3OZZVWCjrnCaAcr3YYVRKG62DVnLgCo5gHcBEm
 Fz9JXLtOfjPdnTI8QQSZu+ACIv1AWBOl+qHkDyqbuID6syxT2rZHe7WEFQDq1DrgGUFc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOIHY-0006Mv-SH
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 09:55:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOIHY-0005yh-R8
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 09:55:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/altp2m: hypercall to set altp2m view visibility
Message-Id: <E1jOIHY-0005yh-R8@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 09:55:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3fd3e9303ec4b1bc9d5271b9c089177e82c16dbb
Author:     Alexandru Isaila <aisaila@bitdefender.com>
AuthorDate: Tue Apr 14 11:38:48 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 11:38:48 2020 +0200

    x86/altp2m: hypercall to set altp2m view visibility
    
    At this moment a guest can call vmfunc to change the altp2m view. This
    should be limited in order to avoid any unwanted view switch.
    
    The new xc_altp2m_set_visibility() solves this by making views invisible
    to vmfunc.
    This is done by having a separate arch.altp2m_working_eptp that is
    populated and made invalid in the same places as altp2m_eptp. This is
    written to EPTP_LIST_ADDR.
    The views are made in/visible by marking them with INVALID_MFN or
    copying them back from altp2m_eptp.
    To have consistency the visibility also applies to
    p2m_switch_domain_altp2m_by_id().
    
    The usage of this hypercall is aimed at dom0 having a logic with a number of views
    created and at some time there is a need to be sure that only some of the views
    can be switched, saving the rest and making them visible when the time
    is right.
    
    Note: If altp2m mode is set to mixed the guest is able to change the view
    visibility and then call vmfunc.
    
    Signed-off-by: Alexandru Isaila <aisaila@bitdefender.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Acked-by: Wei Liu <wl@xen.org>
---
 tools/libxc/include/xenctrl.h   |  7 +++++++
 tools/libxc/xc_altp2m.c         | 24 ++++++++++++++++++++++++
 xen/arch/x86/hvm/hvm.c          | 14 ++++++++++++++
 xen/arch/x86/hvm/vmx/vmx.c      |  2 +-
 xen/arch/x86/mm/hap/hap.c       | 15 +++++++++++++++
 xen/arch/x86/mm/p2m-ept.c       |  1 +
 xen/arch/x86/mm/p2m.c           | 34 ++++++++++++++++++++++++++++++++--
 xen/include/asm-x86/domain.h    |  1 +
 xen/include/asm-x86/p2m.h       |  4 ++++
 xen/include/public/hvm/hvm_op.h |  9 +++++++++
 10 files changed, 108 insertions(+), 3 deletions(-)

diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h
index 58fa931de1..5f25c5a6d4 100644
--- a/tools/libxc/include/xenctrl.h
+++ b/tools/libxc/include/xenctrl.h
@@ -1943,6 +1943,13 @@ int xc_altp2m_change_gfn(xc_interface *handle, uint32_t domid,
                          xen_pfn_t new_gfn);
 int xc_altp2m_get_vcpu_p2m_idx(xc_interface *handle, uint32_t domid,
                                uint32_t vcpuid, uint16_t *p2midx);
+/*
+ * Set view visibility for xc_altp2m_switch_to_view and vmfunc.
+ * Note: If altp2m mode is set to mixed the guest is able to change the view
+ * visibility and then call vmfunc.
+ */
+int xc_altp2m_set_visibility(xc_interface *handle, uint32_t domid,
+                             uint16_t view_id, bool visible);
 
 /** 
  * Mem paging operations.
diff --git a/tools/libxc/xc_altp2m.c b/tools/libxc/xc_altp2m.c
index 46fb725806..6987c9541f 100644
--- a/tools/libxc/xc_altp2m.c
+++ b/tools/libxc/xc_altp2m.c
@@ -410,3 +410,27 @@ int xc_altp2m_get_vcpu_p2m_idx(xc_interface *handle, uint32_t domid,
     xc_hypercall_buffer_free(handle, arg);
     return rc;
 }
+
+int xc_altp2m_set_visibility(xc_interface *handle, uint32_t domid,
+                             uint16_t view_id, bool visible)
+{
+    int rc;
+
+    DECLARE_HYPERCALL_BUFFER(xen_hvm_altp2m_op_t, arg);
+
+    arg = xc_hypercall_buffer_alloc(handle, arg, sizeof(*arg));
+    if ( arg == NULL )
+        return -1;
+
+    arg->version = HVMOP_ALTP2M_INTERFACE_VERSION;
+    arg->cmd = HVMOP_altp2m_set_visibility;
+    arg->domain = domid;
+    arg->u.set_visibility.altp2m_idx = view_id;
+    arg->u.set_visibility.visible = visible;
+
+    rc = xencall2(handle->xcall, __HYPERVISOR_hvm_op, HVMOP_altp2m,
+                  HYPERCALL_BUFFER_AS_ARG(arg));
+
+    xc_hypercall_buffer_free(handle, arg);
+    return rc;
+}
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 827c5fa89d..6f6f3f73a8 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4509,6 +4509,7 @@ static int do_altp2m_op(
     case HVMOP_altp2m_get_mem_access:
     case HVMOP_altp2m_change_gfn:
     case HVMOP_altp2m_get_p2m_idx:
+    case HVMOP_altp2m_set_visibility:
         break;
 
     default:
@@ -4786,6 +4787,19 @@ static int do_altp2m_op(
         break;
     }
 
+    case HVMOP_altp2m_set_visibility:
+    {
+        unsigned int idx = a.u.set_visibility.altp2m_idx;
+
+        if ( a.u.set_visibility.pad )
+            rc = -EINVAL;
+        else if ( !altp2m_active(d) )
+            rc = -EOPNOTSUPP;
+        else
+            rc = p2m_set_altp2m_view_visibility(d, idx,
+                                                a.u.set_visibility.visible);
+    }
+
     default:
         ASSERT_UNREACHABLE();
     }
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 1c398fdb6e..869339062b 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2140,7 +2140,7 @@ static void vmx_vcpu_update_vmfunc_ve(struct vcpu *v)
     {
         v->arch.hvm.vmx.secondary_exec_control |= mask;
         __vmwrite(VM_FUNCTION_CONTROL, VMX_VMFUNC_EPTP_SWITCHING);
-        __vmwrite(EPTP_LIST_ADDR, virt_to_maddr(d->arch.altp2m_eptp));
+        __vmwrite(EPTP_LIST_ADDR, virt_to_maddr(d->arch.altp2m_visible_eptp));
 
         if ( cpu_has_vmx_virt_exceptions )
         {
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 814d0c3253..052ae35c6f 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -492,8 +492,17 @@ int hap_enable(struct domain *d, u32 mode)
             goto out;
         }
 
+        if ( (d->arch.altp2m_visible_eptp = alloc_xenheap_page()) == NULL )
+        {
+            rv = -ENOMEM;
+            goto out;
+        }
+
         for ( i = 0; i < MAX_EPTP; i++ )
+        {
             d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
+            d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
+        }
 
         for ( i = 0; i < MAX_ALTP2M; i++ )
         {
@@ -527,6 +536,12 @@ void hap_final_teardown(struct domain *d)
             d->arch.altp2m_eptp = NULL;
         }
 
+        if ( d->arch.altp2m_visible_eptp )
+        {
+            free_xenheap_page(d->arch.altp2m_visible_eptp);
+            d->arch.altp2m_visible_eptp = NULL;
+        }
+
         for ( i = 0; i < MAX_ALTP2M; i++ )
             p2m_teardown(d->arch.altp2m_p2m[i]);
     }
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index eb0f0edfef..293f3e9419 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -1368,6 +1368,7 @@ void p2m_init_altp2m_ept(struct domain *d, unsigned int i)
     ept = &p2m->ept;
     ept->mfn = pagetable_get_pfn(p2m_get_pagetable(p2m));
     d->arch.altp2m_eptp[array_index_nospec(i, MAX_EPTP)] = ept->eptp;
+    d->arch.altp2m_visible_eptp[array_index_nospec(i, MAX_EPTP)] = ept->eptp;
 }
 
 unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp)
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index b8727e267d..4c1507d3a4 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -2533,6 +2533,7 @@ void p2m_flush_altp2m(struct domain *d)
     {
         p2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
         d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
+        d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
     }
 
     altp2m_list_unlock(d);
@@ -2652,7 +2653,9 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
         {
             p2m_reset_altp2m(d, idx, ALTP2M_DEACTIVATE);
             d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] =
-            mfn_x(INVALID_MFN);
+                mfn_x(INVALID_MFN);
+            d->arch.altp2m_visible_eptp[array_index_nospec(idx, MAX_EPTP)] =
+                mfn_x(INVALID_MFN);
             rc = 0;
         }
     }
@@ -2679,7 +2682,7 @@ int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
     rc = -EINVAL;
     altp2m_list_lock(d);
 
-    if ( d->arch.altp2m_eptp[idx] != mfn_x(INVALID_MFN) )
+    if ( d->arch.altp2m_visible_eptp[idx] != mfn_x(INVALID_MFN) )
     {
         for_each_vcpu( d, v )
             if ( idx != vcpu_altp2m(v).p2midx )
@@ -3163,6 +3166,33 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
 
     return rc;
 }
+
+int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                                   uint8_t visible)
+{
+    int rc = 0;
+
+    altp2m_list_lock(d);
+
+    /*
+     * Eptp index is correlated with altp2m index and should not exceed
+     * min(MAX_ALTP2M, MAX_EPTP).
+     */
+    if ( altp2m_idx >= min(ARRAY_SIZE(d->arch.altp2m_p2m), MAX_EPTP) ||
+         d->arch.altp2m_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] ==
+         mfn_x(INVALID_MFN) )
+        rc = -EINVAL;
+    else if ( visible )
+        d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] =
+            d->arch.altp2m_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)];
+    else
+        d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] =
+            mfn_x(INVALID_MFN);
+
+    altp2m_list_unlock(d);
+
+    return rc;
+}
 #endif
 
 /*
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 105adf96eb..4192c636b1 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -327,6 +327,7 @@ struct arch_domain
     struct p2m_domain *altp2m_p2m[MAX_ALTP2M];
     mm_lock_t altp2m_list_lock;
     uint64_t *altp2m_eptp;
+    uint64_t *altp2m_visible_eptp;
 #endif
 
     /* NB. protected by d->event_lock and by irq_desc[irq].lock */
diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h
index a2c6049834..ace3573ae8 100644
--- a/xen/include/asm-x86/p2m.h
+++ b/xen/include/asm-x86/p2m.h
@@ -898,6 +898,10 @@ int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
 int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
                                 mfn_t mfn, unsigned int page_order,
                                 p2m_type_t p2mt, p2m_access_t p2ma);
+
+/* Set a specific p2m view visibility */
+int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int idx,
+                                   uint8_t visible);
 #else
 struct p2m_domain *p2m_get_altp2m(struct vcpu *v);
 static inline void p2m_altp2m_check(struct vcpu *v, uint16_t idx) {}
diff --git a/xen/include/public/hvm/hvm_op.h b/xen/include/public/hvm/hvm_op.h
index b599d3cbd0..870ec52060 100644
--- a/xen/include/public/hvm/hvm_op.h
+++ b/xen/include/public/hvm/hvm_op.h
@@ -318,6 +318,12 @@ struct xen_hvm_altp2m_get_vcpu_p2m_idx {
     uint16_t altp2m_idx;
 };
 
+struct xen_hvm_altp2m_set_visibility {
+    uint16_t altp2m_idx;
+    uint8_t visible;
+    uint8_t pad;
+};
+
 struct xen_hvm_altp2m_op {
     uint32_t version;   /* HVMOP_ALTP2M_INTERFACE_VERSION */
     uint32_t cmd;
@@ -350,6 +356,8 @@ struct xen_hvm_altp2m_op {
 #define HVMOP_altp2m_get_p2m_idx          14
 /* Set the "Supress #VE" bit for a range of pages */
 #define HVMOP_altp2m_set_suppress_ve_multi 15
+/* Set visibility for a given altp2m view */
+#define HVMOP_altp2m_set_visibility       16
     domid_t domain;
     uint16_t pad1;
     uint32_t pad2;
@@ -367,6 +375,7 @@ struct xen_hvm_altp2m_op {
         struct xen_hvm_altp2m_suppress_ve_multi    suppress_ve_multi;
         struct xen_hvm_altp2m_vcpu_disable_notify  disable_notify;
         struct xen_hvm_altp2m_get_vcpu_p2m_idx     get_vcpu_p2m_idx;
+        struct xen_hvm_altp2m_set_visibility       set_visibility;
         uint8_t pad[64];
     } u;
 };
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 09:55:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 09:55:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOIHm-00033H-0x; Tue, 14 Apr 2020 09:55:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOIHk-000339-VC
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 09:55:16 +0000
X-Inumbo-ID: 0a12bede-7e36-11ea-8912-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0a12bede-7e36-11ea-8912-12813bfff9fa;
 Tue, 14 Apr 2020 09:55:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=eJEQ3xltaJ/icjnK3DFTBFJ407lhpSkSaq0CzVQFTuw=; b=Ek0i0lH4ltPATVkqLzKlFw14pc
 ZLGa6p7xOQbjjWOuPDhlxI1Xg1ff+vw5s/DfiJHYt4LyJWH/wRdmwZAsAx3FmC0nzxBf8/CQd9sRc
 dWld3Fxb1RznjIezWKrZPFhjp4O3BaKillovzI+G5z+IH7K9P42PeU0YkNy/POtAglNA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOIHi-0006N4-V5
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 09:55:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOIHi-0005zR-U1
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 09:55:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/EFI: also fill boot_tsc_stamp on the xen.efi boot
 path
Message-Id: <E1jOIHi-0005zR-U1@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 09:55:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0dbc112e727f6c17f306c864950bdf83dece5cd5
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 11:42:11 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 11:42:11 2020 +0200

    x86/EFI: also fill boot_tsc_stamp on the xen.efi boot path
    
    Commit e3a379c35eff ("x86/time: always count s_time from Xen boot")
    introducing this missed adjusting this path as well.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/efi/efi-boot.h | 3 +++
 xen/include/asm-x86/setup.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 7bfb96875c..a13304201f 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -8,6 +8,7 @@
 #include <asm/edd.h>
 #include <asm/microcode.h>
 #include <asm/msr.h>
+#include <asm/setup.h>
 
 static struct file __initdata ucode;
 static multiboot_info_t __initdata mbi = {
@@ -673,6 +674,8 @@ static void __init efi_arch_cpu(void)
     uint32_t eax = cpuid_eax(0x80000000);
     uint32_t *caps = boot_cpu_data.x86_capability;
 
+    boot_tsc_stamp = rdtsc();
+
     caps[cpufeat_word(X86_FEATURE_HYPERVISOR)] = cpuid_ecx(1);
 
     if ( (eax >> 16) == 0x8000 && eax > 0x80000000 )
diff --git a/xen/include/asm-x86/setup.h b/xen/include/asm-x86/setup.h
index 28257bc5c8..642a5e8460 100644
--- a/xen/include/asm-x86/setup.h
+++ b/xen/include/asm-x86/setup.h
@@ -10,6 +10,7 @@ extern char __2M_init_start[], __2M_init_end[];
 extern char __2M_rwdata_start[], __2M_rwdata_end[];
 
 extern unsigned long xenheap_initial_phys_start;
+extern uint64_t boot_tsc_stamp;
 
 void early_cpu_init(void);
 void early_time_init(void);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:44:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:44:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOKv9-00059x-NO; Tue, 14 Apr 2020 12:44:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOKv7-00059q-RG
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:05 +0000
X-Inumbo-ID: 9fedaa06-7e4d-11ea-892c-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9fedaa06-7e4d-11ea-892c-12813bfff9fa;
 Tue, 14 Apr 2020 12:44:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=NT0xVMYkCBQWCxpIZprkVyq0A64aiNlpK+FNApIuZq0=; b=zJn8+x9dhVBSX7LHjv23BB3IMx
 kQQf048QYmzfuskyq8kI9hOG3cpqtvxe/jEPcQAr3zrZDsKmNH6wREB+EwCE0GtYWPNMGn4bQmeNc
 n2+JSZZ9izYhsf5x8Ft1mInn0FyWBVk9J0v0LeJ6fweFF+u9C9JZk2ym1qU/Cd/qzVfE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKv6-0001Pk-Od
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKv6-00030G-NT
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xenoprof: clear buffer intended to be shared with guests
Message-Id: <E1jOKv6-00030G-NT@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:44:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:32:33 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:32:33 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 4f3e799ebb..4d909fd5d6 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -253,6 +253,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:44:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:44:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOKvJ-0005Aj-PE; Tue, 14 Apr 2020 12:44:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOKvI-0005Ac-CS
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:16 +0000
X-Inumbo-ID: a5f96174-7e4d-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a5f96174-7e4d-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 12:44:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=j4a5AfsI+BZLWaLhX6hvAhoqOSwPmPVn+N77cR5SC6Q=; b=TNzrltw5e9jFkavazM+HashPFO
 M/E74hpE75PQmhoJKvMbDWSYE19QlkI1bu/C88Hpk0lzUAlMlrKSO7enkN5prEAQN0Pegs8R9KEyl
 sHpJKtO0XLsDTo2Pc/iM6QGfja7JGunpSrZtz6o0bFn5RU+elHOxxDi/M0zz6cfr+blE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKvG-0001Pq-Re
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKvG-000316-QV
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOKvG-000316-QV@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:44:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:33:19 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:33:19 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 4d909fd5d6..b04726cb49 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -479,25 +479,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -506,7 +503,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -530,7 +527,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -539,7 +535,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -570,17 +567,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:44:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:44:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOKvT-0005Cc-Ri; Tue, 14 Apr 2020 12:44:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOKvS-0005Bj-03
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:26 +0000
X-Inumbo-ID: abfb2c2e-7e4d-11ea-892c-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id abfb2c2e-7e4d-11ea-892c-12813bfff9fa;
 Tue, 14 Apr 2020 12:44:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZDC8C6XIzN4Dte+XOIY/Vt+KQrHFKWSFfqGfh5a6sAE=; b=4IZkeGAvUZzEY2ma+IvD9XfuHF
 6TUfxuux69vkQapmXNs8GZJ71Z/GNdFpZuOeOI2s9Q5ju2a1bloNHwskK2GUnZVwP95z8yAN6UZ5w
 5S861UButF/wjo+duSVCMJEZOOwYPEJ32drtsEfFx13CLVoKI6peeK5AwEAKsOi8JIvg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKvQ-0001Q1-VD
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKvQ-000336-TO
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/rwlock: Add missing memory barrier in the unlock
 path of rwlock
Message-Id: <E1jOKvQ-000336-TO@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:44:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6890a04072e664c25447a297fe663b45ecfd6398
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Thu Feb 20 20:54:40 2020 +0000
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:37:11 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 4d1b48c722..427664037a 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -60,6 +60,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(_can_read_lock(cnts)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(_can_read_lock(cnts)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -78,11 +82,19 @@ static inline void _read_lock(rwlock_t *lock)
 
     preempt_disable();
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(_can_read_lock(cnts)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -106,6 +118,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -141,12 +154,21 @@ static inline unsigned int _write_lock_val(void)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
     preempt_disable();
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _write_lock_val()) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -183,12 +205,17 @@ static inline int _write_trylock(rwlock_t *lock)
         return 0;
     }
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return 1;
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
     ASSERT(_is_write_locked_by_me(atomic_read(&lock->cnts)));
+    arch_lock_release_barrier();
     atomic_and(~(_QW_CPUMASK | _QW_WMASK), &lock->cnts);
     preempt_enable();
 }
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:44:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:44:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOKvb-0005Dp-Ti; Tue, 14 Apr 2020 12:44:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOKvb-0005DZ-LJ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:35 +0000
X-Inumbo-ID: b1f7cc86-7e4d-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b1f7cc86-7e4d-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 12:44:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=e6tM5yzEh12zfPZuJ4CW8Fs/UxYnFJd0IgXzQm+msaA=; b=HBwDTVQAoQNmmD+2FbOBuTAWwD
 s4TYr4ggNRwx22ls8D1LouJR3BhvQY/HCifUaXQDI5Q/sq1acq69TaxzhkG0cPuOqa2wxRgk/XEfc
 R8jt4cCSsW1pvPYs/eKftdr+ElTrT8KKhYjrArmdcFVp5aM+uwRQ7JBxEibx69uFvZgg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKvb-0001QB-1e
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKvb-00033v-0k
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOKvb-00033v-0k@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:44:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit da0c66c8f48042a0186799014af69db0303b1da5
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 14:41:02 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:41:02 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 9fd6e60416..4b5344dc21 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1031,7 +1031,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:44:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:44:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOKvm-0005F6-Vj; Tue, 14 Apr 2020 12:44:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOKvl-0005Ev-W3
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:46 +0000
X-Inumbo-ID: b822b9cc-7e4d-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b822b9cc-7e4d-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 12:44:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=LvEBHyG0fxbWkpVDnQ3R0rOuaRrB6pIS7o0jcQEwYIQ=; b=T8azf756Ry0qVK1hk33VrE2QgT
 BUJDNMrrDrvavyYJ50z1fsYQaynNg5mGEtXZWChT0nIknmOc3e2oSST0ZNWYJ8rjZratgB0hM/zWe
 cMl54X2loHMt4FEyJqbKV9Ne/UM1XqtqasJchFgm8pHLXWb2VhY5+h5S67qlvaeUN82A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKvl-0001QK-D1
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOKvl-00035J-As
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:44:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOKvl-00035J-As@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:44:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d6f22d5d9e8d6848ec229083ac9fb044f0adea93
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:42:32 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:42:32 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 4b5344dc21..96080b3dec 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3576,8 +3576,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3644,6 +3643,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:55:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:55:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOL5m-0006Ec-8e; Tue, 14 Apr 2020 12:55:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOL5l-0006EX-1L
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:05 +0000
X-Inumbo-ID: 2908cbf8-7e4f-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2908cbf8-7e4f-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 12:55:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=S0ObDYC/yFBC/JR9Nur4ojtbRYXjVA1HCtnkj1L1qHs=; b=kv2uZnfSRrPIcuoWCmI6iXXJ3I
 8VhBq8Fg/LQe+mWVUyWZWWC5d1Y0QRXu7CWp+zfv3vS5PGqiZxVMw72tR+hsXj27r7b5fjIfF9bUR
 7UF45l9NNW0CMdLeErHYH3qjnXhMaQICJ0l6L69XnaKdQXmWcEAfDtm/wzyfgll9olzM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL5k-0001dl-9l
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL5k-0003ks-8f
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOL5k-0003ks-8f@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:55:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 65b16f3d217044380a80f15334ccf83b3eae6bf9
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:48:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:48:26 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 4f3e799ebb..4d909fd5d6 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -253,6 +253,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:55:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:55:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOL5w-0006FX-CJ; Tue, 14 Apr 2020 12:55:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOL5v-0006FS-H6
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:15 +0000
X-Inumbo-ID: 2f0c75d6-7e4f-11ea-892c-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2f0c75d6-7e4f-11ea-892c-12813bfff9fa;
 Tue, 14 Apr 2020 12:55:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VMNsmfwsPhVCM7qJvuEbSjrZmoSzupxY6z5N3GHWC1c=; b=xeolCGJ5Ojz/N+yTC7wxBJ9AZP
 PdyT61cjpO4+yr+asV87i4CBUspRUQc4AIe+xbqvrWfluRhzF+SDxY1wiBV2d3/g6T+/4PIEXpHc2
 /LvUmjY0KKBj9L5tokO5u0B8IJVHXCgfYUW3K4s9BMCTJoSIJR40CUhdcOh1n8F/I4bI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL5u-0001ds-Cf
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL5u-0003le-BW
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOL5u-0003le-BW@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:55:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ef922bda43f645749e41bd2730f6206f291be289
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:49:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:49:21 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 4d909fd5d6..b04726cb49 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -479,25 +479,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -506,7 +503,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -530,7 +527,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -539,7 +535,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -570,17 +567,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:55:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:55:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOL66-0006Gp-Hd; Tue, 14 Apr 2020 12:55:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOL65-0006Gf-Bj
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:25 +0000
X-Inumbo-ID: 350c7e86-7e4f-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 350c7e86-7e4f-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 12:55:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=pQABa5ujLnVA9wZCrHomMFjH2eUd7qiTx6sBoNqqBMs=; b=wPz7qeN28IB9+BzHGuyNALS2SI
 h/tMBGT1yHytEOKTIhRqEJl0RTTyEVneI0RHPUCsqLolZvPAXMkLhK/UYZGuB+dNRag6sdG2lzvBY
 VnsU3Lq2TYQvnyiKS0vJJNr1khcT3RhVzpt1PiR827L582j8nfweG+ldH1fELAYHyZsg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL64-0001eA-F7
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL64-0003mH-EC
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jOL64-0003mH-EC@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:55:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b6a2c42303cb70c87de49b4a70e28f7495432f07
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 14:50:16 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:50:16 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 3dfea1ac2a..b31d8af108 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -48,6 +48,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -64,11 +68,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -92,6 +104,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -121,11 +134,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -157,11 +179,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:55:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:55:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOL6Q-0006Ix-KF; Tue, 14 Apr 2020 12:55:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOL6P-0006Is-BO
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:45 +0000
X-Inumbo-ID: 3b106a72-7e4f-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3b106a72-7e4f-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 12:55:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vzZ81LGPMJWWNl/RjGLJ1wRLu3ty5HpACwdynpPE5jU=; b=Bh97lz4D3CmWw1zGziXpu6uc3f
 CmOb4HsZ0/5jaETFcMbXPMF9T9ARDo/zVjMuQnctsuXaRFW35Y7z241gCkyvGyQ6fGpV2SqYhP1Ge
 b2b5DbxY9vr0GA4f5CdozQQNOchQsZstB/K+dn16YFMQADNla590Mn8K9jFcFau1NQ1c=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL6E-0001eO-I1
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL6E-0003ml-Gt
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOL6E-0003ml-Gt@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:55:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d91d4fe88146bb4cf8e66819b6c1b762ce0ac6fc
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 14:51:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:51:45 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 5536d282b9..ce0ad578e3 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1032,7 +1032,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 12:55:51 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 12:55:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOL6V-0006Jb-M9; Tue, 14 Apr 2020 12:55:51 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOL6U-0006JS-B6
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:50 +0000
X-Inumbo-ID: 41158f24-7e4f-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 41158f24-7e4f-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 12:55:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8D8a3PffLHD3nZ/qn5tkrNJYiBpqtoc3t6425/yCjiI=; b=xjMSl6MQGnK7UyApuvdIwEtB1T
 x+DoXkhyHn6ys3udEstnZkwS6aLsGu/EuNTebyjRLIk9zB7Tp2y+T8aKrJPD5pT8wUZygOdZaKNLD
 +az6JEgYSpTIuUSrFqcoauhDijBYNmNsj8bo9htpHhGZjEbuP6SrjDw+zxKJyHFEpiWk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL6O-0001eR-LB
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOL6O-0003nn-Jt
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 12:55:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOL6O-0003nn-Jt@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 12:55:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b66ce5058ec9ce84418cedd39b2bf07b7c5a1f65
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:53:03 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:53:03 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index ce0ad578e3..917e63d370 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3583,8 +3583,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3651,6 +3650,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:11:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:11:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLLH-00081V-3Z; Tue, 14 Apr 2020 13:11:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLLF-00081P-Sn
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:05 +0000
X-Inumbo-ID: 6498ae35-7e51-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6498ae35-7e51-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:11:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=TGppqU99XNIQMKCPkdfC3AbfToNbHdUk3v3xtbX8Qmk=; b=bT9l3DOwj6CTg/QdoPHLOIkmOp
 78GpE7qmV4TIde113OzRXKqUbbOoHeJobCPDWATb87oJBRfOPfeabyYcSUXgGlXdG2KWQ5/lmu3qS
 8LiKLc2BSCQ4TxHIZTMORdhP2xXaFFuqeonpwWj0kiTkc1VAsGdHjcnYyr5bQ8vrhzro=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLE-0001yV-BN
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLE-0005JJ-AB
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOLLE-0005JJ-AB@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:11:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit dc3fb833c609ef1e918c47ee9d4e2439b21ffece
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:55:05 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:55:05 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 8a72e382e6..bed796c876 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -254,6 +254,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:11:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:11:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLLR-00082H-6k; Tue, 14 Apr 2020 13:11:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLLP-000829-GA
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:15 +0000
X-Inumbo-ID: 6b4b2a0e-7e51-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6b4b2a0e-7e51-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:11:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ilvTth6nNEvWohudX+EFMO+KUUqTIkBcEuLbWZisfko=; b=F38jnD8b5+oth8Rudv5V+P/U2t
 LK2OWhC2CWCIKQoSKJlaaryLHfzAtsiOnVaTaunV4o4jJKBXF0/MxhRYdtxxapZ6tSPJoI/hl5iy+
 nvSGyeQneuzUFhjGYjqze/NEZKeR0XjVzQJxhP8Z/YNGWwawWAFwC5DFOK+0eI1YapfQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLO-0001yb-Eo
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLO-0005Ka-D2
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOLLO-0005Ka-D2@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:11:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 45624a73326d0924544c8f9c0ab1cd5e226018af
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:56:06 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:56:06 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index bed796c876..e34b28b41e 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -480,25 +480,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -507,7 +504,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -531,7 +528,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -540,7 +536,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -571,17 +568,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:11:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:11:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLLa-00083e-BX; Tue, 14 Apr 2020 13:11:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLLZ-00083V-TG
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:25 +0000
X-Inumbo-ID: 7150b3f6-7e51-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7150b3f6-7e51-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 13:11:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=AVF/9z4PrR7iEIWN84mG7T1AEBbqvL3IxFuPYjPWkFs=; b=rxdqtoFuc6d8uqUqdkswMIjxPq
 GdS5nGzCzktvX/zpaEgqUcTHhqpjIOQAufDY8I6sIFMtIIP3ASr/N+TYa9yCfWoEoA+yA+Uw9C52v
 YzaCfPQbdXDFqynrX84WDxAsS1LhRQRhb8H4Z4mY5rwrmqL72iRzVhzoOwSgXNQimksA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLY-0001yk-He
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLY-0005LP-GV
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jOLLY-0005LP-GV@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:11:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 1541b26e844ea32dd1695fe9ebed76ed17b537cd
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 14:56:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:56:58 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c56c4..15c3f8155e 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -47,6 +47,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -63,11 +67,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -91,6 +103,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -120,11 +133,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -156,11 +178,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:11:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:11:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLLk-00085Q-Dq; Tue, 14 Apr 2020 13:11:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLLj-00085G-Bt
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:35 +0000
X-Inumbo-ID: 772fd659-7e51-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 772fd659-7e51-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:11:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=OElmGi0Rc3nD6ce/uzA2mBePu3OU31EoVmJoegY9LN8=; b=LYEYm7QPQJSavhKYxL+FNLgIQV
 A8D1tThzyWdrLGGukAZW67lmjMJBG8QvjalqXwLUZZ7X1jZ5SwZll+bVA82sMuiR8bAzDxxoeU0yD
 xEjeX4XbExjMlwPg2gpTMagGRQ9XtfcwGz+TRrfTnglT/zzrNq79B8pU89xIQlFf8WCg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLi-0001yt-Kf
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLi-0005MM-Ja
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOLLi-0005MM-Ja@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:11:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 46bde0561b4a6eca4deee2dc1797086353e95be9
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 14:58:48 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:58:48 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 49691da24f..2e512a1d69 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1015,7 +1015,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:11:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:11:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLLu-00086V-Fq; Tue, 14 Apr 2020 13:11:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLLt-00086N-DO
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:45 +0000
X-Inumbo-ID: 7d5626cc-7e51-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7d5626cc-7e51-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 13:11:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=om8CiDnPGfXDTyzq0CHhcYVItdmQCauXdpgKca7hQHo=; b=Q4WQ15KRA7+jSsADMblvYz8gD+
 Nj6SjYXF1vVzsh0AjPp/nJ6kHdYT6ywrLLGAsPX201LxDmKN7asQ2IEuqXMA56Cpb2Duo3+R0cn4p
 o4NdrMlPweobtjhAA22WWDfxnRd8jcCpKt040bHK7wMDHiIFQjObc+zoR3RpNrKF9Tcc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLs-0001z6-NP
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLLs-0005My-MP
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOLLs-0005My-MP@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:11:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3536f8dc39cc7311715340b87a04a89fac468406
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:00:18 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:00:18 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 2e512a1d69..38d5524a0e 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3521,8 +3521,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3589,6 +3588,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:11:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:11:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLM5-00088e-Hx; Tue, 14 Apr 2020 13:11:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLM4-00088P-5P
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:56 +0000
X-Inumbo-ID: 83c985d0-7e51-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 83c985d0-7e51-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 13:11:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=TfrUyozg7hcauj3e0z87kxmN0Mmk0DxKhbT0wbVd0cg=; b=gDiYlCZhnBJC4NNiuDPsjKYo6y
 p9ocJdVOoX7B71LbpFXEYuNKrMWZyoHdnM9jRICB0SgZP7NcQ4XSvzgctjVCEwfrbptT+xrx5tzoK
 dbj7ga24OdaecIjx7MdN3GNA7YY4UCcM0DCDww4bsqY1wfzPCEHsP9vtkX4rFP2N98Nw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLM3-00020i-Ht
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLM3-0005On-Gn
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:11:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOLM3-0005On-Gn@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:11:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 06a5a277c7262d7ca473a8eee3cdce3e2790186e
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:01:34 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:01:34 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 8a72e382e6..bed796c876 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -254,6 +254,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:12:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:12:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLMG-00089h-K6; Tue, 14 Apr 2020 13:12:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLMF-00089X-Gn
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:07 +0000
X-Inumbo-ID: 89cc703c-7e51-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 89cc703c-7e51-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:12:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=lzTQ2fKoorCzP2fMu3myvqt5/mpXjeWum1HBexT3yGs=; b=xak7dBvo7cOf8NQJMRz7qX5JLd
 vntovzsSWOk+cMmLEbA3YIkJi6PHWjW+r06YZDRrq7tC1MYIJHg/mqfFaPZgv4I/Xi8IShdbYLr0j
 tzc0TOSDXmJJThAfjtWmPFbwU1W3vnee+jGHkfnkz5GjJsk67G8LDQ3kwb051qQW0GHk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLMD-000215-Kn
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLMD-0005Pc-Ji
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOLMD-0005Pc-Ji@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:12:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7900cb7c18b5ec5d379884166b0db35ebe3846e0
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:02:37 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:02:37 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index bed796c876..e34b28b41e 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -480,25 +480,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -507,7 +504,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -531,7 +528,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -540,7 +536,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -571,17 +568,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:12:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:12:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLMP-0008Ab-Ml; Tue, 14 Apr 2020 13:12:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLMO-0008AT-I5
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:16 +0000
X-Inumbo-ID: 8fcfc006-7e51-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8fcfc006-7e51-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 13:12:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=df6IsElu2mUDCMIAqd+UprPp+q/QD7E0t7mhWJgfqlM=; b=ftdk6hXU531Mh/KbXYrLiEBFSS
 9sluoyL+cwSkujkUe7XEC/H+yfsynLGh6jU6IBUqbYS4WOLmTJ+xW9ONY6JlZPploH/iCXD4j3c83
 KPtgQ9QDhUDpQqUgyXqKSqIUWd9jNq4W7ntl/PtUiLgrl6sULMGuIM85lxaUE4p+FSUA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLMN-00021I-NW
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLMN-0005Qi-MQ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jOLMN-0005Qi-MQ@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:12:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d430e15e021b81f1f6c3e35d703a6f195a9b2e5c
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 15:03:28 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:03:28 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c56c4..15c3f8155e 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -47,6 +47,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -63,11 +67,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -91,6 +103,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -120,11 +133,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -156,11 +178,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:12:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:12:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLMZ-0008Bq-Rc; Tue, 14 Apr 2020 13:12:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLMY-0008Bi-OD
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:26 +0000
X-Inumbo-ID: 95a785a5-7e51-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 95a785a5-7e51-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:12:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XtAgGp0qJZVTxcV8b0DlgZ3H0n4YCnmUPFXQCLH0cAk=; b=k2y5pYgZD5gvK2p8+74jekKM5+
 bpMArIelF3II52pge4RUv8kkih3sfak6nAXWVuS7pV2nOqwCqvbHu6/UjY/eSTjFAXwRQA8PX528m
 mNAvrflbRD5XoXePIrsUOyKWoMh1cq0sRYWtbqF4Z2aeVmi3JyoEyt46uE4iME0th6x0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLMX-00021R-Qa
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLMX-0005Rr-PR
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOLMX-0005Rr-PR@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:12:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 52da38987adec9c1f2138d6eb4a1f107744936c1
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 15:05:01 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:05:01 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 95990561da..e272daef5a 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -998,7 +998,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:12:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:12:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLMj-0008DU-Tw; Tue, 14 Apr 2020 13:12:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLMi-0008DL-Je
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:36 +0000
X-Inumbo-ID: 9bd7fd64-7e51-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9bd7fd64-7e51-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 13:12:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=icqVjJK8yCT5eE9fWOM6FT4NaRO5vkNjQrVHjLTPb+8=; b=QJRM3bYaVNrjUVwEkX8iCSRLov
 XiXqog7kgbAU9v+sh+vSkpe4JtYb0uTYs64Xp4EbTVgjBjsmbhf++KrwLfXt7SpG9nvgVJTVw3icd
 ZMNlY/aJVBLbzHuaR16A1GWybrHEkWFRCH4AjNtxEfgYiEUKspkTjnYi4KuEatDX7DsU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLMh-00021f-TE
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLMh-0005Sp-SP
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:12:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOLMh-0005Sp-SP@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:12:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d353f82b2edae3019b0b9405976a05f18d120ce7
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:05:54 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:05:54 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index e272daef5a..7d464a9641 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3509,8 +3509,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3577,6 +3576,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:22:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:22:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLVu-0000c5-ND; Tue, 14 Apr 2020 13:22:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLVt-0000c0-OH
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:05 +0000
X-Inumbo-ID: ef080a64-7e52-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ef080a64-7e52-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 13:22:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nQVKqD1YveSJwes2Hc8YfB8DPgD19wqqIKVpagcbtik=; b=FmBPWfl0M1QltMzxGe+LRAFqhv
 um3b07ytVaE4SN/E1T3sWnVwF/5dqfZfMNUMITXeGZ1ip0HLAqA2smsMdDSLtLv2sRs3WyOP2Y+Ve
 JBDtyKG2773is7CgTpNbn6nhafToYC58zLXo5ivooZ5ZOzVM8Y8cRnKllWte1oA2nOc8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLVs-0002Cr-Tg
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLVs-0006G9-SY
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.10] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOLVs-0006G9-SY@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:22:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3e0c3163a0171914afb8d1fba44afafeac4b2267
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:08:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:08:26 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 5acdde5691..e4a3a0702f 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -257,6 +257,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.10


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:22:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:22:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLW5-0000cg-PX; Tue, 14 Apr 2020 13:22:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLW3-0000cW-Sn
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:15 +0000
X-Inumbo-ID: f504b958-7e52-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f504b958-7e52-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 13:22:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/tp+wckQCLM80+3dxqPG6KSYrJ7744uftb1oPHFcRj4=; b=GI/6xVYlTJgUS391/dZdML3y3y
 fMxJ8AxKhkpWgqyRPamNWYZgsbb71SdVrToJMIB1Csd6ov7cX35cuGut4JsL2ije4heouTCHeO+wZ
 vs/s9iN7cg52OAhB73A3feca7n5jmrHff0YvXXlr8nhbrdBEfS6zSLuC3nVcgtzSVyUU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLW3-0002Cy-0C
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLW2-0006HG-VK
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.10] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOLW2-0006HG-VK@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:22:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a91b8fc39e46c7b270c63882a1033b3c4faef5bf
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:10:48 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:10:48 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index e4a3a0702f..57b39f27b5 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -483,25 +483,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -510,7 +507,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -534,7 +531,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -543,7 +539,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -574,17 +571,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.10


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:22:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:22:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLWF-0000de-Ro; Tue, 14 Apr 2020 13:22:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLWE-0000dW-0l
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:26 +0000
X-Inumbo-ID: fb0494c2-7e52-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fb0494c2-7e52-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:22:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=O4j0o5kXh9osXBp3+YgyrWUw3Ey9e5i3uqoV+i3uqoY=; b=1uoKal7Iz37Mtkz5GfaPm1XTDK
 /6bfB0wjPKvxfvP6DypD+ABhPe81LGPgcbnsS12JRnNFCanY6xtD8E/RHkX0Bru/CHJCsKGDpWN7x
 Edn5g2MSwlaM76X0tmvtfoh6V+EsT2MrpAQW6phX1V1PFCnyUhs3yALc+2vAZ/X8F5hI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWD-0002DA-2k
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWD-0006I7-1m
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.10] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jOLWD-0006I7-1m@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:22:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 38e589d4b0eeb917e14cc021e62669f04cabd31b
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 15:11:38 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:11:38 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c56c4..15c3f8155e 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -47,6 +47,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -63,11 +67,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -91,6 +103,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -120,11 +133,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -156,11 +178,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.10


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:22:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:22:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLWO-0000f8-UL; Tue, 14 Apr 2020 13:22:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLWN-0000f1-PE
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:35 +0000
X-Inumbo-ID: 01069ba4-7e53-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 01069ba4-7e53-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 13:22:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=FoNxCygyijlbTgLmMbFFsUKZOJfDFGF3RQ8l6ShWYaw=; b=UjawZokoC462h8U/G2xv/bo8iG
 cFA2nMsknhZjk4VRRu2dXbw1YLIK3LDwcNkEBUvSL9FJhvfsIzYqLU6eB/zcrjiEHpW02RxfVPQm/
 R36PaAR60exIc7vnjSNAh873frYORGJZKF0IR91vETejW0KTyQ7QPXtvJgCL1nqX+TqI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWN-0002DO-5Q
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWN-0006Ip-4Q
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.10] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOLWN-0006Ip-4Q@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:22:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit cbedabf8276f95bb4e93a5df43257790de87daad
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 15:13:24 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:13:24 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index da7b644702..0583d56734 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -999,7 +999,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.10


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:22:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:22:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLWa-0000gi-1w; Tue, 14 Apr 2020 13:22:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLWY-0000gV-1C
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:46 +0000
X-Inumbo-ID: 065fda3f-7e53-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 065fda3f-7e53-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:22:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/s34JsM/VXZeIY5bNoyJD+BVctxQg2eP63wV9RNlSRc=; b=Y4boO2wgfcm7TNuzVOFz1ly5pQ
 EpsnkwwDEw1hMSNyImlTPk5rA6zqSHyYM7/5ggkN8ILdc0RjE10WGeHpOPl6Uq5fjc32lkbBSHLvb
 5MxAYz1W3dh553Yn4+RsBrO3mnbzS0kwaHY3lED2Yjmhjomf9rCUkdEaJTaK1M5hVanc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWX-0002DX-8P
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWX-0006Jm-7K
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.10] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOLWX-0006Jm-7K@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:22:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 24d62e126296b3f67dabdd49887d41d8ed69487f
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:14:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:14:21 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 0583d56734..ecbaa019b4 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3513,8 +3513,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3581,6 +3580,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.10


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:22:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:22:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLWk-0000hl-49; Tue, 14 Apr 2020 13:22:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLWi-0000hd-Rh
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:56 +0000
X-Inumbo-ID: 0d7a7982-7e53-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0d7a7982-7e53-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:22:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ofTXw7V2tw70D//zUUMsplizw5Hor+H2PWIldS3LW28=; b=RhWpL7vSyEr+Vs/y93L6OWcSdF
 NhCc/riN/umQFdM0JCCBi76m9DWf904zlVOvNLTjO80HRNbbKGEYYd8mtCb0E36SFGbufH7wBtEfA
 K7ZcR0aLt/HtEeORHtsN3bqz3ODDzGFDn5/LWabh0mhhtvGW7h/xZBdtTZjUc/I8aRY4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWi-0002EL-22
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:56 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWi-0006LV-17
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:22:56 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.9] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOLWi-0006LV-17@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:22:56 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b3718b79184b973d7c5d7ae625b9bea126f748ec
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:16:07 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:16:07 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index a5fe6204a5..1b7c58d60b 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -248,6 +248,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.9


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:23:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:23:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLWv-0000is-6R; Tue, 14 Apr 2020 13:23:09 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLWt-0000ig-4i
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:07 +0000
X-Inumbo-ID: 137ea1b4-7e53-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 137ea1b4-7e53-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:23:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=qTyhaCMuu4IA092dcTS9ucqw6wqJwMD52oWyHRGtfOY=; b=E0Zr0rrxsXpMu8E7riC7wQOizp
 Axj4rttCp8zJ8PoGbBvzcHSGJ+dD1oBiDhJCLDeJVE38Cv4O2/nbw7zqecx5wFnCbSH+JnUaf1Zkc
 HyJ2Km4Dn+5KdQ4kHBDNLWXVDAG8XK10EL8m9SdmZ0QPgN6A6yyLVDaiKkiRC0XpVkXM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWs-0002Eh-51
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:06 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLWs-0006MX-44
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:06 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.9] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOLWs-0006MX-44@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:23:06 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8d26adcb399f01e1bb6738f957992465801e292f
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:18:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:18:14 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 1b7c58d60b..ba7baa5dbf 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -474,25 +474,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -501,7 +498,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -525,7 +522,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -534,7 +530,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -565,17 +562,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.9


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:23:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:23:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLX4-0000jm-8T; Tue, 14 Apr 2020 13:23:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLX3-0000jf-Bj
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:17 +0000
X-Inumbo-ID: 19848132-7e53-11ea-892f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 19848132-7e53-11ea-892f-12813bfff9fa;
 Tue, 14 Apr 2020 13:23:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=NeabRf7Db4LIMgXgB127E3xX6gdPve6NZH3QoVjraaw=; b=KmyDt0sybVIdb8YDn2ciLdVsAe
 JP32fR3XCft6+27UMUfi+IVflhgNltN++1uxxD3xsOKLEHaPxUzj/vn9zM4H42kBvFZppKuNBAkWz
 Uah/sJyOfXaF+7kFjZPuJ1QLzQbKni/aoSoV3AUdOmMzmDHjv0N2uHcSo81Kkk9yohGc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLX2-0002Er-7c
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:16 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLX2-0006NZ-6c
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:16 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.9] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jOLX2-0006NZ-6c@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:23:16 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4e79375f7cf8340cbb874dab12f7225b57d70086
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 15:19:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:19:20 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c56c4..15c3f8155e 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -47,6 +47,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -63,11 +67,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -91,6 +103,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -120,11 +133,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -156,11 +178,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.9


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:23:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:23:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLXD-0000ku-Ag; Tue, 14 Apr 2020 13:23:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLXD-0000ko-0K
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:27 +0000
X-Inumbo-ID: 1f8711da-7e53-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1f8711da-7e53-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 13:23:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=1dbKaTZbolzwlNBEZsF4JYf5teRdEkBSanQjR83thf0=; b=tfk6K3S3xG/O7YsYHNfht/6/7I
 cShcyh9PTBptoJGiQn3wcL1Jorvsd5T+r54ifhXvVJEgr0M0MENo+rCA3rmXi87sGBxdOLifr8+or
 tkR3fvodEtaUC9Df4eIfSjppYFpp2q8FCBK4vCgQWU8xxLg9PnD8igxVUDYWPbCJRmzI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLXC-0002F8-BB
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:26 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLXC-0006OC-9X
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.9] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOLXC-0006OC-9X@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:23:26 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 773686b4fcda58779d4c6d5655c84e8aa15c58c5
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 15:20:48 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:20:48 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 1e72397ee4..3027478e30 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -890,7 +890,7 @@ __gnttab_map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.9


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 13:23:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 13:23:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOLXO-0000mS-D0; Tue, 14 Apr 2020 13:23:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOLXN-0000mJ-3d
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:37 +0000
X-Inumbo-ID: 258a71bc-7e53-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 258a71bc-7e53-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 13:23:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Ab63HIAr9rbOeJ5eyydrbwI5YJRVNi1BkKuL/v15WOc=; b=FathIrXNeiJYj9uQN8yPWBuOoH
 hI+GE+WicvkXCcGEpVaM4xRVA8OmuJ15Rbm9gOhjWPav3oiNgy+rIYfhftWsomhRQxqxPjPLyz/fA
 a/TCP32LHMNxK9lfBhIeulJrIsq2VjnR+yABYh1MtB+C4X3eLf/NLJAi5aMWQygLXats=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLXM-0002FH-Dq
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOLXM-0006Oz-Cy
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 13:23:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.9] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOLXM-0006Oz-Cy@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 13:23:36 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 45c90737d5f0c8bf479adcd8cb88450f1998e55c
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:21:36 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:21:36 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 3027478e30..90c09974f1 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3305,8 +3305,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3372,6 +3371,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.9


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 15:11:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 15:11:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jONDO-0002ss-7Z; Tue, 14 Apr 2020 15:11:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jONDN-0002sn-4F
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 15:11:05 +0000
X-Inumbo-ID: 28c8cd74-7e62-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 28c8cd74-7e62-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 15:11:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=aYJwiesud98/zWfZOwhtd16vKwAtHwfLzzuPPjJ7Zr0=; b=pJcx0eGM/7vpoXrX0/x2GvIgzz
 1d4imKfQeCNn16Lp9Uo0SkN988kkbVj+TMf67MUx89Uxiy2f2cDTMqG4aZiZAxo6ICKCqAh1CXJna
 WIkxCvEcCkOZ7V8fhwJ7OsV0s64wi8L7xhLAOTcXApiO+YIkIkOh7ayFLJeC6utpUyoA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jONDM-0004QB-AU
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 15:11:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jONDM-0005rq-9S
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 15:11:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/svm: Don't use vmcb->tlb_control as if it is a
 boolean
Message-Id: <E1jONDM-0005rq-9S@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 15:11:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit fcd06227f83643194f8018f8dd37adce57763a61
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Tue Feb 12 18:37:04 2019 +0000
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Tue Apr 14 15:56:52 2020 +0100

    x86/svm: Don't use vmcb->tlb_control as if it is a boolean
    
    svm_asid_handle_vmrun() treats tlb_control as if it were boolean, but this has
    been superseded by new additions to the SVM spec.
    
    Introduce an enum containing all legal values, and update
    svm_asid_handle_vmrun() to use appropriate constants.
    
    While adjusting this, take the opportunity to fix up two coding style issues,
    and trim the include list.
    
    No functional change.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/hvm/svm/asid.c        | 15 +++++++--------
 xen/include/asm-x86/hvm/svm/vmcb.h | 13 ++++++++++++-
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/asid.c b/xen/arch/x86/hvm/svm/asid.c
index e554e25213..9be90058c7 100644
--- a/xen/arch/x86/hvm/svm/asid.c
+++ b/xen/arch/x86/hvm/svm/asid.c
@@ -15,12 +15,9 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <xen/init.h>
-#include <xen/lib.h>
-#include <xen/perfc.h>
-#include <asm/hvm/svm/asid.h>
 #include <asm/amd.h>
 #include <asm/hvm/nestedhvm.h>
+#include <asm/hvm/svm/asid.h>
 
 void svm_asid_init(const struct cpuinfo_x86 *c)
 {
@@ -44,19 +41,21 @@ void svm_asid_handle_vmrun(void)
     struct hvm_vcpu_asid *p_asid =
         nestedhvm_vcpu_in_guestmode(curr)
         ? &vcpu_nestedhvm(curr).nv_n2asid : &curr->arch.hvm.n1asid;
-    bool_t need_flush = hvm_asid_handle_vmenter(p_asid);
+    bool need_flush = hvm_asid_handle_vmenter(p_asid);
 
     /* ASID 0 indicates that ASIDs are disabled. */
     if ( p_asid->asid == 0 )
     {
         vmcb_set_guest_asid(vmcb, 1);
-        vmcb->tlb_control = 1;
+        /* TODO: investigate using TLB_CTRL_FLUSH_ASID here instead. */
+        vmcb->tlb_control = TLB_CTRL_FLUSH_ALL;
         return;
     }
 
-    if (vmcb_get_guest_asid(vmcb) != p_asid->asid)
+    if ( vmcb_get_guest_asid(vmcb) != p_asid->asid )
         vmcb_set_guest_asid(vmcb, p_asid->asid);
-    vmcb->tlb_control = need_flush;
+
+    vmcb->tlb_control = need_flush ? TLB_CTRL_FLUSH_ALL : TLB_CTRL_NO_FLUSH;
 }
 
 /*
diff --git a/xen/include/asm-x86/hvm/svm/vmcb.h b/xen/include/asm-x86/hvm/svm/vmcb.h
index e5ed38369e..c2e1972feb 100644
--- a/xen/include/asm-x86/hvm/svm/vmcb.h
+++ b/xen/include/asm-x86/hvm/svm/vmcb.h
@@ -302,6 +302,17 @@ enum VMEXIT_EXITCODE
     VMEXIT_INVALID          =  -1
 };
 
+enum
+{
+    /* Available on all SVM-capable hardware. */
+    TLB_CTRL_NO_FLUSH             = 0,
+    TLB_CTRL_FLUSH_ALL            = 1,
+
+    /* Available with the FlushByASID feature. */
+    TLB_CTRL_FLUSH_ASID           = 3,
+    TLB_CTRL_FLUSH_ASID_NONGLOBAL = 7,
+};
+
 typedef union
 {
     struct
@@ -419,7 +430,7 @@ struct vmcb_struct {
     u64 _msrpm_base_pa;         /* offset 0x48 - cleanbit 1 */
     u64 _tsc_offset;            /* offset 0x50 - cleanbit 0 */
     u32 _guest_asid;            /* offset 0x58 - cleanbit 2 */
-    u8  tlb_control;            /* offset 0x5C */
+    u8  tlb_control;            /* offset 0x5C - TLB_CTRL_* */
     u8  res07[3];
     vintr_t _vintr;             /* offset 0x60 - cleanbit 3 */
     intstat_t int_stat;         /* offset 0x68 */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:44:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPbY-0008Bk-Eo; Tue, 14 Apr 2020 17:44:12 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPbX-0008Bf-5J
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:11 +0000
X-Inumbo-ID: 8bf24154-7e77-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8bf24154-7e77-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:44:10 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=LWxTQUalMrkkQ4GiNUKl8ueawLRtApr0p0tfHIA3F1Q=; b=SKaZ6e9j5V2oeX94f91w7+iNqA
 0eggCQAUkvP0pnk0hUQuwbHIBuLki/+aECqRbCbTqQ3U/gwgIa40lTbjfXuwKFzqY7am7xQkFEN+a
 Py0d8r1q9lsLJFUE24IQoRw6h0eURJ+KpzxCSPeN5iU16s2m5lgz6QzLSrW8WCfpjGNk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPbW-0007oW-1c
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:10 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPbV-00007e-Ui
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:09 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] dma-helpers: ensure AIO callback is invoked
 after cancellation
Message-Id: <E1jOPbV-00007e-Ui@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:44:09 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit fbde196c30e4797a51bda046ba514b187963d4ba
Author:     Paolo Bonzini <pbonzini@redhat.com>
AuthorDate: Mon Jul 29 23:34:16 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:28:10 2019 -0500

    dma-helpers: ensure AIO callback is invoked after cancellation
    
    dma_aio_cancel unschedules the BH if there is one, which corresponds
    to the reschedule_dma case of dma_blk_cb.  This can stall the DMA
    permanently, because dma_complete will never get invoked and therefore
    nobody will ever invoke the original AIO callback in dbs->common.cb.
    
    Fix this by invoking the callback (which is ensured to happen after
    a bdrv_aio_cancel_async, or done manually in the dbs->bh case), and
    add assertions to check that the DMA state machine is indeed waiting
    for dma_complete or reschedule_dma, but never both.
    
    Reported-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Message-id: 20190729213416.1972-1-pbonzini@redhat.com
    Signed-off-by: John Snow <jsnow@redhat.com>
    (cherry picked from commit 539343c0a47e19d5dd64d846d64d084d9793681f)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 dma-helpers.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/dma-helpers.c b/dma-helpers.c
index 2d7e02d35e..d3871dc61e 100644
--- a/dma-helpers.c
+++ b/dma-helpers.c
@@ -90,6 +90,7 @@ static void reschedule_dma(void *opaque)
 {
     DMAAIOCB *dbs = (DMAAIOCB *)opaque;
 
+    assert(!dbs->acb && dbs->bh);
     qemu_bh_delete(dbs->bh);
     dbs->bh = NULL;
     dma_blk_cb(dbs, 0);
@@ -111,15 +112,12 @@ static void dma_complete(DMAAIOCB *dbs, int ret)
 {
     trace_dma_complete(dbs, ret, dbs->common.cb);
 
+    assert(!dbs->acb && !dbs->bh);
     dma_blk_unmap(dbs);
     if (dbs->common.cb) {
         dbs->common.cb(dbs->common.opaque, ret);
     }
     qemu_iovec_destroy(&dbs->iov);
-    if (dbs->bh) {
-        qemu_bh_delete(dbs->bh);
-        dbs->bh = NULL;
-    }
     qemu_aio_unref(dbs);
 }
 
@@ -179,14 +177,21 @@ static void dma_aio_cancel(BlockAIOCB *acb)
 
     trace_dma_aio_cancel(dbs);
 
+    assert(!(dbs->acb && dbs->bh));
     if (dbs->acb) {
+        /* This will invoke dma_blk_cb.  */
         blk_aio_cancel_async(dbs->acb);
+        return;
     }
+
     if (dbs->bh) {
         cpu_unregister_map_client(dbs->bh);
         qemu_bh_delete(dbs->bh);
         dbs->bh = NULL;
     }
+    if (dbs->common.cb) {
+        dbs->common.cb(dbs->common.opaque, -ECANCELED);
+    }
 }
 
 static AioContext *dma_get_aio_context(BlockAIOCB *acb)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:44:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:44:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPbj-0008CJ-H5; Tue, 14 Apr 2020 17:44:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPbi-0008CC-ES
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:22 +0000
X-Inumbo-ID: 91f48fef-7e77-11ea-8987-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 91f48fef-7e77-11ea-8987-12813bfff9fa;
 Tue, 14 Apr 2020 17:44:20 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/zS9AHNTW2Y7ocLJ5XIFdXOjszCcBjNfVlU6IA7J/EA=; b=o531yla5wJ0oSJuE/QIL4wZ65E
 qf7cjC0dspx8UseB9/u3PWmO9X/9hSEW0NI0u1+a9hMAfa8AAqY7l1ZbRmvMpB8X/Dw31EzBEY15b
 srEnoaSyvNU4RwRZhoYozA5O+mQSCeeRaxfIApMTwUJRoAjRE/NiheB5AHiIXAGIFhxo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPbg-0007oe-8j
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:20 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPbg-00008O-7g
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:20 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] Revert "ide/ahci: Check for -ECANCELED in aio
 callbacks"
Message-Id: <E1jOPbg-00008O-7g@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:44:20 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 73a5bf472921068e6db10e7e325b7ac46f111834
Author:     John Snow <jsnow@redhat.com>
AuthorDate: Mon Jul 29 18:36:05 2019 -0400
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:28:24 2019 -0500

    Revert "ide/ahci: Check for -ECANCELED in aio callbacks"
    
    This reverts commit 0d910cfeaf2076b116b4517166d5deb0fea76394.
    
    It's not correct to just ignore an error code in a callback; we need to
    handle that error and possible report failure to the guest so that they
    don't wait indefinitely for an operation that will now never finish.
    
    This ought to help cases reported by Nutanix where iSCSI returns a
    legitimate -ECANCELED for certain operations which should be propagated
    normally.
    
    Reported-by: Shaju Abraham <shaju.abraham@nutanix.com>
    Signed-off-by: John Snow <jsnow@redhat.com>
    Message-id: 20190729223605.7163-1-jsnow@redhat.com
    Signed-off-by: John Snow <jsnow@redhat.com>
    (cherry picked from commit 8ec41c4265714255d5a138f8b538faf3583dcff6)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/ide/ahci.c |  3 ---
 hw/ide/core.c | 14 --------------
 2 files changed, 17 deletions(-)

diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 00ba422a48..6aaf66534a 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -1023,9 +1023,6 @@ static void ncq_cb(void *opaque, int ret)
     IDEState *ide_state = &ncq_tfs->drive->port.ifs[0];
 
     ncq_tfs->aiocb = NULL;
-    if (ret == -ECANCELED) {
-        return;
-    }
 
     if (ret < 0) {
         bool is_read = ncq_tfs->cmd == READ_FPDMA_QUEUED;
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 6afadf894f..8e1624f7ce 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -722,9 +722,6 @@ static void ide_sector_read_cb(void *opaque, int ret)
     s->pio_aiocb = NULL;
     s->status &= ~BUSY_STAT;
 
-    if (ret == -ECANCELED) {
-        return;
-    }
     if (ret != 0) {
         if (ide_handle_rw_error(s, -ret, IDE_RETRY_PIO |
                                 IDE_RETRY_READ)) {
@@ -840,10 +837,6 @@ static void ide_dma_cb(void *opaque, int ret)
     uint64_t offset;
     bool stay_active = false;
 
-    if (ret == -ECANCELED) {
-        return;
-    }
-
     if (ret == -EINVAL) {
         ide_dma_error(s);
         return;
@@ -975,10 +968,6 @@ static void ide_sector_write_cb(void *opaque, int ret)
     IDEState *s = opaque;
     int n;
 
-    if (ret == -ECANCELED) {
-        return;
-    }
-
     s->pio_aiocb = NULL;
     s->status &= ~BUSY_STAT;
 
@@ -1058,9 +1047,6 @@ static void ide_flush_cb(void *opaque, int ret)
 
     s->pio_aiocb = NULL;
 
-    if (ret == -ECANCELED) {
-        return;
-    }
     if (ret < 0) {
         /* XXX: What sector number to set here? */
         if (ide_handle_rw_error(s, -ret, IDE_RETRY_FLUSH)) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:44:32 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:44:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPbs-0008DG-JC; Tue, 14 Apr 2020 17:44:32 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPbr-0008D5-1G
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:31 +0000
X-Inumbo-ID: 9807246e-7e77-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9807246e-7e77-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:44:30 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=PpX9ooDVyTc5w8WNPucSaoS3SV+bAVUvG3WQJDp/WJ4=; b=PiuIxlPGI0eSVJziGsDqGYsauc
 LSAm1A4dXWK8+oG8mqbD0+cCSvE9pdi8k71O4HJIj4cu3KYzXz4fUl01gXRwGWM0f7rnmu2iZ+9+j
 VPr8epr/3ZQNm2M3ZZ+LS7ihj+qyO7BE3u7XRdc3hVt1o9t1r3AjDmTuJBI96KOIOz1A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPbq-0007on-Bh
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:30 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPbq-0000A9-AS
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:30 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] s390x/tcg: Fix VERIM with 32/64 bit elements
Message-Id: <E1jOPbq-0000A9-AS@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:44:30 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 499a5d6bb47ec8be73fc47a37952c4d595957232
Author:     David Hildenbrand <david@redhat.com>
AuthorDate: Wed Aug 14 17:12:42 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:31:08 2019 -0500

    s390x/tcg: Fix VERIM with 32/64 bit elements
    
    Wrong order of operands. The constant always comes last. Makes QEMU crash
    reliably on specific git fetch invocations.
    
    Reported-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Message-Id: <20190814151242.27199-1-david@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Fixes: 5c4b0ab460ef ("s390x/tcg: Implement VECTOR ELEMENT ROTATE AND INSERT UNDER MASK")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    (cherry picked from commit 25bcb45d1b81d22634daa2b1a2d8bee746ac129b)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/s390x/translate_vx.inc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/s390x/translate_vx.inc.c b/target/s390x/translate_vx.inc.c
index 41d5cf869f..0caddb3958 100644
--- a/target/s390x/translate_vx.inc.c
+++ b/target/s390x/translate_vx.inc.c
@@ -213,7 +213,7 @@ static void get_vec_element_ptr_i64(TCGv_ptr ptr, uint8_t reg, TCGv_i64 enr,
                        vec_full_reg_offset(v3), ptr, 16, 16, data, fn)
 #define gen_gvec_3i(v1, v2, v3, c, gen) \
     tcg_gen_gvec_3i(vec_full_reg_offset(v1), vec_full_reg_offset(v2), \
-                    vec_full_reg_offset(v3), c, 16, 16, gen)
+                    vec_full_reg_offset(v3), 16, 16, c, gen)
 #define gen_gvec_4(v1, v2, v3, v4, gen) \
     tcg_gen_gvec_4(vec_full_reg_offset(v1), vec_full_reg_offset(v2), \
                    vec_full_reg_offset(v3), vec_full_reg_offset(v4), \
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:44:42 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:44:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPc2-0008Ex-Le; Tue, 14 Apr 2020 17:44:42 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPc1-0008Eo-5G
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:41 +0000
X-Inumbo-ID: 9e06ad9e-7e77-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9e06ad9e-7e77-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:44:40 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/qaP8J36fj3rFTp6b01oxRwxgBlkafN8bs8LWcRv9SM=; b=OH5CBLcqF0qy+MxOoF4x8VkkPM
 QhOeI/JPpKT3YgJyiq4cLeIgUxmIn/Mp6CFNvjZfcqFwQYWzkhDQqvBVbN8sF+qhLetskGrt6X0xb
 RN1lPEcLyu6T1JgnLfajZSgiuKFseFKj+lQdUCMEIZurXUxbVkqd0R4MJ3TEzFXzG+tM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPc0-0007p3-Eu
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:40 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPc0-0000Ax-Dd
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:40 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] target/alpha: fix tlb_fill trap_arg2 value
 for instruction fetch
Message-Id: <E1jOPc0-0000Ax-Dd@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:44:40 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4bfd496be385073644f639e58790b84bf5f7a5ef
Author:     Aurelien Jarno <aurelien@aurel32.net>
AuthorDate: Thu Aug 22 10:45:14 2019 -0700
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:31:56 2019 -0500

    target/alpha: fix tlb_fill trap_arg2 value for instruction fetch
    
    Commit e41c94529740cc26 ("target/alpha: Convert to CPUClass::tlb_fill")
    slightly changed the way the trap_arg2 value is computed in case of TLB
    fill. The type of the variable used in the ternary operator has been
    changed from an int to an enum. This causes the -1 value to not be
    sign-extended to 64-bit in case of an instruction fetch. The trap_arg2
    ends up with 0xffffffff instead of 0xffffffffffffffff. Fix that by
    changing the -1 into -1LL.
    
    This fixes the execution of user space processes in qemu-system-alpha.
    
    Fixes: e41c94529740cc26
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    [rth: Test MMU_DATA_LOAD and MMU_DATA_STORE instead of implying them.]
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    (cherry picked from commit cb1de55a83eaca9ee32be9c959dca99e11f2fea8)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/alpha/helper.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/target/alpha/helper.c b/target/alpha/helper.c
index 93b8e788b1..d0cc623192 100644
--- a/target/alpha/helper.c
+++ b/target/alpha/helper.c
@@ -283,7 +283,9 @@ bool alpha_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
         cs->exception_index = EXCP_MMFAULT;
         env->trap_arg0 = addr;
         env->trap_arg1 = fail;
-        env->trap_arg2 = (access_type == MMU_INST_FETCH ? -1 : access_type);
+        env->trap_arg2 = (access_type == MMU_DATA_LOAD ? 0ull :
+                          access_type == MMU_DATA_STORE ? 1ull :
+                          /* access_type == MMU_INST_FETCH */ -1ull);
         cpu_loop_exit_restore(cs, retaddr);
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:44:52 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:44:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPcC-0008Fs-O2; Tue, 14 Apr 2020 17:44:52 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPcB-0008Fh-Do
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:51 +0000
X-Inumbo-ID: a411884e-7e77-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a411884e-7e77-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:44:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Y/KtQFRgRVgkELWFJYiaTXn8nnnTTy3tr/989a7q86U=; b=vC0ik8e9A5ph0VbgcCmemPe4o8
 S1dP5sT4HExtehFWYM260CewnYw8yOSIaTyw0KbaRmKEdmanDSn7cI6IBhINDKynSSDKm7XVADywJ
 tkTlFihNFQ3chdMJo6wCleE0ceTKmpQjRw6o3RHr14l3RF9qDZWDmKjnGP9nuocfa/Z0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPcA-0007pE-I7
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:50 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPcA-0000C1-H3
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:44:50 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] pc: Don't make die-id mandatory unless
 necessary
Message-Id: <E1jOPcA-0000C1-H3@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:44:50 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7ebcd375ade505358c1c45542de22f188c599bdd
Author:     Eduardo Habkost <ehabkost@redhat.com>
AuthorDate: Fri Aug 16 14:07:50 2019 -0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:41:00 2019 -0500

    pc: Don't make die-id mandatory unless necessary
    
    We have this issue reported when using libvirt to hotplug CPUs:
    https://bugzilla.redhat.com/show_bug.cgi?id=1741451
    
    Basically, libvirt is not copying die-id from
    query-hotpluggable-cpus, but die-id is now mandatory.
    
    We could blame libvirt and say it is not following the documented
    interface, because we have this buried in the QAPI schema
    documentation:
    
    > Note: currently there are 5 properties that could be present
    > but management should be prepared to pass through other
    > properties with device_add command to allow for future
    > interface extension. This also requires the filed names to be kept in
    > sync with the properties passed to -device/device_add.
    
    But I don't think this would be reasonable from us.  We can just
    make QEMU more flexible and let die-id to be omitted when there's
    no ambiguity.  This will allow us to keep compatibility with
    existing libvirt versions.
    
    Test case included to ensure we don't break this again.
    
    Fixes: commit 176d2cda0dee ("i386/cpu: Consolidate die-id validity in smp context")
    Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
    Message-Id: <20190816170750.23910-1-ehabkost@redhat.com>
    Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
    (cherry picked from commit fea374e7c8079563bca7c8fac895c6a880f76adc)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/i386/pc.c                             |  8 ++++++++
 tests/acceptance/pc_cpu_hotplug_props.py | 35 ++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 549c437050..947f81070f 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -2403,6 +2403,14 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
         int max_socket = (ms->smp.max_cpus - 1) /
                                 smp_threads / smp_cores / pcms->smp_dies;
 
+        /*
+         * die-id was optional in QEMU 4.0 and older, so keep it optional
+         * if there's only one die per socket.
+         */
+        if (cpu->die_id < 0 && pcms->smp_dies == 1) {
+            cpu->die_id = 0;
+        }
+
         if (cpu->socket_id < 0) {
             error_setg(errp, "CPU socket-id is not set");
             return;
diff --git a/tests/acceptance/pc_cpu_hotplug_props.py b/tests/acceptance/pc_cpu_hotplug_props.py
new file mode 100644
index 0000000000..08b7e632c6
--- /dev/null
+++ b/tests/acceptance/pc_cpu_hotplug_props.py
@@ -0,0 +1,35 @@
+#
+# Ensure CPU die-id can be omitted on -device
+#
+#  Copyright (c) 2019 Red Hat Inc
+#
+# Author:
+#  Eduardo Habkost <ehabkost@redhat.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, see <http://www.gnu.org/licenses/>.
+#
+
+from avocado_qemu import Test
+
+class OmittedCPUProps(Test):
+    """
+    :avocado: tags=arch:x86_64
+    """
+    def test_no_die_id(self):
+        self.vm.add_args('-nodefaults', '-S')
+        self.vm.add_args('-smp', '1,sockets=2,cores=2,threads=2,maxcpus=8')
+        self.vm.add_args('-cpu', 'qemu64')
+        self.vm.add_args('-device', 'qemu64-x86_64-cpu,socket-id=1,core-id=0,thread-id=0')
+        self.vm.launch()
+        self.assertEquals(len(self.vm.command('query-cpus')), 2)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:45:02 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:45:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPcM-0008Gx-Sb; Tue, 14 Apr 2020 17:45:02 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPcL-0008Gp-Da
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:01 +0000
X-Inumbo-ID: aa17fc46-7e77-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id aa17fc46-7e77-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 17:45:00 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=47110u+8MBZOUghz9QFAYN+31jSDhiyKZK6P3I99Id8=; b=I/IqjlNKDxxM11h92rtwDATi1r
 +pjkH4MUDje2o6k0yMZ+RNeX4uWyhZM7+RrUWjjO9XBjMBFWuxBFR7OjNoyWtaUzsd5ypzwI61Kaw
 Rr4yC0Fhw1RqXKsp0FhO0TSGIlDYWi9Tb5QDBVqw23TgXajpNFFOgOqI89+90SHaEEoY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPcK-0007q2-Mk
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:00 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPcK-0000D2-Ki
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:00 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] xen-bus: Fix backend state transition on
 device reset
Message-Id: <E1jOPcK-0000D2-Ki@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:45:00 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b6cedc911e44a5bc6f3f120fee411c1ccc22f220
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Aug 23 11:15:33 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:42:16 2019 -0500

    xen-bus: Fix backend state transition on device reset
    
    When a frontend wants to reset its state and the backend one, it
    starts with setting "Closing", then waits for the backend (QEMU) to do
    the same.
    
    But when QEMU is setting "Closing" to its state, it triggers an event
    (xenstore watch) that re-execute xen_device_backend_changed() and set
    the backend state to "Closed". QEMU should wait for the frontend to
    set "Closed" before doing the same.
    
    Before setting "Closed" to the backend_state, we are also going to
    check if there is a frontend. If that the case, when the backend state
    is set to "Closing" the frontend should react and sets its state to
    "Closing" then "Closed". The backend should wait for that to happen.
    
    Fixes: b6af8926fb858c4f1426e5acb2cfc1f0580ec98a
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
    Message-Id: <20190823101534.465-2-anthony.perard@citrix.com>
    (cherry picked from commit cb3231460747552d70af9d546dc53d8195bcb796)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/xen/xen-bus.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 7503eea9e9..5929aa4b2e 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -516,6 +516,23 @@ static void xen_device_backend_set_online(XenDevice *xendev, bool online)
     xen_device_backend_printf(xendev, "online", "%u", online);
 }
 
+/*
+ * Tell from the state whether the frontend is likely alive,
+ * i.e. it will react to a change of state of the backend.
+ */
+static bool xen_device_state_is_active(enum xenbus_state state)
+{
+    switch (state) {
+    case XenbusStateInitWait:
+    case XenbusStateInitialised:
+    case XenbusStateConnected:
+    case XenbusStateClosing:
+        return true;
+    default:
+        return false;
+    }
+}
+
 static void xen_device_backend_changed(void *opaque)
 {
     XenDevice *xendev = opaque;
@@ -539,11 +556,11 @@ static void xen_device_backend_changed(void *opaque)
 
     /*
      * If the toolstack (or unplug request callback) has set the backend
-     * state to Closing, but there is no active frontend (i.e. the
-     * state is not Connected) then set the backend state to Closed.
+     * state to Closing, but there is no active frontend then set the
+     * backend state to Closed.
      */
     if (xendev->backend_state == XenbusStateClosing &&
-        xendev->frontend_state != XenbusStateConnected) {
+        !xen_device_state_is_active(state)) {
         xen_device_backend_set_state(xendev, XenbusStateClosed);
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:45:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:45:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPcW-0008Hi-Ut; Tue, 14 Apr 2020 17:45:12 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPcV-0008Hc-Fc
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:11 +0000
X-Inumbo-ID: b01d1ee6-7e77-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b01d1ee6-7e77-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 17:45:11 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=F905d+ua2c01y46QElp5bMb/O7c3Bxr4AqzW+sCBibU=; b=JsAJ4OahZAW5kA4Z3yF6ecSpUY
 vJ3oc8FQP8WT2Cwjo/HQLoZ+gSXzwmYSM/zFgkK7fUvyVxAHbsyq36iSBZ8KQVf9e6hdodzySqz7p
 rixJ1S8S5pFgPfP/phqXavRb0h1OYacYb9YJAWkAHGg45QoBMPNZqjt8w4gdJilG4Tdk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPcU-0007qb-Py
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:10 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPcU-0000E0-P8
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:10 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] xen-bus: check whether the frontend is active
 during device reset...
Message-Id: <E1jOPcU-0000E0-P8@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:45:10 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c12adfd8f61b9dad3a98b0622457ce0ad62db245
Author:     Paul Durrant <paul.durrant@citrix.com>
AuthorDate: Tue Sep 10 18:17:53 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:43:19 2019 -0500

    xen-bus: check whether the frontend is active during device reset...
    
    ...not the backend
    
    Commit cb323146 "xen-bus: Fix backend state transition on device reset"
    contained a subtle mistake. The hunk
    
    @@ -539,11 +556,11 @@ static void xen_device_backend_changed(void *opaque)
    
         /*
          * If the toolstack (or unplug request callback) has set the backend
    -     * state to Closing, but there is no active frontend (i.e. the
    -     * state is not Connected) then set the backend state to Closed.
    +     * state to Closing, but there is no active frontend then set the
    +     * backend state to Closed.
          */
         if (xendev->backend_state == XenbusStateClosing &&
    -        xendev->frontend_state != XenbusStateConnected) {
    +        !xen_device_state_is_active(state)) {
             xen_device_backend_set_state(xendev, XenbusStateClosed);
         }
    
    mistakenly replaced the check of 'xendev->frontend_state' with a check
    (now in a helper function) of 'state', which actually equates to
    'xendev->backend_state'.
    
    This patch fixes the mistake.
    
    Fixes: cb3231460747552d70af9d546dc53d8195bcb796
    Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
    Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
    Message-Id: <20190910171753.3775-1-paul.durrant@citrix.com>
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    (cherry picked from commit df6180bb56cd03949c2c64083da58755fed81a61)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/xen/xen-bus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 5929aa4b2e..10b7e02b5c 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -560,7 +560,7 @@ static void xen_device_backend_changed(void *opaque)
      * backend state to Closed.
      */
     if (xendev->backend_state == XenbusStateClosing &&
-        !xen_device_state_is_active(state)) {
+        !xen_device_state_is_active(xendev->frontend_state)) {
         xen_device_backend_set_state(xendev, XenbusStateClosed);
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:45:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:45:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPch-0008If-0r; Tue, 14 Apr 2020 17:45:23 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPcf-0008IX-QJ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:21 +0000
X-Inumbo-ID: b6218110-7e77-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b6218110-7e77-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 17:45:21 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GZrz/FH55AC8EtozvxgxkkJRrWs7LMIiALdkQ/K7+MU=; b=zEVBxUvUO5KqyI8RkRRBJL6Gh8
 v7SQCjbGOFmAaACwx2clAgs1xzEUxfs2JndVBzZkWi1p1f962rGGziXX5mY4IE1JNZlOvdVKCwAf1
 lP4gwtcbtG1Idtv/XxSRmb828meQb7B7i9P+aMWbAmt5iDeULMYCz3NX6tmpzHCCI8xM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPce-0007qk-So
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:20 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPce-0000Eb-Rr
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:20 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/file-posix: Reduce xfsctl() use
Message-Id: <E1jOPce-0000Eb-Rr@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:45:20 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6f1a94035b02d3676a897ea5fa4cda4c62128228
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Aug 23 15:03:40 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:45:18 2019 -0500

    block/file-posix: Reduce xfsctl() use
    
    This patch removes xfs_write_zeroes() and xfs_discard().  Both functions
    have been added just before the same feature was present through
    fallocate():
    
    - fallocate() has supported PUNCH_HOLE for XFS since Linux 2.6.38 (March
      2011); xfs_discard() was added in December 2010.
    
    - fallocate() has supported ZERO_RANGE for XFS since Linux 3.15 (June
      2014); xfs_write_zeroes() was added in November 2013.
    
    Nowadays, all systems that qemu runs on should support both fallocate()
    features (RHEL 7's kernel does).
    
    xfsctl() is still useful for getting the request alignment for O_DIRECT,
    so this patch does not remove our dependency on it completely.
    
    Note that xfs_write_zeroes() had a bug: It calls ftruncate() when the
    file is shorter than the specified range (because ZERO_RANGE does not
    increase the file length).  ftruncate() may yield and then discard data
    that parallel write requests have written past the EOF in the meantime.
    Dropping the function altogether fixes the bug.
    
    Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
    Fixes: 50ba5b2d994853b38fed10e0841b119da0f8b8e5
    Reported-by: Lukáš Doktor <ldoktor@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Tested-by: Stefano Garzarella <sgarzare@redhat.com>
    Tested-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit b2c6f23f4a9f6d8f1b648705cd46d3713b78d6a2)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/file-posix.c | 77 +-----------------------------------------------------
 1 file changed, 1 insertion(+), 76 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index 4479cc7ab4..992eb4a798 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1445,59 +1445,6 @@ out:
     }
 }
 
-#ifdef CONFIG_XFS
-static int xfs_write_zeroes(BDRVRawState *s, int64_t offset, uint64_t bytes)
-{
-    int64_t len;
-    struct xfs_flock64 fl;
-    int err;
-
-    len = lseek(s->fd, 0, SEEK_END);
-    if (len < 0) {
-        return -errno;
-    }
-
-    if (offset + bytes > len) {
-        /* XFS_IOC_ZERO_RANGE does not increase the file length */
-        if (ftruncate(s->fd, offset + bytes) < 0) {
-            return -errno;
-        }
-    }
-
-    memset(&fl, 0, sizeof(fl));
-    fl.l_whence = SEEK_SET;
-    fl.l_start = offset;
-    fl.l_len = bytes;
-
-    if (xfsctl(NULL, s->fd, XFS_IOC_ZERO_RANGE, &fl) < 0) {
-        err = errno;
-        trace_file_xfs_write_zeroes(strerror(errno));
-        return -err;
-    }
-
-    return 0;
-}
-
-static int xfs_discard(BDRVRawState *s, int64_t offset, uint64_t bytes)
-{
-    struct xfs_flock64 fl;
-    int err;
-
-    memset(&fl, 0, sizeof(fl));
-    fl.l_whence = SEEK_SET;
-    fl.l_start = offset;
-    fl.l_len = bytes;
-
-    if (xfsctl(NULL, s->fd, XFS_IOC_UNRESVSP64, &fl) < 0) {
-        err = errno;
-        trace_file_xfs_discard(strerror(errno));
-        return -err;
-    }
-
-    return 0;
-}
-#endif
-
 static int translate_err(int err)
 {
     if (err == -ENODEV || err == -ENOSYS || err == -EOPNOTSUPP ||
@@ -1553,10 +1500,8 @@ static ssize_t handle_aiocb_write_zeroes_block(RawPosixAIOData *aiocb)
 static int handle_aiocb_write_zeroes(void *opaque)
 {
     RawPosixAIOData *aiocb = opaque;
-#if defined(CONFIG_FALLOCATE) || defined(CONFIG_XFS)
-    BDRVRawState *s = aiocb->bs->opaque;
-#endif
 #ifdef CONFIG_FALLOCATE
+    BDRVRawState *s = aiocb->bs->opaque;
     int64_t len;
 #endif
 
@@ -1564,12 +1509,6 @@ static int handle_aiocb_write_zeroes(void *opaque)
         return handle_aiocb_write_zeroes_block(aiocb);
     }
 
-#ifdef CONFIG_XFS
-    if (s->is_xfs) {
-        return xfs_write_zeroes(s, aiocb->aio_offset, aiocb->aio_nbytes);
-    }
-#endif
-
 #ifdef CONFIG_FALLOCATE_ZERO_RANGE
     if (s->has_write_zeroes) {
         int ret = do_fallocate(s->fd, FALLOC_FL_ZERO_RANGE,
@@ -1632,14 +1571,6 @@ static int handle_aiocb_write_zeroes_unmap(void *opaque)
     }
 #endif
 
-#ifdef CONFIG_XFS
-    if (s->is_xfs) {
-        /* xfs_discard() guarantees that the discarded area reads as all-zero
-         * afterwards, so we can use it here. */
-        return xfs_discard(s, aiocb->aio_offset, aiocb->aio_nbytes);
-    }
-#endif
-
     /* If we couldn't manage to unmap while guaranteed that the area reads as
      * all-zero afterwards, just write zeroes without unmapping */
     ret = handle_aiocb_write_zeroes(aiocb);
@@ -1716,12 +1647,6 @@ static int handle_aiocb_discard(void *opaque)
         ret = -errno;
 #endif
     } else {
-#ifdef CONFIG_XFS
-        if (s->is_xfs) {
-            return xfs_discard(s, aiocb->aio_offset, aiocb->aio_nbytes);
-        }
-#endif
-
 #ifdef CONFIG_FALLOCATE_PUNCH_HOLE
         ret = do_fallocate(s->fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
                            aiocb->aio_offset, aiocb->aio_nbytes);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:45:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:45:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPcs-0008Ji-3R; Tue, 14 Apr 2020 17:45:34 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPcq-0008JS-6D
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:32 +0000
X-Inumbo-ID: bbaa3b69-7e77-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bbaa3b69-7e77-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:45:31 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=qV3Yk0wOTo5ffPHlbGUZiLA6GZASS6OtbasAJ+LhsY0=; b=OXgvmLE8rwJ6JiFa75KhXNPTAM
 qo7phMZc5oS0DZwCXQ//VtjiTngugA9oeqyRT1K8pibPmo5Z4A/d0wkSNaeYAdYnLjA7+uOzfJDlb
 3u5VqgEOzh/xZUWf75fT9Wcl1nqPQ6AKfJvIhlB14HKP/nwvSIAA413mDup3Aj0qwdxo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPco-0007qv-Ve
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:30 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPco-0000FT-Ul
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:30 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Test reverse sub-cluster qcow2 writes
Message-Id: <E1jOPco-0000FT-Ul@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:45:30 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3361d03ff005f0a581664582c914da66ab886cfb
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Aug 23 15:03:41 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:46:09 2019 -0500

    iotests: Test reverse sub-cluster qcow2 writes
    
    This exercises the regression introduced in commit
    50ba5b2d994853b38fed10e0841b119da0f8b8e5.  On my machine, it has close
    to a 50 % false-negative rate, but that should still be sufficient to
    test the fix.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Tested-by: Stefano Garzarella <sgarzare@redhat.com>
    Tested-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit ae6ef0190981a21f2d4bc8dcee7253688f14fae7)
     Conflicts:
            tests/qemu-iotests/group
    *fix context deps on tests not in 4.1.0
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/265     | 67 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/265.out |  6 +++++
 tests/qemu-iotests/group   |  1 +
 3 files changed, 74 insertions(+)

diff --git a/tests/qemu-iotests/265 b/tests/qemu-iotests/265
new file mode 100755
index 0000000000..dce6f77be3
--- /dev/null
+++ b/tests/qemu-iotests/265
@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+#
+# Test reverse-ordered qcow2 writes on a sub-cluster level
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+seq=$(basename $0)
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# qcow2-specific test
+_supported_fmt qcow2
+_supported_proto file
+_supported_os Linux
+
+echo '--- Writing to the image ---'
+
+# Reduce cluster size so we get more and quicker I/O
+IMGOPTS='cluster_size=4096' _make_test_img 1M
+(for ((kb = 1024 - 4; kb >= 0; kb -= 4)); do \
+     echo "aio_write -P 42 $((kb + 1))k 2k"; \
+ done) \
+ | $QEMU_IO "$TEST_IMG" > /dev/null
+
+echo '--- Verifying its content ---'
+
+(for ((kb = 0; kb < 1024; kb += 4)); do \
+    echo "read -P 0 ${kb}k 1k"; \
+    echo "read -P 42 $((kb + 1))k 2k"; \
+    echo "read -P 0 $((kb + 3))k 1k"; \
+ done) \
+ | $QEMU_IO "$TEST_IMG" | _filter_qemu_io | grep 'verification'
+
+# Status of qemu-io
+if [ ${PIPESTATUS[1]} = 0 ]; then
+    echo 'Content verified.'
+fi
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/265.out b/tests/qemu-iotests/265.out
new file mode 100644
index 0000000000..6eac620f25
--- /dev/null
+++ b/tests/qemu-iotests/265.out
@@ -0,0 +1,6 @@
+QA output created by 265
+--- Writing to the image ---
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
+--- Verifying its content ---
+Content verified.
+*** done
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index f13e5f2e23..468458efb1 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -271,3 +271,4 @@
 254 rw backing quick
 255 rw quick
 256 rw quick
+265 rw auto quick
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:45:43 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:45:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPd1-0008LN-5H; Tue, 14 Apr 2020 17:45:43 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPcz-0008LA-UJ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:41 +0000
X-Inumbo-ID: c226896a-7e77-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c226896a-7e77-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:45:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=o2t2G19ncYg5d2VoDBai8s7qDPjP5LH7GHFfDtHTFAQ=; b=Mmq/lFyyj3Uq9Kcqs2o6y1MsQ+
 O3Xx60KhT/T7BZp/+XXXraTyO9DNdEYL12FnZVhG6TNNg7Pr5QMLpNxk3u1DX85GKxtYeeKbLiVui
 tU4Nab0vrRoXbs25iPhfmkdy/0zYWjwteevRVxInMnqbV1rdAxdkK1/7e3GH1MwvRjF0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPcz-0007r4-20
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:41 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPcz-0000GG-15
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:41 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] pr-manager: Fix invalid g_free() crash bug
Message-Id: <E1jOPcz-0000GG-15@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:45:41 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 57fdf4a13ff16d9d48a43f02a5e7b42e3d264f83
Author:     Markus Armbruster <armbru@redhat.com>
AuthorDate: Thu Aug 22 15:38:46 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:47:31 2019 -0500

    pr-manager: Fix invalid g_free() crash bug
    
    pr_manager_worker() passes its @opaque argument to g_free().  Wrong;
    it points to pr_manager_worker()'s automatic @data.  Broken when
    commit 2f3a7ab39be converted @data from heap- to stack-allocated.  Fix
    by deleting the g_free().
    
    Fixes: 2f3a7ab39bec4ba8022dc4d42ea641165b004e3e
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Markus Armbruster <armbru@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Acked-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 6b9d62c2a9e83bbad73fb61406f0ff69b46ff6f3)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 scsi/pr-manager.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/scsi/pr-manager.c b/scsi/pr-manager.c
index ee43663576..0c866e8698 100644
--- a/scsi/pr-manager.c
+++ b/scsi/pr-manager.c
@@ -39,7 +39,6 @@ static int pr_manager_worker(void *opaque)
     int fd = data->fd;
     int r;
 
-    g_free(data);
     trace_pr_manager_run(fd, hdr->cmdp[0], hdr->cmdp[1]);
 
     /* The reference was taken in pr_manager_execute.  */
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:45:53 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:45:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPdB-0008N0-7G; Tue, 14 Apr 2020 17:45:53 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPd9-0008Ml-SD
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:51 +0000
X-Inumbo-ID: c8288b6a-7e77-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c8288b6a-7e77-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:45:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=EiEHnr4OWLUKwDrAY2QQFuDjrjb4b6zbKemjjFjW/qo=; b=bAvohWcSq8ZInPqfPzpq1tjtoj
 T4Bpp2RTxP21k+UVjbxLFGQek2HGhNQ7jeXoSKH2H+zOFMyUeAx+oxC1aepTREQBs0JKBGdtGkfCI
 2Lii0p0kz3FCEnLafe8XWATn5QrqCS+kkS0aaFxbc0mqhEjJ/ELylxk29YKOC21sTf8s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPd9-0007rI-4l
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:51 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPd9-0000H8-3w
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:45:51 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] x86: do not advertise die-id in
 query-hotpluggbale-cpus if '-smp dies' is not set
Message-Id: <E1jOPd9-0000H8-3w@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:45:51 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 725dfa851f8e1de8653f41a4bd38c7f98757eb40
Author:     Igor Mammedov <imammedo@redhat.com>
AuthorDate: Mon Sep 2 08:02:22 2019 -0400
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:50:01 2019 -0500

    x86: do not advertise die-id in query-hotpluggbale-cpus if '-smp dies' is not set
    
    Commit 176d2cda0 (i386/cpu: Consolidate die-id validity in smp context) added
    new 'die-id' topology property to CPUs and exposed it via QMP command
    query-hotpluggable-cpus, which broke -device/device_add cpu-foo for existing
    users that do not support die-id/dies yet. That's would be fine if it happened
    to new machine type only but it also happened to old machine types,
    which breaks migration from old QEMU to the new one, for example following CLI:
    
      OLD-QEMU -M pc-i440fx-4.0 -smp 1,max_cpus=2 \
               -device qemu64-x86_64-cpu,socket-id=1,core-id=0,thread-id
    is not able to start with new QEMU, complaining about invalid die-id.
    
    After discovering regression, the patch
       "pc: Don't make die-id mandatory unless necessary"
    makes die-id optional so old CLI would work.
    
    However it's not enough as new QEMU still exposes die-id via query-hotpluggbale-cpus
    QMP command, so the users that started old machine type on new QEMU, using all
    properties (including die-id) received from QMP command (as required), won't be
    able to start old QEMU using the same properties since it doesn't support die-id.
    
    Fix it by hiding die-id in query-hotpluggbale-cpus for all machine types in case
    '-smp dies' is not provided on CLI or -smp dies = 1', in which case smp_dies == 1
    and APIC ID is calculated in default way (as it was before DIE support) so we won't
    need compat code as in both cases the topology provided to guest via CPUID is the same.
    
    Signed-off-by: Igor Mammedov <imammedo@redhat.com>
    Message-Id: <20190902120222.6179-1-imammedo@redhat.com>
    Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
    Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
    (cherry picked from commit c6c1bb89fb46f3b88f832e654cf5a6f7941aac51)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/i386/pc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 947f81070f..d011733ff7 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -2887,8 +2887,10 @@ static const CPUArchIdList *pc_possible_cpu_arch_ids(MachineState *ms)
                                  ms->smp.threads, &topo);
         ms->possible_cpus->cpus[i].props.has_socket_id = true;
         ms->possible_cpus->cpus[i].props.socket_id = topo.pkg_id;
-        ms->possible_cpus->cpus[i].props.has_die_id = true;
-        ms->possible_cpus->cpus[i].props.die_id = topo.die_id;
+        if (pcms->smp_dies > 1) {
+            ms->possible_cpus->cpus[i].props.has_die_id = true;
+            ms->possible_cpus->cpus[i].props.die_id = topo.die_id;
+        }
         ms->possible_cpus->cpus[i].props.has_core_id = true;
         ms->possible_cpus->cpus[i].props.core_id = topo.core_id;
         ms->possible_cpus->cpus[i].props.has_thread_id = true;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:46:03 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:46:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPdL-0008OL-BO; Tue, 14 Apr 2020 17:46:03 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPdJ-0008OB-SX
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:01 +0000
X-Inumbo-ID: ce2cce5e-7e77-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ce2cce5e-7e77-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:46:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Z2/9frakN+5lHdecqnMCVn9AzAADm2ZSb+PAC+J4lQk=; b=fD8EEAUPtyUWjQixxOdOzDj3EI
 YwsezrTLVArSTrixHocTELb9KWG/RfcbX4/pAZz+3a4DbKXarw3BVOWwP+i83tHDjgFoqVCb0v3uc
 kv3HJezEVXdjAL1eu881jumkvRjV803fUj4CLdCNnE05auwUuLhBHhQYkkuEdtWaMFlc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdJ-0007sA-7Z
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdJ-0000Hr-6i
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] vpc: Return 0 from vpc_co_create() on success
Message-Id: <E1jOPdJ-0000Hr-6i@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:46:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 97c478c355fee96eb2b740313f50561e69b6f305
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:16 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:50:55 2019 -0500

    vpc: Return 0 from vpc_co_create() on success
    
    blockdev_create_run() directly uses .bdrv_co_create()'s return value as
    the job's return value.  Jobs must return 0 on success, not just any
    nonnegative value.  Therefore, using blockdev-create for VPC images may
    currently fail as the vpc driver may return a positive integer.
    
    Because there is no point in returning a positive integer anywhere in
    the block layer (all non-negative integers are generally treated as
    complete success), we probably do not want to add more such cases.
    Therefore, fix this problem by making the vpc driver always return 0 in
    case of success.
    
    Suggested-by: Kevin Wolf <kwolf@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 1a37e3124407b5a145d44478d3ecbdb89c63789f)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/vpc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/block/vpc.c b/block/vpc.c
index d4776ee8a5..3a88e28e2b 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -885,6 +885,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf,
         goto fail;
     }
 
+    ret = 0;
  fail:
     return ret;
 }
@@ -908,7 +909,7 @@ static int create_fixed_disk(BlockBackend *blk, uint8_t *buf,
         return ret;
     }
 
-    return ret;
+    return 0;
 }
 
 static int calculate_rounded_image_size(BlockdevCreateOptionsVpc *vpc_opts,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:46:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:46:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPdV-0008PP-DK; Tue, 14 Apr 2020 17:46:13 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPdU-0008PG-4d
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:12 +0000
X-Inumbo-ID: d433ab10-7e77-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d433ab10-7e77-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:46:11 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=JJ9u4Fg2Pp2hkEw29zv9FjclEaSqLLarzeOExJUm8Pg=; b=NCFPNARjct3kESfe1AxZYahfx7
 3woFnBbpUT00rgXt2SLISl9vCQrgkkpI9KSNuveL8yp5W+lMsvrr8Emctyf/HdqFs8zkO/QildcCi
 pxpRZ9REd+g3XI3Ri09Lvur0WfH4gSblrrDYiKLyavLM1f5UxqbipwpZv2xlB6aFPcf0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdT-0007sJ-BI
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:11 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdT-0000J0-A3
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:11 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: add testing shim for script-style
 python tests
Message-Id: <E1jOPdT-0000J0-A3@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:46:11 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4d9bdd31496acc3d51d58490006244d75a485100
Author:     John Snow <jsnow@redhat.com>
AuthorDate: Mon Jul 29 16:35:53 2019 -0400
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:53:35 2019 -0500

    iotests: add testing shim for script-style python tests
    
    Because the new-style python tests don't use the iotests.main() test
    launcher, we don't turn on the debugger logging for these scripts
    when invoked via ./check -d.
    
    Refactor the launcher shim into new and old style shims so that they
    share environmental configuration.
    
    Two cleanup notes: debug was not actually used as a global, and there
    was no reason to create a class in an inner scope just to achieve
    default variables; we can simply create an instance of the runner with
    the values we want instead.
    
    Signed-off-by: John Snow <jsnow@redhat.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190709232550.10724-14-jsnow@redhat.com
    Signed-off-by: John Snow <jsnow@redhat.com>
    (cherry picked from commit 456a2d5ac7641c7e75c76328a561b528a8607a8e)
    *prereq for 88d2aa533a
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/iotests.py | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index ce74177ab1..25c5a047b3 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -61,7 +61,6 @@ cachemode = os.environ.get('CACHEMODE')
 qemu_default_machine = os.environ.get('QEMU_DEFAULT_MACHINE')
 
 socket_scm_helper = os.environ.get('SOCKET_SCM_HELPER', 'socket_scm_helper')
-debug = False
 
 luks_default_secret_object = 'secret,id=keysec0,data=' + \
                              os.environ.get('IMGKEYSECRET', '')
@@ -842,11 +841,22 @@ def skip_if_unsupported(required_formats=[], read_only=False):
         return func_wrapper
     return skip_test_decorator
 
-def main(supported_fmts=[], supported_oses=['linux'], supported_cache_modes=[],
-         unsupported_fmts=[]):
-    '''Run tests'''
+def execute_unittest(output, verbosity, debug):
+    runner = unittest.TextTestRunner(stream=output, descriptions=True,
+                                     verbosity=verbosity)
+    try:
+        # unittest.main() will use sys.exit(); so expect a SystemExit
+        # exception
+        unittest.main(testRunner=runner)
+    finally:
+        if not debug:
+            sys.stderr.write(re.sub(r'Ran (\d+) tests? in [\d.]+s',
+                                    r'Ran \1 tests', output.getvalue()))
 
-    global debug
+def execute_test(test_function=None,
+                 supported_fmts=[], supported_oses=['linux'],
+                 supported_cache_modes=[], unsupported_fmts=[]):
+    """Run either unittest or script-style tests."""
 
     # We are using TEST_DIR and QEMU_DEFAULT_MACHINE as proxies to
     # indicate that we're not being run via "check". There may be
@@ -878,13 +888,15 @@ def main(supported_fmts=[], supported_oses=['linux'], supported_cache_modes=[],
 
     logging.basicConfig(level=(logging.DEBUG if debug else logging.WARN))
 
-    class MyTestRunner(unittest.TextTestRunner):
-        def __init__(self, stream=output, descriptions=True, verbosity=verbosity):
-            unittest.TextTestRunner.__init__(self, stream, descriptions, verbosity)
+    if not test_function:
+        execute_unittest(output, verbosity, debug)
+    else:
+        test_function()
+
+def script_main(test_function, *args, **kwargs):
+    """Run script-style tests outside of the unittest framework"""
+    execute_test(test_function, *args, **kwargs)
 
-    # unittest.main() will use sys.exit() so expect a SystemExit exception
-    try:
-        unittest.main(testRunner=MyTestRunner)
-    finally:
-        if not debug:
-            sys.stderr.write(re.sub(r'Ran (\d+) tests? in [\d.]+s', r'Ran \1 tests', output.getvalue()))
+def main(*args, **kwargs):
+    """Run tests using the unittest framework"""
+    execute_test(None, *args, **kwargs)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:46:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:46:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPdf-0008QO-FK; Tue, 14 Apr 2020 17:46:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPde-0008QG-5Z
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:22 +0000
X-Inumbo-ID: da36e3ce-7e77-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id da36e3ce-7e77-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:46:21 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4x3gJ2YKIYZENOMwdOumhYpjVzKIx4hW3tap6/d48NU=; b=lQnFQ20mFU9B9NKa5E6zIhA5qr
 1VR4TzENsBLeiA/s4YqV+pUYgjZyPNyfnGI3pAga5P3Vd7Ke11sba1ffcuIr7yueKMZjiYdIzu81+
 /16TLxVD2Z6LNc2hzhR9iiqXhsL5za6hMfJ0UFtw1MAcQJwV0LRQRL7gGF9pqsE9IvzE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdd-0007sS-E5
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:21 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdd-0000Jl-DA
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:21 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Add supported protocols to
 execute_test()
Message-Id: <E1jOPdd-0000Jl-DA@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:46:21 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 819ba23575be2ce4d14bff12d54bad0f625cf148
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:17 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:53:52 2019 -0500

    iotests: Add supported protocols to execute_test()
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 88d2aa533a4a1aad44a27c2e6cd5bc5fbcbce7ed)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/iotests.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 25c5a047b3..2f7edc2f33 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -855,7 +855,8 @@ def execute_unittest(output, verbosity, debug):
 
 def execute_test(test_function=None,
                  supported_fmts=[], supported_oses=['linux'],
-                 supported_cache_modes=[], unsupported_fmts=[]):
+                 supported_cache_modes=[], unsupported_fmts=[],
+                 supported_protocols=[], unsupported_protocols=[]):
     """Run either unittest or script-style tests."""
 
     # We are using TEST_DIR and QEMU_DEFAULT_MACHINE as proxies to
@@ -869,6 +870,7 @@ def execute_test(test_function=None,
     debug = '-d' in sys.argv
     verbosity = 1
     verify_image_format(supported_fmts, unsupported_fmts)
+    verify_protocol(supported_protocols, unsupported_protocols)
     verify_platform(supported_oses)
     verify_cache_mode(supported_cache_modes)
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:46:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:46:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPdq-0008RV-HQ; Tue, 14 Apr 2020 17:46:34 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPdo-0008RL-RA
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:32 +0000
X-Inumbo-ID: e0418f4e-7e77-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e0418f4e-7e77-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:46:31 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=RsQHTucxOk8cUnQWJQoFbbHlBDKGq/Xg/R2UfR+hMwA=; b=DbM/A3Egvx2lRrLV+va8Rn4Ozr
 LMaceVjTT+TMyJjjvqz7BgoGoqcZGNV4NegFlXPzP4K6K9i1/ZGAPSC3nMh3pWV2Hj/8ArpUz0JQu
 p6Z8CE93QwbL0legaB6ftCffdnHTD5QsJ33T0i9oykxEDQwACoKYQUoADhCa6ZgyXLIc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdn-0007sb-HQ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:31 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdn-0000KW-GK
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:31 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Restrict file Python tests to file
Message-Id: <E1jOPdn-0000KW-GK@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:46:31 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit eee776fbc06be627ce6e01c5766db9f83af55ec1
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:18 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:55:10 2019 -0500

    iotests: Restrict file Python tests to file
    
    Most of our Python unittest-style tests only support the file protocol.
    You can run them with any other protocol, but the test will simply
    ignore your choice and use file anyway.
    
    We should let them signal that they require the file protocol so they
    are skipped when you want to test some other protocol.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 103cbc771e5660d1f5bb458be80aa9e363547ae0)
     Conflicts:
            tests/qemu-iotests/257
    *drop changes for tests not in 4.1.0
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/030 | 3 ++-
 tests/qemu-iotests/040 | 3 ++-
 tests/qemu-iotests/041 | 3 ++-
 tests/qemu-iotests/044 | 3 ++-
 tests/qemu-iotests/045 | 3 ++-
 tests/qemu-iotests/055 | 3 ++-
 tests/qemu-iotests/056 | 3 ++-
 tests/qemu-iotests/057 | 3 ++-
 tests/qemu-iotests/065 | 3 ++-
 tests/qemu-iotests/096 | 3 ++-
 tests/qemu-iotests/118 | 3 ++-
 tests/qemu-iotests/124 | 3 ++-
 tests/qemu-iotests/129 | 3 ++-
 tests/qemu-iotests/132 | 3 ++-
 tests/qemu-iotests/139 | 3 ++-
 tests/qemu-iotests/148 | 3 ++-
 tests/qemu-iotests/151 | 3 ++-
 tests/qemu-iotests/152 | 3 ++-
 tests/qemu-iotests/155 | 3 ++-
 tests/qemu-iotests/163 | 3 ++-
 tests/qemu-iotests/165 | 3 ++-
 tests/qemu-iotests/169 | 3 ++-
 tests/qemu-iotests/196 | 3 ++-
 tests/qemu-iotests/199 | 3 ++-
 tests/qemu-iotests/245 | 3 ++-
 25 files changed, 50 insertions(+), 25 deletions(-)

diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
index 1b69f318c6..f3766f2a81 100755
--- a/tests/qemu-iotests/030
+++ b/tests/qemu-iotests/030
@@ -957,4 +957,5 @@ class TestSetSpeed(iotests.QMPTestCase):
         self.cancel_and_wait(resume=True)
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'qed'])
+    iotests.main(supported_fmts=['qcow2', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040
index aa0b1847e3..f9e603e715 100755
--- a/tests/qemu-iotests/040
+++ b/tests/qemu-iotests/040
@@ -433,4 +433,5 @@ class TestReopenOverlay(ImageCommitTestCase):
         self.run_commit_test(self.img1, self.img0)
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'qed'])
+    iotests.main(supported_fmts=['qcow2', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
index 26bf1701eb..ae6ed952c6 100755
--- a/tests/qemu-iotests/041
+++ b/tests/qemu-iotests/041
@@ -1068,4 +1068,5 @@ class TestOrphanedSource(iotests.QMPTestCase):
         self.assert_qmp(result, 'error/class', 'GenericError')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'qed'])
+    iotests.main(supported_fmts=['qcow2', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044
index 9ec3dba734..05ea1f49c5 100755
--- a/tests/qemu-iotests/044
+++ b/tests/qemu-iotests/044
@@ -118,4 +118,5 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):
         pass
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/045 b/tests/qemu-iotests/045
index d5484a0ee1..01cc038884 100755
--- a/tests/qemu-iotests/045
+++ b/tests/qemu-iotests/045
@@ -175,4 +175,5 @@ class TestSCMFd(iotests.QMPTestCase):
             "File descriptor named '%s' not found" % fdname)
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw'])
+    iotests.main(supported_fmts=['raw'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/055 b/tests/qemu-iotests/055
index 3437c11507..c732a112d6 100755
--- a/tests/qemu-iotests/055
+++ b/tests/qemu-iotests/055
@@ -563,4 +563,5 @@ class TestDriveCompression(iotests.QMPTestCase):
                                         target='drive1')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw', 'qcow2'])
+    iotests.main(supported_fmts=['raw', 'qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/056 b/tests/qemu-iotests/056
index e761e465ae..98c55d8e5a 100755
--- a/tests/qemu-iotests/056
+++ b/tests/qemu-iotests/056
@@ -335,4 +335,5 @@ class BackupTest(iotests.QMPTestCase):
         self.dismissal_failure(True)
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'qed'])
+    iotests.main(supported_fmts=['qcow2', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/057 b/tests/qemu-iotests/057
index 9f0a5a3057..9fbba759b6 100755
--- a/tests/qemu-iotests/057
+++ b/tests/qemu-iotests/057
@@ -256,4 +256,5 @@ class TestSnapshotDelete(ImageSnapshotTestCase):
         self.assert_qmp(result, 'error/class', 'GenericError')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/065 b/tests/qemu-iotests/065
index 8bac383ea7..5b21eb96bd 100755
--- a/tests/qemu-iotests/065
+++ b/tests/qemu-iotests/065
@@ -129,4 +129,5 @@ TestQemuImgInfo = None
 TestQMP = None
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/096 b/tests/qemu-iotests/096
index a69439602d..ab9cb47822 100755
--- a/tests/qemu-iotests/096
+++ b/tests/qemu-iotests/096
@@ -67,4 +67,5 @@ class TestLiveSnapshot(iotests.QMPTestCase):
         self.checkConfig('target')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118
index 499c5f0901..c7d8af1a85 100755
--- a/tests/qemu-iotests/118
+++ b/tests/qemu-iotests/118
@@ -707,4 +707,5 @@ if __name__ == '__main__':
                        iotests.qemu_default_machine)
     # Need to support image creation
     iotests.main(supported_fmts=['vpc', 'parallels', 'qcow', 'vdi', 'qcow2',
-                                 'vmdk', 'raw', 'vhdx', 'qed'])
+                                 'vmdk', 'raw', 'vhdx', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/124 b/tests/qemu-iotests/124
index 3440f54781..ca40ba3be2 100755
--- a/tests/qemu-iotests/124
+++ b/tests/qemu-iotests/124
@@ -779,4 +779,5 @@ class TestIncrementalBackupBlkdebug(TestIncrementalBackupBase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/129 b/tests/qemu-iotests/129
index 9e87e1c8d9..cd6b9e9ce7 100755
--- a/tests/qemu-iotests/129
+++ b/tests/qemu-iotests/129
@@ -83,4 +83,5 @@ class TestStopWithBlockJob(iotests.QMPTestCase):
         self.do_test_stop("block-commit", device="drive0")
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=["qcow2"])
+    iotests.main(supported_fmts=["qcow2"],
+                 supported_protocols=["file"])
diff --git a/tests/qemu-iotests/132 b/tests/qemu-iotests/132
index f53ef6e391..0f2a106c81 100755
--- a/tests/qemu-iotests/132
+++ b/tests/qemu-iotests/132
@@ -56,4 +56,5 @@ class TestSingleDrive(iotests.QMPTestCase):
                         'target image does not match source after mirroring')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw', 'qcow2'])
+    iotests.main(supported_fmts=['raw', 'qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139
index 933b45121a..8dc839ec7e 100755
--- a/tests/qemu-iotests/139
+++ b/tests/qemu-iotests/139
@@ -361,4 +361,5 @@ class TestBlockdevDel(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=["qcow2"])
+    iotests.main(supported_fmts=["qcow2"],
+                 supported_protocols=["file"])
diff --git a/tests/qemu-iotests/148 b/tests/qemu-iotests/148
index e01b061fe7..8c11c53cba 100755
--- a/tests/qemu-iotests/148
+++ b/tests/qemu-iotests/148
@@ -137,4 +137,5 @@ class TestFifoQuorumEvents(TestQuorumEvents):
 
 if __name__ == '__main__':
     iotests.verify_quorum()
-    iotests.main(supported_fmts=["raw"])
+    iotests.main(supported_fmts=["raw"],
+                 supported_protocols=["file"])
diff --git a/tests/qemu-iotests/151 b/tests/qemu-iotests/151
index ad7359fc8d..76ae265cc1 100755
--- a/tests/qemu-iotests/151
+++ b/tests/qemu-iotests/151
@@ -142,4 +142,5 @@ class TestActiveMirror(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'raw'])
+    iotests.main(supported_fmts=['qcow2', 'raw'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/152 b/tests/qemu-iotests/152
index fec546d033..732bf5f062 100755
--- a/tests/qemu-iotests/152
+++ b/tests/qemu-iotests/152
@@ -59,4 +59,5 @@ class TestUnaligned(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw', 'qcow2'])
+    iotests.main(supported_fmts=['raw', 'qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/155 b/tests/qemu-iotests/155
index 63a5b5e2c0..e19485911c 100755
--- a/tests/qemu-iotests/155
+++ b/tests/qemu-iotests/155
@@ -258,4 +258,5 @@ BaseClass = None
 MirrorBaseClass = None
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/163 b/tests/qemu-iotests/163
index 158ba5d092..081ccc8ac1 100755
--- a/tests/qemu-iotests/163
+++ b/tests/qemu-iotests/163
@@ -170,4 +170,5 @@ class TestShrink1M(ShrinkBaseClass):
 ShrinkBaseClass = None
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw', 'qcow2'])
+    iotests.main(supported_fmts=['raw', 'qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/165 b/tests/qemu-iotests/165
index 88f62d3c6d..5650dc7c87 100755
--- a/tests/qemu-iotests/165
+++ b/tests/qemu-iotests/165
@@ -103,4 +103,5 @@ class TestPersistentDirtyBitmap(iotests.QMPTestCase):
         self.vm.shutdown()
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/169 b/tests/qemu-iotests/169
index 7e06cc1145..8c204caf20 100755
--- a/tests/qemu-iotests/169
+++ b/tests/qemu-iotests/169
@@ -227,4 +227,5 @@ for cmb in list(itertools.product((True, False), repeat=2)):
                      'do_test_migration_resume_source', *list(cmb))
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/196 b/tests/qemu-iotests/196
index 4116ebc92b..92fe9244f8 100755
--- a/tests/qemu-iotests/196
+++ b/tests/qemu-iotests/196
@@ -63,4 +63,5 @@ class TestInvalidateAutoclear(iotests.QMPTestCase):
             self.assertEqual(f.read(1), b'\x00')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/199 b/tests/qemu-iotests/199
index 651e8df5d9..a2c8ecab5a 100755
--- a/tests/qemu-iotests/199
+++ b/tests/qemu-iotests/199
@@ -115,4 +115,5 @@ class TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
         self.assert_qmp(result, 'return/sha256', sha256);
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'], supported_cache_modes=['none'])
+    iotests.main(supported_fmts=['qcow2'], supported_cache_modes=['none'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/245 b/tests/qemu-iotests/245
index bc1ceb9792..41218d5f1d 100644
--- a/tests/qemu-iotests/245
+++ b/tests/qemu-iotests/245
@@ -1000,4 +1000,5 @@ class TestBlockdevReopen(iotests.QMPTestCase):
         self.reopen(opts, {'backing': 'hd2'})
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=["qcow2"])
+    iotests.main(supported_fmts=["qcow2"],
+                 supported_protocols=["file"])
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:46:42 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:46:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPdy-0008TG-MR; Tue, 14 Apr 2020 17:46:42 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPdy-0008T8-B8
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:42 +0000
X-Inumbo-ID: e64175f8-7e77-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e64175f8-7e77-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:46:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=lCxECHbakTVG3FFxhpdaoDzm5jJPqMrR7OaY6pAiDFA=; b=J6CdVm+upkLZmk1fCOu87ao/7J
 tuBy48Yvpo3He4nSpqwyADDa+2tcKuHd2wXV88qwsbqVCqdOuCMhDQKKaZ6rHrGC3WYuu5n9sIXso
 15ZjruetRURtzJVvTmWzRhkajihx67SmEhC06mscpIq7zXMUeULly7EguJnYwNccY9M4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdx-0007sh-KQ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:41 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPdx-0000LD-JM
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:41 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Restrict nbd Python tests to nbd
Message-Id: <E1jOPdx-0000LD-JM@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:46:41 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 593beeaf81964e890d0f7f40fa4bafcb9769ae35
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:19 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:55:39 2019 -0500

    iotests: Restrict nbd Python tests to nbd
    
    We have two Python unittest-style tests that test NBD.  As such, they
    should specify supported_protocols=['nbd'] so they are skipped when the
    user wants to test some other protocol.
    
    Furthermore, we should restrict their choice of formats to 'raw'.  The
    idea of a protocol/format combination is to use some format over some
    protocol; but we always use the raw format over NBD.  It does not really
    matter what the NBD server uses on its end, and it is not a useful test
    of the respective format driver anyway.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 7c932a1d69a6d6ac5c0b615c11d191da3bbe9aa8)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/147 | 5 ++---
 tests/qemu-iotests/205 | 3 ++-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/qemu-iotests/147 b/tests/qemu-iotests/147
index 2d84fddb01..ab8480b9a4 100755
--- a/tests/qemu-iotests/147
+++ b/tests/qemu-iotests/147
@@ -287,6 +287,5 @@ class BuiltinNBD(NBDBlockdevAddBase):
 
 
 if __name__ == '__main__':
-    # Need to support image creation
-    iotests.main(supported_fmts=['vpc', 'parallels', 'qcow', 'vdi', 'qcow2',
-                                 'vmdk', 'raw', 'vhdx', 'qed'])
+    iotests.main(supported_fmts=['raw'],
+                 supported_protocols=['nbd'])
diff --git a/tests/qemu-iotests/205 b/tests/qemu-iotests/205
index b8a86c446e..76f6c5fa2b 100755
--- a/tests/qemu-iotests/205
+++ b/tests/qemu-iotests/205
@@ -153,4 +153,5 @@ class TestNbdServerRemove(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['generic'])
+    iotests.main(supported_fmts=['raw'],
+                 supported_protocols=['nbd'])
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:46:53 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:46:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPe9-0008VS-Oc; Tue, 14 Apr 2020 17:46:53 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPe8-0008VK-Ub
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:52 +0000
X-Inumbo-ID: ec43ffc0-7e77-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ec43ffc0-7e77-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:46:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ARGWm3UmVqa/Q3vfBrTRSfloLr0eZYIaKpbMecAb1vo=; b=rDSD2R2LTTIYnsBQSJh7KH2iBh
 nlkMfrEHBN5L4pVrAspiDT+GG1T82PiYMZDROmEXQ5AXr3+UpjS+4xqnRh2Hapsq4ZboChzYlb1Iq
 MDZehEJEdQjUxtslJK1zMNTtsWukrguvXR6cr3hTbmSWIBCegwZ+JUJ1kcWWziSWVFws=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPe7-0007tx-NF
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:51 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPe7-0000MC-MD
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:46:51 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Test blockdev-create for vpc
Message-Id: <E1jOPe7-0000MC-MD@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:46:51 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ad95e0573ede001e7d56f10c2119368dc57c3bb6
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:20 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:55:44 2019 -0500

    iotests: Test blockdev-create for vpc
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit cb73747e1a47b93d3dfdc3f769c576b053916938)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/266     | 153 +++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/266.out | 137 ++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/group   |   1 +
 3 files changed, 291 insertions(+)

diff --git a/tests/qemu-iotests/266 b/tests/qemu-iotests/266
new file mode 100755
index 0000000000..5b35cd67e4
--- /dev/null
+++ b/tests/qemu-iotests/266
@@ -0,0 +1,153 @@
+#!/usr/bin/env python
+#
+# Test VPC and file image creation
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+import iotests
+from iotests import imgfmt
+
+
+def blockdev_create(vm, options):
+    result = vm.qmp_log('blockdev-create', job_id='job0', options=options,
+                        filters=[iotests.filter_qmp_testfiles])
+
+    if 'return' in result:
+        assert result['return'] == {}
+        vm.run_job('job0')
+
+
+# Successful image creation (defaults)
+def implicit_defaults(vm, file_path):
+    iotests.log("=== Successful image creation (defaults) ===")
+    iotests.log("")
+
+    # 8 heads, 964 cyls/head, 17 secs/cyl
+    # (Close to 64 MB)
+    size = 8 * 964 * 17 * 512
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': size })
+
+
+# Successful image creation (explicit defaults)
+def explicit_defaults(vm, file_path):
+    iotests.log("=== Successful image creation (explicit defaults) ===")
+    iotests.log("")
+
+    # 16 heads, 964 cyls/head, 17 secs/cyl
+    # (Close to 128 MB)
+    size = 16 * 964 * 17 * 512
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': size,
+                          'subformat': 'dynamic',
+                          'force-size': False })
+
+
+# Successful image creation (non-default options)
+def non_defaults(vm, file_path):
+    iotests.log("=== Successful image creation (non-default options) ===")
+    iotests.log("")
+
+    # Not representable in CHS (fine with force-size=True)
+    size = 1048576
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': size,
+                          'subformat': 'fixed',
+                          'force-size': True })
+
+
+# Size not representable in CHS with force-size=False
+def non_chs_size_without_force(vm, file_path):
+    iotests.log("=== Size not representable in CHS ===")
+    iotests.log("")
+
+    # Not representable in CHS (will not work with force-size=False)
+    size = 1048576
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': size,
+                          'force-size': False })
+
+
+# Zero size
+def zero_size(vm, file_path):
+    iotests.log("=== Zero size===")
+    iotests.log("")
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': 0 })
+
+
+# Maximum CHS size
+def maximum_chs_size(vm, file_path):
+    iotests.log("=== Maximum CHS size===")
+    iotests.log("")
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': 16 * 65535 * 255 * 512 })
+
+
+# Actual maximum size
+def maximum_size(vm, file_path):
+    iotests.log("=== Actual maximum size===")
+    iotests.log("")
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': 0xff000000 * 512,
+                          'force-size': True })
+
+
+def main():
+    for test_func in [implicit_defaults, explicit_defaults, non_defaults,
+                      non_chs_size_without_force, zero_size, maximum_chs_size,
+                      maximum_size]:
+
+        with iotests.FilePath('t.vpc') as file_path, \
+             iotests.VM() as vm:
+
+            vm.launch()
+
+            iotests.log('--- Creating empty file ---')
+            blockdev_create(vm, { 'driver': 'file',
+                                  'filename': file_path,
+                                  'size': 0 })
+
+            vm.qmp_log('blockdev-add', driver='file', filename=file_path,
+                       node_name='protocol-node',
+                       filters=[iotests.filter_qmp_testfiles])
+            iotests.log('')
+
+            print_info = test_func(vm, file_path)
+            iotests.log('')
+
+            vm.shutdown()
+            iotests.img_info_log(file_path)
+
+
+iotests.script_main(main,
+                    supported_fmts=['vpc'],
+                    supported_protocols=['file'])
diff --git a/tests/qemu-iotests/266.out b/tests/qemu-iotests/266.out
new file mode 100644
index 0000000000..b11953e81f
--- /dev/null
+++ b/tests/qemu-iotests/266.out
@@ -0,0 +1,137 @@
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Successful image creation (defaults) ===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "size": 67125248}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 64 MiB (67125248 bytes)
+cluster_size: 2097152
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Successful image creation (explicit defaults) ===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "force-size": false, "size": 134250496, "subformat": "dynamic"}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 128 MiB (134250496 bytes)
+cluster_size: 2097152
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Successful image creation (non-default options) ===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "force-size": true, "size": 1048576, "subformat": "fixed"}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 1 MiB (1048576 bytes)
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Size not representable in CHS ===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "force-size": false, "size": 1048576}}}
+{"return": {}}
+Job failed: The requested image size cannot be represented in CHS geometry
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+qemu-img: Could not open 'TEST_IMG': File too small for a VHD header
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Zero size===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 0 B (0 bytes)
+cluster_size: 2097152
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Maximum CHS size===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "size": 136899993600}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 127 GiB (136899993600 bytes)
+cluster_size: 2097152
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Actual maximum size===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "force-size": true, "size": 2190433320960}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 1.99 TiB (2190433320960 bytes)
+cluster_size: 2097152
+
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 468458efb1..3660a741f2 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -272,3 +272,4 @@
 255 rw quick
 256 rw quick
 265 rw auto quick
+266 rw quick
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:47:03 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:47:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPeJ-0008WU-Qk; Tue, 14 Apr 2020 17:47:03 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPeI-0008WM-S5
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:02 +0000
X-Inumbo-ID: f247b100-7e77-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f247b100-7e77-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:47:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=MSlE14z6QSat1owU85FGEjsY9SKZVbhY813pCdY50Ls=; b=LfCNqWgd8iMWHU+S6SHTL6WVlq
 NRs0auKQHeoe3d1HBmhLV2GMYG/HHbpYx90kStNJlivmNNc3gDorhILO2SWALYMmm/WA68UiRYnri
 tMEx3QN9ctRVuzCoPqP+ZZhKZSpfSK2+rVrHVAePosIjKOi2uswS2RHKr2Vp0zr+PKAA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPeH-0007v1-Pt
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPeH-0000My-Oy
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] target/arm: Free TCG temps in
 trans_VMOV_64_sp()
Message-Id: <E1jOPeH-0000My-Oy@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:47:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 38fb634853ac6547326d9f88b9a068d9fc6b4ad4
Author:     Peter Maydell <peter.maydell@linaro.org>
AuthorDate: Tue Aug 27 13:19:31 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:57:16 2019 -0500

    target/arm: Free TCG temps in trans_VMOV_64_sp()
    
    The function neon_store_reg32() doesn't free the TCG temp that it
    is passed, so the caller must do that. We got this right in most
    places but forgot to free the TCG temps in trans_VMOV_64_sp().
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Message-id: 20190827121931.26836-1-peter.maydell@linaro.org
    (cherry picked from commit 342d27581bd3ecdb995e4fc55fcd383cf3242888)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/arm/translate-vfp.inc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/target/arm/translate-vfp.inc.c b/target/arm/translate-vfp.inc.c
index 092eb5ec53..ef45cecbea 100644
--- a/target/arm/translate-vfp.inc.c
+++ b/target/arm/translate-vfp.inc.c
@@ -881,8 +881,10 @@ static bool trans_VMOV_64_sp(DisasContext *s, arg_VMOV_64_sp *a)
         /* gpreg to fpreg */
         tmp = load_reg(s, a->rt);
         neon_store_reg32(tmp, a->vm);
+        tcg_temp_free_i32(tmp);
         tmp = load_reg(s, a->rt2);
         neon_store_reg32(tmp, a->vm + 1);
+        tcg_temp_free_i32(tmp);
     }
 
     return true;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:47:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:47:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPeT-00005y-Sa; Tue, 14 Apr 2020 17:47:13 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPeS-00005o-Oh
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:12 +0000
X-Inumbo-ID: f84c4494-7e77-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f84c4494-7e77-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 17:47:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=9IxVrnCSsJMPTKeebVIMNOwA0Pyx8xMiC5jw2TAcaJE=; b=CYUPDhXQHTCENPt4xQ85UdXxNV
 +Gtv1vCThrlJxqWUrGlKkPQffYt/0erqX+8Ci1tNER303B2kXaUEMYdY34dpjzN90BM+fnfnMks8y
 aN4ZaHLrCSnkiScoaHQbfXIhozNV2LpXKwOWfUA6xk0L8vHmNIADt74CERrvScgOiP9E=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPeR-0007vD-TK
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:11 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPeR-0000Nq-SG
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:11 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] target/arm: Don't abort on M-profile
 exception return in linux-user mode
Message-Id: <E1jOPeR-0000Nq-SG@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:47:11 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9027d3fba605d8f6093342ebe4a1da450d374630
Author:     Peter Maydell <peter.maydell@linaro.org>
AuthorDate: Thu Aug 22 14:15:34 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:58:01 2019 -0500

    target/arm: Don't abort on M-profile exception return in linux-user mode
    
    An attempt to do an exception-return (branch to one of the magic
    addresses) in linux-user mode for M-profile should behave like
    a normal branch, because linux-user mode is always going to be
    in 'handler' mode. This used to work, but we broke it when we added
    support for the M-profile security extension in commit d02a8698d7ae2bfed.
    
    In that commit we allowed even handler-mode calls to magic return
    values to be checked for and dealt with by causing an
    EXCP_EXCEPTION_EXIT exception to be taken, because this is
    needed for the FNC_RETURN return-from-non-secure-function-call
    handling. For system mode we added a check in do_v7m_exception_exit()
    to make any spurious calls from Handler mode behave correctly, but
    forgot that linux-user mode would also be affected.
    
    How an attempted return-from-non-secure-function-call in linux-user
    mode should be handled is not clear -- on real hardware it would
    result in return to secure code (not to the Linux kernel) which
    could then handle the error in any way it chose. For QEMU we take
    the simple approach of treating this erroneous return the same way
    it would be handled on a CPU without the security extensions --
    treat it as a normal branch.
    
    The upshot of all this is that for linux-user mode we should never
    do any of the bx_excret magic, so the code change is simple.
    
    This ought to be a weird corner case that only affects broken guest
    code (because Linux user processes should never be attempting to do
    exception returns or NS function returns), except that the code that
    assigns addresses in RAM for the process and stack in our linux-user
    code does not attempt to avoid this magic address range, so
    legitimate code attempting to return to a trampoline routine on the
    stack can fall into this case. This change fixes those programs,
    but we should also look at restricting the range of memory we
    use for M-profile linux-user guests to the area that would be
    real RAM in hardware.
    
    Cc: qemu-stable@nongnu.org
    Reported-by: Christophe Lyon <christophe.lyon@linaro.org>
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    Message-id: 20190822131534.16602-1-peter.maydell@linaro.org
    Fixes: https://bugs.launchpad.net/qemu/+bug/1840922
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    (cherry picked from commit 5e5584c89f36b302c666bc6db535fd3f7ff35ad2)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/arm/translate.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/target/arm/translate.c b/target/arm/translate.c
index 7853462b21..24cb4ba075 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -952,10 +952,27 @@ static inline void gen_bx(DisasContext *s, TCGv_i32 var)
     store_cpu_field(var, thumb);
 }
 
-/* Set PC and Thumb state from var. var is marked as dead.
+/*
+ * Set PC and Thumb state from var. var is marked as dead.
  * For M-profile CPUs, include logic to detect exception-return
  * branches and handle them. This is needed for Thumb POP/LDM to PC, LDR to PC,
  * and BX reg, and no others, and happens only for code in Handler mode.
+ * The Security Extension also requires us to check for the FNC_RETURN
+ * which signals a function return from non-secure state; this can happen
+ * in both Handler and Thread mode.
+ * To avoid having to do multiple comparisons in inline generated code,
+ * we make the check we do here loose, so it will match for EXC_RETURN
+ * in Thread mode. For system emulation do_v7m_exception_exit() checks
+ * for these spurious cases and returns without doing anything (giving
+ * the same behaviour as for a branch to a non-magic address).
+ *
+ * In linux-user mode it is unclear what the right behaviour for an
+ * attempted FNC_RETURN should be, because in real hardware this will go
+ * directly to Secure code (ie not the Linux kernel) which will then treat
+ * the error in any way it chooses. For QEMU we opt to make the FNC_RETURN
+ * attempt behave the way it would on a CPU without the security extension,
+ * which is to say "like a normal branch". That means we can simply treat
+ * all branches as normal with no magic address behaviour.
  */
 static inline void gen_bx_excret(DisasContext *s, TCGv_i32 var)
 {
@@ -963,10 +980,12 @@ static inline void gen_bx_excret(DisasContext *s, TCGv_i32 var)
      * s->base.is_jmp that we need to do the rest of the work later.
      */
     gen_bx(s, var);
+#ifndef CONFIG_USER_ONLY
     if (arm_dc_feature(s, ARM_FEATURE_M_SECURITY) ||
         (s->v7m_handler_mode && arm_dc_feature(s, ARM_FEATURE_M))) {
         s->base.is_jmp = DISAS_BX_EXCRET;
     }
+#endif
 }
 
 static inline void gen_bx_excret_final_code(DisasContext *s)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:47:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:47:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPef-00007D-0i; Tue, 14 Apr 2020 17:47:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPed-000075-Nl
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:23 +0000
X-Inumbo-ID: fe79dcf0-7e77-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fe79dcf0-7e77-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:47:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=uYz0lMB0ollyA2BgWfRZyWoBC0cdqENoKwufA72wd4Q=; b=Vfz1JS7JzZhu2hmpa+jhkXTW3L
 iJZ4wYgkA3U89UZdnmCXyenEsPtS/Xl34TH8v3X2wxabRyrI2JvLtoiD2yUqBqQbvbXWP08HOjHiI
 QZRynrAoWfLx12tQULVtLC67CtRq0lkyRujf8wSBRtfiySH6moxBsvNTaz9rX1V3m0C0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPec-0007vR-8s
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPec-0000Oy-5c
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] libvhost-user: fix SLAVE_SEND_FD handling
Message-Id: <E1jOPec-0000Oy-5c@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:47:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 28a9a3558a427493049723fff390add7026653eb
Author:     Johannes Berg <johannes.berg@intel.com>
AuthorDate: Tue Sep 3 23:04:22 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:59:27 2019 -0500

    libvhost-user: fix SLAVE_SEND_FD handling
    
    It doesn't look like this could possibly work properly since
    VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD is defined to 10, but the
    dev->protocol_features has a bitmap. I suppose the peer this
    was tested with also supported VHOST_USER_PROTOCOL_F_LOG_SHMFD,
    in which case the test would always be false, but nevertheless
    the code seems wrong.
    
    Use has_feature() to fix this.
    
    Fixes: d84599f56c82 ("libvhost-user: support host notifier")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Message-Id: <20190903200422.11693-1-johannes@sipsolutions.net>
    Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 8726b70b449896f1211f869ec4f608904f027207)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 contrib/libvhost-user/libvhost-user.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index 4b36e35a82..cb5f5770e4 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -1097,7 +1097,8 @@ bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd,
 
     vmsg.fd_num = fd_num;
 
-    if ((dev->protocol_features & VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) == 0) {
+    if (!has_feature(dev->protocol_features,
+                     VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
         return false;
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:47:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:47:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPeo-00008C-2o; Tue, 14 Apr 2020 17:47:34 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPen-00007z-4o
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:33 +0000
X-Inumbo-ID: 048cb126-7e78-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 048cb126-7e78-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:47:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=CqVLE/Jd6HM3Vgn8tVdHgjUTM+Ws/tDljF8jpiZfEco=; b=QIVonFNUOFFzSJDr9LZGsQ3c8H
 KB8cFCa+NsNoLsujy4Im+tzjsbbG4DWPZsUepoVpY7msVH+W0euRC4+TQ8wSKCGlOzBHrkT2QYOea
 Vnpe7ywXJddmEad6yZx4V0Sk2mCo/ur4f09NFX0WPMOGieJeTPmXzTna2bdqeja/7Dps=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPem-0007vf-Ey
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPem-0000Pa-E2
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] qcow2: Fix the calculation of the maximum L2
 cache size
Message-Id: <E1jOPem-0000Pa-E2@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:47:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c9ffb12754b1575babfef45168b6e1b1af80a95f
Author:     Alberto Garcia <berto@igalia.com>
AuthorDate: Fri Aug 16 15:17:42 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Oct 28 00:00:03 2019 -0500

    qcow2: Fix the calculation of the maximum L2 cache size
    
    The size of the qcow2 L2 cache defaults to 32 MB, which can be easily
    larger than the maximum amount of L2 metadata that the image can have.
    For example: with 64 KB clusters the user would need a qcow2 image
    with a virtual size of 256 GB in order to have 32 MB of L2 metadata.
    
    Because of that, since commit b749562d9822d14ef69c9eaa5f85903010b86c30
    we forbid the L2 cache to become larger than the maximum amount of L2
    metadata for the image, calculated using this formula:
    
        uint64_t max_l2_cache = virtual_disk_size / (s->cluster_size / 8);
    
    The problem with this formula is that the result should be rounded up
    to the cluster size because an L2 table on disk always takes one full
    cluster.
    
    For example, a 1280 MB qcow2 image with 64 KB clusters needs exactly
    160 KB of L2 metadata, but we need 192 KB on disk (3 clusters) even if
    the last 32 KB of those are not going to be used.
    
    However QEMU rounds the numbers down and only creates 2 cache tables
    (128 KB), which is not enough for the image.
    
    A quick test doing 4KB random writes on a 1280 MB image gives me
    around 500 IOPS, while with the correct cache size I get 16K IOPS.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit b70d08205b2e4044c529eefc21df2c8ab61b473b)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/block/qcow2.c b/block/qcow2.c
index 039bdc2f7e..865839682c 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -826,7 +826,11 @@ static void read_cache_sizes(BlockDriverState *bs, QemuOpts *opts,
     bool l2_cache_entry_size_set;
     int min_refcount_cache = MIN_REFCOUNT_CACHE_SIZE * s->cluster_size;
     uint64_t virtual_disk_size = bs->total_sectors * BDRV_SECTOR_SIZE;
-    uint64_t max_l2_cache = virtual_disk_size / (s->cluster_size / 8);
+    uint64_t max_l2_entries = DIV_ROUND_UP(virtual_disk_size, s->cluster_size);
+    /* An L2 table is always one cluster in size so the max cache size
+     * should be a multiple of the cluster size. */
+    uint64_t max_l2_cache = ROUND_UP(max_l2_entries * sizeof(uint64_t),
+                                     s->cluster_size);
 
     combined_cache_size_set = qemu_opt_get(opts, QCOW2_OPT_CACHE_SIZE);
     l2_cache_size_set = qemu_opt_get(opts, QCOW2_OPT_L2_CACHE_SIZE);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:47:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:47:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPey-00009w-5C; Tue, 14 Apr 2020 17:47:44 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPex-00009o-4f
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:43 +0000
X-Inumbo-ID: 0a8e6308-7e78-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0a8e6308-7e78-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 17:47:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hSTxkETyfIk6PyMCpT8kW7gKwk+g+Rreh1BEhh9ORvo=; b=s1iXXZptHiuOzy90M3devk3X1F
 jZYWc+7JTNZNpsiV1yHrzARQh/eu/u7a5SnqfYWZquCnxWw/SgNyrRwKXGqmoptcrZOKKAILvcUqP
 87Xu6l6BA/VffPPSdozk0cUmTOZjrWsj0vFiH0avYcvsVgZswRnhhUtW1jV6gNWjZMn0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPew-0007vo-HW
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPew-0000Q9-Gj
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/nfs: tear down aio before nfs_close
Message-Id: <E1jOPew-0000Q9-Gj@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:47:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0694c489cd240620fee5675e8d24c7ce02d1d67d
Author:     Peter Lieven <pl@kamp.de>
AuthorDate: Tue Sep 10 17:41:09 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Oct 28 00:03:19 2019 -0500

    block/nfs: tear down aio before nfs_close
    
    nfs_close is a sync call from libnfs and has its own event
    handler polling on the nfs FD. Avoid that both QEMU and libnfs
    are intefering here.
    
    CC: qemu-stable@nongnu.org
    Signed-off-by: Peter Lieven <pl@kamp.de>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 601dc6559725f7a614b6f893611e17ff0908e914)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/nfs.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/block/nfs.c b/block/nfs.c
index d93241b3bb..2b7a078241 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -390,12 +390,14 @@ static void nfs_attach_aio_context(BlockDriverState *bs,
 static void nfs_client_close(NFSClient *client)
 {
     if (client->context) {
+        qemu_mutex_lock(&client->mutex);
+        aio_set_fd_handler(client->aio_context, nfs_get_fd(client->context),
+                           false, NULL, NULL, NULL, NULL);
+        qemu_mutex_unlock(&client->mutex);
         if (client->fh) {
             nfs_close(client->context, client->fh);
             client->fh = NULL;
         }
-        aio_set_fd_handler(client->aio_context, nfs_get_fd(client->context),
-                           false, NULL, NULL, NULL, NULL);
         nfs_destroy_context(client->context);
         client->context = NULL;
     }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:47:54 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:47:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPf8-0000Ay-7P; Tue, 14 Apr 2020 17:47:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPf7-0000Ap-Dg
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:53 +0000
X-Inumbo-ID: 10921b8c-7e78-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 10921b8c-7e78-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:47:52 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/W/pM3DozSjJmYt7VWLdbPoY3LgbpKqgn04VBHaZfGI=; b=V9VTOroL7lbmTnOf+nn4bMo2GE
 pJLdwlafYfyHx8e5ox2wNC0Yx/wYBOwDeBbb9GeVbsX4mX8hXrJQj7gO/sglzhFXcM+OTqAUmcbdT
 iXQkmM47BXuVPAsKdxRq8NyO9KtxaandYvY/8GS3imAbhafyhkUANMIlHm8//h772Ccc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPf6-0007vx-K6
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:52 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPf6-0000Qn-JB
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:47:52 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] curl: Keep pointer to the CURLState in
 CURLSocket
Message-Id: <E1jOPf6-0000Qn-JB@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:47:52 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3648493495f2ecb2df22aa4be396e00077693d79
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:30 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Keep pointer to the CURLState in CURLSocket
    
    A follow-up patch will make curl_multi_do() and curl_multi_read() take a
    CURLSocket instead of the CURLState.  They still need the latter,
    though, so add a pointer to it to the former.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Message-id: 20190910124136.10565-2-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 0487861685294660b23bc146e1ebd5304aa8bbe0)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/block/curl.c b/block/curl.c
index d4c8e94f3e..92dc2f630e 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -80,6 +80,7 @@ static CURLMcode __curl_multi_socket_action(CURLM *multi_handle,
 #define CURL_BLOCK_OPT_TIMEOUT_DEFAULT 5
 
 struct BDRVCURLState;
+struct CURLState;
 
 static bool libcurl_initialized;
 
@@ -97,6 +98,7 @@ typedef struct CURLAIOCB {
 
 typedef struct CURLSocket {
     int fd;
+    struct CURLState *state;
     QLIST_ENTRY(CURLSocket) next;
 } CURLSocket;
 
@@ -180,6 +182,7 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
     if (!socket) {
         socket = g_new0(CURLSocket, 1);
         socket->fd = fd;
+        socket->state = state;
         QLIST_INSERT_HEAD(&state->sockets, socket, next);
     }
     socket = NULL;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:48:04 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:48:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPfI-0000C3-9O; Tue, 14 Apr 2020 17:48:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPfH-0000Bt-FY
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:03 +0000
X-Inumbo-ID: 1692d814-7e78-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1692d814-7e78-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:48:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xcV/ateVynQhN9tC0CmyXwGc/c96Bw2raabvBV5llmc=; b=BWc3Rg2ClnnFv9FCfMHN3FdYe7
 e6VFXPwLOJeUt5mLCa/AzcAJc83SFM/H2O8a696tpUTNZrn6uDRPzbvBiFA4b5hd+P2UwnyKfdSB6
 IqZi3Dukje4b8P+j4QcWWpvzLMcTzaNAMtGJ3oPSxN9QzGkJ0Vh4YN3/GsMMjEHChTpw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfG-0007wl-Mm
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfG-0000RW-Lx
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] curl: Keep *socket until the end of
 curl_sock_cb()
Message-Id: <E1jOPfG-0000RW-Lx@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:48:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 78ea94e389b2d503ae9a3023759050fd8072e581
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:31 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Keep *socket until the end of curl_sock_cb()
    
    This does not really change anything, but it makes the code a bit easier
    to follow once we use @socket as the opaque pointer for
    aio_set_fd_handler().
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-3-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 007f339b1099af46a008dac438ca0943e31dba72)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index 92dc2f630e..95d7b77dc0 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -172,10 +172,6 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
 
     QLIST_FOREACH(socket, &state->sockets, next) {
         if (socket->fd == fd) {
-            if (action == CURL_POLL_REMOVE) {
-                QLIST_REMOVE(socket, next);
-                g_free(socket);
-            }
             break;
         }
     }
@@ -185,7 +181,6 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
         socket->state = state;
         QLIST_INSERT_HEAD(&state->sockets, socket, next);
     }
-    socket = NULL;
 
     trace_curl_sock_cb(action, (int)fd);
     switch (action) {
@@ -207,6 +202,11 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
             break;
     }
 
+    if (action == CURL_POLL_REMOVE) {
+        QLIST_REMOVE(socket, next);
+        g_free(socket);
+    }
+
     return 0;
 }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:48:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:48:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPfS-0000DG-Bc; Tue, 14 Apr 2020 17:48:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPfR-0000D5-FN
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:13 +0000
X-Inumbo-ID: 1bdb3e9d-7e78-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1bdb3e9d-7e78-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:48:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XS7BxkYH+bJeYAyzOHWCL6dDiHJgRQo5+EFzhuHcFH4=; b=DQZp3nlUgkI2E89+v/zRZjhhBT
 nUe2i8NDU9oGDIj98sGiFzCps77vaOuXj/modDZL22l/MaHaF00habJfAHjxwyUfZPySWJslWrMcH
 yWJsC32GqMrUDHwillcQjDvqbguKKT97X50KQ8bydAhgako6vUhydRVmvQkvM3CY3Rvc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfQ-0007wv-PN
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfQ-0000SL-OV
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] curl: Check completion in curl_multi_do()
Message-Id: <E1jOPfQ-0000SL-OV@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:48:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4be97ef966f5d88a64bcc359d2c72152bc08b322
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:32 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Check completion in curl_multi_do()
    
    While it is more likely that transfers complete after some file
    descriptor has data ready to read, we probably should not rely on it.
    Better be safe than sorry and call curl_multi_check_completion() in
    curl_multi_do(), too, just like it is done in curl_multi_read().
    
    With this change, curl_multi_do() and curl_multi_read() are actually the
    same, so drop curl_multi_read() and use curl_multi_do() as the sole FD
    handler.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-4-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 948403bcb1c7e71dcbe8ab8479cf3934a0efcbb5)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index 95d7b77dc0..5838afef99 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -139,7 +139,6 @@ typedef struct BDRVCURLState {
 
 static void curl_clean_state(CURLState *s);
 static void curl_multi_do(void *arg);
-static void curl_multi_read(void *arg);
 
 #ifdef NEED_CURL_TIMER_CALLBACK
 /* Called from curl_multi_do_locked, with s->mutex held.  */
@@ -186,7 +185,7 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
     switch (action) {
         case CURL_POLL_IN:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               curl_multi_read, NULL, NULL, state);
+                               curl_multi_do, NULL, NULL, state);
             break;
         case CURL_POLL_OUT:
             aio_set_fd_handler(s->aio_context, fd, false,
@@ -194,7 +193,7 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
             break;
         case CURL_POLL_INOUT:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               curl_multi_read, curl_multi_do, NULL, state);
+                               curl_multi_do, curl_multi_do, NULL, state);
             break;
         case CURL_POLL_REMOVE:
             aio_set_fd_handler(s->aio_context, fd, false,
@@ -418,15 +417,6 @@ static void curl_multi_do(void *arg)
 
     qemu_mutex_lock(&s->s->mutex);
     curl_multi_do_locked(s);
-    qemu_mutex_unlock(&s->s->mutex);
-}
-
-static void curl_multi_read(void *arg)
-{
-    CURLState *s = (CURLState *)arg;
-
-    qemu_mutex_lock(&s->s->mutex);
-    curl_multi_do_locked(s);
     curl_multi_check_completion(s->s);
     qemu_mutex_unlock(&s->s->mutex);
 }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:48:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:48:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPfd-0000EQ-Dy; Tue, 14 Apr 2020 17:48:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPfb-0000E9-Kn
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:23 +0000
X-Inumbo-ID: 2193ed86-7e78-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2193ed86-7e78-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:48:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vyXjzc1v+C/aezzAbNaacvunLhVlEcIuau0Ei53tJ/Q=; b=KPFkexFfReukK0oz8FKd1YFfJY
 qflE1jd7WPJDB2rv85xuWYlI+PURLd2VhaVeHPKP+7SeqKD+GBUld68mk+9/XjyAnqEZVmSsR6zoM
 x4JeScoCTn7EFFqYdk5F9P36fQ0lhLxpxQJjjDEfemZ2XQUkLcSKSoMkMNdtJk4WMNY8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfa-0007x8-S6
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfa-0000Su-RB
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] curl: Pass CURLSocket to curl_multi_do()
Message-Id: <E1jOPfa-0000Su-RB@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:48:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0888ddac8e507e54ae69db7ccbae1117d7ec33b1
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:33 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Pass CURLSocket to curl_multi_do()
    
    curl_multi_do_locked() currently marks all sockets as ready.  That is
    not only inefficient, but in fact unsafe (the loop is).  A follow-up
    patch will change that, but to do so, curl_multi_do_locked() needs to
    know exactly which socket is ready; and that is accomplished by this
    patch here.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-5-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 9dbad87d25587ff640ef878f7b6159fc368ff541)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index 5838afef99..cf2686218d 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -185,15 +185,15 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
     switch (action) {
         case CURL_POLL_IN:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               curl_multi_do, NULL, NULL, state);
+                               curl_multi_do, NULL, NULL, socket);
             break;
         case CURL_POLL_OUT:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               NULL, curl_multi_do, NULL, state);
+                               NULL, curl_multi_do, NULL, socket);
             break;
         case CURL_POLL_INOUT:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               curl_multi_do, curl_multi_do, NULL, state);
+                               curl_multi_do, curl_multi_do, NULL, socket);
             break;
         case CURL_POLL_REMOVE:
             aio_set_fd_handler(s->aio_context, fd, false,
@@ -392,9 +392,10 @@ static void curl_multi_check_completion(BDRVCURLState *s)
 }
 
 /* Called with s->mutex held.  */
-static void curl_multi_do_locked(CURLState *s)
+static void curl_multi_do_locked(CURLSocket *ready_socket)
 {
     CURLSocket *socket, *next_socket;
+    CURLState *s = ready_socket->state;
     int running;
     int r;
 
@@ -413,12 +414,13 @@ static void curl_multi_do_locked(CURLState *s)
 
 static void curl_multi_do(void *arg)
 {
-    CURLState *s = (CURLState *)arg;
+    CURLSocket *socket = arg;
+    BDRVCURLState *s = socket->state->s;
 
-    qemu_mutex_lock(&s->s->mutex);
-    curl_multi_do_locked(s);
-    curl_multi_check_completion(s->s);
-    qemu_mutex_unlock(&s->s->mutex);
+    qemu_mutex_lock(&s->mutex);
+    curl_multi_do_locked(socket);
+    curl_multi_check_completion(s);
+    qemu_mutex_unlock(&s->mutex);
 }
 
 static void curl_multi_timeout_do(void *arg)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:48:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:48:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPfn-0000Fd-IR; Tue, 14 Apr 2020 17:48:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPfl-0000FQ-R9
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:33 +0000
X-Inumbo-ID: 28b06d90-7e78-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 28b06d90-7e78-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:48:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=33xprkKrk3UHhBey2Knj34iDnJxBSGsQEjVaf3mor+M=; b=6CkTbuIDE50C0DbOva6X0sjqDg
 Fjq5/PUrrMM7zNxiv9QCL+SKFjmG2wp6ryxytNS8QAKekirq1S8D/ZMFRkDuihvSN4wgEY6O15TmX
 A/WHqUSzqLJs+9C/d+LYfydRM4mxmfeSEnBZYYXwUOTAU7qyTr0cc5DquSIsLI6Jv7tE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfl-0007xH-2y
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfl-0000Tf-2A
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] curl: Report only ready sockets
Message-Id: <E1jOPfl-0000Tf-2A@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:48:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 18e1b71937a37bde173e3d9b2f8f97ee92fedd16
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:34 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Report only ready sockets
    
    Instead of reporting all sockets to cURL, only report the one that has
    caused curl_multi_do_locked() to be called.  This lets us get rid of the
    QLIST_FOREACH_SAFE() list, which was actually wrong: SAFE foreaches are
    only safe when the current element is removed in each iteration.  If it
    possible for the list to be concurrently modified, we cannot guarantee
    that only the current element will be removed.  Therefore, we must not
    use QLIST_FOREACH_SAFE() here.
    
    Fixes: ff5ca1664af85b24a4180d595ea6873fd3deac57
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-6-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 9abaf9fc474c3dd53e8e119326abc774c977c331)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index cf2686218d..fd70f1ebc4 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -392,24 +392,19 @@ static void curl_multi_check_completion(BDRVCURLState *s)
 }
 
 /* Called with s->mutex held.  */
-static void curl_multi_do_locked(CURLSocket *ready_socket)
+static void curl_multi_do_locked(CURLSocket *socket)
 {
-    CURLSocket *socket, *next_socket;
-    CURLState *s = ready_socket->state;
+    BDRVCURLState *s = socket->state->s;
     int running;
     int r;
 
-    if (!s->s->multi) {
+    if (!s->multi) {
         return;
     }
 
-    /* Need to use _SAFE because curl_multi_socket_action() may trigger
-     * curl_sock_cb() which might modify this list */
-    QLIST_FOREACH_SAFE(socket, &s->sockets, next, next_socket) {
-        do {
-            r = curl_multi_socket_action(s->s->multi, socket->fd, 0, &running);
-        } while (r == CURLM_CALL_MULTI_PERFORM);
-    }
+    do {
+        r = curl_multi_socket_action(s->multi, socket->fd, 0, &running);
+    } while (r == CURLM_CALL_MULTI_PERFORM);
 }
 
 static void curl_multi_do(void *arg)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:48:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:48:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPfx-0000HL-KH; Tue, 14 Apr 2020 17:48:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPfv-0000HB-VA
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:43 +0000
X-Inumbo-ID: 2eb09f44-7e78-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2eb09f44-7e78-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:48:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VOk0I7GGLZh3mDHOkZTpIC4CL752gBxwkS3dTYBPYkY=; b=D1YSBzPrnFiVRhsNNEdMZR0AZj
 WRNxhrEA06o/CJukXWsSTecEjVY0avn2xiDElY62oqo+vLlJA+4t58sa2Np7MP4ZrbR29LVavs3gM
 H+/1byhYGGnscAY9B044lEmTZv8LORtGQ4khXEt5e2OagZgYn1IN5i9efw7uZq2+Juhc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfv-0007xQ-5M
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPfv-0000UD-4d
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] curl: Handle success in multi_check_completion
Message-Id: <E1jOPfv-0000UD-4d@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:48:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2d86df1f78d71ca30a4bff84002ada70e6a04169
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:35 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Handle success in multi_check_completion
    
    Background: As of cURL 7.59.0, it verifies that several functions are
    not called from within a callback.  Among these functions is
    curl_multi_add_handle().
    
    curl_read_cb() is a callback from cURL and not a coroutine.  Waking up
    acb->co will lead to entering it then and there, which means the current
    request will settle and the caller (if it runs in the same coroutine)
    may then issue the next request.  In such a case, we will enter
    curl_setup_preadv() effectively from within curl_read_cb().
    
    Calling curl_multi_add_handle() will then fail and the new request will
    not be processed.
    
    Fix this by not letting curl_read_cb() wake up acb->co.  Instead, leave
    the whole business of settling the AIOCB objects to
    curl_multi_check_completion() (which is called from our timer callback
    and our FD handler, so not from any cURL callbacks).
    
    Reported-by: Natalie Gavrielov <ngavrilo@redhat.com>
    Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1740193
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-7-mreitz@redhat.com
    Reviewed-by: John Snow <jsnow@redhat.com>
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit bfb23b480a49114315877aacf700b49453e0f9d9)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 69 +++++++++++++++++++++++++-----------------------------------
 1 file changed, 29 insertions(+), 40 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index fd70f1ebc4..c343c7ed3d 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -229,7 +229,6 @@ static size_t curl_read_cb(void *ptr, size_t size, size_t nmemb, void *opaque)
 {
     CURLState *s = ((CURLState*)opaque);
     size_t realsize = size * nmemb;
-    int i;
 
     trace_curl_read_cb(realsize);
 
@@ -245,32 +244,6 @@ static size_t curl_read_cb(void *ptr, size_t size, size_t nmemb, void *opaque)
     memcpy(s->orig_buf + s->buf_off, ptr, realsize);
     s->buf_off += realsize;
 
-    for(i=0; i<CURL_NUM_ACB; i++) {
-        CURLAIOCB *acb = s->acb[i];
-
-        if (!acb)
-            continue;
-
-        if ((s->buf_off >= acb->end)) {
-            size_t request_length = acb->bytes;
-
-            qemu_iovec_from_buf(acb->qiov, 0, s->orig_buf + acb->start,
-                                acb->end - acb->start);
-
-            if (acb->end - acb->start < request_length) {
-                size_t offset = acb->end - acb->start;
-                qemu_iovec_memset(acb->qiov, offset, 0,
-                                  request_length - offset);
-            }
-
-            acb->ret = 0;
-            s->acb[i] = NULL;
-            qemu_mutex_unlock(&s->s->mutex);
-            aio_co_wake(acb->co);
-            qemu_mutex_lock(&s->s->mutex);
-        }
-    }
-
 read_end:
     /* curl will error out if we do not return this value */
     return size * nmemb;
@@ -351,13 +324,14 @@ static void curl_multi_check_completion(BDRVCURLState *s)
             break;
 
         if (msg->msg == CURLMSG_DONE) {
+            int i;
             CURLState *state = NULL;
+            bool error = msg->data.result != CURLE_OK;
+
             curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE,
                               (char **)&state);
 
-            /* ACBs for successful messages get completed in curl_read_cb */
-            if (msg->data.result != CURLE_OK) {
-                int i;
+            if (error) {
                 static int errcount = 100;
 
                 /* Don't lose the original error message from curl, since
@@ -369,20 +343,35 @@ static void curl_multi_check_completion(BDRVCURLState *s)
                         error_report("curl: further errors suppressed");
                     }
                 }
+            }
 
-                for (i = 0; i < CURL_NUM_ACB; i++) {
-                    CURLAIOCB *acb = state->acb[i];
+            for (i = 0; i < CURL_NUM_ACB; i++) {
+                CURLAIOCB *acb = state->acb[i];
 
-                    if (acb == NULL) {
-                        continue;
-                    }
+                if (acb == NULL) {
+                    continue;
+                }
+
+                if (!error) {
+                    /* Assert that we have read all data */
+                    assert(state->buf_off >= acb->end);
+
+                    qemu_iovec_from_buf(acb->qiov, 0,
+                                        state->orig_buf + acb->start,
+                                        acb->end - acb->start);
 
-                    acb->ret = -EIO;
-                    state->acb[i] = NULL;
-                    qemu_mutex_unlock(&s->mutex);
-                    aio_co_wake(acb->co);
-                    qemu_mutex_lock(&s->mutex);
+                    if (acb->end - acb->start < acb->bytes) {
+                        size_t offset = acb->end - acb->start;
+                        qemu_iovec_memset(acb->qiov, offset, 0,
+                                          acb->bytes - offset);
+                    }
                 }
+
+                acb->ret = error ? -EIO : 0;
+                state->acb[i] = NULL;
+                qemu_mutex_unlock(&s->mutex);
+                aio_co_wake(acb->co);
+                qemu_mutex_lock(&s->mutex);
             }
 
             curl_clean_state(state);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:48:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:48:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPg7-0000IK-MK; Tue, 14 Apr 2020 17:48:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPg5-0000I8-TM
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:53 +0000
X-Inumbo-ID: 34b1f460-7e78-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 34b1f460-7e78-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:48:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=q/1vvrrpdzxCdOTtefq6n4nF5SmPfGIeQEBNVtBsFv0=; b=u4V0D1BD2h8PLXiA4/w+X6P09B
 pRgzoNnLGL5z7UCqNebzy8ALSvwV2HQ38jYlHaFuOmhA5BAzkJKuV+ITEZcl/dV784+xlqjiD2jdq
 iI0TruwyEbRg3Tl7QFMPEqEzcvQ2Xl3a0N73RHl/iHUAmV17BmgBnuVpm9a9P0MHa4HE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPg5-0007xb-7l
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPg5-0000Ut-6z
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:48:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] blockjob: update nodes head while removing
 all bdrv
Message-Id: <E1jOPg5-0000Ut-6z@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:48:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 86b0f4022bb43b16979ba5300e8d40a1e6d44b79
Author:     Sergio Lopez <slp@redhat.com>
AuthorDate: Wed Sep 11 12:03:16 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    blockjob: update nodes head while removing all bdrv
    
    block_job_remove_all_bdrv() iterates through job->nodes, calling
    bdrv_root_unref_child() for each entry. The call to the latter may
    reach child_job_[can_]set_aio_ctx(), which will also attempt to
    traverse job->nodes, potentially finding entries that where freed
    on previous iterations.
    
    To avoid this situation, update job->nodes head on each iteration to
    ensure that already freed entries are no longer linked to the list.
    
    RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1746631
    Signed-off-by: Sergio Lopez <slp@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190911100316.32282-1-mreitz@redhat.com
    Reviewed-by: Sergio Lopez <slp@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit d876bf676f5e7c6aa9ac64555e48cba8734ecb2f)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 blockjob.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/blockjob.c b/blockjob.c
index 20b7f557da..74abb97bfd 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -186,14 +186,23 @@ static const BdrvChildRole child_job = {
 
 void block_job_remove_all_bdrv(BlockJob *job)
 {
-    GSList *l;
-    for (l = job->nodes; l; l = l->next) {
+    /*
+     * bdrv_root_unref_child() may reach child_job_[can_]set_aio_ctx(),
+     * which will also traverse job->nodes, so consume the list one by
+     * one to make sure that such a concurrent access does not attempt
+     * to process an already freed BdrvChild.
+     */
+    while (job->nodes) {
+        GSList *l = job->nodes;
         BdrvChild *c = l->data;
+
+        job->nodes = l->next;
+
         bdrv_op_unblock_all(c->bs, job->blocker);
         bdrv_root_unref_child(c);
+
+        g_slist_free_1(l);
     }
-    g_slist_free(job->nodes);
-    job->nodes = NULL;
 }
 
 bool block_job_has_bdrv(BlockJob *job, BlockDriverState *bs)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:49:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:49:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPgH-0000JR-Op; Tue, 14 Apr 2020 17:49:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPgG-0000JD-1X
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:04 +0000
X-Inumbo-ID: 3ab6615c-7e78-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3ab6615c-7e78-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:49:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=gMJObl+CYedbdkTi8BGNaOUaIJRbzBUZM8KohbdQn8Y=; b=gapZKZcgfgxLGT/nnwYIHMz9mz
 DnVO46m45QAeXGO1gDwalbwNYH4mY3zQuhIW2b7KqWjzUeFaXymQUFM/yBZIJlswRlXmDB2dpiDyH
 EgwjlnriTKblLy3y/aYq5Sa2iroOgZKz8ozZGktNHxqgoL1EuTuFywQnfmSBot5yl9vY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgF-0007yf-Ae
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgF-0000Vc-9a
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/qcow2: Fix corruption introduced by
 commit 8ac0f15f335
Message-Id: <E1jOPgF-0000Vc-9a@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:49:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 84f22c728520792f1010074e0d5ac2ec8e2e372c
Author:     Maxim Levitsky <mlevitsk@redhat.com>
AuthorDate: Sun Sep 15 23:36:53 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    block/qcow2: Fix corruption introduced by commit 8ac0f15f335
    
    This fixes subtle corruption introduced by luks threaded encryption
    in commit 8ac0f15f335
    
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1745922
    
    The corruption happens when we do a write that
       * writes to two or more unallocated clusters at once
       * doesn't fully cover the first sector
       * doesn't fully cover the last sector
       * uses luks encryption
    
    In this case, when allocating the new clusters we COW both areas
    prior to the write and after the write, and we encrypt them.
    
    The above mentioned commit accidentally made it so we encrypt the
    second COW area using the physical cluster offset of the first area.
    
    The problem is that offset_in_cluster in do_perform_cow_encrypt
    can be larger that the cluster size, thus cluster_offset
    will no longer point to the start of the cluster at which encrypted
    area starts.
    
    Next patch in this series will refactor the code to avoid all these
    assumptions.
    
    In the bugreport that was triggered by rebasing a luks image to new,
    zero filled base, which lot of such writes, and causes some files
    with zero areas to contain garbage there instead.
    But as described above it can happen elsewhere as well
    
    Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190915203655.21638-2-mlevitsk@redhat.com
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 38e7d54bdc518b5a05a922467304bcace2396945)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2-cluster.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index cc5609e27a..760564c8fb 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -473,9 +473,10 @@ static bool coroutine_fn do_perform_cow_encrypt(BlockDriverState *bs,
         assert((offset_in_cluster & ~BDRV_SECTOR_MASK) == 0);
         assert((bytes & ~BDRV_SECTOR_MASK) == 0);
         assert(s->crypto);
-        if (qcow2_co_encrypt(bs, cluster_offset,
-                             src_cluster_offset + offset_in_cluster,
-                             buffer, bytes) < 0) {
+        if (qcow2_co_encrypt(bs,
+                start_of_cluster(s, cluster_offset + offset_in_cluster),
+                src_cluster_offset + offset_in_cluster,
+                buffer, bytes) < 0) {
             return false;
         }
     }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:49:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:49:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPgR-0000KT-Rt; Tue, 14 Apr 2020 17:49:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPgQ-0000KF-4q
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:14 +0000
X-Inumbo-ID: 40b79d1e-7e78-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 40b79d1e-7e78-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:49:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HXSUdo2ilisarC4aA2u/2Yq5yVx/F5V9HXSJIaXFau4=; b=NzSfZDVbZN2GQdqT3p5yefW6Ik
 rhtopsNBxSbmntZLuwv2ouF8ZnqwjRQnqMEPPAVs3Q5lhbPUOMI+tT6fGttIHyP+mjcrFSxhtdNZu
 jHv3vjgk2vsWebtdLil6VWhS7BQ5Viu9H+8PQBiJ5lBQLX5yBRDl8z/0R4Ev2Ur2jDaw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgP-0007yo-DD
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgP-0000WP-CR
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] coroutine: Add qemu_co_mutex_assert_locked()
Message-Id: <E1jOPgP-0000WP-CR@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:49:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e9bb3d942e268a19e03fc5d404586d2ed1564282
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Thu Oct 24 16:26:57 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    coroutine: Add qemu_co_mutex_assert_locked()
    
    Some functions require that the caller holds a certain CoMutex for them
    to operate correctly. Add a function so that they can assert the lock is
    really held.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Tested-by: Michael Weiser <michael.weiser@gmx.de>
    Reviewed-by: Michael Weiser <michael.weiser@gmx.de>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Denis V. Lunev <den@openvz.org>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 944f3d5dd216fcd8cb007eddd4f82dced0a15b3d)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/qemu/coroutine.h | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h
index 9801e7f5a4..f4843b5f59 100644
--- a/include/qemu/coroutine.h
+++ b/include/qemu/coroutine.h
@@ -167,6 +167,21 @@ void coroutine_fn qemu_co_mutex_lock(CoMutex *mutex);
  */
 void coroutine_fn qemu_co_mutex_unlock(CoMutex *mutex);
 
+/**
+ * Assert that the current coroutine holds @mutex.
+ */
+static inline coroutine_fn void qemu_co_mutex_assert_locked(CoMutex *mutex)
+{
+    /*
+     * mutex->holder doesn't need any synchronisation if the assertion holds
+     * true because the mutex protects it. If it doesn't hold true, we still
+     * don't mind if another thread takes or releases mutex behind our back,
+     * because the condition will be false no matter whether we read NULL or
+     * the pointer for any other coroutine.
+     */
+    assert(atomic_read(&mutex->locked) &&
+           mutex->holder == qemu_coroutine_self());
+}
 
 /**
  * CoQueues are a mechanism to queue coroutines in order to continue executing
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:49:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:49:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPgb-0000LV-UM; Tue, 14 Apr 2020 17:49:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPga-0000LM-6K
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:24 +0000
X-Inumbo-ID: 46bafecc-7e78-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 46bafecc-7e78-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 17:49:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=AJPy+eGoimgwMHkiFIvJILfhHCxgw9PvPnpZpaH9or0=; b=53JQe5aWqiNJ77pRQz2hxX2MhB
 Upu6+uWxdZy+dlCbpRSxc3kMfJ3+2sNnKCRl8faXHM9P0LseJffhskxShLqv/Kn0xhYr4QkmIvUNm
 zgZDa/bXPAWEgFnPTs7ITxPJGY7E0AA+eTUObmNawbxp6OlmBAEZ4073Y0gRkJyZBTW8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgZ-0007yu-GD
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgZ-0000Xv-FI
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] qcow2: Fix corruption bug in
 qcow2_detect_metadata_preallocation()
Message-Id: <E1jOPgZ-0000Xv-FI@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:49:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 416a692e51b8b582407e30046ddcffbbe52ecf77
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Thu Oct 24 16:26:58 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    qcow2: Fix corruption bug in qcow2_detect_metadata_preallocation()
    
    qcow2_detect_metadata_preallocation() calls qcow2_get_refcount() which
    requires s->lock to be taken to protect its accesses to the refcount
    table and refcount blocks. However, nothing in this code path actually
    took the lock. This could cause the same cache entry to be used by two
    requests at the same time, for different tables at different offsets,
    resulting in image corruption.
    
    As it would be preferable to base the detection on consistent data (even
    though it's just heuristics), let's take the lock not only around the
    qcow2_get_refcount() calls, but around the whole function.
    
    This patch takes the lock in qcow2_co_block_status() earlier and asserts
    in qcow2_detect_metadata_preallocation() that we hold the lock.
    
    Fixes: 69f47505ee66afaa513305de0c1895a224e52c45
    Cc: qemu-stable@nongnu.org
    Reported-by: Michael Weiser <michael.weiser@gmx.de>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Tested-by: Michael Weiser <michael.weiser@gmx.de>
    Reviewed-by: Michael Weiser <michael.weiser@gmx.de>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 5e9785505210e2477e590e61b1ab100d0ec22b01)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2-refcount.c | 2 ++
 block/qcow2.c          | 3 ++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index ef965d7895..0d64bf5a5e 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -3455,6 +3455,8 @@ int qcow2_detect_metadata_preallocation(BlockDriverState *bs)
     int64_t i, end_cluster, cluster_count = 0, threshold;
     int64_t file_length, real_allocation, real_clusters;
 
+    qemu_co_mutex_assert_locked(&s->lock);
+
     file_length = bdrv_getlength(bs->file->bs);
     if (file_length < 0) {
         return file_length;
diff --git a/block/qcow2.c b/block/qcow2.c
index 865839682c..c0f5439dc8 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -1899,6 +1899,8 @@ static int coroutine_fn qcow2_co_block_status(BlockDriverState *bs,
     unsigned int bytes;
     int status = 0;
 
+    qemu_co_mutex_lock(&s->lock);
+
     if (!s->metadata_preallocation_checked) {
         ret = qcow2_detect_metadata_preallocation(bs);
         s->metadata_preallocation = (ret == 1);
@@ -1906,7 +1908,6 @@ static int coroutine_fn qcow2_co_block_status(BlockDriverState *bs,
     }
 
     bytes = MIN(INT_MAX, count);
-    qemu_co_mutex_lock(&s->lock);
     ret = qcow2_get_cluster_offset(bs, offset, &bytes, &cluster_offset);
     qemu_co_mutex_unlock(&s->lock);
     if (ret < 0) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:49:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:49:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPgl-0000Mo-2A; Tue, 14 Apr 2020 17:49:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPgk-0000Mf-BL
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:34 +0000
X-Inumbo-ID: 4c623e45-7e78-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4c623e45-7e78-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:49:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xM9/fkcbf615GUAVrPpZbBr7jBK0BAPBPwqFHRnc1Hw=; b=zjlzK5fg85wXth9njht+Vg8u8z
 XV+AQhJti6AlCbNCau0suxVeFj/1I3GqjRWCojBTrmJjgxWhFVjsGMTnvaJDxBrYD5AaDBuJkQu9f
 yuwacivwB1z+xCAXdvYqzHpP66+sbdcVSKHBe2ItwnCUOT5Dpaa9bPKsvtNsPvvj+UyY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgj-0007z6-It
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgj-0000Yn-I2
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/backup: fix max_transfer handling for
 copy_range
Message-Id: <E1jOPgj-0000Yn-I2@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:49:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e01ed1a1ae42e023fa8f91c9e3905f4f9c3523a0
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Fri Sep 20 17:20:42 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    block/backup: fix max_transfer handling for copy_range
    
    Of course, QEMU_ALIGN_UP is a typo, it should be QEMU_ALIGN_DOWN, as we
    are trying to find aligned size which satisfy both source and target.
    Also, don't ignore too small max_transfer. In this case seems safer to
    disable copy_range.
    
    Fixes: 9ded4a0114968e
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190920142056.12778-2-vsementsov@virtuozzo.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 981fb5810aa3f68797ee6e261db338bd78857614)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/backup.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/block/backup.c b/block/backup.c
index b26c22c4b8..7067d1d1ad 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -657,12 +657,19 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
     job->cluster_size = cluster_size;
     job->copy_bitmap = copy_bitmap;
     copy_bitmap = NULL;
-    job->use_copy_range = !compress; /* compression isn't supported for it */
     job->copy_range_size = MIN_NON_ZERO(blk_get_max_transfer(job->common.blk),
                                         blk_get_max_transfer(job->target));
-    job->copy_range_size = MAX(job->cluster_size,
-                               QEMU_ALIGN_UP(job->copy_range_size,
-                                             job->cluster_size));
+    job->copy_range_size = QEMU_ALIGN_DOWN(job->copy_range_size,
+                                           job->cluster_size);
+    /*
+     * Set use_copy_range, consider the following:
+     * 1. Compression is not supported for copy_range.
+     * 2. copy_range does not respect max_transfer (it's a TODO), so we factor
+     *    that in here. If max_transfer is smaller than the job->cluster_size,
+     *    we do not use copy_range (in that case it's zero after aligning down
+     *    above).
+     */
+    job->use_copy_range = !compress && job->copy_range_size > 0;
 
     /* Required permissions are already taken with target's blk_new() */
     block_job_add_bdrv(&job->common, "target", target, 0, BLK_PERM_ALL,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:49:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:49:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPgv-0000OP-4A; Tue, 14 Apr 2020 17:49:45 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPgu-0000OH-AV
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:44 +0000
X-Inumbo-ID: 52c37d16-7e78-11ea-8988-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 52c37d16-7e78-11ea-8988-12813bfff9fa;
 Tue, 14 Apr 2020 17:49:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=naLSGLSNxSjHaH7TCZxoqvX6cN6bU7j4zavU/077r94=; b=eCLvBG6MB/H/eLvxmHcZLWPy8w
 ydTNLbSr2uEbvGMC14O/CdD+/xGWf+8OG+pFg8rDUfJg5RYPf+eKsSFrT+gGc5U60cNtKfyPg3X0E
 l0IqwjZFXuvcTWiGgNTXLuPqETat5cNa1KOxxyruyBuwa6opgnmx3gkv1b6QRC4hBsuo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgt-0007zF-Lu
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPgt-0000ZU-Kh
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/backup: fix backup_cow_with_offload for
 last cluster
Message-Id: <E1jOPgt-0000ZU-Kh@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:49:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 783e7eb52c0a8e2b8cb906566d0dc2538ffefccf
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Fri Sep 20 17:20:43 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    block/backup: fix backup_cow_with_offload for last cluster
    
    We shouldn't try to copy bytes beyond EOF. Fix it.
    
    Fixes: 9ded4a0114968e
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Message-id: 20190920142056.12778-3-vsementsov@virtuozzo.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 1048ddf0a32dcdaa952e581bd503d49adad527cc)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/backup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/backup.c b/block/backup.c
index 7067d1d1ad..8761f1f9a7 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -167,7 +167,7 @@ static int coroutine_fn backup_cow_with_offload(BackupBlockJob *job,
 
     assert(QEMU_IS_ALIGNED(job->copy_range_size, job->cluster_size));
     assert(QEMU_IS_ALIGNED(start, job->cluster_size));
-    nbytes = MIN(job->copy_range_size, end - start);
+    nbytes = MIN(job->copy_range_size, MIN(end, job->len) - start);
     nr_clusters = DIV_ROUND_UP(nbytes, job->cluster_size);
     hbitmap_reset(job->copy_bitmap, start, job->cluster_size * nr_clusters);
     ret = blk_co_copy_range(blk, start, job->target, start, nbytes,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:49:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:49:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPh5-0000PV-6W; Tue, 14 Apr 2020 17:49:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPh4-0000PN-EX
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:54 +0000
X-Inumbo-ID: 58c5ff68-7e78-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 58c5ff68-7e78-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 17:49:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Xd2QegES55BsDMqlA1Iv4LQEIBWkYF+ge4/lnhZrTYY=; b=rC9vNyjyiA4Z0wn/tcS9u7fGnI
 xvk6j7k7vg0eRhqp3YTeQcxhWomLnh57Y3O+q54Z2rOrEvdEJOOEaPdSdXUWVdkilD76DPEmI7GaI
 BZdIpvJuRs+kcOf12ij1I+9z/n1D/RgVbg0LEOjmm/UWidFAhs5AyqD8O5vJnIGU2vrc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPh3-0007zQ-Oq
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPh3-0000a9-Nm
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:49:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] hw/arm/boot.c: Set NSACR.{CP11,
 CP10} for NS kernel boots
Message-Id: <E1jOPh3-0000a9-Nm@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:49:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 220816989c1e3d490d293b8d7ac85dbc41a4c321
Author:     Peter Maydell <peter.maydell@linaro.org>
AuthorDate: Fri Sep 20 18:40:39 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:37:26 2019 -0500

    hw/arm/boot.c: Set NSACR.{CP11,CP10} for NS kernel boots
    
    If we're booting a Linux kernel directly into Non-Secure
    state on a CPU which has Secure state, then make sure we
    set the NSACR CP11 and CP10 bits, so that Non-Secure is allowed
    to access the FPU. Otherwise an AArch32 kernel will UNDEF as
    soon as it tries to use the FPU.
    
    It used to not matter that we didn't do this until commit
    fc1120a7f5f2d4b6, where we implemented actually honouring
    these NSACR bits.
    
    The problem only exists for CPUs where EL3 is AArch32; the
    equivalent AArch64 trap bits are in CPTR_EL3 and are "0 to
    not trap, 1 to trap", so the reset value of the register
    permits NS access, unlike NSACR.
    
    Fixes: fc1120a7f5
    Fixes: https://bugs.launchpad.net/qemu/+bug/1844597
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Message-id: 20190920174039.3916-1-peter.maydell@linaro.org
    (cherry picked from commit ece628fcf69cbbd4b3efb6fbd203af07609467a2)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/arm/boot.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index c2b89b3bb9..fc4e021a38 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -754,6 +754,8 @@ static void do_cpu_reset(void *opaque)
                     (cs != first_cpu || !info->secure_board_setup)) {
                     /* Linux expects non-secure state */
                     env->cp15.scr_el3 |= SCR_NS;
+                    /* Set NSACR.{CP11,CP10} so NS can access the FPU */
+                    env->cp15.nsacr |= 3 << 10;
                 }
             }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:50:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:50:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPhF-0000gu-8g; Tue, 14 Apr 2020 17:50:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPhE-0000dG-JR
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:04 +0000
X-Inumbo-ID: 5ece5b9e-7e78-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5ece5b9e-7e78-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:50:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=BiQHRBfVYgnQoazrsGvodJVnoekfqxa0s0T/FNT2VZ4=; b=0sO7YqKpzAXnoKwuxust3P0VB3
 mZUPW2y93s8HpwmtLK1qhHYDiII94oKDWA7HYkyUL0A6lSrGDOLkpR59OVlO4C8XZQYRdFcFtr7zP
 0vKLRlcnkWgYdYsFq4NPFygzrY+dS4nCLNTkPAt5uF7t7JiIoXkKFj4GdhS4zgbKcwD8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhD-00080G-Rl
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhD-0000bH-Qf
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] make-release: pull in edk2 submodules so we
 can build it from tarballs
Message-Id: <E1jOPhD-0000bH-Qf@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:50:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c5c9b1362d1652a9d0f79f6d9ae2f80d4b5fe432
Author:     Michael Roth <mdroth@linux.vnet.ibm.com>
AuthorDate: Thu Sep 12 18:12:01 2019 -0500
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:38:57 2019 -0500

    make-release: pull in edk2 submodules so we can build it from tarballs
    
    The `make efi` target added by 536d2173 is built from the roms/edk2
    submodule, which in turn relies on additional submodules nested under
    roms/edk2.
    
    The make-release script currently only pulls in top-level submodules,
    so these nested submodules are missing in the resulting tarball.
    
    We could try to address this situation more generally by recursively
    pulling in all submodules, but this doesn't necessarily ensure the
    end-result will build properly (this case also required other changes).
    
    Additionally, due to the nature of submodules, we may not always have
    control over how these sorts of things are dealt with, so for now we
    continue to handle it on a case-by-case in the make-release script.
    
    Cc: Laszlo Ersek <lersek@redhat.com>
    Cc: Bruce Rogers <brogers@suse.com>
    Cc: qemu-stable@nongnu.org # v4.1.0
    Reported-by: Bruce Rogers <brogers@suse.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
    Message-Id: <20190912231202.12327-2-mdroth@linux.vnet.ibm.com>
    Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    (cherry picked from commit 45c61c6c23918e3b05ed9ecac5b2328ebae5f774)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 scripts/make-release | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/scripts/make-release b/scripts/make-release
index b4af9c9e52..a2a8cda33c 100755
--- a/scripts/make-release
+++ b/scripts/make-release
@@ -20,6 +20,14 @@ git checkout "v${version}"
 git submodule update --init
 (cd roms/seabios && git describe --tags --long --dirty > .version)
 (cd roms/skiboot && ./make_version.sh > .version)
+# Fetch edk2 submodule's submodules, since it won't have access to them via
+# the tarball later.
+#
+# A more uniform way to handle this sort of situation would be nice, but we
+# don't necessarily have much control over how a submodule handles its
+# submodule dependencies, so we continue to handle these on a case-by-case
+# basis for now.
+(cd roms/edk2 && git submodule update --init)
 popd
 tar --exclude=.git -cjf ${destination}.tar.bz2 ${destination}
 rm -rf ${destination}
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:50:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:50:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPhP-00018Q-AY; Tue, 14 Apr 2020 17:50:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPhO-00018J-O0
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:14 +0000
X-Inumbo-ID: 64cdabee-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 64cdabee-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:50:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=DjqZyn6Z0Yz8OArCk8DzdenFliKUtt/llRmdL/P1a2Y=; b=3cIcZzF1FQVXUD/ANYzE5NL7dL
 kIMiChTs87pnUgHPrnqQZejsiuF8umwUp9ubVaRLBir/BNWZv9QHpUcc4ejnMsJmKpsadmZF4nf1P
 0IUroOhWSk5u9cm5Kj4b90+VBDX5Y4jKhFA1AOuVga90++qiZHktCrONECHEVHozOkiA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhN-00080P-UU
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhN-0000bz-Tb
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] roms/Makefile.edk2: don't pull in submodules
 when building from tarball
Message-Id: <E1jOPhN-0000bz-Tb@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:50:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit fc5afb1a9230fe21d76bcef527b0d3cee90a2cd3
Author:     Michael Roth <mdroth@linux.vnet.ibm.com>
AuthorDate: Thu Sep 12 18:12:02 2019 -0500
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:39:09 2019 -0500

    roms/Makefile.edk2: don't pull in submodules when building from tarball
    
    Currently the `make efi` target pulls submodules nested under the
    roms/edk2 submodule as dependencies. However, when we attempt to build
    from a tarball this fails since we are no longer in a git tree.
    
    A preceding patch will pre-populate these submodules in the tarball,
    so assume this build dependency is only needed when building from a
    git tree.
    
    Cc: Laszlo Ersek <lersek@redhat.com>
    Cc: Bruce Rogers <brogers@suse.com>
    Cc: qemu-stable@nongnu.org # v4.1.0
    Reported-by: Bruce Rogers <brogers@suse.com>
    Reviewed-by: Laszlo Ersek <lersek@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
    Message-Id: <20190912231202.12327-3-mdroth@linux.vnet.ibm.com>
    Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    (cherry picked from commit f3e330e3c319160ac04954399b5a10afc965098c)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 roms/Makefile.edk2 | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2
index c2f2ff59d5..33a074d3a4 100644
--- a/roms/Makefile.edk2
+++ b/roms/Makefile.edk2
@@ -46,8 +46,13 @@ all: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.bz2) \
 # files.
 .INTERMEDIATE: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd)
 
+# Fetch edk2 submodule's submodules. If it is not in a git tree, assume
+# we're building from a tarball and that they've already been fetched by
+# make-release/tarball scripts.
 submodules:
-	cd edk2 && git submodule update --init --force
+	if test -d edk2/.git; then \
+		cd edk2 && git submodule update --init --force; \
+	fi
 
 # See notes on the ".NOTPARALLEL" target and the "+" indicator in
 # "tests/uefi-test-tools/Makefile".
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:50:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:50:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPhZ-00019T-Cp; Tue, 14 Apr 2020 17:50:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPhY-00019L-PK
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:24 +0000
X-Inumbo-ID: 6adb4dd4-7e78-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6adb4dd4-7e78-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 17:50:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Yvwf6A4e1ZrrdWwY2IBogQ6va3UgGEutCB6lcFV9rcU=; b=Ic3fHLq0tCrLabKKpO8E9ExZlw
 ByPV83V9Ww9UtqfUZPvmGGAce6x2ClfPcikU1Qbs+7FMC8qgoiyAKILml8WcOlvum27nTf/bUd7eb
 nhDbkeMPzuOfhuBOUtl3ngsLZ39Rz5Br4jK5XOMEFtHMoOov8ZmlO7FlK6k0lEyGtk08=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhY-00080Y-19
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhX-0000ce-WE
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] s390: PCI: fix IOMMU region init
Message-Id: <E1jOPhX-0000ce-WE@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:50:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 331c08d300aab154560d870b2be424f663d260b2
Author:     Matthew Rosato <mjrosato@linux.ibm.com>
AuthorDate: Thu Sep 26 10:10:36 2019 -0400
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:42:13 2019 -0500

    s390: PCI: fix IOMMU region init
    
    The fix in dbe9cf606c shrinks the IOMMU memory region to a size
    that seems reasonable on the surface, however is actually too
    small as it is based against a 0-mapped address space.  This
    causes breakage with small guests as they can overrun the IOMMU window.
    
    Let's go back to the prior method of initializing iommu for now.
    
    Fixes: dbe9cf606c ("s390x/pci: Set the iommu region size mpcifc request")
    Cc: qemu-stable@nongnu.org
    Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
    Reported-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
    Tested-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
    Reported-by: Stefan Zimmerman <stzi@linux.ibm.com>
    Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
    Message-Id: <1569507036-15314-1-git-send-email-mjrosato@linux.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    (cherry picked from commit 7df1dac5f1c85312474df9cb3a8fcae72303da62)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/s390x/s390-pci-bus.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index 2c6e084e2c..9a935f22b5 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -694,10 +694,15 @@ static const MemoryRegionOps s390_msi_ctrl_ops = {
 
 void s390_pci_iommu_enable(S390PCIIOMMU *iommu)
 {
+    /*
+     * The iommu region is initialized against a 0-mapped address space,
+     * so the smallest IOMMU region we can define runs from 0 to the end
+     * of the PCI address space.
+     */
     char *name = g_strdup_printf("iommu-s390-%04x", iommu->pbdev->uid);
     memory_region_init_iommu(&iommu->iommu_mr, sizeof(iommu->iommu_mr),
                              TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu->mr),
-                             name, iommu->pal - iommu->pba + 1);
+                             name, iommu->pal + 1);
     iommu->enabled = true;
     memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&iommu->iommu_mr));
     g_free(name);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:50:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:50:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPhk-0001AT-FR; Tue, 14 Apr 2020 17:50:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPhi-0001AK-Vx
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:35 +0000
X-Inumbo-ID: 70d5af4a-7e78-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 70d5af4a-7e78-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:50:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=prqErR4RTdPO/0eU6tEIFn/n0E0ijSszJayhwsZ5Hdw=; b=fnTzXDGHw5sdvX4l2lZ98WMtHG
 oORlsQ4GmbprC0PkAtUGtfUyrbfXwnVzJySDMABuIRX7EmOyhO8jt7pciqUxRGA52RhKjPzklzUKB
 HxyfNYKU+M8Hs0ENHZRpiaWV1i5inlkH/InkIVd+V/Mq4S4cedUZHn2p62FLbse0tG7w=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhi-00080j-3q
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhi-0000dQ-2t
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/snapshot: Restrict set of snapshot nodes
Message-Id: <E1jOPhi-0000dQ-2t@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:50:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7a8aa6c734bb1c2927ad0cc1d10bcacb53cf4ae3
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Tue Sep 17 12:26:23 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:06:36 2019 -0600

    block/snapshot: Restrict set of snapshot nodes
    
    Nodes involved in internal snapshots were those that were returned by
    bdrv_next(), inserted and not read-only. bdrv_next() in turn returns all
    nodes that are either the root node of a BlockBackend or monitor-owned
    nodes.
    
    With the typical -drive use, this worked well enough. However, in the
    typical -blockdev case, the user defines one node per option, making all
    nodes monitor-owned nodes. This includes protocol nodes etc. which often
    are not snapshottable, so "savevm" only returns an error.
    
    Change the conditions so that internal snapshot still include all nodes
    that have a BlockBackend attached (we definitely want to snapshot
    anything attached to a guest device and probably also the built-in NBD
    server; snapshotting block job BlockBackends is more of an accident, but
    a preexisting one), but other monitor-owned nodes are only included if
    they have no parents.
    
    This makes internal snapshots usable again with typical -blockdev
    configurations.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Peter Krempa <pkrempa@redhat.com>
    Tested-by: Peter Krempa <pkrempa@redhat.com>
    (cherry picked from commit 05f4aced658a02b02d3e89a6c7a2281008fcf26c)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/snapshot.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/block/snapshot.c b/block/snapshot.c
index f2f48f926a..8081616ae9 100644
--- a/block/snapshot.c
+++ b/block/snapshot.c
@@ -31,6 +31,7 @@
 #include "qapi/qmp/qerror.h"
 #include "qapi/qmp/qstring.h"
 #include "qemu/option.h"
+#include "sysemu/block-backend.h"
 
 QemuOptsList internal_snapshot_opts = {
     .name = "snapshot",
@@ -384,6 +385,16 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
     return ret;
 }
 
+static bool bdrv_all_snapshots_includes_bs(BlockDriverState *bs)
+{
+    if (!bdrv_is_inserted(bs) || bdrv_is_read_only(bs)) {
+        return false;
+    }
+
+    /* Include all nodes that are either in use by a BlockBackend, or that
+     * aren't attached to any node, but owned by the monitor. */
+    return bdrv_has_blk(bs) || QLIST_EMPTY(&bs->parents);
+}
 
 /* Group operations. All block drivers are involved.
  * These functions will properly handle dataplane (take aio_context_acquire
@@ -399,7 +410,7 @@ bool bdrv_all_can_snapshot(BlockDriverState **first_bad_bs)
         AioContext *ctx = bdrv_get_aio_context(bs);
 
         aio_context_acquire(ctx);
-        if (bdrv_is_inserted(bs) && !bdrv_is_read_only(bs)) {
+        if (bdrv_all_snapshots_includes_bs(bs)) {
             ok = bdrv_can_snapshot(bs);
         }
         aio_context_release(ctx);
@@ -426,8 +437,9 @@ int bdrv_all_delete_snapshot(const char *name, BlockDriverState **first_bad_bs,
         AioContext *ctx = bdrv_get_aio_context(bs);
 
         aio_context_acquire(ctx);
-        if (bdrv_can_snapshot(bs) &&
-                bdrv_snapshot_find(bs, snapshot, name) >= 0) {
+        if (bdrv_all_snapshots_includes_bs(bs) &&
+            bdrv_snapshot_find(bs, snapshot, name) >= 0)
+        {
             ret = bdrv_snapshot_delete(bs, snapshot->id_str,
                                        snapshot->name, err);
         }
@@ -455,7 +467,7 @@ int bdrv_all_goto_snapshot(const char *name, BlockDriverState **first_bad_bs,
         AioContext *ctx = bdrv_get_aio_context(bs);
 
         aio_context_acquire(ctx);
-        if (bdrv_can_snapshot(bs)) {
+        if (bdrv_all_snapshots_includes_bs(bs)) {
             ret = bdrv_snapshot_goto(bs, name, errp);
         }
         aio_context_release(ctx);
@@ -481,7 +493,7 @@ int bdrv_all_find_snapshot(const char *name, BlockDriverState **first_bad_bs)
         AioContext *ctx = bdrv_get_aio_context(bs);
 
         aio_context_acquire(ctx);
-        if (bdrv_can_snapshot(bs)) {
+        if (bdrv_all_snapshots_includes_bs(bs)) {
             err = bdrv_snapshot_find(bs, &sn, name);
         }
         aio_context_release(ctx);
@@ -512,7 +524,7 @@ int bdrv_all_create_snapshot(QEMUSnapshotInfo *sn,
         if (bs == vm_state_bs) {
             sn->vm_state_size = vm_state_size;
             err = bdrv_snapshot_create(bs, sn);
-        } else if (bdrv_can_snapshot(bs)) {
+        } else if (bdrv_all_snapshots_includes_bs(bs)) {
             sn->vm_state_size = 0;
             err = bdrv_snapshot_create(bs, sn);
         }
@@ -538,7 +550,7 @@ BlockDriverState *bdrv_all_find_vmstate_bs(void)
         bool found;
 
         aio_context_acquire(ctx);
-        found = bdrv_can_snapshot(bs);
+        found = bdrv_all_snapshots_includes_bs(bs) && bdrv_can_snapshot(bs);
         aio_context_release(ctx);
 
         if (found) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:50:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:50:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPhu-0001CL-Jj; Tue, 14 Apr 2020 17:50:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPht-0001CC-KS
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:45 +0000
X-Inumbo-ID: 76d673de-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 76d673de-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:50:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=oMUSDkYWfL1ANSwDo+aAsOs2shS8FBsavgkQcjLlhAo=; b=Shngk025iUA0iXk10+d83LLLXJ
 T4zV7Gq+swcKgWaqs32RWbPiwB6LbZOo568y60PhOOarQcW+Y5GDOeWF+r15pvca7vyzBJsxV9sAp
 JY9dK2ECBX6HTQIJui8hc6w7TU3X7Ml3HxYIPBdhXspi0N3j7wNQVrKD8gFVC9SecnfY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhs-00080s-6W
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPhs-0000e2-5T
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Test internal snapshots with
 -blockdev
Message-Id: <E1jOPhs-0000e2-5T@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:50:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d868d30db6799cf0bc7da7ec67ca6be1e8ec07b2
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Tue Sep 17 12:43:42 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:07:08 2019 -0600

    iotests: Test internal snapshots with -blockdev
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Reviewed-by: Peter Krempa <pkrempa@redhat.com>
    Tested-by: Peter Krempa <pkrempa@redhat.com>
    (cherry picked from commit 92b22e7b1789b0e5f20d245706e72eae70dbddce)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/267           | 168 ++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/267.out       | 182 +++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/common.filter |  11 ++-
 tests/qemu-iotests/group         |   1 +
 4 files changed, 358 insertions(+), 4 deletions(-)

diff --git a/tests/qemu-iotests/267 b/tests/qemu-iotests/267
new file mode 100755
index 0000000000..d37a67c012
--- /dev/null
+++ b/tests/qemu-iotests/267
@@ -0,0 +1,168 @@
+#!/usr/bin/env bash
+#
+# Test which nodes are involved in internal snapshots
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+# creator
+owner=kwolf@redhat.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+    rm -f "$TEST_DIR/nbd"
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_supported_fmt qcow2
+_supported_proto file
+_supported_os Linux
+
+# Internal snapshots are (currently) impossible with refcount_bits=1
+_unsupported_imgopts 'refcount_bits=1[^0-9]'
+
+do_run_qemu()
+{
+    echo Testing: "$@"
+    (
+        if ! test -t 0; then
+            while read cmd; do
+                echo $cmd
+            done
+        fi
+        echo quit
+    ) | $QEMU -nographic -monitor stdio -nodefaults "$@"
+    echo
+}
+
+run_qemu()
+{
+    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_hmp |
+        _filter_generated_node_ids | _filter_imgfmt | _filter_vmstate_size
+}
+
+size=128M
+
+run_test()
+{
+    _make_test_img $size
+    printf "savevm snap0\ninfo snapshots\nloadvm snap0\n" | run_qemu "$@" | _filter_date
+}
+
+
+echo
+echo "=== No block devices at all ==="
+echo
+
+run_test
+
+echo
+echo "=== -drive if=none ==="
+echo
+
+run_test -drive driver=file,file="$TEST_IMG",if=none
+run_test -drive driver=$IMGFMT,file="$TEST_IMG",if=none
+run_test -drive driver=$IMGFMT,file="$TEST_IMG",if=none -device virtio-blk,drive=none0
+
+echo
+echo "=== -drive if=virtio ==="
+echo
+
+run_test -drive driver=file,file="$TEST_IMG",if=virtio
+run_test -drive driver=$IMGFMT,file="$TEST_IMG",if=virtio
+
+echo
+echo "=== Simple -blockdev ==="
+echo
+
+run_test -blockdev driver=file,filename="$TEST_IMG",node-name=file
+run_test -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,node-name=fmt
+run_test -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=raw,file=file,node-name=raw \
+         -blockdev driver=$IMGFMT,file=raw,node-name=fmt
+
+echo
+echo "=== -blockdev with a filter on top ==="
+echo
+
+run_test -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,node-name=fmt \
+         -blockdev driver=copy-on-read,file=fmt,node-name=filter
+
+echo
+echo "=== -blockdev with a backing file ==="
+echo
+
+TEST_IMG="$TEST_IMG.base" _make_test_img $size
+
+IMGOPTS="backing_file=$TEST_IMG.base" \
+run_test -blockdev driver=file,filename="$TEST_IMG.base",node-name=backing-file \
+         -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,backing=backing-file,node-name=fmt
+
+IMGOPTS="backing_file=$TEST_IMG.base" \
+run_test -blockdev driver=file,filename="$TEST_IMG.base",node-name=backing-file \
+         -blockdev driver=$IMGFMT,file=backing-file,node-name=backing-fmt \
+         -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,backing=backing-fmt,node-name=fmt
+
+# A snapshot should be present on the overlay, but not the backing file
+echo Internal snapshots on overlay:
+$QEMU_IMG snapshot -l "$TEST_IMG" | _filter_date | _filter_vmstate_size
+
+echo Internal snapshots on backing file:
+$QEMU_IMG snapshot -l "$TEST_IMG.base" | _filter_date | _filter_vmstate_size
+
+echo
+echo "=== -blockdev with NBD server on the backing file ==="
+echo
+
+IMGOPTS="backing_file=$TEST_IMG.base" _make_test_img $size
+cat <<EOF |
+nbd_server_start unix:$TEST_DIR/nbd
+nbd_server_add -w backing-fmt
+savevm snap0
+info snapshots
+loadvm snap0
+EOF
+run_qemu -blockdev driver=file,filename="$TEST_IMG.base",node-name=backing-file \
+         -blockdev driver=$IMGFMT,file=backing-file,node-name=backing-fmt \
+         -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,backing=backing-fmt,node-name=fmt |
+         _filter_date
+
+# This time, a snapshot should be created on both files
+echo Internal snapshots on overlay:
+$QEMU_IMG snapshot -l "$TEST_IMG" | _filter_date | _filter_vmstate_size
+
+echo Internal snapshots on backing file:
+$QEMU_IMG snapshot -l "$TEST_IMG.base" | _filter_date | _filter_vmstate_size
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/267.out b/tests/qemu-iotests/267.out
new file mode 100644
index 0000000000..9d812e3c72
--- /dev/null
+++ b/tests/qemu-iotests/267.out
@@ -0,0 +1,182 @@
+QA output created by 267
+
+=== No block devices at all ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing:
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+Error: No block device can accept snapshots
+(qemu) info snapshots
+No available block device supports snapshots
+(qemu) loadvm snap0
+Error: No block device supports snapshots
+(qemu) quit
+
+
+=== -drive if=none ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=file,file=TEST_DIR/t.IMGFMT,if=none
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+Error: Device 'none0' is writable but does not support snapshots
+(qemu) info snapshots
+No available block device supports snapshots
+(qemu) loadvm snap0
+Error: Device 'none0' is writable but does not support snapshots
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=IMGFMT,file=TEST_DIR/t.IMGFMT,if=none
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=IMGFMT,file=TEST_DIR/t.IMGFMT,if=none -device virtio-blk,drive=none0
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+
+=== -drive if=virtio ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=file,file=TEST_DIR/t.IMGFMT,if=virtio
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+Error: Device 'virtio0' is writable but does not support snapshots
+(qemu) info snapshots
+No available block device supports snapshots
+(qemu) loadvm snap0
+Error: Device 'virtio0' is writable but does not support snapshots
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=IMGFMT,file=TEST_DIR/t.IMGFMT,if=virtio
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+
+=== Simple -blockdev ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+Error: Device '' is writable but does not support snapshots
+(qemu) info snapshots
+No available block device supports snapshots
+(qemu) loadvm snap0
+Error: Device '' is writable but does not support snapshots
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=raw,file=file,node-name=raw -blockdev driver=IMGFMT,file=raw,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+
+=== -blockdev with a filter on top ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,node-name=fmt -blockdev driver=copy-on-read,file=fmt,node-name=filter
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+
+=== -blockdev with a backing file ===
+
+Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-file,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=IMGFMT,file=backing-file,node-name=backing-fmt -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-fmt,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Internal snapshots on overlay:
+Snapshot list:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+1         snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+Internal snapshots on backing file:
+
+=== -blockdev with NBD server on the backing file ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=IMGFMT,file=backing-file,node-name=backing-fmt -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-fmt,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) nbd_server_start unix:TEST_DIR/nbd
+(qemu) nbd_server_add -w backing-fmt
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Internal snapshots on overlay:
+Snapshot list:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+1         snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+Internal snapshots on backing file:
+Snapshot list:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+1         snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+*** done
diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter
index 35fddc746f..67fd5f4e41 100644
--- a/tests/qemu-iotests/common.filter
+++ b/tests/qemu-iotests/common.filter
@@ -19,12 +19,15 @@
 # standard filters
 #
 
-# ctime(3) dates
-#
 _filter_date()
 {
-    $SED \
-        -e 's/[A-Z][a-z][a-z] [A-z][a-z][a-z]  *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/'
+    $SED -re 's/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/yyyy-mm-dd hh:mm:ss/'
+}
+
+_filter_vmstate_size()
+{
+    $SED -r -e 's/[0-9. ]{5} [KMGT]iB/     SIZE/' \
+            -e 's/[0-9. ]{5} B/   SIZE/'
 }
 
 _filter_generated_node_ids()
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 3660a741f2..8bc2f3857d 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -273,3 +273,4 @@
 256 rw quick
 265 rw auto quick
 266 rw quick
+267 rw auto quick snapshot
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:50:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:50:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPi4-0001DL-Lk; Tue, 14 Apr 2020 17:50:56 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPi3-0001DC-3d
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:55 +0000
X-Inumbo-ID: 7ce05a60-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7ce05a60-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:50:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=YLAij6DiAcHX6B/H0AsozXtPoow98ppDJbp+GF4fK2I=; b=cnTmjefOL7JzrQmV2Cw/9IdQ1x
 wPsrfa6U8aI3UkLF3WdKmFdVxI/xSnwWyh9Am7+XhS+2w7i9f2jPL8ofiOAr5jxSqYU/VEX5nPHCp
 M3n6+MI4H0WzJ5XN7xiEYr+jKPd/qTmDnoCpPunWsFlJ7gKiXbTHgBehRBEYmfzXIaa4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPi2-000814-9X
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPi2-0000f0-8T
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:50:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] vhost-user: save features if the char dev is
 closed
Message-Id: <E1jOPi2-0000f0-8T@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:50:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7b404cae7fa2850d476c29258f03b8e77a5b4bd0
Author:     Adrian Moreno <amorenoz@redhat.com>
AuthorDate: Tue Sep 24 18:20:44 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:09:49 2019 -0600

    vhost-user: save features if the char dev is closed
    
    That way the state can be correctly restored when the device is opened
    again. This might happen if the backend is restarted.
    
    Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1738768
    Reported-by: Pei Zhang <pezhang@redhat.com>
    Fixes: 6ab79a20af3a ("do not call vhost_net_cleanup() on running net from char user event")
    Cc: ddstreet@canonical.com
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
    Message-Id: <20190924162044.11414-1-amorenoz@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit c6beefd674fff8d41b90365dfccad32e53a5abcb)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 net/vhost-user.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/net/vhost-user.c b/net/vhost-user.c
index 51921de443..014199d600 100644
--- a/net/vhost-user.c
+++ b/net/vhost-user.c
@@ -235,6 +235,10 @@ static void chr_closed_bh(void *opaque)
 
     s = DO_UPCAST(NetVhostUserState, nc, ncs[0]);
 
+    if (s->vhost_net) {
+        s->acked_features = vhost_net_get_acked_features(s->vhost_net);
+    }
+
     qmp_set_link(name, false, &err);
 
     qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, net_vhost_user_event,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:51:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:51:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPiE-0001EQ-Ni; Tue, 14 Apr 2020 17:51:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPiD-0001EC-3Z
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:05 +0000
X-Inumbo-ID: 82dcded4-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 82dcded4-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:51:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=A4GxIZHgi8YxJs9Xjp88oY75nUSHLQqasS0D4FUr43k=; b=5EeKIEbSLWU2DLtb/0XJ9y1vW9
 4jZ2mha7mxB46GhXLKBQHq7qVJcuB31pL2qf0wbJ25Qc4lerjBYwXhTSHjx1ke17u+emo5GsAmuZ/
 dEjfJ5sXqSWPldl1J934DcxIC4UuO/OtPgiFL0CYYnpXxOy0V2hyLad1/Iu1o/GQBNTE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPiC-00082C-CF
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPiC-0000g6-BH
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] hw/core/loader: Fix possible crash in
 rom_copy()
Message-Id: <E1jOPiC-0000g6-BH@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:51:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit aae0faa5d3bee91c66dc4c1543190f55a242771e
Author:     Thomas Huth <thuth@redhat.com>
AuthorDate: Wed Sep 25 14:16:43 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:10:48 2019 -0600

    hw/core/loader: Fix possible crash in rom_copy()
    
    Both, "rom->addr" and "addr" are derived from the binary image
    that can be loaded with the "-kernel" paramer. The code in
    rom_copy() then calculates:
    
        d = dest + (rom->addr - addr);
    
    and uses "d" as destination in a memcpy() some lines later. Now with
    bad kernel images, it is possible that rom->addr is smaller than addr,
    thus "rom->addr - addr" gets negative and the memcpy() then tries to
    copy contents from the image to a bad memory location. This could
    maybe be used to inject code from a kernel image into the QEMU binary,
    so we better fix it with an additional sanity check here.
    
    Cc: qemu-stable@nongnu.org
    Reported-by: Guangming Liu
    Buglink: https://bugs.launchpad.net/qemu/+bug/1844635
    Message-Id: <20190925130331.27825-1-thuth@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    (cherry picked from commit e423455c4f23a1a828901c78fe6d03b7dde79319)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/core/loader.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/core/loader.c b/hw/core/loader.c
index 425bf69a99..838a34174a 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -1242,7 +1242,7 @@ int rom_copy(uint8_t *dest, hwaddr addr, size_t size)
         if (rom->addr + rom->romsize < addr) {
             continue;
         }
-        if (rom->addr > end) {
+        if (rom->addr > end || rom->addr < addr) {
             break;
         }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:51:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:51:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPiO-0001FQ-Q7; Tue, 14 Apr 2020 17:51:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPiN-0001FF-70
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:15 +0000
X-Inumbo-ID: 883f0e61-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 883f0e61-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:51:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=chZQOTCqBa89GYh/P5cfbvKLb/N062snXNQ+jU6v/Xg=; b=hFERxFb3y23QtoJbiG7Oz0RJ2f
 yoYYZ/Ko0hbnvET0ml/9qlihmtK6Li+bStx9zRu55h/WXP9TQzgujVWRsYHjY90p/SXNqhxWP/lm2
 ruiW743WLAzsHpSmQwK9ar2Fc32J4S4DQg9RY7BYweCSNFxl/kSrRVWrGXuEygL63rtk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPiM-00082L-En
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPiM-0000h5-Dv
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] qcow2: Limit total allocation range to INT_MAX
Message-Id: <E1jOPiM-0000h5-Dv@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:51:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9e51c5306cffe1a0904d1a31fcf454c436ce8a13
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Thu Oct 10 12:08:57 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:15:25 2019 -0600

    qcow2: Limit total allocation range to INT_MAX
    
    When the COW areas are included, the size of an allocation can exceed
    INT_MAX.  This is kind of limited by handle_alloc() in that it already
    caps avail_bytes at INT_MAX, but the number of clusters still reflects
    the original length.
    
    This can have all sorts of effects, ranging from the storage layer write
    call failing to image corruption.  (If there were no image corruption,
    then I suppose there would be data loss because the .cow_end area is
    forced to be empty, even though there might be something we need to
    COW.)
    
    Fix all of it by limiting nb_clusters so the equivalent number of bytes
    will not exceed INT_MAX.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit d1b9d19f99586b33795e20a79f645186ccbc070f)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2-cluster.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 760564c8fb..f8576031b6 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -1341,6 +1341,9 @@ static int handle_alloc(BlockDriverState *bs, uint64_t guest_offset,
     nb_clusters = MIN(nb_clusters, s->l2_slice_size - l2_index);
     assert(nb_clusters <= INT_MAX);
 
+    /* Limit total allocation byte count to INT_MAX */
+    nb_clusters = MIN(nb_clusters, INT_MAX >> s->cluster_bits);
+
     /* Find L2 entry for the first involved cluster */
     ret = get_cluster_table(bs, guest_offset, &l2_slice, &l2_index);
     if (ret < 0) {
@@ -1429,7 +1432,7 @@ static int handle_alloc(BlockDriverState *bs, uint64_t guest_offset,
      * request actually writes to (excluding COW at the end)
      */
     uint64_t requested_bytes = *bytes + offset_into_cluster(s, guest_offset);
-    int avail_bytes = MIN(INT_MAX, nb_clusters << s->cluster_bits);
+    int avail_bytes = nb_clusters << s->cluster_bits;
     int nb_bytes = MIN(requested_bytes, avail_bytes);
     QCowL2Meta *old_m = *m;
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:51:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:51:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPiY-0001Gh-UC; Tue, 14 Apr 2020 17:51:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPiX-0001GV-Hu
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:25 +0000
X-Inumbo-ID: 8ee199e0-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8ee199e0-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:51:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZJLKTadhMrhWT8yignZg1NPdJOKmC228jA0GA5ERL64=; b=TeLinAAQPHNMNCF1uzZbwPwYge
 UmNUYruUn6bIUY0/DAkYU2BdrJSugL8jY/o1rfkFbwZGbiPDuQXWNDArQUcN4TYKVL6Kx4XOBFShL
 Csr13eyuvUgxk1OoOFB4yxM+z6hDa+YkR6FGX6LLU4zx5XdlpsfDUevUN3WOFFKSot48=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPiW-00082U-HR
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPiW-0000hr-Gf
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Test large write request to qcow2
 file
Message-Id: <E1jOPiW-0000hr-Gf@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:51:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b077ac637db468ad169385d9b702b002654d3a7a
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Thu Oct 10 12:08:58 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:16:16 2019 -0600

    iotests: Test large write request to qcow2 file
    
    Without HEAD^, the following happens when you attempt a large write
    request to a qcow2 file such that the number of bytes covered by all
    clusters involved in a single allocation will exceed INT_MAX:
    
    (A) handle_alloc_space() decides to fill the whole area with zeroes and
        fails because bdrv_co_pwrite_zeroes() fails (the request is too
        large).
    
    (B) If handle_alloc_space() does not do anything, but merge_cow()
        decides that the requests can be merged, it will create a too long
        IOV that later cannot be written.
    
    (C) Otherwise, all parts will be written separately, so those requests
        will work.
    
    In either B or C, though, qcow2_alloc_cluster_link_l2() will have an
    overflow: We use an int (i) to iterate over nb_clusters, and then
    calculate the L2 entry based on "i << s->cluster_bits" -- which will
    overflow if the range covers more than INT_MAX bytes.  This then leads
    to image corruption because the L2 entry will be wrong (it will be
    recognized as a compressed cluster).
    
    Even if that were not the case, the .cow_end area would be empty
    (because handle_alloc() will cap avail_bytes and nb_bytes at INT_MAX, so
    their difference (which is the .cow_end size) will be 0).
    
    So this test checks that on such large requests, the image will not be
    corrupted.  Unfortunately, we cannot check whether COW will be handled
    correctly, because that data is discarded when it is written to null-co
    (but we have to use null-co, because writing 2 GB of data in a test is
    not quite reasonable).
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit a1406a9262a087d9ec9627b88da13c4590b61dae)
     Conflicts:
            tests/qemu-iotests/group
    *drop context dep. on tests not in 4.1
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/270     | 83 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/270.out |  9 +++++
 tests/qemu-iotests/group   |  1 +
 3 files changed, 93 insertions(+)

diff --git a/tests/qemu-iotests/270 b/tests/qemu-iotests/270
new file mode 100755
index 0000000000..b9a12b908c
--- /dev/null
+++ b/tests/qemu-iotests/270
@@ -0,0 +1,83 @@
+#!/usr/bin/env bash
+#
+# Test large write to a qcow2 image
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+seq=$(basename "$0")
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# This is a qcow2 regression test
+_supported_fmt qcow2
+_supported_proto file
+_supported_os Linux
+
+# We use our own external data file and our own cluster size, and we
+# require v3 images
+_unsupported_imgopts data_file cluster_size 'compat=0.10'
+
+
+# We need a backing file so that handle_alloc_space() will not do
+# anything.  (If it were to do anything, it would simply fail its
+# write-zeroes request because the request range is too large.)
+TEST_IMG="$TEST_IMG.base" _make_test_img 4G
+$QEMU_IO -c 'write 0 512' "$TEST_IMG.base" | _filter_qemu_io
+
+# (Use .orig because _cleanup_test_img will remove that file)
+# We need a large cluster size, see below for why (above the $QEMU_IO
+# invocation)
+_make_test_img -o cluster_size=2M,data_file="$TEST_IMG.orig" \
+    -b "$TEST_IMG.base" 4G
+
+# We want a null-co as the data file, because it allows us to quickly
+# "write" 2G of data without using any space.
+# (qemu-img create does not like it, though, because null-co does not
+# support image creation.)
+$QEMU_IMG amend -o data_file="json:{'driver':'null-co',,'size':'4294967296'}" \
+    "$TEST_IMG"
+
+# This gives us a range of:
+#   2^31 - 512 + 768 - 1 = 2^31 + 255 > 2^31
+# until the beginning of the end COW block.  (The total allocation
+# size depends on the cluster size, but all that is important is that
+# it exceeds INT_MAX.)
+#
+# 2^31 - 512 is the maximum request size.  We want this to result in a
+# single allocation, and because the qcow2 driver splits allocations
+# on L2 boundaries, we need large L2 tables; hence the cluster size of
+# 2 MB.  (Anything from 256 kB should work, though, because then one L2
+# table covers 8 GB.)
+$QEMU_IO -c "write 768 $((2 ** 31 - 512))" "$TEST_IMG" | _filter_qemu_io
+
+_check_test_img
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/270.out b/tests/qemu-iotests/270.out
new file mode 100644
index 0000000000..c7be111014
--- /dev/null
+++ b/tests/qemu-iotests/270.out
@@ -0,0 +1,9 @@
+QA output created by 270
+Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=4294967296
+wrote 512/512 bytes at offset 0
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base data_file=TEST_DIR/t.IMGFMT.orig
+wrote 2147483136/2147483136 bytes at offset 768
+2 GiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+No errors were found on the image.
+*** done
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 8bc2f3857d..7629e8ea17 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -274,3 +274,4 @@
 265 rw auto quick
 266 rw quick
 267 rw auto quick snapshot
+270 rw backing quick
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:51:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:51:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPij-0001Hl-0A; Tue, 14 Apr 2020 17:51:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPih-0001HY-A8
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:35 +0000
X-Inumbo-ID: 94e401c0-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 94e401c0-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:51:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=djCmDC8fZpY0gntQe6UT8KLV/1fXOgs/VKwotIiLbOA=; b=VnXpckD16HmYl5LnKnA1W5/XFg
 IR0tS/rRFukFYLLv80KGPeEpFCZ5CT8kl662SB5A4q3ft1y6g7p1mhDJnprg7i5HAK+U0P5pkQopn
 bBxzQZpJ/nC597PfHLUvroMAHTF5jZOXTy2HxjQ1rsdteKz/hUmteu8yk7vByw3Fc0kg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPig-00082d-KB
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPig-0000iT-JG
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] mirror: Do not dereference invalid pointers
Message-Id: <E1jOPig-0000iT-JG@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:51:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c0e2fbf1240f022efc267cef4216e9c023651bee
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Oct 14 17:39:28 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:18:06 2019 -0600

    mirror: Do not dereference invalid pointers
    
    mirror_exit_common() may be called twice (if it is called from
    mirror_prepare() and fails, it will be called from mirror_abort()
    again).
    
    In such a case, many of the pointers in the MirrorBlockJob object will
    already be freed.  This can be seen most reliably for s->target, which
    is set to NULL (and then dereferenced by blk_bs()).
    
    Cc: qemu-stable@nongnu.org
    Fixes: 737efc1eda23b904fbe0e66b37715fb0e5c3e58b
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20191014153931.20699-2-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit f93c3add3a773e0e3f6277e5517583c4ad3a43c2)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/mirror.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/block/mirror.c b/block/mirror.c
index 9f5c59ece1..0e3f7923cf 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -618,11 +618,11 @@ static int mirror_exit_common(Job *job)
 {
     MirrorBlockJob *s = container_of(job, MirrorBlockJob, common.job);
     BlockJob *bjob = &s->common;
-    MirrorBDSOpaque *bs_opaque = s->mirror_top_bs->opaque;
+    MirrorBDSOpaque *bs_opaque;
     AioContext *replace_aio_context = NULL;
-    BlockDriverState *src = s->mirror_top_bs->backing->bs;
-    BlockDriverState *target_bs = blk_bs(s->target);
-    BlockDriverState *mirror_top_bs = s->mirror_top_bs;
+    BlockDriverState *src;
+    BlockDriverState *target_bs;
+    BlockDriverState *mirror_top_bs;
     Error *local_err = NULL;
     bool abort = job->ret < 0;
     int ret = 0;
@@ -632,6 +632,11 @@ static int mirror_exit_common(Job *job)
     }
     s->prepared = true;
 
+    mirror_top_bs = s->mirror_top_bs;
+    bs_opaque = mirror_top_bs->opaque;
+    src = mirror_top_bs->backing->bs;
+    target_bs = blk_bs(s->target);
+
     if (bdrv_chain_contains(src, target_bs)) {
         bdrv_unfreeze_backing_chain(mirror_top_bs, target_bs);
     }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:51:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:51:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPit-0001JJ-27; Tue, 14 Apr 2020 17:51:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPir-0001J8-Hl
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:45 +0000
X-Inumbo-ID: 9ae6a000-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9ae6a000-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:51:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xBdqbWsIjeRmkE1j0+NTMVcG3KqNTtVKuYmEhVIgP10=; b=w6jtpK6f6PiBU/fd0/J+gO3Hu0
 UGwUkc1MfDCoo+nPTzm5709F+FBMzvBRnmChyE1dz7szG4Xh660U7yOp5B8SlmWIaKC5b9n50JKsx
 fC4PYvyuukONxQ7SUKNlkINWkzeM6CVttM70CIX4l0/PS3FqZzNlCIloatFttxF8Tigo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPiq-00082s-Mr
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPiq-0000jL-Lw
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] ui: Fix hanging up Cocoa display on macOS
 10.15 (Catalina)
Message-Id: <E1jOPiq-0000jL-Lw@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:51:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6705b9344f8d6f134f612c2e35e87cdda5aa6284
Author:     Hikaru Nishida <hikarupsp@gmail.com>
AuthorDate: Tue Oct 15 10:07:34 2019 +0900
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:19:19 2019 -0600

    ui: Fix hanging up Cocoa display on macOS 10.15 (Catalina)
    
    macOS API documentation says that before applicationDidFinishLaunching
    is called, any events will not be processed. However, some events are
    fired before it is called in macOS Catalina. This causes deadlock of
    iothread_lock in handleEvent while it will be released after the
    app_started_sem is posted.
    This patch avoids processing events before the app_started_sem is
    posted to prevent this deadlock.
    
    Buglink: https://bugs.launchpad.net/qemu/+bug/1847906
    Signed-off-by: Hikaru Nishida <hikarupsp@gmail.com>
    Message-id: 20191015010734.85229-1-hikarupsp@gmail.com
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    (cherry picked from commit dff742ad27efa474ec04accdbf422c9acfd3e30e)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 ui/cocoa.m | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/ui/cocoa.m b/ui/cocoa.m
index c2984028c5..3026ead621 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -132,6 +132,7 @@ NSArray * supportedImageFileTypes;
 
 static QemuSemaphore display_init_sem;
 static QemuSemaphore app_started_sem;
+static bool allow_events;
 
 // Utility functions to run specified code block with iothread lock held
 typedef void (^CodeBlock)(void);
@@ -727,6 +728,16 @@ QemuCocoaView *cocoaView;
 
 - (bool) handleEvent:(NSEvent *)event
 {
+    if(!allow_events) {
+        /*
+         * Just let OSX have all events that arrive before
+         * applicationDidFinishLaunching.
+         * This avoids a deadlock on the iothread lock, which cocoa_display_init()
+         * will not drop until after the app_started_sem is posted. (In theory
+         * there should not be any such events, but OSX Catalina now emits some.)
+         */
+        return false;
+    }
     return bool_with_iothread_lock(^{
         return [self handleEventLocked:event];
     });
@@ -1154,6 +1165,7 @@ QemuCocoaView *cocoaView;
 - (void)applicationDidFinishLaunching: (NSNotification *) note
 {
     COCOA_DEBUG("QemuCocoaAppController: applicationDidFinishLaunching\n");
+    allow_events = true;
     /* Tell cocoa_display_init to proceed */
     qemu_sem_post(&app_started_sem);
 }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:51:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:51:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPj3-0001LR-4Z; Tue, 14 Apr 2020 17:51:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPj1-0001LC-I3
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:55 +0000
X-Inumbo-ID: a0746d88-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a0746d88-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:51:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8fFu34tq8QQH15ajGGiZIwN7HF1LXqEhrd2K+CuQ85U=; b=k0qTbjg5iiNmcMFEM0PWDE0dQz
 x6x/1bwD66Uu5gQuYNJgwJhIzxwU1d555Q4P6rAHzeCZdmVGYyVaz9p4IyZgcwDJHnqAr0OFfQfd4
 3mtJoWm2RPw6pywkGR2n0YImICV8U3yhu0jt5pQesN6VMr1oFDEpRBJG1nNblL/qeh7E=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPj0-000842-PR
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPj0-0000k6-Oh
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:51:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] virtio: new post_load hook
Message-Id: <E1jOPj0-0000k6-Oh@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:51:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8010d3fce008dd13f155bc0babfe236ea44a2712
Author:     Michael S. Tsirkin <mst@redhat.com>
AuthorDate: Fri Oct 11 15:58:03 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:23:53 2019 -0600

    virtio: new post_load hook
    
    Post load hook in virtio vmsd is called early while device is processed,
    and when VirtIODevice core isn't fully initialized.  Most device
    specific code isn't ready to deal with a device in such state, and
    behaves weirdly.
    
    Add a new post_load hook in a device class instead.  Devices should use
    this unless they specifically want to verify the migration stream as
    it's processed, e.g. for bounds checking.
    
    Cc: qemu-stable@nongnu.org
    Suggested-by: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
    Cc: Mikhail Sennikovsky <mikhail.sennikovskii@cloud.ionos.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    (cherry picked from commit 1dd713837cac8ec5a97d3b8492d72ce5ac94803c)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/virtio/virtio.c         | 7 +++++++
 include/hw/virtio/virtio.h | 6 ++++++
 2 files changed, 13 insertions(+)

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index a94ea18a9c..7c3822c3a0 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -2287,6 +2287,13 @@ int virtio_load(VirtIODevice *vdev, QEMUFile *f, int version_id)
     }
     rcu_read_unlock();
 
+    if (vdc->post_load) {
+        ret = vdc->post_load(vdev);
+        if (ret) {
+            return ret;
+        }
+    }
+
     return 0;
 }
 
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index b189788cb2..f9f62370e9 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -158,6 +158,12 @@ typedef struct VirtioDeviceClass {
      */
     void (*save)(VirtIODevice *vdev, QEMUFile *f);
     int (*load)(VirtIODevice *vdev, QEMUFile *f, int version_id);
+    /* Post load hook in vmsd is called early while device is processed, and
+     * when VirtIODevice isn't fully initialized.  Devices should use this instead,
+     * unless they specifically want to verify the migration stream as it's
+     * processed, e.g. for bounds checking.
+     */
+    int (*post_load)(VirtIODevice *vdev);
     const VMStateDescription *vmsd;
 } VirtioDeviceClass;
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:52:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:52:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPjD-0001MT-6t; Tue, 14 Apr 2020 17:52:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPjB-0001MH-U2
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:05 +0000
X-Inumbo-ID: a6ea50cc-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a6ea50cc-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:52:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0CcogpT+tTceZPsf9gsmZY2YrhcDFvwD7H38hcf2C3Q=; b=uMNtbIuGDJTG0IN8P3OlNkyP08
 MX+MsYEB1zBfrBGiJX0n46jeRWEwqqRSPnj9d74aCmW4JkHGsun31RB0piP0eVWc7EeiofKVfRfc5
 fdjg/IxOq//7Kgt2tamJb8qQUYo7aN+4TB59SkpzO3y7GCEp6mhyznMzBQrIUXjw1Qi4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjA-00084r-Rv
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjA-0000ks-RA
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] virtio-net: prevent offloads reset on
 migration
Message-Id: <E1jOPjA-0000ks-RA@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:52:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4887acf574a573137660aa98d9d422ece0a41a5a
Author:     Mikhail Sennikovsky <mikhail.sennikovskii@cloud.ionos.com>
AuthorDate: Fri Oct 11 15:58:04 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:24:34 2019 -0600

    virtio-net: prevent offloads reset on migration
    
    Currently offloads disabled by guest via the VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET
    command are not preserved on VM migration.
    Instead all offloads reported by guest features (via VIRTIO_PCI_GUEST_FEATURES)
    get enabled.
    What happens is: first the VirtIONet::curr_guest_offloads gets restored and offloads
    are getting set correctly:
    
     #0  qemu_set_offload (nc=0x555556a11400, csum=1, tso4=0, tso6=0, ecn=0, ufo=0) at net/net.c:474
     #1  virtio_net_apply_guest_offloads (n=0x555557701ca0) at hw/net/virtio-net.c:720
     #2  virtio_net_post_load_device (opaque=0x555557701ca0, version_id=11) at hw/net/virtio-net.c:2334
     #3  vmstate_load_state (f=0x5555569dc010, vmsd=0x555556577c80 <vmstate_virtio_net_device>, opaque=0x555557701ca0, version_id=11)
         at migration/vmstate.c:168
     #4  virtio_load (vdev=0x555557701ca0, f=0x5555569dc010, version_id=11) at hw/virtio/virtio.c:2197
     #5  virtio_device_get (f=0x5555569dc010, opaque=0x555557701ca0, size=0, field=0x55555668cd00 <__compound_literal.5>) at hw/virtio/virtio.c:2036
     #6  vmstate_load_state (f=0x5555569dc010, vmsd=0x555556577ce0 <vmstate_virtio_net>, opaque=0x555557701ca0, version_id=11) at migration/vmstate.c:143
     #7  vmstate_load (f=0x5555569dc010, se=0x5555578189e0) at migration/savevm.c:829
     #8  qemu_loadvm_section_start_full (f=0x5555569dc010, mis=0x5555569eee20) at migration/savevm.c:2211
     #9  qemu_loadvm_state_main (f=0x5555569dc010, mis=0x5555569eee20) at migration/savevm.c:2395
     #10 qemu_loadvm_state (f=0x5555569dc010) at migration/savevm.c:2467
     #11 process_incoming_migration_co (opaque=0x0) at migration/migration.c:449
    
    However later on the features are getting restored, and offloads get reset to
    everything supported by features:
    
     #0  qemu_set_offload (nc=0x555556a11400, csum=1, tso4=1, tso6=1, ecn=0, ufo=0) at net/net.c:474
     #1  virtio_net_apply_guest_offloads (n=0x555557701ca0) at hw/net/virtio-net.c:720
     #2  virtio_net_set_features (vdev=0x555557701ca0, features=5104441767) at hw/net/virtio-net.c:773
     #3  virtio_set_features_nocheck (vdev=0x555557701ca0, val=5104441767) at hw/virtio/virtio.c:2052
     #4  virtio_load (vdev=0x555557701ca0, f=0x5555569dc010, version_id=11) at hw/virtio/virtio.c:2220
     #5  virtio_device_get (f=0x5555569dc010, opaque=0x555557701ca0, size=0, field=0x55555668cd00 <__compound_literal.5>) at hw/virtio/virtio.c:2036
     #6  vmstate_load_state (f=0x5555569dc010, vmsd=0x555556577ce0 <vmstate_virtio_net>, opaque=0x555557701ca0, version_id=11) at migration/vmstate.c:143
     #7  vmstate_load (f=0x5555569dc010, se=0x5555578189e0) at migration/savevm.c:829
     #8  qemu_loadvm_section_start_full (f=0x5555569dc010, mis=0x5555569eee20) at migration/savevm.c:2211
     #9  qemu_loadvm_state_main (f=0x5555569dc010, mis=0x5555569eee20) at migration/savevm.c:2395
     #10 qemu_loadvm_state (f=0x5555569dc010) at migration/savevm.c:2467
     #11 process_incoming_migration_co (opaque=0x0) at migration/migration.c:449
    
    Fix this by preserving the state in saved_guest_offloads field and
    pushing out offload initialization to the new post load hook.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Mikhail Sennikovsky <mikhail.sennikovskii@cloud.ionos.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    (cherry picked from commit 7788c3f2e21e35902d45809b236791383bbb613e)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/net/virtio-net.c            | 27 ++++++++++++++++++++++++---
 include/hw/virtio/virtio-net.h |  2 ++
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index b9e1cd71cf..6adb0fe252 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -2330,9 +2330,13 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
         n->curr_guest_offloads = virtio_net_supported_guest_offloads(n);
     }
 
-    if (peer_has_vnet_hdr(n)) {
-        virtio_net_apply_guest_offloads(n);
-    }
+    /*
+     * curr_guest_offloads will be later overwritten by the
+     * virtio_set_features_nocheck call done from the virtio_load.
+     * Here we make sure it is preserved and restored accordingly
+     * in the virtio_net_post_load_virtio callback.
+     */
+    n->saved_guest_offloads = n->curr_guest_offloads;
 
     virtio_net_set_queues(n);
 
@@ -2367,6 +2371,22 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
     return 0;
 }
 
+static int virtio_net_post_load_virtio(VirtIODevice *vdev)
+{
+    VirtIONet *n = VIRTIO_NET(vdev);
+    /*
+     * The actual needed state is now in saved_guest_offloads,
+     * see virtio_net_post_load_device for detail.
+     * Restore it back and apply the desired offloads.
+     */
+    n->curr_guest_offloads = n->saved_guest_offloads;
+    if (peer_has_vnet_hdr(n)) {
+        virtio_net_apply_guest_offloads(n);
+    }
+
+    return 0;
+}
+
 /* tx_waiting field of a VirtIONetQueue */
 static const VMStateDescription vmstate_virtio_net_queue_tx_waiting = {
     .name = "virtio-net-queue-tx_waiting",
@@ -2909,6 +2929,7 @@ static void virtio_net_class_init(ObjectClass *klass, void *data)
     vdc->guest_notifier_mask = virtio_net_guest_notifier_mask;
     vdc->guest_notifier_pending = virtio_net_guest_notifier_pending;
     vdc->legacy_features |= (0x1 << VIRTIO_NET_F_GSO);
+    vdc->post_load = virtio_net_post_load_virtio;
     vdc->vmsd = &vmstate_virtio_net_device;
 }
 
diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
index b96f0c643f..07a9319f4b 100644
--- a/include/hw/virtio/virtio-net.h
+++ b/include/hw/virtio/virtio-net.h
@@ -182,6 +182,8 @@ struct VirtIONet {
     char *netclient_name;
     char *netclient_type;
     uint64_t curr_guest_offloads;
+    /* used on saved state restore phase to preserve the curr_guest_offloads */
+    uint64_t saved_guest_offloads;
     AnnounceTimer announce_timer;
     bool needs_vnet_hdr_swap;
     bool mtu_bypass_backend;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:52:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:52:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPjN-0001Nd-C1; Tue, 14 Apr 2020 17:52:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPjL-0001NU-Ld
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:15 +0000
X-Inumbo-ID: acec6df2-7e78-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id acec6df2-7e78-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 17:52:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Fmx3hKKDE+TF28Db5ocLw/omPlaeOOnNfFX5r+F5Co0=; b=di8XQAFl230kJTi5NmgBrcgWyN
 4B1ZNW6x5ROed83kZBqn1w5qs0ozMmqWXgJe5znzQQgQ32sPja956xyyeXpTMFStzYjGtM3pOCFkN
 g3awbfytJNsae6QXgENu3ZAjODaSEbl6FOruMJXkZlt/9Nv5/eFQE97045e0WEXDbZDo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjK-000853-UU
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjK-0000lT-Td
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] COLO-compare: Fix incorrect `if` logic
Message-Id: <E1jOPjK-0000lT-Td@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:52:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit aea18ef938c115f02e269ab6c8bc83dc5126db19
Author:     Fan Yang <Fan_Yang@sjtu.edu.cn>
AuthorDate: Tue Sep 24 22:08:29 2019 +0800
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:25:01 2019 -0600

    COLO-compare: Fix incorrect `if` logic
    
    'colo_mark_tcp_pkt' should return 'true' when packets are the same, and
    'false' otherwise.  However, it returns 'true' when
    'colo_compare_packet_payload' returns non-zero while
    'colo_compare_packet_payload' is just a 'memcmp'.  The result is that
    COLO-compare reports inconsistent TCP packets when they are actually
    the same.
    
    Fixes: f449c9e549c ("colo: compare the packet based on the tcp sequence number")
    Cc: qemu-stable@nongnu.org
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Fan Yang <Fan_Yang@sjtu.edu.cn>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    (cherry picked from commit 1e907a32b77e5d418538453df5945242e43224fa)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 net/colo-compare.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/colo-compare.c b/net/colo-compare.c
index 7489840bde..7ee17f2cf8 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -319,7 +319,7 @@ static bool colo_mark_tcp_pkt(Packet *ppkt, Packet *spkt,
     *mark = 0;
 
     if (ppkt->tcp_seq == spkt->tcp_seq && ppkt->seq_end == spkt->seq_end) {
-        if (colo_compare_packet_payload(ppkt, spkt,
+        if (!colo_compare_packet_payload(ppkt, spkt,
                                         ppkt->header_size, spkt->header_size,
                                         ppkt->payload_size)) {
             *mark = COLO_COMPARE_FREE_SECONDARY | COLO_COMPARE_FREE_PRIMARY;
@@ -329,7 +329,7 @@ static bool colo_mark_tcp_pkt(Packet *ppkt, Packet *spkt,
 
     /* one part of secondary packet payload still need to be compared */
     if (!after(ppkt->seq_end, spkt->seq_end)) {
-        if (colo_compare_packet_payload(ppkt, spkt,
+        if (!colo_compare_packet_payload(ppkt, spkt,
                                         ppkt->header_size + ppkt->offset,
                                         spkt->header_size + spkt->offset,
                                         ppkt->payload_size - ppkt->offset)) {
@@ -348,7 +348,7 @@ static bool colo_mark_tcp_pkt(Packet *ppkt, Packet *spkt,
         /* primary packet is longer than secondary packet, compare
          * the same part and mark the primary packet offset
          */
-        if (colo_compare_packet_payload(ppkt, spkt,
+        if (!colo_compare_packet_payload(ppkt, spkt,
                                         ppkt->header_size + ppkt->offset,
                                         spkt->header_size + spkt->offset,
                                         spkt->payload_size - spkt->offset)) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:52:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:52:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPjX-0001Oc-E2; Tue, 14 Apr 2020 17:52:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPjV-0001OT-OW
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:25 +0000
X-Inumbo-ID: b2ede1a4-7e78-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b2ede1a4-7e78-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:52:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=cEuo/z7iNC3/wCBkQVleYPURjqKTVkvgLMU7xgRhxqw=; b=vmUcv0Q3Nn4LYXLrBL13iXI412
 AePMtudnMaa1ArjhZDGttMccOeYZTdC0PlJelysuf7VqLoPvLRPEnTWULIojBIDd17upTelqn2Wd3
 J8SnAF7t0POa+PKivqFJqBWDTDX/XkEvY84jC4LHEqUwFtgXNX4mzTmHqA8gJBJqi3Io=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjV-00085C-0o
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjV-0000mW-03
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] util/hbitmap: strict hbitmap_reset
Message-Id: <E1jOPjV-0000mW-03@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:52:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit fcd7cba6acb7344aca70f5f8ec16626e817b35a5
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Tue Aug 6 18:26:11 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:31:40 2019 -0600

    util/hbitmap: strict hbitmap_reset
    
    hbitmap_reset has an unobvious property: it rounds requested region up.
    It may provoke bugs, like in recently fixed write-blocking mode of
    mirror: user calls reset on unaligned region, not keeping in mind that
    there are possible unrelated dirty bytes, covered by rounded-up region
    and information of this unrelated "dirtiness" will be lost.
    
    Make hbitmap_reset strict: assert that arguments are aligned, allowing
    only one exception when @start + @count == hb->orig_size. It's needed
    to comfort users of hbitmap_next_dirty_area, which cares about
    hb->orig_size.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Message-Id: <20190806152611.280389-1-vsementsov@virtuozzo.com>
    [Maintainer edit: Max's suggestions from on-list. --js]
    [Maintainer edit: Eric's suggestion for aligned macro. --js]
    Signed-off-by: John Snow <jsnow@redhat.com>
    (cherry picked from commit 48557b138383aaf69c2617ca9a88bfb394fc50ec)
    *prereq for fed33bd175f663cc8c13f8a490a4f35a19756cfe
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/qemu/hbitmap.h | 5 +++++
 tests/test-hbitmap.c   | 2 +-
 util/hbitmap.c         | 4 ++++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/include/qemu/hbitmap.h b/include/qemu/hbitmap.h
index 4afbe6292e..1bf944ca3d 100644
--- a/include/qemu/hbitmap.h
+++ b/include/qemu/hbitmap.h
@@ -132,6 +132,11 @@ void hbitmap_set(HBitmap *hb, uint64_t start, uint64_t count);
  * @count: Number of bits to reset.
  *
  * Reset a consecutive range of bits in an HBitmap.
+ * @start and @count must be aligned to bitmap granularity. The only exception
+ * is resetting the tail of the bitmap: @count may be equal to hb->orig_size -
+ * @start, in this case @count may be not aligned. The sum of @start + @count is
+ * allowed to be greater than hb->orig_size, but only if @start < hb->orig_size
+ * and @start + @count = ALIGN_UP(hb->orig_size, granularity).
  */
 void hbitmap_reset(HBitmap *hb, uint64_t start, uint64_t count);
 
diff --git a/tests/test-hbitmap.c b/tests/test-hbitmap.c
index 592d8219db..2be56d1597 100644
--- a/tests/test-hbitmap.c
+++ b/tests/test-hbitmap.c
@@ -423,7 +423,7 @@ static void test_hbitmap_granularity(TestHBitmapData *data,
     hbitmap_test_check(data, 0);
     hbitmap_test_set(data, 0, 3);
     g_assert_cmpint(hbitmap_count(data->hb), ==, 4);
-    hbitmap_test_reset(data, 0, 1);
+    hbitmap_test_reset(data, 0, 2);
     g_assert_cmpint(hbitmap_count(data->hb), ==, 2);
 }
 
diff --git a/util/hbitmap.c b/util/hbitmap.c
index bcc0acdc6a..71c6ba2c52 100644
--- a/util/hbitmap.c
+++ b/util/hbitmap.c
@@ -476,6 +476,10 @@ void hbitmap_reset(HBitmap *hb, uint64_t start, uint64_t count)
     /* Compute range in the last layer.  */
     uint64_t first;
     uint64_t last = start + count - 1;
+    uint64_t gran = 1ULL << hb->granularity;
+
+    assert(QEMU_IS_ALIGNED(start, gran));
+    assert(QEMU_IS_ALIGNED(count, gran) || (start + count == hb->orig_size));
 
     trace_hbitmap_reset(hb, start, count,
                         start >> hb->granularity, last >> hb->granularity);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:52:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:52:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPjh-0001Ph-GL; Tue, 14 Apr 2020 17:52:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPjf-0001PV-Tc
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:35 +0000
X-Inumbo-ID: b8f0b266-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b8f0b266-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:52:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4e0ZU8ttYd1KCsjZj25Jn6HhC+jiqNT0DqZMrcznHQY=; b=iB3dd0C4tKDBpwAa0wLNSwbizk
 uVwNVIEnTYTwGts40rYVxSsd6Tk7cbRhZnL/ocIJeCf01FSKRfrsynWkLEDjv87WWL/WMg0rfCkUs
 xQ0qqP/86vhdUmbQK7H+iWImiqVNFStzIvOqM9RgZdojl0tf9G8X4NC4LrS7wTkHYje4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjf-00085Q-3T
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjf-0000nF-2Y
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] hbitmap: handle set/reset with zero length
Message-Id: <E1jOPjf-0000nF-2Y@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:52:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c0b35d87de345bd3b59a44c604b247a0497f2fc0
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Fri Oct 11 12:07:07 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:31:55 2019 -0600

    hbitmap: handle set/reset with zero length
    
    Passing zero length to these functions leads to unpredicted results.
    Zero-length set/reset may occur in active-mirror, on zero-length write
    (which is unlikely, but not guaranteed to never happen).
    
    Let's just do nothing on zero-length request.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20191011090711.19940-2-vsementsov@virtuozzo.com
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit fed33bd175f663cc8c13f8a490a4f35a19756cfe)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 util/hbitmap.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/util/hbitmap.c b/util/hbitmap.c
index 71c6ba2c52..c059313b9e 100644
--- a/util/hbitmap.c
+++ b/util/hbitmap.c
@@ -387,6 +387,10 @@ void hbitmap_set(HBitmap *hb, uint64_t start, uint64_t count)
     uint64_t first, n;
     uint64_t last = start + count - 1;
 
+    if (count == 0) {
+        return;
+    }
+
     trace_hbitmap_set(hb, start, count,
                       start >> hb->granularity, last >> hb->granularity);
 
@@ -478,6 +482,10 @@ void hbitmap_reset(HBitmap *hb, uint64_t start, uint64_t count)
     uint64_t last = start + count - 1;
     uint64_t gran = 1ULL << hb->granularity;
 
+    if (count == 0) {
+        return;
+    }
+
     assert(QEMU_IS_ALIGNED(start, gran));
     assert(QEMU_IS_ALIGNED(count, gran) || (start + count == hb->orig_size));
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:52:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:52:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPjq-0001RJ-IU; Tue, 14 Apr 2020 17:52:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPjp-0001RD-QK
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:45 +0000
X-Inumbo-ID: bef65206-7e78-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id bef65206-7e78-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:52:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=wCNrI3eVFrkaHC3TWmRumxgTdGSmZgyNn9oSwgfRGV8=; b=cDYPqICSkcKLxObI0d+FzwbWyc
 eRwQIoU32ifjfpxidDZYI7KWLuW4QDV4uHAYkDLL3D24RTB7BXlW8fIw07i8gk2NeUglh9S15UzC+
 r2QzkJ04igu8WVrd4WPac0iWIsU2U4PeS+cDykVM3WBbgQPhC8hSIrQ5CQcFpSDzAdNw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjp-00085Z-6z
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjp-0000o2-5r
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] target/arm: Allow reading flags from FPSCR
 for M-profile
Message-Id: <E1jOPjp-0000o2-5r@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:52:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit cdc6896659b85f7ed8f7552850312e55170de0c5
Author:     Christophe Lyon <christophe.lyon@linaro.org>
AuthorDate: Fri Oct 25 11:57:11 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:34:45 2019 -0600

    target/arm: Allow reading flags from FPSCR for M-profile
    
    rt==15 is a special case when reading the flags: it means the
    destination is APSR. This patch avoids rejecting
    vmrs apsr_nzcv, fpscr
    as illegal instruction.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Christophe Lyon <christophe.lyon@linaro.org>
    Message-id: 20191025095711.10853-1-christophe.lyon@linaro.org
    [PMM: updated the comment]
    Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    (cherry picked from commit 2529ab43b8a05534494704e803e0332d111d8b91)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/arm/translate-vfp.inc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/target/arm/translate-vfp.inc.c b/target/arm/translate-vfp.inc.c
index ef45cecbea..75406fd9db 100644
--- a/target/arm/translate-vfp.inc.c
+++ b/target/arm/translate-vfp.inc.c
@@ -704,9 +704,10 @@ static bool trans_VMSR_VMRS(DisasContext *s, arg_VMSR_VMRS *a)
     if (arm_dc_feature(s, ARM_FEATURE_M)) {
         /*
          * The only M-profile VFP vmrs/vmsr sysreg is FPSCR.
-         * Writes to R15 are UNPREDICTABLE; we choose to undef.
+         * Accesses to R15 are UNPREDICTABLE; we choose to undef.
+         * (FPSCR -> r15 is a special case which writes to the PSR flags.)
          */
-        if (a->rt == 15 || a->reg != ARM_VFP_FPSCR) {
+        if (a->rt == 15 && (!a->l || a->reg != ARM_VFP_FPSCR)) {
             return false;
         }
     }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:53:00 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:53:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPk4-0001ST-Ks; Tue, 14 Apr 2020 17:53:00 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPk3-0001SO-IG
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:59 +0000
X-Inumbo-ID: c50c790e-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c50c790e-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:52:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=+R9+OTLcouEu88Pnt9uSWXiCx++WGGj5nLsQIVXCC0I=; b=CdExGXbe3mED+LCDAKEX1r59qq
 bfB7lFQmMPndib1gqhl/YMguaguFii7mIqW6mxk963kMlELnVvihUn8O3Eet7OzXZ2fFmv1IAuTU+
 XFJkiWiJe3JpjXr9Ml5yBsDKmzJFRXLcD/JUPf3cmz7PZPSSqygpmYNWXpmZRZN+Eg9s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjz-00085i-DS
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPjz-0000oj-Be
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:52:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] target/xtensa: regenerate and re-import
 test_mmuhifi_c3 core
Message-Id: <E1jOPjz-0000oj-Be@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:52:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b387531323ef1e2819f241a7d3bac86fa1ecb8b9
Author:     Max Filippov <jcmvbkbc@gmail.com>
AuthorDate: Tue Oct 8 19:03:33 2019 -0700
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 5 12:11:47 2019 -0600

    target/xtensa: regenerate and re-import test_mmuhifi_c3 core
    
    Overlay part of the test_mmuhifi_c3 core has GPL3 copyright headers in
    it. Fix that by regenerating test_mmuhifi_c3 core overlay and
    re-importing it.
    
    Fixes: d848ea776728 ("target/xtensa: add test_mmuhifi_c3 core")
    Reported-by: Thomas Huth <thuth@redhat.com>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    (cherry picked from commit d5eaec84e592bb0085f84bef54d0a41e31faa99a)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/xtensa/core-test_mmuhifi_c3.c               |    3 +-
 target/xtensa/core-test_mmuhifi_c3/core-isa.h      |  116 +-
 .../xtensa/core-test_mmuhifi_c3/gdb-config.inc.c   |  114 +-
 .../core-test_mmuhifi_c3/xtensa-modules.inc.c      | 6384 ++++++++++----------
 4 files changed, 3385 insertions(+), 3232 deletions(-)

diff --git a/target/xtensa/core-test_mmuhifi_c3.c b/target/xtensa/core-test_mmuhifi_c3.c
index 3a59fefa94..089ed7da5d 100644
--- a/target/xtensa/core-test_mmuhifi_c3.c
+++ b/target/xtensa/core-test_mmuhifi_c3.c
@@ -27,8 +27,8 @@
 
 #include "qemu/osdep.h"
 #include "cpu.h"
-#include "exec/exec-all.h"
 #include "exec/gdbstub.h"
+#include "qemu-common.h"
 #include "qemu/host-utils.h"
 
 #include "core-test_mmuhifi_c3/core-isa.h"
@@ -39,7 +39,6 @@
 
 static XtensaConfig test_mmuhifi_c3 __attribute__((unused)) = {
     .name = "test_mmuhifi_c3",
-    .options = XTENSA_OPTIONS,
     .gdb_regmap = {
         .reg = {
 #include "core-test_mmuhifi_c3/gdb-config.inc.c"
diff --git a/target/xtensa/core-test_mmuhifi_c3/core-isa.h b/target/xtensa/core-test_mmuhifi_c3/core-isa.h
index 704a31f7c8..838b1b09da 100644
--- a/target/xtensa/core-test_mmuhifi_c3/core-isa.h
+++ b/target/xtensa/core-test_mmuhifi_c3/core-isa.h
@@ -1,15 +1,37 @@
 /*
- * Xtensa processor core configuration information.
+ * xtensa/config/core-isa.h -- HAL definitions that are dependent on Xtensa
+ *				processor CORE configuration
  *
- * This file is subject to the terms and conditions of version 2.1 of the GNU
- * Lesser General Public License as published by the Free Software Foundation.
- *
- * Copyright (c) 1999-2009 Tensilica Inc.
+ *  See <xtensa/config/core.h>, which includes this file, for more details.
  */
 
+/* Xtensa processor core configuration information.
+
+   Copyright (c) 1999-2019 Tensilica Inc.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
+
 #ifndef XTENSA_CORE_TEST_MMUHIFI_C3_CORE_ISA_H
 #define XTENSA_CORE_TEST_MMUHIFI_C3_CORE_ISA_H
 
+
 /****************************************************************************
 	    Parameters Useful for Any Code, USER or PRIVILEGED
  ****************************************************************************/
@@ -32,6 +54,7 @@
 #define XCHAL_HAVE_DEBUG		1	/* debug option */
 #define XCHAL_HAVE_DENSITY		1	/* 16-bit instructions */
 #define XCHAL_HAVE_LOOPS		1	/* zero-overhead loops */
+#define XCHAL_LOOP_BUFFER_SIZE		0	/* zero-ov. loop instr buffer size */
 #define XCHAL_HAVE_NSA			1	/* NSA/NSAU instructions */
 #define XCHAL_HAVE_MINMAX		1	/* MIN/MAX instructions */
 #define XCHAL_HAVE_SEXT			1	/* SEXT instruction */
@@ -59,44 +82,73 @@
 #define XCHAL_HAVE_TAP_MASTER		0	/* JTAG TAP control instr's */
 #define XCHAL_HAVE_PRID			1	/* processor ID register */
 #define XCHAL_HAVE_EXTERN_REGS		1	/* WER/RER instructions */
+#define XCHAL_HAVE_MX			1	/* MX core (Tensilica internal) */
 #define XCHAL_HAVE_MP_INTERRUPTS	1	/* interrupt distributor port */
 #define XCHAL_HAVE_MP_RUNSTALL		1	/* core RunStall control port */
+#define XCHAL_HAVE_PSO			0	/* Power Shut-Off */
+#define XCHAL_HAVE_PSO_CDM		0	/* core/debug/mem pwr domains */
+#define XCHAL_HAVE_PSO_FULL_RETENTION	0	/* all regs preserved on PSO */
 #define XCHAL_HAVE_THREADPTR		1	/* THREADPTR register */
 #define XCHAL_HAVE_BOOLEANS		1	/* boolean registers */
 #define XCHAL_HAVE_CP			1	/* CPENABLE reg (coprocessor) */
 #define XCHAL_CP_MAXCFG			2	/* max allowed cp id plus one */
 #define XCHAL_HAVE_MAC16		0	/* MAC16 package */
 #define XCHAL_HAVE_VECTORFPU2005	0	/* vector floating-point pkg */
-#define XCHAL_HAVE_FP			0	/* floating point pkg */
+#define XCHAL_HAVE_FP			0	/* single prec floating point */
+#define XCHAL_HAVE_FP_DIV		0	/* FP with DIV instructions */
+#define XCHAL_HAVE_FP_RECIP		0	/* FP with RECIP instructions */
+#define XCHAL_HAVE_FP_SQRT		0	/* FP with SQRT instructions */
+#define XCHAL_HAVE_FP_RSQRT		0	/* FP with RSQRT instructions */
 #define XCHAL_HAVE_DFP			0	/* double precision FP pkg */
+#define XCHAL_HAVE_DFP_DIV		0	/* DFP with DIV instructions */
+#define XCHAL_HAVE_DFP_RECIP		0	/* DFP with RECIP instructions*/
+#define XCHAL_HAVE_DFP_SQRT		0	/* DFP with SQRT instructions */
+#define XCHAL_HAVE_DFP_RSQRT		0	/* DFP with RSQRT instructions*/
 #define XCHAL_HAVE_DFP_accel		0	/* double precision FP acceleration pkg */
 #define XCHAL_HAVE_VECTRA1		0	/* Vectra I  pkg */
 #define XCHAL_HAVE_VECTRALX		0	/* Vectra LX pkg */
 #define XCHAL_HAVE_HIFIPRO		0	/* HiFiPro Audio Engine pkg */
+#define XCHAL_HAVE_HIFI3		0	/* HiFi3 Audio Engine pkg */
 #define XCHAL_HAVE_HIFI2		1	/* HiFi2 Audio Engine pkg */
+#define XCHAL_HAVE_HIFI2EP		0	/* HiFi2EP */
+#define XCHAL_HAVE_HIFI_MINI		0	
 #define XCHAL_HAVE_CONNXD2		0	/* ConnX D2 pkg */
+#define XCHAL_HAVE_BBE16		0	/* ConnX BBE16 pkg */
+#define XCHAL_HAVE_BBE16_RSQRT		0	/* BBE16 & vector recip sqrt */
+#define XCHAL_HAVE_BBE16_VECDIV		0	/* BBE16 & vector divide */
+#define XCHAL_HAVE_BBE16_DESPREAD	0	/* BBE16 & despread */
+#define XCHAL_HAVE_BBENEP		0	/* ConnX BBENEP pkgs */
+#define XCHAL_HAVE_BSP3			0	/* ConnX BSP3 pkg */
+#define XCHAL_HAVE_BSP3_TRANSPOSE	0	/* BSP3 & transpose32x32 */
+#define XCHAL_HAVE_SSP16		0	/* ConnX SSP16 pkg */
+#define XCHAL_HAVE_SSP16_VITERBI	0	/* SSP16 & viterbi */
+#define XCHAL_HAVE_TURBO16		0	/* ConnX Turbo16 pkg */
+#define XCHAL_HAVE_BBP16		0	/* ConnX BBP16 pkg */
+#define XCHAL_HAVE_FLIX3		0	/* basic 3-way FLIX option */
 
 
 /*----------------------------------------------------------------------
 				MISC
   ----------------------------------------------------------------------*/
 
+#define XCHAL_NUM_LOADSTORE_UNITS	1	/* load/store units */
 #define XCHAL_NUM_WRITEBUFFER_ENTRIES	8	/* size of write buffer */
 #define XCHAL_INST_FETCH_WIDTH		8	/* instr-fetch width in bytes */
 #define XCHAL_DATA_WIDTH		8	/* data width in bytes */
+#define XCHAL_DATA_PIPE_DELAY		1	/* d-side pipeline delay
+						   (1 = 5-stage, 2 = 7-stage) */
 /*  In T1050, applies to selected core load and store instructions (see ISA): */
 #define XCHAL_UNALIGNED_LOAD_EXCEPTION	1	/* unaligned loads cause exc. */
 #define XCHAL_UNALIGNED_STORE_EXCEPTION	1	/* unaligned stores cause exc.*/
 #define XCHAL_UNALIGNED_LOAD_HW		0	/* unaligned loads work in hw */
 #define XCHAL_UNALIGNED_STORE_HW	0	/* unaligned stores work in hw*/
 
-#define XCHAL_SW_VERSION		800000	/* sw version of this header */
+#define XCHAL_SW_VERSION		1000006	/* sw version of this header */
 
 #define XCHAL_CORE_ID			"test_mmuhifi_c3"	/* alphanum core name
 						   (CoreID) set in the Xtensa
 						   Processor Generator */
 
-#define XCHAL_CORE_DESCRIPTION		"test_mmuhifi_c3"
 #define XCHAL_BUILD_UNIQUE_ID		0x00005A6A	/* 22-bit sw build ID */
 
 /*
@@ -136,6 +188,10 @@
 #define XCHAL_DCACHE_IS_WRITEBACK	1	/* writeback feature */
 #define XCHAL_DCACHE_IS_COHERENT	1	/* MP coherence feature */
 
+#define XCHAL_HAVE_PREFETCH		0	/* PREFCTL register */
+#define XCHAL_HAVE_PREFETCH_L1		0	/* prefetch to L1 dcache */
+#define XCHAL_PREFETCH_CASTOUT_LINES	0	/* dcache pref. castout bufsz */
+
 
 
 
@@ -172,6 +228,8 @@
 #define XCHAL_ICACHE_ACCESS_SIZE	8
 #define XCHAL_DCACHE_ACCESS_SIZE	8
 
+#define XCHAL_DCACHE_BANKS		1	/* number of banks */
+
 /*  Number of encoded cache attr bits (see <xtensa/hal.h> for decoded bits):  */
 #define XCHAL_CA_BITS			4
 
@@ -187,6 +245,8 @@
 #define XCHAL_NUM_URAM			0	/* number of core unified RAMs*/
 #define XCHAL_NUM_XLMI			0	/* number of core XLMI ports */
 
+#define XCHAL_HAVE_IMEM_LOADSTORE	1	/* can load/store to IROM/IRAM*/
+
 
 /*----------------------------------------------------------------------
 			INTERRUPTS and TIMERS
@@ -261,6 +321,7 @@
 #define XCHAL_INTTYPE_MASK_TIMER	0x00000140
 #define XCHAL_INTTYPE_MASK_NMI		0x00000000
 #define XCHAL_INTTYPE_MASK_WRITE_ERROR	0x00000000
+#define XCHAL_INTTYPE_MASK_PROFILING	0x00000000
 
 /*  Interrupt numbers assigned to specific interrupt sources:  */
 #define XCHAL_TIMER0_INTERRUPT		6	/* CCOMPARE0 */
@@ -273,7 +334,7 @@
 
 
 /*
- *  External interrupt vectors/levels.
+ *  External interrupt mapping.
  *  These macros describe how Xtensa processor interrupt numbers
  *  (as numbered internally, eg. in INTERRUPT and INTENABLE registers)
  *  map to external BInterrupt<n> pins, for those interrupts
@@ -281,7 +342,7 @@
  *  See the Xtensa processor databook for more details.
  */
 
-/*  Core interrupt numbers mapped to each EXTERNAL interrupt number:  */
+/*  Core interrupt numbers mapped to each EXTERNAL BInterrupt pin number:  */
 #define XCHAL_EXTINT0_NUM		0	/* (intlevel 1) */
 #define XCHAL_EXTINT1_NUM		1	/* (intlevel 1) */
 #define XCHAL_EXTINT2_NUM		2	/* (intlevel 1) */
@@ -291,6 +352,16 @@
 #define XCHAL_EXTINT6_NUM		9	/* (intlevel 1) */
 #define XCHAL_EXTINT7_NUM		10	/* (intlevel 1) */
 #define XCHAL_EXTINT8_NUM		11	/* (intlevel 1) */
+/*  EXTERNAL BInterrupt pin numbers mapped to each core interrupt number:  */
+#define XCHAL_INT0_EXTNUM		0	/* (intlevel 1) */
+#define XCHAL_INT1_EXTNUM		1	/* (intlevel 1) */
+#define XCHAL_INT2_EXTNUM		2	/* (intlevel 1) */
+#define XCHAL_INT3_EXTNUM		3	/* (intlevel 1) */
+#define XCHAL_INT4_EXTNUM		4	/* (intlevel 1) */
+#define XCHAL_INT5_EXTNUM		5	/* (intlevel 1) */
+#define XCHAL_INT9_EXTNUM		6	/* (intlevel 1) */
+#define XCHAL_INT10_EXTNUM		7	/* (intlevel 1) */
+#define XCHAL_INT11_EXTNUM		8	/* (intlevel 1) */
 
 
 /*----------------------------------------------------------------------
@@ -300,11 +371,13 @@
 #define XCHAL_XEA_VERSION		2	/* Xtensa Exception Architecture
 						   number: 1 == XEA1 (old)
 							   2 == XEA2 (new)
-							   0 == XEAX (extern) */
+							   0 == XEAX (extern) or TX */
 #define XCHAL_HAVE_XEA1			0	/* Exception Architecture 1 */
 #define XCHAL_HAVE_XEA2			1	/* Exception Architecture 2 */
 #define XCHAL_HAVE_XEAX			0	/* External Exception Arch. */
 #define XCHAL_HAVE_EXCEPTIONS		1	/* exception option */
+#define XCHAL_HAVE_HALT			0	/* halt architecture option */
+#define XCHAL_HAVE_BOOTLOADER		0	/* boot loader (for TX) */
 #define XCHAL_HAVE_MEM_ECC_PARITY	0	/* local memory ECC/parity */
 #define XCHAL_HAVE_VECTOR_SELECT	1	/* relocatable vectors */
 #define XCHAL_HAVE_VECBASE		1	/* relocatable vectors */
@@ -344,13 +417,30 @@
 
 
 /*----------------------------------------------------------------------
-				DEBUG
+				DEBUG MODULE
   ----------------------------------------------------------------------*/
 
+/*  Misc  */
+#define XCHAL_HAVE_DEBUG_ERI		0	/* ERI to debug module */
+#define XCHAL_HAVE_DEBUG_APB		0	/* APB to debug module */
+#define XCHAL_HAVE_DEBUG_JTAG		0	/* JTAG to debug module */
+
+/*  On-Chip Debug (OCD)  */
 #define XCHAL_HAVE_OCD			1	/* OnChipDebug option */
 #define XCHAL_NUM_IBREAK		0	/* number of IBREAKn regs */
 #define XCHAL_NUM_DBREAK		0	/* number of DBREAKn regs */
-#define XCHAL_HAVE_OCD_DIR_ARRAY	0	/* faster OCD option */
+#define XCHAL_HAVE_OCD_DIR_ARRAY	0	/* faster OCD option (to LX4) */
+#define XCHAL_HAVE_OCD_LS32DDR		0	/* L32DDR/S32DDR (faster OCD) */
+
+/*  TRAX (in core)  */
+#define XCHAL_HAVE_TRAX			0	/* TRAX in debug module */
+#define XCHAL_TRAX_MEM_SIZE		0	/* TRAX memory size in bytes */
+#define XCHAL_TRAX_MEM_SHAREABLE	0	/* start/end regs; ready sig. */
+#define XCHAL_TRAX_ATB_WIDTH		0	/* ATB width (bits), 0=no ATB */
+#define XCHAL_TRAX_TIME_WIDTH		0	/* timestamp bitwidth, 0=none */
+
+/*  Perf counters  */
+#define XCHAL_NUM_PERF_COUNTERS		0	/* performance counters */
 
 
 /*----------------------------------------------------------------------
diff --git a/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c b/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c
index 618d30dffa..0bca70b5af 100644
--- a/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c
+++ b/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c
@@ -1,23 +1,25 @@
 /* Configuration for the Xtensa architecture for GDB, the GNU debugger.
 
-   Copyright (C) 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (c) 2003-2019 Tensilica Inc.
 
-   This file is part of GDB.
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-  /*    idx ofs bi sz al targno  flags cp typ group name  */
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
   XTREG(  0,  0,32, 4, 4,0x0020,0x0006,-2, 9,0x0100,pc,          0,0,0,0,0,0)
   XTREG(  1,  4,32, 4, 4,0x0100,0x0006,-2, 1,0x0002,ar0,         0,0,0,0,0,0)
   XTREG(  2,  8,32, 4, 4,0x0101,0x0006,-2, 1,0x0002,ar1,         0,0,0,0,0,0)
@@ -58,8 +60,8 @@
   XTREG( 37,148,32, 4, 4,0x0205,0x0006,-2, 2,0x1100,litbase,     0,0,0,0,0,0)
   XTREG( 38,152, 3, 4, 4,0x0248,0x0006,-2, 2,0x1002,windowbase,  0,0,0,0,0,0)
   XTREG( 39,156, 8, 4, 4,0x0249,0x0006,-2, 2,0x1002,windowstart, 0,0,0,0,0,0)
-  XTREG( 40,160,32, 4, 4,0x02b0,0x0002,-2, 2,0x1000,sr176,       0,0,0,0,0,0)
-  XTREG( 41,164,32, 4, 4,0x02d0,0x0002,-2, 2,0x1000,sr208,       0,0,0,0,0,0)
+  XTREG( 40,160,32, 4, 4,0x02b0,0x0002,-2, 2,0x1000,configid0,   0,0,0,0,0,0)
+  XTREG( 41,164,32, 4, 4,0x02d0,0x0002,-2, 2,0x1000,configid1,   0,0,0,0,0,0)
   XTREG( 42,168,19, 4, 4,0x02e6,0x0006,-2, 2,0x1100,ps,          0,0,0,0,0,0)
   XTREG( 43,172,32, 4, 4,0x03e7,0x0006,-2, 3,0x0110,threadptr,   0,0,0,0,0,0)
   XTREG( 44,176,16, 4, 4,0x0204,0x0006,-1, 2,0x1100,br,          0,0,0,0,0,0)
@@ -137,4 +139,82 @@
   XTREG(104,464,32, 4, 4,0x000d,0x0006,-2, 8,0x0100,a13,         0,0,0,0,0,0)
   XTREG(105,468,32, 4, 4,0x000e,0x0006,-2, 8,0x0100,a14,         0,0,0,0,0,0)
   XTREG(106,472,32, 4, 4,0x000f,0x0006,-2, 8,0x0100,a15,         0,0,0,0,0,0)
+  XTREG(107,476, 1, 1, 1,0x0010,0x0006,-2, 6,0x1010,b0,
+            0,0,&xtensa_mask0,0,0,0)
+  XTREG(108,477, 1, 1, 1,0x0011,0x0006,-2, 6,0x1010,b1,
+            0,0,&xtensa_mask1,0,0,0)
+  XTREG(109,478, 1, 1, 1,0x0012,0x0006,-2, 6,0x1010,b2,
+            0,0,&xtensa_mask2,0,0,0)
+  XTREG(110,479, 1, 1, 1,0x0013,0x0006,-2, 6,0x1010,b3,
+            0,0,&xtensa_mask3,0,0,0)
+  XTREG(111,480, 1, 1, 1,0x0014,0x0006,-2, 6,0x1010,b4,
+            0,0,&xtensa_mask4,0,0,0)
+  XTREG(112,481, 1, 1, 1,0x0015,0x0006,-2, 6,0x1010,b5,
+            0,0,&xtensa_mask5,0,0,0)
+  XTREG(113,482, 1, 1, 1,0x0016,0x0006,-2, 6,0x1010,b6,
+            0,0,&xtensa_mask6,0,0,0)
+  XTREG(114,483, 1, 1, 1,0x0017,0x0006,-2, 6,0x1010,b7,
+            0,0,&xtensa_mask7,0,0,0)
+  XTREG(115,484, 1, 1, 1,0x0018,0x0006,-2, 6,0x1010,b8,
+            0,0,&xtensa_mask8,0,0,0)
+  XTREG(116,485, 1, 1, 1,0x0019,0x0006,-2, 6,0x1010,b9,
+            0,0,&xtensa_mask9,0,0,0)
+  XTREG(117,486, 1, 1, 1,0x001a,0x0006,-2, 6,0x1010,b10,
+            0,0,&xtensa_mask10,0,0,0)
+  XTREG(118,487, 1, 1, 1,0x001b,0x0006,-2, 6,0x1010,b11,
+            0,0,&xtensa_mask11,0,0,0)
+  XTREG(119,488, 1, 1, 1,0x001c,0x0006,-2, 6,0x1010,b12,
+            0,0,&xtensa_mask12,0,0,0)
+  XTREG(120,489, 1, 1, 1,0x001d,0x0006,-2, 6,0x1010,b13,
+            0,0,&xtensa_mask13,0,0,0)
+  XTREG(121,490, 1, 1, 1,0x001e,0x0006,-2, 6,0x1010,b14,
+            0,0,&xtensa_mask14,0,0,0)
+  XTREG(122,491, 1, 1, 1,0x001f,0x0006,-2, 6,0x1010,b15,
+            0,0,&xtensa_mask15,0,0,0)
+  XTREG(123,492, 4, 4, 4,0x2003,0x0006,-2, 6,0x1010,psintlevel,
+            0,0,&xtensa_mask16,0,0,0)
+  XTREG(124,496, 1, 4, 4,0x2004,0x0006,-2, 6,0x1010,psum,
+            0,0,&xtensa_mask17,0,0,0)
+  XTREG(125,500, 1, 4, 4,0x2005,0x0006,-2, 6,0x1010,pswoe,
+            0,0,&xtensa_mask18,0,0,0)
+  XTREG(126,504, 2, 4, 4,0x2006,0x0006,-2, 6,0x1010,psring,
+            0,0,&xtensa_mask19,0,0,0)
+  XTREG(127,508, 1, 4, 4,0x2007,0x0006,-2, 6,0x1010,psexcm,
+            0,0,&xtensa_mask20,0,0,0)
+  XTREG(128,512, 2, 4, 4,0x2008,0x0006,-2, 6,0x1010,pscallinc,
+            0,0,&xtensa_mask21,0,0,0)
+  XTREG(129,516, 4, 4, 4,0x2009,0x0006,-2, 6,0x1010,psowb,
+            0,0,&xtensa_mask22,0,0,0)
+  XTREG(130,520,20, 4, 4,0x200a,0x0006,-2, 6,0x1010,litbaddr,
+            0,0,&xtensa_mask23,0,0,0)
+  XTREG(131,524, 1, 4, 4,0x200b,0x0006,-2, 6,0x1010,litben,
+            0,0,&xtensa_mask24,0,0,0)
+  XTREG(132,528, 4, 4, 4,0x200e,0x0006,-2, 6,0x1010,dbnum,
+            0,0,&xtensa_mask25,0,0,0)
+  XTREG(133,532, 8, 4, 4,0x200f,0x0006,-2, 6,0x1010,asid3,
+            0,0,&xtensa_mask26,0,0,0)
+  XTREG(134,536, 8, 4, 4,0x2010,0x0006,-2, 6,0x1010,asid2,
+            0,0,&xtensa_mask27,0,0,0)
+  XTREG(135,540, 8, 4, 4,0x2011,0x0006,-2, 6,0x1010,asid1,
+            0,0,&xtensa_mask28,0,0,0)
+  XTREG(136,544, 2, 4, 4,0x2012,0x0006,-2, 6,0x1010,instpgszid4,
+            0,0,&xtensa_mask29,0,0,0)
+  XTREG(137,548, 2, 4, 4,0x2013,0x0006,-2, 6,0x1010,datapgszid4,
+            0,0,&xtensa_mask30,0,0,0)
+  XTREG(138,552,10, 4, 4,0x2014,0x0006,-2, 6,0x1010,ptbase,
+            0,0,&xtensa_mask31,0,0,0)
+  XTREG(139,556, 1, 4, 4,0x201a,0x0006, 1, 5,0x1010,ae_overflow,
+            0,0,&xtensa_mask32,0,0,0)
+  XTREG(140,560, 6, 4, 4,0x201b,0x0006, 1, 5,0x1010,ae_sar,
+            0,0,&xtensa_mask33,0,0,0)
+  XTREG(141,564, 4, 4, 4,0x201c,0x0006, 1, 5,0x1010,ae_bitptr,
+            0,0,&xtensa_mask34,0,0,0)
+  XTREG(142,568, 4, 4, 4,0x201d,0x0006, 1, 5,0x1010,ae_bitsused,
+            0,0,&xtensa_mask35,0,0,0)
+  XTREG(143,572, 4, 4, 4,0x201e,0x0006, 1, 5,0x1010,ae_tablesize,
+            0,0,&xtensa_mask36,0,0,0)
+  XTREG(144,576, 4, 4, 4,0x201f,0x0006, 1, 5,0x1010,ae_first_ts,
+            0,0,&xtensa_mask37,0,0,0)
+  XTREG(145,580,27, 4, 4,0x2020,0x0006, 1, 5,0x1010,ae_nextoffset,
+            0,0,&xtensa_mask38,0,0,0)
   XTREG_END
diff --git a/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c b/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c
index 687631b8fb..28561147fc 100644
--- a/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c
+++ b/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c
@@ -1,24 +1,26 @@
 /* Xtensa configuration-specific ISA information.
-   Copyright 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
 
-   This file is part of BFD, the Binary File Descriptor library.
+   Copyright (c) 2003-2019 Tensilica Inc.
 
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 3 of the
-   License, or (at your option) any later version.
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 
-#include "qemu/osdep.h"
 #include "xtensa-isa.h"
 #include "xtensa-isa-internal.h"
 
@@ -32,8 +34,8 @@ static xtensa_sysreg_internal sysregs[] = {
   { "BR", 4, 0 },
   { "PTEVADDR", 83, 0 },
   { "DDR", 104, 0 },
-  { "176", 176, 0 },
-  { "208", 208, 0 },
+  { "CONFIGID0", 176, 0 },
+  { "CONFIGID1", 208, 0 },
   { "INTERRUPT", 226, 0 },
   { "INTCLEAR", 227, 0 },
   { "CCOUNT", 234, 0 },
@@ -8634,6 +8636,38 @@ Field_ae_s20_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
 }
 
 static unsigned
+Field_ae_fld_ohba_Slot_inst_get (const xtensa_insnbuf insn)
+{
+  unsigned tie_t = 0;
+  tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28);
+  return tie_t;
+}
+
+static void
+Field_ae_fld_ohba_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+{
+  uint32 tie_t;
+  tie_t = (val << 28) >> 28;
+  insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16);
+}
+
+static unsigned
+Field_ae_fld_ohba2_Slot_inst_get (const xtensa_insnbuf insn)
+{
+  unsigned tie_t = 0;
+  tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28);
+  return tie_t;
+}
+
+static void
+Field_ae_fld_ohba2_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+{
+  uint32 tie_t;
+  tie_t = (val << 28) >> 28;
+  insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16);
+}
+
+static unsigned
 Field_ftsf12_Slot_inst_get (const xtensa_insnbuf insn)
 {
   unsigned tie_t = 0;
@@ -8794,6 +8828,8 @@ enum xtensa_field_id {
   FIELD_ae_r20,
   FIELD_ae_r10,
   FIELD_ae_s20,
+  FIELD_ae_fld_ohba,
+  FIELD_ae_fld_ohba2,
   FIELD_op0_s3,
   FIELD_ftsf12,
   FIELD_ftsf13,
@@ -9184,7 +9220,7 @@ enum xtensa_interface_id {
   INTERFACE_RMPINT_In
 };
 
-
+
 /* Constant tables.  */
 
 /* constant table ai4c */
@@ -9254,596 +9290,1044 @@ static const unsigned CONST_TBL_b4cu_0[] = {
 /* Instruction operands.  */
 
 static int
-Operand_soffsetx4_decode (uint32 *valp)
+OperandSem_opnd_sem_soffsetx4_decode (uint32 *valp)
 {
-  unsigned soffsetx4_0, offset_0;
-  offset_0 = *valp & 0x3ffff;
-  soffsetx4_0 = 0x4 + ((((int) offset_0 << 14) >> 14) << 2);
-  *valp = soffsetx4_0;
+  unsigned soffsetx4_out_0;
+  unsigned soffsetx4_in_0;
+  soffsetx4_in_0 = *valp & 0x3ffff;
+  soffsetx4_out_0 = 0x4 + ((((int) soffsetx4_in_0 << 14) >> 14) << 2);
+  *valp = soffsetx4_out_0;
   return 0;
 }
 
 static int
-Operand_soffsetx4_encode (uint32 *valp)
+OperandSem_opnd_sem_soffsetx4_encode (uint32 *valp)
 {
-  unsigned offset_0, soffsetx4_0;
-  soffsetx4_0 = *valp;
-  offset_0 = ((soffsetx4_0 - 0x4) >> 2) & 0x3ffff;
-  *valp = offset_0;
+  unsigned soffsetx4_in_0;
+  unsigned soffsetx4_out_0;
+  soffsetx4_out_0 = *valp;
+  soffsetx4_in_0 = ((soffsetx4_out_0 - 0x4) >> 2) & 0x3ffff;
+  *valp = soffsetx4_in_0;
   return 0;
 }
 
 static int
-Operand_soffsetx4_ator (uint32 *valp, uint32 pc)
+OperandSem_opnd_sem_uimm12x8_decode (uint32 *valp)
 {
-  *valp -= (pc & ~0x3);
+  unsigned uimm12x8_out_0;
+  unsigned uimm12x8_in_0;
+  uimm12x8_in_0 = *valp & 0xfff;
+  uimm12x8_out_0 = uimm12x8_in_0 << 3;
+  *valp = uimm12x8_out_0;
   return 0;
 }
 
 static int
-Operand_soffsetx4_rtoa (uint32 *valp, uint32 pc)
+OperandSem_opnd_sem_uimm12x8_encode (uint32 *valp)
 {
-  *valp += (pc & ~0x3);
+  unsigned uimm12x8_in_0;
+  unsigned uimm12x8_out_0;
+  uimm12x8_out_0 = *valp;
+  uimm12x8_in_0 = ((uimm12x8_out_0 >> 3) & 0xfff);
+  *valp = uimm12x8_in_0;
   return 0;
 }
 
 static int
-Operand_uimm12x8_decode (uint32 *valp)
+OperandSem_opnd_sem_simm4_decode (uint32 *valp)
 {
-  unsigned uimm12x8_0, imm12_0;
-  imm12_0 = *valp & 0xfff;
-  uimm12x8_0 = imm12_0 << 3;
-  *valp = uimm12x8_0;
+  unsigned simm4_out_0;
+  unsigned simm4_in_0;
+  simm4_in_0 = *valp & 0xf;
+  simm4_out_0 = ((int) simm4_in_0 << 28) >> 28;
+  *valp = simm4_out_0;
   return 0;
 }
 
 static int
-Operand_uimm12x8_encode (uint32 *valp)
+OperandSem_opnd_sem_simm4_encode (uint32 *valp)
 {
-  unsigned imm12_0, uimm12x8_0;
-  uimm12x8_0 = *valp;
-  imm12_0 = ((uimm12x8_0 >> 3) & 0xfff);
-  *valp = imm12_0;
+  unsigned simm4_in_0;
+  unsigned simm4_out_0;
+  simm4_out_0 = *valp;
+  simm4_in_0 = (simm4_out_0 & 0xf);
+  *valp = simm4_in_0;
   return 0;
 }
 
 static int
-Operand_simm4_decode (uint32 *valp)
+OperandSem_opnd_sem_AR_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
-  unsigned simm4_0, mn_0;
-  mn_0 = *valp & 0xf;
-  simm4_0 = ((int) mn_0 << 28) >> 28;
-  *valp = simm4_0;
   return 0;
 }
 
 static int
-Operand_simm4_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_encode (uint32 *valp)
 {
-  unsigned mn_0, simm4_0;
-  simm4_0 = *valp;
-  mn_0 = (simm4_0 & 0xf);
-  *valp = mn_0;
-  return 0;
+  int error;
+  error = (*valp >= 32);
+  return error;
 }
 
 static int
-Operand_arr_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_0_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_arr_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_0_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0xf) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_ars_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_1_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_ars_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_1_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0xf) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_art_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_2_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_art_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_2_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0xf) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_ar0_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_3_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_ar0_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_3_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_ar4_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_4_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_ar4_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_4_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_ar8_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_immrx4_decode (uint32 *valp)
 {
+  unsigned immrx4_out_0;
+  unsigned immrx4_in_0;
+  immrx4_in_0 = *valp & 0xf;
+  immrx4_out_0 = (((0xfffffff) << 4) | immrx4_in_0) << 2;
+  *valp = immrx4_out_0;
   return 0;
 }
 
 static int
-Operand_ar8_encode (uint32 *valp)
+OperandSem_opnd_sem_immrx4_encode (uint32 *valp)
+{
+  unsigned immrx4_in_0;
+  unsigned immrx4_out_0;
+  immrx4_out_0 = *valp;
+  immrx4_in_0 = ((immrx4_out_0 >> 2) & 0xf);
+  *valp = immrx4_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_lsi4x4_decode (uint32 *valp)
+{
+  unsigned lsi4x4_out_0;
+  unsigned lsi4x4_in_0;
+  lsi4x4_in_0 = *valp & 0xf;
+  lsi4x4_out_0 = lsi4x4_in_0 << 2;
+  *valp = lsi4x4_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_lsi4x4_encode (uint32 *valp)
+{
+  unsigned lsi4x4_in_0;
+  unsigned lsi4x4_out_0;
+  lsi4x4_out_0 = *valp;
+  lsi4x4_in_0 = ((lsi4x4_out_0 >> 2) & 0xf);
+  *valp = lsi4x4_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm7_decode (uint32 *valp)
+{
+  unsigned simm7_out_0;
+  unsigned simm7_in_0;
+  simm7_in_0 = *valp & 0x7f;
+  simm7_out_0 = ((((-((((simm7_in_0 >> 6) & 1)) & (((simm7_in_0 >> 5) & 1)))) & 0x1ffffff)) << 7) | simm7_in_0;
+  *valp = simm7_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm7_encode (uint32 *valp)
+{
+  unsigned simm7_in_0;
+  unsigned simm7_out_0;
+  simm7_out_0 = *valp;
+  simm7_in_0 = (simm7_out_0 & 0x7f);
+  *valp = simm7_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm6_decode (uint32 *valp)
+{
+  unsigned uimm6_out_0;
+  unsigned uimm6_in_0;
+  uimm6_in_0 = *valp & 0x3f;
+  uimm6_out_0 = 0x4 + (((0) << 6) | uimm6_in_0);
+  *valp = uimm6_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm6_encode (uint32 *valp)
+{
+  unsigned uimm6_in_0;
+  unsigned uimm6_out_0;
+  uimm6_out_0 = *valp;
+  uimm6_in_0 = (uimm6_out_0 - 0x4) & 0x3f;
+  *valp = uimm6_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_ai4const_decode (uint32 *valp)
+{
+  unsigned ai4const_out_0;
+  unsigned ai4const_in_0;
+  ai4const_in_0 = *valp & 0xf;
+  ai4const_out_0 = CONST_TBL_ai4c_0[ai4const_in_0 & 0xf];
+  *valp = ai4const_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_ai4const_encode (uint32 *valp)
+{
+  unsigned ai4const_in_0;
+  unsigned ai4const_out_0;
+  ai4const_out_0 = *valp;
+  switch (ai4const_out_0)
+    {
+    case 0xffffffff: ai4const_in_0 = 0; break;
+    case 0x1: ai4const_in_0 = 0x1; break;
+    case 0x2: ai4const_in_0 = 0x2; break;
+    case 0x3: ai4const_in_0 = 0x3; break;
+    case 0x4: ai4const_in_0 = 0x4; break;
+    case 0x5: ai4const_in_0 = 0x5; break;
+    case 0x6: ai4const_in_0 = 0x6; break;
+    case 0x7: ai4const_in_0 = 0x7; break;
+    case 0x8: ai4const_in_0 = 0x8; break;
+    case 0x9: ai4const_in_0 = 0x9; break;
+    case 0xa: ai4const_in_0 = 0xa; break;
+    case 0xb: ai4const_in_0 = 0xb; break;
+    case 0xc: ai4const_in_0 = 0xc; break;
+    case 0xd: ai4const_in_0 = 0xd; break;
+    case 0xe: ai4const_in_0 = 0xe; break;
+    default: ai4const_in_0 = 0xf; break;
+    }
+  *valp = ai4const_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_b4const_decode (uint32 *valp)
+{
+  unsigned b4const_out_0;
+  unsigned b4const_in_0;
+  b4const_in_0 = *valp & 0xf;
+  b4const_out_0 = CONST_TBL_b4c_0[b4const_in_0 & 0xf];
+  *valp = b4const_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_b4const_encode (uint32 *valp)
+{
+  unsigned b4const_in_0;
+  unsigned b4const_out_0;
+  b4const_out_0 = *valp;
+  switch (b4const_out_0)
+    {
+    case 0xffffffff: b4const_in_0 = 0; break;
+    case 0x1: b4const_in_0 = 0x1; break;
+    case 0x2: b4const_in_0 = 0x2; break;
+    case 0x3: b4const_in_0 = 0x3; break;
+    case 0x4: b4const_in_0 = 0x4; break;
+    case 0x5: b4const_in_0 = 0x5; break;
+    case 0x6: b4const_in_0 = 0x6; break;
+    case 0x7: b4const_in_0 = 0x7; break;
+    case 0x8: b4const_in_0 = 0x8; break;
+    case 0xa: b4const_in_0 = 0x9; break;
+    case 0xc: b4const_in_0 = 0xa; break;
+    case 0x10: b4const_in_0 = 0xb; break;
+    case 0x20: b4const_in_0 = 0xc; break;
+    case 0x40: b4const_in_0 = 0xd; break;
+    case 0x80: b4const_in_0 = 0xe; break;
+    default: b4const_in_0 = 0xf; break;
+    }
+  *valp = b4const_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_b4constu_decode (uint32 *valp)
+{
+  unsigned b4constu_out_0;
+  unsigned b4constu_in_0;
+  b4constu_in_0 = *valp & 0xf;
+  b4constu_out_0 = CONST_TBL_b4cu_0[b4constu_in_0 & 0xf];
+  *valp = b4constu_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_b4constu_encode (uint32 *valp)
+{
+  unsigned b4constu_in_0;
+  unsigned b4constu_out_0;
+  b4constu_out_0 = *valp;
+  switch (b4constu_out_0)
+    {
+    case 0x8000: b4constu_in_0 = 0; break;
+    case 0x10000: b4constu_in_0 = 0x1; break;
+    case 0x2: b4constu_in_0 = 0x2; break;
+    case 0x3: b4constu_in_0 = 0x3; break;
+    case 0x4: b4constu_in_0 = 0x4; break;
+    case 0x5: b4constu_in_0 = 0x5; break;
+    case 0x6: b4constu_in_0 = 0x6; break;
+    case 0x7: b4constu_in_0 = 0x7; break;
+    case 0x8: b4constu_in_0 = 0x8; break;
+    case 0xa: b4constu_in_0 = 0x9; break;
+    case 0xc: b4constu_in_0 = 0xa; break;
+    case 0x10: b4constu_in_0 = 0xb; break;
+    case 0x20: b4constu_in_0 = 0xc; break;
+    case 0x40: b4constu_in_0 = 0xd; break;
+    case 0x80: b4constu_in_0 = 0xe; break;
+    default: b4constu_in_0 = 0xf; break;
+    }
+  *valp = b4constu_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8_decode (uint32 *valp)
+{
+  unsigned uimm8_out_0;
+  unsigned uimm8_in_0;
+  uimm8_in_0 = *valp & 0xff;
+  uimm8_out_0 = uimm8_in_0;
+  *valp = uimm8_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8_encode (uint32 *valp)
+{
+  unsigned uimm8_in_0;
+  unsigned uimm8_out_0;
+  uimm8_out_0 = *valp;
+  uimm8_in_0 = (uimm8_out_0 & 0xff);
+  *valp = uimm8_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8x2_decode (uint32 *valp)
+{
+  unsigned uimm8x2_out_0;
+  unsigned uimm8x2_in_0;
+  uimm8x2_in_0 = *valp & 0xff;
+  uimm8x2_out_0 = uimm8x2_in_0 << 1;
+  *valp = uimm8x2_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8x2_encode (uint32 *valp)
+{
+  unsigned uimm8x2_in_0;
+  unsigned uimm8x2_out_0;
+  uimm8x2_out_0 = *valp;
+  uimm8x2_in_0 = ((uimm8x2_out_0 >> 1) & 0xff);
+  *valp = uimm8x2_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8x4_decode (uint32 *valp)
+{
+  unsigned uimm8x4_out_0;
+  unsigned uimm8x4_in_0;
+  uimm8x4_in_0 = *valp & 0xff;
+  uimm8x4_out_0 = uimm8x4_in_0 << 2;
+  *valp = uimm8x4_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8x4_encode (uint32 *valp)
+{
+  unsigned uimm8x4_in_0;
+  unsigned uimm8x4_out_0;
+  uimm8x4_out_0 = *valp;
+  uimm8x4_in_0 = ((uimm8x4_out_0 >> 2) & 0xff);
+  *valp = uimm8x4_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm4x16_decode (uint32 *valp)
+{
+  unsigned uimm4x16_out_0;
+  unsigned uimm4x16_in_0;
+  uimm4x16_in_0 = *valp & 0xf;
+  uimm4x16_out_0 = uimm4x16_in_0 << 4;
+  *valp = uimm4x16_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm4x16_encode (uint32 *valp)
+{
+  unsigned uimm4x16_in_0;
+  unsigned uimm4x16_out_0;
+  uimm4x16_out_0 = *valp;
+  uimm4x16_in_0 = ((uimm4x16_out_0 >> 4) & 0xf);
+  *valp = uimm4x16_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm8_decode (uint32 *valp)
+{
+  unsigned simm8_out_0;
+  unsigned simm8_in_0;
+  simm8_in_0 = *valp & 0xff;
+  simm8_out_0 = ((int) simm8_in_0 << 24) >> 24;
+  *valp = simm8_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm8_encode (uint32 *valp)
+{
+  unsigned simm8_in_0;
+  unsigned simm8_out_0;
+  simm8_out_0 = *valp;
+  simm8_in_0 = (simm8_out_0 & 0xff);
+  *valp = simm8_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm8x256_decode (uint32 *valp)
+{
+  unsigned simm8x256_out_0;
+  unsigned simm8x256_in_0;
+  simm8x256_in_0 = *valp & 0xff;
+  simm8x256_out_0 = (((int) simm8x256_in_0 << 24) >> 24) << 8;
+  *valp = simm8x256_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm8x256_encode (uint32 *valp)
+{
+  unsigned simm8x256_in_0;
+  unsigned simm8x256_out_0;
+  simm8x256_out_0 = *valp;
+  simm8x256_in_0 = ((simm8x256_out_0 >> 8) & 0xff);
+  *valp = simm8x256_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm12b_decode (uint32 *valp)
+{
+  unsigned simm12b_out_0;
+  unsigned simm12b_in_0;
+  simm12b_in_0 = *valp & 0xfff;
+  simm12b_out_0 = ((int) simm12b_in_0 << 20) >> 20;
+  *valp = simm12b_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm12b_encode (uint32 *valp)
+{
+  unsigned simm12b_in_0;
+  unsigned simm12b_out_0;
+  simm12b_out_0 = *valp;
+  simm12b_in_0 = (simm12b_out_0 & 0xfff);
+  *valp = simm12b_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_msalp32_decode (uint32 *valp)
+{
+  unsigned msalp32_out_0;
+  unsigned msalp32_in_0;
+  msalp32_in_0 = *valp & 0x1f;
+  msalp32_out_0 = 0x20 - msalp32_in_0;
+  *valp = msalp32_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_msalp32_encode (uint32 *valp)
+{
+  unsigned msalp32_in_0;
+  unsigned msalp32_out_0;
+  msalp32_out_0 = *valp;
+  msalp32_in_0 = (0x20 - msalp32_out_0) & 0x1f;
+  *valp = msalp32_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_op2p1_decode (uint32 *valp)
+{
+  unsigned op2p1_out_0;
+  unsigned op2p1_in_0;
+  op2p1_in_0 = *valp & 0xf;
+  op2p1_out_0 = op2p1_in_0 + 0x1;
+  *valp = op2p1_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_op2p1_encode (uint32 *valp)
+{
+  unsigned op2p1_in_0;
+  unsigned op2p1_out_0;
+  op2p1_out_0 = *valp;
+  op2p1_in_0 = (op2p1_out_0 - 0x1) & 0xf;
+  *valp = op2p1_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_label8_decode (uint32 *valp)
+{
+  unsigned label8_out_0;
+  unsigned label8_in_0;
+  label8_in_0 = *valp & 0xff;
+  label8_out_0 = 0x4 + (((int) label8_in_0 << 24) >> 24);
+  *valp = label8_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_label8_encode (uint32 *valp)
+{
+  unsigned label8_in_0;
+  unsigned label8_out_0;
+  label8_out_0 = *valp;
+  label8_in_0 = (label8_out_0 - 0x4) & 0xff;
+  *valp = label8_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_ulabel8_decode (uint32 *valp)
+{
+  unsigned ulabel8_out_0;
+  unsigned ulabel8_in_0;
+  ulabel8_in_0 = *valp & 0xff;
+  ulabel8_out_0 = 0x4 + (((0) << 8) | ulabel8_in_0);
+  *valp = ulabel8_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_ulabel8_encode (uint32 *valp)
+{
+  unsigned ulabel8_in_0;
+  unsigned ulabel8_out_0;
+  ulabel8_out_0 = *valp;
+  ulabel8_in_0 = (ulabel8_out_0 - 0x4) & 0xff;
+  *valp = ulabel8_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_label12_decode (uint32 *valp)
+{
+  unsigned label12_out_0;
+  unsigned label12_in_0;
+  label12_in_0 = *valp & 0xfff;
+  label12_out_0 = 0x4 + (((int) label12_in_0 << 20) >> 20);
+  *valp = label12_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_label12_encode (uint32 *valp)
+{
+  unsigned label12_in_0;
+  unsigned label12_out_0;
+  label12_out_0 = *valp;
+  label12_in_0 = (label12_out_0 - 0x4) & 0xfff;
+  *valp = label12_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_soffset_decode (uint32 *valp)
+{
+  unsigned soffset_out_0;
+  unsigned soffset_in_0;
+  soffset_in_0 = *valp & 0x3ffff;
+  soffset_out_0 = 0x4 + (((int) soffset_in_0 << 14) >> 14);
+  *valp = soffset_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_soffset_encode (uint32 *valp)
+{
+  unsigned soffset_in_0;
+  unsigned soffset_out_0;
+  soffset_out_0 = *valp;
+  soffset_in_0 = (soffset_out_0 - 0x4) & 0x3ffff;
+  *valp = soffset_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm16x4_decode (uint32 *valp)
+{
+  unsigned uimm16x4_out_0;
+  unsigned uimm16x4_in_0;
+  uimm16x4_in_0 = *valp & 0xffff;
+  uimm16x4_out_0 = (((0xffff) << 16) | uimm16x4_in_0) << 2;
+  *valp = uimm16x4_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm16x4_encode (uint32 *valp)
+{
+  unsigned uimm16x4_in_0;
+  unsigned uimm16x4_out_0;
+  uimm16x4_out_0 = *valp;
+  uimm16x4_in_0 = (uimm16x4_out_0 >> 2) & 0xffff;
+  *valp = uimm16x4_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_bbi_decode (uint32 *valp)
+{
+  unsigned bbi_out_0;
+  unsigned bbi_in_0;
+  bbi_in_0 = *valp & 0x1f;
+  bbi_out_0 = (0 << 5) | bbi_in_0;
+  *valp = bbi_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_bbi_encode (uint32 *valp)
+{
+  unsigned bbi_in_0;
+  unsigned bbi_out_0;
+  bbi_out_0 = *valp;
+  bbi_in_0 = (bbi_out_0 & 0x1f);
+  *valp = bbi_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_s_decode (uint32 *valp)
+{
+  unsigned s_out_0;
+  unsigned s_in_0;
+  s_in_0 = *valp & 0xf;
+  s_out_0 = (0 << 4) | s_in_0;
+  *valp = s_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_s_encode (uint32 *valp)
+{
+  unsigned s_in_0;
+  unsigned s_out_0;
+  s_out_0 = *valp;
+  s_in_0 = (s_out_0 & 0xf);
+  *valp = s_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_immt_decode (uint32 *valp)
+{
+  unsigned immt_out_0;
+  unsigned immt_in_0;
+  immt_in_0 = *valp & 0xf;
+  immt_out_0 = immt_in_0;
+  *valp = immt_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_immt_encode (uint32 *valp)
+{
+  unsigned immt_in_0;
+  unsigned immt_out_0;
+  immt_out_0 = *valp;
+  immt_in_0 = immt_out_0 & 0xf;
+  *valp = immt_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_BR_decode (uint32 *valp ATTRIBUTE_UNUSED)
+{
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_BR_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 16);
   return error;
 }
 
 static int
-Operand_ar12_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_BR2_decode (uint32 *valp)
 {
+  *valp = *valp << 1;
   return 0;
 }
 
 static int
-Operand_ar12_encode (uint32 *valp)
+OperandSem_opnd_sem_BR2_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 16) || ((*valp & 1) != 0);
+  *valp = *valp >> 1;
   return error;
 }
 
 static int
-Operand_ars_entry_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_BR4_decode (uint32 *valp)
 {
+  *valp = *valp << 2;
   return 0;
 }
 
 static int
-Operand_ars_entry_encode (uint32 *valp)
+OperandSem_opnd_sem_BR4_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 16) || ((*valp & 3) != 0);
+  *valp = *valp >> 2;
   return error;
 }
 
 static int
-Operand_immrx4_decode (uint32 *valp)
+OperandSem_opnd_sem_BR8_decode (uint32 *valp)
 {
-  unsigned immrx4_0, r_0;
-  r_0 = *valp & 0xf;
-  immrx4_0 = (((0xfffffff) << 4) | r_0) << 2;
-  *valp = immrx4_0;
+  *valp = *valp << 3;
   return 0;
 }
 
 static int
-Operand_immrx4_encode (uint32 *valp)
+OperandSem_opnd_sem_BR8_encode (uint32 *valp)
 {
-  unsigned r_0, immrx4_0;
-  immrx4_0 = *valp;
-  r_0 = ((immrx4_0 >> 2) & 0xf);
-  *valp = r_0;
-  return 0;
+  int error;
+  error = (*valp >= 16) || ((*valp & 7) != 0);
+  *valp = *valp >> 3;
+  return error;
 }
 
 static int
-Operand_lsi4x4_decode (uint32 *valp)
+OperandSem_opnd_sem_BR16_decode (uint32 *valp)
 {
-  unsigned lsi4x4_0, r_0;
-  r_0 = *valp & 0xf;
-  lsi4x4_0 = r_0 << 2;
-  *valp = lsi4x4_0;
+  *valp = *valp << 4;
   return 0;
 }
 
 static int
-Operand_lsi4x4_encode (uint32 *valp)
+OperandSem_opnd_sem_BR16_encode (uint32 *valp)
 {
-  unsigned r_0, lsi4x4_0;
-  lsi4x4_0 = *valp;
-  r_0 = ((lsi4x4_0 >> 2) & 0xf);
-  *valp = r_0;
-  return 0;
+  int error;
+  error = (*valp >= 16) || ((*valp & 15) != 0);
+  *valp = *valp >> 4;
+  return error;
 }
 
 static int
-Operand_simm7_decode (uint32 *valp)
+OperandSem_opnd_sem_tp7_decode (uint32 *valp)
 {
-  unsigned simm7_0, imm7_0;
-  imm7_0 = *valp & 0x7f;
-  simm7_0 = ((((-((((imm7_0 >> 6) & 1)) & (((imm7_0 >> 5) & 1)))) & 0x1ffffff)) << 7) | imm7_0;
-  *valp = simm7_0;
+  unsigned tp7_out_0;
+  unsigned tp7_in_0;
+  tp7_in_0 = *valp & 0xf;
+  tp7_out_0 = tp7_in_0 + 0x7;
+  *valp = tp7_out_0;
   return 0;
 }
 
 static int
-Operand_simm7_encode (uint32 *valp)
+OperandSem_opnd_sem_tp7_encode (uint32 *valp)
 {
-  unsigned imm7_0, simm7_0;
-  simm7_0 = *valp;
-  imm7_0 = (simm7_0 & 0x7f);
-  *valp = imm7_0;
+  unsigned tp7_in_0;
+  unsigned tp7_out_0;
+  tp7_out_0 = *valp;
+  tp7_in_0 = (tp7_out_0 - 0x7) & 0xf;
+  *valp = tp7_in_0;
   return 0;
 }
 
 static int
-Operand_uimm6_decode (uint32 *valp)
+OperandSem_opnd_sem_xt_wbr15_label_decode (uint32 *valp)
 {
-  unsigned uimm6_0, imm6_0;
-  imm6_0 = *valp & 0x3f;
-  uimm6_0 = 0x4 + (((0) << 6) | imm6_0);
-  *valp = uimm6_0;
+  unsigned xt_wbr15_label_out_0;
+  unsigned xt_wbr15_label_in_0;
+  xt_wbr15_label_in_0 = *valp & 0x7fff;
+  xt_wbr15_label_out_0 = 0x4 + (((int) xt_wbr15_label_in_0 << 17) >> 17);
+  *valp = xt_wbr15_label_out_0;
   return 0;
 }
 
 static int
-Operand_uimm6_encode (uint32 *valp)
+OperandSem_opnd_sem_xt_wbr15_label_encode (uint32 *valp)
 {
-  unsigned imm6_0, uimm6_0;
-  uimm6_0 = *valp;
-  imm6_0 = (uimm6_0 - 0x4) & 0x3f;
-  *valp = imm6_0;
+  unsigned xt_wbr15_label_in_0;
+  unsigned xt_wbr15_label_out_0;
+  xt_wbr15_label_out_0 = *valp;
+  xt_wbr15_label_in_0 = (xt_wbr15_label_out_0 - 0x4) & 0x7fff;
+  *valp = xt_wbr15_label_in_0;
   return 0;
 }
 
 static int
-Operand_uimm6_ator (uint32 *valp, uint32 pc)
+OperandSem_opnd_sem_ae_samt32_decode (uint32 *valp)
 {
-  *valp -= pc;
+  unsigned ae_samt32_out_0;
+  unsigned ae_samt32_in_0;
+  ae_samt32_in_0 = *valp & 0x1f;
+  ae_samt32_out_0 = (0 << 5) | ae_samt32_in_0;
+  *valp = ae_samt32_out_0;
   return 0;
 }
 
 static int
-Operand_uimm6_rtoa (uint32 *valp, uint32 pc)
+OperandSem_opnd_sem_ae_samt32_encode (uint32 *valp)
 {
-  *valp += pc;
+  unsigned ae_samt32_in_0;
+  unsigned ae_samt32_out_0;
+  ae_samt32_out_0 = *valp;
+  ae_samt32_in_0 = (ae_samt32_out_0 & 0x1f);
+  *valp = ae_samt32_in_0;
   return 0;
 }
 
 static int
-Operand_ai4const_decode (uint32 *valp)
+OperandSem_opnd_sem_AE_PR_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
-  unsigned ai4const_0, t_0;
-  t_0 = *valp & 0xf;
-  ai4const_0 = CONST_TBL_ai4c_0[t_0 & 0xf];
-  *valp = ai4const_0;
   return 0;
 }
 
 static int
-Operand_ai4const_encode (uint32 *valp)
+OperandSem_opnd_sem_AE_PR_encode (uint32 *valp)
 {
-  unsigned t_0, ai4const_0;
-  ai4const_0 = *valp;
-  switch (ai4const_0)
-    {
-    case 0xffffffff: t_0 = 0; break;
-    case 0x1: t_0 = 0x1; break;
-    case 0x2: t_0 = 0x2; break;
-    case 0x3: t_0 = 0x3; break;
-    case 0x4: t_0 = 0x4; break;
-    case 0x5: t_0 = 0x5; break;
-    case 0x6: t_0 = 0x6; break;
-    case 0x7: t_0 = 0x7; break;
-    case 0x8: t_0 = 0x8; break;
-    case 0x9: t_0 = 0x9; break;
-    case 0xa: t_0 = 0xa; break;
-    case 0xb: t_0 = 0xb; break;
-    case 0xc: t_0 = 0xc; break;
-    case 0xd: t_0 = 0xd; break;
-    case 0xe: t_0 = 0xe; break;
-    default: t_0 = 0xf; break;
-    }
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_b4const_decode (uint32 *valp)
-{
-  unsigned b4const_0, r_0;
-  r_0 = *valp & 0xf;
-  b4const_0 = CONST_TBL_b4c_0[r_0 & 0xf];
-  *valp = b4const_0;
-  return 0;
-}
-
-static int
-Operand_b4const_encode (uint32 *valp)
-{
-  unsigned r_0, b4const_0;
-  b4const_0 = *valp;
-  switch (b4const_0)
-    {
-    case 0xffffffff: r_0 = 0; break;
-    case 0x1: r_0 = 0x1; break;
-    case 0x2: r_0 = 0x2; break;
-    case 0x3: r_0 = 0x3; break;
-    case 0x4: r_0 = 0x4; break;
-    case 0x5: r_0 = 0x5; break;
-    case 0x6: r_0 = 0x6; break;
-    case 0x7: r_0 = 0x7; break;
-    case 0x8: r_0 = 0x8; break;
-    case 0xa: r_0 = 0x9; break;
-    case 0xc: r_0 = 0xa; break;
-    case 0x10: r_0 = 0xb; break;
-    case 0x20: r_0 = 0xc; break;
-    case 0x40: r_0 = 0xd; break;
-    case 0x80: r_0 = 0xe; break;
-    default: r_0 = 0xf; break;
-    }
-  *valp = r_0;
-  return 0;
-}
-
-static int
-Operand_b4constu_decode (uint32 *valp)
-{
-  unsigned b4constu_0, r_0;
-  r_0 = *valp & 0xf;
-  b4constu_0 = CONST_TBL_b4cu_0[r_0 & 0xf];
-  *valp = b4constu_0;
-  return 0;
-}
-
-static int
-Operand_b4constu_encode (uint32 *valp)
-{
-  unsigned r_0, b4constu_0;
-  b4constu_0 = *valp;
-  switch (b4constu_0)
-    {
-    case 0x8000: r_0 = 0; break;
-    case 0x10000: r_0 = 0x1; break;
-    case 0x2: r_0 = 0x2; break;
-    case 0x3: r_0 = 0x3; break;
-    case 0x4: r_0 = 0x4; break;
-    case 0x5: r_0 = 0x5; break;
-    case 0x6: r_0 = 0x6; break;
-    case 0x7: r_0 = 0x7; break;
-    case 0x8: r_0 = 0x8; break;
-    case 0xa: r_0 = 0x9; break;
-    case 0xc: r_0 = 0xa; break;
-    case 0x10: r_0 = 0xb; break;
-    case 0x20: r_0 = 0xc; break;
-    case 0x40: r_0 = 0xd; break;
-    case 0x80: r_0 = 0xe; break;
-    default: r_0 = 0xf; break;
-    }
-  *valp = r_0;
-  return 0;
-}
-
-static int
-Operand_uimm8_decode (uint32 *valp)
-{
-  unsigned uimm8_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  uimm8_0 = imm8_0;
-  *valp = uimm8_0;
-  return 0;
-}
-
-static int
-Operand_uimm8_encode (uint32 *valp)
-{
-  unsigned imm8_0, uimm8_0;
-  uimm8_0 = *valp;
-  imm8_0 = (uimm8_0 & 0xff);
-  *valp = imm8_0;
-  return 0;
-}
-
-static int
-Operand_uimm8x2_decode (uint32 *valp)
-{
-  unsigned uimm8x2_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  uimm8x2_0 = imm8_0 << 1;
-  *valp = uimm8x2_0;
-  return 0;
-}
-
-static int
-Operand_uimm8x2_encode (uint32 *valp)
-{
-  unsigned imm8_0, uimm8x2_0;
-  uimm8x2_0 = *valp;
-  imm8_0 = ((uimm8x2_0 >> 1) & 0xff);
-  *valp = imm8_0;
-  return 0;
+  int error;
+  error = (*valp >= 8);
+  return error;
 }
 
 static int
-Operand_uimm8x4_decode (uint32 *valp)
+OperandSem_opnd_sem_AE_QR_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
-  unsigned uimm8x4_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  uimm8x4_0 = imm8_0 << 2;
-  *valp = uimm8x4_0;
   return 0;
 }
 
 static int
-Operand_uimm8x4_encode (uint32 *valp)
+OperandSem_opnd_sem_AE_QR_encode (uint32 *valp)
 {
-  unsigned imm8_0, uimm8x4_0;
-  uimm8x4_0 = *valp;
-  imm8_0 = ((uimm8x4_0 >> 2) & 0xff);
-  *valp = imm8_0;
-  return 0;
+  int error;
+  error = (*valp >= 4);
+  return error;
 }
 
 static int
-Operand_uimm4x16_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm16_decode (uint32 *valp)
 {
-  unsigned uimm4x16_0, op2_0;
-  op2_0 = *valp & 0xf;
-  uimm4x16_0 = op2_0 << 4;
-  *valp = uimm4x16_0;
+  unsigned ae_lsimm16_out_0;
+  unsigned ae_lsimm16_in_0;
+  ae_lsimm16_in_0 = *valp & 0xf;
+  ae_lsimm16_out_0 = (((int) ae_lsimm16_in_0 << 28) >> 28) << 1;
+  *valp = ae_lsimm16_out_0;
   return 0;
 }
 
 static int
-Operand_uimm4x16_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm16_encode (uint32 *valp)
 {
-  unsigned op2_0, uimm4x16_0;
-  uimm4x16_0 = *valp;
-  op2_0 = ((uimm4x16_0 >> 4) & 0xf);
-  *valp = op2_0;
+  unsigned ae_lsimm16_in_0;
+  unsigned ae_lsimm16_out_0;
+  ae_lsimm16_out_0 = *valp;
+  ae_lsimm16_in_0 = ((ae_lsimm16_out_0 >> 1) & 0xf);
+  *valp = ae_lsimm16_in_0;
   return 0;
 }
 
 static int
-Operand_simm8_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm32_decode (uint32 *valp)
 {
-  unsigned simm8_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  simm8_0 = ((int) imm8_0 << 24) >> 24;
-  *valp = simm8_0;
+  unsigned ae_lsimm32_out_0;
+  unsigned ae_lsimm32_in_0;
+  ae_lsimm32_in_0 = *valp & 0xf;
+  ae_lsimm32_out_0 = (((int) ae_lsimm32_in_0 << 28) >> 28) << 2;
+  *valp = ae_lsimm32_out_0;
   return 0;
 }
 
 static int
-Operand_simm8_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm32_encode (uint32 *valp)
 {
-  unsigned imm8_0, simm8_0;
-  simm8_0 = *valp;
-  imm8_0 = (simm8_0 & 0xff);
-  *valp = imm8_0;
+  unsigned ae_lsimm32_in_0;
+  unsigned ae_lsimm32_out_0;
+  ae_lsimm32_out_0 = *valp;
+  ae_lsimm32_in_0 = ((ae_lsimm32_out_0 >> 2) & 0xf);
+  *valp = ae_lsimm32_in_0;
   return 0;
 }
 
 static int
-Operand_simm8x256_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm64_decode (uint32 *valp)
 {
-  unsigned simm8x256_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  simm8x256_0 = (((int) imm8_0 << 24) >> 24) << 8;
-  *valp = simm8x256_0;
+  unsigned ae_lsimm64_out_0;
+  unsigned ae_lsimm64_in_0;
+  ae_lsimm64_in_0 = *valp & 0xf;
+  ae_lsimm64_out_0 = (((int) ae_lsimm64_in_0 << 28) >> 28) << 3;
+  *valp = ae_lsimm64_out_0;
   return 0;
 }
 
 static int
-Operand_simm8x256_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm64_encode (uint32 *valp)
 {
-  unsigned imm8_0, simm8x256_0;
-  simm8x256_0 = *valp;
-  imm8_0 = ((simm8x256_0 >> 8) & 0xff);
-  *valp = imm8_0;
+  unsigned ae_lsimm64_in_0;
+  unsigned ae_lsimm64_out_0;
+  ae_lsimm64_out_0 = *valp;
+  ae_lsimm64_in_0 = ((ae_lsimm64_out_0 >> 3) & 0xf);
+  *valp = ae_lsimm64_in_0;
   return 0;
 }
 
 static int
-Operand_simm12b_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_samt64_decode (uint32 *valp)
 {
-  unsigned simm12b_0, imm12b_0;
-  imm12b_0 = *valp & 0xfff;
-  simm12b_0 = ((int) imm12b_0 << 20) >> 20;
-  *valp = simm12b_0;
+  unsigned ae_samt64_out_0;
+  unsigned ae_samt64_in_0;
+  ae_samt64_in_0 = *valp & 0x3f;
+  ae_samt64_out_0 = (0 << 6) | ae_samt64_in_0;
+  *valp = ae_samt64_out_0;
   return 0;
 }
 
 static int
-Operand_simm12b_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_samt64_encode (uint32 *valp)
 {
-  unsigned imm12b_0, simm12b_0;
-  simm12b_0 = *valp;
-  imm12b_0 = (simm12b_0 & 0xfff);
-  *valp = imm12b_0;
+  unsigned ae_samt64_in_0;
+  unsigned ae_samt64_out_0;
+  ae_samt64_out_0 = *valp;
+  ae_samt64_in_0 = (ae_samt64_out_0 & 0x3f);
+  *valp = ae_samt64_in_0;
   return 0;
 }
 
 static int
-Operand_msalp32_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_ohba_decode (uint32 *valp)
 {
-  unsigned msalp32_0, sal_0;
-  sal_0 = *valp & 0x1f;
-  msalp32_0 = 0x20 - sal_0;
-  *valp = msalp32_0;
+  unsigned ae_ohba_out_0;
+  unsigned ae_ohba_in_0;
+  ae_ohba_in_0 = *valp & 0xf;
+  ae_ohba_out_0 = (0 << 5) | (((((ae_ohba_in_0 & 0xf))) == 0) << 4) | ((ae_ohba_in_0 & 0xf));
+  *valp = ae_ohba_out_0;
   return 0;
 }
 
 static int
-Operand_msalp32_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_ohba_encode (uint32 *valp)
 {
-  unsigned sal_0, msalp32_0;
-  msalp32_0 = *valp;
-  sal_0 = (0x20 - msalp32_0) & 0x1f;
-  *valp = sal_0;
+  unsigned ae_ohba_in_0;
+  unsigned ae_ohba_out_0;
+  ae_ohba_out_0 = *valp;
+  ae_ohba_in_0 = (ae_ohba_out_0 & 0xf);
+  *valp = ae_ohba_in_0;
   return 0;
 }
 
 static int
-Operand_op2p1_decode (uint32 *valp)
+Operand_soffsetx4_ator (uint32 *valp, uint32 pc)
 {
-  unsigned op2p1_0, op2_0;
-  op2_0 = *valp & 0xf;
-  op2p1_0 = op2_0 + 0x1;
-  *valp = op2p1_0;
+  *valp -= (pc & ~0x3);
   return 0;
 }
 
 static int
-Operand_op2p1_encode (uint32 *valp)
+Operand_soffsetx4_rtoa (uint32 *valp, uint32 pc)
 {
-  unsigned op2_0, op2p1_0;
-  op2p1_0 = *valp;
-  op2_0 = (op2p1_0 - 0x1) & 0xf;
-  *valp = op2_0;
+  *valp += (pc & ~0x3);
   return 0;
 }
 
 static int
-Operand_label8_decode (uint32 *valp)
+Operand_uimm6_ator (uint32 *valp, uint32 pc)
 {
-  unsigned label8_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  label8_0 = 0x4 + (((int) imm8_0 << 24) >> 24);
-  *valp = label8_0;
+  *valp -= pc;
   return 0;
 }
 
 static int
-Operand_label8_encode (uint32 *valp)
+Operand_uimm6_rtoa (uint32 *valp, uint32 pc)
 {
-  unsigned imm8_0, label8_0;
-  label8_0 = *valp;
-  imm8_0 = (label8_0 - 0x4) & 0xff;
-  *valp = imm8_0;
+  *valp += pc;
   return 0;
 }
 
@@ -9862,26 +10346,6 @@ Operand_label8_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_ulabel8_decode (uint32 *valp)
-{
-  unsigned ulabel8_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  ulabel8_0 = 0x4 + (((0) << 8) | imm8_0);
-  *valp = ulabel8_0;
-  return 0;
-}
-
-static int
-Operand_ulabel8_encode (uint32 *valp)
-{
-  unsigned imm8_0, ulabel8_0;
-  ulabel8_0 = *valp;
-  imm8_0 = (ulabel8_0 - 0x4) & 0xff;
-  *valp = imm8_0;
-  return 0;
-}
-
-static int
 Operand_ulabel8_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -9896,26 +10360,6 @@ Operand_ulabel8_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_label12_decode (uint32 *valp)
-{
-  unsigned label12_0, imm12_0;
-  imm12_0 = *valp & 0xfff;
-  label12_0 = 0x4 + (((int) imm12_0 << 20) >> 20);
-  *valp = label12_0;
-  return 0;
-}
-
-static int
-Operand_label12_encode (uint32 *valp)
-{
-  unsigned imm12_0, label12_0;
-  label12_0 = *valp;
-  imm12_0 = (label12_0 - 0x4) & 0xfff;
-  *valp = imm12_0;
-  return 0;
-}
-
-static int
 Operand_label12_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -9930,26 +10374,6 @@ Operand_label12_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_soffset_decode (uint32 *valp)
-{
-  unsigned soffset_0, offset_0;
-  offset_0 = *valp & 0x3ffff;
-  soffset_0 = 0x4 + (((int) offset_0 << 14) >> 14);
-  *valp = soffset_0;
-  return 0;
-}
-
-static int
-Operand_soffset_encode (uint32 *valp)
-{
-  unsigned offset_0, soffset_0;
-  soffset_0 = *valp;
-  offset_0 = (soffset_0 - 0x4) & 0x3ffff;
-  *valp = offset_0;
-  return 0;
-}
-
-static int
 Operand_soffset_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -9964,26 +10388,6 @@ Operand_soffset_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_uimm16x4_decode (uint32 *valp)
-{
-  unsigned uimm16x4_0, imm16_0;
-  imm16_0 = *valp & 0xffff;
-  uimm16x4_0 = (((0xffff) << 16) | imm16_0) << 2;
-  *valp = uimm16x4_0;
-  return 0;
-}
-
-static int
-Operand_uimm16x4_encode (uint32 *valp)
-{
-  unsigned imm16_0, uimm16x4_0;
-  uimm16x4_0 = *valp;
-  imm16_0 = (uimm16x4_0 >> 2) & 0xffff;
-  *valp = imm16_0;
-  return 0;
-}
-
-static int
 Operand_uimm16x4_ator (uint32 *valp, uint32 pc)
 {
   *valp -= ((pc + 3) & ~0x3);
@@ -9998,336 +10402,6 @@ Operand_uimm16x4_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_immt_decode (uint32 *valp)
-{
-  unsigned immt_0, t_0;
-  t_0 = *valp & 0xf;
-  immt_0 = t_0;
-  *valp = immt_0;
-  return 0;
-}
-
-static int
-Operand_immt_encode (uint32 *valp)
-{
-  unsigned t_0, immt_0;
-  immt_0 = *valp;
-  t_0 = immt_0 & 0xf;
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_imms_decode (uint32 *valp)
-{
-  unsigned imms_0, s_0;
-  s_0 = *valp & 0xf;
-  imms_0 = s_0;
-  *valp = imms_0;
-  return 0;
-}
-
-static int
-Operand_imms_encode (uint32 *valp)
-{
-  unsigned s_0, imms_0;
-  imms_0 = *valp;
-  s_0 = imms_0 & 0xf;
-  *valp = s_0;
-  return 0;
-}
-
-static int
-Operand_bt_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_bt_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0xf) != 0;
-  return error;
-}
-
-static int
-Operand_bs_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_bs_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0xf) != 0;
-  return error;
-}
-
-static int
-Operand_br_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_br_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0xf) != 0;
-  return error;
-}
-
-static int
-Operand_bt2_decode (uint32 *valp)
-{
-  *valp = *valp << 1;
-  return 0;
-}
-
-static int
-Operand_bt2_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x7 << 1)) != 0;
-  *valp = *valp >> 1;
-  return error;
-}
-
-static int
-Operand_bs2_decode (uint32 *valp)
-{
-  *valp = *valp << 1;
-  return 0;
-}
-
-static int
-Operand_bs2_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x7 << 1)) != 0;
-  *valp = *valp >> 1;
-  return error;
-}
-
-static int
-Operand_br2_decode (uint32 *valp)
-{
-  *valp = *valp << 1;
-  return 0;
-}
-
-static int
-Operand_br2_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x7 << 1)) != 0;
-  *valp = *valp >> 1;
-  return error;
-}
-
-static int
-Operand_bt4_decode (uint32 *valp)
-{
-  *valp = *valp << 2;
-  return 0;
-}
-
-static int
-Operand_bt4_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x3 << 2)) != 0;
-  *valp = *valp >> 2;
-  return error;
-}
-
-static int
-Operand_bs4_decode (uint32 *valp)
-{
-  *valp = *valp << 2;
-  return 0;
-}
-
-static int
-Operand_bs4_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x3 << 2)) != 0;
-  *valp = *valp >> 2;
-  return error;
-}
-
-static int
-Operand_br4_decode (uint32 *valp)
-{
-  *valp = *valp << 2;
-  return 0;
-}
-
-static int
-Operand_br4_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x3 << 2)) != 0;
-  *valp = *valp >> 2;
-  return error;
-}
-
-static int
-Operand_bt8_decode (uint32 *valp)
-{
-  *valp = *valp << 3;
-  return 0;
-}
-
-static int
-Operand_bt8_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x1 << 3)) != 0;
-  *valp = *valp >> 3;
-  return error;
-}
-
-static int
-Operand_bs8_decode (uint32 *valp)
-{
-  *valp = *valp << 3;
-  return 0;
-}
-
-static int
-Operand_bs8_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x1 << 3)) != 0;
-  *valp = *valp >> 3;
-  return error;
-}
-
-static int
-Operand_br8_decode (uint32 *valp)
-{
-  *valp = *valp << 3;
-  return 0;
-}
-
-static int
-Operand_br8_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x1 << 3)) != 0;
-  *valp = *valp >> 3;
-  return error;
-}
-
-static int
-Operand_bt16_decode (uint32 *valp)
-{
-  *valp = *valp << 4;
-  return 0;
-}
-
-static int
-Operand_bt16_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0 << 4)) != 0;
-  *valp = *valp >> 4;
-  return error;
-}
-
-static int
-Operand_bs16_decode (uint32 *valp)
-{
-  *valp = *valp << 4;
-  return 0;
-}
-
-static int
-Operand_bs16_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0 << 4)) != 0;
-  *valp = *valp >> 4;
-  return error;
-}
-
-static int
-Operand_br16_decode (uint32 *valp)
-{
-  *valp = *valp << 4;
-  return 0;
-}
-
-static int
-Operand_br16_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0 << 4)) != 0;
-  *valp = *valp >> 4;
-  return error;
-}
-
-static int
-Operand_brall_decode (uint32 *valp)
-{
-  *valp = *valp << 4;
-  return 0;
-}
-
-static int
-Operand_brall_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0 << 4)) != 0;
-  *valp = *valp >> 4;
-  return error;
-}
-
-static int
-Operand_tp7_decode (uint32 *valp)
-{
-  unsigned tp7_0, t_0;
-  t_0 = *valp & 0xf;
-  tp7_0 = t_0 + 0x7;
-  *valp = tp7_0;
-  return 0;
-}
-
-static int
-Operand_tp7_encode (uint32 *valp)
-{
-  unsigned t_0, tp7_0;
-  tp7_0 = *valp;
-  t_0 = (tp7_0 - 0x7) & 0xf;
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_xt_wbr15_label_decode (uint32 *valp)
-{
-  unsigned xt_wbr15_label_0, xt_wbr15_imm_0;
-  xt_wbr15_imm_0 = *valp & 0x7fff;
-  xt_wbr15_label_0 = 0x4 + (((int) xt_wbr15_imm_0 << 17) >> 17);
-  *valp = xt_wbr15_label_0;
-  return 0;
-}
-
-static int
-Operand_xt_wbr15_label_encode (uint32 *valp)
-{
-  unsigned xt_wbr15_imm_0, xt_wbr15_label_0;
-  xt_wbr15_label_0 = *valp;
-  xt_wbr15_imm_0 = (xt_wbr15_label_0 - 0x4) & 0x7fff;
-  *valp = xt_wbr15_imm_0;
-  return 0;
-}
-
-static int
 Operand_xt_wbr15_label_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -10342,26 +10416,6 @@ Operand_xt_wbr15_label_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_xt_wbr18_label_decode (uint32 *valp)
-{
-  unsigned xt_wbr18_label_0, xt_wbr18_imm_0;
-  xt_wbr18_imm_0 = *valp & 0x3ffff;
-  xt_wbr18_label_0 = 0x4 + (((int) xt_wbr18_imm_0 << 14) >> 14);
-  *valp = xt_wbr18_label_0;
-  return 0;
-}
-
-static int
-Operand_xt_wbr18_label_encode (uint32 *valp)
-{
-  unsigned xt_wbr18_imm_0, xt_wbr18_label_0;
-  xt_wbr18_label_0 = *valp;
-  xt_wbr18_imm_0 = (xt_wbr18_label_0 - 0x4) & 0x3ffff;
-  *valp = xt_wbr18_imm_0;
-  return 0;
-}
-
-static int
 Operand_xt_wbr18_label_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -10375,481 +10429,323 @@ Operand_xt_wbr18_label_rtoa (uint32 *valp, uint32 pc)
   return 0;
 }
 
-static int
-Operand_ae_samt32_decode (uint32 *valp)
-{
-  unsigned ae_samt32_0, ftsf14_0;
-  ftsf14_0 = *valp & 0x1f;
-  ae_samt32_0 = (0 << 5) | ftsf14_0;
-  *valp = ae_samt32_0;
-  return 0;
-}
-
-static int
-Operand_ae_samt32_encode (uint32 *valp)
-{
-  unsigned ftsf14_0, ae_samt32_0;
-  ae_samt32_0 = *valp;
-  ftsf14_0 = (ae_samt32_0 & 0x1f);
-  *valp = ftsf14_0;
-  return 0;
-}
-
-static int
-Operand_pr0_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_pr0_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x7) != 0;
-  return error;
-}
-
-static int
-Operand_qr0_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_qr0_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x3) != 0;
-  return error;
-}
-
-static int
-Operand_ae_lsimm16_decode (uint32 *valp)
-{
-  unsigned ae_lsimm16_0, t_0;
-  t_0 = *valp & 0xf;
-  ae_lsimm16_0 = (((int) t_0 << 28) >> 28) << 1;
-  *valp = ae_lsimm16_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm16_encode (uint32 *valp)
-{
-  unsigned t_0, ae_lsimm16_0;
-  ae_lsimm16_0 = *valp;
-  t_0 = ((ae_lsimm16_0 >> 1) & 0xf);
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm32_decode (uint32 *valp)
-{
-  unsigned ae_lsimm32_0, t_0;
-  t_0 = *valp & 0xf;
-  ae_lsimm32_0 = (((int) t_0 << 28) >> 28) << 2;
-  *valp = ae_lsimm32_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm32_encode (uint32 *valp)
-{
-  unsigned t_0, ae_lsimm32_0;
-  ae_lsimm32_0 = *valp;
-  t_0 = ((ae_lsimm32_0 >> 2) & 0xf);
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm64_decode (uint32 *valp)
-{
-  unsigned ae_lsimm64_0, t_0;
-  t_0 = *valp & 0xf;
-  ae_lsimm64_0 = (((int) t_0 << 28) >> 28) << 3;
-  *valp = ae_lsimm64_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm64_encode (uint32 *valp)
-{
-  unsigned t_0, ae_lsimm64_0;
-  ae_lsimm64_0 = *valp;
-  t_0 = ((ae_lsimm64_0 >> 3) & 0xf);
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_ae_samt64_decode (uint32 *valp)
-{
-  unsigned ae_samt64_0, ae_samt_s_t_0;
-  ae_samt_s_t_0 = *valp & 0x3f;
-  ae_samt64_0 = (0 << 6) | ae_samt_s_t_0;
-  *valp = ae_samt64_0;
-  return 0;
-}
-
-static int
-Operand_ae_samt64_encode (uint32 *valp)
-{
-  unsigned ae_samt_s_t_0, ae_samt64_0;
-  ae_samt64_0 = *valp;
-  ae_samt_s_t_0 = (ae_samt64_0 & 0x3f);
-  *valp = ae_samt_s_t_0;
-  return 0;
-}
-
-static int
-Operand_ae_ohba_decode (uint32 *valp)
-{
-  unsigned ae_ohba_0, op1_0;
-  op1_0 = *valp & 0xf;
-  ae_ohba_0 = (0 << 5) | (((((op1_0 & 0xf))) == 0) << 4) | ((op1_0 & 0xf));
-  *valp = ae_ohba_0;
-  return 0;
-}
-
-static int
-Operand_ae_ohba_encode (uint32 *valp)
-{
-  unsigned op1_0, ae_ohba_0;
-  ae_ohba_0 = *valp;
-  op1_0 = (ae_ohba_0 & 0xf);
-  *valp = op1_0;
-  return 0;
-}
-
-static int
-Operand_pr_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_pr_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x7) != 0;
-  return error;
-}
-
-static int
-Operand_qr0_rw_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_qr0_rw_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x3) != 0;
-  return error;
-}
-
-static int
-Operand_qr1_w_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_qr1_w_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x3) != 0;
-  return error;
-}
-
-static int
-Operand_ps_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_ps_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x7) != 0;
-  return error;
-}
-
 static xtensa_operand_internal operands[] = {
   { "soffsetx4", FIELD_offset, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_soffsetx4_encode, Operand_soffsetx4_decode,
+    OperandSem_opnd_sem_soffsetx4_encode, OperandSem_opnd_sem_soffsetx4_decode,
     Operand_soffsetx4_ator, Operand_soffsetx4_rtoa },
   { "uimm12x8", FIELD_imm12, -1, 0,
     0,
-    Operand_uimm12x8_encode, Operand_uimm12x8_decode,
+    OperandSem_opnd_sem_uimm12x8_encode, OperandSem_opnd_sem_uimm12x8_decode,
     0, 0 },
   { "simm4", FIELD_mn, -1, 0,
     0,
-    Operand_simm4_encode, Operand_simm4_decode,
+    OperandSem_opnd_sem_simm4_encode, OperandSem_opnd_sem_simm4_decode,
     0, 0 },
   { "arr", FIELD_r, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_arr_encode, Operand_arr_decode,
+    OperandSem_opnd_sem_AR_encode, OperandSem_opnd_sem_AR_decode,
     0, 0 },
   { "ars", FIELD_s, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_ars_encode, Operand_ars_decode,
+    OperandSem_opnd_sem_AR_encode, OperandSem_opnd_sem_AR_decode,
     0, 0 },
   { "*ars_invisible", FIELD_s, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ars_encode, Operand_ars_decode,
+    OperandSem_opnd_sem_AR_encode, OperandSem_opnd_sem_AR_decode,
     0, 0 },
   { "art", FIELD_t, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_art_encode, Operand_art_decode,
+    OperandSem_opnd_sem_AR_encode, OperandSem_opnd_sem_AR_decode,
     0, 0 },
   { "ar0", FIELD__ar0, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ar0_encode, Operand_ar0_decode,
+    OperandSem_opnd_sem_AR_0_encode, OperandSem_opnd_sem_AR_0_decode,
     0, 0 },
   { "ar4", FIELD__ar4, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ar4_encode, Operand_ar4_decode,
+    OperandSem_opnd_sem_AR_1_encode, OperandSem_opnd_sem_AR_1_decode,
     0, 0 },
   { "ar8", FIELD__ar8, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ar8_encode, Operand_ar8_decode,
+    OperandSem_opnd_sem_AR_2_encode, OperandSem_opnd_sem_AR_2_decode,
     0, 0 },
   { "ar12", FIELD__ar12, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ar12_encode, Operand_ar12_decode,
+    OperandSem_opnd_sem_AR_3_encode, OperandSem_opnd_sem_AR_3_decode,
     0, 0 },
   { "ars_entry", FIELD_s, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_ars_entry_encode, Operand_ars_entry_decode,
+    OperandSem_opnd_sem_AR_4_encode, OperandSem_opnd_sem_AR_4_decode,
     0, 0 },
   { "immrx4", FIELD_r, -1, 0,
     0,
-    Operand_immrx4_encode, Operand_immrx4_decode,
+    OperandSem_opnd_sem_immrx4_encode, OperandSem_opnd_sem_immrx4_decode,
     0, 0 },
   { "lsi4x4", FIELD_r, -1, 0,
     0,
-    Operand_lsi4x4_encode, Operand_lsi4x4_decode,
+    OperandSem_opnd_sem_lsi4x4_encode, OperandSem_opnd_sem_lsi4x4_decode,
     0, 0 },
   { "simm7", FIELD_imm7, -1, 0,
     0,
-    Operand_simm7_encode, Operand_simm7_decode,
+    OperandSem_opnd_sem_simm7_encode, OperandSem_opnd_sem_simm7_decode,
     0, 0 },
   { "uimm6", FIELD_imm6, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_uimm6_encode, Operand_uimm6_decode,
+    OperandSem_opnd_sem_uimm6_encode, OperandSem_opnd_sem_uimm6_decode,
     Operand_uimm6_ator, Operand_uimm6_rtoa },
   { "ai4const", FIELD_t, -1, 0,
     0,
-    Operand_ai4const_encode, Operand_ai4const_decode,
+    OperandSem_opnd_sem_ai4const_encode, OperandSem_opnd_sem_ai4const_decode,
     0, 0 },
   { "b4const", FIELD_r, -1, 0,
     0,
-    Operand_b4const_encode, Operand_b4const_decode,
+    OperandSem_opnd_sem_b4const_encode, OperandSem_opnd_sem_b4const_decode,
     0, 0 },
   { "b4constu", FIELD_r, -1, 0,
     0,
-    Operand_b4constu_encode, Operand_b4constu_decode,
+    OperandSem_opnd_sem_b4constu_encode, OperandSem_opnd_sem_b4constu_decode,
     0, 0 },
   { "uimm8", FIELD_imm8, -1, 0,
     0,
-    Operand_uimm8_encode, Operand_uimm8_decode,
+    OperandSem_opnd_sem_uimm8_encode, OperandSem_opnd_sem_uimm8_decode,
     0, 0 },
   { "uimm8x2", FIELD_imm8, -1, 0,
     0,
-    Operand_uimm8x2_encode, Operand_uimm8x2_decode,
+    OperandSem_opnd_sem_uimm8x2_encode, OperandSem_opnd_sem_uimm8x2_decode,
     0, 0 },
   { "uimm8x4", FIELD_imm8, -1, 0,
     0,
-    Operand_uimm8x4_encode, Operand_uimm8x4_decode,
+    OperandSem_opnd_sem_uimm8x4_encode, OperandSem_opnd_sem_uimm8x4_decode,
     0, 0 },
   { "uimm4x16", FIELD_op2, -1, 0,
     0,
-    Operand_uimm4x16_encode, Operand_uimm4x16_decode,
+    OperandSem_opnd_sem_uimm4x16_encode, OperandSem_opnd_sem_uimm4x16_decode,
+    0, 0 },
+  { "uimmrx4", FIELD_r, -1, 0,
+    0,
+    OperandSem_opnd_sem_lsi4x4_encode, OperandSem_opnd_sem_lsi4x4_decode,
     0, 0 },
   { "simm8", FIELD_imm8, -1, 0,
     0,
-    Operand_simm8_encode, Operand_simm8_decode,
+    OperandSem_opnd_sem_simm8_encode, OperandSem_opnd_sem_simm8_decode,
     0, 0 },
   { "simm8x256", FIELD_imm8, -1, 0,
     0,
-    Operand_simm8x256_encode, Operand_simm8x256_decode,
+    OperandSem_opnd_sem_simm8x256_encode, OperandSem_opnd_sem_simm8x256_decode,
     0, 0 },
   { "simm12b", FIELD_imm12b, -1, 0,
     0,
-    Operand_simm12b_encode, Operand_simm12b_decode,
+    OperandSem_opnd_sem_simm12b_encode, OperandSem_opnd_sem_simm12b_decode,
     0, 0 },
   { "msalp32", FIELD_sal, -1, 0,
     0,
-    Operand_msalp32_encode, Operand_msalp32_decode,
+    OperandSem_opnd_sem_msalp32_encode, OperandSem_opnd_sem_msalp32_decode,
     0, 0 },
   { "op2p1", FIELD_op2, -1, 0,
     0,
-    Operand_op2p1_encode, Operand_op2p1_decode,
+    OperandSem_opnd_sem_op2p1_encode, OperandSem_opnd_sem_op2p1_decode,
     0, 0 },
   { "label8", FIELD_imm8, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_label8_encode, Operand_label8_decode,
+    OperandSem_opnd_sem_label8_encode, OperandSem_opnd_sem_label8_decode,
     Operand_label8_ator, Operand_label8_rtoa },
   { "ulabel8", FIELD_imm8, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_ulabel8_encode, Operand_ulabel8_decode,
+    OperandSem_opnd_sem_ulabel8_encode, OperandSem_opnd_sem_ulabel8_decode,
     Operand_ulabel8_ator, Operand_ulabel8_rtoa },
   { "label12", FIELD_imm12, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_label12_encode, Operand_label12_decode,
+    OperandSem_opnd_sem_label12_encode, OperandSem_opnd_sem_label12_decode,
     Operand_label12_ator, Operand_label12_rtoa },
   { "soffset", FIELD_offset, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_soffset_encode, Operand_soffset_decode,
+    OperandSem_opnd_sem_soffset_encode, OperandSem_opnd_sem_soffset_decode,
     Operand_soffset_ator, Operand_soffset_rtoa },
   { "uimm16x4", FIELD_imm16, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_uimm16x4_encode, Operand_uimm16x4_decode,
+    OperandSem_opnd_sem_uimm16x4_encode, OperandSem_opnd_sem_uimm16x4_decode,
     Operand_uimm16x4_ator, Operand_uimm16x4_rtoa },
+  { "bbi", FIELD_bbi, -1, 0,
+    0,
+    OperandSem_opnd_sem_bbi_encode, OperandSem_opnd_sem_bbi_decode,
+    0, 0 },
+  { "sae", FIELD_sae, -1, 0,
+    0,
+    OperandSem_opnd_sem_bbi_encode, OperandSem_opnd_sem_bbi_decode,
+    0, 0 },
+  { "sas", FIELD_sas, -1, 0,
+    0,
+    OperandSem_opnd_sem_bbi_encode, OperandSem_opnd_sem_bbi_decode,
+    0, 0 },
+  { "sargt", FIELD_sargt, -1, 0,
+    0,
+    OperandSem_opnd_sem_bbi_encode, OperandSem_opnd_sem_bbi_decode,
+    0, 0 },
+  { "s", FIELD_s, -1, 0,
+    0,
+    OperandSem_opnd_sem_s_encode, OperandSem_opnd_sem_s_decode,
+    0, 0 },
   { "immt", FIELD_t, -1, 0,
     0,
-    Operand_immt_encode, Operand_immt_decode,
+    OperandSem_opnd_sem_immt_encode, OperandSem_opnd_sem_immt_decode,
     0, 0 },
   { "imms", FIELD_s, -1, 0,
     0,
-    Operand_imms_encode, Operand_imms_decode,
+    OperandSem_opnd_sem_immt_encode, OperandSem_opnd_sem_immt_decode,
     0, 0 },
   { "bt", FIELD_t, REGFILE_BR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt_encode, Operand_bt_decode,
+    OperandSem_opnd_sem_BR_encode, OperandSem_opnd_sem_BR_decode,
     0, 0 },
   { "bs", FIELD_s, REGFILE_BR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs_encode, Operand_bs_decode,
+    OperandSem_opnd_sem_BR_encode, OperandSem_opnd_sem_BR_decode,
     0, 0 },
   { "br", FIELD_r, REGFILE_BR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br_encode, Operand_br_decode,
+    OperandSem_opnd_sem_BR_encode, OperandSem_opnd_sem_BR_decode,
     0, 0 },
   { "bt2", FIELD_t2, REGFILE_BR, 2,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt2_encode, Operand_bt2_decode,
+    OperandSem_opnd_sem_BR2_encode, OperandSem_opnd_sem_BR2_decode,
     0, 0 },
   { "bs2", FIELD_s2, REGFILE_BR, 2,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs2_encode, Operand_bs2_decode,
+    OperandSem_opnd_sem_BR2_encode, OperandSem_opnd_sem_BR2_decode,
     0, 0 },
   { "br2", FIELD_r2, REGFILE_BR, 2,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br2_encode, Operand_br2_decode,
+    OperandSem_opnd_sem_BR2_encode, OperandSem_opnd_sem_BR2_decode,
     0, 0 },
   { "bt4", FIELD_t4, REGFILE_BR, 4,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt4_encode, Operand_bt4_decode,
+    OperandSem_opnd_sem_BR4_encode, OperandSem_opnd_sem_BR4_decode,
     0, 0 },
   { "bs4", FIELD_s4, REGFILE_BR, 4,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs4_encode, Operand_bs4_decode,
+    OperandSem_opnd_sem_BR4_encode, OperandSem_opnd_sem_BR4_decode,
     0, 0 },
   { "br4", FIELD_r4, REGFILE_BR, 4,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br4_encode, Operand_br4_decode,
+    OperandSem_opnd_sem_BR4_encode, OperandSem_opnd_sem_BR4_decode,
     0, 0 },
   { "bt8", FIELD_t8, REGFILE_BR, 8,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt8_encode, Operand_bt8_decode,
+    OperandSem_opnd_sem_BR8_encode, OperandSem_opnd_sem_BR8_decode,
     0, 0 },
   { "bs8", FIELD_s8, REGFILE_BR, 8,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs8_encode, Operand_bs8_decode,
+    OperandSem_opnd_sem_BR8_encode, OperandSem_opnd_sem_BR8_decode,
     0, 0 },
   { "br8", FIELD_r8, REGFILE_BR, 8,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br8_encode, Operand_br8_decode,
+    OperandSem_opnd_sem_BR8_encode, OperandSem_opnd_sem_BR8_decode,
     0, 0 },
   { "bt16", FIELD__bt16, REGFILE_BR, 16,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt16_encode, Operand_bt16_decode,
+    OperandSem_opnd_sem_BR16_encode, OperandSem_opnd_sem_BR16_decode,
     0, 0 },
   { "bs16", FIELD__bs16, REGFILE_BR, 16,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs16_encode, Operand_bs16_decode,
+    OperandSem_opnd_sem_BR16_encode, OperandSem_opnd_sem_BR16_decode,
     0, 0 },
   { "br16", FIELD__br16, REGFILE_BR, 16,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br16_encode, Operand_br16_decode,
+    OperandSem_opnd_sem_BR16_encode, OperandSem_opnd_sem_BR16_decode,
     0, 0 },
   { "brall", FIELD__brall, REGFILE_BR, 16,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_brall_encode, Operand_brall_decode,
+    OperandSem_opnd_sem_BR16_encode, OperandSem_opnd_sem_BR16_decode,
     0, 0 },
   { "tp7", FIELD_t, -1, 0,
     0,
-    Operand_tp7_encode, Operand_tp7_decode,
+    OperandSem_opnd_sem_tp7_encode, OperandSem_opnd_sem_tp7_decode,
     0, 0 },
   { "xt_wbr15_label", FIELD_xt_wbr15_imm, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_xt_wbr15_label_encode, Operand_xt_wbr15_label_decode,
+    OperandSem_opnd_sem_xt_wbr15_label_encode, OperandSem_opnd_sem_xt_wbr15_label_decode,
     Operand_xt_wbr15_label_ator, Operand_xt_wbr15_label_rtoa },
   { "xt_wbr18_label", FIELD_xt_wbr18_imm, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_xt_wbr18_label_encode, Operand_xt_wbr18_label_decode,
+    OperandSem_opnd_sem_soffset_encode, OperandSem_opnd_sem_soffset_decode,
     Operand_xt_wbr18_label_ator, Operand_xt_wbr18_label_rtoa },
   { "ae_samt32", FIELD_ftsf14, -1, 0,
     0,
-    Operand_ae_samt32_encode, Operand_ae_samt32_decode,
+    OperandSem_opnd_sem_ae_samt32_encode, OperandSem_opnd_sem_ae_samt32_decode,
     0, 0 },
   { "pr0", FIELD_ftsf12, REGFILE_AE_PR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_pr0_encode, Operand_pr0_decode,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
     0, 0 },
   { "qr0", FIELD_ftsf13, REGFILE_AE_QR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_qr0_encode, Operand_qr0_decode,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
+    0, 0 },
+  { "mac_qr0", FIELD_ftsf13, REGFILE_AE_QR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
     0, 0 },
   { "ae_lsimm16", FIELD_t, -1, 0,
     0,
-    Operand_ae_lsimm16_encode, Operand_ae_lsimm16_decode,
+    OperandSem_opnd_sem_ae_lsimm16_encode, OperandSem_opnd_sem_ae_lsimm16_decode,
     0, 0 },
   { "ae_lsimm32", FIELD_t, -1, 0,
     0,
-    Operand_ae_lsimm32_encode, Operand_ae_lsimm32_decode,
+    OperandSem_opnd_sem_ae_lsimm32_encode, OperandSem_opnd_sem_ae_lsimm32_decode,
     0, 0 },
   { "ae_lsimm64", FIELD_t, -1, 0,
     0,
-    Operand_ae_lsimm64_encode, Operand_ae_lsimm64_decode,
+    OperandSem_opnd_sem_ae_lsimm64_encode, OperandSem_opnd_sem_ae_lsimm64_decode,
     0, 0 },
   { "ae_samt64", FIELD_ae_samt_s_t, -1, 0,
     0,
-    Operand_ae_samt64_encode, Operand_ae_samt64_decode,
+    OperandSem_opnd_sem_ae_samt64_encode, OperandSem_opnd_sem_ae_samt64_decode,
     0, 0 },
-  { "ae_ohba", FIELD_op1, -1, 0,
+  { "ae_ohba", FIELD_ae_fld_ohba, -1, 0,
     0,
-    Operand_ae_ohba_encode, Operand_ae_ohba_decode,
+    OperandSem_opnd_sem_ae_ohba_encode, OperandSem_opnd_sem_ae_ohba_decode,
+    0, 0 },
+  { "ae_ohba2", FIELD_ae_fld_ohba2, -1, 0,
+    0,
+    OperandSem_opnd_sem_ae_ohba_encode, OperandSem_opnd_sem_ae_ohba_decode,
     0, 0 },
   { "pr", FIELD_ae_r20, REGFILE_AE_PR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_pr_encode, Operand_pr_decode,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
+    0, 0 },
+  { "cvt_pr", FIELD_ae_r20, REGFILE_AE_PR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
     0, 0 },
   { "qr0_rw", FIELD_ae_r10, REGFILE_AE_QR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_qr0_rw_encode, Operand_qr0_rw_decode,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
+    0, 0 },
+  { "mac_qr0_rw", FIELD_ae_r10, REGFILE_AE_QR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
     0, 0 },
   { "qr1_w", FIELD_ae_r32, REGFILE_AE_QR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_qr1_w_encode, Operand_qr1_w_decode,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
+    0, 0 },
+  { "mac_qr1_w", FIELD_ae_r32, REGFILE_AE_QR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
     0, 0 },
   { "ps", FIELD_ae_s20, REGFILE_AE_PR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_ps_encode, Operand_ps_decode,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
+    0, 0 },
+  { "alupppb_ps", FIELD_ae_s20, REGFILE_AE_PR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
     0, 0 },
   { "t", FIELD_t, -1, 0, 0, 0, 0, 0, 0 },
   { "bbi4", FIELD_bbi4, -1, 0, 0, 0, 0, 0, 0 },
-  { "bbi", FIELD_bbi, -1, 0, 0, 0, 0, 0, 0 },
   { "imm12", FIELD_imm12, -1, 0, 0, 0, 0, 0, 0 },
   { "imm8", FIELD_imm8, -1, 0, 0, 0, 0, 0, 0 },
-  { "s", FIELD_s, -1, 0, 0, 0, 0, 0, 0 },
   { "imm12b", FIELD_imm12b, -1, 0, 0, 0, 0, 0, 0 },
   { "imm16", FIELD_imm16, -1, 0, 0, 0, 0, 0, 0 },


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:53:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:53:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPkB-0001TJ-Qm; Tue, 14 Apr 2020 17:53:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPkA-0001TB-Gf
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:06 +0000
X-Inumbo-ID: cb1005b4-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cb1005b4-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:53:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/sY3WMjOojPeumSe1UQmMubSaRA79zlFU8ZhAS1ezUo=; b=rULwBTg+H30yVNc+9TYLmvxNfM
 ri5gFduGdfJ2ehCfx4cbxEsM0s4pdLWy1j6fUgJM6kxqnOO61xoDeENLk7765BVZPXH9C6HnM4Fyl
 OGUgnwJ/ezKkGUMCQm8TgW7axrWipcfFM5WcvRp/ugqdZJiw3W6kER6lfMuwOOwwNtQU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPk9-00086d-GY
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPk9-0000pY-FT
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] scsi: lsi: exit infinite loop while executing
 script (CVE-2019-12068)
Message-Id: <E1jOPk9-0000pY-FT@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:53:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 051c9b3cbcb4beb42a6ed017c2146ec3e7a754fb
Author:     Paolo Bonzini <pbonzini@redhat.com>
AuthorDate: Wed Aug 14 17:35:21 2019 +0530
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 5 13:39:31 2019 -0600

    scsi: lsi: exit infinite loop while executing script (CVE-2019-12068)
    
    When executing script in lsi_execute_script(), the LSI scsi adapter
    emulator advances 's->dsp' index to read next opcode. This can lead
    to an infinite loop if the next opcode is empty. Move the existing
    loop exit after 10k iterations so that it covers no-op opcodes as
    well.
    
    Reported-by: Bugs SysSec <bugs-syssec@rub.de>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    (cherry picked from commit de594e47659029316bbf9391efb79da0a1a08e08)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/scsi/lsi53c895a.c | 41 +++++++++++++++++++++++++++--------------
 1 file changed, 27 insertions(+), 14 deletions(-)

diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 10468c1ec1..72f7b59ab5 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -185,6 +185,9 @@ static const char *names[] = {
 /* Flag set if this is a tagged command.  */
 #define LSI_TAG_VALID     (1 << 16)
 
+/* Maximum instructions to process. */
+#define LSI_MAX_INSN    10000
+
 typedef struct lsi_request {
     SCSIRequest *req;
     uint32_t tag;
@@ -1132,7 +1135,21 @@ static void lsi_execute_script(LSIState *s)
 
     s->istat1 |= LSI_ISTAT1_SRUN;
 again:
-    insn_processed++;
+    if (++insn_processed > LSI_MAX_INSN) {
+        /* Some windows drivers make the device spin waiting for a memory
+           location to change.  If we have been executed a lot of code then
+           assume this is the case and force an unexpected device disconnect.
+           This is apparently sufficient to beat the drivers into submission.
+         */
+        if (!(s->sien0 & LSI_SIST0_UDC)) {
+            qemu_log_mask(LOG_GUEST_ERROR,
+                          "lsi_scsi: inf. loop with UDC masked");
+        }
+        lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);
+        lsi_disconnect(s);
+        trace_lsi_execute_script_stop();
+        return;
+    }
     insn = read_dword(s, s->dsp);
     if (!insn) {
         /* If we receive an empty opcode increment the DSP by 4 bytes
@@ -1569,19 +1586,7 @@ again:
             }
         }
     }
-    if (insn_processed > 10000 && s->waiting == LSI_NOWAIT) {
-        /* Some windows drivers make the device spin waiting for a memory
-           location to change.  If we have been executed a lot of code then
-           assume this is the case and force an unexpected device disconnect.
-           This is apparently sufficient to beat the drivers into submission.
-         */
-        if (!(s->sien0 & LSI_SIST0_UDC)) {
-            qemu_log_mask(LOG_GUEST_ERROR,
-                          "lsi_scsi: inf. loop with UDC masked");
-        }
-        lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);
-        lsi_disconnect(s);
-    } else if (s->istat1 & LSI_ISTAT1_SRUN && s->waiting == LSI_NOWAIT) {
+    if (s->istat1 & LSI_ISTAT1_SRUN && s->waiting == LSI_NOWAIT) {
         if (s->dcntl & LSI_DCNTL_SSM) {
             lsi_script_dma_interrupt(s, LSI_DSTAT_SSI);
         } else {
@@ -1969,6 +1974,10 @@ static void lsi_reg_writeb(LSIState *s, int offset, uint8_t val)
     case 0x2f: /* DSP[24:31] */
         s->dsp &= 0x00ffffff;
         s->dsp |= val << 24;
+        /*
+         * FIXME: if s->waiting != LSI_NOWAIT, this will only execute one
+         * instruction.  Is this correct?
+         */
         if ((s->dmode & LSI_DMODE_MAN) == 0
             && (s->istat1 & LSI_ISTAT1_SRUN) == 0)
             lsi_execute_script(s);
@@ -1987,6 +1996,10 @@ static void lsi_reg_writeb(LSIState *s, int offset, uint8_t val)
         break;
     case 0x3b: /* DCNTL */
         s->dcntl = val & ~(LSI_DCNTL_PFF | LSI_DCNTL_STD);
+        /*
+         * FIXME: if s->waiting != LSI_NOWAIT, this will only execute one
+         * instruction.  Is this correct?
+         */
         if ((val & LSI_DCNTL_STD) && (s->istat1 & LSI_ISTAT1_SRUN) == 0)
             lsi_execute_script(s);
         break;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:53:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:53:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPkK-0001UI-Sb; Tue, 14 Apr 2020 17:53:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPkK-0001UA-BG
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:16 +0000
X-Inumbo-ID: d111c7f4-7e78-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d111c7f4-7e78-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 17:53:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XkkWzjfVEIVXdUOqsxGtITfFoKbkNFsbAZoOIokhJQo=; b=CsCD7aeHo284YJ7B4pT5TNwt94
 R+uvdWBD+ZIG9r+gROnTDxQpQJw+LWdR7FNsl6hiemYVH9O/ABZcytVv4KeEF08hzkfZAjRbDoyOH
 xDQQWJjz0YDVR7CKLKv465CFw9jXduzVJAnVhyM3xfADF2Ax2/qRZxEQ8lskjji/UHPo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkJ-00086t-J2
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkJ-0000qV-IC
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] virtio-blk: Cancel the pending BH when the
 dataplane is reset
Message-Id: <E1jOPkJ-0000qV-IC@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:53:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 01be50603be4f17af4318a7a3fe58dcc6dab1b31
Author:     Philippe Mathieu-Daudé <philmd@redhat.com>
AuthorDate: Fri Aug 16 19:15:03 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 5 13:43:41 2019 -0600

    virtio-blk: Cancel the pending BH when the dataplane is reset
    
    When 'system_reset' is called, the main loop clear the memory
    region cache before the BH has a chance to execute. Later when
    the deferred function is called, some assumptions that were
    made when scheduling them are no longer true when they actually
    execute.
    
    This is what happens using a virtio-blk device (fresh RHEL7.8 install):
    
     $ (sleep 12.3; echo system_reset; sleep 12.3; echo system_reset; sleep 1; echo q) \
       | qemu-system-x86_64 -m 4G -smp 8 -boot menu=on \
         -device virtio-blk-pci,id=image1,drive=drive_image1 \
         -drive file=/var/lib/libvirt/images/rhel78.qcow2,if=none,id=drive_image1,format=qcow2,cache=none \
         -device virtio-net-pci,netdev=net0,id=nic0,mac=52:54:00:c4:e7:84 \
         -netdev tap,id=net0,script=/bin/true,downscript=/bin/true,vhost=on \
         -monitor stdio -serial null -nographic
      (qemu) system_reset
      (qemu) system_reset
      (qemu) qemu-system-x86_64: hw/virtio/virtio.c:225: vring_get_region_caches: Assertion `caches != NULL' failed.
      Aborted
    
      (gdb) bt
      Thread 1 (Thread 0x7f109c17b680 (LWP 10939)):
      #0  0x00005604083296d1 in vring_get_region_caches (vq=0x56040a24bdd0) at hw/virtio/virtio.c:227
      #1  0x000056040832972b in vring_avail_flags (vq=0x56040a24bdd0) at hw/virtio/virtio.c:235
      #2  0x000056040832d13d in virtio_should_notify (vdev=0x56040a240630, vq=0x56040a24bdd0) at hw/virtio/virtio.c:1648
      #3  0x000056040832d1f8 in virtio_notify_irqfd (vdev=0x56040a240630, vq=0x56040a24bdd0) at hw/virtio/virtio.c:1662
      #4  0x00005604082d213d in notify_guest_bh (opaque=0x56040a243ec0) at hw/block/dataplane/virtio-blk.c:75
      #5  0x000056040883dc35 in aio_bh_call (bh=0x56040a243f10) at util/async.c:90
      #6  0x000056040883dccd in aio_bh_poll (ctx=0x560409161980) at util/async.c:118
      #7  0x0000560408842af7 in aio_dispatch (ctx=0x560409161980) at util/aio-posix.c:460
      #8  0x000056040883e068 in aio_ctx_dispatch (source=0x560409161980, callback=0x0, user_data=0x0) at util/async.c:261
      #9  0x00007f10a8fca06d in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
      #10 0x0000560408841445 in glib_pollfds_poll () at util/main-loop.c:215
      #11 0x00005604088414bf in os_host_main_loop_wait (timeout=0) at util/main-loop.c:238
      #12 0x00005604088415c4 in main_loop_wait (nonblocking=0) at util/main-loop.c:514
      #13 0x0000560408416b1e in main_loop () at vl.c:1923
      #14 0x000056040841e0e8 in main (argc=20, argv=0x7ffc2c3f9c58, envp=0x7ffc2c3f9d00) at vl.c:4578
    
    Fix this by cancelling the BH when the virtio dataplane is stopped.
    
    [This is version of the patch was modified as discussed with Philippe on
    the mailing list thread.
    --Stefan]
    
    Reported-by: Yihuang Yu <yihyu@redhat.com>
    Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
    Fixes: https://bugs.launchpad.net/qemu/+bug/1839428
    Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Message-Id: <20190816171503.24761-1-philmd@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    (cherry picked from commit ebb6ff25cd888a52a64a9adc3692541c6d1d9a42)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/block/dataplane/virtio-blk.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index 158c78f852..5fea76df85 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -297,6 +297,9 @@ void virtio_blk_data_plane_stop(VirtIODevice *vdev)
         virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i);
     }
 
+    qemu_bh_cancel(s->bh);
+    notify_guest_bh(s); /* final chance to notify guest */
+
     /* Clean up guest notifier (irq) */
     k->set_guest_notifiers(qbus->parent, nvqs, false);
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:53:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:53:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPkV-0001VW-Ud; Tue, 14 Apr 2020 17:53:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPkU-0001VM-SH
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:26 +0000
X-Inumbo-ID: d71454a0-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d71454a0-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:53:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kJESgemTqmjRP/Xi+XgBhfeL364p6hsEKOmARhxrl0g=; b=RZxZmwKdUrVaXjdSyf/zHNCWK8
 zSlbw9vN+APD2e6oLIxIcc9MbKi6vuvgYncHxnlW4mPt8Yga8nucUMk1WWBmspzCHxJrpEUOwJmjq
 jyjV2n/UZnA4PQDwsDxqot8VzTPrAiC91Gzw8kDgoo1DJYRfcGjE7GWXUTm0rGMrM9Ik=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkT-000874-Li
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkT-0000r2-Ko
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] qcow2: Fix QCOW2_COMPRESSED_SECTOR_MASK
Message-Id: <E1jOPkT-0000r2-Ko@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:53:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 405deba14f6b61b9c557484b46e863308c8cf373
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Oct 28 17:18:40 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 11 15:40:36 2019 -0600

    qcow2: Fix QCOW2_COMPRESSED_SECTOR_MASK
    
    Masks for L2 table entries should have 64 bit.
    
    Fixes: b6c246942b14d3e0dec46a6c5868ed84e7dbea19
    Buglink: https://bugs.launchpad.net/qemu/+bug/1850000
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191028161841.1198-2-mreitz@redhat.com
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 24552feb6ae2f615b76c2b95394af43901f75046)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/qcow2.h b/block/qcow2.h
index fc1b0d3c1e..359197f89f 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -77,7 +77,7 @@
 
 /* Defined in the qcow2 spec (compressed cluster descriptor) */
 #define QCOW2_COMPRESSED_SECTOR_SIZE 512U
-#define QCOW2_COMPRESSED_SECTOR_MASK (~(QCOW2_COMPRESSED_SECTOR_SIZE - 1))
+#define QCOW2_COMPRESSED_SECTOR_MASK (~(QCOW2_COMPRESSED_SECTOR_SIZE - 1ULL))
 
 /* Must be at least 2 to cover COW */
 #define MIN_L2_CACHE_SIZE 2 /* cache entries */
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:53:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:53:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPkg-0001Wv-0g; Tue, 14 Apr 2020 17:53:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPke-0001WJ-OC
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:36 +0000
X-Inumbo-ID: dbffc7d9-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dbffc7d9-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:53:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0z57+n0RO1I4VAv20Af8OoWyl0QreTalpHyMmhKY4Zw=; b=TT10YCmlI29Pw8n8Y26hV9Bbhz
 Fpm0BA752uCyYZF+Px6RAoXckEqjmFqLXo31kIwBtmKHRPVsiA8hIAUciabjbuMXGMuzt91hXtqXN
 IkVzyWWZAn1Z++oMS4WOQcAKBEydhUr/0iO2aCVPvK4AK/MiD/k4vfES+r3qx4jXkKFo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkd-00087D-OW
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkd-0000rY-NS
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Add test for 4G+ compressed qcow2
 write
Message-Id: <E1jOPkd-0000rY-NS@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:53:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 15f5e8c3675b9eb16e2413d56017c047533407bb
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Oct 28 17:18:41 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:35:07 2019 -0600

    iotests: Add test for 4G+ compressed qcow2 write
    
    Test what qemu-img check says about an image after one has written
    compressed data to an offset above 4 GB.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191028161841.1198-3-mreitz@redhat.com
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit b7cd2c11f76d27930f53d3cf26d7b695c78d613b)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/272     | 79 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/272.out | 10 ++++++
 tests/qemu-iotests/group   |  1 +
 3 files changed, 90 insertions(+)

diff --git a/tests/qemu-iotests/272 b/tests/qemu-iotests/272
new file mode 100755
index 0000000000..c2f782d47b
--- /dev/null
+++ b/tests/qemu-iotests/272
@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+#
+# Test compressed write to a qcow2 image at an offset above 4 GB
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+seq=$(basename "$0")
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# This is a qcow2 regression test
+_supported_fmt qcow2
+_supported_proto file
+
+# External data files do not support compression;
+# We need an exact cluster size (2M) and refcount width (2) so we can
+# get this test quickly over with; and this in turn require
+# compat=1.1
+_unsupported_imgopts data_file cluster_size refcount_bits 'compat=0.10'
+
+# The idea is: Create an empty file, mark the first 4 GB as used, then
+# do a compressed write that thus must be put beyond 4 GB.
+# (This used to fail because the compressed sector mask was just a
+# 32 bit mask, so qemu-img check will count a cluster before 4 GB as
+# referenced twice.)
+
+# We would like to use refcount_bits=1 here, but then qemu-img check
+# will throw an error when trying to count a cluster as referenced
+# twice.
+_make_test_img -o cluster_size=2M,refcount_bits=2 64M
+
+reft_offs=$(peek_file_be "$TEST_IMG" 48 8)
+refb_offs=$(peek_file_be "$TEST_IMG" $reft_offs 8)
+
+# We want to cover 4 GB, those are 2048 clusters, equivalent to
+# 4096 bit = 512 B.
+truncate -s 4G "$TEST_IMG"
+for ((in_refb_offs = 0; in_refb_offs < 512; in_refb_offs += 8)); do
+    poke_file "$TEST_IMG" $((refb_offs + in_refb_offs)) \
+        '\x55\x55\x55\x55\x55\x55\x55\x55'
+done
+
+$QEMU_IO -c 'write -c -P 42 0 2M' "$TEST_IMG" | _filter_qemu_io
+
+echo
+echo '--- Check ---'
+
+# This should only print the leaked clusters in the first 4 GB
+_check_test_img | grep -v '^Leaked cluster '
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/272.out b/tests/qemu-iotests/272.out
new file mode 100644
index 0000000000..35698b0e73
--- /dev/null
+++ b/tests/qemu-iotests/272.out
@@ -0,0 +1,10 @@
+QA output created by 272
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
+wrote 2097152/2097152 bytes at offset 0
+2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+--- Check ---
+
+2044 leaked clusters were found on the image.
+This means waste of disk space, but no harm to data.
+*** done
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 7629e8ea17..3070d160d5 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -275,3 +275,4 @@
 266 rw quick
 267 rw auto quick snapshot
 270 rw backing quick
+272 rw
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:53:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:53:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPkq-0001Y8-2r; Tue, 14 Apr 2020 17:53:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPko-0001Xv-HB
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:46 +0000
X-Inumbo-ID: e3197ff0-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e3197ff0-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:53:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=WCuvHYM5d6I+iRmHEwbnlRcZ8LdXWIgYXKQhYOebDGM=; b=bmEGuTVKwPkPvhBFxCaVHRw6sp
 NyMZWocthpQHCVm7heriHm6goAMsC4K55bQ6Pbs0oc+SnYZ7Gd9Gq5vXkv+xbzb+t7L+RAVAJJvF3
 g2oez/thHvmoePGCrtvPO3Ke57n0Rxq1mkkfCi9VehYJmtzaLxmR0SG2JMjZNRIsxMLM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkn-00087M-RE
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkn-0000s8-QJ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] iotests: Add peek_file* functions
Message-Id: <E1jOPkn-0000s8-QJ@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:53:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b156178553341ab24dcc14efdb7b681375099462
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Oct 11 17:28:13 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:33 2019 -0600

    iotests: Add peek_file* functions
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Message-id: 20191011152814.14791-16-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit fc8ba423ca6b37bee56ec9dc339b44043c39553d)
    *prereq for 570542ec
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/common.rc | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
index 5502c3da2f..78decfd5d5 100644
--- a/tests/qemu-iotests/common.rc
+++ b/tests/qemu-iotests/common.rc
@@ -53,6 +53,26 @@ poke_file()
     printf "$3" | dd "of=$1" bs=1 "seek=$2" conv=notrunc &>/dev/null
 }
 
+# peek_file_le 'test.img' 512 2 => 65534
+peek_file_le()
+{
+    # Wrap in echo $() to strip spaces
+    echo $(od -j"$2" -N"$3" --endian=little -An -vtu"$3" "$1")
+}
+
+# peek_file_be 'test.img' 512 2 => 65279
+peek_file_be()
+{
+    # Wrap in echo $() to strip spaces
+    echo $(od -j"$2" -N"$3" --endian=big -An -vtu"$3" "$1")
+}
+
+# peek_file_raw 'test.img' 512 2 => '\xff\xfe'
+peek_file_raw()
+{
+    dd if="$1" bs=1 skip="$2" count="$3" status=none
+}
+
 
 if ! . ./common.config
     then
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:53:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:53:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPl0-0001Z7-5d; Tue, 14 Apr 2020 17:53:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPkz-0001Yy-5T
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:57 +0000
X-Inumbo-ID: e91e6bae-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e91e6bae-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:53:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZRy94qf+ofJ0EvKlC8qdio/ZySIZXiYlUAsibgft+V0=; b=ypMTGmNrCAEZxDkXt9bj7aXwfZ
 JolHplDoK0ZVWwXm6tCVaRV2RNnYPVvGNynvau1aEi9/Fp1t9ZBmgWyTGp2dqzdvhDCOJlaTO+hkS
 hFr5gWxjXH6g+JyagVxKuLOZyjn8y2oW3KEyCCUx6TrlJ5/80CLv2aOaa29tFCnUP638=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkx-00087a-U8
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPkx-0000sx-TA
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:53:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] qcow2-bitmap: Fix uint64_t left-shift overflow
Message-Id: <E1jOPkx-0000sx-TA@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:53:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 40df4a1bf7520e0713273d6ebd5a3407b4d83267
Author:     Tuguoyi <tu.guoyi@h3c.com>
AuthorDate: Fri Nov 1 07:37:35 2019 +0000
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    qcow2-bitmap: Fix uint64_t left-shift overflow
    
    There are two issues in In check_constraints_on_bitmap(),
    1) The sanity check on the granularity will cause uint64_t
    integer left-shift overflow when cluster_size is 2M and the
    granularity is BIGGER than 32K.
    2) The way to calculate image size that the maximum bitmap
    supported can map to is a bit incorrect.
    This patch fix it by add a helper function to calculate the
    number of bytes needed by a normal bitmap in image and compare
    it to the maximum bitmap bytes supported by qemu.
    
    Fixes: 5f72826e7fc62167cf3a
    Signed-off-by: Guoyi Tu <tu.guoyi@h3c.com>
    Message-id: 4ba40cd1e7ee4a708b40899952e49f22@h3c.com
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 570542ecb11e04b61ef4b3f4d0965a6915232a88)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2-bitmap.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c
index b2487101ed..65034da1c0 100644
--- a/block/qcow2-bitmap.c
+++ b/block/qcow2-bitmap.c
@@ -142,6 +142,13 @@ static int check_table_entry(uint64_t entry, int cluster_size)
     return 0;
 }
 
+static int64_t get_bitmap_bytes_needed(int64_t len, uint32_t granularity)
+{
+    int64_t num_bits = DIV_ROUND_UP(len, granularity);
+
+    return DIV_ROUND_UP(num_bits, 8);
+}
+
 static int check_constraints_on_bitmap(BlockDriverState *bs,
                                        const char *name,
                                        uint32_t granularity,
@@ -150,6 +157,7 @@ static int check_constraints_on_bitmap(BlockDriverState *bs,
     BDRVQcow2State *s = bs->opaque;
     int granularity_bits = ctz32(granularity);
     int64_t len = bdrv_getlength(bs);
+    int64_t bitmap_bytes;
 
     assert(granularity > 0);
     assert((granularity & (granularity - 1)) == 0);
@@ -171,9 +179,9 @@ static int check_constraints_on_bitmap(BlockDriverState *bs,
         return -EINVAL;
     }
 
-    if ((len > (uint64_t)BME_MAX_PHYS_SIZE << granularity_bits) ||
-        (len > (uint64_t)BME_MAX_TABLE_SIZE * s->cluster_size <<
-               granularity_bits))
+    bitmap_bytes = get_bitmap_bytes_needed(len, granularity);
+    if ((bitmap_bytes > (uint64_t)BME_MAX_PHYS_SIZE) ||
+        (bitmap_bytes > (uint64_t)BME_MAX_TABLE_SIZE * s->cluster_size))
     {
         error_setg(errp, "Too much space will be occupied by the bitmap. "
                    "Use larger granularity");
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:54:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:54:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPlA-0001aO-B2; Tue, 14 Apr 2020 17:54:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPl9-0001aA-0G
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:07 +0000
X-Inumbo-ID: ef22e480-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ef22e480-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:54:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=akiiaSNhpQRKLlSOd7biusUVj2t8QsI+JA2AyE/74U8=; b=NpronsnoiQjmhG4DXMeV5cMgLe
 RAeka1flIsnpxOrcJslj6MmlL2OS2kL7ptxbpgMf/lR633q0dhVkvGdf6mxZBK/aMHr1SeGoeuKVY
 5JKi7jz9MTdMPLJH+wZjQ980f6es3bQAMUYoM4pZI/dHv9AB+WzbW1p9cj5MGNyWJoTs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPl8-00088O-0v
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:06 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPl7-0000tc-Vw
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] util/iov: introduce qemu_iovec_init_extended
Message-Id: <E1jOPl7-0000tc-Vw@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:54:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit cff024fe856ab36db3056ba4cb1d7cfa4c39795d
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Tue Jun 4 19:15:03 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    util/iov: introduce qemu_iovec_init_extended
    
    Introduce new initialization API, to create requests with padding. Will
    be used in the following patch. New API uses qemu_iovec_init_buf if
    resulting io vector has only one element, to avoid extra allocations.
    So, we need to update qemu_iovec_destroy to support destroying such
    QIOVs.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20190604161514.262241-2-vsementsov@virtuozzo.com
    Message-Id: <20190604161514.262241-2-vsementsov@virtuozzo.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    (cherry picked from commit d953169d4840f312d3b9a54952f4a7ccfcb3b311)
    *prereq for 292d06b9
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/qemu/iov.h |   7 ++++
 util/iov.c         | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 114 insertions(+), 5 deletions(-)

diff --git a/include/qemu/iov.h b/include/qemu/iov.h
index 48b45987b7..f3787a0cf7 100644
--- a/include/qemu/iov.h
+++ b/include/qemu/iov.h
@@ -199,6 +199,13 @@ static inline void *qemu_iovec_buf(QEMUIOVector *qiov)
 
 void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint);
 void qemu_iovec_init_external(QEMUIOVector *qiov, struct iovec *iov, int niov);
+void qemu_iovec_init_extended(
+        QEMUIOVector *qiov,
+        void *head_buf, size_t head_len,
+        QEMUIOVector *mid_qiov, size_t mid_offset, size_t mid_len,
+        void *tail_buf, size_t tail_len);
+void qemu_iovec_init_slice(QEMUIOVector *qiov, QEMUIOVector *source,
+                           size_t offset, size_t len);
 void qemu_iovec_add(QEMUIOVector *qiov, void *base, size_t len);
 void qemu_iovec_concat(QEMUIOVector *dst,
                        QEMUIOVector *src, size_t soffset, size_t sbytes);
diff --git a/util/iov.c b/util/iov.c
index 74e6ca8ed7..366ff9cdd1 100644
--- a/util/iov.c
+++ b/util/iov.c
@@ -354,6 +354,103 @@ void qemu_iovec_concat(QEMUIOVector *dst,
 }
 
 /*
+ * qiov_find_iov
+ *
+ * Return pointer to iovec structure, where byte at @offset in original vector
+ * @iov exactly is.
+ * Set @remaining_offset to be offset inside that iovec to the same byte.
+ */
+static struct iovec *iov_skip_offset(struct iovec *iov, size_t offset,
+                                     size_t *remaining_offset)
+{
+    while (offset > 0 && offset >= iov->iov_len) {
+        offset -= iov->iov_len;
+        iov++;
+    }
+    *remaining_offset = offset;
+
+    return iov;
+}
+
+/*
+ * qiov_slice
+ *
+ * Find subarray of iovec's, containing requested range. @head would
+ * be offset in first iov (returned by the function), @tail would be
+ * count of extra bytes in last iovec (returned iov + @niov - 1).
+ */
+static struct iovec *qiov_slice(QEMUIOVector *qiov,
+                                size_t offset, size_t len,
+                                size_t *head, size_t *tail, int *niov)
+{
+    struct iovec *iov, *end_iov;
+
+    assert(offset + len <= qiov->size);
+
+    iov = iov_skip_offset(qiov->iov, offset, head);
+    end_iov = iov_skip_offset(iov, *head + len, tail);
+
+    if (*tail > 0) {
+        assert(*tail < end_iov->iov_len);
+        *tail = end_iov->iov_len - *tail;
+        end_iov++;
+    }
+
+    *niov = end_iov - iov;
+
+    return iov;
+}
+
+/*
+ * Compile new iovec, combining @head_buf buffer, sub-qiov of @mid_qiov,
+ * and @tail_buf buffer into new qiov.
+ */
+void qemu_iovec_init_extended(
+        QEMUIOVector *qiov,
+        void *head_buf, size_t head_len,
+        QEMUIOVector *mid_qiov, size_t mid_offset, size_t mid_len,
+        void *tail_buf, size_t tail_len)
+{
+    size_t mid_head, mid_tail;
+    int total_niov, mid_niov = 0;
+    struct iovec *p, *mid_iov;
+
+    if (mid_len) {
+        mid_iov = qiov_slice(mid_qiov, mid_offset, mid_len,
+                             &mid_head, &mid_tail, &mid_niov);
+    }
+
+    total_niov = !!head_len + mid_niov + !!tail_len;
+    if (total_niov == 1) {
+        qemu_iovec_init_buf(qiov, NULL, 0);
+        p = &qiov->local_iov;
+    } else {
+        qiov->niov = qiov->nalloc = total_niov;
+        qiov->size = head_len + mid_len + tail_len;
+        p = qiov->iov = g_new(struct iovec, qiov->niov);
+    }
+
+    if (head_len) {
+        p->iov_base = head_buf;
+        p->iov_len = head_len;
+        p++;
+    }
+
+    if (mid_len) {
+        memcpy(p, mid_iov, mid_niov * sizeof(*p));
+        p[0].iov_base = (uint8_t *)p[0].iov_base + mid_head;
+        p[0].iov_len -= mid_head;
+        p[mid_niov - 1].iov_len -= mid_tail;
+        p += mid_niov;
+    }
+
+    if (tail_len) {
+        p->iov_base = tail_buf;
+        p->iov_len = tail_len;
+    }
+}
+
+/*
  * Check if the contents of the iovecs are all zero
  */
 bool qemu_iovec_is_zero(QEMUIOVector *qiov)
@@ -374,14 +471,19 @@ bool qemu_iovec_is_zero(QEMUIOVector *qiov)
     return true;
 }
 
+void qemu_iovec_init_slice(QEMUIOVector *qiov, QEMUIOVector *source,
+                           size_t offset, size_t len)
+{
+    qemu_iovec_init_extended(qiov, NULL, 0, source, offset, len, NULL, 0);
+}
+
 void qemu_iovec_destroy(QEMUIOVector *qiov)
 {
-    assert(qiov->nalloc != -1);
+    if (qiov->nalloc != -1) {
+        g_free(qiov->iov);
+    }
 
-    qemu_iovec_reset(qiov);
-    g_free(qiov->iov);
-    qiov->nalloc = 0;
-    qiov->iov = NULL;
+    memset(qiov, 0, sizeof(*qiov));
 }
 
 void qemu_iovec_reset(QEMUIOVector *qiov)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:54:20 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:54:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPlK-0001bO-DH; Tue, 14 Apr 2020 17:54:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPlI-0001bE-Va
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:17 +0000
X-Inumbo-ID: f524ba7a-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f524ba7a-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:54:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=onBgXBoNNlceUGjOl2Z4l75+k4nEFJEAoozIaNjlfv4=; b=t9ZrBDp1HdMKiWuiCcEgGVPydH
 GdMCiURSM7F8+sFBeeURr+iIhe+KlOn4KK8sTrDAy+BzrNZkaVbn5+vo0JqN195YJ//77EsDpn0cH
 EA7j/E/UyeOdydjnQJ/9B1VDU5sL7EH4B8jzX4jwhffPistSH422E6maty+h3KZyEHYQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlI-00088X-3d
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:16 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlI-0000uL-2j
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:16 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] util/iov: improve qemu_iovec_is_zero
Message-Id: <E1jOPlI-0000uL-2j@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:54:16 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b3b76fc643912d2c86b13caff30a1151f2958702
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Tue Jun 4 19:15:04 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    util/iov: improve qemu_iovec_is_zero
    
    We'll need to check a part of qiov soon, so implement it now.
    
    Optimization with align down to 4 * sizeof(long) is dropped due to:
    1. It is strange: it aligns length of the buffer, but where is a
       guarantee that buffer pointer is aligned itself?
    2. buffer_is_zero() is a better place for optimizations and it has
       them.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20190604161514.262241-3-vsementsov@virtuozzo.com
    Message-Id: <20190604161514.262241-3-vsementsov@virtuozzo.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    (cherry picked from commit f76889e7b947d896db51be8a4d9c941c2f70365a)
    *prereq for 292d06b9
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/io.c         |  2 +-
 include/qemu/iov.h |  2 +-
 util/iov.c         | 31 +++++++++++++++++++------------
 3 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/block/io.c b/block/io.c
index 06305c6ea6..dccf687acc 100644
--- a/block/io.c
+++ b/block/io.c
@@ -1715,7 +1715,7 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChild *child,
 
     if (!ret && bs->detect_zeroes != BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF &&
         !(flags & BDRV_REQ_ZERO_WRITE) && drv->bdrv_co_pwrite_zeroes &&
-        qemu_iovec_is_zero(qiov)) {
+        qemu_iovec_is_zero(qiov, 0, qiov->size)) {
         flags |= BDRV_REQ_ZERO_WRITE;
         if (bs->detect_zeroes == BLOCKDEV_DETECT_ZEROES_OPTIONS_UNMAP) {
             flags |= BDRV_REQ_MAY_UNMAP;
diff --git a/include/qemu/iov.h b/include/qemu/iov.h
index f3787a0cf7..29957c8a72 100644
--- a/include/qemu/iov.h
+++ b/include/qemu/iov.h
@@ -212,7 +212,7 @@ void qemu_iovec_concat(QEMUIOVector *dst,
 size_t qemu_iovec_concat_iov(QEMUIOVector *dst,
                              struct iovec *src_iov, unsigned int src_cnt,
                              size_t soffset, size_t sbytes);
-bool qemu_iovec_is_zero(QEMUIOVector *qiov);
+bool qemu_iovec_is_zero(QEMUIOVector *qiov, size_t qiov_offeset, size_t bytes);
 void qemu_iovec_destroy(QEMUIOVector *qiov);
 void qemu_iovec_reset(QEMUIOVector *qiov);
 size_t qemu_iovec_to_buf(QEMUIOVector *qiov, size_t offset,
diff --git a/util/iov.c b/util/iov.c
index 366ff9cdd1..9ac0261853 100644
--- a/util/iov.c
+++ b/util/iov.c
@@ -451,23 +451,30 @@ void qemu_iovec_init_extended(
 }
 
 /*
- * Check if the contents of the iovecs are all zero
+ * Check if the contents of subrange of qiov data is all zeroes.
  */
-bool qemu_iovec_is_zero(QEMUIOVector *qiov)
+bool qemu_iovec_is_zero(QEMUIOVector *qiov, size_t offset, size_t bytes)
 {
-    int i;
-    for (i = 0; i < qiov->niov; i++) {
-        size_t offs = QEMU_ALIGN_DOWN(qiov->iov[i].iov_len, 4 * sizeof(long));
-        uint8_t *ptr = qiov->iov[i].iov_base;
-        if (offs && !buffer_is_zero(qiov->iov[i].iov_base, offs)) {
+    struct iovec *iov;
+    size_t current_offset;
+
+    assert(offset + bytes <= qiov->size);
+
+    iov = iov_skip_offset(qiov->iov, offset, &current_offset);
+
+    while (bytes) {
+        uint8_t *base = (uint8_t *)iov->iov_base + current_offset;
+        size_t len = MIN(iov->iov_len - current_offset, bytes);
+
+        if (!buffer_is_zero(base, len)) {
             return false;
         }
-        for (; offs < qiov->iov[i].iov_len; offs++) {
-            if (ptr[offs]) {
-                return false;
-            }
-        }
+
+        current_offset = 0;
+        bytes -= len;
+        iov++;
     }
+
     return true;
 }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:54:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:54:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPlU-0001cR-FK; Tue, 14 Apr 2020 17:54:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPlT-0001cJ-Hp
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:27 +0000
X-Inumbo-ID: fb270ac2-7e78-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fb270ac2-7e78-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:54:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=LbWvWNrR4JCcdf6a//hECpt4nwZ2qHSrnTxHe7mPGtQ=; b=S4obxDQIkI/fvqkgJfvuLO7MQY
 gxgzahhg4l8Fin3f06OddmD9T4DZESLSij2/IuSZRBeZ+1LG2OKgdr2Tji+yEeLa8DgFzk0lrO2Te
 rvdRbuq6dAofDQnpFaUJvrrj1PJVXYX1imonD+jM7mZIBjJcdimQ2u8lBsRpIyk5ET7Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlS-00088g-6G
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:26 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlS-0000w8-5O
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/io: refactor padding
Message-Id: <E1jOPlS-0000w8-5O@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:54:26 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2e2ad02f2cecf419eaad0df982ceb5b41170cc7e
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Tue Jun 4 19:15:05 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block/io: refactor padding
    
    We have similar padding code in bdrv_co_pwritev,
    bdrv_co_do_pwrite_zeroes and bdrv_co_preadv. Let's combine and unify
    it.
    
    [Squashed in Vladimir's qemu-iotests 077 fix
    --Stefan]
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20190604161514.262241-4-vsementsov@virtuozzo.com
    Message-Id: <20190604161514.262241-4-vsementsov@virtuozzo.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    (cherry picked from commit 7a3f542fbdfd799be4fa6f8b96dc8c1e6933fce4)
    *prereq for 292d06b9
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/io.c | 365 +++++++++++++++++++++++++++++++++----------------------------
 1 file changed, 200 insertions(+), 165 deletions(-)

diff --git a/block/io.c b/block/io.c
index dccf687acc..07d2d825c3 100644
--- a/block/io.c
+++ b/block/io.c
@@ -1408,28 +1408,177 @@ out:
 }
 
 /*
- * Handle a read request in coroutine context
+ * Request padding
+ *
+ *  |<---- align ----->|                     |<----- align ---->|
+ *  |<- head ->|<------------- bytes ------------->|<-- tail -->|
+ *  |          |       |                     |     |            |
+ * -*----------$-------*-------- ... --------*-----$------------*---
+ *  |          |       |                     |     |            |
+ *  |          offset  |                     |     end          |
+ *  ALIGN_DOWN(offset) ALIGN_UP(offset)      ALIGN_DOWN(end)   ALIGN_UP(end)
+ *  [buf   ... )                             [tail_buf          )
+ *
+ * @buf is an aligned allocation needed to store @head and @tail paddings. @head
+ * is placed at the beginning of @buf and @tail at the @end.
+ *
+ * @tail_buf is a pointer to sub-buffer, corresponding to align-sized chunk
+ * around tail, if tail exists.
+ *
+ * @merge_reads is true for small requests,
+ * if @buf_len == @head + bytes + @tail. In this case it is possible that both
+ * head and tail exist but @buf_len == align and @tail_buf == @buf.
+ */
+typedef struct BdrvRequestPadding {
+    uint8_t *buf;
+    size_t buf_len;
+    uint8_t *tail_buf;
+    size_t head;
+    size_t tail;
+    bool merge_reads;
+    QEMUIOVector local_qiov;
+} BdrvRequestPadding;
+
+static bool bdrv_init_padding(BlockDriverState *bs,
+                              int64_t offset, int64_t bytes,
+                              BdrvRequestPadding *pad)
+{
+    uint64_t align = bs->bl.request_alignment;
+    size_t sum;
+
+    memset(pad, 0, sizeof(*pad));
+
+    pad->head = offset & (align - 1);
+    pad->tail = ((offset + bytes) & (align - 1));
+    if (pad->tail) {
+        pad->tail = align - pad->tail;
+    }
+
+    if ((!pad->head && !pad->tail) || !bytes) {
+        return false;
+    }
+
+    sum = pad->head + bytes + pad->tail;
+    pad->buf_len = (sum > align && pad->head && pad->tail) ? 2 * align : align;
+    pad->buf = qemu_blockalign(bs, pad->buf_len);
+    pad->merge_reads = sum == pad->buf_len;
+    if (pad->tail) {
+        pad->tail_buf = pad->buf + pad->buf_len - align;
+    }
+
+    return true;
+}
+
+static int bdrv_padding_rmw_read(BdrvChild *child,
+                                 BdrvTrackedRequest *req,
+                                 BdrvRequestPadding *pad,
+                                 bool zero_middle)
+{
+    QEMUIOVector local_qiov;
+    BlockDriverState *bs = child->bs;
+    uint64_t align = bs->bl.request_alignment;
+    int ret;
+
+    assert(req->serialising && pad->buf);
+
+    if (pad->head || pad->merge_reads) {
+        uint64_t bytes = pad->merge_reads ? pad->buf_len : align;
+
+        qemu_iovec_init_buf(&local_qiov, pad->buf, bytes);
+
+        if (pad->head) {
+            bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_HEAD);
+        }
+        if (pad->merge_reads && pad->tail) {
+            bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL);
+        }
+        ret = bdrv_aligned_preadv(child, req, req->overlap_offset, bytes,
+                                  align, &local_qiov, 0);
+        if (ret < 0) {
+            return ret;
+        }
+        if (pad->head) {
+            bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_HEAD);
+        }
+        if (pad->merge_reads && pad->tail) {
+            bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL);
+        }
+
+        if (pad->merge_reads) {
+            goto zero_mem;
+        }
+    }
+
+    if (pad->tail) {
+        qemu_iovec_init_buf(&local_qiov, pad->tail_buf, align);
+
+        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL);
+        ret = bdrv_aligned_preadv(
+                child, req,
+                req->overlap_offset + req->overlap_bytes - align,
+                align, align, &local_qiov, 0);
+        if (ret < 0) {
+            return ret;
+        }
+        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL);
+    }
+
+zero_mem:
+    if (zero_middle) {
+        memset(pad->buf + pad->head, 0, pad->buf_len - pad->head - pad->tail);
+    }
+
+    return 0;
+}
+
+static void bdrv_padding_destroy(BdrvRequestPadding *pad)
+{
+    if (pad->buf) {
+        qemu_vfree(pad->buf);
+        qemu_iovec_destroy(&pad->local_qiov);
+    }
+}
+
+/*
+ * bdrv_pad_request
+ *
+ * Exchange request parameters with padded request if needed. Don't include RMW
+ * read of padding, bdrv_padding_rmw_read() should be called separately if
+ * needed.
+ *
+ * All parameters except @bs are in-out: they represent original request at
+ * function call and padded (if padding needed) at function finish.
+ *
+ * Function always succeeds.
  */
+static bool bdrv_pad_request(BlockDriverState *bs, QEMUIOVector **qiov,
+                             int64_t *offset, unsigned int *bytes,
+                             BdrvRequestPadding *pad)
+{
+    if (!bdrv_init_padding(bs, *offset, *bytes, pad)) {
+        return false;
+    }
+
+    qemu_iovec_init_extended(&pad->local_qiov, pad->buf, pad->head,
+                             *qiov, 0, *bytes,
+                             pad->buf + pad->buf_len - pad->tail, pad->tail);
+    *bytes += pad->head + pad->tail;
+    *offset -= pad->head;
+    *qiov = &pad->local_qiov;
+
+    return true;
+}
+
 int coroutine_fn bdrv_co_preadv(BdrvChild *child,
     int64_t offset, unsigned int bytes, QEMUIOVector *qiov,
     BdrvRequestFlags flags)
 {
     BlockDriverState *bs = child->bs;
-    BlockDriver *drv = bs->drv;
     BdrvTrackedRequest req;
-
-    uint64_t align = bs->bl.request_alignment;
-    uint8_t *head_buf = NULL;
-    uint8_t *tail_buf = NULL;
-    QEMUIOVector local_qiov;
-    bool use_local_qiov = false;
+    BdrvRequestPadding pad;
     int ret;
 
-    trace_bdrv_co_preadv(child->bs, offset, bytes, flags);
-
-    if (!drv) {
-        return -ENOMEDIUM;
-    }
+    trace_bdrv_co_preadv(bs, offset, bytes, flags);
 
     ret = bdrv_check_byte_request(bs, offset, bytes);
     if (ret < 0) {
@@ -1443,43 +1592,16 @@ int coroutine_fn bdrv_co_preadv(BdrvChild *child,
         flags |= BDRV_REQ_COPY_ON_READ;
     }
 
-    /* Align read if necessary by padding qiov */
-    if (offset & (align - 1)) {
-        head_buf = qemu_blockalign(bs, align);
-        qemu_iovec_init(&local_qiov, qiov->niov + 2);
-        qemu_iovec_add(&local_qiov, head_buf, offset & (align - 1));
-        qemu_iovec_concat(&local_qiov, qiov, 0, qiov->size);
-        use_local_qiov = true;
-
-        bytes += offset & (align - 1);
-        offset = offset & ~(align - 1);
-    }
-
-    if ((offset + bytes) & (align - 1)) {
-        if (!use_local_qiov) {
-            qemu_iovec_init(&local_qiov, qiov->niov + 1);
-            qemu_iovec_concat(&local_qiov, qiov, 0, qiov->size);
-            use_local_qiov = true;
-        }
-        tail_buf = qemu_blockalign(bs, align);
-        qemu_iovec_add(&local_qiov, tail_buf,
-                       align - ((offset + bytes) & (align - 1)));
-
-        bytes = ROUND_UP(bytes, align);
-    }
+    bdrv_pad_request(bs, &qiov, &offset, &bytes, &pad);
 
     tracked_request_begin(&req, bs, offset, bytes, BDRV_TRACKED_READ);
-    ret = bdrv_aligned_preadv(child, &req, offset, bytes, align,
-                              use_local_qiov ? &local_qiov : qiov,
-                              flags);
+    ret = bdrv_aligned_preadv(child, &req, offset, bytes,
+                              bs->bl.request_alignment,
+                              qiov, flags);
     tracked_request_end(&req);
     bdrv_dec_in_flight(bs);
 
-    if (use_local_qiov) {
-        qemu_iovec_destroy(&local_qiov);
-        qemu_vfree(head_buf);
-        qemu_vfree(tail_buf);
-    }
+    bdrv_padding_destroy(&pad);
 
     return ret;
 }
@@ -1775,44 +1897,34 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvChild *child,
                                                 BdrvTrackedRequest *req)
 {
     BlockDriverState *bs = child->bs;
-    uint8_t *buf = NULL;
     QEMUIOVector local_qiov;
     uint64_t align = bs->bl.request_alignment;
-    unsigned int head_padding_bytes, tail_padding_bytes;
     int ret = 0;
+    bool padding;
+    BdrvRequestPadding pad;
 
-    head_padding_bytes = offset & (align - 1);
-    tail_padding_bytes = (align - (offset + bytes)) & (align - 1);
-
-
-    assert(flags & BDRV_REQ_ZERO_WRITE);
-    if (head_padding_bytes || tail_padding_bytes) {
-        buf = qemu_blockalign(bs, align);
-        qemu_iovec_init_buf(&local_qiov, buf, align);
-    }
-    if (head_padding_bytes) {
-        uint64_t zero_bytes = MIN(bytes, align - head_padding_bytes);
-
-        /* RMW the unaligned part before head. */
+    padding = bdrv_init_padding(bs, offset, bytes, &pad);
+    if (padding) {
         mark_request_serialising(req, align);
         wait_serialising_requests(req);
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_HEAD);
-        ret = bdrv_aligned_preadv(child, req, offset & ~(align - 1), align,
-                                  align, &local_qiov, 0);
-        if (ret < 0) {
-            goto fail;
-        }
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_HEAD);
 
-        memset(buf + head_padding_bytes, 0, zero_bytes);
-        ret = bdrv_aligned_pwritev(child, req, offset & ~(align - 1), align,
-                                   align, &local_qiov,
-                                   flags & ~BDRV_REQ_ZERO_WRITE);
-        if (ret < 0) {
-            goto fail;
+        bdrv_padding_rmw_read(child, req, &pad, true);
+
+        if (pad.head || pad.merge_reads) {
+            int64_t aligned_offset = offset & ~(align - 1);
+            int64_t write_bytes = pad.merge_reads ? pad.buf_len : align;
+
+            qemu_iovec_init_buf(&local_qiov, pad.buf, write_bytes);
+            ret = bdrv_aligned_pwritev(child, req, aligned_offset, write_bytes,
+                                       align, &local_qiov,
+                                       flags & ~BDRV_REQ_ZERO_WRITE);
+            if (ret < 0 || pad.merge_reads) {
+                /* Error or all work is done */
+                goto out;
+            }
+            offset += write_bytes - pad.head;
+            bytes -= write_bytes - pad.head;
         }
-        offset += zero_bytes;
-        bytes -= zero_bytes;
     }
 
     assert(!bytes || (offset & (align - 1)) == 0);
@@ -1822,7 +1934,7 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvChild *child,
         ret = bdrv_aligned_pwritev(child, req, offset, aligned_bytes, align,
                                    NULL, flags);
         if (ret < 0) {
-            goto fail;
+            goto out;
         }
         bytes -= aligned_bytes;
         offset += aligned_bytes;
@@ -1830,26 +1942,17 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvChild *child,
 
     assert(!bytes || (offset & (align - 1)) == 0);
     if (bytes) {
-        assert(align == tail_padding_bytes + bytes);
-        /* RMW the unaligned part after tail. */
-        mark_request_serialising(req, align);
-        wait_serialising_requests(req);
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL);
-        ret = bdrv_aligned_preadv(child, req, offset, align,
-                                  align, &local_qiov, 0);
-        if (ret < 0) {
-            goto fail;
-        }
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL);
+        assert(align == pad.tail + bytes);
 
-        memset(buf, 0, bytes);
+        qemu_iovec_init_buf(&local_qiov, pad.tail_buf, align);
         ret = bdrv_aligned_pwritev(child, req, offset, align, align,
                                    &local_qiov, flags & ~BDRV_REQ_ZERO_WRITE);
     }
-fail:
-    qemu_vfree(buf);
-    return ret;
 
+out:
+    bdrv_padding_destroy(&pad);
+
+    return ret;
 }
 
 /*
@@ -1862,10 +1965,7 @@ int coroutine_fn bdrv_co_pwritev(BdrvChild *child,
     BlockDriverState *bs = child->bs;
     BdrvTrackedRequest req;
     uint64_t align = bs->bl.request_alignment;
-    uint8_t *head_buf = NULL;
-    uint8_t *tail_buf = NULL;
-    QEMUIOVector local_qiov;
-    bool use_local_qiov = false;
+    BdrvRequestPadding pad;
     int ret;
 
     trace_bdrv_co_pwritev(child->bs, offset, bytes, flags);
@@ -1892,86 +1992,21 @@ int coroutine_fn bdrv_co_pwritev(BdrvChild *child,
         goto out;
     }
 
-    if (offset & (align - 1)) {
-        QEMUIOVector head_qiov;
-
+    if (bdrv_pad_request(bs, &qiov, &offset, &bytes, &pad)) {
         mark_request_serialising(&req, align);
         wait_serialising_requests(&req);
-
-        head_buf = qemu_blockalign(bs, align);
-        qemu_iovec_init_buf(&head_qiov, head_buf, align);
-
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_HEAD);
-        ret = bdrv_aligned_preadv(child, &req, offset & ~(align - 1), align,
-                                  align, &head_qiov, 0);
-        if (ret < 0) {
-            goto fail;
-        }
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_HEAD);
-
-        qemu_iovec_init(&local_qiov, qiov->niov + 2);
-        qemu_iovec_add(&local_qiov, head_buf, offset & (align - 1));
-        qemu_iovec_concat(&local_qiov, qiov, 0, qiov->size);
-        use_local_qiov = true;
-
-        bytes += offset & (align - 1);
-        offset = offset & ~(align - 1);
-
-        /* We have read the tail already if the request is smaller
-         * than one aligned block.
-         */
-        if (bytes < align) {
-            qemu_iovec_add(&local_qiov, head_buf + bytes, align - bytes);
-            bytes = align;
-        }
-    }
-
-    if ((offset + bytes) & (align - 1)) {
-        QEMUIOVector tail_qiov;
-        size_t tail_bytes;
-        bool waited;
-
-        mark_request_serialising(&req, align);
-        waited = wait_serialising_requests(&req);
-        assert(!waited || !use_local_qiov);
-
-        tail_buf = qemu_blockalign(bs, align);
-        qemu_iovec_init_buf(&tail_qiov, tail_buf, align);
-
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL);
-        ret = bdrv_aligned_preadv(child, &req, (offset + bytes) & ~(align - 1),
-                                  align, align, &tail_qiov, 0);
-        if (ret < 0) {
-            goto fail;
-        }
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL);
-
-        if (!use_local_qiov) {
-            qemu_iovec_init(&local_qiov, qiov->niov + 1);
-            qemu_iovec_concat(&local_qiov, qiov, 0, qiov->size);
-            use_local_qiov = true;
-        }
-
-        tail_bytes = (offset + bytes) & (align - 1);
-        qemu_iovec_add(&local_qiov, tail_buf + tail_bytes, align - tail_bytes);
-
-        bytes = ROUND_UP(bytes, align);
+        bdrv_padding_rmw_read(child, &req, &pad, false);
     }
 
     ret = bdrv_aligned_pwritev(child, &req, offset, bytes, align,
-                               use_local_qiov ? &local_qiov : qiov,
-                               flags);
+                               qiov, flags);
 
-fail:
+    bdrv_padding_destroy(&pad);
 
-    if (use_local_qiov) {
-        qemu_iovec_destroy(&local_qiov);
-    }
-    qemu_vfree(head_buf);
-    qemu_vfree(tail_buf);
 out:
     tracked_request_end(&req);
     bdrv_dec_in_flight(bs);
+
     return ret;
 }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:54:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:54:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPle-0001eK-Jy; Tue, 14 Apr 2020 17:54:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPld-0001dY-4M
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:37 +0000
X-Inumbo-ID: 0129a11e-7e79-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0129a11e-7e79-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:54:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=c/AuxKAmbZtCcm9pgGhu44sOfJRCVEUW+UIn1aqKVgk=; b=syfhLDW99Z8Tponcp4rFkjUT9y
 FkcqytlXFQJtYSMpvCHjtJerKZHPoIre04lU0ziu8auciCU6sQfIUnrvKDWsCiWZSt/j/WHuyFivE
 D2z7qHjndHcOmDzttDbvpfoyEDEC+5xhvhxxkRY1Ha93RWD2J2/UlWr5SRb2JjAJql1Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlc-00088p-92
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlc-0000ww-8C
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block: Make wait/mark serialising requests
 public
Message-Id: <E1jOPlc-0000ww-8C@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:54:36 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 590cff8230749794ba09b38f3ea4eb6b0f2f73b5
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Nov 1 16:25:08 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block: Make wait/mark serialising requests public
    
    Make both bdrv_mark_request_serialising() and
    bdrv_wait_serialising_requests() public so they can be used from block
    drivers.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191101152510.11719-2-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 304d9d7f034ff7f5e1e66a65b7f720f63a72c57e)
     Conflicts:
            block/io.c
    *drop context dependency on 1acc3466a2
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/io.c                | 24 ++++++++++++------------
 include/block/block_int.h |  3 +++
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/block/io.c b/block/io.c
index 07d2d825c3..d4ceaaa2ce 100644
--- a/block/io.c
+++ b/block/io.c
@@ -694,7 +694,7 @@ static void tracked_request_begin(BdrvTrackedRequest *req,
     qemu_co_mutex_unlock(&bs->reqs_lock);
 }
 
-static void mark_request_serialising(BdrvTrackedRequest *req, uint64_t align)
+void bdrv_mark_request_serialising(BdrvTrackedRequest *req, uint64_t align)
 {
     int64_t overlap_offset = req->offset & ~(align - 1);
     uint64_t overlap_bytes = ROUND_UP(req->offset + req->bytes, align)
@@ -784,7 +784,7 @@ void bdrv_dec_in_flight(BlockDriverState *bs)
     bdrv_wakeup(bs);
 }
 
-static bool coroutine_fn wait_serialising_requests(BdrvTrackedRequest *self)
+bool coroutine_fn bdrv_wait_serialising_requests(BdrvTrackedRequest *self)
 {
     BlockDriverState *bs = self->bs;
     BdrvTrackedRequest *req;
@@ -1340,14 +1340,14 @@ static int coroutine_fn bdrv_aligned_preadv(BdrvChild *child,
          * with each other for the same cluster.  For example, in copy-on-read
          * it ensures that the CoR read and write operations are atomic and
          * guest writes cannot interleave between them. */
-        mark_request_serialising(req, bdrv_get_cluster_size(bs));
+        bdrv_mark_request_serialising(req, bdrv_get_cluster_size(bs));
     }
 
     /* BDRV_REQ_SERIALISING is only for write operation */
     assert(!(flags & BDRV_REQ_SERIALISING));
 
     if (!(flags & BDRV_REQ_NO_SERIALISING)) {
-        wait_serialising_requests(req);
+        bdrv_wait_serialising_requests(req);
     }
 
     if (flags & BDRV_REQ_COPY_ON_READ) {
@@ -1736,10 +1736,10 @@ bdrv_co_write_req_prepare(BdrvChild *child, int64_t offset, uint64_t bytes,
     assert(!(flags & ~BDRV_REQ_MASK));
 
     if (flags & BDRV_REQ_SERIALISING) {
-        mark_request_serialising(req, bdrv_get_cluster_size(bs));
+        bdrv_mark_request_serialising(req, bdrv_get_cluster_size(bs));
     }
 
-    waited = wait_serialising_requests(req);
+    waited = bdrv_wait_serialising_requests(req);
 
     assert(!waited || !req->serialising ||
            is_request_serialising_and_aligned(req));
@@ -1905,8 +1905,8 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvChild *child,
 
     padding = bdrv_init_padding(bs, offset, bytes, &pad);
     if (padding) {
-        mark_request_serialising(req, align);
-        wait_serialising_requests(req);
+        bdrv_mark_request_serialising(req, align);
+        bdrv_wait_serialising_requests(req);
 
         bdrv_padding_rmw_read(child, req, &pad, true);
 
@@ -1993,8 +1993,8 @@ int coroutine_fn bdrv_co_pwritev(BdrvChild *child,
     }
 
     if (bdrv_pad_request(bs, &qiov, &offset, &bytes, &pad)) {
-        mark_request_serialising(&req, align);
-        wait_serialising_requests(&req);
+        bdrv_mark_request_serialising(&req, align);
+        bdrv_wait_serialising_requests(&req);
         bdrv_padding_rmw_read(child, &req, &pad, false);
     }
 
@@ -3078,7 +3078,7 @@ static int coroutine_fn bdrv_co_copy_range_internal(
         /* BDRV_REQ_SERIALISING is only for write operation */
         assert(!(read_flags & BDRV_REQ_SERIALISING));
         if (!(read_flags & BDRV_REQ_NO_SERIALISING)) {
-            wait_serialising_requests(&req);
+            bdrv_wait_serialising_requests(&req);
         }
 
         ret = src->bs->drv->bdrv_co_copy_range_from(src->bs,
@@ -3205,7 +3205,7 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int64_t offset,
      * new area, we need to make sure that no write requests are made to it
      * concurrently or they might be overwritten by preallocation. */
     if (new_bytes) {
-        mark_request_serialising(&req, 1);
+        bdrv_mark_request_serialising(&req, 1);
     }
     if (bs->read_only) {
         error_setg(errp, "Image is read-only");
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 3aa1e832a8..4465b02242 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -962,6 +962,9 @@ extern unsigned int bdrv_drain_all_count;
 void bdrv_apply_subtree_drain(BdrvChild *child, BlockDriverState *new_parent);
 void bdrv_unapply_subtree_drain(BdrvChild *child, BlockDriverState *old_parent);
 
+bool coroutine_fn bdrv_wait_serialising_requests(BdrvTrackedRequest *self);
+void bdrv_mark_request_serialising(BdrvTrackedRequest *req, uint64_t align);
+
 int get_tmp_filename(char *filename, int size);
 BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size,
                             const char *filename);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:54:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:54:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPlo-0001fR-M6; Tue, 14 Apr 2020 17:54:48 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPln-0001fF-DZ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:47 +0000
X-Inumbo-ID: 072e8b9c-7e79-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 072e8b9c-7e79-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 17:54:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=T2Ab6/lVUbI48m92HTPaKTlh659iRJDpGj0Vlp2ctK0=; b=hwBVgXodZjFgGl3hAX330TIwBo
 o+2vSx2a+danpu7bvMetNt38OYda+hH2ontumnfCMFTQnOVE0oyQofFF/fUkRjk933EyT0nnmsi+4
 mogXIqL6n3GLHjNgYw9/4g9/VufU99zCmybBif2W7QSHv2PaZu6zm1ODvdAadcEYb5/o=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlm-00088y-Bd
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:46 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlm-0000xf-An
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:46 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block: Add bdrv_co_get_self_request()
Message-Id: <E1jOPlm-0000xf-An@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:54:46 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d9b88f7e0d56feb4d7daa2506e2756fc48e975a1
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Nov 1 16:25:09 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block: Add bdrv_co_get_self_request()
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191101152510.11719-3-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit c28107e9e55b11cd35cf3dc2505e3e69d10dcf13)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/io.c                | 18 ++++++++++++++++++
 include/block/block_int.h |  1 +
 2 files changed, 19 insertions(+)

diff --git a/block/io.c b/block/io.c
index d4ceaaa2ce..65b5102714 100644
--- a/block/io.c
+++ b/block/io.c
@@ -722,6 +722,24 @@ static bool is_request_serialising_and_aligned(BdrvTrackedRequest *req)
 }
 
 /**
+ * Return the tracked request on @bs for the current coroutine, or
+ * NULL if there is none.
+ */
+BdrvTrackedRequest *coroutine_fn bdrv_co_get_self_request(BlockDriverState *bs)
+{
+    BdrvTrackedRequest *req;
+    Coroutine *self = qemu_coroutine_self();
+
+    QLIST_FOREACH(req, &bs->tracked_requests, list) {
+        if (req->co == self) {
+            return req;
+        }
+    }
+
+    return NULL;
+}
+
+/**
  * Round a region to cluster boundaries
  */
 void bdrv_round_to_clusters(BlockDriverState *bs,
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 4465b02242..05ee6b4866 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -964,6 +964,7 @@ void bdrv_unapply_subtree_drain(BdrvChild *child, BlockDriverState *old_parent);
 
 bool coroutine_fn bdrv_wait_serialising_requests(BdrvTrackedRequest *self);
 void bdrv_mark_request_serialising(BdrvTrackedRequest *req, uint64_t align);
+BdrvTrackedRequest *coroutine_fn bdrv_co_get_self_request(BlockDriverState *bs);
 
 int get_tmp_filename(char *filename, int size);
 BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:54:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:54:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPly-0001gX-OF; Tue, 14 Apr 2020 17:54:58 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPlx-0001gJ-4g
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:57 +0000
X-Inumbo-ID: 0cf3919f-7e79-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0cf3919f-7e79-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:54:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=BHldTFHocnjjM9nR8IXgPYqNirwdNiZg6VvjeQNcnAM=; b=w5J9gbSday/T1JzMofO/zwNzf8
 +ZxR3y49OnIDDAjE6CPznpGgNAv6XhAE5wubvHqbdcDYB2OdSW8eVChDBxifmMMmhsUkX94/PDGwl
 rXne0Ho1R1IrnTVIdllUKcxlfCGJXCO01pzsIqpcQn+Dpgx02dIuGaLFHyT+rYLxptVA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlw-000899-ET
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:56 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPlw-0000yT-DP
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:54:56 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/file-posix: Let post-EOF fallocate
 serialize
Message-Id: <E1jOPlw-0000yT-DP@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:54:56 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7db05c8a732fbdc986a40aadf0de6dd23057d044
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Nov 1 16:25:10 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block/file-posix: Let post-EOF fallocate serialize
    
    The XFS kernel driver has a bug that may cause data corruption for qcow2
    images as of qemu commit c8bb23cbdbe32f.  We can work around it by
    treating post-EOF fallocates as serializing up until infinity (INT64_MAX
    in practice).
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191101152510.11719-4-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 292d06b925b2787ee6f2430996b95651cae42fce)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/file-posix.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/block/file-posix.c b/block/file-posix.c
index 992eb4a798..c5df61b477 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -2623,6 +2623,42 @@ raw_do_pwrite_zeroes(BlockDriverState *bs, int64_t offset, int bytes,
     RawPosixAIOData acb;
     ThreadPoolFunc *handler;
 
+#ifdef CONFIG_FALLOCATE
+    if (offset + bytes > bs->total_sectors * BDRV_SECTOR_SIZE) {
+        BdrvTrackedRequest *req;
+        uint64_t end;
+
+        /*
+         * This is a workaround for a bug in the Linux XFS driver,
+         * where writes submitted through the AIO interface will be
+         * discarded if they happen beyond a concurrently running
+         * fallocate() that increases the file length (i.e., both the
+         * write and the fallocate() happen beyond the EOF).
+         *
+         * To work around it, we extend the tracked request for this
+         * zero write until INT64_MAX (effectively infinity), and mark
+         * it as serializing.
+         *
+         * We have to enable this workaround for all filesystems and
+         * AIO modes (not just XFS with aio=native), because for
+         * remote filesystems we do not know the host configuration.
+         */
+
+        req = bdrv_co_get_self_request(bs);
+        assert(req);
+        assert(req->type == BDRV_TRACKED_WRITE);
+        assert(req->offset <= offset);
+        assert(req->offset + req->bytes >= offset + bytes);
+
+        end = INT64_MAX & -(uint64_t)bs->bl.request_alignment;
+        req->bytes = end - req->offset;
+        req->overlap_bytes = req->bytes;
+
+        bdrv_mark_request_serialising(req, bs->bl.request_alignment);
+        bdrv_wait_serialising_requests(req);
+    }
+#endif
+
     acb = (RawPosixAIOData) {
         .bs             = bs,
         .aio_fildes     = s->fd,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:55:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:55:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPm8-0001hZ-QI; Tue, 14 Apr 2020 17:55:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPm7-0001hP-Ea
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:07 +0000
X-Inumbo-ID: 1332c3c2-7e79-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1332c3c2-7e79-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:55:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=e2N6bPutYkOI2ifZkZmOsm4kiEI4+HIA+BRXhp8vuOs=; b=hi7gcI7pvilO5DOoAdyMukFb6m
 YrILt2fQds6SP7E3aQpftG3RQ3lHt0XAVoNTF04fVfcpnZQCPkisB6AcXoPfMgaSg6KH+x8iVxD91
 lLup/pcGTeCBzC570mUKjw4P6vvasN7wK3I8gv3H7SDvvGHc22QZt8LxeC1txvIL4ujs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPm6-0008AD-HF
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:06 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPm6-0000zx-GI
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:06 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] file-posix: Handle undetectable alignment
Message-Id: <E1jOPm6-0000zx-GI@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:55:06 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f0d3fa265d074a155164d59af12db72986cfe55d
Author:     Nir Soffer <nirsof@gmail.com>
AuthorDate: Tue Aug 13 21:21:03 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    file-posix: Handle undetectable alignment
    
    In some cases buf_align or request_alignment cannot be detected:
    
    1. With Gluster, buf_align cannot be detected since the actual I/O is
       done on Gluster server, and qemu buffer alignment does not matter.
       Since we don't have alignment requirement, buf_align=1 is the best
       value.
    
    2. With local XFS filesystem, buf_align cannot be detected if reading
       from unallocated area. In this we must align the buffer, but we don't
       know what is the correct size. Using the wrong alignment results in
       I/O error.
    
    3. With Gluster backed by XFS, request_alignment cannot be detected if
       reading from unallocated area. In this case we need to use the
       correct alignment, and failing to do so results in I/O errors.
    
    4. With NFS, the server does not use direct I/O, so both buf_align cannot
       be detected. In this case we don't need any alignment so we can use
       buf_align=1 and request_alignment=1.
    
    These cases seems to work when storage sector size is 512 bytes, because
    the current code starts checking align=512. If the check succeeds
    because alignment cannot be detected we use 512. But this does not work
    for storage with 4k sector size.
    
    To determine if we can detect the alignment, we probe first with
    align=1. If probing succeeds, maybe there are no alignment requirement
    (cases 1, 4) or we are probing unallocated area (cases 2, 3). Since we
    don't have any way to tell, we treat this as undetectable alignment. If
    probing with align=1 fails with EINVAL, but probing with one of the
    expected alignments succeeds, we know that we found a working alignment.
    
    Practically the alignment requirements are the same for buffer
    alignment, buffer length, and offset in file. So in case we cannot
    detect buf_align, we can use request alignment. If we cannot detect
    request alignment, we can fallback to a safe value. To use this logic,
    we probe first request alignment instead of buf_align.
    
    Here is a table showing the behaviour with current code (the value in
    parenthesis is the optimal value).
    
    Case    Sector    buf_align (opt)   request_alignment (opt)     result
    ======================================================================
    1       512       512   (1)          512   (512)                 OK
    1       4096      512   (1)          4096  (4096)                FAIL
    ----------------------------------------------------------------------
    2       512       512   (512)        512   (512)                 OK
    2       4096      512   (4096)       4096  (4096)                FAIL
    ----------------------------------------------------------------------
    3       512       512   (1)          512   (512)                 OK
    3       4096      512   (1)          512   (4096)                FAIL
    ----------------------------------------------------------------------
    4       512       512   (1)          512   (1)                   OK
    4       4096      512   (1)          512   (1)                   OK
    
    Same cases with this change:
    
    Case    Sector    buf_align (opt)   request_alignment (opt)     result
    ======================================================================
    1       512       512   (1)          512   (512)                 OK
    1       4096      4096  (1)          4096  (4096)                OK
    ----------------------------------------------------------------------
    2       512       512   (512)        512   (512)                 OK
    2       4096      4096  (4096)       4096  (4096)                OK
    ----------------------------------------------------------------------
    3       512       4096  (1)          4096  (512)                 OK
    3       4096      4096  (1)          4096  (4096)                OK
    ----------------------------------------------------------------------
    4       512       4096  (1)          4096  (1)                   OK
    4       4096      4096  (1)          4096  (1)                   OK
    
    I tested that provisioning VMs and copying disks on local XFS and
    Gluster with 4k bytes sector size work now, resolving bugs [1],[2].
    I tested also on XFS, NFS, Gluster with 512 bytes sector size.
    
    [1] https://bugzilla.redhat.com/1737256
    [2] https://bugzilla.redhat.com/1738657
    
    Signed-off-by: Nir Soffer <nsoffer@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    
    (cherry picked from commit a6b257a08e3d72219f03e461a52152672fec0612)
    
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/file-posix.c | 36 +++++++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index c5df61b477..be32dd8c51 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -323,6 +323,7 @@ static void raw_probe_alignment(BlockDriverState *bs, int fd, Error **errp)
     BDRVRawState *s = bs->opaque;
     char *buf;
     size_t max_align = MAX(MAX_BLOCKSIZE, getpagesize());
+    size_t alignments[] = {1, 512, 1024, 2048, 4096};
 
     /* For SCSI generic devices the alignment is not really used.
        With buffered I/O, we don't have any restrictions. */
@@ -349,25 +350,38 @@ static void raw_probe_alignment(BlockDriverState *bs, int fd, Error **errp)
     }
 #endif
 
-    /* If we could not get the sizes so far, we can only guess them */
-    if (!s->buf_align) {
+    /*
+     * If we could not get the sizes so far, we can only guess them. First try
+     * to detect request alignment, since it is more likely to succeed. Then
+     * try to detect buf_align, which cannot be detected in some cases (e.g.
+     * Gluster). If buf_align cannot be detected, we fallback to the value of
+     * request_alignment.
+     */
+
+    if (!bs->bl.request_alignment) {
+        int i;
         size_t align;
-        buf = qemu_memalign(max_align, 2 * max_align);
-        for (align = 512; align <= max_align; align <<= 1) {
-            if (raw_is_io_aligned(fd, buf + align, max_align)) {
-                s->buf_align = align;
+        buf = qemu_memalign(max_align, max_align);
+        for (i = 0; i < ARRAY_SIZE(alignments); i++) {
+            align = alignments[i];
+            if (raw_is_io_aligned(fd, buf, align)) {
+                /* Fallback to safe value. */
+                bs->bl.request_alignment = (align != 1) ? align : max_align;
                 break;
             }
         }
         qemu_vfree(buf);
     }
 
-    if (!bs->bl.request_alignment) {
+    if (!s->buf_align) {
+        int i;
         size_t align;
-        buf = qemu_memalign(s->buf_align, max_align);
-        for (align = 512; align <= max_align; align <<= 1) {
-            if (raw_is_io_aligned(fd, buf, align)) {
-                bs->bl.request_alignment = align;
+        buf = qemu_memalign(max_align, 2 * max_align);
+        for (i = 0; i < ARRAY_SIZE(alignments); i++) {
+            align = alignments[i];
+            if (raw_is_io_aligned(fd, buf + align, max_align)) {
+                /* Fallback to request_aligment. */
+                s->buf_align = (align != 1) ? align : bs->bl.request_alignment;
                 break;
             }
         }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:55:19 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:55:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPmJ-0001iV-Sd; Tue, 14 Apr 2020 17:55:19 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPmI-0001iK-1P
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:18 +0000
X-Inumbo-ID: 19379d10-7e79-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 19379d10-7e79-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:55:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=6XCR2rPuBabVGwa6PWfHKjlAjX6fD3gNe61T+851luQ=; b=EuzLhnCq6ENecKWAhKdn5YftFa
 5EkcMiLZRoTDgbImP+eUwqWiN/d7sm4mHQ9uk0wCwQYgJqPHG7H2T7aZzSZaPelf/7JbJ8/BqMkTU
 ZhpaDC1zOklFxCimZvbQL8BEQlg0qFj4pf93yvnegNnwTWG4fNiZKa9f8suuWCADHb34=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPmG-0008AM-KF
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:16 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPmG-00010Z-JK
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:16 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block: posix: Always allocate the first block
Message-Id: <E1jOPmG-00010Z-JK@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:55:16 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3d018ff3bdd8aec260254036b600cfa8d694ced4
Author:     Nir Soffer <nirsof@gmail.com>
AuthorDate: Tue Aug 27 04:05:27 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block: posix: Always allocate the first block
    
    When creating an image with preallocation "off" or "falloc", the first
    block of the image is typically not allocated. When using Gluster
    storage backed by XFS filesystem, reading this block using direct I/O
    succeeds regardless of request length, fooling alignment detection.
    
    In this case we fallback to a safe value (4096) instead of the optimal
    value (512), which may lead to unneeded data copying when aligning
    requests.  Allocating the first block avoids the fallback.
    
    Since we allocate the first block even with preallocation=off, we no
    longer create images with zero disk size:
    
        $ ./qemu-img create -f raw test.raw 1g
        Formatting 'test.raw', fmt=raw size=1073741824
    
        $ ls -lhs test.raw
        4.0K -rw-r--r--. 1 nsoffer nsoffer 1.0G Aug 16 23:48 test.raw
    
    And converting the image requires additional cluster:
    
        $ ./qemu-img measure -f raw -O qcow2 test.raw
        required size: 458752
        fully allocated size: 1074135040
    
    When using format like vmdk with multiple files per image, we allocate
    one block per file:
    
        $ ./qemu-img create -f vmdk -o subformat=twoGbMaxExtentFlat test.vmdk 4g
        Formatting 'test.vmdk', fmt=vmdk size=4294967296 compat6=off hwversion=undefined subformat=twoGbMaxExtentFlat
    
        $ ls -lhs test*.vmdk
        4.0K -rw-r--r--. 1 nsoffer nsoffer 2.0G Aug 27 03:23 test-f001.vmdk
        4.0K -rw-r--r--. 1 nsoffer nsoffer 2.0G Aug 27 03:23 test-f002.vmdk
        4.0K -rw-r--r--. 1 nsoffer nsoffer  353 Aug 27 03:23 test.vmdk
    
    I did quick performance test for copying disks with qemu-img convert to
    new raw target image to Gluster storage with sector size of 512 bytes:
    
        for i in $(seq 10); do
            rm -f dst.raw
            sleep 10
            time ./qemu-img convert -f raw -O raw -t none -T none src.raw dst.raw
        done
    
    Here is a table comparing the total time spent:
    
    Type    Before(s)   After(s)    Diff(%)
    ---------------------------------------
    real      530.028    469.123      -11.4
    user       17.204     10.768      -37.4
    sys        17.881      7.011      -60.7
    
    We can see very clear improvement in CPU usage.
    
    Signed-off-by: Nir Soffer <nsoffer@redhat.com>
    Message-id: 20190827010528.8818-2-nsoffer@redhat.com
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    
    (cherry picked from commit 3a20013fbb26d2a1bd11ef148eefdb1508783787)
    
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/file-posix.c               | 51 ++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/059.out       |  2 +-
 tests/qemu-iotests/150.out       | 11 ---------
 tests/qemu-iotests/150.out.qcow2 | 11 +++++++++
 tests/qemu-iotests/150.out.raw   | 12 ++++++++++
 tests/qemu-iotests/175           | 19 ++++++++++-----
 tests/qemu-iotests/175.out       |  8 +++----
 tests/qemu-iotests/178.out.qcow2 |  4 ++--
 tests/qemu-iotests/221.out       | 12 ++++++----
 tests/qemu-iotests/253.out       | 12 ++++++----
 10 files changed, 110 insertions(+), 32 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index be32dd8c51..2184aa980c 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1674,6 +1674,43 @@ static int handle_aiocb_discard(void *opaque)
     return ret;
 }
 
+/*
+ * Help alignment probing by allocating the first block.
+ *
+ * When reading with direct I/O from unallocated area on Gluster backed by XFS,
+ * reading succeeds regardless of request length. In this case we fallback to
+ * safe alignment which is not optimal. Allocating the first block avoids this
+ * fallback.
+ *
+ * fd may be opened with O_DIRECT, but we don't know the buffer alignment or
+ * request alignment, so we use safe values.
+ *
+ * Returns: 0 on success, -errno on failure. Since this is an optimization,
+ * caller may ignore failures.
+ */
+static int allocate_first_block(int fd, size_t max_size)
+{
+    size_t write_size = (max_size < MAX_BLOCKSIZE)
+        ? BDRV_SECTOR_SIZE
+        : MAX_BLOCKSIZE;
+    size_t max_align = MAX(MAX_BLOCKSIZE, getpagesize());
+    void *buf;
+    ssize_t n;
+    int ret;
+
+    buf = qemu_memalign(max_align, write_size);
+    memset(buf, 0, write_size);
+
+    do {
+        n = pwrite(fd, buf, write_size, 0);
+    } while (n == -1 && errno == EINTR);
+
+    ret = (n == -1) ? -errno : 0;
+
+    qemu_vfree(buf);
+    return ret;
+}
+
 static int handle_aiocb_truncate(void *opaque)
 {
     RawPosixAIOData *aiocb = opaque;
@@ -1713,6 +1750,17 @@ static int handle_aiocb_truncate(void *opaque)
                 /* posix_fallocate() doesn't set errno. */
                 error_setg_errno(errp, -result,
                                  "Could not preallocate new data");
+            } else if (current_length == 0) {
+                /*
+                 * posix_fallocate() uses fallocate() if the filesystem
+                 * supports it, or fallback to manually writing zeroes. If
+                 * fallocate() was used, unaligned reads from the fallocated
+                 * area in raw_probe_alignment() will succeed, hence we need to
+                 * allocate the first block.
+                 *
+                 * Optimize future alignment probing; ignore failures.
+                 */
+                allocate_first_block(fd, offset);
             }
         } else {
             result = 0;
@@ -1774,6 +1822,9 @@ static int handle_aiocb_truncate(void *opaque)
         if (ftruncate(fd, offset) != 0) {
             result = -errno;
             error_setg_errno(errp, -result, "Could not resize file");
+        } else if (current_length == 0 && offset > current_length) {
+            /* Optimize future alignment probing; ignore failures. */
+            allocate_first_block(fd, offset);
         }
         return result;
     default:
diff --git a/tests/qemu-iotests/059.out b/tests/qemu-iotests/059.out
index 4fab42a28c..fe3f861f3c 100644
--- a/tests/qemu-iotests/059.out
+++ b/tests/qemu-iotests/059.out
@@ -27,7 +27,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824000 subformat=twoGbMax
 image: TEST_DIR/t.vmdk
 file format: vmdk
 virtual size: 0.977 TiB (1073741824000 bytes)
-disk size: 16 KiB
+disk size: 1.97 MiB
 Format specific information:
     cid: XXXXXXXX
     parent cid: XXXXXXXX
diff --git a/tests/qemu-iotests/150.out b/tests/qemu-iotests/150.out
deleted file mode 100644
index 2a54e8dcfa..0000000000
--- a/tests/qemu-iotests/150.out
+++ /dev/null
@@ -1,11 +0,0 @@
-QA output created by 150
-
-=== Mapping sparse conversion ===
-
-Offset          Length          File
-
-=== Mapping non-sparse conversion ===
-
-Offset          Length          File
-0               0x100000        TEST_DIR/t.IMGFMT
-*** done
diff --git a/tests/qemu-iotests/150.out.qcow2 b/tests/qemu-iotests/150.out.qcow2
new file mode 100644
index 0000000000..2a54e8dcfa
--- /dev/null
+++ b/tests/qemu-iotests/150.out.qcow2
@@ -0,0 +1,11 @@
+QA output created by 150
+
+=== Mapping sparse conversion ===
+
+Offset          Length          File
+
+=== Mapping non-sparse conversion ===
+
+Offset          Length          File
+0               0x100000        TEST_DIR/t.IMGFMT
+*** done
diff --git a/tests/qemu-iotests/150.out.raw b/tests/qemu-iotests/150.out.raw
new file mode 100644
index 0000000000..3cdc7727a5
--- /dev/null
+++ b/tests/qemu-iotests/150.out.raw
@@ -0,0 +1,12 @@
+QA output created by 150
+
+=== Mapping sparse conversion ===
+
+Offset          Length          File
+0               0x1000          TEST_DIR/t.IMGFMT
+
+=== Mapping non-sparse conversion ===
+
+Offset          Length          File
+0               0x100000        TEST_DIR/t.IMGFMT
+*** done
diff --git a/tests/qemu-iotests/175 b/tests/qemu-iotests/175
index 51e62c8276..7ba28b3c1b 100755
--- a/tests/qemu-iotests/175
+++ b/tests/qemu-iotests/175
@@ -37,14 +37,16 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 # the file size.  This function hides the resulting difference in the
 # stat -c '%b' output.
 # Parameter 1: Number of blocks an empty file occupies
-# Parameter 2: Image size in bytes
+# Parameter 2: Minimal number of blocks in an image
+# Parameter 3: Image size in bytes
 _filter_blocks()
 {
     extra_blocks=$1
-    img_size=$2
+    min_blocks=$2
+    img_size=$3
 
-    sed -e "s/blocks=$extra_blocks\\(\$\\|[^0-9]\\)/nothing allocated/" \
-        -e "s/blocks=$((extra_blocks + img_size / 512))\\(\$\\|[^0-9]\\)/everything allocated/"
+    sed -e "s/blocks=$min_blocks\\(\$\\|[^0-9]\\)/min allocation/" \
+        -e "s/blocks=$((extra_blocks + img_size / 512))\\(\$\\|[^0-9]\\)/max allocation/"
 }
 
 # get standard environment, filters and checks
@@ -60,16 +62,21 @@ size=$((1 * 1024 * 1024))
 touch "$TEST_DIR/empty"
 extra_blocks=$(stat -c '%b' "$TEST_DIR/empty")
 
+# We always write the first byte; check how many blocks this filesystem
+# allocates to match empty image alloation.
+printf "\0" > "$TEST_DIR/empty"
+min_blocks=$(stat -c '%b' "$TEST_DIR/empty")
+
 echo
 echo "== creating image with default preallocation =="
 _make_test_img $size | _filter_imgfmt
-stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $size
+stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $size
 
 for mode in off full falloc; do
     echo
     echo "== creating image with preallocation $mode =="
     IMGOPTS=preallocation=$mode _make_test_img $size | _filter_imgfmt
-    stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $size
+    stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $size
 done
 
 # success, all done
diff --git a/tests/qemu-iotests/175.out b/tests/qemu-iotests/175.out
index 6d9a5ed84e..263e521262 100644
--- a/tests/qemu-iotests/175.out
+++ b/tests/qemu-iotests/175.out
@@ -2,17 +2,17 @@ QA output created by 175
 
 == creating image with default preallocation ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
-size=1048576, nothing allocated
+size=1048576, min allocation
 
 == creating image with preallocation off ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=off
-size=1048576, nothing allocated
+size=1048576, min allocation
 
 == creating image with preallocation full ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=full
-size=1048576, everything allocated
+size=1048576, max allocation
 
 == creating image with preallocation falloc ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=falloc
-size=1048576, everything allocated
+size=1048576, max allocation
  *** done
diff --git a/tests/qemu-iotests/178.out.qcow2 b/tests/qemu-iotests/178.out.qcow2
index 55a8dc926f..9e7d8c44df 100644
--- a/tests/qemu-iotests/178.out.qcow2
+++ b/tests/qemu-iotests/178.out.qcow2
@@ -101,7 +101,7 @@ converted image file size in bytes: 196608
 == raw input image with data (human) ==
 
 Formatting 'TEST_DIR/t.qcow2', fmt=IMGFMT size=1073741824
-required size: 393216
+required size: 458752
 fully allocated size: 1074135040
 wrote 512/512 bytes at offset 512
 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
@@ -257,7 +257,7 @@ converted image file size in bytes: 196608
 
 Formatting 'TEST_DIR/t.qcow2', fmt=IMGFMT size=1073741824
 {
-    "required": 393216,
+    "required": 458752,
     "fully-allocated": 1074135040
 }
 wrote 512/512 bytes at offset 512
diff --git a/tests/qemu-iotests/221.out b/tests/qemu-iotests/221.out
index 9f9dd52bb0..dca024a0c3 100644
--- a/tests/qemu-iotests/221.out
+++ b/tests/qemu-iotests/221.out
@@ -3,14 +3,18 @@ QA output created by 221
 === Check mapping of unaligned raw image ===
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65537
-[{ "start": 0, "length": 66048, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
-[{ "start": 0, "length": 66048, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 61952, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 61952, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
 wrote 1/1 bytes at offset 65536
 1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-[{ "start": 0, "length": 65536, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 61440, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
 { "start": 65536, "length": 1, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
 { "start": 65537, "length": 511, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
-[{ "start": 0, "length": 65536, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 61440, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
 { "start": 65536, "length": 1, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
 { "start": 65537, "length": 511, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
 *** done
diff --git a/tests/qemu-iotests/253.out b/tests/qemu-iotests/253.out
index 607c0baa0b..3d08b305d7 100644
--- a/tests/qemu-iotests/253.out
+++ b/tests/qemu-iotests/253.out
@@ -3,12 +3,16 @@ QA output created by 253
 === Check mapping of unaligned raw image ===
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048575
-[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
-[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 1044480, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 1044480, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
 wrote 65535/65535 bytes at offset 983040
 63.999 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-[{ "start": 0, "length": 983040, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 978944, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
 { "start": 983040, "length": 65536, "depth": 0, "zero": false, "data": true, "offset": OFFSET}]
-[{ "start": 0, "length": 983040, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 978944, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
 { "start": 983040, "length": 65536, "depth": 0, "zero": false, "data": true, "offset": OFFSET}]
 *** done
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:55:29 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:55:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPmT-0001jY-0x; Tue, 14 Apr 2020 17:55:29 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPmR-0001jO-HY
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:27 +0000
X-Inumbo-ID: 1f40b7d2-7e79-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1f40b7d2-7e79-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:55:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=6C9rdUNzPinXTEi34G/7Cuh0VOp/l61FBmkEbZiAuVU=; b=D8IhdI01SMo1I+v31zwRiH8amx
 rFyUUDAQZoBHycwId+f6tubyswjAdp9ONWVTNg7agvBV/W61QOAuSFQAlgJXCHWu6cXZhRRb7oBEb
 8yLnUjKGSFStb9nO1orh5paFw8qDNlAIVSsPLllmdA8SneBdC5dAYjVHwThRGsu5/ioo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPmQ-0008Af-Ny
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:26 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPmQ-00011J-Mf
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] tests: make filemonitor test more robust to
 event ordering
Message-Id: <E1jOPmQ-00011J-Mf@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:55:26 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 54c130493c544573253f5bbdcdb705f3d79377f0
Author:     Daniel P. Berrangé <berrange@redhat.com>
AuthorDate: Wed Aug 21 16:14:27 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    tests: make filemonitor test more robust to event ordering
    
    The ordering of events that are emitted during the rmdir
    test have changed with kernel >= 5.3. Semantically both
    new & old orderings are correct, so we must be able to
    cope with either.
    
    To cope with this, when we see an unexpected event, we
    push it back onto the queue and look and the subsequent
    event to see if that matches instead.
    
    Tested-by: Peter Xu <peterx@redhat.com>
    Tested-by: Wei Yang <richardw.yang@linux.intel.com>
    Tested-by: Cornelia Huck <cohuck@redhat.com>
    Reviewed-by: Thomas Huth <thuth@redhat.com>
    Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
    (cherry picked from commit bf9e0313c27d8e6ecd7f7de3d63e1cb25d8f6311)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/test-util-filemonitor.c | 43 ++++++++++++++++++++++++++++++++++---------
 1 file changed, 34 insertions(+), 9 deletions(-)

diff --git a/tests/test-util-filemonitor.c b/tests/test-util-filemonitor.c
index 46e781c022..301cd2db61 100644
--- a/tests/test-util-filemonitor.c
+++ b/tests/test-util-filemonitor.c
@@ -45,6 +45,11 @@ typedef struct {
     const char *filedst;
     int64_t *watchid;
     int eventid;
+    /*
+     * Only valid with OP_EVENT - this event might be
+     * swapped with the next OP_EVENT
+     */
+    bool swapnext;
 } QFileMonitorTestOp;
 
 typedef struct {
@@ -98,6 +103,10 @@ qemu_file_monitor_test_handler(int64_t id,
     QFileMonitorTestData *data = opaque;
     QFileMonitorTestRecord *rec = g_new0(QFileMonitorTestRecord, 1);
 
+    if (debug) {
+        g_printerr("Queue event id %" PRIx64 " event %d file %s\n",
+                   id, event, filename);
+    }
     rec->id = id;
     rec->event = event;
     rec->filename = g_strdup(filename);
@@ -125,7 +134,8 @@ qemu_file_monitor_test_record_free(QFileMonitorTestRecord *rec)
  * to wait for the event to be queued for us.
  */
 static QFileMonitorTestRecord *
-qemu_file_monitor_test_next_record(QFileMonitorTestData *data)
+qemu_file_monitor_test_next_record(QFileMonitorTestData *data,
+                                   QFileMonitorTestRecord *pushback)
 {
     GTimer *timer = g_timer_new();
     QFileMonitorTestRecord *record = NULL;
@@ -139,9 +149,15 @@ qemu_file_monitor_test_next_record(QFileMonitorTestData *data)
     }
     if (data->records) {
         record = data->records->data;
-        tmp = data->records;
-        data->records = g_list_remove_link(data->records, tmp);
-        g_list_free(tmp);
+        if (pushback) {
+            data->records->data = pushback;
+        } else {
+            tmp = data->records;
+            data->records = g_list_remove_link(data->records, tmp);
+            g_list_free(tmp);
+        }
+    } else if (pushback) {
+        qemu_file_monitor_test_record_free(pushback);
     }
     qemu_mutex_unlock(&data->lock);
 
@@ -158,13 +174,15 @@ static bool
 qemu_file_monitor_test_expect(QFileMonitorTestData *data,
                               int64_t id,
                               QFileMonitorEvent event,
-                              const char *filename)
+                              const char *filename,
+                              bool swapnext)
 {
     QFileMonitorTestRecord *rec;
     bool ret = false;
 
-    rec = qemu_file_monitor_test_next_record(data);
+    rec = qemu_file_monitor_test_next_record(data, NULL);
 
+ retry:
     if (!rec) {
         g_printerr("Missing event watch id %" PRIx64 " event %d file %s\n",
                    id, event, filename);
@@ -172,6 +190,11 @@ qemu_file_monitor_test_expect(QFileMonitorTestData *data,
     }
 
     if (id != rec->id) {
+        if (swapnext) {
+            rec = qemu_file_monitor_test_next_record(data, rec);
+            swapnext = false;
+            goto retry;
+        }
         g_printerr("Expected watch id %" PRIx64 " but got %" PRIx64 "\n",
                    id, rec->id);
         goto cleanup;
@@ -347,7 +370,8 @@ test_file_monitor_events(void)
           .filesrc = "fish", },
         { .type = QFILE_MONITOR_TEST_OP_EVENT,
           .filesrc = "", .watchid = &watch4,
-          .eventid = QFILE_MONITOR_EVENT_IGNORED },
+          .eventid = QFILE_MONITOR_EVENT_IGNORED,
+          .swapnext = true },
         { .type = QFILE_MONITOR_TEST_OP_EVENT,
           .filesrc = "fish", .watchid = &watch0,
           .eventid = QFILE_MONITOR_EVENT_DELETED },
@@ -493,8 +517,9 @@ test_file_monitor_events(void)
                 g_printerr("Event id=%" PRIx64 " event=%d file=%s\n",
                            *op->watchid, op->eventid, op->filesrc);
             }
-            if (!qemu_file_monitor_test_expect(
-                    &data, *op->watchid, op->eventid, op->filesrc))
+            if (!qemu_file_monitor_test_expect(&data, *op->watchid,
+                                               op->eventid, op->filesrc,
+                                               op->swapnext))
                 goto cleanup;
             break;
         case QFILE_MONITOR_TEST_OP_CREATE:
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:55:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:55:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPmc-0001kx-3d; Tue, 14 Apr 2020 17:55:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPmb-0001kO-Is
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:37 +0000
X-Inumbo-ID: 2517130f-7e79-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2517130f-7e79-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:55:37 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=B7k3+6Y3qJ+GUz63UjEKB07CrxSkiIPLjpI83fk4Q6c=; b=IE3DKUF87dMvaxV5s8pxLFmLA6
 tBsVmJpOhkjtn75pHqAbjoIkFRuusFP5qNgsfi7pptIIsPK6VpXC+URjLGINIcpILqWdAqK8brI9d
 4LEO6zhuvXydXJOiVRGy1foM8onwU8lQ9K3gQFfJoKu306MRMFZNbDN3JuhxUNUG9XNU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPma-0008Ao-QW
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPma-00011q-Pj
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] memory: Align MemoryRegionSections fields
Message-Id: <E1jOPma-00011q-Pj@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:55:36 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c0aca9352d51c102c55fe29ce5c1bf8e74a5183e
Author:     Dr. David Alan Gilbert <dgilbert@redhat.com>
AuthorDate: Wed Aug 14 18:55:33 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:23:49 2019 -0600

    memory: Align MemoryRegionSections fields
    
    MemoryRegionSection includes an Int128 'size' field;
    on some platforms the compiler causes an alignment of this to
    a 128bit boundary, leaving 8 bytes of dead space.
    This deadspace can be filled with junk.
    
    Move the size field to the top avoiding unnecessary alignment.
    
    Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Message-Id: <20190814175535.2023-2-dgilbert@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 44f85d3276397cfa2cfa379c61430405dad4e644)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/exec/memory.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/exec/memory.h b/include/exec/memory.h
index bb0961ddb9..e28d79cc59 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -487,10 +487,10 @@ static inline FlatView *address_space_to_flatview(AddressSpace *as)
  * @nonvolatile: this section is non-volatile
  */
 struct MemoryRegionSection {
+    Int128 size;
     MemoryRegion *mr;
     FlatView *fv;
     hwaddr offset_within_region;
-    Int128 size;
     hwaddr offset_within_address_space;
     bool readonly;
     bool nonvolatile;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:55:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:55:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPmm-0001mK-5g; Tue, 14 Apr 2020 17:55:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPml-0001mB-Jd
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:47 +0000
X-Inumbo-ID: 2b4545f2-7e79-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2b4545f2-7e79-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:55:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=QSiRCzX2d6w819L1uB6R7EdJqNv7O+Sr8pV0ipzMo8E=; b=ePe/c3khUjXiVpPAs50RBoy0ug
 0YJyP8+/JGpv6MgfxjtG5fQKixyf4ISuScgNtBYAce2vzE3sZqDG9NBjwzFEfcL9Z8cEC3BG06xHq
 ByhTPJbX9RnjWeyE7XCDG65X9Vhvp4slFSeUCfHItSdJhoahGMHefvoE/0kzWRKgPqVw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPmk-0008B2-Sz
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:46 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPmk-00012Q-S9
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:46 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] memory: Provide an equality function for
 MemoryRegionSections
Message-Id: <E1jOPmk-00012Q-S9@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:55:46 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 42b6571357a083f721a27daa6dfdc69e4bd516bd
Author:     Dr. David Alan Gilbert <dgilbert@redhat.com>
AuthorDate: Wed Aug 14 18:55:34 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:23:54 2019 -0600

    memory: Provide an equality function for MemoryRegionSections
    
    Provide a comparison function that checks all the fields are the same.
    
    Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Message-Id: <20190814175535.2023-3-dgilbert@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 9366cf02e4e31c2a8128904d4d8290a0fad5f888)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/exec/memory.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/include/exec/memory.h b/include/exec/memory.h
index e28d79cc59..611a89122d 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -496,6 +496,18 @@ struct MemoryRegionSection {
     bool nonvolatile;
 };
 
+static inline bool MemoryRegionSection_eq(MemoryRegionSection *a,
+                                          MemoryRegionSection *b)
+{
+    return a->mr == b->mr &&
+           a->fv == b->fv &&
+           a->offset_within_region == b->offset_within_region &&
+           a->offset_within_address_space == b->offset_within_address_space &&
+           int128_eq(a->size, b->size) &&
+           a->readonly == b->readonly &&
+           a->nonvolatile == b->nonvolatile;
+}
+
 /**
  * memory_region_init: Initialize a memory region
  *
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:55:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:55:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPmw-0001nW-8M; Tue, 14 Apr 2020 17:55:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPmv-0001nN-JI
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:57 +0000
X-Inumbo-ID: 3143539a-7e79-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3143539a-7e79-11ea-9e09-bc764e2007e4;
 Tue, 14 Apr 2020 17:55:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=JBGA4hz9DCP4h3dnWxlluimKxb4QeHfXsnUr+nEoWLU=; b=4JMbGTV8CJEkEXa+qOEuHr3rxa
 X/cvUUX+Q1ovjjPGfoiJK1ZzCJK/EIpr5q4wAqcb2PiSsfRqRIzoNQvsDWa6ob7/r1KnrHI9SP6Ca
 JkKZdrIanfA17vjt1oz97HXnSzvUraU+lkCSS78SxkTOzr4kNHY08t9x7mJiwxoNU7ak=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPmu-0008BF-VT
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:56 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPmu-00013P-UZ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:55:56 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] vhost: Fix memory region section comparison
Message-Id: <E1jOPmu-00013P-UZ@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:55:56 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 145b562990d252aeca7c37c21eb7e7110cfceffc
Author:     Dr. David Alan Gilbert <dgilbert@redhat.com>
AuthorDate: Wed Aug 14 18:55:35 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:23:54 2019 -0600

    vhost: Fix memory region section comparison
    
    Using memcmp to compare structures wasn't safe,
    as I found out on ARM when I was getting falce miscompares.
    
    Use the helper function for comparing the MRSs.
    
    Fixes: ade6d081fc33948e56e6 ("vhost: Regenerate region list from changed sections list")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
    Message-Id: <20190814175535.2023-4-dgilbert@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 3fc4a64cbaed2ddee4c60ddc06740b320e18ab82)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/virtio/vhost.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index bc899fc60e..2ef4bc720f 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -451,8 +451,13 @@ static void vhost_commit(MemoryListener *listener)
         changed = true;
     } else {
         /* Same size, lets check the contents */
-        changed = n_old_sections && memcmp(dev->mem_sections, old_sections,
-                         n_old_sections * sizeof(old_sections[0])) != 0;
+        for (int i = 0; i < n_old_sections; i++) {
+            if (!MemoryRegionSection_eq(&old_sections[i],
+                                        &dev->mem_sections[i])) {
+                changed = true;
+                break;
+            }
+        }
     }
 
     trace_vhost_commit(dev->started, changed);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:56:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:56:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPn6-0001oR-AT; Tue, 14 Apr 2020 17:56:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPn5-0001oK-Pn
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:07 +0000
X-Inumbo-ID: 3746f742-7e79-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3746f742-7e79-11ea-83d8-bc764e2007e4;
 Tue, 14 Apr 2020 17:56:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=yK2k/91aPbHHv3tGZEYwCVkrRB/ngSOeBmAK8hENZIs=; b=vf/cQPQjgZeZrtv4VoGyfu4nKf
 3gV9bLTthevLdAMQtI/iKXtgxMMUWa58pgCitHF3TbBH6dwnF1DnEC85xCMCROecev/Yeb/FQ0ejO
 HSMXeBTdg0iOQ8RSa8OK1aKnZirc9Hjbw72aId+J9TNseE/ybLjKtZxUqbrfvlussd1s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPn5-0008C5-1r
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:07 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPn5-00014b-0o
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:07 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] block/create: Do not abort if a block driver
 is not available
Message-Id: <E1jOPn5-00014b-0o@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:56:07 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 088f1e8fd9e790bc5766bd43af134230abcff6dd
Author:     Philippe Mathieu-Daudé <philmd@redhat.com>
AuthorDate: Thu Sep 12 00:08:49 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:31:38 2019 -0600

    block/create: Do not abort if a block driver is not available
    
    The 'blockdev-create' QMP command was introduced as experimental
    feature in commit b0292b851b8, using the assert() debug call.
    It got promoted to 'stable' command in 3fb588a0f2c, but the
    assert call was not removed.
    
    Some block drivers are optional, and bdrv_find_format() might
    return a NULL value, triggering the assertion.
    
    Stable code is not expected to abort, so return an error instead.
    
    This is easily reproducible when libnfs is not installed:
    
      ./configure
      [...]
      module support    no
      Block whitelist (rw)
      Block whitelist (ro)
      libiscsi support  yes
      libnfs support    no
      [...]
    
    Start QEMU:
    
      $ qemu-system-x86_64 -S -qmp unix:/tmp/qemu.qmp,server,nowait
    
    Send the 'blockdev-create' with the 'nfs' driver:
    
      $ ( cat << 'EOF'
      {'execute': 'qmp_capabilities'}
      {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
      EOF
      ) | socat STDIO UNIX:/tmp/qemu.qmp
      {"QMP": {"version": {"qemu": {"micro": 50, "minor": 1, "major": 4}, "package": "v4.1.0-733-g89ea03a7dc"}, "capabilities": ["oob"]}}
      {"return": {}}
    
    QEMU crashes:
    
      $ gdb qemu-system-x86_64 core
      Program received signal SIGSEGV, Segmentation fault.
      (gdb) bt
      #0  0x00007ffff510957f in raise () at /lib64/libc.so.6
      #1  0x00007ffff50f3895 in abort () at /lib64/libc.so.6
      #2  0x00007ffff50f3769 in _nl_load_domain.cold.0 () at /lib64/libc.so.6
      #3  0x00007ffff5101a26 in .annobin_assert.c_end () at /lib64/libc.so.6
      #4  0x0000555555d7e1f1 in qmp_blockdev_create (job_id=0x555556baee40 "x", options=0x555557666610, errp=0x7fffffffc770) at block/create.c:69
      #5  0x0000555555c96b52 in qmp_marshal_blockdev_create (args=0x7fffdc003830, ret=0x7fffffffc7f8, errp=0x7fffffffc7f0) at qapi/qapi-commands-block-core.c:1314
      #6  0x0000555555deb0a0 in do_qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false, errp=0x7fffffffc898) at qapi/qmp-dispatch.c:131
      #7  0x0000555555deb2a1 in qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false) at qapi/qmp-dispatch.c:174
    
    With this patch applied, QEMU returns a QMP error:
    
      {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
      {"id": "x", "error": {"class": "GenericError", "desc": "Block driver 'nfs' not found or not supported"}}
    
    Cc: qemu-stable@nongnu.org
    Reported-by: Xu Tian <xutian@redhat.com>
    Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit d90d5cae2b10efc0e8d0b3cc91ff16201853d3ba)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/create.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/block/create.c b/block/create.c
index 95341219ef..de5e97bb18 100644
--- a/block/create.c
+++ b/block/create.c
@@ -63,9 +63,13 @@ void qmp_blockdev_create(const char *job_id, BlockdevCreateOptions *options,
     const char *fmt = BlockdevDriver_str(options->driver);
     BlockDriver *drv = bdrv_find_format(fmt);
 
+    if (!drv) {
+        error_setg(errp, "Block driver '%s' not found or not supported", fmt);
+        return;
+    }
+
     /* If the driver is in the schema, we know that it exists. But it may not
      * be whitelisted. */
-    assert(drv);
     if (bdrv_uses_whitelist() && !bdrv_is_whitelisted(drv, false)) {
         error_setg(errp, "Driver is not whitelisted");
         return;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:56:19 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:56:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPnH-0001pS-Cs; Tue, 14 Apr 2020 17:56:19 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPnF-0001pJ-WD
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:18 +0000
X-Inumbo-ID: 3d47520e-7e79-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3d47520e-7e79-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:56:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=djFc0CQ08v4E8lCMwnIFzIpRYvbJOHt2EkZYbjR8LBo=; b=yoVdq60/Ir65vKl4NT2DMgDa4o
 nvGRzqJiU7Ak2FnGtGMWPUXZ3nN/QHmbt7kdNmzxhPv7VGb5hudsT97S9FbHERE/8nRfS/TCJIeKo
 wUsobWquVqiPvN/PG6kd5XXrIOJam/822mdmyvsSxvsjkzWSbJ98Y+vD3KuTfW2anEsU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnF-0008CE-4L
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:17 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnF-00015d-3Y
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:17 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] mirror: Keep mirror_top_bs drained after
 dropping permissions
Message-Id: <E1jOPnF-00015d-3Y@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:56:17 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e092a17d3825a8f2c93cb429aaa5d857b579b64c
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Mon Jul 22 17:44:27 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:31:49 2019 -0600

    mirror: Keep mirror_top_bs drained after dropping permissions
    
    mirror_top_bs is currently implicitly drained through its connection to
    the source or the target node. However, the drain section for target_bs
    ends early after moving mirror_top_bs from src to target_bs, so that
    requests can already be restarted while mirror_top_bs is still present
    in the chain, but has dropped all permissions and therefore runs into an
    assertion failure like this:
    
        qemu-system-x86_64: block/io.c:1634: bdrv_co_write_req_prepare:
        Assertion `child->perm & BLK_PERM_WRITE' failed.
    
    Keep mirror_top_bs drained until all graph changes have completed.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit d2da5e288a2e71e82866c8fdefd41b5727300124)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/mirror.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/block/mirror.c b/block/mirror.c
index 0e3f7923cf..681b305de6 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -661,7 +661,10 @@ static int mirror_exit_common(Job *job)
     s->target = NULL;
 
     /* We don't access the source any more. Dropping any WRITE/RESIZE is
-     * required before it could become a backing file of target_bs. */
+     * required before it could become a backing file of target_bs. Not having
+     * these permissions any more means that we can't allow any new requests on
+     * mirror_top_bs from now on, so keep it drained. */
+    bdrv_drained_begin(mirror_top_bs);
     bs_opaque->stop = true;
     bdrv_child_refresh_perms(mirror_top_bs, mirror_top_bs->backing,
                              &error_abort);
@@ -729,6 +732,7 @@ static int mirror_exit_common(Job *job)
     bs_opaque->job = NULL;
 
     bdrv_drained_end(src);
+    bdrv_drained_end(mirror_top_bs);
     s->in_drain = false;
     bdrv_unref(mirror_top_bs);
     bdrv_unref(src);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:56:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:56:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPnQ-0001qd-HD; Tue, 14 Apr 2020 17:56:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPnP-0001qV-OJ
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:27 +0000
X-Inumbo-ID: 43486170-7e79-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 43486170-7e79-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 17:56:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=O/qHpJwbgcmneYpOzKD3aLbdCsirrni+Vl3SDg6Oggo=; b=FB+gz9bzkZivkxy7Me/ys+e+3c
 pNb4n5TuBTJWxwjWxUrNOROst4Gojbc6R857YPMVxS19/B4cZQycu8qkDQmvFr4UIWN9M8Y7P6gaJ
 NvHIfyqtFXTgIloOOl/UTvDy67lQnh+GM1HGJ3+2T/oVc5bTBhNgtAOUFJl+VrDGM+P4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnP-0008CN-6h
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:27 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnP-00016R-5v
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:27 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] Update version for 4.1.1 release
Message-Id: <E1jOPnP-00016R-5v@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:56:27 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 99c5874a9b6c9f70aef285d6eff85d4f46de3c52
Author:     Michael Roth <mdroth@linux.vnet.ibm.com>
AuthorDate: Thu Nov 14 12:04:03 2019 -0600
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Thu Nov 14 12:04:03 2019 -0600

    Update version for 4.1.1 release
    
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 VERSION | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/VERSION b/VERSION
index ee74734aa2..627a3f43a6 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.1.0
+4.1.1
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:56:39 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:56:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPnb-0001sR-JX; Tue, 14 Apr 2020 17:56:39 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPna-0001sJ-9G
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:38 +0000
X-Inumbo-ID: 495a3ab6-7e79-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 495a3ab6-7e79-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:56:37 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZkhRDciaQAf8tiDYWJOwlCMqicT0ofq7SJc2l0JM39g=; b=cGAKKwOVE5SVIK+S/rZSFPGjRb
 9MmMKV83ynw345PcbQZuXb0Y7DGr4HRx6iL4AFXYEAj0rIKAXmgiqnqgholrrOQJpz2XvnfRb+EaZ
 riHsuRofRc7nCyQqqxI7oRHg3pe434+p7kUAXrn1EEyI+7S+bQtQzm4zm+mZMmT7zWxA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnZ-0008CW-C7
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:37 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnZ-000176-BA
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:37 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] Merge tag 'v4.1.1' of
 https://git.qemu.org/git/qemu into HEAD
Message-Id: <E1jOPnZ-000176-BA@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:56:37 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2865b67da41570c5acbb0e0761535b0401a8a54a
Merge: 933ebad2470a169504799a1d95b8e410bd9847ef 99c5874a9b6c9f70aef285d6eff85d4f46de3c52
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Tue Apr 14 18:33:00 2020 +0100
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Tue Apr 14 18:33:00 2020 +0100

    Merge tag 'v4.1.1' of https://git.qemu.org/git/qemu into HEAD
    
    Fix conflict in hw/xen/xen-bus.c. Basically ignore 4.1.1 version and
    use the version of the file already in qemu-xen as it has more patches
    applied.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>

 VERSION                                            |    2 +-
 block/backup.c                                     |   17 +-
 block/create.c                                     |    6 +-
 block/curl.c                                       |  125 +-
 block/file-posix.c                                 |  200 +-
 block/io.c                                         |  413 +-
 block/mirror.c                                     |   19 +-
 block/nfs.c                                        |    6 +-
 block/qcow2-bitmap.c                               |   14 +-
 block/qcow2-cluster.c                              |   12 +-
 block/qcow2-refcount.c                             |    2 +
 block/qcow2.c                                      |    9 +-
 block/qcow2.h                                      |    2 +-
 block/snapshot.c                                   |   26 +-
 block/vpc.c                                        |    3 +-
 blockjob.c                                         |   17 +-
 contrib/libvhost-user/libvhost-user.c              |    3 +-
 dma-helpers.c                                      |   13 +-
 hw/arm/boot.c                                      |    2 +
 hw/block/dataplane/virtio-blk.c                    |    3 +
 hw/core/loader.c                                   |    2 +-
 hw/i386/pc.c                                       |   14 +-
 hw/ide/ahci.c                                      |    3 -
 hw/ide/core.c                                      |   14 -
 hw/net/virtio-net.c                                |   27 +-
 hw/s390x/s390-pci-bus.c                            |    7 +-
 hw/scsi/lsi53c895a.c                               |   41 +-
 hw/virtio/vhost.c                                  |    9 +-
 hw/virtio/virtio.c                                 |    7 +
 include/block/block_int.h                          |    4 +
 include/exec/memory.h                              |   14 +-
 include/hw/virtio/virtio-net.h                     |    2 +
 include/hw/virtio/virtio.h                         |    6 +
 include/qemu/coroutine.h                           |   15 +
 include/qemu/hbitmap.h                             |    5 +
 include/qemu/iov.h                                 |    9 +-
 net/colo-compare.c                                 |    6 +-
 net/vhost-user.c                                   |    4 +
 roms/Makefile.edk2                                 |    7 +-
 scripts/make-release                               |    8 +
 scsi/pr-manager.c                                  |    1 -
 target/alpha/helper.c                              |    4 +-
 target/arm/translate-vfp.inc.c                     |    7 +-
 target/arm/translate.c                             |   21 +-
 target/s390x/translate_vx.inc.c                    |    2 +-
 target/xtensa/core-test_mmuhifi_c3.c               |    3 +-
 target/xtensa/core-test_mmuhifi_c3/core-isa.h      |  116 +-
 .../xtensa/core-test_mmuhifi_c3/gdb-config.inc.c   |  114 +-
 .../core-test_mmuhifi_c3/xtensa-modules.inc.c      | 6384 ++++++++++----------
 tests/acceptance/pc_cpu_hotplug_props.py           |   35 +
 tests/qemu-iotests/030                             |    3 +-
 tests/qemu-iotests/040                             |    3 +-
 tests/qemu-iotests/041                             |    3 +-
 tests/qemu-iotests/044                             |    3 +-
 tests/qemu-iotests/045                             |    3 +-
 tests/qemu-iotests/055                             |    3 +-
 tests/qemu-iotests/056                             |    3 +-
 tests/qemu-iotests/057                             |    3 +-
 tests/qemu-iotests/059.out                         |    2 +-
 tests/qemu-iotests/065                             |    3 +-
 tests/qemu-iotests/096                             |    3 +-
 tests/qemu-iotests/118                             |    3 +-
 tests/qemu-iotests/124                             |    3 +-
 tests/qemu-iotests/129                             |    3 +-
 tests/qemu-iotests/132                             |    3 +-
 tests/qemu-iotests/139                             |    3 +-
 tests/qemu-iotests/147                             |    5 +-
 tests/qemu-iotests/148                             |    3 +-
 tests/qemu-iotests/150.out                         |   11 -
 tests/qemu-iotests/150.out.qcow2                   |   11 +
 tests/qemu-iotests/150.out.raw                     |   12 +
 tests/qemu-iotests/151                             |    3 +-
 tests/qemu-iotests/152                             |    3 +-
 tests/qemu-iotests/155                             |    3 +-
 tests/qemu-iotests/163                             |    3 +-
 tests/qemu-iotests/165                             |    3 +-
 tests/qemu-iotests/169                             |    3 +-
 tests/qemu-iotests/175                             |   19 +-
 tests/qemu-iotests/175.out                         |    8 +-
 tests/qemu-iotests/178.out.qcow2                   |    4 +-
 tests/qemu-iotests/196                             |    3 +-
 tests/qemu-iotests/199                             |    3 +-
 tests/qemu-iotests/205                             |    3 +-
 tests/qemu-iotests/221.out                         |   12 +-
 tests/qemu-iotests/245                             |    3 +-
 tests/qemu-iotests/253.out                         |   12 +-
 tests/qemu-iotests/265                             |   67 +
 tests/qemu-iotests/265.out                         |    6 +
 tests/qemu-iotests/266                             |  153 +
 tests/qemu-iotests/266.out                         |  137 +
 tests/qemu-iotests/267                             |  168 +
 tests/qemu-iotests/267.out                         |  182 +
 tests/qemu-iotests/270                             |   83 +
 tests/qemu-iotests/270.out                         |    9 +
 tests/qemu-iotests/272                             |   79 +
 tests/qemu-iotests/272.out                         |   10 +
 tests/qemu-iotests/common.filter                   |   11 +-
 tests/qemu-iotests/common.rc                       |   20 +
 tests/qemu-iotests/group                           |    5 +
 tests/qemu-iotests/iotests.py                      |   42 +-
 tests/test-hbitmap.c                               |    2 +-
 tests/test-util-filemonitor.c                      |   43 +-
 ui/cocoa.m                                         |   12 +
 util/hbitmap.c                                     |   12 +
 util/iov.c                                         |  143 +-
 105 files changed, 5372 insertions(+), 3771 deletions(-)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:56:49 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:56:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPnl-0001uD-Lp; Tue, 14 Apr 2020 17:56:49 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPnk-0001tF-9Q
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:48 +0000
X-Inumbo-ID: 4f5b5c4c-7e79-11ea-8989-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4f5b5c4c-7e79-11ea-8989-12813bfff9fa;
 Tue, 14 Apr 2020 17:56:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=tHNiGWffnRvHqkVCfsfbdKkraNja3uXMs+7Nqtg8GZ0=; b=AsooHlVLlfIw96i2Hi1LPMT142
 rstHMzlgbJEkowztLz4rmHH5beUrdCDXMUDPP01B39bztMXDiYamVk+yz4ulWfE4czJJNmY8EwTlZ
 7QYc8Qk/hZd6IXkfUmNZsQy7bV8HcQByNmhvCk2hiYYr7YDK2MPgEsZCtB7hiWuiNeJA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnj-0008Ch-Ez
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:47 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnj-00018G-Dx
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:47 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] xen-bus/block: explicitly assign event
 channels to an AioContext
Message-Id: <E1jOPnj-00018G-Dx@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:56:47 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2c38e9982f671e367e139a723b4bd9f3993fc61f
Author:     Paul Durrant <pdurrant@amazon.com>
AuthorDate: Mon Dec 16 14:34:51 2019 +0000
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Tue Apr 14 18:38:05 2020 +0100

    xen-bus/block: explicitly assign event channels to an AioContext
    
    It is not safe to close an event channel from the QEMU main thread when
    that channel's poller is running in IOThread context.
    
    This patch adds a new xen_device_set_event_channel_context() function
    to explicitly assign the channel AioContext, and modifies
    xen_device_bind_event_channel() to initially assign the channel's poller
    to the QEMU main thread context. The code in xen-block's dataplane is
    then modified to assign the channel to IOThread context during
    xen_block_dataplane_start() and de-assign it during in
    xen_block_dataplane_stop(), such that the channel is always assigned
    back to main thread context before it is closed. aio_set_fd_handler()
    already deals with all the necessary synchronization when moving an fd
    between AioContext-s so no extra code is needed to manage this.
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Paul Durrant <pdurrant@amazon.com>
    Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
    Message-Id: <20191216143451.19024-1-pdurrant@amazon.com>
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    (cherry picked from commit 32d0b7be68216f130dc962533c6fc2f9ad848a8b)
---
 hw/block/dataplane/xen-block.c | 20 ++++++++++++++++++--
 hw/xen/xen-bus.c               | 27 +++++++++++++++++++++++----
 include/hw/xen/xen-bus.h       |  5 ++++-
 3 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.c
index 0f200c5fb0..18ba4ac897 100644
--- a/hw/block/dataplane/xen-block.c
+++ b/hw/block/dataplane/xen-block.c
@@ -685,12 +685,24 @@ void xen_block_dataplane_stop(XenBlockDataPlane *dataplane)
         return;
     }
 
+    xendev = dataplane->xendev;
+
     aio_context_acquire(dataplane->ctx);
+    if (dataplane->event_channel) {
+        /* Only reason for failure is a NULL channel */
+        xen_device_set_event_channel_context(xendev, dataplane->event_channel,
+                                             qemu_get_aio_context(),
+                                             &error_abort);
+    }
     /* Xen doesn't have multiple users for nodes, so this can't fail */
     blk_set_aio_context(dataplane->blk, qemu_get_aio_context(), &error_abort);
     aio_context_release(dataplane->ctx);
 
-    xendev = dataplane->xendev;
+    /*
+     * Now that the context has been moved onto the main thread, cancel
+     * further processing.
+     */
+    qemu_bh_cancel(dataplane->bh);
 
     if (dataplane->event_channel) {
         Error *local_err = NULL;
@@ -807,7 +819,7 @@ void xen_block_dataplane_start(XenBlockDataPlane *dataplane,
     }
 
     dataplane->event_channel =
-        xen_device_bind_event_channel(xendev, dataplane->ctx, event_channel,
+        xen_device_bind_event_channel(xendev, event_channel,
                                       xen_block_dataplane_event, dataplane,
                                       &local_err);
     if (local_err) {
@@ -818,7 +830,11 @@ void xen_block_dataplane_start(XenBlockDataPlane *dataplane,
     aio_context_acquire(dataplane->ctx);
     /* If other users keep the BlockBackend in the iothread, that's ok */
     blk_set_aio_context(dataplane->blk, dataplane->ctx, NULL);
+    /* Only reason for failure is a NULL channel */
+    xen_device_set_event_channel_context(xendev, dataplane->event_channel,
+                                         dataplane->ctx, &error_abort);
     aio_context_release(dataplane->ctx);
+
     return;
 
 stop:
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 63469e0cf9..cf79c5e3a8 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -1089,8 +1089,26 @@ static void xen_device_event(void *opaque)
     }
 }
 
+void xen_device_set_event_channel_context(XenDevice *xendev,
+                                          XenEventChannel *channel,
+                                          AioContext *ctx,
+                                          Error **errp)
+{
+    if (!channel) {
+        error_setg(errp, "bad channel");
+        return;
+    }
+
+    if (channel->ctx)
+        aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
+                           NULL, NULL, NULL, NULL);
+
+    channel->ctx = ctx;
+    aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
+                       xen_device_event, NULL, xen_device_poll, channel);
+}
+
 XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
-                                               AioContext *ctx,
                                                unsigned int port,
                                                XenEventHandler handler,
                                                void *opaque, Error **errp)
@@ -1116,9 +1134,10 @@ XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
     channel->handler = handler;
     channel->opaque = opaque;
 
-    channel->ctx = ctx;
-    aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
-                       xen_device_event, NULL, xen_device_poll, channel);
+    /* Only reason for failure is a NULL channel */
+    xen_device_set_event_channel_context(xendev, channel,
+                                         qemu_get_aio_context(),
+                                         &error_abort);
 
     QLIST_INSERT_HEAD(&xendev->event_channels, channel, list);
 
diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h
index 3d5532258d..c18c1372af 100644
--- a/include/hw/xen/xen-bus.h
+++ b/include/hw/xen/xen-bus.h
@@ -128,10 +128,13 @@ void xen_device_copy_grant_refs(XenDevice *xendev, bool to_domain,
 typedef bool (*XenEventHandler)(void *opaque);
 
 XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
-                                               AioContext *ctx,
                                                unsigned int port,
                                                XenEventHandler handler,
                                                void *opaque, Error **errp);
+void xen_device_set_event_channel_context(XenDevice *xendev,
+                                          XenEventChannel *channel,
+                                          AioContext *ctx,
+                                          Error **errp);
 void xen_device_notify_event_channel(XenDevice *xendev,
                                      XenEventChannel *channel,
                                      Error **errp);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 17:56:59 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 17:56:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOPnv-0001vR-Nu; Tue, 14 Apr 2020 17:56:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOPnu-0001vI-BK
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:58 +0000
X-Inumbo-ID: 55602956-7e79-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 55602956-7e79-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 17:56:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=z1n7eMV9788jhgN97e5ojX6vRjdNiukBQd9ywhWIPEo=; b=lsy7QbtdYnBfMtj23YMDuq4Sj1
 VqOp77OvYDS3gHuLYLJevlsD6yuREBZfD+yqhuaBULlKJr3lK80N1L/SVzbzBAXaMpwmuIXj5z13O
 /EVszSNQIGNHP/JfMtMj77IEBsI0539Tb8WPAa5fn1A5D2+yk6edIR+60vWosMtUy1B8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnt-0008Dr-ID
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:57 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOPnt-00018r-HF
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 17:56:57 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging-4.13] xen-block: Fix double qlist remove and
 request leak
Message-Id: <E1jOPnt-00018r-HF@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 17:56:57 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 730e2b1927e7d911bbd5350714054ddd5912f4ed
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Mon Apr 6 15:02:17 2020 +0100
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Tue Apr 14 18:38:05 2020 +0100

    xen-block: Fix double qlist remove and request leak
    
    Commit a31ca6801c02 ("qemu/queue.h: clear linked list pointers on
    remove") revealed that a request was removed twice from a list, once
    in xen_block_finish_request() and a second time in
    xen_block_release_request() when both function are called from
    xen_block_complete_aio(). But also, the `requests_inflight' counter is
    decreased twice, and thus became negative.
    
    This is a bug that was introduced in bfd0d6366043 ("xen-block: improve
    response latency"), where a `finished' list was removed.
    
    That commit also introduced a leak of request in xen_block_do_aio().
    That function calls xen_block_finish_request() but the request is
    never released after that.
    
    To fix both issue, we do two changes:
    - we squash finish_request() and release_request() together as we want
      to remove a request from 'inflight' list to add it to 'freelist'.
    - before releasing a request, we need to let the other end know the
      result, thus we should call xen_block_send_response() before
      releasing a request.
    
    The first change fixes the double QLIST_REMOVE() as we remove the extra
    call. The second change makes the leak go away because if we want to
    call finish_request(), we need to call a function that does all of
    finish, send response, and release.
    
    Fixes: bfd0d6366043 ("xen-block: improve response latency")
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Message-Id: <20200406140217.1441858-1-anthony.perard@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    [mreitz: Amended commit message as per Paul's suggestions]
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 36d883ba0de8a281072ded2b51e0a711fd002139)
---
 hw/block/dataplane/xen-block.c | 48 ++++++++++++++----------------------------
 1 file changed, 16 insertions(+), 32 deletions(-)

diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.c
index 18ba4ac897..8f712451a1 100644
--- a/hw/block/dataplane/xen-block.c
+++ b/hw/block/dataplane/xen-block.c
@@ -64,6 +64,8 @@ struct XenBlockDataPlane {
     AioContext *ctx;
 };
 
+static int xen_block_send_response(XenBlockRequest *request);
+
 static void reset_request(XenBlockRequest *request)
 {
     memset(&request->req, 0, sizeof(request->req));
@@ -115,23 +117,26 @@ out:
     return request;
 }
 
-static void xen_block_finish_request(XenBlockRequest *request)
+static void xen_block_complete_request(XenBlockRequest *request)
 {
     XenBlockDataPlane *dataplane = request->dataplane;
 
-    QLIST_REMOVE(request, list);
-    dataplane->requests_inflight--;
-}
+    if (xen_block_send_response(request)) {
+        Error *local_err = NULL;
 
-static void xen_block_release_request(XenBlockRequest *request)
-{
-    XenBlockDataPlane *dataplane = request->dataplane;
+        xen_device_notify_event_channel(dataplane->xendev,
+                                        dataplane->event_channel,
+                                        &local_err);
+        if (local_err) {
+            error_report_err(local_err);
+        }
+    }
 
     QLIST_REMOVE(request, list);
+    dataplane->requests_inflight--;
     reset_request(request);
     request->dataplane = dataplane;
     QLIST_INSERT_HEAD(&dataplane->freelist, request, list);
-    dataplane->requests_inflight--;
 }
 
 /*
@@ -246,7 +251,6 @@ static int xen_block_copy_request(XenBlockRequest *request)
 }
 
 static int xen_block_do_aio(XenBlockRequest *request);
-static int xen_block_send_response(XenBlockRequest *request);
 
 static void xen_block_complete_aio(void *opaque, int ret)
 {
@@ -286,7 +290,6 @@ static void xen_block_complete_aio(void *opaque, int ret)
     }
 
     request->status = request->aio_errors ? BLKIF_RSP_ERROR : BLKIF_RSP_OKAY;
-    xen_block_finish_request(request);
 
     switch (request->req.operation) {
     case BLKIF_OP_WRITE:
@@ -306,17 +309,8 @@ static void xen_block_complete_aio(void *opaque, int ret)
     default:
         break;
     }
-    if (xen_block_send_response(request)) {
-        Error *local_err = NULL;
 
-        xen_device_notify_event_channel(dataplane->xendev,
-                                        dataplane->event_channel,
-                                        &local_err);
-        if (local_err) {
-            error_report_err(local_err);
-        }
-    }
-    xen_block_release_request(request);
+    xen_block_complete_request(request);
 
     if (dataplane->more_work) {
         qemu_bh_schedule(dataplane->bh);
@@ -420,8 +414,8 @@ static int xen_block_do_aio(XenBlockRequest *request)
     return 0;
 
 err:
-    xen_block_finish_request(request);
     request->status = BLKIF_RSP_ERROR;
+    xen_block_complete_request(request);
     return -1;
 }
 
@@ -575,17 +569,7 @@ static bool xen_block_handle_requests(XenBlockDataPlane *dataplane)
                 break;
             };
 
-            if (xen_block_send_response(request)) {
-                Error *local_err = NULL;
-
-                xen_device_notify_event_channel(dataplane->xendev,
-                                                dataplane->event_channel,
-                                                &local_err);
-                if (local_err) {
-                    error_report_err(local_err);
-                }
-            }
-            xen_block_release_request(request);
+            xen_block_complete_request(request);
             continue;
         }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 20:44:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 20:44:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOSPc-0000Hd-PH; Tue, 14 Apr 2020 20:44:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOSPb-0000HW-5X
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:03 +0000
X-Inumbo-ID: aca38a8e-7e90-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id aca38a8e-7e90-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 20:44:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rjbq8WQpOS6G+KPesZdpbQ+Tm0gGz/BggrEDOnryDUo=; b=qJVhxdry8RmSpw7QgIowS5lMWm
 J0dk9B92Ra10KEAI7YuKvNxmLKETGJ6uwviKMhwy4M5BSM1wgfzo9vUD1wKtZNrMPVxjQE2rGoFlr
 MF+MnaAxmTKCW0U7y1xL7uDchsPgA2Ns+e07mGkdW7yMJPFSyWUhjwvH//PeoV4wHwFY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSPa-000391-CA
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSPa-0004e7-A0
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOSPa-0004e7-A0@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 20:44:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit dc3fb833c609ef1e918c47ee9d4e2439b21ffece
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:55:05 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:55:05 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 8a72e382e6..bed796c876 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -254,6 +254,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 20:44:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 20:44:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOSPm-0000IS-Rc; Tue, 14 Apr 2020 20:44:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOSPl-0000IK-B8
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:13 +0000
X-Inumbo-ID: b2a74470-7e90-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b2a74470-7e90-11ea-b4f4-bc764e2007e4;
 Tue, 14 Apr 2020 20:44:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=D9LiJzfxiV4klgvWznZ3vIZor/ixHWZvMvZApCcvSoQ=; b=M8mEmLdWlREZH9/j8pEw0uNrYj
 tH1PYxSiNTPCMJo36HAwLzWnWuwnJI1Wkk4pBQAmtEANeqK1NY+yDc/yyN1k1IlHjp1Uw4Vr3TbFN
 ijR8GZfZCoBnOvlioY9yRUpYzHKkmx10i0ZNuXlrZfGPb0BIxgk/TbCg3ei/wlO1kfZo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSPk-00039b-F1
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSPk-0004eg-Dy
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOSPk-0004eg-Dy@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 20:44:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 45624a73326d0924544c8f9c0ab1cd5e226018af
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:56:06 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:56:06 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index bed796c876..e34b28b41e 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -480,25 +480,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -507,7 +504,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -531,7 +528,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -540,7 +536,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -571,17 +568,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 20:44:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 20:44:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOSPx-0000JT-Th; Tue, 14 Apr 2020 20:44:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOSPw-0000JH-BX
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:24 +0000
X-Inumbo-ID: b8a93a04-7e90-11ea-89a8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b8a93a04-7e90-11ea-89a8-12813bfff9fa;
 Tue, 14 Apr 2020 20:44:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=BRd5nqUsUgwmJnYDUbaS5Xfzjd114Ury9b5zhchnGH8=; b=ojj7r5+ovXsjZyUvfmWi5Tk8fM
 k+b5E9SNy54jucnQK9i4/7S3ymJ554mBnPC6XAk11igIC9KlRautkfBO9Tupfk8ctHyeijftfzH8G
 x2TKZW7/QdJHYsh+i+1m1ocwNGlMtX7G+druNKi6jHkaiO3DSclXnuwLZdrL020t3wVM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSPu-00039k-Hw
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSPu-0004fK-Gk
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jOSPu-0004fK-Gk@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 20:44:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 1541b26e844ea32dd1695fe9ebed76ed17b537cd
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 14:56:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:56:58 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c56c4..15c3f8155e 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -47,6 +47,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -63,11 +67,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -91,6 +103,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -120,11 +133,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -156,11 +178,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 20:44:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 20:44:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOSQ6-0000KQ-W6; Tue, 14 Apr 2020 20:44:34 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOSQ5-0000KD-7i
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:33 +0000
X-Inumbo-ID: beab4eb0-7e90-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id beab4eb0-7e90-11ea-b58d-bc764e2007e4;
 Tue, 14 Apr 2020 20:44:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Jhi5BGlj6dXPaSUOZ9OxyWbcLt337Q1Vzyr7sRaU7Z0=; b=QwMp6bHgzQsX1SGSFH1ZmJSVxT
 yJwRz+j0VP7HM104Wi9BlEFVWvTlSappoS7KeqfWZECofION6v2MI/Zlr7EFeiqYhFORQCZui98+f
 Umm4yjdsOLbH9RYOX5er7gVrIJTmjWkoI6zowpOT+0ct8h8yCSrSY2TTBAfm+q9UVwA4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSQ4-00039t-Ko
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSQ4-0004gt-Jq
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOSQ4-0004gt-Jq@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 20:44:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 46bde0561b4a6eca4deee2dc1797086353e95be9
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 14:58:48 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:58:48 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 49691da24f..2e512a1d69 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1015,7 +1015,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 14 20:44:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 14 Apr 2020 20:44:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOSQH-0000MZ-1u; Tue, 14 Apr 2020 20:44:45 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=rA9G=56=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOSQF-0000MM-Is
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:43 +0000
X-Inumbo-ID: c3e72acb-7e90-11ea-89a8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c3e72acb-7e90-11ea-89a8-12813bfff9fa;
 Tue, 14 Apr 2020 20:44:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=89nAak5yLug6ik7buRHrWi7ML46e4l9X/fpy3PyS1qs=; b=I1COCyrVYTbVshtVWw9S7JfIUm
 g/ZyJQnps/hga2wqtPC07jgXNwNshhx6f2TYNOsDpfXz4dYP7PCxAYb3LidRsuskvNYT2CSLJsK8C
 9cgzoR/a5DqC5G3awZemOfPTIEI7ri02HpZPl767AJwKJX9a0eJWJHjpunpE3OD3PE9k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSQE-0003A5-Nd
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOSQE-0004hU-Mf
 for xen-changelog@lists.xenproject.org; Tue, 14 Apr 2020 20:44:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOSQE-0004hU-Mf@xenbits.xenproject.org>
Date: Tue, 14 Apr 2020 20:44:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3536f8dc39cc7311715340b87a04a89fac468406
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:00:18 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:00:18 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 2e512a1d69..38d5524a0e 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3521,8 +3521,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3589,6 +3588,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 07:22:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 07:22:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOcN3-0000r7-QE; Wed, 15 Apr 2020 07:22:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOcN2-0000r2-F1
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 07:22:04 +0000
X-Inumbo-ID: cd7b482e-7ee9-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id cd7b482e-7ee9-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 07:22:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=WB81bYTamIMhOEVpykcaiTM/VuinXArVJBUDd7zTfiA=; b=myEI3Tz5nhD423F/pZdnGXte1o
 U3bfuD9SxVy8rfSTNdp5ynaTcO0/lsYQprMv+u4EgsbOHsKZ+hB0K5ulJguO55KJ+jcNCkBsWuLRl
 ymEvFKgdfXfwIMv0HKh4deBwrxymOabVMSdCP6ETDLsiyIzD1bkVYqktQDymgsEfHnbI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOcN0-0004b6-Kh
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 07:22:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOcN0-0005gh-JL
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 07:22:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/altp2m: hypercall to set altp2m view visibility
Message-Id: <E1jOcN0-0005gh-JL@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 07:22:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3fd3e9303ec4b1bc9d5271b9c089177e82c16dbb
Author:     Alexandru Isaila <aisaila@bitdefender.com>
AuthorDate: Tue Apr 14 11:38:48 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 11:38:48 2020 +0200

    x86/altp2m: hypercall to set altp2m view visibility
    
    At this moment a guest can call vmfunc to change the altp2m view. This
    should be limited in order to avoid any unwanted view switch.
    
    The new xc_altp2m_set_visibility() solves this by making views invisible
    to vmfunc.
    This is done by having a separate arch.altp2m_working_eptp that is
    populated and made invalid in the same places as altp2m_eptp. This is
    written to EPTP_LIST_ADDR.
    The views are made in/visible by marking them with INVALID_MFN or
    copying them back from altp2m_eptp.
    To have consistency the visibility also applies to
    p2m_switch_domain_altp2m_by_id().
    
    The usage of this hypercall is aimed at dom0 having a logic with a number of views
    created and at some time there is a need to be sure that only some of the views
    can be switched, saving the rest and making them visible when the time
    is right.
    
    Note: If altp2m mode is set to mixed the guest is able to change the view
    visibility and then call vmfunc.
    
    Signed-off-by: Alexandru Isaila <aisaila@bitdefender.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    Acked-by: Wei Liu <wl@xen.org>
---
 tools/libxc/include/xenctrl.h   |  7 +++++++
 tools/libxc/xc_altp2m.c         | 24 ++++++++++++++++++++++++
 xen/arch/x86/hvm/hvm.c          | 14 ++++++++++++++
 xen/arch/x86/hvm/vmx/vmx.c      |  2 +-
 xen/arch/x86/mm/hap/hap.c       | 15 +++++++++++++++
 xen/arch/x86/mm/p2m-ept.c       |  1 +
 xen/arch/x86/mm/p2m.c           | 34 ++++++++++++++++++++++++++++++++--
 xen/include/asm-x86/domain.h    |  1 +
 xen/include/asm-x86/p2m.h       |  4 ++++
 xen/include/public/hvm/hvm_op.h |  9 +++++++++
 10 files changed, 108 insertions(+), 3 deletions(-)

diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h
index 58fa931de1..5f25c5a6d4 100644
--- a/tools/libxc/include/xenctrl.h
+++ b/tools/libxc/include/xenctrl.h
@@ -1943,6 +1943,13 @@ int xc_altp2m_change_gfn(xc_interface *handle, uint32_t domid,
                          xen_pfn_t new_gfn);
 int xc_altp2m_get_vcpu_p2m_idx(xc_interface *handle, uint32_t domid,
                                uint32_t vcpuid, uint16_t *p2midx);
+/*
+ * Set view visibility for xc_altp2m_switch_to_view and vmfunc.
+ * Note: If altp2m mode is set to mixed the guest is able to change the view
+ * visibility and then call vmfunc.
+ */
+int xc_altp2m_set_visibility(xc_interface *handle, uint32_t domid,
+                             uint16_t view_id, bool visible);
 
 /** 
  * Mem paging operations.
diff --git a/tools/libxc/xc_altp2m.c b/tools/libxc/xc_altp2m.c
index 46fb725806..6987c9541f 100644
--- a/tools/libxc/xc_altp2m.c
+++ b/tools/libxc/xc_altp2m.c
@@ -410,3 +410,27 @@ int xc_altp2m_get_vcpu_p2m_idx(xc_interface *handle, uint32_t domid,
     xc_hypercall_buffer_free(handle, arg);
     return rc;
 }
+
+int xc_altp2m_set_visibility(xc_interface *handle, uint32_t domid,
+                             uint16_t view_id, bool visible)
+{
+    int rc;
+
+    DECLARE_HYPERCALL_BUFFER(xen_hvm_altp2m_op_t, arg);
+
+    arg = xc_hypercall_buffer_alloc(handle, arg, sizeof(*arg));
+    if ( arg == NULL )
+        return -1;
+
+    arg->version = HVMOP_ALTP2M_INTERFACE_VERSION;
+    arg->cmd = HVMOP_altp2m_set_visibility;
+    arg->domain = domid;
+    arg->u.set_visibility.altp2m_idx = view_id;
+    arg->u.set_visibility.visible = visible;
+
+    rc = xencall2(handle->xcall, __HYPERVISOR_hvm_op, HVMOP_altp2m,
+                  HYPERCALL_BUFFER_AS_ARG(arg));
+
+    xc_hypercall_buffer_free(handle, arg);
+    return rc;
+}
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 827c5fa89d..6f6f3f73a8 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4509,6 +4509,7 @@ static int do_altp2m_op(
     case HVMOP_altp2m_get_mem_access:
     case HVMOP_altp2m_change_gfn:
     case HVMOP_altp2m_get_p2m_idx:
+    case HVMOP_altp2m_set_visibility:
         break;
 
     default:
@@ -4786,6 +4787,19 @@ static int do_altp2m_op(
         break;
     }
 
+    case HVMOP_altp2m_set_visibility:
+    {
+        unsigned int idx = a.u.set_visibility.altp2m_idx;
+
+        if ( a.u.set_visibility.pad )
+            rc = -EINVAL;
+        else if ( !altp2m_active(d) )
+            rc = -EOPNOTSUPP;
+        else
+            rc = p2m_set_altp2m_view_visibility(d, idx,
+                                                a.u.set_visibility.visible);
+    }
+
     default:
         ASSERT_UNREACHABLE();
     }
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 1c398fdb6e..869339062b 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2140,7 +2140,7 @@ static void vmx_vcpu_update_vmfunc_ve(struct vcpu *v)
     {
         v->arch.hvm.vmx.secondary_exec_control |= mask;
         __vmwrite(VM_FUNCTION_CONTROL, VMX_VMFUNC_EPTP_SWITCHING);
-        __vmwrite(EPTP_LIST_ADDR, virt_to_maddr(d->arch.altp2m_eptp));
+        __vmwrite(EPTP_LIST_ADDR, virt_to_maddr(d->arch.altp2m_visible_eptp));
 
         if ( cpu_has_vmx_virt_exceptions )
         {
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 814d0c3253..052ae35c6f 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -492,8 +492,17 @@ int hap_enable(struct domain *d, u32 mode)
             goto out;
         }
 
+        if ( (d->arch.altp2m_visible_eptp = alloc_xenheap_page()) == NULL )
+        {
+            rv = -ENOMEM;
+            goto out;
+        }
+
         for ( i = 0; i < MAX_EPTP; i++ )
+        {
             d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
+            d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
+        }
 
         for ( i = 0; i < MAX_ALTP2M; i++ )
         {
@@ -527,6 +536,12 @@ void hap_final_teardown(struct domain *d)
             d->arch.altp2m_eptp = NULL;
         }
 
+        if ( d->arch.altp2m_visible_eptp )
+        {
+            free_xenheap_page(d->arch.altp2m_visible_eptp);
+            d->arch.altp2m_visible_eptp = NULL;
+        }
+
         for ( i = 0; i < MAX_ALTP2M; i++ )
             p2m_teardown(d->arch.altp2m_p2m[i]);
     }
diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c
index eb0f0edfef..293f3e9419 100644
--- a/xen/arch/x86/mm/p2m-ept.c
+++ b/xen/arch/x86/mm/p2m-ept.c
@@ -1368,6 +1368,7 @@ void p2m_init_altp2m_ept(struct domain *d, unsigned int i)
     ept = &p2m->ept;
     ept->mfn = pagetable_get_pfn(p2m_get_pagetable(p2m));
     d->arch.altp2m_eptp[array_index_nospec(i, MAX_EPTP)] = ept->eptp;
+    d->arch.altp2m_visible_eptp[array_index_nospec(i, MAX_EPTP)] = ept->eptp;
 }
 
 unsigned int p2m_find_altp2m_by_eptp(struct domain *d, uint64_t eptp)
diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index b8727e267d..4c1507d3a4 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -2533,6 +2533,7 @@ void p2m_flush_altp2m(struct domain *d)
     {
         p2m_reset_altp2m(d, i, ALTP2M_DEACTIVATE);
         d->arch.altp2m_eptp[i] = mfn_x(INVALID_MFN);
+        d->arch.altp2m_visible_eptp[i] = mfn_x(INVALID_MFN);
     }
 
     altp2m_list_unlock(d);
@@ -2652,7 +2653,9 @@ int p2m_destroy_altp2m_by_id(struct domain *d, unsigned int idx)
         {
             p2m_reset_altp2m(d, idx, ALTP2M_DEACTIVATE);
             d->arch.altp2m_eptp[array_index_nospec(idx, MAX_EPTP)] =
-            mfn_x(INVALID_MFN);
+                mfn_x(INVALID_MFN);
+            d->arch.altp2m_visible_eptp[array_index_nospec(idx, MAX_EPTP)] =
+                mfn_x(INVALID_MFN);
             rc = 0;
         }
     }
@@ -2679,7 +2682,7 @@ int p2m_switch_domain_altp2m_by_id(struct domain *d, unsigned int idx)
     rc = -EINVAL;
     altp2m_list_lock(d);
 
-    if ( d->arch.altp2m_eptp[idx] != mfn_x(INVALID_MFN) )
+    if ( d->arch.altp2m_visible_eptp[idx] != mfn_x(INVALID_MFN) )
     {
         for_each_vcpu( d, v )
             if ( idx != vcpu_altp2m(v).p2midx )
@@ -3163,6 +3166,33 @@ int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
 
     return rc;
 }
+
+int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int altp2m_idx,
+                                   uint8_t visible)
+{
+    int rc = 0;
+
+    altp2m_list_lock(d);
+
+    /*
+     * Eptp index is correlated with altp2m index and should not exceed
+     * min(MAX_ALTP2M, MAX_EPTP).
+     */
+    if ( altp2m_idx >= min(ARRAY_SIZE(d->arch.altp2m_p2m), MAX_EPTP) ||
+         d->arch.altp2m_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] ==
+         mfn_x(INVALID_MFN) )
+        rc = -EINVAL;
+    else if ( visible )
+        d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] =
+            d->arch.altp2m_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)];
+    else
+        d->arch.altp2m_visible_eptp[array_index_nospec(altp2m_idx, MAX_EPTP)] =
+            mfn_x(INVALID_MFN);
+
+    altp2m_list_unlock(d);
+
+    return rc;
+}
 #endif
 
 /*
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 105adf96eb..4192c636b1 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -327,6 +327,7 @@ struct arch_domain
     struct p2m_domain *altp2m_p2m[MAX_ALTP2M];
     mm_lock_t altp2m_list_lock;
     uint64_t *altp2m_eptp;
+    uint64_t *altp2m_visible_eptp;
 #endif
 
     /* NB. protected by d->event_lock and by irq_desc[irq].lock */
diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h
index a2c6049834..ace3573ae8 100644
--- a/xen/include/asm-x86/p2m.h
+++ b/xen/include/asm-x86/p2m.h
@@ -898,6 +898,10 @@ int p2m_change_altp2m_gfn(struct domain *d, unsigned int idx,
 int p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn,
                                 mfn_t mfn, unsigned int page_order,
                                 p2m_type_t p2mt, p2m_access_t p2ma);
+
+/* Set a specific p2m view visibility */
+int p2m_set_altp2m_view_visibility(struct domain *d, unsigned int idx,
+                                   uint8_t visible);
 #else
 struct p2m_domain *p2m_get_altp2m(struct vcpu *v);
 static inline void p2m_altp2m_check(struct vcpu *v, uint16_t idx) {}
diff --git a/xen/include/public/hvm/hvm_op.h b/xen/include/public/hvm/hvm_op.h
index b599d3cbd0..870ec52060 100644
--- a/xen/include/public/hvm/hvm_op.h
+++ b/xen/include/public/hvm/hvm_op.h
@@ -318,6 +318,12 @@ struct xen_hvm_altp2m_get_vcpu_p2m_idx {
     uint16_t altp2m_idx;
 };
 
+struct xen_hvm_altp2m_set_visibility {
+    uint16_t altp2m_idx;
+    uint8_t visible;
+    uint8_t pad;
+};
+
 struct xen_hvm_altp2m_op {
     uint32_t version;   /* HVMOP_ALTP2M_INTERFACE_VERSION */
     uint32_t cmd;
@@ -350,6 +356,8 @@ struct xen_hvm_altp2m_op {
 #define HVMOP_altp2m_get_p2m_idx          14
 /* Set the "Supress #VE" bit for a range of pages */
 #define HVMOP_altp2m_set_suppress_ve_multi 15
+/* Set visibility for a given altp2m view */
+#define HVMOP_altp2m_set_visibility       16
     domid_t domain;
     uint16_t pad1;
     uint32_t pad2;
@@ -367,6 +375,7 @@ struct xen_hvm_altp2m_op {
         struct xen_hvm_altp2m_suppress_ve_multi    suppress_ve_multi;
         struct xen_hvm_altp2m_vcpu_disable_notify  disable_notify;
         struct xen_hvm_altp2m_get_vcpu_p2m_idx     get_vcpu_p2m_idx;
+        struct xen_hvm_altp2m_set_visibility       set_visibility;
         uint8_t pad[64];
     } u;
 };
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 07:22:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 07:22:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOcNC-0000rs-UB; Wed, 15 Apr 2020 07:22:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOcNB-0000rl-JG
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 07:22:13 +0000
X-Inumbo-ID: d37dc120-7ee9-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d37dc120-7ee9-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 07:22:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZDoFrpUHTu52dxLN9JFodivPNEFwOiqrgAEgPCSTQhg=; b=oFMVcApw0QPnMZxib3kQjMnjET
 D3tkrUljD/EcCSdt/8rtD7rpAtvZTmwUWTgukMeDDOOqAsR/rrzGOvSOC7tFKskEJNNNrdE5EV1C6
 fQV/3UnBOk6h6Et3xu5z2v76dQRm343Eec+JfvfMMbPW+6RSXX6jO87rCwNenfY05XOM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOcNA-0004b9-OT
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 07:22:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOcNA-0005hV-MM
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 07:22:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/EFI: also fill boot_tsc_stamp on the xen.efi boot
 path
Message-Id: <E1jOcNA-0005hV-MM@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 07:22:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0dbc112e727f6c17f306c864950bdf83dece5cd5
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 11:42:11 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 11:42:11 2020 +0200

    x86/EFI: also fill boot_tsc_stamp on the xen.efi boot path
    
    Commit e3a379c35eff ("x86/time: always count s_time from Xen boot")
    introducing this missed adjusting this path as well.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/efi/efi-boot.h | 3 +++
 xen/include/asm-x86/setup.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 7bfb96875c..a13304201f 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -8,6 +8,7 @@
 #include <asm/edd.h>
 #include <asm/microcode.h>
 #include <asm/msr.h>
+#include <asm/setup.h>
 
 static struct file __initdata ucode;
 static multiboot_info_t __initdata mbi = {
@@ -673,6 +674,8 @@ static void __init efi_arch_cpu(void)
     uint32_t eax = cpuid_eax(0x80000000);
     uint32_t *caps = boot_cpu_data.x86_capability;
 
+    boot_tsc_stamp = rdtsc();
+
     caps[cpufeat_word(X86_FEATURE_HYPERVISOR)] = cpuid_ecx(1);
 
     if ( (eax >> 16) == 0x8000 && eax > 0x80000000 )
diff --git a/xen/include/asm-x86/setup.h b/xen/include/asm-x86/setup.h
index 28257bc5c8..642a5e8460 100644
--- a/xen/include/asm-x86/setup.h
+++ b/xen/include/asm-x86/setup.h
@@ -10,6 +10,7 @@ extern char __2M_init_start[], __2M_init_end[];
 extern char __2M_rwdata_start[], __2M_rwdata_end[];
 
 extern unsigned long xenheap_initial_phys_start;
+extern uint64_t boot_tsc_stamp;
 
 void early_cpu_init(void);
 void early_time_init(void);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 08:44:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 08:44:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOdeO-0000eL-LH; Wed, 15 Apr 2020 08:44:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOdeO-0000eG-57
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:04 +0000
X-Inumbo-ID: 4113b947-7ef5-11ea-8a17-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4113b947-7ef5-11ea-8a17-12813bfff9fa;
 Wed, 15 Apr 2020 08:44:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=X68ThiizRTe4ZUe44hHcztRjKoSxKSks/rmp3izwMUo=; b=KIkXVyT3eVhau71CjnOgkVRQHs
 i7OPdhxAqFe+Ouh4ufP/oUZX2/We8rmk94a9qwJY83eEoI5q6HHXMDA4N5yXkuAg4Y3neQcHe5aJg
 lOHlAusJXX/vzmutayrAQ2cm79kFyTRNRccg8P1J5vlVOdawkbvMtb3hmr45LU+b62wM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdeM-0006hv-Aw
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdeM-0003Fx-9T
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.9] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOdeM-0003Fx-9T@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 08:44:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b3718b79184b973d7c5d7ae625b9bea126f748ec
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:16:07 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:16:07 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index a5fe6204a5..1b7c58d60b 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -248,6 +248,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.9


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 08:44:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 08:44:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOdeY-0000fP-Nr; Wed, 15 Apr 2020 08:44:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOdeY-0000fI-5D
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:14 +0000
X-Inumbo-ID: 47dcefa4-7ef5-11ea-8a17-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 47dcefa4-7ef5-11ea-8a17-12813bfff9fa;
 Wed, 15 Apr 2020 08:44:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=de5+ATvIDdA+FzeYwLDZ52s0ee+mCHjQojGOo7xNW5s=; b=WJ1YEru8pjMGGX2vg9kxMrNMNR
 t+/xc4X6sqBGnNYI37xKhx78m33p0ad47jmc322sbaLbSoN5z7wUZAvsvPd3fKvpVfTFTqd4/8y0u
 ptYTHvC2XLYHpWKFOAkB/9XLjs+v61jAM2YhUU4HMNQXA5/LbOGmxo+wRizcWh9RPsR8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdeW-0006i1-EW
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdeW-0003GX-Cj
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.9] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOdeW-0003GX-Cj@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 08:44:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8d26adcb399f01e1bb6738f957992465801e292f
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:18:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:18:14 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 1b7c58d60b..ba7baa5dbf 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -474,25 +474,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -501,7 +498,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -525,7 +522,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -534,7 +530,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -565,17 +562,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.9


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 08:44:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 08:44:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOdeh-0000gb-Q1; Wed, 15 Apr 2020 08:44:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOdeh-0000gS-An
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:23 +0000
X-Inumbo-ID: 4ddcaf7a-7ef5-11ea-8a17-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4ddcaf7a-7ef5-11ea-8a17-12813bfff9fa;
 Wed, 15 Apr 2020 08:44:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=w+nU5FWkSaVGS4SrCAtY/SjyDbwiT4XIX0Qn8SPPhfo=; b=BeDTZMeB3OoG4yrWb3ZHc4Ri21
 p1YyIrOx1W2eSNBeYEtD8IysT+qpNt+eGwNnhxV8x/Sxr4Gcw8pCI9OsOVzn7M2C+8kOZCZfuo2qi
 JhJXsU08/IoiGFhLl+/1rcQ0GjV7bBh308u1ieCVvOudERxJKI0lOtF7INjflzLxMI+g=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdeg-0006iA-HC
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdeg-0003HK-G8
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.9] xen/rwlock: Add missing memory barrier in the unlock
 path of rwlock
Message-Id: <E1jOdeg-0003HK-G8@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 08:44:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4e79375f7cf8340cbb874dab12f7225b57d70086
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 15:19:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:19:20 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c56c4..15c3f8155e 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -47,6 +47,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -63,11 +67,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -91,6 +103,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -120,11 +133,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -156,11 +178,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.9


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 08:44:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 08:44:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOdes-0000hr-S1; Wed, 15 Apr 2020 08:44:34 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOder-0000hi-Le
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:33 +0000
X-Inumbo-ID: 53e5a8e0-7ef5-11ea-8a17-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 53e5a8e0-7ef5-11ea-8a17-12813bfff9fa;
 Wed, 15 Apr 2020 08:44:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZYkugepkbV6tDcDHW9st5r7ggu2eLUwQUqStkoKKANs=; b=V2bVgh2UdOvnY/vY1zAq6kTPE6
 leUM3EYSqEytD/RXVS75x4EgQBgaEOgw2/x6OhcehMb/7lY+s2vBk0RIXdgNthC9HxRq2Mk+htU1b
 81km7Yz7pnE8tRGoNth2DF0asBuSs1jIVJdDQWExvj7ICdhvM5xrEliHajaIcF0ff+dY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdeq-0006il-Kn
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdeq-0003Iy-J7
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.9] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOdeq-0003Iy-J7@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 08:44:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 773686b4fcda58779d4c6d5655c84e8aa15c58c5
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 15:20:48 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:20:48 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 1e72397ee4..3027478e30 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -890,7 +890,7 @@ __gnttab_map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.9


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 08:44:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 08:44:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOdf4-0000is-UL; Wed, 15 Apr 2020 08:44:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOdf4-0000in-A0
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:46 +0000
X-Inumbo-ID: 59e74622-7ef5-11ea-8a17-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 59e74622-7ef5-11ea-8a17-12813bfff9fa;
 Wed, 15 Apr 2020 08:44:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VwM1ArepA2oePmHgCEtLWqpwC2kiaElBrphZobZeYFs=; b=Tjdw6Q6fmGfTgnqHjcpu3c5Xfc
 vY+US5YihSu8gQRibDuMr55//g8Iu47URvjUjFwg4KYwGWgV2xLUHAJGxDMnJdMYgIcZUXTcOGevY
 osyzWNiXq7VY40VfTkrfbxUnsyUXj42ji52qIPWl53Abuhs4WGC3RAyOnX7Vy+PuHndY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdf0-0006ix-Nc
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOdf0-0003Jf-Mi
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 08:44:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.9] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOdf0-0003Jf-Mi@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 08:44:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 45c90737d5f0c8bf479adcd8cb88450f1998e55c
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:21:36 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:21:36 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 3027478e30..90c09974f1 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3305,8 +3305,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3372,6 +3371,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.9


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 15:33:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 15:33:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOk2C-0008QU-7E; Wed, 15 Apr 2020 15:33:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOk2B-0008QO-AX
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:03 +0000
X-Inumbo-ID: 64dcede6-7f2e-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 64dcede6-7f2e-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 15:33:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=7QezX65kHnpbQnFSdlf+iuB4Am+F1NdcxcntMDYE3vs=; b=F0bakQhwL+kCzh5x7j3tv2UTjq
 6DHveS8owLg0C3rKt5e+F2xInHzeGbXp9mdk+0Yuen4fQIqP53xYGlGHsyzhZZqK0As1ZFDbJ7aVT
 GfqyhJhhUp9f25rD3E8e6keSE0RhIeTQ8DhSN1X3iFuhX5WN/bdEPe7Uq11q8fQOYTeI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2A-0006MK-EI
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2A-00081g-D8
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOk2A-00081g-D8@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 15:33:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 06a5a277c7262d7ca473a8eee3cdce3e2790186e
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:01:34 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:01:34 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 8a72e382e6..bed796c876 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -254,6 +254,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 15:33:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 15:33:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOk2O-0008RU-9l; Wed, 15 Apr 2020 15:33:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOk2M-0008RF-Li
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:14 +0000
X-Inumbo-ID: 6ae1ef02-7f2e-11ea-8a83-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6ae1ef02-7f2e-11ea-8a83-12813bfff9fa;
 Wed, 15 Apr 2020 15:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=yme8dpGisc9qN2k63IHvPfmzib8wbYaR5cau6H81/9o=; b=AL5qYhMrW9twKHpi9DVHFvnudS
 w8s7sgqcJYebFtHanVHw1ke7YybZBhP3syl4b5wDbxObqNrPVDXI1O/8OkaENz5mvQhhr1VfJfDt3
 ekdre4Jgaa9HkWvfeXZa60t8y3EjjaSvhGDXhKUwdRPN5oCPXAqiasaGurV4k/erLUvA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2K-0006MQ-HC
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2K-00082q-Fy
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOk2K-00082q-Fy@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 15:33:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7900cb7c18b5ec5d379884166b0db35ebe3846e0
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:02:37 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:02:37 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index bed796c876..e34b28b41e 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -480,25 +480,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -507,7 +504,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -531,7 +528,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -540,7 +536,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -571,17 +568,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 15:33:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 15:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOk2W-0008TL-Bt; Wed, 15 Apr 2020 15:33:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOk2V-0008TC-E3
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:23 +0000
X-Inumbo-ID: 70e4ead0-7f2e-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 70e4ead0-7f2e-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 15:33:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=bfKdIn6eB6fftsBhvNnafSwI3Bxhy33BMXWk/XGBb9Y=; b=5rUBerZ5hatMjuQBBwfOH0ky5p
 TQIsH5YnVHraZ6CrtJxAISSRjzGxuDr3VLnaZa1g15GDxr3w55eDUfnPEFNLJhZpdKZfSFIXqs2ra
 4/yfdP4Dom1CsFqi/TXKynrMe7B2Y0GWDrnoOFjUngd6K1ss077hhspY204ryGIrC484=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2U-0006MZ-K2
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2U-00083r-Ir
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jOk2U-00083r-Ir@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 15:33:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d430e15e021b81f1f6c3e35d703a6f195a9b2e5c
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 15:03:28 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:03:28 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c56c4..15c3f8155e 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -47,6 +47,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -63,11 +67,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -91,6 +103,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -120,11 +133,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -156,11 +178,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 15:33:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 15:33:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOk2g-0008Ua-E1; Wed, 15 Apr 2020 15:33:34 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOk2f-0008UR-GW
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:33 +0000
X-Inumbo-ID: 76e58c3c-7f2e-11ea-8a83-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 76e58c3c-7f2e-11ea-8a83-12813bfff9fa;
 Wed, 15 Apr 2020 15:33:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=N2yxwL5OyXHtBLL+9isXqVEwfRGvU/vdiLWIfrQsSoo=; b=DVNXyA1JJBtPrlliomplTniMVt
 RLvAnWkz1KCSjFdJy6fdYa5KxMAGuZ8Ls0naNUd9TATwqO/3LlR+E5vUbME8zsFpQFfezQYTi528E
 K3Sq+p76DAV/kiuXb8cHevGIl4C2v9ZHPqsGIusfFHDhmaDs/4F1WHc/eU73rOiQMMz8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2e-0006Mm-Ml
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2e-00084g-Lk
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOk2e-00084g-Lk@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 15:33:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 52da38987adec9c1f2138d6eb4a1f107744936c1
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 15:05:01 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:05:01 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 95990561da..e272daef5a 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -998,7 +998,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 15:33:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 15:33:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOk2q-0008Vq-GO; Wed, 15 Apr 2020 15:33:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOk2p-0008Vi-Gp
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:43 +0000
X-Inumbo-ID: 7c10bc7e-7f2e-11ea-8a83-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7c10bc7e-7f2e-11ea-8a83-12813bfff9fa;
 Wed, 15 Apr 2020 15:33:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZcYgk1VVwILWHMiMswe85vbrFxXrBq5daricAYQlY3g=; b=Umqwxmx2aW5/4pamIFsZhjhLMk
 NJT1wHOuay1AS4vXA2qW0Me7vpu9a+uKuYRbC56+D/OuzDh2c1VF5mtQgVFUSto2+sf8fzl5jR9CC
 zLPSt4LfoBfmrK3ps9DJUA1dn4QBDJCWpG1LNCYyGVc33vX+64iRuTk6jH2XG5SgUEj0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2o-0006Nc-Pu
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOk2o-00085N-Od
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 15:33:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOk2o-00085N-Od@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 15:33:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d353f82b2edae3019b0b9405976a05f18d120ce7
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:05:54 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:05:54 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index e272daef5a..7d464a9641 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3509,8 +3509,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3577,6 +3576,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:00:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:00:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnGX-0002oe-Ht; Wed, 15 Apr 2020 19:00:05 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnGW-0002fg-6j
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:04 +0000
X-Inumbo-ID: 503bb13e-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 503bb13e-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:00:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=97c87jxLPmgcFPqVTYi/FIs0BIZ7HBcAN1NAEED92LA=; b=IMaz7fhPvolb6JBYNzWThSP45l
 M5Tcgo+07WZrjbDSjghAnqL2anuLxkSPRMqb5noVRZp1nn/zvNQ6BGb/KZHpTswsOyWBvsAWXSG5q
 7zHxRVQili46+/woa1+R+HX3nc913bHc+42PcjUJvTZypSGnmEJh6vDM7rEYTdfsY2+U=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnGV-0002Ta-7q
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnGV-00071I-5s
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] dma-helpers: ensure AIO callback is invoked
 after cancellation
Message-Id: <E1jOnGV-00071I-5s@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:00:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit fbde196c30e4797a51bda046ba514b187963d4ba
Author:     Paolo Bonzini <pbonzini@redhat.com>
AuthorDate: Mon Jul 29 23:34:16 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:28:10 2019 -0500

    dma-helpers: ensure AIO callback is invoked after cancellation
    
    dma_aio_cancel unschedules the BH if there is one, which corresponds
    to the reschedule_dma case of dma_blk_cb.  This can stall the DMA
    permanently, because dma_complete will never get invoked and therefore
    nobody will ever invoke the original AIO callback in dbs->common.cb.
    
    Fix this by invoking the callback (which is ensured to happen after
    a bdrv_aio_cancel_async, or done manually in the dbs->bh case), and
    add assertions to check that the DMA state machine is indeed waiting
    for dma_complete or reschedule_dma, but never both.
    
    Reported-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Message-id: 20190729213416.1972-1-pbonzini@redhat.com
    Signed-off-by: John Snow <jsnow@redhat.com>
    (cherry picked from commit 539343c0a47e19d5dd64d846d64d084d9793681f)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 dma-helpers.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/dma-helpers.c b/dma-helpers.c
index 2d7e02d35e..d3871dc61e 100644
--- a/dma-helpers.c
+++ b/dma-helpers.c
@@ -90,6 +90,7 @@ static void reschedule_dma(void *opaque)
 {
     DMAAIOCB *dbs = (DMAAIOCB *)opaque;
 
+    assert(!dbs->acb && dbs->bh);
     qemu_bh_delete(dbs->bh);
     dbs->bh = NULL;
     dma_blk_cb(dbs, 0);
@@ -111,15 +112,12 @@ static void dma_complete(DMAAIOCB *dbs, int ret)
 {
     trace_dma_complete(dbs, ret, dbs->common.cb);
 
+    assert(!dbs->acb && !dbs->bh);
     dma_blk_unmap(dbs);
     if (dbs->common.cb) {
         dbs->common.cb(dbs->common.opaque, ret);
     }
     qemu_iovec_destroy(&dbs->iov);
-    if (dbs->bh) {
-        qemu_bh_delete(dbs->bh);
-        dbs->bh = NULL;
-    }
     qemu_aio_unref(dbs);
 }
 
@@ -179,14 +177,21 @@ static void dma_aio_cancel(BlockAIOCB *acb)
 
     trace_dma_aio_cancel(dbs);
 
+    assert(!(dbs->acb && dbs->bh));
     if (dbs->acb) {
+        /* This will invoke dma_blk_cb.  */
         blk_aio_cancel_async(dbs->acb);
+        return;
     }
+
     if (dbs->bh) {
         cpu_unregister_map_client(dbs->bh);
         qemu_bh_delete(dbs->bh);
         dbs->bh = NULL;
     }
+    if (dbs->common.cb) {
+        dbs->common.cb(dbs->common.opaque, -ECANCELED);
+    }
 }
 
 static AioContext *dma_get_aio_context(BlockAIOCB *acb)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:00:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:00:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnGh-00039e-NS; Wed, 15 Apr 2020 19:00:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnGg-00038m-5L
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:14 +0000
X-Inumbo-ID: 55e7f8d7-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 55e7f8d7-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:00:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vZg3IlnM5pJ+Tw7jCGMeeypTaZjNyLsC5APk98q3gCI=; b=Ne/0n5idIaIuSA3zF1TVVXQO/9
 qZvfy6Mutg7beR6/keCNQ4Kax0D6WaLtqYpALSRkU6tlZ0LpiuDpk2AcBrGhoML6K9c9xs7z0zlJ+
 FACKfiRXX6AF7HBATkWQasG5AGqhjq5osbt17N+G1fkqMzKW7+0X3WIkMHllM13j6jns=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnGf-0002Tg-Bj
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnGf-00073B-A0
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] Revert "ide/ahci: Check for -ECANCELED in aio
 callbacks"
Message-Id: <E1jOnGf-00073B-A0@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:00:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 73a5bf472921068e6db10e7e325b7ac46f111834
Author:     John Snow <jsnow@redhat.com>
AuthorDate: Mon Jul 29 18:36:05 2019 -0400
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:28:24 2019 -0500

    Revert "ide/ahci: Check for -ECANCELED in aio callbacks"
    
    This reverts commit 0d910cfeaf2076b116b4517166d5deb0fea76394.
    
    It's not correct to just ignore an error code in a callback; we need to
    handle that error and possible report failure to the guest so that they
    don't wait indefinitely for an operation that will now never finish.
    
    This ought to help cases reported by Nutanix where iSCSI returns a
    legitimate -ECANCELED for certain operations which should be propagated
    normally.
    
    Reported-by: Shaju Abraham <shaju.abraham@nutanix.com>
    Signed-off-by: John Snow <jsnow@redhat.com>
    Message-id: 20190729223605.7163-1-jsnow@redhat.com
    Signed-off-by: John Snow <jsnow@redhat.com>
    (cherry picked from commit 8ec41c4265714255d5a138f8b538faf3583dcff6)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/ide/ahci.c |  3 ---
 hw/ide/core.c | 14 --------------
 2 files changed, 17 deletions(-)

diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 00ba422a48..6aaf66534a 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -1023,9 +1023,6 @@ static void ncq_cb(void *opaque, int ret)
     IDEState *ide_state = &ncq_tfs->drive->port.ifs[0];
 
     ncq_tfs->aiocb = NULL;
-    if (ret == -ECANCELED) {
-        return;
-    }
 
     if (ret < 0) {
         bool is_read = ncq_tfs->cmd == READ_FPDMA_QUEUED;
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 6afadf894f..8e1624f7ce 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -722,9 +722,6 @@ static void ide_sector_read_cb(void *opaque, int ret)
     s->pio_aiocb = NULL;
     s->status &= ~BUSY_STAT;
 
-    if (ret == -ECANCELED) {
-        return;
-    }
     if (ret != 0) {
         if (ide_handle_rw_error(s, -ret, IDE_RETRY_PIO |
                                 IDE_RETRY_READ)) {
@@ -840,10 +837,6 @@ static void ide_dma_cb(void *opaque, int ret)
     uint64_t offset;
     bool stay_active = false;
 
-    if (ret == -ECANCELED) {
-        return;
-    }
-
     if (ret == -EINVAL) {
         ide_dma_error(s);
         return;
@@ -975,10 +968,6 @@ static void ide_sector_write_cb(void *opaque, int ret)
     IDEState *s = opaque;
     int n;
 
-    if (ret == -ECANCELED) {
-        return;
-    }
-
     s->pio_aiocb = NULL;
     s->status &= ~BUSY_STAT;
 
@@ -1058,9 +1047,6 @@ static void ide_flush_cb(void *opaque, int ret)
 
     s->pio_aiocb = NULL;
 
-    if (ret == -ECANCELED) {
-        return;
-    }
     if (ret < 0) {
         /* XXX: What sector number to set here? */
         if (ide_handle_rw_error(s, -ret, IDE_RETRY_FLUSH)) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:00:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:00:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnGr-0003Cg-PP; Wed, 15 Apr 2020 19:00:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnGq-0003CX-DV
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:24 +0000
X-Inumbo-ID: 5c467af4-7f4b-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 5c467af4-7f4b-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:00:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=PJEPE5uSUCIG6fLiWNJpvxdxQWgEhZma5NxB8491ci8=; b=zDSug+f6whfb90w8sbkWVbRUII
 MH6snljQmlK5iwLsk42rPx9HCzv9fnkIGhJ+V8MQRJHAW9uC2Frn82GVwjLYRqJTaH1ReFno6RrOo
 55lBym0rzS7eN3DNM1EmgKimK7scBkSbc7oBYkpZhibhNU15nu1rMe9HEjz5sfIBFZxs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnGp-0002Tx-EX
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnGp-00073v-DV
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] s390x/tcg: Fix VERIM with 32/64 bit elements
Message-Id: <E1jOnGp-00073v-DV@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:00:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 499a5d6bb47ec8be73fc47a37952c4d595957232
Author:     David Hildenbrand <david@redhat.com>
AuthorDate: Wed Aug 14 17:12:42 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:31:08 2019 -0500

    s390x/tcg: Fix VERIM with 32/64 bit elements
    
    Wrong order of operands. The constant always comes last. Makes QEMU crash
    reliably on specific git fetch invocations.
    
    Reported-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Message-Id: <20190814151242.27199-1-david@redhat.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Fixes: 5c4b0ab460ef ("s390x/tcg: Implement VECTOR ELEMENT ROTATE AND INSERT UNDER MASK")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Cornelia Huck <cohuck@redhat.com>
    (cherry picked from commit 25bcb45d1b81d22634daa2b1a2d8bee746ac129b)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/s390x/translate_vx.inc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/s390x/translate_vx.inc.c b/target/s390x/translate_vx.inc.c
index 41d5cf869f..0caddb3958 100644
--- a/target/s390x/translate_vx.inc.c
+++ b/target/s390x/translate_vx.inc.c
@@ -213,7 +213,7 @@ static void get_vec_element_ptr_i64(TCGv_ptr ptr, uint8_t reg, TCGv_i64 enr,
                        vec_full_reg_offset(v3), ptr, 16, 16, data, fn)
 #define gen_gvec_3i(v1, v2, v3, c, gen) \
     tcg_gen_gvec_3i(vec_full_reg_offset(v1), vec_full_reg_offset(v2), \
-                    vec_full_reg_offset(v3), c, 16, 16, gen)
+                    vec_full_reg_offset(v3), 16, 16, c, gen)
 #define gen_gvec_4(v1, v2, v3, v4, gen) \
     tcg_gen_gvec_4(vec_full_reg_offset(v1), vec_full_reg_offset(v2), \
                    vec_full_reg_offset(v3), vec_full_reg_offset(v4), \
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:00:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:00:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnH1-0003EE-Rz; Wed, 15 Apr 2020 19:00:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnH0-0003E3-Hs
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:34 +0000
X-Inumbo-ID: 624ab9ba-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 624ab9ba-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:00:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0r5lYAKtPCbHmstN0b2JWy2RwgTptGXK2McyduBiTlM=; b=xM5Xd+XYG33x5VNmQWDM0Q70XU
 0nLEw9V2frF6lWrM1SS4Dqmy8eVkwQ8ovURM5hfu21K+FwX8FVnkcgY7JuoNjkd1dMD0OV3963mE4
 hcULUVsdXfeKZM96Aw0q87c8A9etIhemS05ruX5rVJlSEC2ytVrAA1HZGEcN38zzWbvs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnGz-0002U6-HI
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnGz-00074U-GK
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] target/alpha: fix tlb_fill trap_arg2 value for
 instruction fetch
Message-Id: <E1jOnGz-00074U-GK@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:00:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4bfd496be385073644f639e58790b84bf5f7a5ef
Author:     Aurelien Jarno <aurelien@aurel32.net>
AuthorDate: Thu Aug 22 10:45:14 2019 -0700
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:31:56 2019 -0500

    target/alpha: fix tlb_fill trap_arg2 value for instruction fetch
    
    Commit e41c94529740cc26 ("target/alpha: Convert to CPUClass::tlb_fill")
    slightly changed the way the trap_arg2 value is computed in case of TLB
    fill. The type of the variable used in the ternary operator has been
    changed from an int to an enum. This causes the -1 value to not be
    sign-extended to 64-bit in case of an instruction fetch. The trap_arg2
    ends up with 0xffffffff instead of 0xffffffffffffffff. Fix that by
    changing the -1 into -1LL.
    
    This fixes the execution of user space processes in qemu-system-alpha.
    
    Fixes: e41c94529740cc26
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    [rth: Test MMU_DATA_LOAD and MMU_DATA_STORE instead of implying them.]
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    (cherry picked from commit cb1de55a83eaca9ee32be9c959dca99e11f2fea8)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/alpha/helper.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/target/alpha/helper.c b/target/alpha/helper.c
index 93b8e788b1..d0cc623192 100644
--- a/target/alpha/helper.c
+++ b/target/alpha/helper.c
@@ -283,7 +283,9 @@ bool alpha_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
         cs->exception_index = EXCP_MMFAULT;
         env->trap_arg0 = addr;
         env->trap_arg1 = fail;
-        env->trap_arg2 = (access_type == MMU_INST_FETCH ? -1 : access_type);
+        env->trap_arg2 = (access_type == MMU_DATA_LOAD ? 0ull :
+                          access_type == MMU_DATA_STORE ? 1ull :
+                          /* access_type == MMU_INST_FETCH */ -1ull);
         cpu_loop_exit_restore(cs, retaddr);
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:00:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:00:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnHA-0003F4-UA; Wed, 15 Apr 2020 19:00:44 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnHA-0003Ex-EL
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:44 +0000
X-Inumbo-ID: 6851012a-7f4b-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6851012a-7f4b-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:00:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ut59313cmG1YkZyxNIBKscYhlbhrIIlSXTZUWFiwfpY=; b=Z00ASkbUmNQxaUhzbK9tF3oqwy
 otTvhcnx0AD+nCR3rg+W31MgJls33HnPGdfixvSRi6H3RqVdfVqwlqdg3jflSb3sN5I/byv+pTtSt
 WboqW6pxw/w9ZoxkZfvVYgGhIKqQJAKqehWja4pIJjS2L8E558UlnhVCLXX3FTivdD9U=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnH9-0002Ui-L2
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnH9-000759-JI
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] pc: Don't make die-id mandatory unless
 necessary
Message-Id: <E1jOnH9-000759-JI@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:00:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7ebcd375ade505358c1c45542de22f188c599bdd
Author:     Eduardo Habkost <ehabkost@redhat.com>
AuthorDate: Fri Aug 16 14:07:50 2019 -0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:41:00 2019 -0500

    pc: Don't make die-id mandatory unless necessary
    
    We have this issue reported when using libvirt to hotplug CPUs:
    https://bugzilla.redhat.com/show_bug.cgi?id=1741451
    
    Basically, libvirt is not copying die-id from
    query-hotpluggable-cpus, but die-id is now mandatory.
    
    We could blame libvirt and say it is not following the documented
    interface, because we have this buried in the QAPI schema
    documentation:
    
    > Note: currently there are 5 properties that could be present
    > but management should be prepared to pass through other
    > properties with device_add command to allow for future
    > interface extension. This also requires the filed names to be kept in
    > sync with the properties passed to -device/device_add.
    
    But I don't think this would be reasonable from us.  We can just
    make QEMU more flexible and let die-id to be omitted when there's
    no ambiguity.  This will allow us to keep compatibility with
    existing libvirt versions.
    
    Test case included to ensure we don't break this again.
    
    Fixes: commit 176d2cda0dee ("i386/cpu: Consolidate die-id validity in smp context")
    Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
    Message-Id: <20190816170750.23910-1-ehabkost@redhat.com>
    Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
    (cherry picked from commit fea374e7c8079563bca7c8fac895c6a880f76adc)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/i386/pc.c                             |  8 ++++++++
 tests/acceptance/pc_cpu_hotplug_props.py | 35 ++++++++++++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 549c437050..947f81070f 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -2403,6 +2403,14 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev,
         int max_socket = (ms->smp.max_cpus - 1) /
                                 smp_threads / smp_cores / pcms->smp_dies;
 
+        /*
+         * die-id was optional in QEMU 4.0 and older, so keep it optional
+         * if there's only one die per socket.
+         */
+        if (cpu->die_id < 0 && pcms->smp_dies == 1) {
+            cpu->die_id = 0;
+        }
+
         if (cpu->socket_id < 0) {
             error_setg(errp, "CPU socket-id is not set");
             return;
diff --git a/tests/acceptance/pc_cpu_hotplug_props.py b/tests/acceptance/pc_cpu_hotplug_props.py
new file mode 100644
index 0000000000..08b7e632c6
--- /dev/null
+++ b/tests/acceptance/pc_cpu_hotplug_props.py
@@ -0,0 +1,35 @@
+#
+# Ensure CPU die-id can be omitted on -device
+#
+#  Copyright (c) 2019 Red Hat Inc
+#
+# Author:
+#  Eduardo Habkost <ehabkost@redhat.com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, see <http://www.gnu.org/licenses/>.
+#
+
+from avocado_qemu import Test
+
+class OmittedCPUProps(Test):
+    """
+    :avocado: tags=arch:x86_64
+    """
+    def test_no_die_id(self):
+        self.vm.add_args('-nodefaults', '-S')
+        self.vm.add_args('-smp', '1,sockets=2,cores=2,threads=2,maxcpus=8')
+        self.vm.add_args('-cpu', 'qemu64')
+        self.vm.add_args('-device', 'qemu64-x86_64-cpu,socket-id=1,core-id=0,thread-id=0')
+        self.vm.launch()
+        self.assertEquals(len(self.vm.command('query-cpus')), 2)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:00:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:00:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnHL-0003GF-0X; Wed, 15 Apr 2020 19:00:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnHK-0003G7-E2
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:54 +0000
X-Inumbo-ID: 6e53d9f8-7f4b-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6e53d9f8-7f4b-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 19:00:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=whefjfOvO7RIGKmC8cikxqPIa4ZU/M0nyMRiAi36moE=; b=u1H+cJEPlqtfVHRpCh9Thef0nL
 /TIIriIk/U6Hi77Qiuo6ISeP/dhh3tQuOUzh7NONiI27FA6GTngy7gffG3sDGG/ZSIgiJrc7ukrfE
 YnNhg5nl4T8mf4zGJ2YsC0vYQZ/tRCG+AD/CQQDeGSr1zUbH9roHVLoxIW93not+EtyE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHJ-0002Ur-Nr
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHJ-00075l-Mn
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:00:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] xen-bus: Fix backend state transition on
 device reset
Message-Id: <E1jOnHJ-00075l-Mn@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:00:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b6cedc911e44a5bc6f3f120fee411c1ccc22f220
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Aug 23 11:15:33 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:42:16 2019 -0500

    xen-bus: Fix backend state transition on device reset
    
    When a frontend wants to reset its state and the backend one, it
    starts with setting "Closing", then waits for the backend (QEMU) to do
    the same.
    
    But when QEMU is setting "Closing" to its state, it triggers an event
    (xenstore watch) that re-execute xen_device_backend_changed() and set
    the backend state to "Closed". QEMU should wait for the frontend to
    set "Closed" before doing the same.
    
    Before setting "Closed" to the backend_state, we are also going to
    check if there is a frontend. If that the case, when the backend state
    is set to "Closing" the frontend should react and sets its state to
    "Closing" then "Closed". The backend should wait for that to happen.
    
    Fixes: b6af8926fb858c4f1426e5acb2cfc1f0580ec98a
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
    Message-Id: <20190823101534.465-2-anthony.perard@citrix.com>
    (cherry picked from commit cb3231460747552d70af9d546dc53d8195bcb796)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/xen/xen-bus.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 7503eea9e9..5929aa4b2e 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -516,6 +516,23 @@ static void xen_device_backend_set_online(XenDevice *xendev, bool online)
     xen_device_backend_printf(xendev, "online", "%u", online);
 }
 
+/*
+ * Tell from the state whether the frontend is likely alive,
+ * i.e. it will react to a change of state of the backend.
+ */
+static bool xen_device_state_is_active(enum xenbus_state state)
+{
+    switch (state) {
+    case XenbusStateInitWait:
+    case XenbusStateInitialised:
+    case XenbusStateConnected:
+    case XenbusStateClosing:
+        return true;
+    default:
+        return false;
+    }
+}
+
 static void xen_device_backend_changed(void *opaque)
 {
     XenDevice *xendev = opaque;
@@ -539,11 +556,11 @@ static void xen_device_backend_changed(void *opaque)
 
     /*
      * If the toolstack (or unplug request callback) has set the backend
-     * state to Closing, but there is no active frontend (i.e. the
-     * state is not Connected) then set the backend state to Closed.
+     * state to Closing, but there is no active frontend then set the
+     * backend state to Closed.
      */
     if (xendev->backend_state == XenbusStateClosing &&
-        xendev->frontend_state != XenbusStateConnected) {
+        !xen_device_state_is_active(state)) {
         xen_device_backend_set_state(xendev, XenbusStateClosed);
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:01:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:01:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnHW-0003HQ-2m; Wed, 15 Apr 2020 19:01:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnHU-0003HF-PL
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:04 +0000
X-Inumbo-ID: 7457ee52-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7457ee52-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:01:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0NHswY5MzAAQTeGWrtQW0u6qOdlKJxVzuJ4CjXWn2P8=; b=sj/VOKoGofLh8eCR/Trn3IXM+5
 ZeXjUC7XP7CR6Ha2dwN+bH5NdPI7jVygxFwSgvNz/vajRoNdfOFV25AovEalKxSlwi7BHDccLopV/
 ch/ZiSRe94FlVUzdzKB7Ojv3AOyCW5WKN8Xxqogo5sK00nefxEo+GXuEX8AILP20ZumU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHT-0002VD-QS
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHT-00076b-Pc
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] xen-bus: check whether the frontend is active
 during device reset...
Message-Id: <E1jOnHT-00076b-Pc@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:01:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c12adfd8f61b9dad3a98b0622457ce0ad62db245
Author:     Paul Durrant <paul.durrant@citrix.com>
AuthorDate: Tue Sep 10 18:17:53 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:43:19 2019 -0500

    xen-bus: check whether the frontend is active during device reset...
    
    ...not the backend
    
    Commit cb323146 "xen-bus: Fix backend state transition on device reset"
    contained a subtle mistake. The hunk
    
    @@ -539,11 +556,11 @@ static void xen_device_backend_changed(void *opaque)
    
         /*
          * If the toolstack (or unplug request callback) has set the backend
    -     * state to Closing, but there is no active frontend (i.e. the
    -     * state is not Connected) then set the backend state to Closed.
    +     * state to Closing, but there is no active frontend then set the
    +     * backend state to Closed.
          */
         if (xendev->backend_state == XenbusStateClosing &&
    -        xendev->frontend_state != XenbusStateConnected) {
    +        !xen_device_state_is_active(state)) {
             xen_device_backend_set_state(xendev, XenbusStateClosed);
         }
    
    mistakenly replaced the check of 'xendev->frontend_state' with a check
    (now in a helper function) of 'state', which actually equates to
    'xendev->backend_state'.
    
    This patch fixes the mistake.
    
    Fixes: cb3231460747552d70af9d546dc53d8195bcb796
    Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
    Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
    Message-Id: <20190910171753.3775-1-paul.durrant@citrix.com>
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    (cherry picked from commit df6180bb56cd03949c2c64083da58755fed81a61)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/xen/xen-bus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 5929aa4b2e..10b7e02b5c 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -560,7 +560,7 @@ static void xen_device_backend_changed(void *opaque)
      * backend state to Closed.
      */
     if (xendev->backend_state == XenbusStateClosing &&
-        !xen_device_state_is_active(state)) {
+        !xen_device_state_is_active(xendev->frontend_state)) {
         xen_device_backend_set_state(xendev, XenbusStateClosed);
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:01:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:01:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnHg-0003Ib-7Z; Wed, 15 Apr 2020 19:01:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnHe-0003IT-W6
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:15 +0000
X-Inumbo-ID: 7a5d464e-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7a5d464e-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:01:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4d206J3XKu9eK2QteFaQeG1XgR40ul0ahmKI5Zug5JQ=; b=V5X36qory3fOQs6s7P350Cy5cS
 0V3Nlu6kWlLaX2U0+qMyHdbhCIfIe3DMG0e94n0SBBJjyjDQOdk9wMCXXOV9cKbAM+gazVVYn11+w
 VChiI3BfMsC9bcIhY4ZSHysM+OiBQK9xB5FSi5OVTPusnJtmB1OMFUo3iB8ARsjmXUKo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHd-0002VO-TF
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHd-00077J-SL
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/file-posix: Reduce xfsctl() use
Message-Id: <E1jOnHd-00077J-SL@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:01:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6f1a94035b02d3676a897ea5fa4cda4c62128228
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Aug 23 15:03:40 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:45:18 2019 -0500

    block/file-posix: Reduce xfsctl() use
    
    This patch removes xfs_write_zeroes() and xfs_discard().  Both functions
    have been added just before the same feature was present through
    fallocate():
    
    - fallocate() has supported PUNCH_HOLE for XFS since Linux 2.6.38 (March
      2011); xfs_discard() was added in December 2010.
    
    - fallocate() has supported ZERO_RANGE for XFS since Linux 3.15 (June
      2014); xfs_write_zeroes() was added in November 2013.
    
    Nowadays, all systems that qemu runs on should support both fallocate()
    features (RHEL 7's kernel does).
    
    xfsctl() is still useful for getting the request alignment for O_DIRECT,
    so this patch does not remove our dependency on it completely.
    
    Note that xfs_write_zeroes() had a bug: It calls ftruncate() when the
    file is shorter than the specified range (because ZERO_RANGE does not
    increase the file length).  ftruncate() may yield and then discard data
    that parallel write requests have written past the EOF in the meantime.
    Dropping the function altogether fixes the bug.
    
    Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
    Fixes: 50ba5b2d994853b38fed10e0841b119da0f8b8e5
    Reported-by: Lukáš Doktor <ldoktor@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Tested-by: Stefano Garzarella <sgarzare@redhat.com>
    Tested-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit b2c6f23f4a9f6d8f1b648705cd46d3713b78d6a2)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/file-posix.c | 77 +-----------------------------------------------------
 1 file changed, 1 insertion(+), 76 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index 4479cc7ab4..992eb4a798 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1445,59 +1445,6 @@ out:
     }
 }
 
-#ifdef CONFIG_XFS
-static int xfs_write_zeroes(BDRVRawState *s, int64_t offset, uint64_t bytes)
-{
-    int64_t len;
-    struct xfs_flock64 fl;
-    int err;
-
-    len = lseek(s->fd, 0, SEEK_END);
-    if (len < 0) {
-        return -errno;
-    }
-
-    if (offset + bytes > len) {
-        /* XFS_IOC_ZERO_RANGE does not increase the file length */
-        if (ftruncate(s->fd, offset + bytes) < 0) {
-            return -errno;
-        }
-    }
-
-    memset(&fl, 0, sizeof(fl));
-    fl.l_whence = SEEK_SET;
-    fl.l_start = offset;
-    fl.l_len = bytes;
-
-    if (xfsctl(NULL, s->fd, XFS_IOC_ZERO_RANGE, &fl) < 0) {
-        err = errno;
-        trace_file_xfs_write_zeroes(strerror(errno));
-        return -err;
-    }
-
-    return 0;
-}
-
-static int xfs_discard(BDRVRawState *s, int64_t offset, uint64_t bytes)
-{
-    struct xfs_flock64 fl;
-    int err;
-
-    memset(&fl, 0, sizeof(fl));
-    fl.l_whence = SEEK_SET;
-    fl.l_start = offset;
-    fl.l_len = bytes;
-
-    if (xfsctl(NULL, s->fd, XFS_IOC_UNRESVSP64, &fl) < 0) {
-        err = errno;
-        trace_file_xfs_discard(strerror(errno));
-        return -err;
-    }
-
-    return 0;
-}
-#endif
-
 static int translate_err(int err)
 {
     if (err == -ENODEV || err == -ENOSYS || err == -EOPNOTSUPP ||
@@ -1553,10 +1500,8 @@ static ssize_t handle_aiocb_write_zeroes_block(RawPosixAIOData *aiocb)
 static int handle_aiocb_write_zeroes(void *opaque)
 {
     RawPosixAIOData *aiocb = opaque;
-#if defined(CONFIG_FALLOCATE) || defined(CONFIG_XFS)
-    BDRVRawState *s = aiocb->bs->opaque;
-#endif
 #ifdef CONFIG_FALLOCATE
+    BDRVRawState *s = aiocb->bs->opaque;
     int64_t len;
 #endif
 
@@ -1564,12 +1509,6 @@ static int handle_aiocb_write_zeroes(void *opaque)
         return handle_aiocb_write_zeroes_block(aiocb);
     }
 
-#ifdef CONFIG_XFS
-    if (s->is_xfs) {
-        return xfs_write_zeroes(s, aiocb->aio_offset, aiocb->aio_nbytes);
-    }
-#endif
-
 #ifdef CONFIG_FALLOCATE_ZERO_RANGE
     if (s->has_write_zeroes) {
         int ret = do_fallocate(s->fd, FALLOC_FL_ZERO_RANGE,
@@ -1632,14 +1571,6 @@ static int handle_aiocb_write_zeroes_unmap(void *opaque)
     }
 #endif
 
-#ifdef CONFIG_XFS
-    if (s->is_xfs) {
-        /* xfs_discard() guarantees that the discarded area reads as all-zero
-         * afterwards, so we can use it here. */
-        return xfs_discard(s, aiocb->aio_offset, aiocb->aio_nbytes);
-    }
-#endif
-
     /* If we couldn't manage to unmap while guaranteed that the area reads as
      * all-zero afterwards, just write zeroes without unmapping */
     ret = handle_aiocb_write_zeroes(aiocb);
@@ -1716,12 +1647,6 @@ static int handle_aiocb_discard(void *opaque)
         ret = -errno;
 #endif
     } else {
-#ifdef CONFIG_XFS
-        if (s->is_xfs) {
-            return xfs_discard(s, aiocb->aio_offset, aiocb->aio_nbytes);
-        }
-#endif
-
 #ifdef CONFIG_FALLOCATE_PUNCH_HOLE
         ret = do_fallocate(s->fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
                            aiocb->aio_offset, aiocb->aio_nbytes);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:01:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:01:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnHq-0003KG-AL; Wed, 15 Apr 2020 19:01:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnHo-0003JS-RB
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:24 +0000
X-Inumbo-ID: 8064323c-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8064323c-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:01:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=A9U1hOpjHAf0wnxpSssMYckEzOVb0BqXgSik733ic8s=; b=j+M7T9oQvrMYCoOv96odadakMo
 zIrW0ZtNv8LxNC0BwVnUDmE9qdYyQIh0EDF9BX0eNXT3RVcIVICsKLQZZTzwGVqnqo98cov3ND0t6
 LIXK4AiIpwijmZUBfwkNWVWLKB0I50owmp5iY42ACZTQejD5op18LnwSma3yre4cDsps=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHo-0002VX-08
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHn-00078H-VD
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Test reverse sub-cluster qcow2 writes
Message-Id: <E1jOnHn-00078H-VD@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:01:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3361d03ff005f0a581664582c914da66ab886cfb
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Aug 23 15:03:41 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:46:09 2019 -0500

    iotests: Test reverse sub-cluster qcow2 writes
    
    This exercises the regression introduced in commit
    50ba5b2d994853b38fed10e0841b119da0f8b8e5.  On my machine, it has close
    to a 50 % false-negative rate, but that should still be sufficient to
    test the fix.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Tested-by: Stefano Garzarella <sgarzare@redhat.com>
    Tested-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit ae6ef0190981a21f2d4bc8dcee7253688f14fae7)
     Conflicts:
            tests/qemu-iotests/group
    *fix context deps on tests not in 4.1.0
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/265     | 67 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/265.out |  6 +++++
 tests/qemu-iotests/group   |  1 +
 3 files changed, 74 insertions(+)

diff --git a/tests/qemu-iotests/265 b/tests/qemu-iotests/265
new file mode 100755
index 0000000000..dce6f77be3
--- /dev/null
+++ b/tests/qemu-iotests/265
@@ -0,0 +1,67 @@
+#!/usr/bin/env bash
+#
+# Test reverse-ordered qcow2 writes on a sub-cluster level
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+seq=$(basename $0)
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# qcow2-specific test
+_supported_fmt qcow2
+_supported_proto file
+_supported_os Linux
+
+echo '--- Writing to the image ---'
+
+# Reduce cluster size so we get more and quicker I/O
+IMGOPTS='cluster_size=4096' _make_test_img 1M
+(for ((kb = 1024 - 4; kb >= 0; kb -= 4)); do \
+     echo "aio_write -P 42 $((kb + 1))k 2k"; \
+ done) \
+ | $QEMU_IO "$TEST_IMG" > /dev/null
+
+echo '--- Verifying its content ---'
+
+(for ((kb = 0; kb < 1024; kb += 4)); do \
+    echo "read -P 0 ${kb}k 1k"; \
+    echo "read -P 42 $((kb + 1))k 2k"; \
+    echo "read -P 0 $((kb + 3))k 1k"; \
+ done) \
+ | $QEMU_IO "$TEST_IMG" | _filter_qemu_io | grep 'verification'
+
+# Status of qemu-io
+if [ ${PIPESTATUS[1]} = 0 ]; then
+    echo 'Content verified.'
+fi
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/265.out b/tests/qemu-iotests/265.out
new file mode 100644
index 0000000000..6eac620f25
--- /dev/null
+++ b/tests/qemu-iotests/265.out
@@ -0,0 +1,6 @@
+QA output created by 265
+--- Writing to the image ---
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
+--- Verifying its content ---
+Content verified.
+*** done
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index f13e5f2e23..468458efb1 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -271,3 +271,4 @@
 254 rw backing quick
 255 rw quick
 256 rw quick
+265 rw auto quick
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:01:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:01:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnHz-0003L8-Cn; Wed, 15 Apr 2020 19:01:35 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnHy-0003L1-LN
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:34 +0000
X-Inumbo-ID: 86602628-7f4b-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 86602628-7f4b-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:01:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vGl1BC27wVyMhywKgsTurIJ5E8yArlzsjDkcj+FYGAQ=; b=luWJr4/q3YUb4n1dud3C2N5L/w
 8Hmy5k4MRZ35rPhM5pdc9IHOZ/V1PbZLB6q0OAH/dTcm5Cn4gvZe1mEUk5z6/GwkJH6Xf7Fg5+rtT
 7ceg6lGMKP99Ue8JgRzofRPIEPJ7SQzcJU9g/ku9X1xiFe1eqmUa4g3DqRe1Xp+PKT4M=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHy-0002Wj-37
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnHy-000795-23
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] pr-manager: Fix invalid g_free() crash bug
Message-Id: <E1jOnHy-000795-23@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:01:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 57fdf4a13ff16d9d48a43f02a5e7b42e3d264f83
Author:     Markus Armbruster <armbru@redhat.com>
AuthorDate: Thu Aug 22 15:38:46 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:47:31 2019 -0500

    pr-manager: Fix invalid g_free() crash bug
    
    pr_manager_worker() passes its @opaque argument to g_free().  Wrong;
    it points to pr_manager_worker()'s automatic @data.  Broken when
    commit 2f3a7ab39be converted @data from heap- to stack-allocated.  Fix
    by deleting the g_free().
    
    Fixes: 2f3a7ab39bec4ba8022dc4d42ea641165b004e3e
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Markus Armbruster <armbru@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Acked-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 6b9d62c2a9e83bbad73fb61406f0ff69b46ff6f3)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 scsi/pr-manager.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/scsi/pr-manager.c b/scsi/pr-manager.c
index ee43663576..0c866e8698 100644
--- a/scsi/pr-manager.c
+++ b/scsi/pr-manager.c
@@ -39,7 +39,6 @@ static int pr_manager_worker(void *opaque)
     int fd = data->fd;
     int r;
 
-    g_free(data);
     trace_pr_manager_run(fd, hdr->cmdp[0], hdr->cmdp[1]);
 
     /* The reference was taken in pr_manager_execute.  */
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:01:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:01:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnIA-0003Mr-TF; Wed, 15 Apr 2020 19:01:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnI8-0003Me-U0
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:44 +0000
X-Inumbo-ID: 8c674e7a-7f4b-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8c674e7a-7f4b-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:01:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=CUQJjAAGVqALHUoBuv28PgQhAQW2k7i9gvF+xHy4vGo=; b=gjThX5axo73nt78Zfp7PsAQJo+
 0+vp3YYmj2/ak8PNEtRfwRRcQzMe2/KB3y+2GmSx4rHSRzLiHQGoKBTLOTQvkA4B1vZQ3//IlMEZJ
 e8OHaqTrINo4wS8Lx1C+FKsKgwkOEO5QebFKLKLcEN85Qrf4J+X3pdZ8R85O0m/QYq18=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnI8-0002Xb-5x
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnI8-0007AP-50
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] x86: do not advertise die-id in
 query-hotpluggbale-cpus if '-smp dies' is not set
Message-Id: <E1jOnI8-0007AP-50@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:01:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 725dfa851f8e1de8653f41a4bd38c7f98757eb40
Author:     Igor Mammedov <imammedo@redhat.com>
AuthorDate: Mon Sep 2 08:02:22 2019 -0400
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:50:01 2019 -0500

    x86: do not advertise die-id in query-hotpluggbale-cpus if '-smp dies' is not set
    
    Commit 176d2cda0 (i386/cpu: Consolidate die-id validity in smp context) added
    new 'die-id' topology property to CPUs and exposed it via QMP command
    query-hotpluggable-cpus, which broke -device/device_add cpu-foo for existing
    users that do not support die-id/dies yet. That's would be fine if it happened
    to new machine type only but it also happened to old machine types,
    which breaks migration from old QEMU to the new one, for example following CLI:
    
      OLD-QEMU -M pc-i440fx-4.0 -smp 1,max_cpus=2 \
               -device qemu64-x86_64-cpu,socket-id=1,core-id=0,thread-id
    is not able to start with new QEMU, complaining about invalid die-id.
    
    After discovering regression, the patch
       "pc: Don't make die-id mandatory unless necessary"
    makes die-id optional so old CLI would work.
    
    However it's not enough as new QEMU still exposes die-id via query-hotpluggbale-cpus
    QMP command, so the users that started old machine type on new QEMU, using all
    properties (including die-id) received from QMP command (as required), won't be
    able to start old QEMU using the same properties since it doesn't support die-id.
    
    Fix it by hiding die-id in query-hotpluggbale-cpus for all machine types in case
    '-smp dies' is not provided on CLI or -smp dies = 1', in which case smp_dies == 1
    and APIC ID is calculated in default way (as it was before DIE support) so we won't
    need compat code as in both cases the topology provided to guest via CPUID is the same.
    
    Signed-off-by: Igor Mammedov <imammedo@redhat.com>
    Message-Id: <20190902120222.6179-1-imammedo@redhat.com>
    Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
    Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
    (cherry picked from commit c6c1bb89fb46f3b88f832e654cf5a6f7941aac51)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/i386/pc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 947f81070f..d011733ff7 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -2887,8 +2887,10 @@ static const CPUArchIdList *pc_possible_cpu_arch_ids(MachineState *ms)
                                  ms->smp.threads, &topo);
         ms->possible_cpus->cpus[i].props.has_socket_id = true;
         ms->possible_cpus->cpus[i].props.socket_id = topo.pkg_id;
-        ms->possible_cpus->cpus[i].props.has_die_id = true;
-        ms->possible_cpus->cpus[i].props.die_id = topo.die_id;
+        if (pcms->smp_dies > 1) {
+            ms->possible_cpus->cpus[i].props.has_die_id = true;
+            ms->possible_cpus->cpus[i].props.die_id = topo.die_id;
+        }
         ms->possible_cpus->cpus[i].props.has_core_id = true;
         ms->possible_cpus->cpus[i].props.core_id = topo.core_id;
         ms->possible_cpus->cpus[i].props.has_thread_id = true;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:01:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:01:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnIK-0003OJ-VO; Wed, 15 Apr 2020 19:01:56 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnIJ-0003Nz-0l
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:55 +0000
X-Inumbo-ID: 92691d30-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 92691d30-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:01:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=yjwPuJJQ3KeNODjmT3v/rE60fPY3CMoEPodjUPGPyRE=; b=fvOsOTz5uqJz009BzR4whVxFhG
 YZP6e1g1/KT2fqNyfpS47XMlLmX4/w4QXEL2SF5WFd7gWqMekR/sCYlncI0P2vp51CHod+GJq3zqG
 pB0RovbwR/Q4fj14jUonqzjL4ZSSZg2Hx9kfuTD+JkVEhfJKpXB8LoQJLTsCueQOFdAs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnII-0002Xk-8o
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnII-0007BI-7p
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:01:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] vpc: Return 0 from vpc_co_create() on success
Message-Id: <E1jOnII-0007BI-7p@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:01:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 97c478c355fee96eb2b740313f50561e69b6f305
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:16 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:50:55 2019 -0500

    vpc: Return 0 from vpc_co_create() on success
    
    blockdev_create_run() directly uses .bdrv_co_create()'s return value as
    the job's return value.  Jobs must return 0 on success, not just any
    nonnegative value.  Therefore, using blockdev-create for VPC images may
    currently fail as the vpc driver may return a positive integer.
    
    Because there is no point in returning a positive integer anywhere in
    the block layer (all non-negative integers are generally treated as
    complete success), we probably do not want to add more such cases.
    Therefore, fix this problem by making the vpc driver always return 0 in
    case of success.
    
    Suggested-by: Kevin Wolf <kwolf@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 1a37e3124407b5a145d44478d3ecbdb89c63789f)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/vpc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/block/vpc.c b/block/vpc.c
index d4776ee8a5..3a88e28e2b 100644
--- a/block/vpc.c
+++ b/block/vpc.c
@@ -885,6 +885,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf,
         goto fail;
     }
 
+    ret = 0;
  fail:
     return ret;
 }
@@ -908,7 +909,7 @@ static int create_fixed_disk(BlockBackend *blk, uint8_t *buf,
         return ret;
     }
 
-    return ret;
+    return 0;
 }
 
 static int calculate_rounded_image_size(BlockdevCreateOptionsVpc *vpc_opts,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:02:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:02:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnIV-0003Ps-10; Wed, 15 Apr 2020 19:02:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnIT-0003PW-44
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:05 +0000
X-Inumbo-ID: 986cb6d8-7f4b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 986cb6d8-7f4b-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:02:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ucYehxSwan+KPMHG860yNRvUSINzqs5AZcR+up3HQ/w=; b=cErR4KYw+CmDM7JCs3XuF5QEgI
 bXjNnHUD8gf8UlYqP46njYKjyj06pVLDGxyly3JUW8eUETy6Oj8IHBUVsalKR9i2uz6ByLDrYhUeo
 m0yQY9LwJVCXd9sycw+ZjhNS6OSCyLzZHWz2p2e7Huby3BJQ7SIdnouqVR/bBL24Y2eM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnIS-0002Y3-Bf
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnIS-0007CB-Ac
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: add testing shim for script-style
 python tests
Message-Id: <E1jOnIS-0007CB-Ac@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:02:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4d9bdd31496acc3d51d58490006244d75a485100
Author:     John Snow <jsnow@redhat.com>
AuthorDate: Mon Jul 29 16:35:53 2019 -0400
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:53:35 2019 -0500

    iotests: add testing shim for script-style python tests
    
    Because the new-style python tests don't use the iotests.main() test
    launcher, we don't turn on the debugger logging for these scripts
    when invoked via ./check -d.
    
    Refactor the launcher shim into new and old style shims so that they
    share environmental configuration.
    
    Two cleanup notes: debug was not actually used as a global, and there
    was no reason to create a class in an inner scope just to achieve
    default variables; we can simply create an instance of the runner with
    the values we want instead.
    
    Signed-off-by: John Snow <jsnow@redhat.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190709232550.10724-14-jsnow@redhat.com
    Signed-off-by: John Snow <jsnow@redhat.com>
    (cherry picked from commit 456a2d5ac7641c7e75c76328a561b528a8607a8e)
    *prereq for 88d2aa533a
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/iotests.py | 40 ++++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index ce74177ab1..25c5a047b3 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -61,7 +61,6 @@ cachemode = os.environ.get('CACHEMODE')
 qemu_default_machine = os.environ.get('QEMU_DEFAULT_MACHINE')
 
 socket_scm_helper = os.environ.get('SOCKET_SCM_HELPER', 'socket_scm_helper')
-debug = False
 
 luks_default_secret_object = 'secret,id=keysec0,data=' + \
                              os.environ.get('IMGKEYSECRET', '')
@@ -842,11 +841,22 @@ def skip_if_unsupported(required_formats=[], read_only=False):
         return func_wrapper
     return skip_test_decorator
 
-def main(supported_fmts=[], supported_oses=['linux'], supported_cache_modes=[],
-         unsupported_fmts=[]):
-    '''Run tests'''
+def execute_unittest(output, verbosity, debug):
+    runner = unittest.TextTestRunner(stream=output, descriptions=True,
+                                     verbosity=verbosity)
+    try:
+        # unittest.main() will use sys.exit(); so expect a SystemExit
+        # exception
+        unittest.main(testRunner=runner)
+    finally:
+        if not debug:
+            sys.stderr.write(re.sub(r'Ran (\d+) tests? in [\d.]+s',
+                                    r'Ran \1 tests', output.getvalue()))
 
-    global debug
+def execute_test(test_function=None,
+                 supported_fmts=[], supported_oses=['linux'],
+                 supported_cache_modes=[], unsupported_fmts=[]):
+    """Run either unittest or script-style tests."""
 
     # We are using TEST_DIR and QEMU_DEFAULT_MACHINE as proxies to
     # indicate that we're not being run via "check". There may be
@@ -878,13 +888,15 @@ def main(supported_fmts=[], supported_oses=['linux'], supported_cache_modes=[],
 
     logging.basicConfig(level=(logging.DEBUG if debug else logging.WARN))
 
-    class MyTestRunner(unittest.TextTestRunner):
-        def __init__(self, stream=output, descriptions=True, verbosity=verbosity):
-            unittest.TextTestRunner.__init__(self, stream, descriptions, verbosity)
+    if not test_function:
+        execute_unittest(output, verbosity, debug)
+    else:
+        test_function()
+
+def script_main(test_function, *args, **kwargs):
+    """Run script-style tests outside of the unittest framework"""
+    execute_test(test_function, *args, **kwargs)
 
-    # unittest.main() will use sys.exit() so expect a SystemExit exception
-    try:
-        unittest.main(testRunner=MyTestRunner)
-    finally:
-        if not debug:
-            sys.stderr.write(re.sub(r'Ran (\d+) tests? in [\d.]+s', r'Ran \1 tests', output.getvalue()))
+def main(*args, **kwargs):
+    """Run tests using the unittest framework"""
+    execute_test(None, *args, **kwargs)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:02:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:02:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnIf-0003Rq-5l; Wed, 15 Apr 2020 19:02:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnId-0003RW-7F
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:15 +0000
X-Inumbo-ID: 9e284e3f-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9e284e3f-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:02:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=EqaU62AFUFdDQsNPmY7sWWA/ivTI1eabEMe7m28UL18=; b=WHx3lW/HLBmsWiuQ3VhJpBEd3N
 CUXDrYXfC906tcoxlkAbc2tpJOuL8kNLEmvNarnpoKzYL5ENe4YRrk80XgVwAnHlYrkn5youTqAAi
 54Aq6pAu9jV1VmVE4ASGhLN/y6WXY9cUmIx8P3yI94K8cDmSceHaX4jxmLOJqdXUZerU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnIc-0002YF-Em
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnIc-0007Co-De
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Add supported protocols to
 execute_test()
Message-Id: <E1jOnIc-0007Co-De@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:02:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 819ba23575be2ce4d14bff12d54bad0f625cf148
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:17 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:53:52 2019 -0500

    iotests: Add supported protocols to execute_test()
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 88d2aa533a4a1aad44a27c2e6cd5bc5fbcbce7ed)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/iotests.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 25c5a047b3..2f7edc2f33 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -855,7 +855,8 @@ def execute_unittest(output, verbosity, debug):
 
 def execute_test(test_function=None,
                  supported_fmts=[], supported_oses=['linux'],
-                 supported_cache_modes=[], unsupported_fmts=[]):
+                 supported_cache_modes=[], unsupported_fmts=[],
+                 supported_protocols=[], unsupported_protocols=[]):
     """Run either unittest or script-style tests."""
 
     # We are using TEST_DIR and QEMU_DEFAULT_MACHINE as proxies to
@@ -869,6 +870,7 @@ def execute_test(test_function=None,
     debug = '-d' in sys.argv
     verbosity = 1
     verify_image_format(supported_fmts, unsupported_fmts)
+    verify_protocol(supported_protocols, unsupported_protocols)
     verify_platform(supported_oses)
     verify_cache_mode(supported_cache_modes)
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:02:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:02:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnIp-0003TV-7Y; Wed, 15 Apr 2020 19:02:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnIn-0003Sr-PB
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:25 +0000
X-Inumbo-ID: a47647dc-7f4b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a47647dc-7f4b-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:02:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=tUPSA2uXmb4ofH0SYjZBJvQZO5WEfuhbSpP1EeewPjw=; b=YSt6l0uR9p0w/V17fPyZ1cvFWb
 hzHBYfqXJLQtNv/LMbnMyq1JZB0HQMILeFTtSogbsFYKtFjoHKAFJXyoBlgWiswIVs9Ecp1YJpssK
 7guVyXkFYIqgME/DlNbMmkGrGurd7SUOLSM+6RVGNPUTrB6XbkiT1d1qqM1KgOGJpVuc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnIm-0002YN-I8
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnIm-0007DT-HE
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Restrict file Python tests to file
Message-Id: <E1jOnIm-0007DT-HE@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:02:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit eee776fbc06be627ce6e01c5766db9f83af55ec1
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:18 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:55:10 2019 -0500

    iotests: Restrict file Python tests to file
    
    Most of our Python unittest-style tests only support the file protocol.
    You can run them with any other protocol, but the test will simply
    ignore your choice and use file anyway.
    
    We should let them signal that they require the file protocol so they
    are skipped when you want to test some other protocol.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 103cbc771e5660d1f5bb458be80aa9e363547ae0)
     Conflicts:
            tests/qemu-iotests/257
    *drop changes for tests not in 4.1.0
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/030 | 3 ++-
 tests/qemu-iotests/040 | 3 ++-
 tests/qemu-iotests/041 | 3 ++-
 tests/qemu-iotests/044 | 3 ++-
 tests/qemu-iotests/045 | 3 ++-
 tests/qemu-iotests/055 | 3 ++-
 tests/qemu-iotests/056 | 3 ++-
 tests/qemu-iotests/057 | 3 ++-
 tests/qemu-iotests/065 | 3 ++-
 tests/qemu-iotests/096 | 3 ++-
 tests/qemu-iotests/118 | 3 ++-
 tests/qemu-iotests/124 | 3 ++-
 tests/qemu-iotests/129 | 3 ++-
 tests/qemu-iotests/132 | 3 ++-
 tests/qemu-iotests/139 | 3 ++-
 tests/qemu-iotests/148 | 3 ++-
 tests/qemu-iotests/151 | 3 ++-
 tests/qemu-iotests/152 | 3 ++-
 tests/qemu-iotests/155 | 3 ++-
 tests/qemu-iotests/163 | 3 ++-
 tests/qemu-iotests/165 | 3 ++-
 tests/qemu-iotests/169 | 3 ++-
 tests/qemu-iotests/196 | 3 ++-
 tests/qemu-iotests/199 | 3 ++-
 tests/qemu-iotests/245 | 3 ++-
 25 files changed, 50 insertions(+), 25 deletions(-)

diff --git a/tests/qemu-iotests/030 b/tests/qemu-iotests/030
index 1b69f318c6..f3766f2a81 100755
--- a/tests/qemu-iotests/030
+++ b/tests/qemu-iotests/030
@@ -957,4 +957,5 @@ class TestSetSpeed(iotests.QMPTestCase):
         self.cancel_and_wait(resume=True)
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'qed'])
+    iotests.main(supported_fmts=['qcow2', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/040 b/tests/qemu-iotests/040
index aa0b1847e3..f9e603e715 100755
--- a/tests/qemu-iotests/040
+++ b/tests/qemu-iotests/040
@@ -433,4 +433,5 @@ class TestReopenOverlay(ImageCommitTestCase):
         self.run_commit_test(self.img1, self.img0)
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'qed'])
+    iotests.main(supported_fmts=['qcow2', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
index 26bf1701eb..ae6ed952c6 100755
--- a/tests/qemu-iotests/041
+++ b/tests/qemu-iotests/041
@@ -1068,4 +1068,5 @@ class TestOrphanedSource(iotests.QMPTestCase):
         self.assert_qmp(result, 'error/class', 'GenericError')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'qed'])
+    iotests.main(supported_fmts=['qcow2', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/044 b/tests/qemu-iotests/044
index 9ec3dba734..05ea1f49c5 100755
--- a/tests/qemu-iotests/044
+++ b/tests/qemu-iotests/044
@@ -118,4 +118,5 @@ class TestRefcountTableGrowth(iotests.QMPTestCase):
         pass
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/045 b/tests/qemu-iotests/045
index d5484a0ee1..01cc038884 100755
--- a/tests/qemu-iotests/045
+++ b/tests/qemu-iotests/045
@@ -175,4 +175,5 @@ class TestSCMFd(iotests.QMPTestCase):
             "File descriptor named '%s' not found" % fdname)
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw'])
+    iotests.main(supported_fmts=['raw'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/055 b/tests/qemu-iotests/055
index 3437c11507..c732a112d6 100755
--- a/tests/qemu-iotests/055
+++ b/tests/qemu-iotests/055
@@ -563,4 +563,5 @@ class TestDriveCompression(iotests.QMPTestCase):
                                         target='drive1')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw', 'qcow2'])
+    iotests.main(supported_fmts=['raw', 'qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/056 b/tests/qemu-iotests/056
index e761e465ae..98c55d8e5a 100755
--- a/tests/qemu-iotests/056
+++ b/tests/qemu-iotests/056
@@ -335,4 +335,5 @@ class BackupTest(iotests.QMPTestCase):
         self.dismissal_failure(True)
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'qed'])
+    iotests.main(supported_fmts=['qcow2', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/057 b/tests/qemu-iotests/057
index 9f0a5a3057..9fbba759b6 100755
--- a/tests/qemu-iotests/057
+++ b/tests/qemu-iotests/057
@@ -256,4 +256,5 @@ class TestSnapshotDelete(ImageSnapshotTestCase):
         self.assert_qmp(result, 'error/class', 'GenericError')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/065 b/tests/qemu-iotests/065
index 8bac383ea7..5b21eb96bd 100755
--- a/tests/qemu-iotests/065
+++ b/tests/qemu-iotests/065
@@ -129,4 +129,5 @@ TestQemuImgInfo = None
 TestQMP = None
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/096 b/tests/qemu-iotests/096
index a69439602d..ab9cb47822 100755
--- a/tests/qemu-iotests/096
+++ b/tests/qemu-iotests/096
@@ -67,4 +67,5 @@ class TestLiveSnapshot(iotests.QMPTestCase):
         self.checkConfig('target')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/118 b/tests/qemu-iotests/118
index 499c5f0901..c7d8af1a85 100755
--- a/tests/qemu-iotests/118
+++ b/tests/qemu-iotests/118
@@ -707,4 +707,5 @@ if __name__ == '__main__':
                        iotests.qemu_default_machine)
     # Need to support image creation
     iotests.main(supported_fmts=['vpc', 'parallels', 'qcow', 'vdi', 'qcow2',
-                                 'vmdk', 'raw', 'vhdx', 'qed'])
+                                 'vmdk', 'raw', 'vhdx', 'qed'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/124 b/tests/qemu-iotests/124
index 3440f54781..ca40ba3be2 100755
--- a/tests/qemu-iotests/124
+++ b/tests/qemu-iotests/124
@@ -779,4 +779,5 @@ class TestIncrementalBackupBlkdebug(TestIncrementalBackupBase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/129 b/tests/qemu-iotests/129
index 9e87e1c8d9..cd6b9e9ce7 100755
--- a/tests/qemu-iotests/129
+++ b/tests/qemu-iotests/129
@@ -83,4 +83,5 @@ class TestStopWithBlockJob(iotests.QMPTestCase):
         self.do_test_stop("block-commit", device="drive0")
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=["qcow2"])
+    iotests.main(supported_fmts=["qcow2"],
+                 supported_protocols=["file"])
diff --git a/tests/qemu-iotests/132 b/tests/qemu-iotests/132
index f53ef6e391..0f2a106c81 100755
--- a/tests/qemu-iotests/132
+++ b/tests/qemu-iotests/132
@@ -56,4 +56,5 @@ class TestSingleDrive(iotests.QMPTestCase):
                         'target image does not match source after mirroring')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw', 'qcow2'])
+    iotests.main(supported_fmts=['raw', 'qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/139 b/tests/qemu-iotests/139
index 933b45121a..8dc839ec7e 100755
--- a/tests/qemu-iotests/139
+++ b/tests/qemu-iotests/139
@@ -361,4 +361,5 @@ class TestBlockdevDel(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=["qcow2"])
+    iotests.main(supported_fmts=["qcow2"],
+                 supported_protocols=["file"])
diff --git a/tests/qemu-iotests/148 b/tests/qemu-iotests/148
index e01b061fe7..8c11c53cba 100755
--- a/tests/qemu-iotests/148
+++ b/tests/qemu-iotests/148
@@ -137,4 +137,5 @@ class TestFifoQuorumEvents(TestQuorumEvents):
 
 if __name__ == '__main__':
     iotests.verify_quorum()
-    iotests.main(supported_fmts=["raw"])
+    iotests.main(supported_fmts=["raw"],
+                 supported_protocols=["file"])
diff --git a/tests/qemu-iotests/151 b/tests/qemu-iotests/151
index ad7359fc8d..76ae265cc1 100755
--- a/tests/qemu-iotests/151
+++ b/tests/qemu-iotests/151
@@ -142,4 +142,5 @@ class TestActiveMirror(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2', 'raw'])
+    iotests.main(supported_fmts=['qcow2', 'raw'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/152 b/tests/qemu-iotests/152
index fec546d033..732bf5f062 100755
--- a/tests/qemu-iotests/152
+++ b/tests/qemu-iotests/152
@@ -59,4 +59,5 @@ class TestUnaligned(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw', 'qcow2'])
+    iotests.main(supported_fmts=['raw', 'qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/155 b/tests/qemu-iotests/155
index 63a5b5e2c0..e19485911c 100755
--- a/tests/qemu-iotests/155
+++ b/tests/qemu-iotests/155
@@ -258,4 +258,5 @@ BaseClass = None
 MirrorBaseClass = None
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/163 b/tests/qemu-iotests/163
index 158ba5d092..081ccc8ac1 100755
--- a/tests/qemu-iotests/163
+++ b/tests/qemu-iotests/163
@@ -170,4 +170,5 @@ class TestShrink1M(ShrinkBaseClass):
 ShrinkBaseClass = None
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['raw', 'qcow2'])
+    iotests.main(supported_fmts=['raw', 'qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/165 b/tests/qemu-iotests/165
index 88f62d3c6d..5650dc7c87 100755
--- a/tests/qemu-iotests/165
+++ b/tests/qemu-iotests/165
@@ -103,4 +103,5 @@ class TestPersistentDirtyBitmap(iotests.QMPTestCase):
         self.vm.shutdown()
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/169 b/tests/qemu-iotests/169
index 7e06cc1145..8c204caf20 100755
--- a/tests/qemu-iotests/169
+++ b/tests/qemu-iotests/169
@@ -227,4 +227,5 @@ for cmb in list(itertools.product((True, False), repeat=2)):
                      'do_test_migration_resume_source', *list(cmb))
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/196 b/tests/qemu-iotests/196
index 4116ebc92b..92fe9244f8 100755
--- a/tests/qemu-iotests/196
+++ b/tests/qemu-iotests/196
@@ -63,4 +63,5 @@ class TestInvalidateAutoclear(iotests.QMPTestCase):
             self.assertEqual(f.read(1), b'\x00')
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'])
+    iotests.main(supported_fmts=['qcow2'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/199 b/tests/qemu-iotests/199
index 651e8df5d9..a2c8ecab5a 100755
--- a/tests/qemu-iotests/199
+++ b/tests/qemu-iotests/199
@@ -115,4 +115,5 @@ class TestDirtyBitmapPostcopyMigration(iotests.QMPTestCase):
         self.assert_qmp(result, 'return/sha256', sha256);
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['qcow2'], supported_cache_modes=['none'])
+    iotests.main(supported_fmts=['qcow2'], supported_cache_modes=['none'],
+                 supported_protocols=['file'])
diff --git a/tests/qemu-iotests/245 b/tests/qemu-iotests/245
index bc1ceb9792..41218d5f1d 100644
--- a/tests/qemu-iotests/245
+++ b/tests/qemu-iotests/245
@@ -1000,4 +1000,5 @@ class TestBlockdevReopen(iotests.QMPTestCase):
         self.reopen(opts, {'backing': 'hd2'})
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=["qcow2"])
+    iotests.main(supported_fmts=["qcow2"],
+                 supported_protocols=["file"])
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:02:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:02:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnIz-0003Ug-9w; Wed, 15 Apr 2020 19:02:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnIx-0003UT-9M
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:35 +0000
X-Inumbo-ID: aa781d04-7f4b-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id aa781d04-7f4b-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:02:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vW9ZooFN54IFUIiArNbjX3kTHUCV9+HGfU1c+X5UF0A=; b=yIeRNZoTKmWVd5N5LbdOq+gzFO
 bsiBWczlGlwwnCHeL9LfLwKPdnQoG5KmAvQkjtSfZQvDLpC4mL8z4GWryNDzie4Mo8tvb0gA0if2P
 IdYVOZj6IoFaogYsNrpTyqzFFifBiySkgZf2ydBImDU+DCH2dO3QC3DX7IINbm6kch5Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnIw-0002Ya-Kq
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnIw-0007FO-Jy
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Restrict nbd Python tests to nbd
Message-Id: <E1jOnIw-0007FO-Jy@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:02:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 593beeaf81964e890d0f7f40fa4bafcb9769ae35
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:19 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:55:39 2019 -0500

    iotests: Restrict nbd Python tests to nbd
    
    We have two Python unittest-style tests that test NBD.  As such, they
    should specify supported_protocols=['nbd'] so they are skipped when the
    user wants to test some other protocol.
    
    Furthermore, we should restrict their choice of formats to 'raw'.  The
    idea of a protocol/format combination is to use some format over some
    protocol; but we always use the raw format over NBD.  It does not really
    matter what the NBD server uses on its end, and it is not a useful test
    of the respective format driver anyway.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 7c932a1d69a6d6ac5c0b615c11d191da3bbe9aa8)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/147 | 5 ++---
 tests/qemu-iotests/205 | 3 ++-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tests/qemu-iotests/147 b/tests/qemu-iotests/147
index 2d84fddb01..ab8480b9a4 100755
--- a/tests/qemu-iotests/147
+++ b/tests/qemu-iotests/147
@@ -287,6 +287,5 @@ class BuiltinNBD(NBDBlockdevAddBase):
 
 
 if __name__ == '__main__':
-    # Need to support image creation
-    iotests.main(supported_fmts=['vpc', 'parallels', 'qcow', 'vdi', 'qcow2',
-                                 'vmdk', 'raw', 'vhdx', 'qed'])
+    iotests.main(supported_fmts=['raw'],
+                 supported_protocols=['nbd'])
diff --git a/tests/qemu-iotests/205 b/tests/qemu-iotests/205
index b8a86c446e..76f6c5fa2b 100755
--- a/tests/qemu-iotests/205
+++ b/tests/qemu-iotests/205
@@ -153,4 +153,5 @@ class TestNbdServerRemove(iotests.QMPTestCase):
 
 
 if __name__ == '__main__':
-    iotests.main(supported_fmts=['generic'])
+    iotests.main(supported_fmts=['raw'],
+                 supported_protocols=['nbd'])
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:02:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:02:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnJ8-0003Vu-C0; Wed, 15 Apr 2020 19:02:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnJ7-0003Vo-WF
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:46 +0000
X-Inumbo-ID: b07d45e4-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b07d45e4-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:02:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hShA4+hGpHNGUZP5oAX2EdvYQjRa5oXwAD3kV2fcJ9E=; b=JDOLFKmnJZlcwhvQA5BO3KPk61
 p3ME9mNNxhZ+CZlTfvERsdN65j1hK8AwYczaay3JunW+Fi8E2bWZQZjOnNHxb6A5LnzquIyF1jaH7
 ezk+8uNQESFgY9D6H+/mqqCIjlmtlieO2rU8+fuqNN0T2KqJmCOFIroiTP59kCC4ABm4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJ6-0002ZB-Nf
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJ6-0007G4-Mu
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Test blockdev-create for vpc
Message-Id: <E1jOnJ6-0007G4-Mu@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:02:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ad95e0573ede001e7d56f10c2119368dc57c3bb6
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Sep 2 21:33:20 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:55:44 2019 -0500

    iotests: Test blockdev-create for vpc
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit cb73747e1a47b93d3dfdc3f769c576b053916938)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/266     | 153 +++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/266.out | 137 ++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/group   |   1 +
 3 files changed, 291 insertions(+)

diff --git a/tests/qemu-iotests/266 b/tests/qemu-iotests/266
new file mode 100755
index 0000000000..5b35cd67e4
--- /dev/null
+++ b/tests/qemu-iotests/266
@@ -0,0 +1,153 @@
+#!/usr/bin/env python
+#
+# Test VPC and file image creation
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+import iotests
+from iotests import imgfmt
+
+
+def blockdev_create(vm, options):
+    result = vm.qmp_log('blockdev-create', job_id='job0', options=options,
+                        filters=[iotests.filter_qmp_testfiles])
+
+    if 'return' in result:
+        assert result['return'] == {}
+        vm.run_job('job0')
+
+
+# Successful image creation (defaults)
+def implicit_defaults(vm, file_path):
+    iotests.log("=== Successful image creation (defaults) ===")
+    iotests.log("")
+
+    # 8 heads, 964 cyls/head, 17 secs/cyl
+    # (Close to 64 MB)
+    size = 8 * 964 * 17 * 512
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': size })
+
+
+# Successful image creation (explicit defaults)
+def explicit_defaults(vm, file_path):
+    iotests.log("=== Successful image creation (explicit defaults) ===")
+    iotests.log("")
+
+    # 16 heads, 964 cyls/head, 17 secs/cyl
+    # (Close to 128 MB)
+    size = 16 * 964 * 17 * 512
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': size,
+                          'subformat': 'dynamic',
+                          'force-size': False })
+
+
+# Successful image creation (non-default options)
+def non_defaults(vm, file_path):
+    iotests.log("=== Successful image creation (non-default options) ===")
+    iotests.log("")
+
+    # Not representable in CHS (fine with force-size=True)
+    size = 1048576
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': size,
+                          'subformat': 'fixed',
+                          'force-size': True })
+
+
+# Size not representable in CHS with force-size=False
+def non_chs_size_without_force(vm, file_path):
+    iotests.log("=== Size not representable in CHS ===")
+    iotests.log("")
+
+    # Not representable in CHS (will not work with force-size=False)
+    size = 1048576
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': size,
+                          'force-size': False })
+
+
+# Zero size
+def zero_size(vm, file_path):
+    iotests.log("=== Zero size===")
+    iotests.log("")
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': 0 })
+
+
+# Maximum CHS size
+def maximum_chs_size(vm, file_path):
+    iotests.log("=== Maximum CHS size===")
+    iotests.log("")
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': 16 * 65535 * 255 * 512 })
+
+
+# Actual maximum size
+def maximum_size(vm, file_path):
+    iotests.log("=== Actual maximum size===")
+    iotests.log("")
+
+    blockdev_create(vm, { 'driver': imgfmt,
+                          'file': 'protocol-node',
+                          'size': 0xff000000 * 512,
+                          'force-size': True })
+
+
+def main():
+    for test_func in [implicit_defaults, explicit_defaults, non_defaults,
+                      non_chs_size_without_force, zero_size, maximum_chs_size,
+                      maximum_size]:
+
+        with iotests.FilePath('t.vpc') as file_path, \
+             iotests.VM() as vm:
+
+            vm.launch()
+
+            iotests.log('--- Creating empty file ---')
+            blockdev_create(vm, { 'driver': 'file',
+                                  'filename': file_path,
+                                  'size': 0 })
+
+            vm.qmp_log('blockdev-add', driver='file', filename=file_path,
+                       node_name='protocol-node',
+                       filters=[iotests.filter_qmp_testfiles])
+            iotests.log('')
+
+            print_info = test_func(vm, file_path)
+            iotests.log('')
+
+            vm.shutdown()
+            iotests.img_info_log(file_path)
+
+
+iotests.script_main(main,
+                    supported_fmts=['vpc'],
+                    supported_protocols=['file'])
diff --git a/tests/qemu-iotests/266.out b/tests/qemu-iotests/266.out
new file mode 100644
index 0000000000..b11953e81f
--- /dev/null
+++ b/tests/qemu-iotests/266.out
@@ -0,0 +1,137 @@
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Successful image creation (defaults) ===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "size": 67125248}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 64 MiB (67125248 bytes)
+cluster_size: 2097152
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Successful image creation (explicit defaults) ===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "force-size": false, "size": 134250496, "subformat": "dynamic"}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 128 MiB (134250496 bytes)
+cluster_size: 2097152
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Successful image creation (non-default options) ===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "force-size": true, "size": 1048576, "subformat": "fixed"}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 1 MiB (1048576 bytes)
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Size not representable in CHS ===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "force-size": false, "size": 1048576}}}
+{"return": {}}
+Job failed: The requested image size cannot be represented in CHS geometry
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+qemu-img: Could not open 'TEST_IMG': File too small for a VHD header
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Zero size===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 0 B (0 bytes)
+cluster_size: 2097152
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Maximum CHS size===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "size": 136899993600}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 127 GiB (136899993600 bytes)
+cluster_size: 2097152
+
+--- Creating empty file ---
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "size": 0}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+{"execute": "blockdev-add", "arguments": {"driver": "file", "filename": "TEST_DIR/PID-t.vpc", "node-name": "protocol-node"}}
+{"return": {}}
+
+=== Actual maximum size===
+
+{"execute": "blockdev-create", "arguments": {"job-id": "job0", "options": {"driver": "vpc", "file": "protocol-node", "force-size": true, "size": 2190433320960}}}
+{"return": {}}
+{"execute": "job-dismiss", "arguments": {"id": "job0"}}
+{"return": {}}
+
+image: TEST_IMG
+file format: IMGFMT
+virtual size: 1.99 TiB (2190433320960 bytes)
+cluster_size: 2097152
+
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 468458efb1..3660a741f2 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -272,3 +272,4 @@
 255 rw quick
 256 rw quick
 265 rw auto quick
+266 rw quick
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:02:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:02:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnJI-0003XN-Ft; Wed, 15 Apr 2020 19:02:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnJH-0003XF-Dd
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:55 +0000
X-Inumbo-ID: b67e06e0-7f4b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b67e06e0-7f4b-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:02:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vvKzbIQRsCbQmvwfSYCUSI6/qtC7xo5aj4OeaHfjtAc=; b=Jiu+BO5yQEls2sdwL7JZQeJx/I
 IIm4EuQFVQCmxe0Jp17enXA+RotETc5R6NYzRl4XHQHgKmAm9UQUZITQGMRWN0icNImtcw9mvzOnM
 dfl/KCeGCPTLXeT4TKwfE/qwi+zKTXHPCvi+gBlHNema//YOQO+yjDOXA5KYDYt5rEJw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJG-0002ZN-QL
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJG-0007Go-PV
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:02:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] target/arm: Free TCG temps in
 trans_VMOV_64_sp()
Message-Id: <E1jOnJG-0007Go-PV@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:02:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 38fb634853ac6547326d9f88b9a068d9fc6b4ad4
Author:     Peter Maydell <peter.maydell@linaro.org>
AuthorDate: Tue Aug 27 13:19:31 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:57:16 2019 -0500

    target/arm: Free TCG temps in trans_VMOV_64_sp()
    
    The function neon_store_reg32() doesn't free the TCG temp that it
    is passed, so the caller must do that. We got this right in most
    places but forgot to free the TCG temps in trans_VMOV_64_sp().
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Message-id: 20190827121931.26836-1-peter.maydell@linaro.org
    (cherry picked from commit 342d27581bd3ecdb995e4fc55fcd383cf3242888)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/arm/translate-vfp.inc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/target/arm/translate-vfp.inc.c b/target/arm/translate-vfp.inc.c
index 092eb5ec53..ef45cecbea 100644
--- a/target/arm/translate-vfp.inc.c
+++ b/target/arm/translate-vfp.inc.c
@@ -881,8 +881,10 @@ static bool trans_VMOV_64_sp(DisasContext *s, arg_VMOV_64_sp *a)
         /* gpreg to fpreg */
         tmp = load_reg(s, a->rt);
         neon_store_reg32(tmp, a->vm);
+        tcg_temp_free_i32(tmp);
         tmp = load_reg(s, a->rt2);
         neon_store_reg32(tmp, a->vm + 1);
+        tcg_temp_free_i32(tmp);
     }
 
     return true;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:03:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:03:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnJT-0003Zg-I5; Wed, 15 Apr 2020 19:03:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnJS-0003ZY-BI
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:06 +0000
X-Inumbo-ID: bc897128-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bc897128-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:03:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=e341/j1fFSpZEQEV0q7IZdvP4ie6Kg06u7F/vQf9Nig=; b=hNULILFEpZJ2UxljiV4aPMFtNI
 X70P6Q5U1gbNLU70UqVJErWXEQ+1MX096fyAOUWDAobpXv9ogox7On8VHDtbVxmjZVYgI70tqzb0T
 p0t+hnXC8ZTKg5uPbBLOlRxsL0qZAU6EVC3MB2HLkGPbQIRxdieRMVusnkt5E/smaU6Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJQ-0002Zj-U9
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJQ-0007Hu-Sb
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] target/arm: Don't abort on M-profile exception
 return in linux-user mode
Message-Id: <E1jOnJQ-0007Hu-Sb@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:03:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9027d3fba605d8f6093342ebe4a1da450d374630
Author:     Peter Maydell <peter.maydell@linaro.org>
AuthorDate: Thu Aug 22 14:15:34 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:58:01 2019 -0500

    target/arm: Don't abort on M-profile exception return in linux-user mode
    
    An attempt to do an exception-return (branch to one of the magic
    addresses) in linux-user mode for M-profile should behave like
    a normal branch, because linux-user mode is always going to be
    in 'handler' mode. This used to work, but we broke it when we added
    support for the M-profile security extension in commit d02a8698d7ae2bfed.
    
    In that commit we allowed even handler-mode calls to magic return
    values to be checked for and dealt with by causing an
    EXCP_EXCEPTION_EXIT exception to be taken, because this is
    needed for the FNC_RETURN return-from-non-secure-function-call
    handling. For system mode we added a check in do_v7m_exception_exit()
    to make any spurious calls from Handler mode behave correctly, but
    forgot that linux-user mode would also be affected.
    
    How an attempted return-from-non-secure-function-call in linux-user
    mode should be handled is not clear -- on real hardware it would
    result in return to secure code (not to the Linux kernel) which
    could then handle the error in any way it chose. For QEMU we take
    the simple approach of treating this erroneous return the same way
    it would be handled on a CPU without the security extensions --
    treat it as a normal branch.
    
    The upshot of all this is that for linux-user mode we should never
    do any of the bx_excret magic, so the code change is simple.
    
    This ought to be a weird corner case that only affects broken guest
    code (because Linux user processes should never be attempting to do
    exception returns or NS function returns), except that the code that
    assigns addresses in RAM for the process and stack in our linux-user
    code does not attempt to avoid this magic address range, so
    legitimate code attempting to return to a trampoline routine on the
    stack can fall into this case. This change fixes those programs,
    but we should also look at restricting the range of memory we
    use for M-profile linux-user guests to the area that would be
    real RAM in hardware.
    
    Cc: qemu-stable@nongnu.org
    Reported-by: Christophe Lyon <christophe.lyon@linaro.org>
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    Message-id: 20190822131534.16602-1-peter.maydell@linaro.org
    Fixes: https://bugs.launchpad.net/qemu/+bug/1840922
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    (cherry picked from commit 5e5584c89f36b302c666bc6db535fd3f7ff35ad2)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/arm/translate.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/target/arm/translate.c b/target/arm/translate.c
index 7853462b21..24cb4ba075 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -952,10 +952,27 @@ static inline void gen_bx(DisasContext *s, TCGv_i32 var)
     store_cpu_field(var, thumb);
 }
 
-/* Set PC and Thumb state from var. var is marked as dead.
+/*
+ * Set PC and Thumb state from var. var is marked as dead.
  * For M-profile CPUs, include logic to detect exception-return
  * branches and handle them. This is needed for Thumb POP/LDM to PC, LDR to PC,
  * and BX reg, and no others, and happens only for code in Handler mode.
+ * The Security Extension also requires us to check for the FNC_RETURN
+ * which signals a function return from non-secure state; this can happen
+ * in both Handler and Thread mode.
+ * To avoid having to do multiple comparisons in inline generated code,
+ * we make the check we do here loose, so it will match for EXC_RETURN
+ * in Thread mode. For system emulation do_v7m_exception_exit() checks
+ * for these spurious cases and returns without doing anything (giving
+ * the same behaviour as for a branch to a non-magic address).
+ *
+ * In linux-user mode it is unclear what the right behaviour for an
+ * attempted FNC_RETURN should be, because in real hardware this will go
+ * directly to Secure code (ie not the Linux kernel) which will then treat
+ * the error in any way it chooses. For QEMU we opt to make the FNC_RETURN
+ * attempt behave the way it would on a CPU without the security extension,
+ * which is to say "like a normal branch". That means we can simply treat
+ * all branches as normal with no magic address behaviour.
  */
 static inline void gen_bx_excret(DisasContext *s, TCGv_i32 var)
 {
@@ -963,10 +980,12 @@ static inline void gen_bx_excret(DisasContext *s, TCGv_i32 var)
      * s->base.is_jmp that we need to do the rest of the work later.
      */
     gen_bx(s, var);
+#ifndef CONFIG_USER_ONLY
     if (arm_dc_feature(s, ARM_FEATURE_M_SECURITY) ||
         (s->v7m_handler_mode && arm_dc_feature(s, ARM_FEATURE_M))) {
         s->base.is_jmp = DISAS_BX_EXCRET;
     }
+#endif
 }
 
 static inline void gen_bx_excret_final_code(DisasContext *s)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:03:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:03:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnJc-0003am-KH; Wed, 15 Apr 2020 19:03:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnJb-0003af-M1
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:15 +0000
X-Inumbo-ID: c28c5036-7f4b-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c28c5036-7f4b-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 19:03:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=YLoPYvsvYKLxRZjUzmw6noGejxAJ2LbLpLe4lcvQRSw=; b=Tsrz6u75MLBZPjQvl5SLQ/uJdX
 gfa44PAQWp2e0zrzy1JvbrZpi8mw6y3qslV0nQWR6569qgMmKEay4smDQzg6JpBa4kipVmIcSR9Mp
 p589Ms08m+n95SxdimRSDDTDqw+BxO/b/rteSS5JB27t1l6sn+sT695Fy2k/vvS3TROs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJb-0002Zw-0y
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJa-0007J3-WF
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] libvhost-user: fix SLAVE_SEND_FD handling
Message-Id: <E1jOnJa-0007J3-WF@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:03:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 28a9a3558a427493049723fff390add7026653eb
Author:     Johannes Berg <johannes.berg@intel.com>
AuthorDate: Tue Sep 3 23:04:22 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Sun Oct 27 23:59:27 2019 -0500

    libvhost-user: fix SLAVE_SEND_FD handling
    
    It doesn't look like this could possibly work properly since
    VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD is defined to 10, but the
    dev->protocol_features has a bitmap. I suppose the peer this
    was tested with also supported VHOST_USER_PROTOCOL_F_LOG_SHMFD,
    in which case the test would always be false, but nevertheless
    the code seems wrong.
    
    Use has_feature() to fix this.
    
    Fixes: d84599f56c82 ("libvhost-user: support host notifier")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Message-Id: <20190903200422.11693-1-johannes@sipsolutions.net>
    Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 8726b70b449896f1211f869ec4f608904f027207)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 contrib/libvhost-user/libvhost-user.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index 4b36e35a82..cb5f5770e4 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -1097,7 +1097,8 @@ bool vu_set_queue_host_notifier(VuDev *dev, VuVirtq *vq, int fd,
 
     vmsg.fd_num = fd_num;
 
-    if ((dev->protocol_features & VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD) == 0) {
+    if (!has_feature(dev->protocol_features,
+                     VHOST_USER_PROTOCOL_F_SLAVE_SEND_FD)) {
         return false;
     }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:03:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:03:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnJm-0003cq-MX; Wed, 15 Apr 2020 19:03:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnJl-0003c2-P0
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:25 +0000
X-Inumbo-ID: c88d341e-7f4b-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c88d341e-7f4b-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:03:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=6iGuNRVfIJFbxToPFmQPHEWAkBK2WEuHHvs8aAkt6Qg=; b=SE54F//EwUZ/8eg21J49QG6pAg
 r0QpNPzI/Po4tmqnNnAZuY19yiCxVmecJqzl1ieWSSfL/PjLUGD5L4VhEETNsFpis7T+sjZM+7yH/
 TIXg3EYaJxI0PADyeQd6H2O/8hwe8SHnS/+okhz4NKTZlFwf05qjucRsH7PGDUoBD6MU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJl-0002a5-3o
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJl-0007Jk-31
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] qcow2: Fix the calculation of the maximum L2
 cache size
Message-Id: <E1jOnJl-0007Jk-31@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:03:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c9ffb12754b1575babfef45168b6e1b1af80a95f
Author:     Alberto Garcia <berto@igalia.com>
AuthorDate: Fri Aug 16 15:17:42 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Oct 28 00:00:03 2019 -0500

    qcow2: Fix the calculation of the maximum L2 cache size
    
    The size of the qcow2 L2 cache defaults to 32 MB, which can be easily
    larger than the maximum amount of L2 metadata that the image can have.
    For example: with 64 KB clusters the user would need a qcow2 image
    with a virtual size of 256 GB in order to have 32 MB of L2 metadata.
    
    Because of that, since commit b749562d9822d14ef69c9eaa5f85903010b86c30
    we forbid the L2 cache to become larger than the maximum amount of L2
    metadata for the image, calculated using this formula:
    
        uint64_t max_l2_cache = virtual_disk_size / (s->cluster_size / 8);
    
    The problem with this formula is that the result should be rounded up
    to the cluster size because an L2 table on disk always takes one full
    cluster.
    
    For example, a 1280 MB qcow2 image with 64 KB clusters needs exactly
    160 KB of L2 metadata, but we need 192 KB on disk (3 clusters) even if
    the last 32 KB of those are not going to be used.
    
    However QEMU rounds the numbers down and only creates 2 cache tables
    (128 KB), which is not enough for the image.
    
    A quick test doing 4KB random writes on a 1280 MB image gives me
    around 500 IOPS, while with the correct cache size I get 16K IOPS.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit b70d08205b2e4044c529eefc21df2c8ab61b473b)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/block/qcow2.c b/block/qcow2.c
index 039bdc2f7e..865839682c 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -826,7 +826,11 @@ static void read_cache_sizes(BlockDriverState *bs, QemuOpts *opts,
     bool l2_cache_entry_size_set;
     int min_refcount_cache = MIN_REFCOUNT_CACHE_SIZE * s->cluster_size;
     uint64_t virtual_disk_size = bs->total_sectors * BDRV_SECTOR_SIZE;
-    uint64_t max_l2_cache = virtual_disk_size / (s->cluster_size / 8);
+    uint64_t max_l2_entries = DIV_ROUND_UP(virtual_disk_size, s->cluster_size);
+    /* An L2 table is always one cluster in size so the max cache size
+     * should be a multiple of the cluster size. */
+    uint64_t max_l2_cache = ROUND_UP(max_l2_entries * sizeof(uint64_t),
+                                     s->cluster_size);
 
     combined_cache_size_set = qemu_opt_get(opts, QCOW2_OPT_CACHE_SIZE);
     l2_cache_size_set = qemu_opt_get(opts, QCOW2_OPT_L2_CACHE_SIZE);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:03:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:03:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnJw-0003e1-PC; Wed, 15 Apr 2020 19:03:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnJv-0003dv-Qr
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:35 +0000
X-Inumbo-ID: ce920164-7f4b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ce920164-7f4b-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:03:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2rx9546P34KjKYSmiHwgFFhEORS/yWRve6AYXLchexE=; b=EsfCNO4fjXpD1yYeCYTD88EvB2
 DwTYMr1jBt14adbMIF6Hq5lL4541HbgLEfKBD73SK4KfT9Kd0GzOmVP6e41ABO0a/4PjeEOOmQt4s
 YU9nubGHlvFAU5FyEZqq3A9n4yHs2CJG6IWpjHOHzHffEnkjF65Hi1KR8r9idDmBeVgI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJv-0002aF-6Z
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnJv-0007Ke-5d
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/nfs: tear down aio before nfs_close
Message-Id: <E1jOnJv-0007Ke-5d@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:03:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0694c489cd240620fee5675e8d24c7ce02d1d67d
Author:     Peter Lieven <pl@kamp.de>
AuthorDate: Tue Sep 10 17:41:09 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Oct 28 00:03:19 2019 -0500

    block/nfs: tear down aio before nfs_close
    
    nfs_close is a sync call from libnfs and has its own event
    handler polling on the nfs FD. Avoid that both QEMU and libnfs
    are intefering here.
    
    CC: qemu-stable@nongnu.org
    Signed-off-by: Peter Lieven <pl@kamp.de>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit 601dc6559725f7a614b6f893611e17ff0908e914)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/nfs.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/block/nfs.c b/block/nfs.c
index d93241b3bb..2b7a078241 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -390,12 +390,14 @@ static void nfs_attach_aio_context(BlockDriverState *bs,
 static void nfs_client_close(NFSClient *client)
 {
     if (client->context) {
+        qemu_mutex_lock(&client->mutex);
+        aio_set_fd_handler(client->aio_context, nfs_get_fd(client->context),
+                           false, NULL, NULL, NULL, NULL);
+        qemu_mutex_unlock(&client->mutex);
         if (client->fh) {
             nfs_close(client->context, client->fh);
             client->fh = NULL;
         }
-        aio_set_fd_handler(client->aio_context, nfs_get_fd(client->context),
-                           false, NULL, NULL, NULL, NULL);
         nfs_destroy_context(client->context);
         client->context = NULL;
     }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:03:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:03:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnK6-0003fC-RY; Wed, 15 Apr 2020 19:03:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnK5-0003f6-Ty
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:45 +0000
X-Inumbo-ID: d4956d9e-7f4b-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d4956d9e-7f4b-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:03:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4PpEN794BqsC8hl3H8KYYFTXXjdgly/giBjLKCdQrjk=; b=x4wB4CXnrjv6k8rURIWRh6NFAV
 ivW5nH4hgTjCDrv49zjUWmMxn5mnppd+0rFSJx/rgXU0QANrCF83IGkX+2UNo8C/XHIKBgY6aR4IL
 O/Q+eC42unGzs//Bk7Ute1B/Xdwkw2XqdmuOmxfmOlt7y4jp9vjgIjzOKKBQt7z6xRe8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnK5-0002b6-9M
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnK5-0007Li-8X
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] curl: Keep pointer to the CURLState in
 CURLSocket
Message-Id: <E1jOnK5-0007Li-8X@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:03:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3648493495f2ecb2df22aa4be396e00077693d79
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:30 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Keep pointer to the CURLState in CURLSocket
    
    A follow-up patch will make curl_multi_do() and curl_multi_read() take a
    CURLSocket instead of the CURLState.  They still need the latter,
    though, so add a pointer to it to the former.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Message-id: 20190910124136.10565-2-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 0487861685294660b23bc146e1ebd5304aa8bbe0)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/block/curl.c b/block/curl.c
index d4c8e94f3e..92dc2f630e 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -80,6 +80,7 @@ static CURLMcode __curl_multi_socket_action(CURLM *multi_handle,
 #define CURL_BLOCK_OPT_TIMEOUT_DEFAULT 5
 
 struct BDRVCURLState;
+struct CURLState;
 
 static bool libcurl_initialized;
 
@@ -97,6 +98,7 @@ typedef struct CURLAIOCB {
 
 typedef struct CURLSocket {
     int fd;
+    struct CURLState *state;
     QLIST_ENTRY(CURLSocket) next;
 } CURLSocket;
 
@@ -180,6 +182,7 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
     if (!socket) {
         socket = g_new0(CURLSocket, 1);
         socket->fd = fd;
+        socket->state = state;
         QLIST_INSERT_HEAD(&state->sockets, socket, next);
     }
     socket = NULL;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:03:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:03:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnKH-0003gs-Vj; Wed, 15 Apr 2020 19:03:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnKG-0003gh-M4
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:56 +0000
X-Inumbo-ID: da591cd1-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id da591cd1-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:03:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ArZrJ7nNgmywj3IT7K5srm9j8XGV37RNCFjcBBJ7JaU=; b=CPr0sSYLm7SjkQRpEB6+HOPX2b
 DKC1d2I0wwVfvj7gSXzP1m4RvNinPWvVlv/L929mtMXXEd7Al98gh4vjVhJCm9FFDsks2ra/FzssB
 QuBMPdWHWu98HDoUS6qhPCx9PmwkdnIC7ZnraRRIJPCAO6RZT3ypz3uCsYIxdJlVer9Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKF-0002bG-Bz
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKF-0007MP-BD
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:03:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] curl: Keep *socket until the end of
 curl_sock_cb()
Message-Id: <E1jOnKF-0007MP-BD@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:03:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 78ea94e389b2d503ae9a3023759050fd8072e581
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:31 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Keep *socket until the end of curl_sock_cb()
    
    This does not really change anything, but it makes the code a bit easier
    to follow once we use @socket as the opaque pointer for
    aio_set_fd_handler().
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-3-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 007f339b1099af46a008dac438ca0943e31dba72)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index 92dc2f630e..95d7b77dc0 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -172,10 +172,6 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
 
     QLIST_FOREACH(socket, &state->sockets, next) {
         if (socket->fd == fd) {
-            if (action == CURL_POLL_REMOVE) {
-                QLIST_REMOVE(socket, next);
-                g_free(socket);
-            }
             break;
         }
     }
@@ -185,7 +181,6 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
         socket->state = state;
         QLIST_INSERT_HEAD(&state->sockets, socket, next);
     }
-    socket = NULL;
 
     trace_curl_sock_cb(action, (int)fd);
     switch (action) {
@@ -207,6 +202,11 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
             break;
     }
 
+    if (action == CURL_POLL_REMOVE) {
+        QLIST_REMOVE(socket, next);
+        g_free(socket);
+    }
+
     return 0;
 }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:04:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:04:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnKR-0003hr-1k; Wed, 15 Apr 2020 19:04:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnKQ-0003hk-5d
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:06 +0000
X-Inumbo-ID: e09bccf0-7f4b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e09bccf0-7f4b-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:04:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=trq6UZGGbbOa1Vyd2bqXrF0kh2QSTiwsnNvRO46cTEw=; b=BD1vzyj7COyO8/X5v+Nzsdr7c4
 hPqWkfuXW1kl8Q5k23i9oKwDk3ARGToMLyFqmUddGoCu5XLKl0Q5fkvQOsD8V/MGRqh85cVTydpfy
 jaDOPWjCf18G4sYy02dJs7cyevMiKy1y4XKccoyJ1+0iwvTT6HPJ0h9SgGXbXN6HG0PE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKP-0002be-FD
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKP-0007NF-EK
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] curl: Check completion in curl_multi_do()
Message-Id: <E1jOnKP-0007NF-EK@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:04:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4be97ef966f5d88a64bcc359d2c72152bc08b322
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:32 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Check completion in curl_multi_do()
    
    While it is more likely that transfers complete after some file
    descriptor has data ready to read, we probably should not rely on it.
    Better be safe than sorry and call curl_multi_check_completion() in
    curl_multi_do(), too, just like it is done in curl_multi_read().
    
    With this change, curl_multi_do() and curl_multi_read() are actually the
    same, so drop curl_multi_read() and use curl_multi_do() as the sole FD
    handler.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-4-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 948403bcb1c7e71dcbe8ab8479cf3934a0efcbb5)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 14 ++------------
 1 file changed, 2 insertions(+), 12 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index 95d7b77dc0..5838afef99 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -139,7 +139,6 @@ typedef struct BDRVCURLState {
 
 static void curl_clean_state(CURLState *s);
 static void curl_multi_do(void *arg);
-static void curl_multi_read(void *arg);
 
 #ifdef NEED_CURL_TIMER_CALLBACK
 /* Called from curl_multi_do_locked, with s->mutex held.  */
@@ -186,7 +185,7 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
     switch (action) {
         case CURL_POLL_IN:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               curl_multi_read, NULL, NULL, state);
+                               curl_multi_do, NULL, NULL, state);
             break;
         case CURL_POLL_OUT:
             aio_set_fd_handler(s->aio_context, fd, false,
@@ -194,7 +193,7 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
             break;
         case CURL_POLL_INOUT:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               curl_multi_read, curl_multi_do, NULL, state);
+                               curl_multi_do, curl_multi_do, NULL, state);
             break;
         case CURL_POLL_REMOVE:
             aio_set_fd_handler(s->aio_context, fd, false,
@@ -418,15 +417,6 @@ static void curl_multi_do(void *arg)
 
     qemu_mutex_lock(&s->s->mutex);
     curl_multi_do_locked(s);
-    qemu_mutex_unlock(&s->s->mutex);
-}
-
-static void curl_multi_read(void *arg)
-{
-    CURLState *s = (CURLState *)arg;
-
-    qemu_mutex_lock(&s->s->mutex);
-    curl_multi_do_locked(s);
     curl_multi_check_completion(s->s);
     qemu_mutex_unlock(&s->s->mutex);
 }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:04:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:04:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnKb-0003jJ-3l; Wed, 15 Apr 2020 19:04:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnKa-0003jB-AW
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:16 +0000
X-Inumbo-ID: e65cf92d-7f4b-11ea-8ac3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e65cf92d-7f4b-11ea-8ac3-12813bfff9fa;
 Wed, 15 Apr 2020 19:04:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=E7Qndz1oLuQPQKmgL0nFf15e3KVvsJLWWWnmA+8eWlE=; b=VyninCNt2FYRjyWtFkGh1Vgod6
 9oi542Vy4PAiNER4HA9ZTOrNY9SF+ybuWmZDS/o8kM/thqcT7AwePq09SaoBYaK29ffaAeURxPOfP
 uKfNkMqFfF2bFekZqvRI1m5jMhF+y2crHFh+i7PU/2VUFrkZXSZJ7nxtMYrV0arLDkU4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKZ-0002bn-Hu
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKZ-0007OV-H0
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] curl: Pass CURLSocket to curl_multi_do()
Message-Id: <E1jOnKZ-0007OV-H0@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:04:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0888ddac8e507e54ae69db7ccbae1117d7ec33b1
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:33 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Pass CURLSocket to curl_multi_do()
    
    curl_multi_do_locked() currently marks all sockets as ready.  That is
    not only inefficient, but in fact unsafe (the loop is).  A follow-up
    patch will change that, but to do so, curl_multi_do_locked() needs to
    know exactly which socket is ready; and that is accomplished by this
    patch here.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-5-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 9dbad87d25587ff640ef878f7b6159fc368ff541)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index 5838afef99..cf2686218d 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -185,15 +185,15 @@ static int curl_sock_cb(CURL *curl, curl_socket_t fd, int action,
     switch (action) {
         case CURL_POLL_IN:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               curl_multi_do, NULL, NULL, state);
+                               curl_multi_do, NULL, NULL, socket);
             break;
         case CURL_POLL_OUT:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               NULL, curl_multi_do, NULL, state);
+                               NULL, curl_multi_do, NULL, socket);
             break;
         case CURL_POLL_INOUT:
             aio_set_fd_handler(s->aio_context, fd, false,
-                               curl_multi_do, curl_multi_do, NULL, state);
+                               curl_multi_do, curl_multi_do, NULL, socket);
             break;
         case CURL_POLL_REMOVE:
             aio_set_fd_handler(s->aio_context, fd, false,
@@ -392,9 +392,10 @@ static void curl_multi_check_completion(BDRVCURLState *s)
 }
 
 /* Called with s->mutex held.  */
-static void curl_multi_do_locked(CURLState *s)
+static void curl_multi_do_locked(CURLSocket *ready_socket)
 {
     CURLSocket *socket, *next_socket;
+    CURLState *s = ready_socket->state;
     int running;
     int r;
 
@@ -413,12 +414,13 @@ static void curl_multi_do_locked(CURLState *s)
 
 static void curl_multi_do(void *arg)
 {
-    CURLState *s = (CURLState *)arg;
+    CURLSocket *socket = arg;
+    BDRVCURLState *s = socket->state->s;
 
-    qemu_mutex_lock(&s->s->mutex);
-    curl_multi_do_locked(s);
-    curl_multi_check_completion(s->s);
-    qemu_mutex_unlock(&s->s->mutex);
+    qemu_mutex_lock(&s->mutex);
+    curl_multi_do_locked(socket);
+    curl_multi_check_completion(s);
+    qemu_mutex_unlock(&s->mutex);
 }
 
 static void curl_multi_timeout_do(void *arg)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:04:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:04:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnKl-0003ku-5i; Wed, 15 Apr 2020 19:04:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnKk-0003kl-9m
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:26 +0000
X-Inumbo-ID: ec9f8618-7f4b-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ec9f8618-7f4b-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:04:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=tGnDDZ/WSLIj7qJKTBpc9b8/X+ZFpgzUJH70JMb8Jd0=; b=pZA4BSGgI5i4GN1u8FLmgfjdE1
 gdQdM87mrZ2kxTv3LOEHUSS3ocUweHDMP7e6JfpchwwtL/fRMmRvDZT4T0ODx76L1qNFTmoD6CYat
 R42RN3eV4CX3lSqTjOyjf/d85ZJw/a5bVAXmR2KCuu6g+jUCF4FKcoNhkn7y1JcBck7g=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKj-0002c5-KX
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKj-0007Pq-Jg
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] curl: Report only ready sockets
Message-Id: <E1jOnKj-0007Pq-Jg@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:04:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 18e1b71937a37bde173e3d9b2f8f97ee92fedd16
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:34 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Report only ready sockets
    
    Instead of reporting all sockets to cURL, only report the one that has
    caused curl_multi_do_locked() to be called.  This lets us get rid of the
    QLIST_FOREACH_SAFE() list, which was actually wrong: SAFE foreaches are
    only safe when the current element is removed in each iteration.  If it
    possible for the list to be concurrently modified, we cannot guarantee
    that only the current element will be removed.  Therefore, we must not
    use QLIST_FOREACH_SAFE() here.
    
    Fixes: ff5ca1664af85b24a4180d595ea6873fd3deac57
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-6-mreitz@redhat.com
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 9abaf9fc474c3dd53e8e119326abc774c977c331)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index cf2686218d..fd70f1ebc4 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -392,24 +392,19 @@ static void curl_multi_check_completion(BDRVCURLState *s)
 }
 
 /* Called with s->mutex held.  */
-static void curl_multi_do_locked(CURLSocket *ready_socket)
+static void curl_multi_do_locked(CURLSocket *socket)
 {
-    CURLSocket *socket, *next_socket;
-    CURLState *s = ready_socket->state;
+    BDRVCURLState *s = socket->state->s;
     int running;
     int r;
 
-    if (!s->s->multi) {
+    if (!s->multi) {
         return;
     }
 
-    /* Need to use _SAFE because curl_multi_socket_action() may trigger
-     * curl_sock_cb() which might modify this list */
-    QLIST_FOREACH_SAFE(socket, &s->sockets, next, next_socket) {
-        do {
-            r = curl_multi_socket_action(s->s->multi, socket->fd, 0, &running);
-        } while (r == CURLM_CALL_MULTI_PERFORM);
-    }
+    do {
+        r = curl_multi_socket_action(s->multi, socket->fd, 0, &running);
+    } while (r == CURLM_CALL_MULTI_PERFORM);
 }
 
 static void curl_multi_do(void *arg)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:04:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:04:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnKw-0003m6-7p; Wed, 15 Apr 2020 19:04:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnKu-0003lu-Ha
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:36 +0000
X-Inumbo-ID: f2a2b9a4-7f4b-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f2a2b9a4-7f4b-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:04:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=MsSShn28m1WmETNU6d6BtGhflHKhSC/IrKAXIC+1Ljw=; b=C5DyLPfe/Hu6ZQVzUK12e8YwLK
 xI4RPHytg3D4uD8+yMuarFTVqXoR6yf1P7BT8vI7PMybtldL+wffNfToo1L1QtFcWiB4EVuvtY/JR
 ko/ub8hgX16ggOlyqWxfUIH7HvrLfwWJDAwLkw+IJcesZ1xjzGxkpcLIWYDu9vn5SlEo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKt-0002cT-N5
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnKt-0007RH-MI
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] curl: Handle success in multi_check_completion
Message-Id: <E1jOnKt-0007RH-MI@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:04:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2d86df1f78d71ca30a4bff84002ada70e6a04169
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Tue Sep 10 14:41:35 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    curl: Handle success in multi_check_completion
    
    Background: As of cURL 7.59.0, it verifies that several functions are
    not called from within a callback.  Among these functions is
    curl_multi_add_handle().
    
    curl_read_cb() is a callback from cURL and not a coroutine.  Waking up
    acb->co will lead to entering it then and there, which means the current
    request will settle and the caller (if it runs in the same coroutine)
    may then issue the next request.  In such a case, we will enter
    curl_setup_preadv() effectively from within curl_read_cb().
    
    Calling curl_multi_add_handle() will then fail and the new request will
    not be processed.
    
    Fix this by not letting curl_read_cb() wake up acb->co.  Instead, leave
    the whole business of settling the AIOCB objects to
    curl_multi_check_completion() (which is called from our timer callback
    and our FD handler, so not from any cURL callbacks).
    
    Reported-by: Natalie Gavrielov <ngavrilo@redhat.com>
    Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1740193
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190910124136.10565-7-mreitz@redhat.com
    Reviewed-by: John Snow <jsnow@redhat.com>
    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit bfb23b480a49114315877aacf700b49453e0f9d9)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/curl.c | 69 +++++++++++++++++++++++++-----------------------------------
 1 file changed, 29 insertions(+), 40 deletions(-)

diff --git a/block/curl.c b/block/curl.c
index fd70f1ebc4..c343c7ed3d 100644
--- a/block/curl.c
+++ b/block/curl.c
@@ -229,7 +229,6 @@ static size_t curl_read_cb(void *ptr, size_t size, size_t nmemb, void *opaque)
 {
     CURLState *s = ((CURLState*)opaque);
     size_t realsize = size * nmemb;
-    int i;
 
     trace_curl_read_cb(realsize);
 
@@ -245,32 +244,6 @@ static size_t curl_read_cb(void *ptr, size_t size, size_t nmemb, void *opaque)
     memcpy(s->orig_buf + s->buf_off, ptr, realsize);
     s->buf_off += realsize;
 
-    for(i=0; i<CURL_NUM_ACB; i++) {
-        CURLAIOCB *acb = s->acb[i];
-
-        if (!acb)
-            continue;
-
-        if ((s->buf_off >= acb->end)) {
-            size_t request_length = acb->bytes;
-
-            qemu_iovec_from_buf(acb->qiov, 0, s->orig_buf + acb->start,
-                                acb->end - acb->start);
-
-            if (acb->end - acb->start < request_length) {
-                size_t offset = acb->end - acb->start;
-                qemu_iovec_memset(acb->qiov, offset, 0,
-                                  request_length - offset);
-            }
-
-            acb->ret = 0;
-            s->acb[i] = NULL;
-            qemu_mutex_unlock(&s->s->mutex);
-            aio_co_wake(acb->co);
-            qemu_mutex_lock(&s->s->mutex);
-        }
-    }
-
 read_end:
     /* curl will error out if we do not return this value */
     return size * nmemb;
@@ -351,13 +324,14 @@ static void curl_multi_check_completion(BDRVCURLState *s)
             break;
 
         if (msg->msg == CURLMSG_DONE) {
+            int i;
             CURLState *state = NULL;
+            bool error = msg->data.result != CURLE_OK;
+
             curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE,
                               (char **)&state);
 
-            /* ACBs for successful messages get completed in curl_read_cb */
-            if (msg->data.result != CURLE_OK) {
-                int i;
+            if (error) {
                 static int errcount = 100;
 
                 /* Don't lose the original error message from curl, since
@@ -369,20 +343,35 @@ static void curl_multi_check_completion(BDRVCURLState *s)
                         error_report("curl: further errors suppressed");
                     }
                 }
+            }
 
-                for (i = 0; i < CURL_NUM_ACB; i++) {
-                    CURLAIOCB *acb = state->acb[i];
+            for (i = 0; i < CURL_NUM_ACB; i++) {
+                CURLAIOCB *acb = state->acb[i];
 
-                    if (acb == NULL) {
-                        continue;
-                    }
+                if (acb == NULL) {
+                    continue;
+                }
+
+                if (!error) {
+                    /* Assert that we have read all data */
+                    assert(state->buf_off >= acb->end);
+
+                    qemu_iovec_from_buf(acb->qiov, 0,
+                                        state->orig_buf + acb->start,
+                                        acb->end - acb->start);
 
-                    acb->ret = -EIO;
-                    state->acb[i] = NULL;
-                    qemu_mutex_unlock(&s->mutex);
-                    aio_co_wake(acb->co);
-                    qemu_mutex_lock(&s->mutex);
+                    if (acb->end - acb->start < acb->bytes) {
+                        size_t offset = acb->end - acb->start;
+                        qemu_iovec_memset(acb->qiov, offset, 0,
+                                          acb->bytes - offset);
+                    }
                 }
+
+                acb->ret = error ? -EIO : 0;
+                state->acb[i] = NULL;
+                qemu_mutex_unlock(&s->mutex);
+                aio_co_wake(acb->co);
+                qemu_mutex_lock(&s->mutex);
             }
 
             curl_clean_state(state);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:04:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:04:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnL6-0003nL-Ai; Wed, 15 Apr 2020 19:04:48 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnL4-0003n7-FO
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:46 +0000
X-Inumbo-ID: f8a51748-7f4b-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f8a51748-7f4b-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:04:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=n4vkg9VwjePr6CBj+lJGQruMouiCEDZFrs3QHkeTGvQ=; b=qxC2j7Wx2P5NETjA3m7A20O/LD
 RPbVRA21F5QRc/gjEyb50IALCwxPZ8cyuFmxE3uMNluHGIR36O1FlLSsxV8mt6wUXcoDGpOgFe4qZ
 I7nHLeo3JvvrNRhJZLo/oO7Ewq8KOeeOx9hLxEadWtMrGgjXW+T5NqepoTawvQ16Um2U=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnL3-0002d4-Pk
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnL3-0007SM-On
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] blockjob: update nodes head while removing all
 bdrv
Message-Id: <E1jOnL3-0007SM-On@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:04:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 86b0f4022bb43b16979ba5300e8d40a1e6d44b79
Author:     Sergio Lopez <slp@redhat.com>
AuthorDate: Wed Sep 11 12:03:16 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    blockjob: update nodes head while removing all bdrv
    
    block_job_remove_all_bdrv() iterates through job->nodes, calling
    bdrv_root_unref_child() for each entry. The call to the latter may
    reach child_job_[can_]set_aio_ctx(), which will also attempt to
    traverse job->nodes, potentially finding entries that where freed
    on previous iterations.
    
    To avoid this situation, update job->nodes head on each iteration to
    ensure that already freed entries are no longer linked to the list.
    
    RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1746631
    Signed-off-by: Sergio Lopez <slp@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190911100316.32282-1-mreitz@redhat.com
    Reviewed-by: Sergio Lopez <slp@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit d876bf676f5e7c6aa9ac64555e48cba8734ecb2f)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 blockjob.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/blockjob.c b/blockjob.c
index 20b7f557da..74abb97bfd 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -186,14 +186,23 @@ static const BdrvChildRole child_job = {
 
 void block_job_remove_all_bdrv(BlockJob *job)
 {
-    GSList *l;
-    for (l = job->nodes; l; l = l->next) {
+    /*
+     * bdrv_root_unref_child() may reach child_job_[can_]set_aio_ctx(),
+     * which will also traverse job->nodes, so consume the list one by
+     * one to make sure that such a concurrent access does not attempt
+     * to process an already freed BdrvChild.
+     */
+    while (job->nodes) {
+        GSList *l = job->nodes;
         BdrvChild *c = l->data;
+
+        job->nodes = l->next;
+
         bdrv_op_unblock_all(c->bs, job->blocker);
         bdrv_root_unref_child(c);
+
+        g_slist_free_1(l);
     }
-    g_slist_free(job->nodes);
-    job->nodes = NULL;
 }
 
 bool block_job_has_bdrv(BlockJob *job, BlockDriverState *bs)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:04:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:04:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnLG-0003om-F7; Wed, 15 Apr 2020 19:04:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnLE-0003ob-Ig
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:56 +0000
X-Inumbo-ID: fea6653e-7f4b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fea6653e-7f4b-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:04:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=mNKwBKsoiUTjRm6ARTM0WkaJCfdCceE8D8+RTKCr2OE=; b=qUeFNpes5dU9rIbLrg7lj8Au5i
 Vvwql0a2EyTV4QWW/lyJe8S7wveAPBqIzQ/sOBpdn6bqEJBjUV30tN6hN4GBKis7pi5qoEWwd6xus
 jGavSba5Q+RUIkezXxx0LHnHIeUob3N/oMtSp6ywxLl1e5bEy1FYHUBwnbyeph0V+nXc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLD-0002dG-SO
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLD-0007TR-Rb
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:04:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/qcow2: Fix corruption introduced by
 commit 8ac0f15f335
Message-Id: <E1jOnLD-0007TR-Rb@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:04:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 84f22c728520792f1010074e0d5ac2ec8e2e372c
Author:     Maxim Levitsky <mlevitsk@redhat.com>
AuthorDate: Sun Sep 15 23:36:53 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    block/qcow2: Fix corruption introduced by commit 8ac0f15f335
    
    This fixes subtle corruption introduced by luks threaded encryption
    in commit 8ac0f15f335
    
    Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1745922
    
    The corruption happens when we do a write that
       * writes to two or more unallocated clusters at once
       * doesn't fully cover the first sector
       * doesn't fully cover the last sector
       * uses luks encryption
    
    In this case, when allocating the new clusters we COW both areas
    prior to the write and after the write, and we encrypt them.
    
    The above mentioned commit accidentally made it so we encrypt the
    second COW area using the physical cluster offset of the first area.
    
    The problem is that offset_in_cluster in do_perform_cow_encrypt
    can be larger that the cluster size, thus cluster_offset
    will no longer point to the start of the cluster at which encrypted
    area starts.
    
    Next patch in this series will refactor the code to avoid all these
    assumptions.
    
    In the bugreport that was triggered by rebasing a luks image to new,
    zero filled base, which lot of such writes, and causes some files
    with zero areas to contain garbage there instead.
    But as described above it can happen elsewhere as well
    
    Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190915203655.21638-2-mlevitsk@redhat.com
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 38e7d54bdc518b5a05a922467304bcace2396945)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2-cluster.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index cc5609e27a..760564c8fb 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -473,9 +473,10 @@ static bool coroutine_fn do_perform_cow_encrypt(BlockDriverState *bs,
         assert((offset_in_cluster & ~BDRV_SECTOR_MASK) == 0);
         assert((bytes & ~BDRV_SECTOR_MASK) == 0);
         assert(s->crypto);
-        if (qcow2_co_encrypt(bs, cluster_offset,
-                             src_cluster_offset + offset_in_cluster,
-                             buffer, bytes) < 0) {
+        if (qcow2_co_encrypt(bs,
+                start_of_cluster(s, cluster_offset + offset_in_cluster),
+                src_cluster_offset + offset_in_cluster,
+                buffer, bytes) < 0) {
             return false;
         }
     }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:05:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:05:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnLQ-0003pj-H3; Wed, 15 Apr 2020 19:05:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnLO-0003pY-Tf
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:06 +0000
X-Inumbo-ID: 04aab642-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 04aab642-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:05:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=mChGt9yXXha4ZxhgIaogHeoRt1yKNDZEzHybyftuIU8=; b=tAbLr4OY6whXusfnEjvgYitA4B
 Kjwc9nOsimJK0rYt5w7YkXTKRvs6kUCw+VadyGcqyecAO3HfC9p+AtdTc9H6MiqnKE7wJwpmiPy7w
 fVXechRsM9GX/u2khTbKb2dsBX1m5+UkTON1cWl8y2gDij4tXY9qHbW+B/sFrAhI7geE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLN-0002de-VA
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLN-0007Us-UA
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] coroutine: Add qemu_co_mutex_assert_locked()
Message-Id: <E1jOnLN-0007Us-UA@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:05:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e9bb3d942e268a19e03fc5d404586d2ed1564282
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Thu Oct 24 16:26:57 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    coroutine: Add qemu_co_mutex_assert_locked()
    
    Some functions require that the caller holds a certain CoMutex for them
    to operate correctly. Add a function so that they can assert the lock is
    really held.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Tested-by: Michael Weiser <michael.weiser@gmx.de>
    Reviewed-by: Michael Weiser <michael.weiser@gmx.de>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Denis V. Lunev <den@openvz.org>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 944f3d5dd216fcd8cb007eddd4f82dced0a15b3d)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/qemu/coroutine.h | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h
index 9801e7f5a4..f4843b5f59 100644
--- a/include/qemu/coroutine.h
+++ b/include/qemu/coroutine.h
@@ -167,6 +167,21 @@ void coroutine_fn qemu_co_mutex_lock(CoMutex *mutex);
  */
 void coroutine_fn qemu_co_mutex_unlock(CoMutex *mutex);
 
+/**
+ * Assert that the current coroutine holds @mutex.
+ */
+static inline coroutine_fn void qemu_co_mutex_assert_locked(CoMutex *mutex)
+{
+    /*
+     * mutex->holder doesn't need any synchronisation if the assertion holds
+     * true because the mutex protects it. If it doesn't hold true, we still
+     * don't mind if another thread takes or releases mutex behind our back,
+     * because the condition will be false no matter whether we read NULL or
+     * the pointer for any other coroutine.
+     */
+    assert(atomic_read(&mutex->locked) &&
+           mutex->holder == qemu_coroutine_self());
+}
 
 /**
  * CoQueues are a mechanism to queue coroutines in order to continue executing
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:05:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:05:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnLa-0003qk-J4; Wed, 15 Apr 2020 19:05:18 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnLY-0003qZ-QO
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:16 +0000
X-Inumbo-ID: 0ab04fc0-7f4c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0ab04fc0-7f4c-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:05:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=AB/lXuL6ImECmCXdRhyAOyn/gPVqZ9ab1qVM31yud/s=; b=NmHMJEXfWJweP5xwsAAujxZ3XJ
 JkYL2z6J5S3QXkQ7XxdnQzqTu4Wu3eBTNqSWXjykzgk3M3jkUvLKp4iHhACbYTdRIJt2PKvJWcSzA
 A9CxevZnpPRWVano9kkPR1brIzVF6ywROT7RQ+8Akgw6e0YcSsm9b3MbMypfJaNaSLBs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLY-0002dk-2B
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:16 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLY-0007W6-1B
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:16 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] qcow2: Fix corruption bug in
 qcow2_detect_metadata_preallocation()
Message-Id: <E1jOnLY-0007W6-1B@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:05:16 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 416a692e51b8b582407e30046ddcffbbe52ecf77
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Thu Oct 24 16:26:58 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    qcow2: Fix corruption bug in qcow2_detect_metadata_preallocation()
    
    qcow2_detect_metadata_preallocation() calls qcow2_get_refcount() which
    requires s->lock to be taken to protect its accesses to the refcount
    table and refcount blocks. However, nothing in this code path actually
    took the lock. This could cause the same cache entry to be used by two
    requests at the same time, for different tables at different offsets,
    resulting in image corruption.
    
    As it would be preferable to base the detection on consistent data (even
    though it's just heuristics), let's take the lock not only around the
    qcow2_get_refcount() calls, but around the whole function.
    
    This patch takes the lock in qcow2_co_block_status() earlier and asserts
    in qcow2_detect_metadata_preallocation() that we hold the lock.
    
    Fixes: 69f47505ee66afaa513305de0c1895a224e52c45
    Cc: qemu-stable@nongnu.org
    Reported-by: Michael Weiser <michael.weiser@gmx.de>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Tested-by: Michael Weiser <michael.weiser@gmx.de>
    Reviewed-by: Michael Weiser <michael.weiser@gmx.de>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 5e9785505210e2477e590e61b1ab100d0ec22b01)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2-refcount.c | 2 ++
 block/qcow2.c          | 3 ++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
index ef965d7895..0d64bf5a5e 100644
--- a/block/qcow2-refcount.c
+++ b/block/qcow2-refcount.c
@@ -3455,6 +3455,8 @@ int qcow2_detect_metadata_preallocation(BlockDriverState *bs)
     int64_t i, end_cluster, cluster_count = 0, threshold;
     int64_t file_length, real_allocation, real_clusters;
 
+    qemu_co_mutex_assert_locked(&s->lock);
+
     file_length = bdrv_getlength(bs->file->bs);
     if (file_length < 0) {
         return file_length;
diff --git a/block/qcow2.c b/block/qcow2.c
index 865839682c..c0f5439dc8 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -1899,6 +1899,8 @@ static int coroutine_fn qcow2_co_block_status(BlockDriverState *bs,
     unsigned int bytes;
     int status = 0;
 
+    qemu_co_mutex_lock(&s->lock);
+
     if (!s->metadata_preallocation_checked) {
         ret = qcow2_detect_metadata_preallocation(bs);
         s->metadata_preallocation = (ret == 1);
@@ -1906,7 +1908,6 @@ static int coroutine_fn qcow2_co_block_status(BlockDriverState *bs,
     }
 
     bytes = MIN(INT_MAX, count);
-    qemu_co_mutex_lock(&s->lock);
     ret = qcow2_get_cluster_offset(bs, offset, &bytes, &cluster_offset);
     qemu_co_mutex_unlock(&s->lock);
     if (ret < 0) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:05:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:05:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnLk-0003sf-Kx; Wed, 15 Apr 2020 19:05:28 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnLi-0003sT-Tv
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:26 +0000
X-Inumbo-ID: 101d0afe-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 101d0afe-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:05:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=t2iRR1QJguaBoRAfXAV7U1tw3gRTZzMDheMCAfxRT7Y=; b=qWLB+fiB4/Qta9NrbINo4ZZq5S
 Ck4XwNGpx1N934S29k5TnAUmVhDiK+y7QT1cPM65E0ayW6vnBL/KOh3qApVz+NJuQ6inWmzZT4KCS
 DswCz2kbPA+J/Pc8EOiXZcXuznUyG0s8bA7sOFtR//zRlh2w9f3dhHTz1fontGReFZ1k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLi-0002dy-4m
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:26 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLi-0007XM-3w
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/backup: fix max_transfer handling for
 copy_range
Message-Id: <E1jOnLi-0007XM-3w@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:05:26 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e01ed1a1ae42e023fa8f91c9e3905f4f9c3523a0
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Fri Sep 20 17:20:42 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    block/backup: fix max_transfer handling for copy_range
    
    Of course, QEMU_ALIGN_UP is a typo, it should be QEMU_ALIGN_DOWN, as we
    are trying to find aligned size which satisfy both source and target.
    Also, don't ignore too small max_transfer. In this case seems safer to
    disable copy_range.
    
    Fixes: 9ded4a0114968e
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190920142056.12778-2-vsementsov@virtuozzo.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 981fb5810aa3f68797ee6e261db338bd78857614)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/backup.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/block/backup.c b/block/backup.c
index b26c22c4b8..7067d1d1ad 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -657,12 +657,19 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
     job->cluster_size = cluster_size;
     job->copy_bitmap = copy_bitmap;
     copy_bitmap = NULL;
-    job->use_copy_range = !compress; /* compression isn't supported for it */
     job->copy_range_size = MIN_NON_ZERO(blk_get_max_transfer(job->common.blk),
                                         blk_get_max_transfer(job->target));
-    job->copy_range_size = MAX(job->cluster_size,
-                               QEMU_ALIGN_UP(job->copy_range_size,
-                                             job->cluster_size));
+    job->copy_range_size = QEMU_ALIGN_DOWN(job->copy_range_size,
+                                           job->cluster_size);
+    /*
+     * Set use_copy_range, consider the following:
+     * 1. Compression is not supported for copy_range.
+     * 2. copy_range does not respect max_transfer (it's a TODO), so we factor
+     *    that in here. If max_transfer is smaller than the job->cluster_size,
+     *    we do not use copy_range (in that case it's zero after aligning down
+     *    above).
+     */
+    job->use_copy_range = !compress && job->copy_range_size > 0;
 
     /* Required permissions are already taken with target's blk_new() */
     block_job_add_bdrv(&job->common, "target", target, 0, BLK_PERM_ALL,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:05:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:05:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnLu-0003tp-Mp; Wed, 15 Apr 2020 19:05:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnLs-0003tb-U0
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:36 +0000
X-Inumbo-ID: 16b3e084-7f4c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 16b3e084-7f4c-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:05:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=A2fNCp3bbk2aVkgLcsLEWWb3EUnN7ko6et/EaK1iitI=; b=UFLU//pYxYAffvziaAIo92EkMe
 T3tgtzBxoO3wLIPj8f62UoS/UbDq8iq/xOgLDiq9GdWXsgRhDj1R8a3Lwd4D0jB1gA0F7oiOYVYKp
 qAT8LSlP4PNqaVZPPaaXLDzitl3EJ8VHXZG8Nn+b0/jroZ+iD1VBOllWORdGQsnCqB/U=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLs-0002e9-7W
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnLs-0007YF-6T
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/backup: fix backup_cow_with_offload for
 last cluster
Message-Id: <E1jOnLs-0007YF-6T@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:05:36 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 783e7eb52c0a8e2b8cb906566d0dc2538ffefccf
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Fri Sep 20 17:20:43 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:34:26 2019 -0500

    block/backup: fix backup_cow_with_offload for last cluster
    
    We shouldn't try to copy bytes beyond EOF. Fix it.
    
    Fixes: 9ded4a0114968e
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Message-id: 20190920142056.12778-3-vsementsov@virtuozzo.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 1048ddf0a32dcdaa952e581bd503d49adad527cc)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/backup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/backup.c b/block/backup.c
index 7067d1d1ad..8761f1f9a7 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -167,7 +167,7 @@ static int coroutine_fn backup_cow_with_offload(BackupBlockJob *job,
 
     assert(QEMU_IS_ALIGNED(job->copy_range_size, job->cluster_size));
     assert(QEMU_IS_ALIGNED(start, job->cluster_size));
-    nbytes = MIN(job->copy_range_size, end - start);
+    nbytes = MIN(job->copy_range_size, MIN(end, job->len) - start);
     nr_clusters = DIV_ROUND_UP(nbytes, job->cluster_size);
     hbitmap_reset(job->copy_bitmap, start, job->cluster_size * nr_clusters);
     ret = blk_co_copy_range(blk, start, job->target, start, nbytes,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:05:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:05:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnM4-0003uv-Om; Wed, 15 Apr 2020 19:05:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnM3-0003uh-5J
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:47 +0000
X-Inumbo-ID: 1cb90a2c-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1cb90a2c-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:05:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=FFkgOmLsRAHl1gbQZ6D05Fs5i6ap4NnuahWVhdUOFn4=; b=xpM8+DyMXyDIvVKJAjfKWyUX6c
 uWJ/TZFPV0mtnydDrQe1BGv6nWZ6NrpdZApNpfVRea79VEn4kVOGvh2jQEt1zLVVpxjeY1XnaTo2Y
 dt00lHuNDJMetSged7TXb/37id+oUbrlm8TPoDNn0M2JpItlbrHut2jz0gKF2kkAKjgM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnM2-0002ey-AU
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:46 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnM2-0007Yw-9K
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:46 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] hw/arm/boot.c: Set NSACR.{CP11,
 CP10} for NS kernel boots
Message-Id: <E1jOnM2-0007Yw-9K@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:05:46 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 220816989c1e3d490d293b8d7ac85dbc41a4c321
Author:     Peter Maydell <peter.maydell@linaro.org>
AuthorDate: Fri Sep 20 18:40:39 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:37:26 2019 -0500

    hw/arm/boot.c: Set NSACR.{CP11,CP10} for NS kernel boots
    
    If we're booting a Linux kernel directly into Non-Secure
    state on a CPU which has Secure state, then make sure we
    set the NSACR CP11 and CP10 bits, so that Non-Secure is allowed
    to access the FPU. Otherwise an AArch32 kernel will UNDEF as
    soon as it tries to use the FPU.
    
    It used to not matter that we didn't do this until commit
    fc1120a7f5f2d4b6, where we implemented actually honouring
    these NSACR bits.
    
    The problem only exists for CPUs where EL3 is AArch32; the
    equivalent AArch64 trap bits are in CPTR_EL3 and are "0 to
    not trap, 1 to trap", so the reset value of the register
    permits NS access, unlike NSACR.
    
    Fixes: fc1120a7f5
    Fixes: https://bugs.launchpad.net/qemu/+bug/1844597
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Message-id: 20190920174039.3916-1-peter.maydell@linaro.org
    (cherry picked from commit ece628fcf69cbbd4b3efb6fbd203af07609467a2)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/arm/boot.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index c2b89b3bb9..fc4e021a38 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -754,6 +754,8 @@ static void do_cpu_reset(void *opaque)
                     (cs != first_cpu || !info->secure_board_setup)) {
                     /* Linux expects non-secure state */
                     env->cp15.scr_el3 |= SCR_NS;
+                    /* Set NSACR.{CP11,CP10} so NS can access the FPU */
+                    env->cp15.nsacr |= 3 << 10;
                 }
             }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:05:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:05:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnME-0003vx-Qm; Wed, 15 Apr 2020 19:05:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnMD-0003vn-28
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:57 +0000
X-Inumbo-ID: 22bb66cc-7f4c-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 22bb66cc-7f4c-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:05:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=TewOnk/QeNapgJWWHcTDiDy5jXQNYFfmi/OXqMUNIAY=; b=YBtNI1TTDi21t/u9nSHvqTGSRi
 19WZWjwrwVk9B7lsaS5eWLZjSuH5+oI1/GYNllMJyNjHZW4BU11NuYHzE9jaf+5bgOZrgiAVGHNR+
 PN6OxtIpE0IAU1PP6+TffSPDtace0QAVBeYe6qCTL47E/1kBmlkcXoWwDDUpy68vcFNo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMC-0002f7-DJ
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:56 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMC-0007Zp-CI
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:05:56 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] make-release: pull in edk2 submodules so we
 can build it from tarballs
Message-Id: <E1jOnMC-0007Zp-CI@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:05:56 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c5c9b1362d1652a9d0f79f6d9ae2f80d4b5fe432
Author:     Michael Roth <mdroth@linux.vnet.ibm.com>
AuthorDate: Thu Sep 12 18:12:01 2019 -0500
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:38:57 2019 -0500

    make-release: pull in edk2 submodules so we can build it from tarballs
    
    The `make efi` target added by 536d2173 is built from the roms/edk2
    submodule, which in turn relies on additional submodules nested under
    roms/edk2.
    
    The make-release script currently only pulls in top-level submodules,
    so these nested submodules are missing in the resulting tarball.
    
    We could try to address this situation more generally by recursively
    pulling in all submodules, but this doesn't necessarily ensure the
    end-result will build properly (this case also required other changes).
    
    Additionally, due to the nature of submodules, we may not always have
    control over how these sorts of things are dealt with, so for now we
    continue to handle it on a case-by-case in the make-release script.
    
    Cc: Laszlo Ersek <lersek@redhat.com>
    Cc: Bruce Rogers <brogers@suse.com>
    Cc: qemu-stable@nongnu.org # v4.1.0
    Reported-by: Bruce Rogers <brogers@suse.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
    Message-Id: <20190912231202.12327-2-mdroth@linux.vnet.ibm.com>
    Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    (cherry picked from commit 45c61c6c23918e3b05ed9ecac5b2328ebae5f774)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 scripts/make-release | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/scripts/make-release b/scripts/make-release
index b4af9c9e52..a2a8cda33c 100755
--- a/scripts/make-release
+++ b/scripts/make-release
@@ -20,6 +20,14 @@ git checkout "v${version}"
 git submodule update --init
 (cd roms/seabios && git describe --tags --long --dirty > .version)
 (cd roms/skiboot && ./make_version.sh > .version)
+# Fetch edk2 submodule's submodules, since it won't have access to them via
+# the tarball later.
+#
+# A more uniform way to handle this sort of situation would be nice, but we
+# don't necessarily have much control over how a submodule handles its
+# submodule dependencies, so we continue to handle these on a case-by-case
+# basis for now.
+(cd roms/edk2 && git submodule update --init)
 popd
 tar --exclude=.git -cjf ${destination}.tar.bz2 ${destination}
 rm -rf ${destination}
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:06:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:06:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnMN-0003x5-Um; Wed, 15 Apr 2020 19:06:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnMN-0003wx-4T
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:07 +0000
X-Inumbo-ID: 28bca69e-7f4c-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 28bca69e-7f4c-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 19:06:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=I7Oi1ZZakUMeqwq0ayWM5hbyf9Y/v2S6QR6VxRJeGLU=; b=pIyT4Z/1uqL2FWZKRC29pfX65k
 hS8XGqbDwtBa/SHJmykjIXdxB+kWmBwYV7IylNSsxlf4YIbAktLCvBtKm2FDpjzPGTiKin1vopuIg
 wNwBBhMMXORCQqvdGZxdBhrjYxbgJXhPI30IV1FZ+jg2LUcPAUT1Xl4DqIFB3siMxOow=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMM-0002fV-Fl
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:06 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMM-0007bC-F0
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:06 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] roms/Makefile.edk2: don't pull in submodules
 when building from tarball
Message-Id: <E1jOnMM-0007bC-F0@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:06:06 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit fc5afb1a9230fe21d76bcef527b0d3cee90a2cd3
Author:     Michael Roth <mdroth@linux.vnet.ibm.com>
AuthorDate: Thu Sep 12 18:12:02 2019 -0500
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:39:09 2019 -0500

    roms/Makefile.edk2: don't pull in submodules when building from tarball
    
    Currently the `make efi` target pulls submodules nested under the
    roms/edk2 submodule as dependencies. However, when we attempt to build
    from a tarball this fails since we are no longer in a git tree.
    
    A preceding patch will pre-populate these submodules in the tarball,
    so assume this build dependency is only needed when building from a
    git tree.
    
    Cc: Laszlo Ersek <lersek@redhat.com>
    Cc: Bruce Rogers <brogers@suse.com>
    Cc: qemu-stable@nongnu.org # v4.1.0
    Reported-by: Bruce Rogers <brogers@suse.com>
    Reviewed-by: Laszlo Ersek <lersek@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
    Message-Id: <20190912231202.12327-3-mdroth@linux.vnet.ibm.com>
    Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    (cherry picked from commit f3e330e3c319160ac04954399b5a10afc965098c)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 roms/Makefile.edk2 | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2
index c2f2ff59d5..33a074d3a4 100644
--- a/roms/Makefile.edk2
+++ b/roms/Makefile.edk2
@@ -46,8 +46,13 @@ all: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.bz2) \
 # files.
 .INTERMEDIATE: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd)
 
+# Fetch edk2 submodule's submodules. If it is not in a git tree, assume
+# we're building from a tarball and that they've already been fetched by
+# make-release/tarball scripts.
 submodules:
-	cd edk2 && git submodule update --init --force
+	if test -d edk2/.git; then \
+		cd edk2 && git submodule update --init --force; \
+	fi
 
 # See notes on the ".NOTPARALLEL" target and the "+" indicator in
 # "tests/uefi-test-tools/Makefile".
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:06:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:06:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnMY-0003yB-0m; Wed, 15 Apr 2020 19:06:18 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnMX-0003y3-8S
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:17 +0000
X-Inumbo-ID: 2ec0b15c-7f4c-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2ec0b15c-7f4c-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 19:06:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=M5Yyn6Di4njYYL7jpFJj+rZERu3ISKw5LxMEtQc9o4M=; b=fgtz+58bzwfTydcMOLCNEZa4RQ
 A68fT2IyRia+nFyWEBq5XPmgzaciSgG8nucz61ROxTkYP64Hq02Q3XSUN6PYWk7C2niSj4yuuzwBL
 Xqt0QRgYg4NwjwAvEq4IoXmlbBquPmGhbmTEIJ+gIbyFeN6VKrjKEpqfHmChxGXsat4g=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMW-0002fh-IY
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:16 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMW-0007cR-Hg
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:16 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] s390: PCI: fix IOMMU region init
Message-Id: <E1jOnMW-0007cR-Hg@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:06:16 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 331c08d300aab154560d870b2be424f663d260b2
Author:     Matthew Rosato <mjrosato@linux.ibm.com>
AuthorDate: Thu Sep 26 10:10:36 2019 -0400
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Wed Oct 30 11:42:13 2019 -0500

    s390: PCI: fix IOMMU region init
    
    The fix in dbe9cf606c shrinks the IOMMU memory region to a size
    that seems reasonable on the surface, however is actually too
    small as it is based against a 0-mapped address space.  This
    causes breakage with small guests as they can overrun the IOMMU window.
    
    Let's go back to the prior method of initializing iommu for now.
    
    Fixes: dbe9cf606c ("s390x/pci: Set the iommu region size mpcifc request")
    Cc: qemu-stable@nongnu.org
    Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
    Reported-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
    Tested-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
    Reported-by: Stefan Zimmerman <stzi@linux.ibm.com>
    Signed-off-by: Matthew Rosato <mjrosato@linux.ibm.com>
    Message-Id: <1569507036-15314-1-git-send-email-mjrosato@linux.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    (cherry picked from commit 7df1dac5f1c85312474df9cb3a8fcae72303da62)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/s390x/s390-pci-bus.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c
index 2c6e084e2c..9a935f22b5 100644
--- a/hw/s390x/s390-pci-bus.c
+++ b/hw/s390x/s390-pci-bus.c
@@ -694,10 +694,15 @@ static const MemoryRegionOps s390_msi_ctrl_ops = {
 
 void s390_pci_iommu_enable(S390PCIIOMMU *iommu)
 {
+    /*
+     * The iommu region is initialized against a 0-mapped address space,
+     * so the smallest IOMMU region we can define runs from 0 to the end
+     * of the PCI address space.
+     */
     char *name = g_strdup_printf("iommu-s390-%04x", iommu->pbdev->uid);
     memory_region_init_iommu(&iommu->iommu_mr, sizeof(iommu->iommu_mr),
                              TYPE_S390_IOMMU_MEMORY_REGION, OBJECT(&iommu->mr),
-                             name, iommu->pal - iommu->pba + 1);
+                             name, iommu->pal + 1);
     iommu->enabled = true;
     memory_region_add_subregion(&iommu->mr, 0, MEMORY_REGION(&iommu->iommu_mr));
     g_free(name);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:06:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:06:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnMi-0003ze-2g; Wed, 15 Apr 2020 19:06:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnMh-0003zW-En
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:27 +0000
X-Inumbo-ID: 34c52fec-7f4c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 34c52fec-7f4c-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:06:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2OMdbTnjP+2O7aqMNnh+7XdvvGfDmcyoPoxyfr9O5Ro=; b=Xa7FpCB6STSsy5oBaBnrBxVbA4
 Vyz43eDG6ljIqYm6GDFUO2eROHvy/5sJ/TJbu57J1My3aQ5JhGtwDgCvmK18KeGgsrVC2RZUqG+M9
 TkNyNN1aU2WRgurp3yZKZMlRbBHwKwk/jmAGehY8CnYgRzg56WIHgGEtMONNY5PJ8ZwE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMg-0002fq-LH
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:26 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMg-0007eB-KK
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/snapshot: Restrict set of snapshot nodes
Message-Id: <E1jOnMg-0007eB-KK@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:06:26 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7a8aa6c734bb1c2927ad0cc1d10bcacb53cf4ae3
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Tue Sep 17 12:26:23 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:06:36 2019 -0600

    block/snapshot: Restrict set of snapshot nodes
    
    Nodes involved in internal snapshots were those that were returned by
    bdrv_next(), inserted and not read-only. bdrv_next() in turn returns all
    nodes that are either the root node of a BlockBackend or monitor-owned
    nodes.
    
    With the typical -drive use, this worked well enough. However, in the
    typical -blockdev case, the user defines one node per option, making all
    nodes monitor-owned nodes. This includes protocol nodes etc. which often
    are not snapshottable, so "savevm" only returns an error.
    
    Change the conditions so that internal snapshot still include all nodes
    that have a BlockBackend attached (we definitely want to snapshot
    anything attached to a guest device and probably also the built-in NBD
    server; snapshotting block job BlockBackends is more of an accident, but
    a preexisting one), but other monitor-owned nodes are only included if
    they have no parents.
    
    This makes internal snapshots usable again with typical -blockdev
    configurations.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Peter Krempa <pkrempa@redhat.com>
    Tested-by: Peter Krempa <pkrempa@redhat.com>
    (cherry picked from commit 05f4aced658a02b02d3e89a6c7a2281008fcf26c)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/snapshot.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/block/snapshot.c b/block/snapshot.c
index f2f48f926a..8081616ae9 100644
--- a/block/snapshot.c
+++ b/block/snapshot.c
@@ -31,6 +31,7 @@
 #include "qapi/qmp/qerror.h"
 #include "qapi/qmp/qstring.h"
 #include "qemu/option.h"
+#include "sysemu/block-backend.h"
 
 QemuOptsList internal_snapshot_opts = {
     .name = "snapshot",
@@ -384,6 +385,16 @@ int bdrv_snapshot_load_tmp_by_id_or_name(BlockDriverState *bs,
     return ret;
 }
 
+static bool bdrv_all_snapshots_includes_bs(BlockDriverState *bs)
+{
+    if (!bdrv_is_inserted(bs) || bdrv_is_read_only(bs)) {
+        return false;
+    }
+
+    /* Include all nodes that are either in use by a BlockBackend, or that
+     * aren't attached to any node, but owned by the monitor. */
+    return bdrv_has_blk(bs) || QLIST_EMPTY(&bs->parents);
+}
 
 /* Group operations. All block drivers are involved.
  * These functions will properly handle dataplane (take aio_context_acquire
@@ -399,7 +410,7 @@ bool bdrv_all_can_snapshot(BlockDriverState **first_bad_bs)
         AioContext *ctx = bdrv_get_aio_context(bs);
 
         aio_context_acquire(ctx);
-        if (bdrv_is_inserted(bs) && !bdrv_is_read_only(bs)) {
+        if (bdrv_all_snapshots_includes_bs(bs)) {
             ok = bdrv_can_snapshot(bs);
         }
         aio_context_release(ctx);
@@ -426,8 +437,9 @@ int bdrv_all_delete_snapshot(const char *name, BlockDriverState **first_bad_bs,
         AioContext *ctx = bdrv_get_aio_context(bs);
 
         aio_context_acquire(ctx);
-        if (bdrv_can_snapshot(bs) &&
-                bdrv_snapshot_find(bs, snapshot, name) >= 0) {
+        if (bdrv_all_snapshots_includes_bs(bs) &&
+            bdrv_snapshot_find(bs, snapshot, name) >= 0)
+        {
             ret = bdrv_snapshot_delete(bs, snapshot->id_str,
                                        snapshot->name, err);
         }
@@ -455,7 +467,7 @@ int bdrv_all_goto_snapshot(const char *name, BlockDriverState **first_bad_bs,
         AioContext *ctx = bdrv_get_aio_context(bs);
 
         aio_context_acquire(ctx);
-        if (bdrv_can_snapshot(bs)) {
+        if (bdrv_all_snapshots_includes_bs(bs)) {
             ret = bdrv_snapshot_goto(bs, name, errp);
         }
         aio_context_release(ctx);
@@ -481,7 +493,7 @@ int bdrv_all_find_snapshot(const char *name, BlockDriverState **first_bad_bs)
         AioContext *ctx = bdrv_get_aio_context(bs);
 
         aio_context_acquire(ctx);
-        if (bdrv_can_snapshot(bs)) {
+        if (bdrv_all_snapshots_includes_bs(bs)) {
             err = bdrv_snapshot_find(bs, &sn, name);
         }
         aio_context_release(ctx);
@@ -512,7 +524,7 @@ int bdrv_all_create_snapshot(QEMUSnapshotInfo *sn,
         if (bs == vm_state_bs) {
             sn->vm_state_size = vm_state_size;
             err = bdrv_snapshot_create(bs, sn);
-        } else if (bdrv_can_snapshot(bs)) {
+        } else if (bdrv_all_snapshots_includes_bs(bs)) {
             sn->vm_state_size = 0;
             err = bdrv_snapshot_create(bs, sn);
         }
@@ -538,7 +550,7 @@ BlockDriverState *bdrv_all_find_vmstate_bs(void)
         bool found;
 
         aio_context_acquire(ctx);
-        found = bdrv_can_snapshot(bs);
+        found = bdrv_all_snapshots_includes_bs(bs) && bdrv_can_snapshot(bs);
         aio_context_release(ctx);
 
         if (found) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:06:39 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:06:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnMt-00040m-4s; Wed, 15 Apr 2020 19:06:39 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnMs-00040e-2u
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:38 +0000
X-Inumbo-ID: 3ac5d144-7f4c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3ac5d144-7f4c-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:06:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=AE+U07N+Na2sggXTW2618WtFC1qIiku4d0raByMJuLY=; b=HVgqJNvxhVihVuFOFWhCzIiCTX
 n1PBOO3Fxlf5Iz9iRKPAZCnLmReyr5QO25KQUEo6Kx5FFNlomn6RAE+84njLVWapDs3zQ+VtJzUEi
 2o6ht3UToOPsH69skc84Lii82yJV1jxqGxU8oejnqAQ8uZVhf3oLgMUAnte2w9/OAdys=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMq-0002h2-O4
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnMq-0007fF-N4
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Test internal snapshots with -blockdev
Message-Id: <E1jOnMq-0007fF-N4@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:06:36 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d868d30db6799cf0bc7da7ec67ca6be1e8ec07b2
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Tue Sep 17 12:43:42 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:07:08 2019 -0600

    iotests: Test internal snapshots with -blockdev
    
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Reviewed-by: Peter Krempa <pkrempa@redhat.com>
    Tested-by: Peter Krempa <pkrempa@redhat.com>
    (cherry picked from commit 92b22e7b1789b0e5f20d245706e72eae70dbddce)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/267           | 168 ++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/267.out       | 182 +++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/common.filter |  11 ++-
 tests/qemu-iotests/group         |   1 +
 4 files changed, 358 insertions(+), 4 deletions(-)

diff --git a/tests/qemu-iotests/267 b/tests/qemu-iotests/267
new file mode 100755
index 0000000000..d37a67c012
--- /dev/null
+++ b/tests/qemu-iotests/267
@@ -0,0 +1,168 @@
+#!/usr/bin/env bash
+#
+# Test which nodes are involved in internal snapshots
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+# creator
+owner=kwolf@redhat.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+    rm -f "$TEST_DIR/nbd"
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_supported_fmt qcow2
+_supported_proto file
+_supported_os Linux
+
+# Internal snapshots are (currently) impossible with refcount_bits=1
+_unsupported_imgopts 'refcount_bits=1[^0-9]'
+
+do_run_qemu()
+{
+    echo Testing: "$@"
+    (
+        if ! test -t 0; then
+            while read cmd; do
+                echo $cmd
+            done
+        fi
+        echo quit
+    ) | $QEMU -nographic -monitor stdio -nodefaults "$@"
+    echo
+}
+
+run_qemu()
+{
+    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qemu | _filter_hmp |
+        _filter_generated_node_ids | _filter_imgfmt | _filter_vmstate_size
+}
+
+size=128M
+
+run_test()
+{
+    _make_test_img $size
+    printf "savevm snap0\ninfo snapshots\nloadvm snap0\n" | run_qemu "$@" | _filter_date
+}
+
+
+echo
+echo "=== No block devices at all ==="
+echo
+
+run_test
+
+echo
+echo "=== -drive if=none ==="
+echo
+
+run_test -drive driver=file,file="$TEST_IMG",if=none
+run_test -drive driver=$IMGFMT,file="$TEST_IMG",if=none
+run_test -drive driver=$IMGFMT,file="$TEST_IMG",if=none -device virtio-blk,drive=none0
+
+echo
+echo "=== -drive if=virtio ==="
+echo
+
+run_test -drive driver=file,file="$TEST_IMG",if=virtio
+run_test -drive driver=$IMGFMT,file="$TEST_IMG",if=virtio
+
+echo
+echo "=== Simple -blockdev ==="
+echo
+
+run_test -blockdev driver=file,filename="$TEST_IMG",node-name=file
+run_test -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,node-name=fmt
+run_test -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=raw,file=file,node-name=raw \
+         -blockdev driver=$IMGFMT,file=raw,node-name=fmt
+
+echo
+echo "=== -blockdev with a filter on top ==="
+echo
+
+run_test -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,node-name=fmt \
+         -blockdev driver=copy-on-read,file=fmt,node-name=filter
+
+echo
+echo "=== -blockdev with a backing file ==="
+echo
+
+TEST_IMG="$TEST_IMG.base" _make_test_img $size
+
+IMGOPTS="backing_file=$TEST_IMG.base" \
+run_test -blockdev driver=file,filename="$TEST_IMG.base",node-name=backing-file \
+         -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,backing=backing-file,node-name=fmt
+
+IMGOPTS="backing_file=$TEST_IMG.base" \
+run_test -blockdev driver=file,filename="$TEST_IMG.base",node-name=backing-file \
+         -blockdev driver=$IMGFMT,file=backing-file,node-name=backing-fmt \
+         -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,backing=backing-fmt,node-name=fmt
+
+# A snapshot should be present on the overlay, but not the backing file
+echo Internal snapshots on overlay:
+$QEMU_IMG snapshot -l "$TEST_IMG" | _filter_date | _filter_vmstate_size
+
+echo Internal snapshots on backing file:
+$QEMU_IMG snapshot -l "$TEST_IMG.base" | _filter_date | _filter_vmstate_size
+
+echo
+echo "=== -blockdev with NBD server on the backing file ==="
+echo
+
+IMGOPTS="backing_file=$TEST_IMG.base" _make_test_img $size
+cat <<EOF |
+nbd_server_start unix:$TEST_DIR/nbd
+nbd_server_add -w backing-fmt
+savevm snap0
+info snapshots
+loadvm snap0
+EOF
+run_qemu -blockdev driver=file,filename="$TEST_IMG.base",node-name=backing-file \
+         -blockdev driver=$IMGFMT,file=backing-file,node-name=backing-fmt \
+         -blockdev driver=file,filename="$TEST_IMG",node-name=file \
+         -blockdev driver=$IMGFMT,file=file,backing=backing-fmt,node-name=fmt |
+         _filter_date
+
+# This time, a snapshot should be created on both files
+echo Internal snapshots on overlay:
+$QEMU_IMG snapshot -l "$TEST_IMG" | _filter_date | _filter_vmstate_size
+
+echo Internal snapshots on backing file:
+$QEMU_IMG snapshot -l "$TEST_IMG.base" | _filter_date | _filter_vmstate_size
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/267.out b/tests/qemu-iotests/267.out
new file mode 100644
index 0000000000..9d812e3c72
--- /dev/null
+++ b/tests/qemu-iotests/267.out
@@ -0,0 +1,182 @@
+QA output created by 267
+
+=== No block devices at all ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing:
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+Error: No block device can accept snapshots
+(qemu) info snapshots
+No available block device supports snapshots
+(qemu) loadvm snap0
+Error: No block device supports snapshots
+(qemu) quit
+
+
+=== -drive if=none ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=file,file=TEST_DIR/t.IMGFMT,if=none
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+Error: Device 'none0' is writable but does not support snapshots
+(qemu) info snapshots
+No available block device supports snapshots
+(qemu) loadvm snap0
+Error: Device 'none0' is writable but does not support snapshots
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=IMGFMT,file=TEST_DIR/t.IMGFMT,if=none
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=IMGFMT,file=TEST_DIR/t.IMGFMT,if=none -device virtio-blk,drive=none0
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+
+=== -drive if=virtio ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=file,file=TEST_DIR/t.IMGFMT,if=virtio
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+Error: Device 'virtio0' is writable but does not support snapshots
+(qemu) info snapshots
+No available block device supports snapshots
+(qemu) loadvm snap0
+Error: Device 'virtio0' is writable but does not support snapshots
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -drive driver=IMGFMT,file=TEST_DIR/t.IMGFMT,if=virtio
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+
+=== Simple -blockdev ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+Error: Device '' is writable but does not support snapshots
+(qemu) info snapshots
+No available block device supports snapshots
+(qemu) loadvm snap0
+Error: Device '' is writable but does not support snapshots
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=raw,file=file,node-name=raw -blockdev driver=IMGFMT,file=raw,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+
+=== -blockdev with a filter on top ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,node-name=fmt -blockdev driver=copy-on-read,file=fmt,node-name=filter
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+
+=== -blockdev with a backing file ===
+
+Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-file,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=IMGFMT,file=backing-file,node-name=backing-fmt -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-fmt,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Internal snapshots on overlay:
+Snapshot list:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+1         snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+Internal snapshots on backing file:
+
+=== -blockdev with NBD server on the backing file ===
+
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
+Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT.base,node-name=backing-file -blockdev driver=IMGFMT,file=backing-file,node-name=backing-fmt -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=file -blockdev driver=IMGFMT,file=file,backing=backing-fmt,node-name=fmt
+QEMU X.Y.Z monitor - type 'help' for more information
+(qemu) nbd_server_start unix:TEST_DIR/nbd
+(qemu) nbd_server_add -w backing-fmt
+(qemu) savevm snap0
+(qemu) info snapshots
+List of snapshots present on all disks:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+--        snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+(qemu) loadvm snap0
+(qemu) quit
+
+Internal snapshots on overlay:
+Snapshot list:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+1         snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+Internal snapshots on backing file:
+Snapshot list:
+ID        TAG                 VM SIZE                DATE       VM CLOCK
+1         snap0                  SIZE yyyy-mm-dd hh:mm:ss   00:00:00.000
+*** done
diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter
index 35fddc746f..67fd5f4e41 100644
--- a/tests/qemu-iotests/common.filter
+++ b/tests/qemu-iotests/common.filter
@@ -19,12 +19,15 @@
 # standard filters
 #
 
-# ctime(3) dates
-#
 _filter_date()
 {
-    $SED \
-        -e 's/[A-Z][a-z][a-z] [A-z][a-z][a-z]  *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/'
+    $SED -re 's/[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}/yyyy-mm-dd hh:mm:ss/'
+}
+
+_filter_vmstate_size()
+{
+    $SED -r -e 's/[0-9. ]{5} [KMGT]iB/     SIZE/' \
+            -e 's/[0-9. ]{5} B/   SIZE/'
 }
 
 _filter_generated_node_ids()
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 3660a741f2..8bc2f3857d 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -273,3 +273,4 @@
 256 rw quick
 265 rw auto quick
 266 rw quick
+267 rw auto quick snapshot
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:06:48 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:06:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnN2-00041q-91; Wed, 15 Apr 2020 19:06:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnN1-00041h-K1
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:47 +0000
X-Inumbo-ID: 40ca3daa-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 40ca3daa-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:06:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=f4fUTB+gi+VGhQgJ3iRSkhbDA4KMtHjAvPvJL2Vyvf4=; b=i3RUdi3MFK1801N/ipJP9XGKXd
 ULkVkP63uz091h1KSop/8L+XAD2TFqvNWF37jPMfegJfJRKeKzcdPsdeawGQGLuQqFW1LNoO3NOO1
 pFd9ygppmEYsc7/CPtzM7wRIN4afMbInAegIGMNGq8St8yS8Vn4g+w9TLGvz+aJIzMqM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnN0-0002hd-Qm
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:46 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnN0-0007gu-Pm
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:46 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] vhost-user: save features if the char dev is
 closed
Message-Id: <E1jOnN0-0007gu-Pm@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:06:46 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7b404cae7fa2850d476c29258f03b8e77a5b4bd0
Author:     Adrian Moreno <amorenoz@redhat.com>
AuthorDate: Tue Sep 24 18:20:44 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:09:49 2019 -0600

    vhost-user: save features if the char dev is closed
    
    That way the state can be correctly restored when the device is opened
    again. This might happen if the backend is restarted.
    
    Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1738768
    Reported-by: Pei Zhang <pezhang@redhat.com>
    Fixes: 6ab79a20af3a ("do not call vhost_net_cleanup() on running net from char user event")
    Cc: ddstreet@canonical.com
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Adrian Moreno <amorenoz@redhat.com>
    Message-Id: <20190924162044.11414-1-amorenoz@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit c6beefd674fff8d41b90365dfccad32e53a5abcb)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 net/vhost-user.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/net/vhost-user.c b/net/vhost-user.c
index 51921de443..014199d600 100644
--- a/net/vhost-user.c
+++ b/net/vhost-user.c
@@ -235,6 +235,10 @@ static void chr_closed_bh(void *opaque)
 
     s = DO_UPCAST(NetVhostUserState, nc, ncs[0]);
 
+    if (s->vhost_net) {
+        s->acked_features = vhost_net_get_acked_features(s->vhost_net);
+    }
+
     qmp_set_link(name, false, &err);
 
     qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, net_vhost_user_event,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:06:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:06:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnNC-00042x-BE; Wed, 15 Apr 2020 19:06:58 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnNB-00042o-Gn
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:57 +0000
X-Inumbo-ID: 46ca90ba-7f4c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 46ca90ba-7f4c-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:06:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=T2wbwdM7U/IQs1Orbbr3yiTzbfs2WycUoDMWezplxgY=; b=drATOw3ALBDEwbbp/7Wr+AxyYr
 gzb6nJZhNg+3pu2WI5kFV4ALXdvHLTnbFH9HnGhY8/JC0HBhMC0DO3wP7RZ4zyJ1UkWPNiRzMmSXT
 /8J8pI5WsG6NBjDT3Z/GzcicRG6ZLLNoJBgy70fkpAdmfoaZTOukgNJqv+Z7c6wZy2ck=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNA-0002hm-TS
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:56 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNA-0007iG-SZ
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:06:56 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] hw/core/loader: Fix possible crash in
 rom_copy()
Message-Id: <E1jOnNA-0007iG-SZ@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:06:56 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit aae0faa5d3bee91c66dc4c1543190f55a242771e
Author:     Thomas Huth <thuth@redhat.com>
AuthorDate: Wed Sep 25 14:16:43 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:10:48 2019 -0600

    hw/core/loader: Fix possible crash in rom_copy()
    
    Both, "rom->addr" and "addr" are derived from the binary image
    that can be loaded with the "-kernel" paramer. The code in
    rom_copy() then calculates:
    
        d = dest + (rom->addr - addr);
    
    and uses "d" as destination in a memcpy() some lines later. Now with
    bad kernel images, it is possible that rom->addr is smaller than addr,
    thus "rom->addr - addr" gets negative and the memcpy() then tries to
    copy contents from the image to a bad memory location. This could
    maybe be used to inject code from a kernel image into the QEMU binary,
    so we better fix it with an additional sanity check here.
    
    Cc: qemu-stable@nongnu.org
    Reported-by: Guangming Liu
    Buglink: https://bugs.launchpad.net/qemu/+bug/1844635
    Message-Id: <20190925130331.27825-1-thuth@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    (cherry picked from commit e423455c4f23a1a828901c78fe6d03b7dde79319)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/core/loader.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/core/loader.c b/hw/core/loader.c
index 425bf69a99..838a34174a 100644
--- a/hw/core/loader.c
+++ b/hw/core/loader.c
@@ -1242,7 +1242,7 @@ int rom_copy(uint8_t *dest, hwaddr addr, size_t size)
         if (rom->addr + rom->romsize < addr) {
             continue;
         }
-        if (rom->addr > end) {
+        if (rom->addr > end || rom->addr < addr) {
             break;
         }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:07:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:07:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnNM-000441-DL; Wed, 15 Apr 2020 19:07:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnNL-00043t-NY
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:07 +0000
X-Inumbo-ID: 4cd2ee3a-7f4c-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4cd2ee3a-7f4c-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:07:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=JyDZAh02Fs/y2P/mmkbRb2u2+gT1tfmSdrt+vtEEdWo=; b=wJjdEHD1n5l0DIOz16BTPevS14
 JOHO8CWo5eWOk3cdiNXKoYGA85GqHMzYAQ0wKo4UJMz8R/LfZ3y0wmerGmRUZKLp2gTpA/cCnIeb0
 SGAruQA8EQxYGfQHQe9pWlcdWROVR7A8D+CR43/362wxItVVlFRF3NHPtKsfMPYT666Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNL-0002i8-08
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:07 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNK-0007jn-VH
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:06 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] qcow2: Limit total allocation range to INT_MAX
Message-Id: <E1jOnNK-0007jn-VH@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:07:06 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9e51c5306cffe1a0904d1a31fcf454c436ce8a13
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Thu Oct 10 12:08:57 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:15:25 2019 -0600

    qcow2: Limit total allocation range to INT_MAX
    
    When the COW areas are included, the size of an allocation can exceed
    INT_MAX.  This is kind of limited by handle_alloc() in that it already
    caps avail_bytes at INT_MAX, but the number of clusters still reflects
    the original length.
    
    This can have all sorts of effects, ranging from the storage layer write
    call failing to image corruption.  (If there were no image corruption,
    then I suppose there would be data loss because the .cow_end area is
    forced to be empty, even though there might be something we need to
    COW.)
    
    Fix all of it by limiting nb_clusters so the equivalent number of bytes
    will not exceed INT_MAX.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit d1b9d19f99586b33795e20a79f645186ccbc070f)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2-cluster.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 760564c8fb..f8576031b6 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -1341,6 +1341,9 @@ static int handle_alloc(BlockDriverState *bs, uint64_t guest_offset,
     nb_clusters = MIN(nb_clusters, s->l2_slice_size - l2_index);
     assert(nb_clusters <= INT_MAX);
 
+    /* Limit total allocation byte count to INT_MAX */
+    nb_clusters = MIN(nb_clusters, INT_MAX >> s->cluster_bits);
+
     /* Find L2 entry for the first involved cluster */
     ret = get_cluster_table(bs, guest_offset, &l2_slice, &l2_index);
     if (ret < 0) {
@@ -1429,7 +1432,7 @@ static int handle_alloc(BlockDriverState *bs, uint64_t guest_offset,
      * request actually writes to (excluding COW at the end)
      */
     uint64_t requested_bytes = *bytes + offset_into_cluster(s, guest_offset);
-    int avail_bytes = MIN(INT_MAX, nb_clusters << s->cluster_bits);
+    int avail_bytes = nb_clusters << s->cluster_bits;
     int nb_bytes = MIN(requested_bytes, avail_bytes);
     QCowL2Meta *old_m = *m;
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:07:19 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:07:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnNX-000456-G4; Wed, 15 Apr 2020 19:07:19 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnNW-00044x-1M
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:18 +0000
X-Inumbo-ID: 52d4b8b8-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 52d4b8b8-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:07:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=SeoKrLsjilIqoGyr64nysuya6IiDPCXOSHuluvvBpyw=; b=z8IS9q1Nm3p1ufQo7JiWinBp1p
 IlFVzYx/Ky/eKxQGt+aFefIjUjsb0dimTPCdkABCugAwD5tUxQDmT0SWwXiCqbhAiMuw3xEny4Hlc
 yrylzNf4eylOBLUBXYXgajX8GBMbdWxoquKLA77y1R52ZKgPfmbOrh5zmGHd2JM8Ex8Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNV-0002iJ-36
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:17 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNV-0007lF-20
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:17 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Test large write request to qcow2 file
Message-Id: <E1jOnNV-0007lF-20@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:07:17 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b077ac637db468ad169385d9b702b002654d3a7a
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Thu Oct 10 12:08:58 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:16:16 2019 -0600

    iotests: Test large write request to qcow2 file
    
    Without HEAD^, the following happens when you attempt a large write
    request to a qcow2 file such that the number of bytes covered by all
    clusters involved in a single allocation will exceed INT_MAX:
    
    (A) handle_alloc_space() decides to fill the whole area with zeroes and
        fails because bdrv_co_pwrite_zeroes() fails (the request is too
        large).
    
    (B) If handle_alloc_space() does not do anything, but merge_cow()
        decides that the requests can be merged, it will create a too long
        IOV that later cannot be written.
    
    (C) Otherwise, all parts will be written separately, so those requests
        will work.
    
    In either B or C, though, qcow2_alloc_cluster_link_l2() will have an
    overflow: We use an int (i) to iterate over nb_clusters, and then
    calculate the L2 entry based on "i << s->cluster_bits" -- which will
    overflow if the range covers more than INT_MAX bytes.  This then leads
    to image corruption because the L2 entry will be wrong (it will be
    recognized as a compressed cluster).
    
    Even if that were not the case, the .cow_end area would be empty
    (because handle_alloc() will cap avail_bytes and nb_bytes at INT_MAX, so
    their difference (which is the .cow_end size) will be 0).
    
    So this test checks that on such large requests, the image will not be
    corrupted.  Unfortunately, we cannot check whether COW will be handled
    correctly, because that data is discarded when it is written to null-co
    (but we have to use null-co, because writing 2 GB of data in a test is
    not quite reasonable).
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit a1406a9262a087d9ec9627b88da13c4590b61dae)
     Conflicts:
            tests/qemu-iotests/group
    *drop context dep. on tests not in 4.1
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/270     | 83 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/270.out |  9 +++++
 tests/qemu-iotests/group   |  1 +
 3 files changed, 93 insertions(+)

diff --git a/tests/qemu-iotests/270 b/tests/qemu-iotests/270
new file mode 100755
index 0000000000..b9a12b908c
--- /dev/null
+++ b/tests/qemu-iotests/270
@@ -0,0 +1,83 @@
+#!/usr/bin/env bash
+#
+# Test large write to a qcow2 image
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+seq=$(basename "$0")
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# This is a qcow2 regression test
+_supported_fmt qcow2
+_supported_proto file
+_supported_os Linux
+
+# We use our own external data file and our own cluster size, and we
+# require v3 images
+_unsupported_imgopts data_file cluster_size 'compat=0.10'
+
+
+# We need a backing file so that handle_alloc_space() will not do
+# anything.  (If it were to do anything, it would simply fail its
+# write-zeroes request because the request range is too large.)
+TEST_IMG="$TEST_IMG.base" _make_test_img 4G
+$QEMU_IO -c 'write 0 512' "$TEST_IMG.base" | _filter_qemu_io
+
+# (Use .orig because _cleanup_test_img will remove that file)
+# We need a large cluster size, see below for why (above the $QEMU_IO
+# invocation)
+_make_test_img -o cluster_size=2M,data_file="$TEST_IMG.orig" \
+    -b "$TEST_IMG.base" 4G
+
+# We want a null-co as the data file, because it allows us to quickly
+# "write" 2G of data without using any space.
+# (qemu-img create does not like it, though, because null-co does not
+# support image creation.)
+$QEMU_IMG amend -o data_file="json:{'driver':'null-co',,'size':'4294967296'}" \
+    "$TEST_IMG"
+
+# This gives us a range of:
+#   2^31 - 512 + 768 - 1 = 2^31 + 255 > 2^31
+# until the beginning of the end COW block.  (The total allocation
+# size depends on the cluster size, but all that is important is that
+# it exceeds INT_MAX.)
+#
+# 2^31 - 512 is the maximum request size.  We want this to result in a
+# single allocation, and because the qcow2 driver splits allocations
+# on L2 boundaries, we need large L2 tables; hence the cluster size of
+# 2 MB.  (Anything from 256 kB should work, though, because then one L2
+# table covers 8 GB.)
+$QEMU_IO -c "write 768 $((2 ** 31 - 512))" "$TEST_IMG" | _filter_qemu_io
+
+_check_test_img
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/270.out b/tests/qemu-iotests/270.out
new file mode 100644
index 0000000000..c7be111014
--- /dev/null
+++ b/tests/qemu-iotests/270.out
@@ -0,0 +1,9 @@
+QA output created by 270
+Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=4294967296
+wrote 512/512 bytes at offset 0
+512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base data_file=TEST_DIR/t.IMGFMT.orig
+wrote 2147483136/2147483136 bytes at offset 768
+2 GiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+No errors were found on the image.
+*** done
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 8bc2f3857d..7629e8ea17 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -274,3 +274,4 @@
 265 rw auto quick
 266 rw quick
 267 rw auto quick snapshot
+270 rw backing quick
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:07:29 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:07:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnNh-00046l-I4; Wed, 15 Apr 2020 19:07:29 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnNf-00046X-Sv
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:27 +0000
X-Inumbo-ID: 58d629a4-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 58d629a4-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:07:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2sGiwaH60GNCE40tlPPF0Ef2mczjridGDOVnSOMxobA=; b=KE7nIOi6f+OPiacnmN6EufvWgV
 YqBMofTPDnd7WrH7QKNUQd1hX36EcJtYYbKMNIp9/cQb1dB76j2nf9rnO13pTFQxgas+28u5zdXgT
 Dfv8+Xdk0UJ9vdNXl/xPyyDKLx5tZ9aXGefm62va1StnA42MmG2kpcB404iJA0xSTzQU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNf-0002iS-5j
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:27 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNf-0007me-4r
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:27 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] mirror: Do not dereference invalid pointers
Message-Id: <E1jOnNf-0007me-4r@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:07:27 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c0e2fbf1240f022efc267cef4216e9c023651bee
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Oct 14 17:39:28 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:18:06 2019 -0600

    mirror: Do not dereference invalid pointers
    
    mirror_exit_common() may be called twice (if it is called from
    mirror_prepare() and fails, it will be called from mirror_abort()
    again).
    
    In such a case, many of the pointers in the MirrorBlockJob object will
    already be freed.  This can be seen most reliably for s->target, which
    is set to NULL (and then dereferenced by blk_bs()).
    
    Cc: qemu-stable@nongnu.org
    Fixes: 737efc1eda23b904fbe0e66b37715fb0e5c3e58b
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20191014153931.20699-2-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit f93c3add3a773e0e3f6277e5517583c4ad3a43c2)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/mirror.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/block/mirror.c b/block/mirror.c
index 9f5c59ece1..0e3f7923cf 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -618,11 +618,11 @@ static int mirror_exit_common(Job *job)
 {
     MirrorBlockJob *s = container_of(job, MirrorBlockJob, common.job);
     BlockJob *bjob = &s->common;
-    MirrorBDSOpaque *bs_opaque = s->mirror_top_bs->opaque;
+    MirrorBDSOpaque *bs_opaque;
     AioContext *replace_aio_context = NULL;
-    BlockDriverState *src = s->mirror_top_bs->backing->bs;
-    BlockDriverState *target_bs = blk_bs(s->target);
-    BlockDriverState *mirror_top_bs = s->mirror_top_bs;
+    BlockDriverState *src;
+    BlockDriverState *target_bs;
+    BlockDriverState *mirror_top_bs;
     Error *local_err = NULL;
     bool abort = job->ret < 0;
     int ret = 0;
@@ -632,6 +632,11 @@ static int mirror_exit_common(Job *job)
     }
     s->prepared = true;
 
+    mirror_top_bs = s->mirror_top_bs;
+    bs_opaque = mirror_top_bs->opaque;
+    src = mirror_top_bs->backing->bs;
+    target_bs = blk_bs(s->target);
+
     if (bdrv_chain_contains(src, target_bs)) {
         bdrv_unfreeze_backing_chain(mirror_top_bs, target_bs);
     }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:07:39 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:07:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnNr-00047p-KC; Wed, 15 Apr 2020 19:07:39 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnNq-00047e-37
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:38 +0000
X-Inumbo-ID: 5edc8a32-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5edc8a32-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:07:37 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=EbgZJG7FCV0GbiCyXc9pBQMMeO3oW6EpvGIEPfkXRxY=; b=siCE9WZdNoA5vWmSrQ5h8P6Uao
 2qPt0jVJDdS5hiAB5ow6lRRyFVJOOTyp4ah3u49s6KoFrsyljAjLFCsc1tTykhe12RuR8tTONceEo
 6PAeUtXWlKKHmOdqSwarsaGbn3ilVX6vUDrv7UeYMhXkMmbhAdNQsv7+mGI1gBiAlF34=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNp-0002if-8b
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:37 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNp-0007oh-7g
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:37 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] ui: Fix hanging up Cocoa display on macOS
 10.15 (Catalina)
Message-Id: <E1jOnNp-0007oh-7g@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:07:37 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6705b9344f8d6f134f612c2e35e87cdda5aa6284
Author:     Hikaru Nishida <hikarupsp@gmail.com>
AuthorDate: Tue Oct 15 10:07:34 2019 +0900
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:19:19 2019 -0600

    ui: Fix hanging up Cocoa display on macOS 10.15 (Catalina)
    
    macOS API documentation says that before applicationDidFinishLaunching
    is called, any events will not be processed. However, some events are
    fired before it is called in macOS Catalina. This causes deadlock of
    iothread_lock in handleEvent while it will be released after the
    app_started_sem is posted.
    This patch avoids processing events before the app_started_sem is
    posted to prevent this deadlock.
    
    Buglink: https://bugs.launchpad.net/qemu/+bug/1847906
    Signed-off-by: Hikaru Nishida <hikarupsp@gmail.com>
    Message-id: 20191015010734.85229-1-hikarupsp@gmail.com
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    (cherry picked from commit dff742ad27efa474ec04accdbf422c9acfd3e30e)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 ui/cocoa.m | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/ui/cocoa.m b/ui/cocoa.m
index c2984028c5..3026ead621 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -132,6 +132,7 @@ NSArray * supportedImageFileTypes;
 
 static QemuSemaphore display_init_sem;
 static QemuSemaphore app_started_sem;
+static bool allow_events;
 
 // Utility functions to run specified code block with iothread lock held
 typedef void (^CodeBlock)(void);
@@ -727,6 +728,16 @@ QemuCocoaView *cocoaView;
 
 - (bool) handleEvent:(NSEvent *)event
 {
+    if(!allow_events) {
+        /*
+         * Just let OSX have all events that arrive before
+         * applicationDidFinishLaunching.
+         * This avoids a deadlock on the iothread lock, which cocoa_display_init()
+         * will not drop until after the app_started_sem is posted. (In theory
+         * there should not be any such events, but OSX Catalina now emits some.)
+         */
+        return false;
+    }
     return bool_with_iothread_lock(^{
         return [self handleEventLocked:event];
     });
@@ -1154,6 +1165,7 @@ QemuCocoaView *cocoaView;
 - (void)applicationDidFinishLaunching: (NSNotification *) note
 {
     COCOA_DEBUG("QemuCocoaAppController: applicationDidFinishLaunching\n");
+    allow_events = true;
     /* Tell cocoa_display_init to proceed */
     qemu_sem_post(&app_started_sem);
 }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:07:49 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:07:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnO1-000491-OE; Wed, 15 Apr 2020 19:07:49 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnO0-00048s-0b
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:48 +0000
X-Inumbo-ID: 64dbe2e8-7f4c-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 64dbe2e8-7f4c-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 19:07:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=KyLvsS/4LsGpb03531GM0ouhhKcJ+DNinD4IEIFjdlQ=; b=iXeMuAH09hFOJrGmLIdObIvxEr
 9Lhi/w78pjvML4GS0hhRDdvIZIoHBrcsvD3CugL30P0Rr2UwiPBpzd1nhQA6/wF51x2Mztq/oOfTM
 QJqMOaIB1PbJjZOeeDq0+SCFm50OrGuMb7VBftAYRUBK5xDKxkjqCWaTtFU7ul0z1hhM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNz-0002jT-BN
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:47 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnNz-0007q6-AV
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:47 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] virtio: new post_load hook
Message-Id: <E1jOnNz-0007q6-AV@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:07:47 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8010d3fce008dd13f155bc0babfe236ea44a2712
Author:     Michael S. Tsirkin <mst@redhat.com>
AuthorDate: Fri Oct 11 15:58:03 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:23:53 2019 -0600

    virtio: new post_load hook
    
    Post load hook in virtio vmsd is called early while device is processed,
    and when VirtIODevice core isn't fully initialized.  Most device
    specific code isn't ready to deal with a device in such state, and
    behaves weirdly.
    
    Add a new post_load hook in a device class instead.  Devices should use
    this unless they specifically want to verify the migration stream as
    it's processed, e.g. for bounds checking.
    
    Cc: qemu-stable@nongnu.org
    Suggested-by: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
    Cc: Mikhail Sennikovsky <mikhail.sennikovskii@cloud.ionos.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    (cherry picked from commit 1dd713837cac8ec5a97d3b8492d72ce5ac94803c)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/virtio/virtio.c         | 7 +++++++
 include/hw/virtio/virtio.h | 6 ++++++
 2 files changed, 13 insertions(+)

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index a94ea18a9c..7c3822c3a0 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -2287,6 +2287,13 @@ int virtio_load(VirtIODevice *vdev, QEMUFile *f, int version_id)
     }
     rcu_read_unlock();
 
+    if (vdc->post_load) {
+        ret = vdc->post_load(vdev);
+        if (ret) {
+            return ret;
+        }
+    }
+
     return 0;
 }
 
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index b189788cb2..f9f62370e9 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -158,6 +158,12 @@ typedef struct VirtioDeviceClass {
      */
     void (*save)(VirtIODevice *vdev, QEMUFile *f);
     int (*load)(VirtIODevice *vdev, QEMUFile *f, int version_id);
+    /* Post load hook in vmsd is called early while device is processed, and
+     * when VirtIODevice isn't fully initialized.  Devices should use this instead,
+     * unless they specifically want to verify the migration stream as it's
+     * processed, e.g. for bounds checking.
+     */
+    int (*post_load)(VirtIODevice *vdev);
     const VMStateDescription *vmsd;
 } VirtioDeviceClass;
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:07:59 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:07:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnOB-0004Av-Qa; Wed, 15 Apr 2020 19:07:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnOA-0004An-Bf
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:58 +0000
X-Inumbo-ID: 6ae312e2-7f4c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6ae312e2-7f4c-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:07:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=z/C2pX3e8OQ2WzzzwqrQJOo4g6xrFQGnCY93AxCQ2TE=; b=FpxMZCBiigWRBEUmQHMkavArbd
 NhjKTbJRhnmc7eqWXx05+4CYZkvK7ANfgWaLGX9M75jwYe59sUkC58uYdFPThoF6ssviCW/MKlEyi
 +PVhjEBlbLJ/SAoSZOOm+hMgiV26w9G3Mkpk0ARQ4UZBMub/SJi3cjRE89dedHoEhncM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnO9-0002jh-Eu
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:57 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnO9-0007r7-E2
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:07:57 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] virtio-net: prevent offloads reset on migration
Message-Id: <E1jOnO9-0007r7-E2@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:07:57 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4887acf574a573137660aa98d9d422ece0a41a5a
Author:     Mikhail Sennikovsky <mikhail.sennikovskii@cloud.ionos.com>
AuthorDate: Fri Oct 11 15:58:04 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:24:34 2019 -0600

    virtio-net: prevent offloads reset on migration
    
    Currently offloads disabled by guest via the VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET
    command are not preserved on VM migration.
    Instead all offloads reported by guest features (via VIRTIO_PCI_GUEST_FEATURES)
    get enabled.
    What happens is: first the VirtIONet::curr_guest_offloads gets restored and offloads
    are getting set correctly:
    
     #0  qemu_set_offload (nc=0x555556a11400, csum=1, tso4=0, tso6=0, ecn=0, ufo=0) at net/net.c:474
     #1  virtio_net_apply_guest_offloads (n=0x555557701ca0) at hw/net/virtio-net.c:720
     #2  virtio_net_post_load_device (opaque=0x555557701ca0, version_id=11) at hw/net/virtio-net.c:2334
     #3  vmstate_load_state (f=0x5555569dc010, vmsd=0x555556577c80 <vmstate_virtio_net_device>, opaque=0x555557701ca0, version_id=11)
         at migration/vmstate.c:168
     #4  virtio_load (vdev=0x555557701ca0, f=0x5555569dc010, version_id=11) at hw/virtio/virtio.c:2197
     #5  virtio_device_get (f=0x5555569dc010, opaque=0x555557701ca0, size=0, field=0x55555668cd00 <__compound_literal.5>) at hw/virtio/virtio.c:2036
     #6  vmstate_load_state (f=0x5555569dc010, vmsd=0x555556577ce0 <vmstate_virtio_net>, opaque=0x555557701ca0, version_id=11) at migration/vmstate.c:143
     #7  vmstate_load (f=0x5555569dc010, se=0x5555578189e0) at migration/savevm.c:829
     #8  qemu_loadvm_section_start_full (f=0x5555569dc010, mis=0x5555569eee20) at migration/savevm.c:2211
     #9  qemu_loadvm_state_main (f=0x5555569dc010, mis=0x5555569eee20) at migration/savevm.c:2395
     #10 qemu_loadvm_state (f=0x5555569dc010) at migration/savevm.c:2467
     #11 process_incoming_migration_co (opaque=0x0) at migration/migration.c:449
    
    However later on the features are getting restored, and offloads get reset to
    everything supported by features:
    
     #0  qemu_set_offload (nc=0x555556a11400, csum=1, tso4=1, tso6=1, ecn=0, ufo=0) at net/net.c:474
     #1  virtio_net_apply_guest_offloads (n=0x555557701ca0) at hw/net/virtio-net.c:720
     #2  virtio_net_set_features (vdev=0x555557701ca0, features=5104441767) at hw/net/virtio-net.c:773
     #3  virtio_set_features_nocheck (vdev=0x555557701ca0, val=5104441767) at hw/virtio/virtio.c:2052
     #4  virtio_load (vdev=0x555557701ca0, f=0x5555569dc010, version_id=11) at hw/virtio/virtio.c:2220
     #5  virtio_device_get (f=0x5555569dc010, opaque=0x555557701ca0, size=0, field=0x55555668cd00 <__compound_literal.5>) at hw/virtio/virtio.c:2036
     #6  vmstate_load_state (f=0x5555569dc010, vmsd=0x555556577ce0 <vmstate_virtio_net>, opaque=0x555557701ca0, version_id=11) at migration/vmstate.c:143
     #7  vmstate_load (f=0x5555569dc010, se=0x5555578189e0) at migration/savevm.c:829
     #8  qemu_loadvm_section_start_full (f=0x5555569dc010, mis=0x5555569eee20) at migration/savevm.c:2211
     #9  qemu_loadvm_state_main (f=0x5555569dc010, mis=0x5555569eee20) at migration/savevm.c:2395
     #10 qemu_loadvm_state (f=0x5555569dc010) at migration/savevm.c:2467
     #11 process_incoming_migration_co (opaque=0x0) at migration/migration.c:449
    
    Fix this by preserving the state in saved_guest_offloads field and
    pushing out offload initialization to the new post load hook.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Mikhail Sennikovsky <mikhail.sennikovskii@cloud.ionos.com>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    (cherry picked from commit 7788c3f2e21e35902d45809b236791383bbb613e)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/net/virtio-net.c            | 27 ++++++++++++++++++++++++---
 include/hw/virtio/virtio-net.h |  2 ++
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index b9e1cd71cf..6adb0fe252 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -2330,9 +2330,13 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
         n->curr_guest_offloads = virtio_net_supported_guest_offloads(n);
     }
 
-    if (peer_has_vnet_hdr(n)) {
-        virtio_net_apply_guest_offloads(n);
-    }
+    /*
+     * curr_guest_offloads will be later overwritten by the
+     * virtio_set_features_nocheck call done from the virtio_load.
+     * Here we make sure it is preserved and restored accordingly
+     * in the virtio_net_post_load_virtio callback.
+     */
+    n->saved_guest_offloads = n->curr_guest_offloads;
 
     virtio_net_set_queues(n);
 
@@ -2367,6 +2371,22 @@ static int virtio_net_post_load_device(void *opaque, int version_id)
     return 0;
 }
 
+static int virtio_net_post_load_virtio(VirtIODevice *vdev)
+{
+    VirtIONet *n = VIRTIO_NET(vdev);
+    /*
+     * The actual needed state is now in saved_guest_offloads,
+     * see virtio_net_post_load_device for detail.
+     * Restore it back and apply the desired offloads.
+     */
+    n->curr_guest_offloads = n->saved_guest_offloads;
+    if (peer_has_vnet_hdr(n)) {
+        virtio_net_apply_guest_offloads(n);
+    }
+
+    return 0;
+}
+
 /* tx_waiting field of a VirtIONetQueue */
 static const VMStateDescription vmstate_virtio_net_queue_tx_waiting = {
     .name = "virtio-net-queue-tx_waiting",
@@ -2909,6 +2929,7 @@ static void virtio_net_class_init(ObjectClass *klass, void *data)
     vdc->guest_notifier_mask = virtio_net_guest_notifier_mask;
     vdc->guest_notifier_pending = virtio_net_guest_notifier_pending;
     vdc->legacy_features |= (0x1 << VIRTIO_NET_F_GSO);
+    vdc->post_load = virtio_net_post_load_virtio;
     vdc->vmsd = &vmstate_virtio_net_device;
 }
 
diff --git a/include/hw/virtio/virtio-net.h b/include/hw/virtio/virtio-net.h
index b96f0c643f..07a9319f4b 100644
--- a/include/hw/virtio/virtio-net.h
+++ b/include/hw/virtio/virtio-net.h
@@ -182,6 +182,8 @@ struct VirtIONet {
     char *netclient_name;
     char *netclient_type;
     uint64_t curr_guest_offloads;
+    /* used on saved state restore phase to preserve the curr_guest_offloads */
+    uint64_t saved_guest_offloads;
     AnnounceTimer announce_timer;
     bool needs_vnet_hdr_swap;
     bool mtu_bypass_backend;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:08:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:08:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnOL-0004Bz-St; Wed, 15 Apr 2020 19:08:09 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnOK-0004Bp-8O
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:08 +0000
X-Inumbo-ID: 70e57c34-7f4c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 70e57c34-7f4c-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:08:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=mqNtZ/0oVAsiM1ynrkNdlgdrrAbgpeGfySanOIx0Wr8=; b=pRN+t+1tuiQQ0hM1rUufO2VrxE
 szDGrEunQmIY2BdkEhCShbW0snaKGpQhPiZFDY+Lm++yLoDgreJ9kdjOZ+Llwr+lfWIvffWlYLFhF
 VhRyMimXX+OWLkUOf43CfgibyE55GpEyd2ox4vYaxz7+zxvlzc9titxrdVFsI/oZHCLc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOJ-0002k5-Ha
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:07 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOJ-0007sW-Ge
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:07 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] COLO-compare: Fix incorrect `if` logic
Message-Id: <E1jOnOJ-0007sW-Ge@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:08:07 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit aea18ef938c115f02e269ab6c8bc83dc5126db19
Author:     Fan Yang <Fan_Yang@sjtu.edu.cn>
AuthorDate: Tue Sep 24 22:08:29 2019 +0800
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:25:01 2019 -0600

    COLO-compare: Fix incorrect `if` logic
    
    'colo_mark_tcp_pkt' should return 'true' when packets are the same, and
    'false' otherwise.  However, it returns 'true' when
    'colo_compare_packet_payload' returns non-zero while
    'colo_compare_packet_payload' is just a 'memcmp'.  The result is that
    COLO-compare reports inconsistent TCP packets when they are actually
    the same.
    
    Fixes: f449c9e549c ("colo: compare the packet based on the tcp sequence number")
    Cc: qemu-stable@nongnu.org
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Fan Yang <Fan_Yang@sjtu.edu.cn>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    (cherry picked from commit 1e907a32b77e5d418538453df5945242e43224fa)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 net/colo-compare.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/colo-compare.c b/net/colo-compare.c
index 7489840bde..7ee17f2cf8 100644
--- a/net/colo-compare.c
+++ b/net/colo-compare.c
@@ -319,7 +319,7 @@ static bool colo_mark_tcp_pkt(Packet *ppkt, Packet *spkt,
     *mark = 0;
 
     if (ppkt->tcp_seq == spkt->tcp_seq && ppkt->seq_end == spkt->seq_end) {
-        if (colo_compare_packet_payload(ppkt, spkt,
+        if (!colo_compare_packet_payload(ppkt, spkt,
                                         ppkt->header_size, spkt->header_size,
                                         ppkt->payload_size)) {
             *mark = COLO_COMPARE_FREE_SECONDARY | COLO_COMPARE_FREE_PRIMARY;
@@ -329,7 +329,7 @@ static bool colo_mark_tcp_pkt(Packet *ppkt, Packet *spkt,
 
     /* one part of secondary packet payload still need to be compared */
     if (!after(ppkt->seq_end, spkt->seq_end)) {
-        if (colo_compare_packet_payload(ppkt, spkt,
+        if (!colo_compare_packet_payload(ppkt, spkt,
                                         ppkt->header_size + ppkt->offset,
                                         spkt->header_size + spkt->offset,
                                         ppkt->payload_size - ppkt->offset)) {
@@ -348,7 +348,7 @@ static bool colo_mark_tcp_pkt(Packet *ppkt, Packet *spkt,
         /* primary packet is longer than secondary packet, compare
          * the same part and mark the primary packet offset
          */
-        if (colo_compare_packet_payload(ppkt, spkt,
+        if (!colo_compare_packet_payload(ppkt, spkt,
                                         ppkt->header_size + ppkt->offset,
                                         spkt->header_size + spkt->offset,
                                         spkt->payload_size - spkt->offset)) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:08:20 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:08:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnOV-0004Cx-V9; Wed, 15 Apr 2020 19:08:19 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnOU-0004Co-CI
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:18 +0000
X-Inumbo-ID: 76e82fa0-7f4c-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 76e82fa0-7f4c-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:08:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=qrRU1aWhpd+3wcmrJRHMwxVi8OwWDIxpHG2wtBiGb7M=; b=xRFrQzfHB+gNlgdCRfV0Cu8aVL
 D+0rYzeBHg6X4MTWCfzqZ0Nk9Wo6k/sROfckfTkTr96e4MtL4LphLT4V20OrsArWUzsxuCg6GStF9
 mRUmrlFSViLlA/JLN9GgFPkPm5cB9sxWtcLW9eOo5cbwYN2W7DNkGqNfxp84mToHuoiE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOT-0002kE-K9
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:17 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOT-0007tt-JK
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:17 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] util/hbitmap: strict hbitmap_reset
Message-Id: <E1jOnOT-0007tt-JK@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:08:17 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit fcd7cba6acb7344aca70f5f8ec16626e817b35a5
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Tue Aug 6 18:26:11 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:31:40 2019 -0600

    util/hbitmap: strict hbitmap_reset
    
    hbitmap_reset has an unobvious property: it rounds requested region up.
    It may provoke bugs, like in recently fixed write-blocking mode of
    mirror: user calls reset on unaligned region, not keeping in mind that
    there are possible unrelated dirty bytes, covered by rounded-up region
    and information of this unrelated "dirtiness" will be lost.
    
    Make hbitmap_reset strict: assert that arguments are aligned, allowing
    only one exception when @start + @count == hb->orig_size. It's needed
    to comfort users of hbitmap_next_dirty_area, which cares about
    hb->orig_size.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Message-Id: <20190806152611.280389-1-vsementsov@virtuozzo.com>
    [Maintainer edit: Max's suggestions from on-list. --js]
    [Maintainer edit: Eric's suggestion for aligned macro. --js]
    Signed-off-by: John Snow <jsnow@redhat.com>
    (cherry picked from commit 48557b138383aaf69c2617ca9a88bfb394fc50ec)
    *prereq for fed33bd175f663cc8c13f8a490a4f35a19756cfe
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/qemu/hbitmap.h | 5 +++++
 tests/test-hbitmap.c   | 2 +-
 util/hbitmap.c         | 4 ++++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/include/qemu/hbitmap.h b/include/qemu/hbitmap.h
index 4afbe6292e..1bf944ca3d 100644
--- a/include/qemu/hbitmap.h
+++ b/include/qemu/hbitmap.h
@@ -132,6 +132,11 @@ void hbitmap_set(HBitmap *hb, uint64_t start, uint64_t count);
  * @count: Number of bits to reset.
  *
  * Reset a consecutive range of bits in an HBitmap.
+ * @start and @count must be aligned to bitmap granularity. The only exception
+ * is resetting the tail of the bitmap: @count may be equal to hb->orig_size -
+ * @start, in this case @count may be not aligned. The sum of @start + @count is
+ * allowed to be greater than hb->orig_size, but only if @start < hb->orig_size
+ * and @start + @count = ALIGN_UP(hb->orig_size, granularity).
  */
 void hbitmap_reset(HBitmap *hb, uint64_t start, uint64_t count);
 
diff --git a/tests/test-hbitmap.c b/tests/test-hbitmap.c
index 592d8219db..2be56d1597 100644
--- a/tests/test-hbitmap.c
+++ b/tests/test-hbitmap.c
@@ -423,7 +423,7 @@ static void test_hbitmap_granularity(TestHBitmapData *data,
     hbitmap_test_check(data, 0);
     hbitmap_test_set(data, 0, 3);
     g_assert_cmpint(hbitmap_count(data->hb), ==, 4);
-    hbitmap_test_reset(data, 0, 1);
+    hbitmap_test_reset(data, 0, 2);
     g_assert_cmpint(hbitmap_count(data->hb), ==, 2);
 }
 
diff --git a/util/hbitmap.c b/util/hbitmap.c
index bcc0acdc6a..71c6ba2c52 100644
--- a/util/hbitmap.c
+++ b/util/hbitmap.c
@@ -476,6 +476,10 @@ void hbitmap_reset(HBitmap *hb, uint64_t start, uint64_t count)
     /* Compute range in the last layer.  */
     uint64_t first;
     uint64_t last = start + count - 1;
+    uint64_t gran = 1ULL << hb->granularity;
+
+    assert(QEMU_IS_ALIGNED(start, gran));
+    assert(QEMU_IS_ALIGNED(count, gran) || (start + count == hb->orig_size));
 
     trace_hbitmap_reset(hb, start, count,
                         start >> hb->granularity, last >> hb->granularity);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:08:30 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:08:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnOg-0004EX-0r; Wed, 15 Apr 2020 19:08:30 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnOe-0004EM-HO
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:28 +0000
X-Inumbo-ID: 7ceab774-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7ceab774-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:08:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=6hTCvTU2CtrBux73QbJGIuDr1k0oR5mos9YSc+5X/qw=; b=2gUpeDp9xExESc5gdTdDGpftB9
 5kF2opOuHJIJE6uDr6vY1pvzGaLg3B+wDiIasUn3wux9t5FMmEcXNWdseJAXtS56ZbPXjkQ/5HB/B
 OlgoVsgPij2z0ZJg0oRB6HhL8lzIgaEZ0xAPMdgyT0pq66JSkPl6oHnJJZ6D/E6SC11c=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOd-0002kN-Mv
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:27 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOd-0007v0-Lp
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:27 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] hbitmap: handle set/reset with zero length
Message-Id: <E1jOnOd-0007v0-Lp@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:08:27 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c0b35d87de345bd3b59a44c604b247a0497f2fc0
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Fri Oct 11 12:07:07 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:31:55 2019 -0600

    hbitmap: handle set/reset with zero length
    
    Passing zero length to these functions leads to unpredicted results.
    Zero-length set/reset may occur in active-mirror, on zero-length write
    (which is unlikely, but not guaranteed to never happen).
    
    Let's just do nothing on zero-length request.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20191011090711.19940-2-vsementsov@virtuozzo.com
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit fed33bd175f663cc8c13f8a490a4f35a19756cfe)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 util/hbitmap.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/util/hbitmap.c b/util/hbitmap.c
index 71c6ba2c52..c059313b9e 100644
--- a/util/hbitmap.c
+++ b/util/hbitmap.c
@@ -387,6 +387,10 @@ void hbitmap_set(HBitmap *hb, uint64_t start, uint64_t count)
     uint64_t first, n;
     uint64_t last = start + count - 1;
 
+    if (count == 0) {
+        return;
+    }
+
     trace_hbitmap_set(hb, start, count,
                       start >> hb->granularity, last >> hb->granularity);
 
@@ -478,6 +482,10 @@ void hbitmap_reset(HBitmap *hb, uint64_t start, uint64_t count)
     uint64_t last = start + count - 1;
     uint64_t gran = 1ULL << hb->granularity;
 
+    if (count == 0) {
+        return;
+    }
+
     assert(QEMU_IS_ALIGNED(start, gran));
     assert(QEMU_IS_ALIGNED(count, gran) || (start + count == hb->orig_size));
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:08:40 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:08:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnOq-0004Fb-35; Wed, 15 Apr 2020 19:08:40 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnOo-0004FP-EN
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:38 +0000
X-Inumbo-ID: 82ed07da-7f4c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 82ed07da-7f4c-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:08:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=BaQLcSZBe0Wuu4QyumhfYEGDDA+jbMj7FdRQGgZ03dk=; b=RN7AWBjH7whs4jT2+xMDds/Omg
 esihF3hno38KCTX4RJqE6TMxHO8y9xh1+8hYyTQWJPnEb1czfVdvjClgr55C9aWDZU1pqv19Jv4Vo
 lgHeVFbQSX1KksEse8WIgPvQDIc0sTx0nhQqGAa7h9v2EkaP2eqiRgnFE9B9aw1wIUqs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOn-0002kX-Pc
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:37 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOn-0007vu-Ok
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:37 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] target/arm: Allow reading flags from FPSCR for
 M-profile
Message-Id: <E1jOnOn-0007vu-Ok@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:08:37 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit cdc6896659b85f7ed8f7552850312e55170de0c5
Author:     Christophe Lyon <christophe.lyon@linaro.org>
AuthorDate: Fri Oct 25 11:57:11 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 4 08:34:45 2019 -0600

    target/arm: Allow reading flags from FPSCR for M-profile
    
    rt==15 is a special case when reading the flags: it means the
    destination is APSR. This patch avoids rejecting
    vmrs apsr_nzcv, fpscr
    as illegal instruction.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Christophe Lyon <christophe.lyon@linaro.org>
    Message-id: 20191025095711.10853-1-christophe.lyon@linaro.org
    [PMM: updated the comment]
    Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    (cherry picked from commit 2529ab43b8a05534494704e803e0332d111d8b91)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/arm/translate-vfp.inc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/target/arm/translate-vfp.inc.c b/target/arm/translate-vfp.inc.c
index ef45cecbea..75406fd9db 100644
--- a/target/arm/translate-vfp.inc.c
+++ b/target/arm/translate-vfp.inc.c
@@ -704,9 +704,10 @@ static bool trans_VMSR_VMRS(DisasContext *s, arg_VMSR_VMRS *a)
     if (arm_dc_feature(s, ARM_FEATURE_M)) {
         /*
          * The only M-profile VFP vmrs/vmsr sysreg is FPSCR.
-         * Writes to R15 are UNPREDICTABLE; we choose to undef.
+         * Accesses to R15 are UNPREDICTABLE; we choose to undef.
+         * (FPSCR -> r15 is a special case which writes to the PSR flags.)
          */
-        if (a->rt == 15 || a->reg != ARM_VFP_FPSCR) {
+        if (a->rt == 15 && (!a->l || a->reg != ARM_VFP_FPSCR)) {
             return false;
         }
     }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:08:53 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:08:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnP3-0004Gr-9X; Wed, 15 Apr 2020 19:08:53 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnP1-0004Gm-Ve
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:52 +0000
X-Inumbo-ID: 88f7eeec-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 88f7eeec-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:08:48 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=+R9+OTLcouEu88Pnt9uSWXiCx++WGGj5nLsQIVXCC0I=; b=hmZpgOEcYziGnJA0DP/5Zz8V2I
 KUuqr6b9e0EFkDOXtqSQZDzYQ2guepH5N8Zo3v7QZmUmTB2zxUO7PIZVfWsO8GqCwd+qbdJPjeO5Y
 voOuAWP7/gI4WJquU9+LBpi7o3FPjSfr3rFrpWmB5TvO9SrsrqEDqVgKszi8zVr7/IYU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOx-0002m8-Ts
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:47 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnOx-0007xL-Se
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:47 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] target/xtensa: regenerate and re-import
 test_mmuhifi_c3 core
Message-Id: <E1jOnOx-0007xL-Se@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:08:47 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b387531323ef1e2819f241a7d3bac86fa1ecb8b9
Author:     Max Filippov <jcmvbkbc@gmail.com>
AuthorDate: Tue Oct 8 19:03:33 2019 -0700
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 5 12:11:47 2019 -0600

    target/xtensa: regenerate and re-import test_mmuhifi_c3 core
    
    Overlay part of the test_mmuhifi_c3 core has GPL3 copyright headers in
    it. Fix that by regenerating test_mmuhifi_c3 core overlay and
    re-importing it.
    
    Fixes: d848ea776728 ("target/xtensa: add test_mmuhifi_c3 core")
    Reported-by: Thomas Huth <thuth@redhat.com>
    Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
    (cherry picked from commit d5eaec84e592bb0085f84bef54d0a41e31faa99a)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 target/xtensa/core-test_mmuhifi_c3.c               |    3 +-
 target/xtensa/core-test_mmuhifi_c3/core-isa.h      |  116 +-
 .../xtensa/core-test_mmuhifi_c3/gdb-config.inc.c   |  114 +-
 .../core-test_mmuhifi_c3/xtensa-modules.inc.c      | 6384 ++++++++++----------
 4 files changed, 3385 insertions(+), 3232 deletions(-)

diff --git a/target/xtensa/core-test_mmuhifi_c3.c b/target/xtensa/core-test_mmuhifi_c3.c
index 3a59fefa94..089ed7da5d 100644
--- a/target/xtensa/core-test_mmuhifi_c3.c
+++ b/target/xtensa/core-test_mmuhifi_c3.c
@@ -27,8 +27,8 @@
 
 #include "qemu/osdep.h"
 #include "cpu.h"
-#include "exec/exec-all.h"
 #include "exec/gdbstub.h"
+#include "qemu-common.h"
 #include "qemu/host-utils.h"
 
 #include "core-test_mmuhifi_c3/core-isa.h"
@@ -39,7 +39,6 @@
 
 static XtensaConfig test_mmuhifi_c3 __attribute__((unused)) = {
     .name = "test_mmuhifi_c3",
-    .options = XTENSA_OPTIONS,
     .gdb_regmap = {
         .reg = {
 #include "core-test_mmuhifi_c3/gdb-config.inc.c"
diff --git a/target/xtensa/core-test_mmuhifi_c3/core-isa.h b/target/xtensa/core-test_mmuhifi_c3/core-isa.h
index 704a31f7c8..838b1b09da 100644
--- a/target/xtensa/core-test_mmuhifi_c3/core-isa.h
+++ b/target/xtensa/core-test_mmuhifi_c3/core-isa.h
@@ -1,15 +1,37 @@
 /*
- * Xtensa processor core configuration information.
+ * xtensa/config/core-isa.h -- HAL definitions that are dependent on Xtensa
+ *				processor CORE configuration
  *
- * This file is subject to the terms and conditions of version 2.1 of the GNU
- * Lesser General Public License as published by the Free Software Foundation.
- *
- * Copyright (c) 1999-2009 Tensilica Inc.
+ *  See <xtensa/config/core.h>, which includes this file, for more details.
  */
 
+/* Xtensa processor core configuration information.
+
+   Copyright (c) 1999-2019 Tensilica Inc.
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
+
 #ifndef XTENSA_CORE_TEST_MMUHIFI_C3_CORE_ISA_H
 #define XTENSA_CORE_TEST_MMUHIFI_C3_CORE_ISA_H
 
+
 /****************************************************************************
 	    Parameters Useful for Any Code, USER or PRIVILEGED
  ****************************************************************************/
@@ -32,6 +54,7 @@
 #define XCHAL_HAVE_DEBUG		1	/* debug option */
 #define XCHAL_HAVE_DENSITY		1	/* 16-bit instructions */
 #define XCHAL_HAVE_LOOPS		1	/* zero-overhead loops */
+#define XCHAL_LOOP_BUFFER_SIZE		0	/* zero-ov. loop instr buffer size */
 #define XCHAL_HAVE_NSA			1	/* NSA/NSAU instructions */
 #define XCHAL_HAVE_MINMAX		1	/* MIN/MAX instructions */
 #define XCHAL_HAVE_SEXT			1	/* SEXT instruction */
@@ -59,44 +82,73 @@
 #define XCHAL_HAVE_TAP_MASTER		0	/* JTAG TAP control instr's */
 #define XCHAL_HAVE_PRID			1	/* processor ID register */
 #define XCHAL_HAVE_EXTERN_REGS		1	/* WER/RER instructions */
+#define XCHAL_HAVE_MX			1	/* MX core (Tensilica internal) */
 #define XCHAL_HAVE_MP_INTERRUPTS	1	/* interrupt distributor port */
 #define XCHAL_HAVE_MP_RUNSTALL		1	/* core RunStall control port */
+#define XCHAL_HAVE_PSO			0	/* Power Shut-Off */
+#define XCHAL_HAVE_PSO_CDM		0	/* core/debug/mem pwr domains */
+#define XCHAL_HAVE_PSO_FULL_RETENTION	0	/* all regs preserved on PSO */
 #define XCHAL_HAVE_THREADPTR		1	/* THREADPTR register */
 #define XCHAL_HAVE_BOOLEANS		1	/* boolean registers */
 #define XCHAL_HAVE_CP			1	/* CPENABLE reg (coprocessor) */
 #define XCHAL_CP_MAXCFG			2	/* max allowed cp id plus one */
 #define XCHAL_HAVE_MAC16		0	/* MAC16 package */
 #define XCHAL_HAVE_VECTORFPU2005	0	/* vector floating-point pkg */
-#define XCHAL_HAVE_FP			0	/* floating point pkg */
+#define XCHAL_HAVE_FP			0	/* single prec floating point */
+#define XCHAL_HAVE_FP_DIV		0	/* FP with DIV instructions */
+#define XCHAL_HAVE_FP_RECIP		0	/* FP with RECIP instructions */
+#define XCHAL_HAVE_FP_SQRT		0	/* FP with SQRT instructions */
+#define XCHAL_HAVE_FP_RSQRT		0	/* FP with RSQRT instructions */
 #define XCHAL_HAVE_DFP			0	/* double precision FP pkg */
+#define XCHAL_HAVE_DFP_DIV		0	/* DFP with DIV instructions */
+#define XCHAL_HAVE_DFP_RECIP		0	/* DFP with RECIP instructions*/
+#define XCHAL_HAVE_DFP_SQRT		0	/* DFP with SQRT instructions */
+#define XCHAL_HAVE_DFP_RSQRT		0	/* DFP with RSQRT instructions*/
 #define XCHAL_HAVE_DFP_accel		0	/* double precision FP acceleration pkg */
 #define XCHAL_HAVE_VECTRA1		0	/* Vectra I  pkg */
 #define XCHAL_HAVE_VECTRALX		0	/* Vectra LX pkg */
 #define XCHAL_HAVE_HIFIPRO		0	/* HiFiPro Audio Engine pkg */
+#define XCHAL_HAVE_HIFI3		0	/* HiFi3 Audio Engine pkg */
 #define XCHAL_HAVE_HIFI2		1	/* HiFi2 Audio Engine pkg */
+#define XCHAL_HAVE_HIFI2EP		0	/* HiFi2EP */
+#define XCHAL_HAVE_HIFI_MINI		0	
 #define XCHAL_HAVE_CONNXD2		0	/* ConnX D2 pkg */
+#define XCHAL_HAVE_BBE16		0	/* ConnX BBE16 pkg */
+#define XCHAL_HAVE_BBE16_RSQRT		0	/* BBE16 & vector recip sqrt */
+#define XCHAL_HAVE_BBE16_VECDIV		0	/* BBE16 & vector divide */
+#define XCHAL_HAVE_BBE16_DESPREAD	0	/* BBE16 & despread */
+#define XCHAL_HAVE_BBENEP		0	/* ConnX BBENEP pkgs */
+#define XCHAL_HAVE_BSP3			0	/* ConnX BSP3 pkg */
+#define XCHAL_HAVE_BSP3_TRANSPOSE	0	/* BSP3 & transpose32x32 */
+#define XCHAL_HAVE_SSP16		0	/* ConnX SSP16 pkg */
+#define XCHAL_HAVE_SSP16_VITERBI	0	/* SSP16 & viterbi */
+#define XCHAL_HAVE_TURBO16		0	/* ConnX Turbo16 pkg */
+#define XCHAL_HAVE_BBP16		0	/* ConnX BBP16 pkg */
+#define XCHAL_HAVE_FLIX3		0	/* basic 3-way FLIX option */
 
 
 /*----------------------------------------------------------------------
 				MISC
   ----------------------------------------------------------------------*/
 
+#define XCHAL_NUM_LOADSTORE_UNITS	1	/* load/store units */
 #define XCHAL_NUM_WRITEBUFFER_ENTRIES	8	/* size of write buffer */
 #define XCHAL_INST_FETCH_WIDTH		8	/* instr-fetch width in bytes */
 #define XCHAL_DATA_WIDTH		8	/* data width in bytes */
+#define XCHAL_DATA_PIPE_DELAY		1	/* d-side pipeline delay
+						   (1 = 5-stage, 2 = 7-stage) */
 /*  In T1050, applies to selected core load and store instructions (see ISA): */
 #define XCHAL_UNALIGNED_LOAD_EXCEPTION	1	/* unaligned loads cause exc. */
 #define XCHAL_UNALIGNED_STORE_EXCEPTION	1	/* unaligned stores cause exc.*/
 #define XCHAL_UNALIGNED_LOAD_HW		0	/* unaligned loads work in hw */
 #define XCHAL_UNALIGNED_STORE_HW	0	/* unaligned stores work in hw*/
 
-#define XCHAL_SW_VERSION		800000	/* sw version of this header */
+#define XCHAL_SW_VERSION		1000006	/* sw version of this header */
 
 #define XCHAL_CORE_ID			"test_mmuhifi_c3"	/* alphanum core name
 						   (CoreID) set in the Xtensa
 						   Processor Generator */
 
-#define XCHAL_CORE_DESCRIPTION		"test_mmuhifi_c3"
 #define XCHAL_BUILD_UNIQUE_ID		0x00005A6A	/* 22-bit sw build ID */
 
 /*
@@ -136,6 +188,10 @@
 #define XCHAL_DCACHE_IS_WRITEBACK	1	/* writeback feature */
 #define XCHAL_DCACHE_IS_COHERENT	1	/* MP coherence feature */
 
+#define XCHAL_HAVE_PREFETCH		0	/* PREFCTL register */
+#define XCHAL_HAVE_PREFETCH_L1		0	/* prefetch to L1 dcache */
+#define XCHAL_PREFETCH_CASTOUT_LINES	0	/* dcache pref. castout bufsz */
+
 
 
 
@@ -172,6 +228,8 @@
 #define XCHAL_ICACHE_ACCESS_SIZE	8
 #define XCHAL_DCACHE_ACCESS_SIZE	8
 
+#define XCHAL_DCACHE_BANKS		1	/* number of banks */
+
 /*  Number of encoded cache attr bits (see <xtensa/hal.h> for decoded bits):  */
 #define XCHAL_CA_BITS			4
 
@@ -187,6 +245,8 @@
 #define XCHAL_NUM_URAM			0	/* number of core unified RAMs*/
 #define XCHAL_NUM_XLMI			0	/* number of core XLMI ports */
 
+#define XCHAL_HAVE_IMEM_LOADSTORE	1	/* can load/store to IROM/IRAM*/
+
 
 /*----------------------------------------------------------------------
 			INTERRUPTS and TIMERS
@@ -261,6 +321,7 @@
 #define XCHAL_INTTYPE_MASK_TIMER	0x00000140
 #define XCHAL_INTTYPE_MASK_NMI		0x00000000
 #define XCHAL_INTTYPE_MASK_WRITE_ERROR	0x00000000
+#define XCHAL_INTTYPE_MASK_PROFILING	0x00000000
 
 /*  Interrupt numbers assigned to specific interrupt sources:  */
 #define XCHAL_TIMER0_INTERRUPT		6	/* CCOMPARE0 */
@@ -273,7 +334,7 @@
 
 
 /*
- *  External interrupt vectors/levels.
+ *  External interrupt mapping.
  *  These macros describe how Xtensa processor interrupt numbers
  *  (as numbered internally, eg. in INTERRUPT and INTENABLE registers)
  *  map to external BInterrupt<n> pins, for those interrupts
@@ -281,7 +342,7 @@
  *  See the Xtensa processor databook for more details.
  */
 
-/*  Core interrupt numbers mapped to each EXTERNAL interrupt number:  */
+/*  Core interrupt numbers mapped to each EXTERNAL BInterrupt pin number:  */
 #define XCHAL_EXTINT0_NUM		0	/* (intlevel 1) */
 #define XCHAL_EXTINT1_NUM		1	/* (intlevel 1) */
 #define XCHAL_EXTINT2_NUM		2	/* (intlevel 1) */
@@ -291,6 +352,16 @@
 #define XCHAL_EXTINT6_NUM		9	/* (intlevel 1) */
 #define XCHAL_EXTINT7_NUM		10	/* (intlevel 1) */
 #define XCHAL_EXTINT8_NUM		11	/* (intlevel 1) */
+/*  EXTERNAL BInterrupt pin numbers mapped to each core interrupt number:  */
+#define XCHAL_INT0_EXTNUM		0	/* (intlevel 1) */
+#define XCHAL_INT1_EXTNUM		1	/* (intlevel 1) */
+#define XCHAL_INT2_EXTNUM		2	/* (intlevel 1) */
+#define XCHAL_INT3_EXTNUM		3	/* (intlevel 1) */
+#define XCHAL_INT4_EXTNUM		4	/* (intlevel 1) */
+#define XCHAL_INT5_EXTNUM		5	/* (intlevel 1) */
+#define XCHAL_INT9_EXTNUM		6	/* (intlevel 1) */
+#define XCHAL_INT10_EXTNUM		7	/* (intlevel 1) */
+#define XCHAL_INT11_EXTNUM		8	/* (intlevel 1) */
 
 
 /*----------------------------------------------------------------------
@@ -300,11 +371,13 @@
 #define XCHAL_XEA_VERSION		2	/* Xtensa Exception Architecture
 						   number: 1 == XEA1 (old)
 							   2 == XEA2 (new)
-							   0 == XEAX (extern) */
+							   0 == XEAX (extern) or TX */
 #define XCHAL_HAVE_XEA1			0	/* Exception Architecture 1 */
 #define XCHAL_HAVE_XEA2			1	/* Exception Architecture 2 */
 #define XCHAL_HAVE_XEAX			0	/* External Exception Arch. */
 #define XCHAL_HAVE_EXCEPTIONS		1	/* exception option */
+#define XCHAL_HAVE_HALT			0	/* halt architecture option */
+#define XCHAL_HAVE_BOOTLOADER		0	/* boot loader (for TX) */
 #define XCHAL_HAVE_MEM_ECC_PARITY	0	/* local memory ECC/parity */
 #define XCHAL_HAVE_VECTOR_SELECT	1	/* relocatable vectors */
 #define XCHAL_HAVE_VECBASE		1	/* relocatable vectors */
@@ -344,13 +417,30 @@
 
 
 /*----------------------------------------------------------------------
-				DEBUG
+				DEBUG MODULE
   ----------------------------------------------------------------------*/
 
+/*  Misc  */
+#define XCHAL_HAVE_DEBUG_ERI		0	/* ERI to debug module */
+#define XCHAL_HAVE_DEBUG_APB		0	/* APB to debug module */
+#define XCHAL_HAVE_DEBUG_JTAG		0	/* JTAG to debug module */
+
+/*  On-Chip Debug (OCD)  */
 #define XCHAL_HAVE_OCD			1	/* OnChipDebug option */
 #define XCHAL_NUM_IBREAK		0	/* number of IBREAKn regs */
 #define XCHAL_NUM_DBREAK		0	/* number of DBREAKn regs */
-#define XCHAL_HAVE_OCD_DIR_ARRAY	0	/* faster OCD option */
+#define XCHAL_HAVE_OCD_DIR_ARRAY	0	/* faster OCD option (to LX4) */
+#define XCHAL_HAVE_OCD_LS32DDR		0	/* L32DDR/S32DDR (faster OCD) */
+
+/*  TRAX (in core)  */
+#define XCHAL_HAVE_TRAX			0	/* TRAX in debug module */
+#define XCHAL_TRAX_MEM_SIZE		0	/* TRAX memory size in bytes */
+#define XCHAL_TRAX_MEM_SHAREABLE	0	/* start/end regs; ready sig. */
+#define XCHAL_TRAX_ATB_WIDTH		0	/* ATB width (bits), 0=no ATB */
+#define XCHAL_TRAX_TIME_WIDTH		0	/* timestamp bitwidth, 0=none */
+
+/*  Perf counters  */
+#define XCHAL_NUM_PERF_COUNTERS		0	/* performance counters */
 
 
 /*----------------------------------------------------------------------
diff --git a/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c b/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c
index 618d30dffa..0bca70b5af 100644
--- a/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c
+++ b/target/xtensa/core-test_mmuhifi_c3/gdb-config.inc.c
@@ -1,23 +1,25 @@
 /* Configuration for the Xtensa architecture for GDB, the GNU debugger.
 
-   Copyright (C) 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+   Copyright (c) 2003-2019 Tensilica Inc.
 
-   This file is part of GDB.
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
-
-  /*    idx ofs bi sz al targno  flags cp typ group name  */
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
   XTREG(  0,  0,32, 4, 4,0x0020,0x0006,-2, 9,0x0100,pc,          0,0,0,0,0,0)
   XTREG(  1,  4,32, 4, 4,0x0100,0x0006,-2, 1,0x0002,ar0,         0,0,0,0,0,0)
   XTREG(  2,  8,32, 4, 4,0x0101,0x0006,-2, 1,0x0002,ar1,         0,0,0,0,0,0)
@@ -58,8 +60,8 @@
   XTREG( 37,148,32, 4, 4,0x0205,0x0006,-2, 2,0x1100,litbase,     0,0,0,0,0,0)
   XTREG( 38,152, 3, 4, 4,0x0248,0x0006,-2, 2,0x1002,windowbase,  0,0,0,0,0,0)
   XTREG( 39,156, 8, 4, 4,0x0249,0x0006,-2, 2,0x1002,windowstart, 0,0,0,0,0,0)
-  XTREG( 40,160,32, 4, 4,0x02b0,0x0002,-2, 2,0x1000,sr176,       0,0,0,0,0,0)
-  XTREG( 41,164,32, 4, 4,0x02d0,0x0002,-2, 2,0x1000,sr208,       0,0,0,0,0,0)
+  XTREG( 40,160,32, 4, 4,0x02b0,0x0002,-2, 2,0x1000,configid0,   0,0,0,0,0,0)
+  XTREG( 41,164,32, 4, 4,0x02d0,0x0002,-2, 2,0x1000,configid1,   0,0,0,0,0,0)
   XTREG( 42,168,19, 4, 4,0x02e6,0x0006,-2, 2,0x1100,ps,          0,0,0,0,0,0)
   XTREG( 43,172,32, 4, 4,0x03e7,0x0006,-2, 3,0x0110,threadptr,   0,0,0,0,0,0)
   XTREG( 44,176,16, 4, 4,0x0204,0x0006,-1, 2,0x1100,br,          0,0,0,0,0,0)
@@ -137,4 +139,82 @@
   XTREG(104,464,32, 4, 4,0x000d,0x0006,-2, 8,0x0100,a13,         0,0,0,0,0,0)
   XTREG(105,468,32, 4, 4,0x000e,0x0006,-2, 8,0x0100,a14,         0,0,0,0,0,0)
   XTREG(106,472,32, 4, 4,0x000f,0x0006,-2, 8,0x0100,a15,         0,0,0,0,0,0)
+  XTREG(107,476, 1, 1, 1,0x0010,0x0006,-2, 6,0x1010,b0,
+            0,0,&xtensa_mask0,0,0,0)
+  XTREG(108,477, 1, 1, 1,0x0011,0x0006,-2, 6,0x1010,b1,
+            0,0,&xtensa_mask1,0,0,0)
+  XTREG(109,478, 1, 1, 1,0x0012,0x0006,-2, 6,0x1010,b2,
+            0,0,&xtensa_mask2,0,0,0)
+  XTREG(110,479, 1, 1, 1,0x0013,0x0006,-2, 6,0x1010,b3,
+            0,0,&xtensa_mask3,0,0,0)
+  XTREG(111,480, 1, 1, 1,0x0014,0x0006,-2, 6,0x1010,b4,
+            0,0,&xtensa_mask4,0,0,0)
+  XTREG(112,481, 1, 1, 1,0x0015,0x0006,-2, 6,0x1010,b5,
+            0,0,&xtensa_mask5,0,0,0)
+  XTREG(113,482, 1, 1, 1,0x0016,0x0006,-2, 6,0x1010,b6,
+            0,0,&xtensa_mask6,0,0,0)
+  XTREG(114,483, 1, 1, 1,0x0017,0x0006,-2, 6,0x1010,b7,
+            0,0,&xtensa_mask7,0,0,0)
+  XTREG(115,484, 1, 1, 1,0x0018,0x0006,-2, 6,0x1010,b8,
+            0,0,&xtensa_mask8,0,0,0)
+  XTREG(116,485, 1, 1, 1,0x0019,0x0006,-2, 6,0x1010,b9,
+            0,0,&xtensa_mask9,0,0,0)
+  XTREG(117,486, 1, 1, 1,0x001a,0x0006,-2, 6,0x1010,b10,
+            0,0,&xtensa_mask10,0,0,0)
+  XTREG(118,487, 1, 1, 1,0x001b,0x0006,-2, 6,0x1010,b11,
+            0,0,&xtensa_mask11,0,0,0)
+  XTREG(119,488, 1, 1, 1,0x001c,0x0006,-2, 6,0x1010,b12,
+            0,0,&xtensa_mask12,0,0,0)
+  XTREG(120,489, 1, 1, 1,0x001d,0x0006,-2, 6,0x1010,b13,
+            0,0,&xtensa_mask13,0,0,0)
+  XTREG(121,490, 1, 1, 1,0x001e,0x0006,-2, 6,0x1010,b14,
+            0,0,&xtensa_mask14,0,0,0)
+  XTREG(122,491, 1, 1, 1,0x001f,0x0006,-2, 6,0x1010,b15,
+            0,0,&xtensa_mask15,0,0,0)
+  XTREG(123,492, 4, 4, 4,0x2003,0x0006,-2, 6,0x1010,psintlevel,
+            0,0,&xtensa_mask16,0,0,0)
+  XTREG(124,496, 1, 4, 4,0x2004,0x0006,-2, 6,0x1010,psum,
+            0,0,&xtensa_mask17,0,0,0)
+  XTREG(125,500, 1, 4, 4,0x2005,0x0006,-2, 6,0x1010,pswoe,
+            0,0,&xtensa_mask18,0,0,0)
+  XTREG(126,504, 2, 4, 4,0x2006,0x0006,-2, 6,0x1010,psring,
+            0,0,&xtensa_mask19,0,0,0)
+  XTREG(127,508, 1, 4, 4,0x2007,0x0006,-2, 6,0x1010,psexcm,
+            0,0,&xtensa_mask20,0,0,0)
+  XTREG(128,512, 2, 4, 4,0x2008,0x0006,-2, 6,0x1010,pscallinc,
+            0,0,&xtensa_mask21,0,0,0)
+  XTREG(129,516, 4, 4, 4,0x2009,0x0006,-2, 6,0x1010,psowb,
+            0,0,&xtensa_mask22,0,0,0)
+  XTREG(130,520,20, 4, 4,0x200a,0x0006,-2, 6,0x1010,litbaddr,
+            0,0,&xtensa_mask23,0,0,0)
+  XTREG(131,524, 1, 4, 4,0x200b,0x0006,-2, 6,0x1010,litben,
+            0,0,&xtensa_mask24,0,0,0)
+  XTREG(132,528, 4, 4, 4,0x200e,0x0006,-2, 6,0x1010,dbnum,
+            0,0,&xtensa_mask25,0,0,0)
+  XTREG(133,532, 8, 4, 4,0x200f,0x0006,-2, 6,0x1010,asid3,
+            0,0,&xtensa_mask26,0,0,0)
+  XTREG(134,536, 8, 4, 4,0x2010,0x0006,-2, 6,0x1010,asid2,
+            0,0,&xtensa_mask27,0,0,0)
+  XTREG(135,540, 8, 4, 4,0x2011,0x0006,-2, 6,0x1010,asid1,
+            0,0,&xtensa_mask28,0,0,0)
+  XTREG(136,544, 2, 4, 4,0x2012,0x0006,-2, 6,0x1010,instpgszid4,
+            0,0,&xtensa_mask29,0,0,0)
+  XTREG(137,548, 2, 4, 4,0x2013,0x0006,-2, 6,0x1010,datapgszid4,
+            0,0,&xtensa_mask30,0,0,0)
+  XTREG(138,552,10, 4, 4,0x2014,0x0006,-2, 6,0x1010,ptbase,
+            0,0,&xtensa_mask31,0,0,0)
+  XTREG(139,556, 1, 4, 4,0x201a,0x0006, 1, 5,0x1010,ae_overflow,
+            0,0,&xtensa_mask32,0,0,0)
+  XTREG(140,560, 6, 4, 4,0x201b,0x0006, 1, 5,0x1010,ae_sar,
+            0,0,&xtensa_mask33,0,0,0)
+  XTREG(141,564, 4, 4, 4,0x201c,0x0006, 1, 5,0x1010,ae_bitptr,
+            0,0,&xtensa_mask34,0,0,0)
+  XTREG(142,568, 4, 4, 4,0x201d,0x0006, 1, 5,0x1010,ae_bitsused,
+            0,0,&xtensa_mask35,0,0,0)
+  XTREG(143,572, 4, 4, 4,0x201e,0x0006, 1, 5,0x1010,ae_tablesize,
+            0,0,&xtensa_mask36,0,0,0)
+  XTREG(144,576, 4, 4, 4,0x201f,0x0006, 1, 5,0x1010,ae_first_ts,
+            0,0,&xtensa_mask37,0,0,0)
+  XTREG(145,580,27, 4, 4,0x2020,0x0006, 1, 5,0x1010,ae_nextoffset,
+            0,0,&xtensa_mask38,0,0,0)
   XTREG_END
diff --git a/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c b/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c
index 687631b8fb..28561147fc 100644
--- a/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c
+++ b/target/xtensa/core-test_mmuhifi_c3/xtensa-modules.inc.c
@@ -1,24 +1,26 @@
 /* Xtensa configuration-specific ISA information.
-   Copyright 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
 
-   This file is part of BFD, the Binary File Descriptor library.
+   Copyright (c) 2003-2019 Tensilica Inc.
 
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 3 of the
-   License, or (at your option) any later version.
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
 
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
+   The above copyright notice and this permission notice shall be included
+   in all copies or substantial portions of the Software.
 
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
 
-#include "qemu/osdep.h"
 #include "xtensa-isa.h"
 #include "xtensa-isa-internal.h"
 
@@ -32,8 +34,8 @@ static xtensa_sysreg_internal sysregs[] = {
   { "BR", 4, 0 },
   { "PTEVADDR", 83, 0 },
   { "DDR", 104, 0 },
-  { "176", 176, 0 },
-  { "208", 208, 0 },
+  { "CONFIGID0", 176, 0 },
+  { "CONFIGID1", 208, 0 },
   { "INTERRUPT", 226, 0 },
   { "INTCLEAR", 227, 0 },
   { "CCOUNT", 234, 0 },
@@ -8634,6 +8636,38 @@ Field_ae_s20_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
 }
 
 static unsigned
+Field_ae_fld_ohba_Slot_inst_get (const xtensa_insnbuf insn)
+{
+  unsigned tie_t = 0;
+  tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28);
+  return tie_t;
+}
+
+static void
+Field_ae_fld_ohba_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+{
+  uint32 tie_t;
+  tie_t = (val << 28) >> 28;
+  insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16);
+}
+
+static unsigned
+Field_ae_fld_ohba2_Slot_inst_get (const xtensa_insnbuf insn)
+{
+  unsigned tie_t = 0;
+  tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28);
+  return tie_t;
+}
+
+static void
+Field_ae_fld_ohba2_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
+{
+  uint32 tie_t;
+  tie_t = (val << 28) >> 28;
+  insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16);
+}
+
+static unsigned
 Field_ftsf12_Slot_inst_get (const xtensa_insnbuf insn)
 {
   unsigned tie_t = 0;
@@ -8794,6 +8828,8 @@ enum xtensa_field_id {
   FIELD_ae_r20,
   FIELD_ae_r10,
   FIELD_ae_s20,
+  FIELD_ae_fld_ohba,
+  FIELD_ae_fld_ohba2,
   FIELD_op0_s3,
   FIELD_ftsf12,
   FIELD_ftsf13,
@@ -9184,7 +9220,7 @@ enum xtensa_interface_id {
   INTERFACE_RMPINT_In
 };
 
-
+
 /* Constant tables.  */
 
 /* constant table ai4c */
@@ -9254,596 +9290,1044 @@ static const unsigned CONST_TBL_b4cu_0[] = {
 /* Instruction operands.  */
 
 static int
-Operand_soffsetx4_decode (uint32 *valp)
+OperandSem_opnd_sem_soffsetx4_decode (uint32 *valp)
 {
-  unsigned soffsetx4_0, offset_0;
-  offset_0 = *valp & 0x3ffff;
-  soffsetx4_0 = 0x4 + ((((int) offset_0 << 14) >> 14) << 2);
-  *valp = soffsetx4_0;
+  unsigned soffsetx4_out_0;
+  unsigned soffsetx4_in_0;
+  soffsetx4_in_0 = *valp & 0x3ffff;
+  soffsetx4_out_0 = 0x4 + ((((int) soffsetx4_in_0 << 14) >> 14) << 2);
+  *valp = soffsetx4_out_0;
   return 0;
 }
 
 static int
-Operand_soffsetx4_encode (uint32 *valp)
+OperandSem_opnd_sem_soffsetx4_encode (uint32 *valp)
 {
-  unsigned offset_0, soffsetx4_0;
-  soffsetx4_0 = *valp;
-  offset_0 = ((soffsetx4_0 - 0x4) >> 2) & 0x3ffff;
-  *valp = offset_0;
+  unsigned soffsetx4_in_0;
+  unsigned soffsetx4_out_0;
+  soffsetx4_out_0 = *valp;
+  soffsetx4_in_0 = ((soffsetx4_out_0 - 0x4) >> 2) & 0x3ffff;
+  *valp = soffsetx4_in_0;
   return 0;
 }
 
 static int
-Operand_soffsetx4_ator (uint32 *valp, uint32 pc)
+OperandSem_opnd_sem_uimm12x8_decode (uint32 *valp)
 {
-  *valp -= (pc & ~0x3);
+  unsigned uimm12x8_out_0;
+  unsigned uimm12x8_in_0;
+  uimm12x8_in_0 = *valp & 0xfff;
+  uimm12x8_out_0 = uimm12x8_in_0 << 3;
+  *valp = uimm12x8_out_0;
   return 0;
 }
 
 static int
-Operand_soffsetx4_rtoa (uint32 *valp, uint32 pc)
+OperandSem_opnd_sem_uimm12x8_encode (uint32 *valp)
 {
-  *valp += (pc & ~0x3);
+  unsigned uimm12x8_in_0;
+  unsigned uimm12x8_out_0;
+  uimm12x8_out_0 = *valp;
+  uimm12x8_in_0 = ((uimm12x8_out_0 >> 3) & 0xfff);
+  *valp = uimm12x8_in_0;
   return 0;
 }
 
 static int
-Operand_uimm12x8_decode (uint32 *valp)
+OperandSem_opnd_sem_simm4_decode (uint32 *valp)
 {
-  unsigned uimm12x8_0, imm12_0;
-  imm12_0 = *valp & 0xfff;
-  uimm12x8_0 = imm12_0 << 3;
-  *valp = uimm12x8_0;
+  unsigned simm4_out_0;
+  unsigned simm4_in_0;
+  simm4_in_0 = *valp & 0xf;
+  simm4_out_0 = ((int) simm4_in_0 << 28) >> 28;
+  *valp = simm4_out_0;
   return 0;
 }
 
 static int
-Operand_uimm12x8_encode (uint32 *valp)
+OperandSem_opnd_sem_simm4_encode (uint32 *valp)
 {
-  unsigned imm12_0, uimm12x8_0;
-  uimm12x8_0 = *valp;
-  imm12_0 = ((uimm12x8_0 >> 3) & 0xfff);
-  *valp = imm12_0;
+  unsigned simm4_in_0;
+  unsigned simm4_out_0;
+  simm4_out_0 = *valp;
+  simm4_in_0 = (simm4_out_0 & 0xf);
+  *valp = simm4_in_0;
   return 0;
 }
 
 static int
-Operand_simm4_decode (uint32 *valp)
+OperandSem_opnd_sem_AR_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
-  unsigned simm4_0, mn_0;
-  mn_0 = *valp & 0xf;
-  simm4_0 = ((int) mn_0 << 28) >> 28;
-  *valp = simm4_0;
   return 0;
 }
 
 static int
-Operand_simm4_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_encode (uint32 *valp)
 {
-  unsigned mn_0, simm4_0;
-  simm4_0 = *valp;
-  mn_0 = (simm4_0 & 0xf);
-  *valp = mn_0;
-  return 0;
+  int error;
+  error = (*valp >= 32);
+  return error;
 }
 
 static int
-Operand_arr_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_0_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_arr_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_0_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0xf) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_ars_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_1_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_ars_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_1_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0xf) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_art_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_2_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_art_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_2_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0xf) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_ar0_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_3_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_ar0_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_3_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_ar4_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_AR_4_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
   return 0;
 }
 
 static int
-Operand_ar4_encode (uint32 *valp)
+OperandSem_opnd_sem_AR_4_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 32);
   return error;
 }
 
 static int
-Operand_ar8_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_immrx4_decode (uint32 *valp)
 {
+  unsigned immrx4_out_0;
+  unsigned immrx4_in_0;
+  immrx4_in_0 = *valp & 0xf;
+  immrx4_out_0 = (((0xfffffff) << 4) | immrx4_in_0) << 2;
+  *valp = immrx4_out_0;
   return 0;
 }
 
 static int
-Operand_ar8_encode (uint32 *valp)
+OperandSem_opnd_sem_immrx4_encode (uint32 *valp)
+{
+  unsigned immrx4_in_0;
+  unsigned immrx4_out_0;
+  immrx4_out_0 = *valp;
+  immrx4_in_0 = ((immrx4_out_0 >> 2) & 0xf);
+  *valp = immrx4_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_lsi4x4_decode (uint32 *valp)
+{
+  unsigned lsi4x4_out_0;
+  unsigned lsi4x4_in_0;
+  lsi4x4_in_0 = *valp & 0xf;
+  lsi4x4_out_0 = lsi4x4_in_0 << 2;
+  *valp = lsi4x4_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_lsi4x4_encode (uint32 *valp)
+{
+  unsigned lsi4x4_in_0;
+  unsigned lsi4x4_out_0;
+  lsi4x4_out_0 = *valp;
+  lsi4x4_in_0 = ((lsi4x4_out_0 >> 2) & 0xf);
+  *valp = lsi4x4_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm7_decode (uint32 *valp)
+{
+  unsigned simm7_out_0;
+  unsigned simm7_in_0;
+  simm7_in_0 = *valp & 0x7f;
+  simm7_out_0 = ((((-((((simm7_in_0 >> 6) & 1)) & (((simm7_in_0 >> 5) & 1)))) & 0x1ffffff)) << 7) | simm7_in_0;
+  *valp = simm7_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm7_encode (uint32 *valp)
+{
+  unsigned simm7_in_0;
+  unsigned simm7_out_0;
+  simm7_out_0 = *valp;
+  simm7_in_0 = (simm7_out_0 & 0x7f);
+  *valp = simm7_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm6_decode (uint32 *valp)
+{
+  unsigned uimm6_out_0;
+  unsigned uimm6_in_0;
+  uimm6_in_0 = *valp & 0x3f;
+  uimm6_out_0 = 0x4 + (((0) << 6) | uimm6_in_0);
+  *valp = uimm6_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm6_encode (uint32 *valp)
+{
+  unsigned uimm6_in_0;
+  unsigned uimm6_out_0;
+  uimm6_out_0 = *valp;
+  uimm6_in_0 = (uimm6_out_0 - 0x4) & 0x3f;
+  *valp = uimm6_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_ai4const_decode (uint32 *valp)
+{
+  unsigned ai4const_out_0;
+  unsigned ai4const_in_0;
+  ai4const_in_0 = *valp & 0xf;
+  ai4const_out_0 = CONST_TBL_ai4c_0[ai4const_in_0 & 0xf];
+  *valp = ai4const_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_ai4const_encode (uint32 *valp)
+{
+  unsigned ai4const_in_0;
+  unsigned ai4const_out_0;
+  ai4const_out_0 = *valp;
+  switch (ai4const_out_0)
+    {
+    case 0xffffffff: ai4const_in_0 = 0; break;
+    case 0x1: ai4const_in_0 = 0x1; break;
+    case 0x2: ai4const_in_0 = 0x2; break;
+    case 0x3: ai4const_in_0 = 0x3; break;
+    case 0x4: ai4const_in_0 = 0x4; break;
+    case 0x5: ai4const_in_0 = 0x5; break;
+    case 0x6: ai4const_in_0 = 0x6; break;
+    case 0x7: ai4const_in_0 = 0x7; break;
+    case 0x8: ai4const_in_0 = 0x8; break;
+    case 0x9: ai4const_in_0 = 0x9; break;
+    case 0xa: ai4const_in_0 = 0xa; break;
+    case 0xb: ai4const_in_0 = 0xb; break;
+    case 0xc: ai4const_in_0 = 0xc; break;
+    case 0xd: ai4const_in_0 = 0xd; break;
+    case 0xe: ai4const_in_0 = 0xe; break;
+    default: ai4const_in_0 = 0xf; break;
+    }
+  *valp = ai4const_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_b4const_decode (uint32 *valp)
+{
+  unsigned b4const_out_0;
+  unsigned b4const_in_0;
+  b4const_in_0 = *valp & 0xf;
+  b4const_out_0 = CONST_TBL_b4c_0[b4const_in_0 & 0xf];
+  *valp = b4const_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_b4const_encode (uint32 *valp)
+{
+  unsigned b4const_in_0;
+  unsigned b4const_out_0;
+  b4const_out_0 = *valp;
+  switch (b4const_out_0)
+    {
+    case 0xffffffff: b4const_in_0 = 0; break;
+    case 0x1: b4const_in_0 = 0x1; break;
+    case 0x2: b4const_in_0 = 0x2; break;
+    case 0x3: b4const_in_0 = 0x3; break;
+    case 0x4: b4const_in_0 = 0x4; break;
+    case 0x5: b4const_in_0 = 0x5; break;
+    case 0x6: b4const_in_0 = 0x6; break;
+    case 0x7: b4const_in_0 = 0x7; break;
+    case 0x8: b4const_in_0 = 0x8; break;
+    case 0xa: b4const_in_0 = 0x9; break;
+    case 0xc: b4const_in_0 = 0xa; break;
+    case 0x10: b4const_in_0 = 0xb; break;
+    case 0x20: b4const_in_0 = 0xc; break;
+    case 0x40: b4const_in_0 = 0xd; break;
+    case 0x80: b4const_in_0 = 0xe; break;
+    default: b4const_in_0 = 0xf; break;
+    }
+  *valp = b4const_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_b4constu_decode (uint32 *valp)
+{
+  unsigned b4constu_out_0;
+  unsigned b4constu_in_0;
+  b4constu_in_0 = *valp & 0xf;
+  b4constu_out_0 = CONST_TBL_b4cu_0[b4constu_in_0 & 0xf];
+  *valp = b4constu_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_b4constu_encode (uint32 *valp)
+{
+  unsigned b4constu_in_0;
+  unsigned b4constu_out_0;
+  b4constu_out_0 = *valp;
+  switch (b4constu_out_0)
+    {
+    case 0x8000: b4constu_in_0 = 0; break;
+    case 0x10000: b4constu_in_0 = 0x1; break;
+    case 0x2: b4constu_in_0 = 0x2; break;
+    case 0x3: b4constu_in_0 = 0x3; break;
+    case 0x4: b4constu_in_0 = 0x4; break;
+    case 0x5: b4constu_in_0 = 0x5; break;
+    case 0x6: b4constu_in_0 = 0x6; break;
+    case 0x7: b4constu_in_0 = 0x7; break;
+    case 0x8: b4constu_in_0 = 0x8; break;
+    case 0xa: b4constu_in_0 = 0x9; break;
+    case 0xc: b4constu_in_0 = 0xa; break;
+    case 0x10: b4constu_in_0 = 0xb; break;
+    case 0x20: b4constu_in_0 = 0xc; break;
+    case 0x40: b4constu_in_0 = 0xd; break;
+    case 0x80: b4constu_in_0 = 0xe; break;
+    default: b4constu_in_0 = 0xf; break;
+    }
+  *valp = b4constu_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8_decode (uint32 *valp)
+{
+  unsigned uimm8_out_0;
+  unsigned uimm8_in_0;
+  uimm8_in_0 = *valp & 0xff;
+  uimm8_out_0 = uimm8_in_0;
+  *valp = uimm8_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8_encode (uint32 *valp)
+{
+  unsigned uimm8_in_0;
+  unsigned uimm8_out_0;
+  uimm8_out_0 = *valp;
+  uimm8_in_0 = (uimm8_out_0 & 0xff);
+  *valp = uimm8_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8x2_decode (uint32 *valp)
+{
+  unsigned uimm8x2_out_0;
+  unsigned uimm8x2_in_0;
+  uimm8x2_in_0 = *valp & 0xff;
+  uimm8x2_out_0 = uimm8x2_in_0 << 1;
+  *valp = uimm8x2_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8x2_encode (uint32 *valp)
+{
+  unsigned uimm8x2_in_0;
+  unsigned uimm8x2_out_0;
+  uimm8x2_out_0 = *valp;
+  uimm8x2_in_0 = ((uimm8x2_out_0 >> 1) & 0xff);
+  *valp = uimm8x2_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8x4_decode (uint32 *valp)
+{
+  unsigned uimm8x4_out_0;
+  unsigned uimm8x4_in_0;
+  uimm8x4_in_0 = *valp & 0xff;
+  uimm8x4_out_0 = uimm8x4_in_0 << 2;
+  *valp = uimm8x4_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm8x4_encode (uint32 *valp)
+{
+  unsigned uimm8x4_in_0;
+  unsigned uimm8x4_out_0;
+  uimm8x4_out_0 = *valp;
+  uimm8x4_in_0 = ((uimm8x4_out_0 >> 2) & 0xff);
+  *valp = uimm8x4_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm4x16_decode (uint32 *valp)
+{
+  unsigned uimm4x16_out_0;
+  unsigned uimm4x16_in_0;
+  uimm4x16_in_0 = *valp & 0xf;
+  uimm4x16_out_0 = uimm4x16_in_0 << 4;
+  *valp = uimm4x16_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm4x16_encode (uint32 *valp)
+{
+  unsigned uimm4x16_in_0;
+  unsigned uimm4x16_out_0;
+  uimm4x16_out_0 = *valp;
+  uimm4x16_in_0 = ((uimm4x16_out_0 >> 4) & 0xf);
+  *valp = uimm4x16_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm8_decode (uint32 *valp)
+{
+  unsigned simm8_out_0;
+  unsigned simm8_in_0;
+  simm8_in_0 = *valp & 0xff;
+  simm8_out_0 = ((int) simm8_in_0 << 24) >> 24;
+  *valp = simm8_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm8_encode (uint32 *valp)
+{
+  unsigned simm8_in_0;
+  unsigned simm8_out_0;
+  simm8_out_0 = *valp;
+  simm8_in_0 = (simm8_out_0 & 0xff);
+  *valp = simm8_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm8x256_decode (uint32 *valp)
+{
+  unsigned simm8x256_out_0;
+  unsigned simm8x256_in_0;
+  simm8x256_in_0 = *valp & 0xff;
+  simm8x256_out_0 = (((int) simm8x256_in_0 << 24) >> 24) << 8;
+  *valp = simm8x256_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm8x256_encode (uint32 *valp)
+{
+  unsigned simm8x256_in_0;
+  unsigned simm8x256_out_0;
+  simm8x256_out_0 = *valp;
+  simm8x256_in_0 = ((simm8x256_out_0 >> 8) & 0xff);
+  *valp = simm8x256_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm12b_decode (uint32 *valp)
+{
+  unsigned simm12b_out_0;
+  unsigned simm12b_in_0;
+  simm12b_in_0 = *valp & 0xfff;
+  simm12b_out_0 = ((int) simm12b_in_0 << 20) >> 20;
+  *valp = simm12b_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_simm12b_encode (uint32 *valp)
+{
+  unsigned simm12b_in_0;
+  unsigned simm12b_out_0;
+  simm12b_out_0 = *valp;
+  simm12b_in_0 = (simm12b_out_0 & 0xfff);
+  *valp = simm12b_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_msalp32_decode (uint32 *valp)
+{
+  unsigned msalp32_out_0;
+  unsigned msalp32_in_0;
+  msalp32_in_0 = *valp & 0x1f;
+  msalp32_out_0 = 0x20 - msalp32_in_0;
+  *valp = msalp32_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_msalp32_encode (uint32 *valp)
+{
+  unsigned msalp32_in_0;
+  unsigned msalp32_out_0;
+  msalp32_out_0 = *valp;
+  msalp32_in_0 = (0x20 - msalp32_out_0) & 0x1f;
+  *valp = msalp32_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_op2p1_decode (uint32 *valp)
+{
+  unsigned op2p1_out_0;
+  unsigned op2p1_in_0;
+  op2p1_in_0 = *valp & 0xf;
+  op2p1_out_0 = op2p1_in_0 + 0x1;
+  *valp = op2p1_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_op2p1_encode (uint32 *valp)
+{
+  unsigned op2p1_in_0;
+  unsigned op2p1_out_0;
+  op2p1_out_0 = *valp;
+  op2p1_in_0 = (op2p1_out_0 - 0x1) & 0xf;
+  *valp = op2p1_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_label8_decode (uint32 *valp)
+{
+  unsigned label8_out_0;
+  unsigned label8_in_0;
+  label8_in_0 = *valp & 0xff;
+  label8_out_0 = 0x4 + (((int) label8_in_0 << 24) >> 24);
+  *valp = label8_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_label8_encode (uint32 *valp)
+{
+  unsigned label8_in_0;
+  unsigned label8_out_0;
+  label8_out_0 = *valp;
+  label8_in_0 = (label8_out_0 - 0x4) & 0xff;
+  *valp = label8_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_ulabel8_decode (uint32 *valp)
+{
+  unsigned ulabel8_out_0;
+  unsigned ulabel8_in_0;
+  ulabel8_in_0 = *valp & 0xff;
+  ulabel8_out_0 = 0x4 + (((0) << 8) | ulabel8_in_0);
+  *valp = ulabel8_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_ulabel8_encode (uint32 *valp)
+{
+  unsigned ulabel8_in_0;
+  unsigned ulabel8_out_0;
+  ulabel8_out_0 = *valp;
+  ulabel8_in_0 = (ulabel8_out_0 - 0x4) & 0xff;
+  *valp = ulabel8_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_label12_decode (uint32 *valp)
+{
+  unsigned label12_out_0;
+  unsigned label12_in_0;
+  label12_in_0 = *valp & 0xfff;
+  label12_out_0 = 0x4 + (((int) label12_in_0 << 20) >> 20);
+  *valp = label12_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_label12_encode (uint32 *valp)
+{
+  unsigned label12_in_0;
+  unsigned label12_out_0;
+  label12_out_0 = *valp;
+  label12_in_0 = (label12_out_0 - 0x4) & 0xfff;
+  *valp = label12_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_soffset_decode (uint32 *valp)
+{
+  unsigned soffset_out_0;
+  unsigned soffset_in_0;
+  soffset_in_0 = *valp & 0x3ffff;
+  soffset_out_0 = 0x4 + (((int) soffset_in_0 << 14) >> 14);
+  *valp = soffset_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_soffset_encode (uint32 *valp)
+{
+  unsigned soffset_in_0;
+  unsigned soffset_out_0;
+  soffset_out_0 = *valp;
+  soffset_in_0 = (soffset_out_0 - 0x4) & 0x3ffff;
+  *valp = soffset_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm16x4_decode (uint32 *valp)
+{
+  unsigned uimm16x4_out_0;
+  unsigned uimm16x4_in_0;
+  uimm16x4_in_0 = *valp & 0xffff;
+  uimm16x4_out_0 = (((0xffff) << 16) | uimm16x4_in_0) << 2;
+  *valp = uimm16x4_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_uimm16x4_encode (uint32 *valp)
+{
+  unsigned uimm16x4_in_0;
+  unsigned uimm16x4_out_0;
+  uimm16x4_out_0 = *valp;
+  uimm16x4_in_0 = (uimm16x4_out_0 >> 2) & 0xffff;
+  *valp = uimm16x4_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_bbi_decode (uint32 *valp)
+{
+  unsigned bbi_out_0;
+  unsigned bbi_in_0;
+  bbi_in_0 = *valp & 0x1f;
+  bbi_out_0 = (0 << 5) | bbi_in_0;
+  *valp = bbi_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_bbi_encode (uint32 *valp)
+{
+  unsigned bbi_in_0;
+  unsigned bbi_out_0;
+  bbi_out_0 = *valp;
+  bbi_in_0 = (bbi_out_0 & 0x1f);
+  *valp = bbi_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_s_decode (uint32 *valp)
+{
+  unsigned s_out_0;
+  unsigned s_in_0;
+  s_in_0 = *valp & 0xf;
+  s_out_0 = (0 << 4) | s_in_0;
+  *valp = s_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_s_encode (uint32 *valp)
+{
+  unsigned s_in_0;
+  unsigned s_out_0;
+  s_out_0 = *valp;
+  s_in_0 = (s_out_0 & 0xf);
+  *valp = s_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_immt_decode (uint32 *valp)
+{
+  unsigned immt_out_0;
+  unsigned immt_in_0;
+  immt_in_0 = *valp & 0xf;
+  immt_out_0 = immt_in_0;
+  *valp = immt_out_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_immt_encode (uint32 *valp)
+{
+  unsigned immt_in_0;
+  unsigned immt_out_0;
+  immt_out_0 = *valp;
+  immt_in_0 = immt_out_0 & 0xf;
+  *valp = immt_in_0;
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_BR_decode (uint32 *valp ATTRIBUTE_UNUSED)
+{
+  return 0;
+}
+
+static int
+OperandSem_opnd_sem_BR_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 16);
   return error;
 }
 
 static int
-Operand_ar12_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_BR2_decode (uint32 *valp)
 {
+  *valp = *valp << 1;
   return 0;
 }
 
 static int
-Operand_ar12_encode (uint32 *valp)
+OperandSem_opnd_sem_BR2_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 16) || ((*valp & 1) != 0);
+  *valp = *valp >> 1;
   return error;
 }
 
 static int
-Operand_ars_entry_decode (uint32 *valp ATTRIBUTE_UNUSED)
+OperandSem_opnd_sem_BR4_decode (uint32 *valp)
 {
+  *valp = *valp << 2;
   return 0;
 }
 
 static int
-Operand_ars_entry_encode (uint32 *valp)
+OperandSem_opnd_sem_BR4_encode (uint32 *valp)
 {
   int error;
-  error = (*valp & ~0x1f) != 0;
+  error = (*valp >= 16) || ((*valp & 3) != 0);
+  *valp = *valp >> 2;
   return error;
 }
 
 static int
-Operand_immrx4_decode (uint32 *valp)
+OperandSem_opnd_sem_BR8_decode (uint32 *valp)
 {
-  unsigned immrx4_0, r_0;
-  r_0 = *valp & 0xf;
-  immrx4_0 = (((0xfffffff) << 4) | r_0) << 2;
-  *valp = immrx4_0;
+  *valp = *valp << 3;
   return 0;
 }
 
 static int
-Operand_immrx4_encode (uint32 *valp)
+OperandSem_opnd_sem_BR8_encode (uint32 *valp)
 {
-  unsigned r_0, immrx4_0;
-  immrx4_0 = *valp;
-  r_0 = ((immrx4_0 >> 2) & 0xf);
-  *valp = r_0;
-  return 0;
+  int error;
+  error = (*valp >= 16) || ((*valp & 7) != 0);
+  *valp = *valp >> 3;
+  return error;
 }
 
 static int
-Operand_lsi4x4_decode (uint32 *valp)
+OperandSem_opnd_sem_BR16_decode (uint32 *valp)
 {
-  unsigned lsi4x4_0, r_0;
-  r_0 = *valp & 0xf;
-  lsi4x4_0 = r_0 << 2;
-  *valp = lsi4x4_0;
+  *valp = *valp << 4;
   return 0;
 }
 
 static int
-Operand_lsi4x4_encode (uint32 *valp)
+OperandSem_opnd_sem_BR16_encode (uint32 *valp)
 {
-  unsigned r_0, lsi4x4_0;
-  lsi4x4_0 = *valp;
-  r_0 = ((lsi4x4_0 >> 2) & 0xf);
-  *valp = r_0;
-  return 0;
+  int error;
+  error = (*valp >= 16) || ((*valp & 15) != 0);
+  *valp = *valp >> 4;
+  return error;
 }
 
 static int
-Operand_simm7_decode (uint32 *valp)
+OperandSem_opnd_sem_tp7_decode (uint32 *valp)
 {
-  unsigned simm7_0, imm7_0;
-  imm7_0 = *valp & 0x7f;
-  simm7_0 = ((((-((((imm7_0 >> 6) & 1)) & (((imm7_0 >> 5) & 1)))) & 0x1ffffff)) << 7) | imm7_0;
-  *valp = simm7_0;
+  unsigned tp7_out_0;
+  unsigned tp7_in_0;
+  tp7_in_0 = *valp & 0xf;
+  tp7_out_0 = tp7_in_0 + 0x7;
+  *valp = tp7_out_0;
   return 0;
 }
 
 static int
-Operand_simm7_encode (uint32 *valp)
+OperandSem_opnd_sem_tp7_encode (uint32 *valp)
 {
-  unsigned imm7_0, simm7_0;
-  simm7_0 = *valp;
-  imm7_0 = (simm7_0 & 0x7f);
-  *valp = imm7_0;
+  unsigned tp7_in_0;
+  unsigned tp7_out_0;
+  tp7_out_0 = *valp;
+  tp7_in_0 = (tp7_out_0 - 0x7) & 0xf;
+  *valp = tp7_in_0;
   return 0;
 }
 
 static int
-Operand_uimm6_decode (uint32 *valp)
+OperandSem_opnd_sem_xt_wbr15_label_decode (uint32 *valp)
 {
-  unsigned uimm6_0, imm6_0;
-  imm6_0 = *valp & 0x3f;
-  uimm6_0 = 0x4 + (((0) << 6) | imm6_0);
-  *valp = uimm6_0;
+  unsigned xt_wbr15_label_out_0;
+  unsigned xt_wbr15_label_in_0;
+  xt_wbr15_label_in_0 = *valp & 0x7fff;
+  xt_wbr15_label_out_0 = 0x4 + (((int) xt_wbr15_label_in_0 << 17) >> 17);
+  *valp = xt_wbr15_label_out_0;
   return 0;
 }
 
 static int
-Operand_uimm6_encode (uint32 *valp)
+OperandSem_opnd_sem_xt_wbr15_label_encode (uint32 *valp)
 {
-  unsigned imm6_0, uimm6_0;
-  uimm6_0 = *valp;
-  imm6_0 = (uimm6_0 - 0x4) & 0x3f;
-  *valp = imm6_0;
+  unsigned xt_wbr15_label_in_0;
+  unsigned xt_wbr15_label_out_0;
+  xt_wbr15_label_out_0 = *valp;
+  xt_wbr15_label_in_0 = (xt_wbr15_label_out_0 - 0x4) & 0x7fff;
+  *valp = xt_wbr15_label_in_0;
   return 0;
 }
 
 static int
-Operand_uimm6_ator (uint32 *valp, uint32 pc)
+OperandSem_opnd_sem_ae_samt32_decode (uint32 *valp)
 {
-  *valp -= pc;
+  unsigned ae_samt32_out_0;
+  unsigned ae_samt32_in_0;
+  ae_samt32_in_0 = *valp & 0x1f;
+  ae_samt32_out_0 = (0 << 5) | ae_samt32_in_0;
+  *valp = ae_samt32_out_0;
   return 0;
 }
 
 static int
-Operand_uimm6_rtoa (uint32 *valp, uint32 pc)
+OperandSem_opnd_sem_ae_samt32_encode (uint32 *valp)
 {
-  *valp += pc;
+  unsigned ae_samt32_in_0;
+  unsigned ae_samt32_out_0;
+  ae_samt32_out_0 = *valp;
+  ae_samt32_in_0 = (ae_samt32_out_0 & 0x1f);
+  *valp = ae_samt32_in_0;
   return 0;
 }
 
 static int
-Operand_ai4const_decode (uint32 *valp)
+OperandSem_opnd_sem_AE_PR_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
-  unsigned ai4const_0, t_0;
-  t_0 = *valp & 0xf;
-  ai4const_0 = CONST_TBL_ai4c_0[t_0 & 0xf];
-  *valp = ai4const_0;
   return 0;
 }
 
 static int
-Operand_ai4const_encode (uint32 *valp)
+OperandSem_opnd_sem_AE_PR_encode (uint32 *valp)
 {
-  unsigned t_0, ai4const_0;
-  ai4const_0 = *valp;
-  switch (ai4const_0)
-    {
-    case 0xffffffff: t_0 = 0; break;
-    case 0x1: t_0 = 0x1; break;
-    case 0x2: t_0 = 0x2; break;
-    case 0x3: t_0 = 0x3; break;
-    case 0x4: t_0 = 0x4; break;
-    case 0x5: t_0 = 0x5; break;
-    case 0x6: t_0 = 0x6; break;
-    case 0x7: t_0 = 0x7; break;
-    case 0x8: t_0 = 0x8; break;
-    case 0x9: t_0 = 0x9; break;
-    case 0xa: t_0 = 0xa; break;
-    case 0xb: t_0 = 0xb; break;
-    case 0xc: t_0 = 0xc; break;
-    case 0xd: t_0 = 0xd; break;
-    case 0xe: t_0 = 0xe; break;
-    default: t_0 = 0xf; break;
-    }
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_b4const_decode (uint32 *valp)
-{
-  unsigned b4const_0, r_0;
-  r_0 = *valp & 0xf;
-  b4const_0 = CONST_TBL_b4c_0[r_0 & 0xf];
-  *valp = b4const_0;
-  return 0;
-}
-
-static int
-Operand_b4const_encode (uint32 *valp)
-{
-  unsigned r_0, b4const_0;
-  b4const_0 = *valp;
-  switch (b4const_0)
-    {
-    case 0xffffffff: r_0 = 0; break;
-    case 0x1: r_0 = 0x1; break;
-    case 0x2: r_0 = 0x2; break;
-    case 0x3: r_0 = 0x3; break;
-    case 0x4: r_0 = 0x4; break;
-    case 0x5: r_0 = 0x5; break;
-    case 0x6: r_0 = 0x6; break;
-    case 0x7: r_0 = 0x7; break;
-    case 0x8: r_0 = 0x8; break;
-    case 0xa: r_0 = 0x9; break;
-    case 0xc: r_0 = 0xa; break;
-    case 0x10: r_0 = 0xb; break;
-    case 0x20: r_0 = 0xc; break;
-    case 0x40: r_0 = 0xd; break;
-    case 0x80: r_0 = 0xe; break;
-    default: r_0 = 0xf; break;
-    }
-  *valp = r_0;
-  return 0;
-}
-
-static int
-Operand_b4constu_decode (uint32 *valp)
-{
-  unsigned b4constu_0, r_0;
-  r_0 = *valp & 0xf;
-  b4constu_0 = CONST_TBL_b4cu_0[r_0 & 0xf];
-  *valp = b4constu_0;
-  return 0;
-}
-
-static int
-Operand_b4constu_encode (uint32 *valp)
-{
-  unsigned r_0, b4constu_0;
-  b4constu_0 = *valp;
-  switch (b4constu_0)
-    {
-    case 0x8000: r_0 = 0; break;
-    case 0x10000: r_0 = 0x1; break;
-    case 0x2: r_0 = 0x2; break;
-    case 0x3: r_0 = 0x3; break;
-    case 0x4: r_0 = 0x4; break;
-    case 0x5: r_0 = 0x5; break;
-    case 0x6: r_0 = 0x6; break;
-    case 0x7: r_0 = 0x7; break;
-    case 0x8: r_0 = 0x8; break;
-    case 0xa: r_0 = 0x9; break;
-    case 0xc: r_0 = 0xa; break;
-    case 0x10: r_0 = 0xb; break;
-    case 0x20: r_0 = 0xc; break;
-    case 0x40: r_0 = 0xd; break;
-    case 0x80: r_0 = 0xe; break;
-    default: r_0 = 0xf; break;
-    }
-  *valp = r_0;
-  return 0;
-}
-
-static int
-Operand_uimm8_decode (uint32 *valp)
-{
-  unsigned uimm8_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  uimm8_0 = imm8_0;
-  *valp = uimm8_0;
-  return 0;
-}
-
-static int
-Operand_uimm8_encode (uint32 *valp)
-{
-  unsigned imm8_0, uimm8_0;
-  uimm8_0 = *valp;
-  imm8_0 = (uimm8_0 & 0xff);
-  *valp = imm8_0;
-  return 0;
-}
-
-static int
-Operand_uimm8x2_decode (uint32 *valp)
-{
-  unsigned uimm8x2_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  uimm8x2_0 = imm8_0 << 1;
-  *valp = uimm8x2_0;
-  return 0;
-}
-
-static int
-Operand_uimm8x2_encode (uint32 *valp)
-{
-  unsigned imm8_0, uimm8x2_0;
-  uimm8x2_0 = *valp;
-  imm8_0 = ((uimm8x2_0 >> 1) & 0xff);
-  *valp = imm8_0;
-  return 0;
+  int error;
+  error = (*valp >= 8);
+  return error;
 }
 
 static int
-Operand_uimm8x4_decode (uint32 *valp)
+OperandSem_opnd_sem_AE_QR_decode (uint32 *valp ATTRIBUTE_UNUSED)
 {
-  unsigned uimm8x4_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  uimm8x4_0 = imm8_0 << 2;
-  *valp = uimm8x4_0;
   return 0;
 }
 
 static int
-Operand_uimm8x4_encode (uint32 *valp)
+OperandSem_opnd_sem_AE_QR_encode (uint32 *valp)
 {
-  unsigned imm8_0, uimm8x4_0;
-  uimm8x4_0 = *valp;
-  imm8_0 = ((uimm8x4_0 >> 2) & 0xff);
-  *valp = imm8_0;
-  return 0;
+  int error;
+  error = (*valp >= 4);
+  return error;
 }
 
 static int
-Operand_uimm4x16_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm16_decode (uint32 *valp)
 {
-  unsigned uimm4x16_0, op2_0;
-  op2_0 = *valp & 0xf;
-  uimm4x16_0 = op2_0 << 4;
-  *valp = uimm4x16_0;
+  unsigned ae_lsimm16_out_0;
+  unsigned ae_lsimm16_in_0;
+  ae_lsimm16_in_0 = *valp & 0xf;
+  ae_lsimm16_out_0 = (((int) ae_lsimm16_in_0 << 28) >> 28) << 1;
+  *valp = ae_lsimm16_out_0;
   return 0;
 }
 
 static int
-Operand_uimm4x16_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm16_encode (uint32 *valp)
 {
-  unsigned op2_0, uimm4x16_0;
-  uimm4x16_0 = *valp;
-  op2_0 = ((uimm4x16_0 >> 4) & 0xf);
-  *valp = op2_0;
+  unsigned ae_lsimm16_in_0;
+  unsigned ae_lsimm16_out_0;
+  ae_lsimm16_out_0 = *valp;
+  ae_lsimm16_in_0 = ((ae_lsimm16_out_0 >> 1) & 0xf);
+  *valp = ae_lsimm16_in_0;
   return 0;
 }
 
 static int
-Operand_simm8_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm32_decode (uint32 *valp)
 {
-  unsigned simm8_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  simm8_0 = ((int) imm8_0 << 24) >> 24;
-  *valp = simm8_0;
+  unsigned ae_lsimm32_out_0;
+  unsigned ae_lsimm32_in_0;
+  ae_lsimm32_in_0 = *valp & 0xf;
+  ae_lsimm32_out_0 = (((int) ae_lsimm32_in_0 << 28) >> 28) << 2;
+  *valp = ae_lsimm32_out_0;
   return 0;
 }
 
 static int
-Operand_simm8_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm32_encode (uint32 *valp)
 {
-  unsigned imm8_0, simm8_0;
-  simm8_0 = *valp;
-  imm8_0 = (simm8_0 & 0xff);
-  *valp = imm8_0;
+  unsigned ae_lsimm32_in_0;
+  unsigned ae_lsimm32_out_0;
+  ae_lsimm32_out_0 = *valp;
+  ae_lsimm32_in_0 = ((ae_lsimm32_out_0 >> 2) & 0xf);
+  *valp = ae_lsimm32_in_0;
   return 0;
 }
 
 static int
-Operand_simm8x256_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm64_decode (uint32 *valp)
 {
-  unsigned simm8x256_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  simm8x256_0 = (((int) imm8_0 << 24) >> 24) << 8;
-  *valp = simm8x256_0;
+  unsigned ae_lsimm64_out_0;
+  unsigned ae_lsimm64_in_0;
+  ae_lsimm64_in_0 = *valp & 0xf;
+  ae_lsimm64_out_0 = (((int) ae_lsimm64_in_0 << 28) >> 28) << 3;
+  *valp = ae_lsimm64_out_0;
   return 0;
 }
 
 static int
-Operand_simm8x256_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_lsimm64_encode (uint32 *valp)
 {
-  unsigned imm8_0, simm8x256_0;
-  simm8x256_0 = *valp;
-  imm8_0 = ((simm8x256_0 >> 8) & 0xff);
-  *valp = imm8_0;
+  unsigned ae_lsimm64_in_0;
+  unsigned ae_lsimm64_out_0;
+  ae_lsimm64_out_0 = *valp;
+  ae_lsimm64_in_0 = ((ae_lsimm64_out_0 >> 3) & 0xf);
+  *valp = ae_lsimm64_in_0;
   return 0;
 }
 
 static int
-Operand_simm12b_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_samt64_decode (uint32 *valp)
 {
-  unsigned simm12b_0, imm12b_0;
-  imm12b_0 = *valp & 0xfff;
-  simm12b_0 = ((int) imm12b_0 << 20) >> 20;
-  *valp = simm12b_0;
+  unsigned ae_samt64_out_0;
+  unsigned ae_samt64_in_0;
+  ae_samt64_in_0 = *valp & 0x3f;
+  ae_samt64_out_0 = (0 << 6) | ae_samt64_in_0;
+  *valp = ae_samt64_out_0;
   return 0;
 }
 
 static int
-Operand_simm12b_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_samt64_encode (uint32 *valp)
 {
-  unsigned imm12b_0, simm12b_0;
-  simm12b_0 = *valp;
-  imm12b_0 = (simm12b_0 & 0xfff);
-  *valp = imm12b_0;
+  unsigned ae_samt64_in_0;
+  unsigned ae_samt64_out_0;
+  ae_samt64_out_0 = *valp;
+  ae_samt64_in_0 = (ae_samt64_out_0 & 0x3f);
+  *valp = ae_samt64_in_0;
   return 0;
 }
 
 static int
-Operand_msalp32_decode (uint32 *valp)
+OperandSem_opnd_sem_ae_ohba_decode (uint32 *valp)
 {
-  unsigned msalp32_0, sal_0;
-  sal_0 = *valp & 0x1f;
-  msalp32_0 = 0x20 - sal_0;
-  *valp = msalp32_0;
+  unsigned ae_ohba_out_0;
+  unsigned ae_ohba_in_0;
+  ae_ohba_in_0 = *valp & 0xf;
+  ae_ohba_out_0 = (0 << 5) | (((((ae_ohba_in_0 & 0xf))) == 0) << 4) | ((ae_ohba_in_0 & 0xf));
+  *valp = ae_ohba_out_0;
   return 0;
 }
 
 static int
-Operand_msalp32_encode (uint32 *valp)
+OperandSem_opnd_sem_ae_ohba_encode (uint32 *valp)
 {
-  unsigned sal_0, msalp32_0;
-  msalp32_0 = *valp;
-  sal_0 = (0x20 - msalp32_0) & 0x1f;
-  *valp = sal_0;
+  unsigned ae_ohba_in_0;
+  unsigned ae_ohba_out_0;
+  ae_ohba_out_0 = *valp;
+  ae_ohba_in_0 = (ae_ohba_out_0 & 0xf);
+  *valp = ae_ohba_in_0;
   return 0;
 }
 
 static int
-Operand_op2p1_decode (uint32 *valp)
+Operand_soffsetx4_ator (uint32 *valp, uint32 pc)
 {
-  unsigned op2p1_0, op2_0;
-  op2_0 = *valp & 0xf;
-  op2p1_0 = op2_0 + 0x1;
-  *valp = op2p1_0;
+  *valp -= (pc & ~0x3);
   return 0;
 }
 
 static int
-Operand_op2p1_encode (uint32 *valp)
+Operand_soffsetx4_rtoa (uint32 *valp, uint32 pc)
 {
-  unsigned op2_0, op2p1_0;
-  op2p1_0 = *valp;
-  op2_0 = (op2p1_0 - 0x1) & 0xf;
-  *valp = op2_0;
+  *valp += (pc & ~0x3);
   return 0;
 }
 
 static int
-Operand_label8_decode (uint32 *valp)
+Operand_uimm6_ator (uint32 *valp, uint32 pc)
 {
-  unsigned label8_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  label8_0 = 0x4 + (((int) imm8_0 << 24) >> 24);
-  *valp = label8_0;
+  *valp -= pc;
   return 0;
 }
 
 static int
-Operand_label8_encode (uint32 *valp)
+Operand_uimm6_rtoa (uint32 *valp, uint32 pc)
 {
-  unsigned imm8_0, label8_0;
-  label8_0 = *valp;
-  imm8_0 = (label8_0 - 0x4) & 0xff;
-  *valp = imm8_0;
+  *valp += pc;
   return 0;
 }
 
@@ -9862,26 +10346,6 @@ Operand_label8_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_ulabel8_decode (uint32 *valp)
-{
-  unsigned ulabel8_0, imm8_0;
-  imm8_0 = *valp & 0xff;
-  ulabel8_0 = 0x4 + (((0) << 8) | imm8_0);
-  *valp = ulabel8_0;
-  return 0;
-}
-
-static int
-Operand_ulabel8_encode (uint32 *valp)
-{
-  unsigned imm8_0, ulabel8_0;
-  ulabel8_0 = *valp;
-  imm8_0 = (ulabel8_0 - 0x4) & 0xff;
-  *valp = imm8_0;
-  return 0;
-}
-
-static int
 Operand_ulabel8_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -9896,26 +10360,6 @@ Operand_ulabel8_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_label12_decode (uint32 *valp)
-{
-  unsigned label12_0, imm12_0;
-  imm12_0 = *valp & 0xfff;
-  label12_0 = 0x4 + (((int) imm12_0 << 20) >> 20);
-  *valp = label12_0;
-  return 0;
-}
-
-static int
-Operand_label12_encode (uint32 *valp)
-{
-  unsigned imm12_0, label12_0;
-  label12_0 = *valp;
-  imm12_0 = (label12_0 - 0x4) & 0xfff;
-  *valp = imm12_0;
-  return 0;
-}
-
-static int
 Operand_label12_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -9930,26 +10374,6 @@ Operand_label12_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_soffset_decode (uint32 *valp)
-{
-  unsigned soffset_0, offset_0;
-  offset_0 = *valp & 0x3ffff;
-  soffset_0 = 0x4 + (((int) offset_0 << 14) >> 14);
-  *valp = soffset_0;
-  return 0;
-}
-
-static int
-Operand_soffset_encode (uint32 *valp)
-{
-  unsigned offset_0, soffset_0;
-  soffset_0 = *valp;
-  offset_0 = (soffset_0 - 0x4) & 0x3ffff;
-  *valp = offset_0;
-  return 0;
-}
-
-static int
 Operand_soffset_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -9964,26 +10388,6 @@ Operand_soffset_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_uimm16x4_decode (uint32 *valp)
-{
-  unsigned uimm16x4_0, imm16_0;
-  imm16_0 = *valp & 0xffff;
-  uimm16x4_0 = (((0xffff) << 16) | imm16_0) << 2;
-  *valp = uimm16x4_0;
-  return 0;
-}
-
-static int
-Operand_uimm16x4_encode (uint32 *valp)
-{
-  unsigned imm16_0, uimm16x4_0;
-  uimm16x4_0 = *valp;
-  imm16_0 = (uimm16x4_0 >> 2) & 0xffff;
-  *valp = imm16_0;
-  return 0;
-}
-
-static int
 Operand_uimm16x4_ator (uint32 *valp, uint32 pc)
 {
   *valp -= ((pc + 3) & ~0x3);
@@ -9998,336 +10402,6 @@ Operand_uimm16x4_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_immt_decode (uint32 *valp)
-{
-  unsigned immt_0, t_0;
-  t_0 = *valp & 0xf;
-  immt_0 = t_0;
-  *valp = immt_0;
-  return 0;
-}
-
-static int
-Operand_immt_encode (uint32 *valp)
-{
-  unsigned t_0, immt_0;
-  immt_0 = *valp;
-  t_0 = immt_0 & 0xf;
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_imms_decode (uint32 *valp)
-{
-  unsigned imms_0, s_0;
-  s_0 = *valp & 0xf;
-  imms_0 = s_0;
-  *valp = imms_0;
-  return 0;
-}
-
-static int
-Operand_imms_encode (uint32 *valp)
-{
-  unsigned s_0, imms_0;
-  imms_0 = *valp;
-  s_0 = imms_0 & 0xf;
-  *valp = s_0;
-  return 0;
-}
-
-static int
-Operand_bt_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_bt_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0xf) != 0;
-  return error;
-}
-
-static int
-Operand_bs_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_bs_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0xf) != 0;
-  return error;
-}
-
-static int
-Operand_br_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_br_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0xf) != 0;
-  return error;
-}
-
-static int
-Operand_bt2_decode (uint32 *valp)
-{
-  *valp = *valp << 1;
-  return 0;
-}
-
-static int
-Operand_bt2_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x7 << 1)) != 0;
-  *valp = *valp >> 1;
-  return error;
-}
-
-static int
-Operand_bs2_decode (uint32 *valp)
-{
-  *valp = *valp << 1;
-  return 0;
-}
-
-static int
-Operand_bs2_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x7 << 1)) != 0;
-  *valp = *valp >> 1;
-  return error;
-}
-
-static int
-Operand_br2_decode (uint32 *valp)
-{
-  *valp = *valp << 1;
-  return 0;
-}
-
-static int
-Operand_br2_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x7 << 1)) != 0;
-  *valp = *valp >> 1;
-  return error;
-}
-
-static int
-Operand_bt4_decode (uint32 *valp)
-{
-  *valp = *valp << 2;
-  return 0;
-}
-
-static int
-Operand_bt4_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x3 << 2)) != 0;
-  *valp = *valp >> 2;
-  return error;
-}
-
-static int
-Operand_bs4_decode (uint32 *valp)
-{
-  *valp = *valp << 2;
-  return 0;
-}
-
-static int
-Operand_bs4_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x3 << 2)) != 0;
-  *valp = *valp >> 2;
-  return error;
-}
-
-static int
-Operand_br4_decode (uint32 *valp)
-{
-  *valp = *valp << 2;
-  return 0;
-}
-
-static int
-Operand_br4_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x3 << 2)) != 0;
-  *valp = *valp >> 2;
-  return error;
-}
-
-static int
-Operand_bt8_decode (uint32 *valp)
-{
-  *valp = *valp << 3;
-  return 0;
-}
-
-static int
-Operand_bt8_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x1 << 3)) != 0;
-  *valp = *valp >> 3;
-  return error;
-}
-
-static int
-Operand_bs8_decode (uint32 *valp)
-{
-  *valp = *valp << 3;
-  return 0;
-}
-
-static int
-Operand_bs8_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x1 << 3)) != 0;
-  *valp = *valp >> 3;
-  return error;
-}
-
-static int
-Operand_br8_decode (uint32 *valp)
-{
-  *valp = *valp << 3;
-  return 0;
-}
-
-static int
-Operand_br8_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0x1 << 3)) != 0;
-  *valp = *valp >> 3;
-  return error;
-}
-
-static int
-Operand_bt16_decode (uint32 *valp)
-{
-  *valp = *valp << 4;
-  return 0;
-}
-
-static int
-Operand_bt16_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0 << 4)) != 0;
-  *valp = *valp >> 4;
-  return error;
-}
-
-static int
-Operand_bs16_decode (uint32 *valp)
-{
-  *valp = *valp << 4;
-  return 0;
-}
-
-static int
-Operand_bs16_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0 << 4)) != 0;
-  *valp = *valp >> 4;
-  return error;
-}
-
-static int
-Operand_br16_decode (uint32 *valp)
-{
-  *valp = *valp << 4;
-  return 0;
-}
-
-static int
-Operand_br16_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0 << 4)) != 0;
-  *valp = *valp >> 4;
-  return error;
-}
-
-static int
-Operand_brall_decode (uint32 *valp)
-{
-  *valp = *valp << 4;
-  return 0;
-}
-
-static int
-Operand_brall_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~(0 << 4)) != 0;
-  *valp = *valp >> 4;
-  return error;
-}
-
-static int
-Operand_tp7_decode (uint32 *valp)
-{
-  unsigned tp7_0, t_0;
-  t_0 = *valp & 0xf;
-  tp7_0 = t_0 + 0x7;
-  *valp = tp7_0;
-  return 0;
-}
-
-static int
-Operand_tp7_encode (uint32 *valp)
-{
-  unsigned t_0, tp7_0;
-  tp7_0 = *valp;
-  t_0 = (tp7_0 - 0x7) & 0xf;
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_xt_wbr15_label_decode (uint32 *valp)
-{
-  unsigned xt_wbr15_label_0, xt_wbr15_imm_0;
-  xt_wbr15_imm_0 = *valp & 0x7fff;
-  xt_wbr15_label_0 = 0x4 + (((int) xt_wbr15_imm_0 << 17) >> 17);
-  *valp = xt_wbr15_label_0;
-  return 0;
-}
-
-static int
-Operand_xt_wbr15_label_encode (uint32 *valp)
-{
-  unsigned xt_wbr15_imm_0, xt_wbr15_label_0;
-  xt_wbr15_label_0 = *valp;
-  xt_wbr15_imm_0 = (xt_wbr15_label_0 - 0x4) & 0x7fff;
-  *valp = xt_wbr15_imm_0;
-  return 0;
-}
-
-static int
 Operand_xt_wbr15_label_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -10342,26 +10416,6 @@ Operand_xt_wbr15_label_rtoa (uint32 *valp, uint32 pc)
 }
 
 static int
-Operand_xt_wbr18_label_decode (uint32 *valp)
-{
-  unsigned xt_wbr18_label_0, xt_wbr18_imm_0;
-  xt_wbr18_imm_0 = *valp & 0x3ffff;
-  xt_wbr18_label_0 = 0x4 + (((int) xt_wbr18_imm_0 << 14) >> 14);
-  *valp = xt_wbr18_label_0;
-  return 0;
-}
-
-static int
-Operand_xt_wbr18_label_encode (uint32 *valp)
-{
-  unsigned xt_wbr18_imm_0, xt_wbr18_label_0;
-  xt_wbr18_label_0 = *valp;
-  xt_wbr18_imm_0 = (xt_wbr18_label_0 - 0x4) & 0x3ffff;
-  *valp = xt_wbr18_imm_0;
-  return 0;
-}
-
-static int
 Operand_xt_wbr18_label_ator (uint32 *valp, uint32 pc)
 {
   *valp -= pc;
@@ -10375,481 +10429,323 @@ Operand_xt_wbr18_label_rtoa (uint32 *valp, uint32 pc)
   return 0;
 }
 
-static int
-Operand_ae_samt32_decode (uint32 *valp)
-{
-  unsigned ae_samt32_0, ftsf14_0;
-  ftsf14_0 = *valp & 0x1f;
-  ae_samt32_0 = (0 << 5) | ftsf14_0;
-  *valp = ae_samt32_0;
-  return 0;
-}
-
-static int
-Operand_ae_samt32_encode (uint32 *valp)
-{
-  unsigned ftsf14_0, ae_samt32_0;
-  ae_samt32_0 = *valp;
-  ftsf14_0 = (ae_samt32_0 & 0x1f);
-  *valp = ftsf14_0;
-  return 0;
-}
-
-static int
-Operand_pr0_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_pr0_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x7) != 0;
-  return error;
-}
-
-static int
-Operand_qr0_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_qr0_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x3) != 0;
-  return error;
-}
-
-static int
-Operand_ae_lsimm16_decode (uint32 *valp)
-{
-  unsigned ae_lsimm16_0, t_0;
-  t_0 = *valp & 0xf;
-  ae_lsimm16_0 = (((int) t_0 << 28) >> 28) << 1;
-  *valp = ae_lsimm16_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm16_encode (uint32 *valp)
-{
-  unsigned t_0, ae_lsimm16_0;
-  ae_lsimm16_0 = *valp;
-  t_0 = ((ae_lsimm16_0 >> 1) & 0xf);
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm32_decode (uint32 *valp)
-{
-  unsigned ae_lsimm32_0, t_0;
-  t_0 = *valp & 0xf;
-  ae_lsimm32_0 = (((int) t_0 << 28) >> 28) << 2;
-  *valp = ae_lsimm32_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm32_encode (uint32 *valp)
-{
-  unsigned t_0, ae_lsimm32_0;
-  ae_lsimm32_0 = *valp;
-  t_0 = ((ae_lsimm32_0 >> 2) & 0xf);
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm64_decode (uint32 *valp)
-{
-  unsigned ae_lsimm64_0, t_0;
-  t_0 = *valp & 0xf;
-  ae_lsimm64_0 = (((int) t_0 << 28) >> 28) << 3;
-  *valp = ae_lsimm64_0;
-  return 0;
-}
-
-static int
-Operand_ae_lsimm64_encode (uint32 *valp)
-{
-  unsigned t_0, ae_lsimm64_0;
-  ae_lsimm64_0 = *valp;
-  t_0 = ((ae_lsimm64_0 >> 3) & 0xf);
-  *valp = t_0;
-  return 0;
-}
-
-static int
-Operand_ae_samt64_decode (uint32 *valp)
-{
-  unsigned ae_samt64_0, ae_samt_s_t_0;
-  ae_samt_s_t_0 = *valp & 0x3f;
-  ae_samt64_0 = (0 << 6) | ae_samt_s_t_0;
-  *valp = ae_samt64_0;
-  return 0;
-}
-
-static int
-Operand_ae_samt64_encode (uint32 *valp)
-{
-  unsigned ae_samt_s_t_0, ae_samt64_0;
-  ae_samt64_0 = *valp;
-  ae_samt_s_t_0 = (ae_samt64_0 & 0x3f);
-  *valp = ae_samt_s_t_0;
-  return 0;
-}
-
-static int
-Operand_ae_ohba_decode (uint32 *valp)
-{
-  unsigned ae_ohba_0, op1_0;
-  op1_0 = *valp & 0xf;
-  ae_ohba_0 = (0 << 5) | (((((op1_0 & 0xf))) == 0) << 4) | ((op1_0 & 0xf));
-  *valp = ae_ohba_0;
-  return 0;
-}
-
-static int
-Operand_ae_ohba_encode (uint32 *valp)
-{
-  unsigned op1_0, ae_ohba_0;
-  ae_ohba_0 = *valp;
-  op1_0 = (ae_ohba_0 & 0xf);
-  *valp = op1_0;
-  return 0;
-}
-
-static int
-Operand_pr_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_pr_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x7) != 0;
-  return error;
-}
-
-static int
-Operand_qr0_rw_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_qr0_rw_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x3) != 0;
-  return error;
-}
-
-static int
-Operand_qr1_w_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_qr1_w_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x3) != 0;
-  return error;
-}
-
-static int
-Operand_ps_decode (uint32 *valp ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static int
-Operand_ps_encode (uint32 *valp)
-{
-  int error;
-  error = (*valp & ~0x7) != 0;
-  return error;
-}
-
 static xtensa_operand_internal operands[] = {
   { "soffsetx4", FIELD_offset, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_soffsetx4_encode, Operand_soffsetx4_decode,
+    OperandSem_opnd_sem_soffsetx4_encode, OperandSem_opnd_sem_soffsetx4_decode,
     Operand_soffsetx4_ator, Operand_soffsetx4_rtoa },
   { "uimm12x8", FIELD_imm12, -1, 0,
     0,
-    Operand_uimm12x8_encode, Operand_uimm12x8_decode,
+    OperandSem_opnd_sem_uimm12x8_encode, OperandSem_opnd_sem_uimm12x8_decode,
     0, 0 },
   { "simm4", FIELD_mn, -1, 0,
     0,
-    Operand_simm4_encode, Operand_simm4_decode,
+    OperandSem_opnd_sem_simm4_encode, OperandSem_opnd_sem_simm4_decode,
     0, 0 },
   { "arr", FIELD_r, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_arr_encode, Operand_arr_decode,
+    OperandSem_opnd_sem_AR_encode, OperandSem_opnd_sem_AR_decode,
     0, 0 },
   { "ars", FIELD_s, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_ars_encode, Operand_ars_decode,
+    OperandSem_opnd_sem_AR_encode, OperandSem_opnd_sem_AR_decode,
     0, 0 },
   { "*ars_invisible", FIELD_s, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ars_encode, Operand_ars_decode,
+    OperandSem_opnd_sem_AR_encode, OperandSem_opnd_sem_AR_decode,
     0, 0 },
   { "art", FIELD_t, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_art_encode, Operand_art_decode,
+    OperandSem_opnd_sem_AR_encode, OperandSem_opnd_sem_AR_decode,
     0, 0 },
   { "ar0", FIELD__ar0, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ar0_encode, Operand_ar0_decode,
+    OperandSem_opnd_sem_AR_0_encode, OperandSem_opnd_sem_AR_0_decode,
     0, 0 },
   { "ar4", FIELD__ar4, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ar4_encode, Operand_ar4_decode,
+    OperandSem_opnd_sem_AR_1_encode, OperandSem_opnd_sem_AR_1_decode,
     0, 0 },
   { "ar8", FIELD__ar8, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ar8_encode, Operand_ar8_decode,
+    OperandSem_opnd_sem_AR_2_encode, OperandSem_opnd_sem_AR_2_decode,
     0, 0 },
   { "ar12", FIELD__ar12, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_ar12_encode, Operand_ar12_decode,
+    OperandSem_opnd_sem_AR_3_encode, OperandSem_opnd_sem_AR_3_decode,
     0, 0 },
   { "ars_entry", FIELD_s, REGFILE_AR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_ars_entry_encode, Operand_ars_entry_decode,
+    OperandSem_opnd_sem_AR_4_encode, OperandSem_opnd_sem_AR_4_decode,
     0, 0 },
   { "immrx4", FIELD_r, -1, 0,
     0,
-    Operand_immrx4_encode, Operand_immrx4_decode,
+    OperandSem_opnd_sem_immrx4_encode, OperandSem_opnd_sem_immrx4_decode,
     0, 0 },
   { "lsi4x4", FIELD_r, -1, 0,
     0,
-    Operand_lsi4x4_encode, Operand_lsi4x4_decode,
+    OperandSem_opnd_sem_lsi4x4_encode, OperandSem_opnd_sem_lsi4x4_decode,
     0, 0 },
   { "simm7", FIELD_imm7, -1, 0,
     0,
-    Operand_simm7_encode, Operand_simm7_decode,
+    OperandSem_opnd_sem_simm7_encode, OperandSem_opnd_sem_simm7_decode,
     0, 0 },
   { "uimm6", FIELD_imm6, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_uimm6_encode, Operand_uimm6_decode,
+    OperandSem_opnd_sem_uimm6_encode, OperandSem_opnd_sem_uimm6_decode,
     Operand_uimm6_ator, Operand_uimm6_rtoa },
   { "ai4const", FIELD_t, -1, 0,
     0,
-    Operand_ai4const_encode, Operand_ai4const_decode,
+    OperandSem_opnd_sem_ai4const_encode, OperandSem_opnd_sem_ai4const_decode,
     0, 0 },
   { "b4const", FIELD_r, -1, 0,
     0,
-    Operand_b4const_encode, Operand_b4const_decode,
+    OperandSem_opnd_sem_b4const_encode, OperandSem_opnd_sem_b4const_decode,
     0, 0 },
   { "b4constu", FIELD_r, -1, 0,
     0,
-    Operand_b4constu_encode, Operand_b4constu_decode,
+    OperandSem_opnd_sem_b4constu_encode, OperandSem_opnd_sem_b4constu_decode,
     0, 0 },
   { "uimm8", FIELD_imm8, -1, 0,
     0,
-    Operand_uimm8_encode, Operand_uimm8_decode,
+    OperandSem_opnd_sem_uimm8_encode, OperandSem_opnd_sem_uimm8_decode,
     0, 0 },
   { "uimm8x2", FIELD_imm8, -1, 0,
     0,
-    Operand_uimm8x2_encode, Operand_uimm8x2_decode,
+    OperandSem_opnd_sem_uimm8x2_encode, OperandSem_opnd_sem_uimm8x2_decode,
     0, 0 },
   { "uimm8x4", FIELD_imm8, -1, 0,
     0,
-    Operand_uimm8x4_encode, Operand_uimm8x4_decode,
+    OperandSem_opnd_sem_uimm8x4_encode, OperandSem_opnd_sem_uimm8x4_decode,
     0, 0 },
   { "uimm4x16", FIELD_op2, -1, 0,
     0,
-    Operand_uimm4x16_encode, Operand_uimm4x16_decode,
+    OperandSem_opnd_sem_uimm4x16_encode, OperandSem_opnd_sem_uimm4x16_decode,
+    0, 0 },
+  { "uimmrx4", FIELD_r, -1, 0,
+    0,
+    OperandSem_opnd_sem_lsi4x4_encode, OperandSem_opnd_sem_lsi4x4_decode,
     0, 0 },
   { "simm8", FIELD_imm8, -1, 0,
     0,
-    Operand_simm8_encode, Operand_simm8_decode,
+    OperandSem_opnd_sem_simm8_encode, OperandSem_opnd_sem_simm8_decode,
     0, 0 },
   { "simm8x256", FIELD_imm8, -1, 0,
     0,
-    Operand_simm8x256_encode, Operand_simm8x256_decode,
+    OperandSem_opnd_sem_simm8x256_encode, OperandSem_opnd_sem_simm8x256_decode,
     0, 0 },
   { "simm12b", FIELD_imm12b, -1, 0,
     0,
-    Operand_simm12b_encode, Operand_simm12b_decode,
+    OperandSem_opnd_sem_simm12b_encode, OperandSem_opnd_sem_simm12b_decode,
     0, 0 },
   { "msalp32", FIELD_sal, -1, 0,
     0,
-    Operand_msalp32_encode, Operand_msalp32_decode,
+    OperandSem_opnd_sem_msalp32_encode, OperandSem_opnd_sem_msalp32_decode,
     0, 0 },
   { "op2p1", FIELD_op2, -1, 0,
     0,
-    Operand_op2p1_encode, Operand_op2p1_decode,
+    OperandSem_opnd_sem_op2p1_encode, OperandSem_opnd_sem_op2p1_decode,
     0, 0 },
   { "label8", FIELD_imm8, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_label8_encode, Operand_label8_decode,
+    OperandSem_opnd_sem_label8_encode, OperandSem_opnd_sem_label8_decode,
     Operand_label8_ator, Operand_label8_rtoa },
   { "ulabel8", FIELD_imm8, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_ulabel8_encode, Operand_ulabel8_decode,
+    OperandSem_opnd_sem_ulabel8_encode, OperandSem_opnd_sem_ulabel8_decode,
     Operand_ulabel8_ator, Operand_ulabel8_rtoa },
   { "label12", FIELD_imm12, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_label12_encode, Operand_label12_decode,
+    OperandSem_opnd_sem_label12_encode, OperandSem_opnd_sem_label12_decode,
     Operand_label12_ator, Operand_label12_rtoa },
   { "soffset", FIELD_offset, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_soffset_encode, Operand_soffset_decode,
+    OperandSem_opnd_sem_soffset_encode, OperandSem_opnd_sem_soffset_decode,
     Operand_soffset_ator, Operand_soffset_rtoa },
   { "uimm16x4", FIELD_imm16, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_uimm16x4_encode, Operand_uimm16x4_decode,
+    OperandSem_opnd_sem_uimm16x4_encode, OperandSem_opnd_sem_uimm16x4_decode,
     Operand_uimm16x4_ator, Operand_uimm16x4_rtoa },
+  { "bbi", FIELD_bbi, -1, 0,
+    0,
+    OperandSem_opnd_sem_bbi_encode, OperandSem_opnd_sem_bbi_decode,
+    0, 0 },
+  { "sae", FIELD_sae, -1, 0,
+    0,
+    OperandSem_opnd_sem_bbi_encode, OperandSem_opnd_sem_bbi_decode,
+    0, 0 },
+  { "sas", FIELD_sas, -1, 0,
+    0,
+    OperandSem_opnd_sem_bbi_encode, OperandSem_opnd_sem_bbi_decode,
+    0, 0 },
+  { "sargt", FIELD_sargt, -1, 0,
+    0,
+    OperandSem_opnd_sem_bbi_encode, OperandSem_opnd_sem_bbi_decode,
+    0, 0 },
+  { "s", FIELD_s, -1, 0,
+    0,
+    OperandSem_opnd_sem_s_encode, OperandSem_opnd_sem_s_decode,
+    0, 0 },
   { "immt", FIELD_t, -1, 0,
     0,
-    Operand_immt_encode, Operand_immt_decode,
+    OperandSem_opnd_sem_immt_encode, OperandSem_opnd_sem_immt_decode,
     0, 0 },
   { "imms", FIELD_s, -1, 0,
     0,
-    Operand_imms_encode, Operand_imms_decode,
+    OperandSem_opnd_sem_immt_encode, OperandSem_opnd_sem_immt_decode,
     0, 0 },
   { "bt", FIELD_t, REGFILE_BR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt_encode, Operand_bt_decode,
+    OperandSem_opnd_sem_BR_encode, OperandSem_opnd_sem_BR_decode,
     0, 0 },
   { "bs", FIELD_s, REGFILE_BR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs_encode, Operand_bs_decode,
+    OperandSem_opnd_sem_BR_encode, OperandSem_opnd_sem_BR_decode,
     0, 0 },
   { "br", FIELD_r, REGFILE_BR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br_encode, Operand_br_decode,
+    OperandSem_opnd_sem_BR_encode, OperandSem_opnd_sem_BR_decode,
     0, 0 },
   { "bt2", FIELD_t2, REGFILE_BR, 2,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt2_encode, Operand_bt2_decode,
+    OperandSem_opnd_sem_BR2_encode, OperandSem_opnd_sem_BR2_decode,
     0, 0 },
   { "bs2", FIELD_s2, REGFILE_BR, 2,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs2_encode, Operand_bs2_decode,
+    OperandSem_opnd_sem_BR2_encode, OperandSem_opnd_sem_BR2_decode,
     0, 0 },
   { "br2", FIELD_r2, REGFILE_BR, 2,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br2_encode, Operand_br2_decode,
+    OperandSem_opnd_sem_BR2_encode, OperandSem_opnd_sem_BR2_decode,
     0, 0 },
   { "bt4", FIELD_t4, REGFILE_BR, 4,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt4_encode, Operand_bt4_decode,
+    OperandSem_opnd_sem_BR4_encode, OperandSem_opnd_sem_BR4_decode,
     0, 0 },
   { "bs4", FIELD_s4, REGFILE_BR, 4,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs4_encode, Operand_bs4_decode,
+    OperandSem_opnd_sem_BR4_encode, OperandSem_opnd_sem_BR4_decode,
     0, 0 },
   { "br4", FIELD_r4, REGFILE_BR, 4,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br4_encode, Operand_br4_decode,
+    OperandSem_opnd_sem_BR4_encode, OperandSem_opnd_sem_BR4_decode,
     0, 0 },
   { "bt8", FIELD_t8, REGFILE_BR, 8,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt8_encode, Operand_bt8_decode,
+    OperandSem_opnd_sem_BR8_encode, OperandSem_opnd_sem_BR8_decode,
     0, 0 },
   { "bs8", FIELD_s8, REGFILE_BR, 8,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs8_encode, Operand_bs8_decode,
+    OperandSem_opnd_sem_BR8_encode, OperandSem_opnd_sem_BR8_decode,
     0, 0 },
   { "br8", FIELD_r8, REGFILE_BR, 8,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br8_encode, Operand_br8_decode,
+    OperandSem_opnd_sem_BR8_encode, OperandSem_opnd_sem_BR8_decode,
     0, 0 },
   { "bt16", FIELD__bt16, REGFILE_BR, 16,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bt16_encode, Operand_bt16_decode,
+    OperandSem_opnd_sem_BR16_encode, OperandSem_opnd_sem_BR16_decode,
     0, 0 },
   { "bs16", FIELD__bs16, REGFILE_BR, 16,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_bs16_encode, Operand_bs16_decode,
+    OperandSem_opnd_sem_BR16_encode, OperandSem_opnd_sem_BR16_decode,
     0, 0 },
   { "br16", FIELD__br16, REGFILE_BR, 16,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_br16_encode, Operand_br16_decode,
+    OperandSem_opnd_sem_BR16_encode, OperandSem_opnd_sem_BR16_decode,
     0, 0 },
   { "brall", FIELD__brall, REGFILE_BR, 16,
     XTENSA_OPERAND_IS_REGISTER | XTENSA_OPERAND_IS_INVISIBLE,
-    Operand_brall_encode, Operand_brall_decode,
+    OperandSem_opnd_sem_BR16_encode, OperandSem_opnd_sem_BR16_decode,
     0, 0 },
   { "tp7", FIELD_t, -1, 0,
     0,
-    Operand_tp7_encode, Operand_tp7_decode,
+    OperandSem_opnd_sem_tp7_encode, OperandSem_opnd_sem_tp7_decode,
     0, 0 },
   { "xt_wbr15_label", FIELD_xt_wbr15_imm, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_xt_wbr15_label_encode, Operand_xt_wbr15_label_decode,
+    OperandSem_opnd_sem_xt_wbr15_label_encode, OperandSem_opnd_sem_xt_wbr15_label_decode,
     Operand_xt_wbr15_label_ator, Operand_xt_wbr15_label_rtoa },
   { "xt_wbr18_label", FIELD_xt_wbr18_imm, -1, 0,
     XTENSA_OPERAND_IS_PCRELATIVE,
-    Operand_xt_wbr18_label_encode, Operand_xt_wbr18_label_decode,
+    OperandSem_opnd_sem_soffset_encode, OperandSem_opnd_sem_soffset_decode,
     Operand_xt_wbr18_label_ator, Operand_xt_wbr18_label_rtoa },
   { "ae_samt32", FIELD_ftsf14, -1, 0,
     0,
-    Operand_ae_samt32_encode, Operand_ae_samt32_decode,
+    OperandSem_opnd_sem_ae_samt32_encode, OperandSem_opnd_sem_ae_samt32_decode,
     0, 0 },
   { "pr0", FIELD_ftsf12, REGFILE_AE_PR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_pr0_encode, Operand_pr0_decode,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
     0, 0 },
   { "qr0", FIELD_ftsf13, REGFILE_AE_QR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_qr0_encode, Operand_qr0_decode,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
+    0, 0 },
+  { "mac_qr0", FIELD_ftsf13, REGFILE_AE_QR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
     0, 0 },
   { "ae_lsimm16", FIELD_t, -1, 0,
     0,
-    Operand_ae_lsimm16_encode, Operand_ae_lsimm16_decode,
+    OperandSem_opnd_sem_ae_lsimm16_encode, OperandSem_opnd_sem_ae_lsimm16_decode,
     0, 0 },
   { "ae_lsimm32", FIELD_t, -1, 0,
     0,
-    Operand_ae_lsimm32_encode, Operand_ae_lsimm32_decode,
+    OperandSem_opnd_sem_ae_lsimm32_encode, OperandSem_opnd_sem_ae_lsimm32_decode,
     0, 0 },
   { "ae_lsimm64", FIELD_t, -1, 0,
     0,
-    Operand_ae_lsimm64_encode, Operand_ae_lsimm64_decode,
+    OperandSem_opnd_sem_ae_lsimm64_encode, OperandSem_opnd_sem_ae_lsimm64_decode,
     0, 0 },
   { "ae_samt64", FIELD_ae_samt_s_t, -1, 0,
     0,
-    Operand_ae_samt64_encode, Operand_ae_samt64_decode,
+    OperandSem_opnd_sem_ae_samt64_encode, OperandSem_opnd_sem_ae_samt64_decode,
     0, 0 },
-  { "ae_ohba", FIELD_op1, -1, 0,
+  { "ae_ohba", FIELD_ae_fld_ohba, -1, 0,
     0,
-    Operand_ae_ohba_encode, Operand_ae_ohba_decode,
+    OperandSem_opnd_sem_ae_ohba_encode, OperandSem_opnd_sem_ae_ohba_decode,
+    0, 0 },
+  { "ae_ohba2", FIELD_ae_fld_ohba2, -1, 0,
+    0,
+    OperandSem_opnd_sem_ae_ohba_encode, OperandSem_opnd_sem_ae_ohba_decode,
     0, 0 },
   { "pr", FIELD_ae_r20, REGFILE_AE_PR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_pr_encode, Operand_pr_decode,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
+    0, 0 },
+  { "cvt_pr", FIELD_ae_r20, REGFILE_AE_PR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
     0, 0 },
   { "qr0_rw", FIELD_ae_r10, REGFILE_AE_QR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_qr0_rw_encode, Operand_qr0_rw_decode,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
+    0, 0 },
+  { "mac_qr0_rw", FIELD_ae_r10, REGFILE_AE_QR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
     0, 0 },
   { "qr1_w", FIELD_ae_r32, REGFILE_AE_QR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_qr1_w_encode, Operand_qr1_w_decode,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
+    0, 0 },
+  { "mac_qr1_w", FIELD_ae_r32, REGFILE_AE_QR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_QR_encode, OperandSem_opnd_sem_AE_QR_decode,
     0, 0 },
   { "ps", FIELD_ae_s20, REGFILE_AE_PR, 1,
     XTENSA_OPERAND_IS_REGISTER,
-    Operand_ps_encode, Operand_ps_decode,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
+    0, 0 },
+  { "alupppb_ps", FIELD_ae_s20, REGFILE_AE_PR, 1,
+    XTENSA_OPERAND_IS_REGISTER,
+    OperandSem_opnd_sem_AE_PR_encode, OperandSem_opnd_sem_AE_PR_decode,
     0, 0 },
   { "t", FIELD_t, -1, 0, 0, 0, 0, 0, 0 },
   { "bbi4", FIELD_bbi4, -1, 0, 0, 0, 0, 0, 0 },
-  { "bbi", FIELD_bbi, -1, 0, 0, 0, 0, 0, 0 },
   { "imm12", FIELD_imm12, -1, 0, 0, 0, 0, 0, 0 },
   { "imm8", FIELD_imm8, -1, 0, 0, 0, 0, 0, 0 },
-  { "s", FIELD_s, -1, 0, 0, 0, 0, 0, 0 },
   { "imm12b", FIELD_imm12b, -1, 0, 0, 0, 0, 0, 0 },
   { "imm16", FIELD_imm16, -1, 0, 0, 0, 0, 0, 0 },


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:08:59 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:08:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnP9-0004Hm-F2; Wed, 15 Apr 2020 19:08:59 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnP8-0004Hh-P3
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:58 +0000
X-Inumbo-ID: 8ef9595c-7f4c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8ef9595c-7f4c-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:08:58 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=H8lybuiNxvFLhJbWSSPrYGcT22Cq3mFZWaNde3rP0Qc=; b=GqNZBrTa9rtsIx338NMPTagnEb
 GY01xV+cwHPjsB1CPsyUbF6/clogjYgBvdSsWJSxtXFZJSKh7VLR3HLG9Xuh8eFKq+jyF+woOAmBj
 TtfG3toLZgw7sf5dwzqnlwEMsIXRcuN3CFMvgouI+NtRwsMNqt/EtZMhHBjbr2fNPFJ8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnP8-0002mF-0M
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:58 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnP7-0007yk-Vm
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:08:57 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] scsi: lsi: exit infinite loop while executing
 script (CVE-2019-12068)
Message-Id: <E1jOnP7-0007yk-Vm@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:08:57 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 051c9b3cbcb4beb42a6ed017c2146ec3e7a754fb
Author:     Paolo Bonzini <pbonzini@redhat.com>
AuthorDate: Wed Aug 14 17:35:21 2019 +0530
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 5 13:39:31 2019 -0600

    scsi: lsi: exit infinite loop while executing script (CVE-2019-12068)
    
    When executing script in lsi_execute_script(), the LSI scsi adapter
    emulator advances 's->dsp' index to read next opcode. This can lead
    to an infinite loop if the next opcode is empty. Move the existing
    loop exit after 10k iterations so that it covers no-op opcodes as
    well.
    
    Reported-by: Bugs SysSec <bugs-syssec@rub.de>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    (cherry picked from commit de594e47659029316bbf9391efb79da0a1a08e08)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/scsi/lsi53c895a.c | 41 +++++++++++++++++++++++++++--------------
 1 file changed, 27 insertions(+), 14 deletions(-)

diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index 10468c1ec1..72f7b59ab5 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -185,6 +185,9 @@ static const char *names[] = {
 /* Flag set if this is a tagged command.  */
 #define LSI_TAG_VALID     (1 << 16)
 
+/* Maximum instructions to process. */
+#define LSI_MAX_INSN    10000
+
 typedef struct lsi_request {
     SCSIRequest *req;
     uint32_t tag;
@@ -1132,7 +1135,21 @@ static void lsi_execute_script(LSIState *s)
 
     s->istat1 |= LSI_ISTAT1_SRUN;
 again:
-    insn_processed++;
+    if (++insn_processed > LSI_MAX_INSN) {
+        /* Some windows drivers make the device spin waiting for a memory
+           location to change.  If we have been executed a lot of code then
+           assume this is the case and force an unexpected device disconnect.
+           This is apparently sufficient to beat the drivers into submission.
+         */
+        if (!(s->sien0 & LSI_SIST0_UDC)) {
+            qemu_log_mask(LOG_GUEST_ERROR,
+                          "lsi_scsi: inf. loop with UDC masked");
+        }
+        lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);
+        lsi_disconnect(s);
+        trace_lsi_execute_script_stop();
+        return;
+    }
     insn = read_dword(s, s->dsp);
     if (!insn) {
         /* If we receive an empty opcode increment the DSP by 4 bytes
@@ -1569,19 +1586,7 @@ again:
             }
         }
     }
-    if (insn_processed > 10000 && s->waiting == LSI_NOWAIT) {
-        /* Some windows drivers make the device spin waiting for a memory
-           location to change.  If we have been executed a lot of code then
-           assume this is the case and force an unexpected device disconnect.
-           This is apparently sufficient to beat the drivers into submission.
-         */
-        if (!(s->sien0 & LSI_SIST0_UDC)) {
-            qemu_log_mask(LOG_GUEST_ERROR,
-                          "lsi_scsi: inf. loop with UDC masked");
-        }
-        lsi_script_scsi_interrupt(s, LSI_SIST0_UDC, 0);
-        lsi_disconnect(s);
-    } else if (s->istat1 & LSI_ISTAT1_SRUN && s->waiting == LSI_NOWAIT) {
+    if (s->istat1 & LSI_ISTAT1_SRUN && s->waiting == LSI_NOWAIT) {
         if (s->dcntl & LSI_DCNTL_SSM) {
             lsi_script_dma_interrupt(s, LSI_DSTAT_SSI);
         } else {
@@ -1969,6 +1974,10 @@ static void lsi_reg_writeb(LSIState *s, int offset, uint8_t val)
     case 0x2f: /* DSP[24:31] */
         s->dsp &= 0x00ffffff;
         s->dsp |= val << 24;
+        /*
+         * FIXME: if s->waiting != LSI_NOWAIT, this will only execute one
+         * instruction.  Is this correct?
+         */
         if ((s->dmode & LSI_DMODE_MAN) == 0
             && (s->istat1 & LSI_ISTAT1_SRUN) == 0)
             lsi_execute_script(s);
@@ -1987,6 +1996,10 @@ static void lsi_reg_writeb(LSIState *s, int offset, uint8_t val)
         break;
     case 0x3b: /* DCNTL */
         s->dcntl = val & ~(LSI_DCNTL_PFF | LSI_DCNTL_STD);
+        /*
+         * FIXME: if s->waiting != LSI_NOWAIT, this will only execute one
+         * instruction.  Is this correct?
+         */
         if ((val & LSI_DCNTL_STD) && (s->istat1 & LSI_ISTAT1_SRUN) == 0)
             lsi_execute_script(s);
         break;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:09:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:09:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnPJ-0004Io-Ha; Wed, 15 Apr 2020 19:09:09 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnPJ-0004Ii-0a
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:09 +0000
X-Inumbo-ID: 94fc039a-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 94fc039a-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:09:08 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=TcOF9JP9vozl1yeHzKC5z8H75Hr4kypk+TDP+G/axN0=; b=JDWA0n5W+5qXECwZiKXble7shm
 By3yTZbM42nOV/qwqpN76xsV9RgA/QMs/CR1weZMjTPgOnWbKDjT3tdqbGqS9lCIgIZFZx5H2jV/3
 DTCag7jrJ5fXlSx9LeKS5k8QcF1caf8uUC7uLFTPVNeepzueA9yQOnACBvrMxZ8n1U5Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPI-0002mh-2s
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:08 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPI-00080B-21
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:08 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] virtio-blk: Cancel the pending BH when the
 dataplane is reset
Message-Id: <E1jOnPI-00080B-21@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:09:08 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 01be50603be4f17af4318a7a3fe58dcc6dab1b31
Author:     Philippe Mathieu-Daudé <philmd@redhat.com>
AuthorDate: Fri Aug 16 19:15:03 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 5 13:43:41 2019 -0600

    virtio-blk: Cancel the pending BH when the dataplane is reset
    
    When 'system_reset' is called, the main loop clear the memory
    region cache before the BH has a chance to execute. Later when
    the deferred function is called, some assumptions that were
    made when scheduling them are no longer true when they actually
    execute.
    
    This is what happens using a virtio-blk device (fresh RHEL7.8 install):
    
     $ (sleep 12.3; echo system_reset; sleep 12.3; echo system_reset; sleep 1; echo q) \
       | qemu-system-x86_64 -m 4G -smp 8 -boot menu=on \
         -device virtio-blk-pci,id=image1,drive=drive_image1 \
         -drive file=/var/lib/libvirt/images/rhel78.qcow2,if=none,id=drive_image1,format=qcow2,cache=none \
         -device virtio-net-pci,netdev=net0,id=nic0,mac=52:54:00:c4:e7:84 \
         -netdev tap,id=net0,script=/bin/true,downscript=/bin/true,vhost=on \
         -monitor stdio -serial null -nographic
      (qemu) system_reset
      (qemu) system_reset
      (qemu) qemu-system-x86_64: hw/virtio/virtio.c:225: vring_get_region_caches: Assertion `caches != NULL' failed.
      Aborted
    
      (gdb) bt
      Thread 1 (Thread 0x7f109c17b680 (LWP 10939)):
      #0  0x00005604083296d1 in vring_get_region_caches (vq=0x56040a24bdd0) at hw/virtio/virtio.c:227
      #1  0x000056040832972b in vring_avail_flags (vq=0x56040a24bdd0) at hw/virtio/virtio.c:235
      #2  0x000056040832d13d in virtio_should_notify (vdev=0x56040a240630, vq=0x56040a24bdd0) at hw/virtio/virtio.c:1648
      #3  0x000056040832d1f8 in virtio_notify_irqfd (vdev=0x56040a240630, vq=0x56040a24bdd0) at hw/virtio/virtio.c:1662
      #4  0x00005604082d213d in notify_guest_bh (opaque=0x56040a243ec0) at hw/block/dataplane/virtio-blk.c:75
      #5  0x000056040883dc35 in aio_bh_call (bh=0x56040a243f10) at util/async.c:90
      #6  0x000056040883dccd in aio_bh_poll (ctx=0x560409161980) at util/async.c:118
      #7  0x0000560408842af7 in aio_dispatch (ctx=0x560409161980) at util/aio-posix.c:460
      #8  0x000056040883e068 in aio_ctx_dispatch (source=0x560409161980, callback=0x0, user_data=0x0) at util/async.c:261
      #9  0x00007f10a8fca06d in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
      #10 0x0000560408841445 in glib_pollfds_poll () at util/main-loop.c:215
      #11 0x00005604088414bf in os_host_main_loop_wait (timeout=0) at util/main-loop.c:238
      #12 0x00005604088415c4 in main_loop_wait (nonblocking=0) at util/main-loop.c:514
      #13 0x0000560408416b1e in main_loop () at vl.c:1923
      #14 0x000056040841e0e8 in main (argc=20, argv=0x7ffc2c3f9c58, envp=0x7ffc2c3f9d00) at vl.c:4578
    
    Fix this by cancelling the BH when the virtio dataplane is stopped.
    
    [This is version of the patch was modified as discussed with Philippe on
    the mailing list thread.
    --Stefan]
    
    Reported-by: Yihuang Yu <yihyu@redhat.com>
    Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
    Fixes: https://bugs.launchpad.net/qemu/+bug/1839428
    Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Message-Id: <20190816171503.24761-1-philmd@redhat.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    (cherry picked from commit ebb6ff25cd888a52a64a9adc3692541c6d1d9a42)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/block/dataplane/virtio-blk.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index 158c78f852..5fea76df85 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -297,6 +297,9 @@ void virtio_blk_data_plane_stop(VirtIODevice *vdev)
         virtio_bus_cleanup_host_notifier(VIRTIO_BUS(qbus), i);
     }
 
+    qemu_bh_cancel(s->bh);
+    notify_guest_bh(s); /* final chance to notify guest */
+
     /* Clean up guest notifier (irq) */
     k->set_guest_notifiers(qbus->parent, nvqs, false);
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:09:19 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:09:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnPT-0004Js-Jj; Wed, 15 Apr 2020 19:09:19 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnPS-0004Jk-Pn
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:18 +0000
X-Inumbo-ID: 9b0179f0-7f4c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9b0179f0-7f4c-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:09:18 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2KJGJFglgXu9ordjCErsfbcgHdjdWGHEmVe55lbe10c=; b=GvbwydLR15aOsXNMae5dk9zTQb
 H8ROeqZEaR0JTZVO/cAiCyXYtE1Ub5fFPl/0iw4jgkQSboHT4DrYRQ7xjo6ACHq1IqSnUvpV8BObV
 KiXSiVVYtylCYlWv5ZpWahd/+cN7xMSkMH89JEmPJUqxfwvrvtQrRX3l9VocnNBZcEJg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPS-0002ms-6M
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:18 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPS-00081g-5E
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:18 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] qcow2: Fix QCOW2_COMPRESSED_SECTOR_MASK
Message-Id: <E1jOnPS-00081g-5E@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:09:18 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 405deba14f6b61b9c557484b46e863308c8cf373
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Oct 28 17:18:40 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Mon Nov 11 15:40:36 2019 -0600

    qcow2: Fix QCOW2_COMPRESSED_SECTOR_MASK
    
    Masks for L2 table entries should have 64 bit.
    
    Fixes: b6c246942b14d3e0dec46a6c5868ed84e7dbea19
    Buglink: https://bugs.launchpad.net/qemu/+bug/1850000
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191028161841.1198-2-mreitz@redhat.com
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 24552feb6ae2f615b76c2b95394af43901f75046)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/qcow2.h b/block/qcow2.h
index fc1b0d3c1e..359197f89f 100644
--- a/block/qcow2.h
+++ b/block/qcow2.h
@@ -77,7 +77,7 @@
 
 /* Defined in the qcow2 spec (compressed cluster descriptor) */
 #define QCOW2_COMPRESSED_SECTOR_SIZE 512U
-#define QCOW2_COMPRESSED_SECTOR_MASK (~(QCOW2_COMPRESSED_SECTOR_SIZE - 1))
+#define QCOW2_COMPRESSED_SECTOR_MASK (~(QCOW2_COMPRESSED_SECTOR_SIZE - 1ULL))
 
 /* Must be at least 2 to cover COW */
 #define MIN_L2_CACHE_SIZE 2 /* cache entries */
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:09:29 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:09:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnPd-0004Lf-Lh; Wed, 15 Apr 2020 19:09:29 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnPd-0004LV-71
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:29 +0000
X-Inumbo-ID: a10516cc-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a10516cc-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:09:28 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=NeGezljsgRu5kucA30vld+onCcJU23X2rIQuQoT+V4A=; b=0DF37TB9Ll8Pirr8ZqWfB/Q6t4
 ol05mdvQf8t7hjjgVJtDO8CrYo2td79XRUjarBDrTZlNOZadYM1zKz39TX8Q9DKl4giT7kao3weB4
 Y3eNHCGkLMOG05mawFMiEA3iZxvJjlhrlghAkTyG/cpcqHOgaFu4OgJDh8Fh1+GoYQsI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPc-0002n2-97
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:28 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPc-00082Z-8C
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:28 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Add test for 4G+ compressed qcow2
 write
Message-Id: <E1jOnPc-00082Z-8C@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:09:28 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 15f5e8c3675b9eb16e2413d56017c047533407bb
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Mon Oct 28 17:18:41 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:35:07 2019 -0600

    iotests: Add test for 4G+ compressed qcow2 write
    
    Test what qemu-img check says about an image after one has written
    compressed data to an offset above 4 GB.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191028161841.1198-3-mreitz@redhat.com
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit b7cd2c11f76d27930f53d3cf26d7b695c78d613b)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/272     | 79 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/272.out | 10 ++++++
 tests/qemu-iotests/group   |  1 +
 3 files changed, 90 insertions(+)

diff --git a/tests/qemu-iotests/272 b/tests/qemu-iotests/272
new file mode 100755
index 0000000000..c2f782d47b
--- /dev/null
+++ b/tests/qemu-iotests/272
@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+#
+# Test compressed write to a qcow2 image at an offset above 4 GB
+#
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+
+seq=$(basename "$0")
+echo "QA output created by $seq"
+
+status=1	# failure is the default!
+
+_cleanup()
+{
+    _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+# This is a qcow2 regression test
+_supported_fmt qcow2
+_supported_proto file
+
+# External data files do not support compression;
+# We need an exact cluster size (2M) and refcount width (2) so we can
+# get this test quickly over with; and this in turn require
+# compat=1.1
+_unsupported_imgopts data_file cluster_size refcount_bits 'compat=0.10'
+
+# The idea is: Create an empty file, mark the first 4 GB as used, then
+# do a compressed write that thus must be put beyond 4 GB.
+# (This used to fail because the compressed sector mask was just a
+# 32 bit mask, so qemu-img check will count a cluster before 4 GB as
+# referenced twice.)
+
+# We would like to use refcount_bits=1 here, but then qemu-img check
+# will throw an error when trying to count a cluster as referenced
+# twice.
+_make_test_img -o cluster_size=2M,refcount_bits=2 64M
+
+reft_offs=$(peek_file_be "$TEST_IMG" 48 8)
+refb_offs=$(peek_file_be "$TEST_IMG" $reft_offs 8)
+
+# We want to cover 4 GB, those are 2048 clusters, equivalent to
+# 4096 bit = 512 B.
+truncate -s 4G "$TEST_IMG"
+for ((in_refb_offs = 0; in_refb_offs < 512; in_refb_offs += 8)); do
+    poke_file "$TEST_IMG" $((refb_offs + in_refb_offs)) \
+        '\x55\x55\x55\x55\x55\x55\x55\x55'
+done
+
+$QEMU_IO -c 'write -c -P 42 0 2M' "$TEST_IMG" | _filter_qemu_io
+
+echo
+echo '--- Check ---'
+
+# This should only print the leaked clusters in the first 4 GB
+_check_test_img | grep -v '^Leaked cluster '
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
diff --git a/tests/qemu-iotests/272.out b/tests/qemu-iotests/272.out
new file mode 100644
index 0000000000..35698b0e73
--- /dev/null
+++ b/tests/qemu-iotests/272.out
@@ -0,0 +1,10 @@
+QA output created by 272
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
+wrote 2097152/2097152 bytes at offset 0
+2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+
+--- Check ---
+
+2044 leaked clusters were found on the image.
+This means waste of disk space, but no harm to data.
+*** done
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 7629e8ea17..3070d160d5 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -275,3 +275,4 @@
 266 rw quick
 267 rw auto quick snapshot
 270 rw backing quick
+272 rw
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:09:39 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:09:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnPn-0004MZ-Nm; Wed, 15 Apr 2020 19:09:39 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnPm-0004MS-WA
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:39 +0000
X-Inumbo-ID: a707126e-7f4c-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a707126e-7f4c-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 19:09:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0SOnlynDceU9xrCvM3zMWR/HPOQvCmbwNzBjxPEt9pY=; b=P6bSmSeRwOYKJaKfDd+NjG57r+
 aaolgOj+RXPpvWyzQcRjzIJCovzyrF/e3/7Z6zx2Hx+bXKIwluayzChhnMWXaR5tk/Ir0J1MpRXw1
 egYADfTDUuZyB2QPvGe6shziZ/RpPtPxEWSafU6jOLIZJdSD4DUqWqUcDvQM8tWok8Mw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPm-0002nK-Bi
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:38 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPm-00083Y-Av
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:38 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] iotests: Add peek_file* functions
Message-Id: <E1jOnPm-00083Y-Av@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:09:38 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b156178553341ab24dcc14efdb7b681375099462
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Oct 11 17:28:13 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:33 2019 -0600

    iotests: Add peek_file* functions
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Message-id: 20191011152814.14791-16-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit fc8ba423ca6b37bee56ec9dc339b44043c39553d)
    *prereq for 570542ec
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/qemu-iotests/common.rc | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
index 5502c3da2f..78decfd5d5 100644
--- a/tests/qemu-iotests/common.rc
+++ b/tests/qemu-iotests/common.rc
@@ -53,6 +53,26 @@ poke_file()
     printf "$3" | dd "of=$1" bs=1 "seek=$2" conv=notrunc &>/dev/null
 }
 
+# peek_file_le 'test.img' 512 2 => 65534
+peek_file_le()
+{
+    # Wrap in echo $() to strip spaces
+    echo $(od -j"$2" -N"$3" --endian=little -An -vtu"$3" "$1")
+}
+
+# peek_file_be 'test.img' 512 2 => 65279
+peek_file_be()
+{
+    # Wrap in echo $() to strip spaces
+    echo $(od -j"$2" -N"$3" --endian=big -An -vtu"$3" "$1")
+}
+
+# peek_file_raw 'test.img' 512 2 => '\xff\xfe'
+peek_file_raw()
+{
+    dd if="$1" bs=1 skip="$2" count="$3" status=none
+}
+
 
 if ! . ./common.config
     then
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:09:49 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:09:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnPx-0004NR-Q4; Wed, 15 Apr 2020 19:09:49 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnPx-0004NJ-7g
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:49 +0000
X-Inumbo-ID: ad10dc80-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ad10dc80-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:09:48 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Paf5LGPzySG6PkVkIGc0hEPntNeom/E6+3HL4SkUIrA=; b=hBW41ur/gqB/0Vx2oL3sI7BkVd
 sAFOV0dgDKq3H9Q8qG9Nh9olXwhKM+g8olZJ9nUQX4MrJ5TuqXkKq/D0z7P+Je4/IkLSkrBBe8RTh
 1yAXo/bLTZVdtnjZ08Axf1l1z71W/JpTvMu4IF7TFR/asyZ2FYmZUz+4TLE2CeJ+VEOs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPw-0002o9-EA
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:48 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnPw-00084j-DM
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:48 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] qcow2-bitmap: Fix uint64_t left-shift overflow
Message-Id: <E1jOnPw-00084j-DM@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:09:48 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 40df4a1bf7520e0713273d6ebd5a3407b4d83267
Author:     Tuguoyi <tu.guoyi@h3c.com>
AuthorDate: Fri Nov 1 07:37:35 2019 +0000
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    qcow2-bitmap: Fix uint64_t left-shift overflow
    
    There are two issues in In check_constraints_on_bitmap(),
    1) The sanity check on the granularity will cause uint64_t
    integer left-shift overflow when cluster_size is 2M and the
    granularity is BIGGER than 32K.
    2) The way to calculate image size that the maximum bitmap
    supported can map to is a bit incorrect.
    This patch fix it by add a helper function to calculate the
    number of bytes needed by a normal bitmap in image and compare
    it to the maximum bitmap bytes supported by qemu.
    
    Fixes: 5f72826e7fc62167cf3a
    Signed-off-by: Guoyi Tu <tu.guoyi@h3c.com>
    Message-id: 4ba40cd1e7ee4a708b40899952e49f22@h3c.com
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 570542ecb11e04b61ef4b3f4d0965a6915232a88)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/qcow2-bitmap.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c
index b2487101ed..65034da1c0 100644
--- a/block/qcow2-bitmap.c
+++ b/block/qcow2-bitmap.c
@@ -142,6 +142,13 @@ static int check_table_entry(uint64_t entry, int cluster_size)
     return 0;
 }
 
+static int64_t get_bitmap_bytes_needed(int64_t len, uint32_t granularity)
+{
+    int64_t num_bits = DIV_ROUND_UP(len, granularity);
+
+    return DIV_ROUND_UP(num_bits, 8);
+}
+
 static int check_constraints_on_bitmap(BlockDriverState *bs,
                                        const char *name,
                                        uint32_t granularity,
@@ -150,6 +157,7 @@ static int check_constraints_on_bitmap(BlockDriverState *bs,
     BDRVQcow2State *s = bs->opaque;
     int granularity_bits = ctz32(granularity);
     int64_t len = bdrv_getlength(bs);
+    int64_t bitmap_bytes;
 
     assert(granularity > 0);
     assert((granularity & (granularity - 1)) == 0);
@@ -171,9 +179,9 @@ static int check_constraints_on_bitmap(BlockDriverState *bs,
         return -EINVAL;
     }
 
-    if ((len > (uint64_t)BME_MAX_PHYS_SIZE << granularity_bits) ||
-        (len > (uint64_t)BME_MAX_TABLE_SIZE * s->cluster_size <<
-               granularity_bits))
+    bitmap_bytes = get_bitmap_bytes_needed(len, granularity);
+    if ((bitmap_bytes > (uint64_t)BME_MAX_PHYS_SIZE) ||
+        (bitmap_bytes > (uint64_t)BME_MAX_TABLE_SIZE * s->cluster_size))
     {
         error_setg(errp, "Too much space will be occupied by the bitmap. "
                    "Use larger granularity");
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:10:01 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:10:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnQ8-0004Og-U4; Wed, 15 Apr 2020 19:10:00 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnQ7-0004OX-BX
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:59 +0000
X-Inumbo-ID: b30a4c48-7f4c-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b30a4c48-7f4c-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 19:09:58 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ThWcG3qNroL+aEFeJ0GqQATyANNI2XN3NKtpu58JfKs=; b=ORrgvef0G+CVaqhcobuR3/pGNC
 C+p052OxS6jQ/kuct+tHVrW6Ptmoa41sV9eOhLESZzBJi7uXEmJpUWu8FErcxvZI0hX/83cqBgIYF
 2ahG42DLBMWhCx3gBy1aYbmgzM7DvjQxdsCgwgp8aGiYT7f7JWylqhTakXE5wI6xliDo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQ6-0002oI-Gk
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:58 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQ6-00085a-Fs
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:09:58 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] util/iov: introduce qemu_iovec_init_extended
Message-Id: <E1jOnQ6-00085a-Fs@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:09:58 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit cff024fe856ab36db3056ba4cb1d7cfa4c39795d
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Tue Jun 4 19:15:03 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    util/iov: introduce qemu_iovec_init_extended
    
    Introduce new initialization API, to create requests with padding. Will
    be used in the following patch. New API uses qemu_iovec_init_buf if
    resulting io vector has only one element, to avoid extra allocations.
    So, we need to update qemu_iovec_destroy to support destroying such
    QIOVs.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20190604161514.262241-2-vsementsov@virtuozzo.com
    Message-Id: <20190604161514.262241-2-vsementsov@virtuozzo.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    (cherry picked from commit d953169d4840f312d3b9a54952f4a7ccfcb3b311)
    *prereq for 292d06b9
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/qemu/iov.h |   7 ++++
 util/iov.c         | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 114 insertions(+), 5 deletions(-)

diff --git a/include/qemu/iov.h b/include/qemu/iov.h
index 48b45987b7..f3787a0cf7 100644
--- a/include/qemu/iov.h
+++ b/include/qemu/iov.h
@@ -199,6 +199,13 @@ static inline void *qemu_iovec_buf(QEMUIOVector *qiov)
 
 void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint);
 void qemu_iovec_init_external(QEMUIOVector *qiov, struct iovec *iov, int niov);
+void qemu_iovec_init_extended(
+        QEMUIOVector *qiov,
+        void *head_buf, size_t head_len,
+        QEMUIOVector *mid_qiov, size_t mid_offset, size_t mid_len,
+        void *tail_buf, size_t tail_len);
+void qemu_iovec_init_slice(QEMUIOVector *qiov, QEMUIOVector *source,
+                           size_t offset, size_t len);
 void qemu_iovec_add(QEMUIOVector *qiov, void *base, size_t len);
 void qemu_iovec_concat(QEMUIOVector *dst,
                        QEMUIOVector *src, size_t soffset, size_t sbytes);
diff --git a/util/iov.c b/util/iov.c
index 74e6ca8ed7..366ff9cdd1 100644
--- a/util/iov.c
+++ b/util/iov.c
@@ -354,6 +354,103 @@ void qemu_iovec_concat(QEMUIOVector *dst,
 }
 
 /*
+ * qiov_find_iov
+ *
+ * Return pointer to iovec structure, where byte at @offset in original vector
+ * @iov exactly is.
+ * Set @remaining_offset to be offset inside that iovec to the same byte.
+ */
+static struct iovec *iov_skip_offset(struct iovec *iov, size_t offset,
+                                     size_t *remaining_offset)
+{
+    while (offset > 0 && offset >= iov->iov_len) {
+        offset -= iov->iov_len;
+        iov++;
+    }
+    *remaining_offset = offset;
+
+    return iov;
+}
+
+/*
+ * qiov_slice
+ *
+ * Find subarray of iovec's, containing requested range. @head would
+ * be offset in first iov (returned by the function), @tail would be
+ * count of extra bytes in last iovec (returned iov + @niov - 1).
+ */
+static struct iovec *qiov_slice(QEMUIOVector *qiov,
+                                size_t offset, size_t len,
+                                size_t *head, size_t *tail, int *niov)
+{
+    struct iovec *iov, *end_iov;
+
+    assert(offset + len <= qiov->size);
+
+    iov = iov_skip_offset(qiov->iov, offset, head);
+    end_iov = iov_skip_offset(iov, *head + len, tail);
+
+    if (*tail > 0) {
+        assert(*tail < end_iov->iov_len);
+        *tail = end_iov->iov_len - *tail;
+        end_iov++;
+    }
+
+    *niov = end_iov - iov;
+
+    return iov;
+}
+
+/*
+ * Compile new iovec, combining @head_buf buffer, sub-qiov of @mid_qiov,
+ * and @tail_buf buffer into new qiov.
+ */
+void qemu_iovec_init_extended(
+        QEMUIOVector *qiov,
+        void *head_buf, size_t head_len,
+        QEMUIOVector *mid_qiov, size_t mid_offset, size_t mid_len,
+        void *tail_buf, size_t tail_len)
+{
+    size_t mid_head, mid_tail;
+    int total_niov, mid_niov = 0;
+    struct iovec *p, *mid_iov;
+
+    if (mid_len) {
+        mid_iov = qiov_slice(mid_qiov, mid_offset, mid_len,
+                             &mid_head, &mid_tail, &mid_niov);
+    }
+
+    total_niov = !!head_len + mid_niov + !!tail_len;
+    if (total_niov == 1) {
+        qemu_iovec_init_buf(qiov, NULL, 0);
+        p = &qiov->local_iov;
+    } else {
+        qiov->niov = qiov->nalloc = total_niov;
+        qiov->size = head_len + mid_len + tail_len;
+        p = qiov->iov = g_new(struct iovec, qiov->niov);
+    }
+
+    if (head_len) {
+        p->iov_base = head_buf;
+        p->iov_len = head_len;
+        p++;
+    }
+
+    if (mid_len) {
+        memcpy(p, mid_iov, mid_niov * sizeof(*p));
+        p[0].iov_base = (uint8_t *)p[0].iov_base + mid_head;
+        p[0].iov_len -= mid_head;
+        p[mid_niov - 1].iov_len -= mid_tail;
+        p += mid_niov;
+    }
+
+    if (tail_len) {
+        p->iov_base = tail_buf;
+        p->iov_len = tail_len;
+    }
+}
+
+/*
  * Check if the contents of the iovecs are all zero
  */
 bool qemu_iovec_is_zero(QEMUIOVector *qiov)
@@ -374,14 +471,19 @@ bool qemu_iovec_is_zero(QEMUIOVector *qiov)
     return true;
 }
 
+void qemu_iovec_init_slice(QEMUIOVector *qiov, QEMUIOVector *source,
+                           size_t offset, size_t len)
+{
+    qemu_iovec_init_extended(qiov, NULL, 0, source, offset, len, NULL, 0);
+}
+
 void qemu_iovec_destroy(QEMUIOVector *qiov)
 {
-    assert(qiov->nalloc != -1);
+    if (qiov->nalloc != -1) {
+        g_free(qiov->iov);
+    }
 
-    qemu_iovec_reset(qiov);
-    g_free(qiov->iov);
-    qiov->nalloc = 0;
-    qiov->iov = NULL;
+    memset(qiov, 0, sizeof(*qiov));
 }
 
 void qemu_iovec_reset(QEMUIOVector *qiov)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:10:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:10:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnQI-00057O-Vr; Wed, 15 Apr 2020 19:10:10 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnQH-00053i-Q7
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:09 +0000
X-Inumbo-ID: b90f3b08-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b90f3b08-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:10:08 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rvCjjoWIbG+nk28pxVInteX1jfTvDwIP0XNkoUT0CvI=; b=XG8KrbQ8dfjXLdx8Y7z9dtOhwx
 +8XrGpc8tFuK0sa2QfWlpInFjITKQmCfTMKBYNylzwZxZw3bN0tfF+Te6CnmsCVsY/YSRJq9jVwg2
 NS+r7xdAR0uB42PDo1KG0FP8XAcZLMuPsayoL4GBMlPs9ILvoCpUj/ZYImSv7N9p6CC8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQG-0002oe-JN
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:08 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQG-00086q-IU
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:08 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] util/iov: improve qemu_iovec_is_zero
Message-Id: <E1jOnQG-00086q-IU@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:10:08 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b3b76fc643912d2c86b13caff30a1151f2958702
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Tue Jun 4 19:15:04 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    util/iov: improve qemu_iovec_is_zero
    
    We'll need to check a part of qiov soon, so implement it now.
    
    Optimization with align down to 4 * sizeof(long) is dropped due to:
    1. It is strange: it aligns length of the buffer, but where is a
       guarantee that buffer pointer is aligned itself?
    2. buffer_is_zero() is a better place for optimizations and it has
       them.
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20190604161514.262241-3-vsementsov@virtuozzo.com
    Message-Id: <20190604161514.262241-3-vsementsov@virtuozzo.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    (cherry picked from commit f76889e7b947d896db51be8a4d9c941c2f70365a)
    *prereq for 292d06b9
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/io.c         |  2 +-
 include/qemu/iov.h |  2 +-
 util/iov.c         | 31 +++++++++++++++++++------------
 3 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/block/io.c b/block/io.c
index 06305c6ea6..dccf687acc 100644
--- a/block/io.c
+++ b/block/io.c
@@ -1715,7 +1715,7 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChild *child,
 
     if (!ret && bs->detect_zeroes != BLOCKDEV_DETECT_ZEROES_OPTIONS_OFF &&
         !(flags & BDRV_REQ_ZERO_WRITE) && drv->bdrv_co_pwrite_zeroes &&
-        qemu_iovec_is_zero(qiov)) {
+        qemu_iovec_is_zero(qiov, 0, qiov->size)) {
         flags |= BDRV_REQ_ZERO_WRITE;
         if (bs->detect_zeroes == BLOCKDEV_DETECT_ZEROES_OPTIONS_UNMAP) {
             flags |= BDRV_REQ_MAY_UNMAP;
diff --git a/include/qemu/iov.h b/include/qemu/iov.h
index f3787a0cf7..29957c8a72 100644
--- a/include/qemu/iov.h
+++ b/include/qemu/iov.h
@@ -212,7 +212,7 @@ void qemu_iovec_concat(QEMUIOVector *dst,
 size_t qemu_iovec_concat_iov(QEMUIOVector *dst,
                              struct iovec *src_iov, unsigned int src_cnt,
                              size_t soffset, size_t sbytes);
-bool qemu_iovec_is_zero(QEMUIOVector *qiov);
+bool qemu_iovec_is_zero(QEMUIOVector *qiov, size_t qiov_offeset, size_t bytes);
 void qemu_iovec_destroy(QEMUIOVector *qiov);
 void qemu_iovec_reset(QEMUIOVector *qiov);
 size_t qemu_iovec_to_buf(QEMUIOVector *qiov, size_t offset,
diff --git a/util/iov.c b/util/iov.c
index 366ff9cdd1..9ac0261853 100644
--- a/util/iov.c
+++ b/util/iov.c
@@ -451,23 +451,30 @@ void qemu_iovec_init_extended(
 }
 
 /*
- * Check if the contents of the iovecs are all zero
+ * Check if the contents of subrange of qiov data is all zeroes.
  */
-bool qemu_iovec_is_zero(QEMUIOVector *qiov)
+bool qemu_iovec_is_zero(QEMUIOVector *qiov, size_t offset, size_t bytes)
 {
-    int i;
-    for (i = 0; i < qiov->niov; i++) {
-        size_t offs = QEMU_ALIGN_DOWN(qiov->iov[i].iov_len, 4 * sizeof(long));
-        uint8_t *ptr = qiov->iov[i].iov_base;
-        if (offs && !buffer_is_zero(qiov->iov[i].iov_base, offs)) {
+    struct iovec *iov;
+    size_t current_offset;
+
+    assert(offset + bytes <= qiov->size);
+
+    iov = iov_skip_offset(qiov->iov, offset, &current_offset);
+
+    while (bytes) {
+        uint8_t *base = (uint8_t *)iov->iov_base + current_offset;
+        size_t len = MIN(iov->iov_len - current_offset, bytes);
+
+        if (!buffer_is_zero(base, len)) {
             return false;
         }
-        for (; offs < qiov->iov[i].iov_len; offs++) {
-            if (ptr[offs]) {
-                return false;
-            }
-        }
+
+        current_offset = 0;
+        bytes -= len;
+        iov++;
     }
+
     return true;
 }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:10:22 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:10:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnQU-00058a-1r; Wed, 15 Apr 2020 19:10:22 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnQS-00058N-CW
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:20 +0000
X-Inumbo-ID: bf1015f4-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bf1015f4-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:10:18 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=OSOOGAEr2Hk+gJrphM5xkEusVDu+9wTXSgWkpWdUjbs=; b=JyXh85MXK/eFgKpSRoq8bcDvoP
 FkpnK1iBL+GFVpWqgxS7dFAx73jCZBJ6K8/FChyap7s5uTejnxYWwCUWB4gBEneUhjcu1ngInSXJk
 4udJU5tHww2iWi5gp7hESyQjr9rD5j8Hhki5ic5f4iNl9KU8deyQ9RzLDscsZs2BHzQo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQQ-0002ok-M4
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:18 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQQ-00087Y-LC
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:18 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/io: refactor padding
Message-Id: <E1jOnQQ-00087Y-LC@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:10:18 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2e2ad02f2cecf419eaad0df982ceb5b41170cc7e
Author:     Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
AuthorDate: Tue Jun 4 19:15:05 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block/io: refactor padding
    
    We have similar padding code in bdrv_co_pwritev,
    bdrv_co_do_pwrite_zeroes and bdrv_co_preadv. Let's combine and unify
    it.
    
    [Squashed in Vladimir's qemu-iotests 077 fix
    --Stefan]
    
    Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
    Message-id: 20190604161514.262241-4-vsementsov@virtuozzo.com
    Message-Id: <20190604161514.262241-4-vsementsov@virtuozzo.com>
    Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
    (cherry picked from commit 7a3f542fbdfd799be4fa6f8b96dc8c1e6933fce4)
    *prereq for 292d06b9
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/io.c | 365 +++++++++++++++++++++++++++++++++----------------------------
 1 file changed, 200 insertions(+), 165 deletions(-)

diff --git a/block/io.c b/block/io.c
index dccf687acc..07d2d825c3 100644
--- a/block/io.c
+++ b/block/io.c
@@ -1408,28 +1408,177 @@ out:
 }
 
 /*
- * Handle a read request in coroutine context
+ * Request padding
+ *
+ *  |<---- align ----->|                     |<----- align ---->|
+ *  |<- head ->|<------------- bytes ------------->|<-- tail -->|
+ *  |          |       |                     |     |            |
+ * -*----------$-------*-------- ... --------*-----$------------*---
+ *  |          |       |                     |     |            |
+ *  |          offset  |                     |     end          |
+ *  ALIGN_DOWN(offset) ALIGN_UP(offset)      ALIGN_DOWN(end)   ALIGN_UP(end)
+ *  [buf   ... )                             [tail_buf          )
+ *
+ * @buf is an aligned allocation needed to store @head and @tail paddings. @head
+ * is placed at the beginning of @buf and @tail at the @end.
+ *
+ * @tail_buf is a pointer to sub-buffer, corresponding to align-sized chunk
+ * around tail, if tail exists.
+ *
+ * @merge_reads is true for small requests,
+ * if @buf_len == @head + bytes + @tail. In this case it is possible that both
+ * head and tail exist but @buf_len == align and @tail_buf == @buf.
+ */
+typedef struct BdrvRequestPadding {
+    uint8_t *buf;
+    size_t buf_len;
+    uint8_t *tail_buf;
+    size_t head;
+    size_t tail;
+    bool merge_reads;
+    QEMUIOVector local_qiov;
+} BdrvRequestPadding;
+
+static bool bdrv_init_padding(BlockDriverState *bs,
+                              int64_t offset, int64_t bytes,
+                              BdrvRequestPadding *pad)
+{
+    uint64_t align = bs->bl.request_alignment;
+    size_t sum;
+
+    memset(pad, 0, sizeof(*pad));
+
+    pad->head = offset & (align - 1);
+    pad->tail = ((offset + bytes) & (align - 1));
+    if (pad->tail) {
+        pad->tail = align - pad->tail;
+    }
+
+    if ((!pad->head && !pad->tail) || !bytes) {
+        return false;
+    }
+
+    sum = pad->head + bytes + pad->tail;
+    pad->buf_len = (sum > align && pad->head && pad->tail) ? 2 * align : align;
+    pad->buf = qemu_blockalign(bs, pad->buf_len);
+    pad->merge_reads = sum == pad->buf_len;
+    if (pad->tail) {
+        pad->tail_buf = pad->buf + pad->buf_len - align;
+    }
+
+    return true;
+}
+
+static int bdrv_padding_rmw_read(BdrvChild *child,
+                                 BdrvTrackedRequest *req,
+                                 BdrvRequestPadding *pad,
+                                 bool zero_middle)
+{
+    QEMUIOVector local_qiov;
+    BlockDriverState *bs = child->bs;
+    uint64_t align = bs->bl.request_alignment;
+    int ret;
+
+    assert(req->serialising && pad->buf);
+
+    if (pad->head || pad->merge_reads) {
+        uint64_t bytes = pad->merge_reads ? pad->buf_len : align;
+
+        qemu_iovec_init_buf(&local_qiov, pad->buf, bytes);
+
+        if (pad->head) {
+            bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_HEAD);
+        }
+        if (pad->merge_reads && pad->tail) {
+            bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL);
+        }
+        ret = bdrv_aligned_preadv(child, req, req->overlap_offset, bytes,
+                                  align, &local_qiov, 0);
+        if (ret < 0) {
+            return ret;
+        }
+        if (pad->head) {
+            bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_HEAD);
+        }
+        if (pad->merge_reads && pad->tail) {
+            bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL);
+        }
+
+        if (pad->merge_reads) {
+            goto zero_mem;
+        }
+    }
+
+    if (pad->tail) {
+        qemu_iovec_init_buf(&local_qiov, pad->tail_buf, align);
+
+        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL);
+        ret = bdrv_aligned_preadv(
+                child, req,
+                req->overlap_offset + req->overlap_bytes - align,
+                align, align, &local_qiov, 0);
+        if (ret < 0) {
+            return ret;
+        }
+        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL);
+    }
+
+zero_mem:
+    if (zero_middle) {
+        memset(pad->buf + pad->head, 0, pad->buf_len - pad->head - pad->tail);
+    }
+
+    return 0;
+}
+
+static void bdrv_padding_destroy(BdrvRequestPadding *pad)
+{
+    if (pad->buf) {
+        qemu_vfree(pad->buf);
+        qemu_iovec_destroy(&pad->local_qiov);
+    }
+}
+
+/*
+ * bdrv_pad_request
+ *
+ * Exchange request parameters with padded request if needed. Don't include RMW
+ * read of padding, bdrv_padding_rmw_read() should be called separately if
+ * needed.
+ *
+ * All parameters except @bs are in-out: they represent original request at
+ * function call and padded (if padding needed) at function finish.
+ *
+ * Function always succeeds.
  */
+static bool bdrv_pad_request(BlockDriverState *bs, QEMUIOVector **qiov,
+                             int64_t *offset, unsigned int *bytes,
+                             BdrvRequestPadding *pad)
+{
+    if (!bdrv_init_padding(bs, *offset, *bytes, pad)) {
+        return false;
+    }
+
+    qemu_iovec_init_extended(&pad->local_qiov, pad->buf, pad->head,
+                             *qiov, 0, *bytes,
+                             pad->buf + pad->buf_len - pad->tail, pad->tail);
+    *bytes += pad->head + pad->tail;
+    *offset -= pad->head;
+    *qiov = &pad->local_qiov;
+
+    return true;
+}
+
 int coroutine_fn bdrv_co_preadv(BdrvChild *child,
     int64_t offset, unsigned int bytes, QEMUIOVector *qiov,
     BdrvRequestFlags flags)
 {
     BlockDriverState *bs = child->bs;
-    BlockDriver *drv = bs->drv;
     BdrvTrackedRequest req;
-
-    uint64_t align = bs->bl.request_alignment;
-    uint8_t *head_buf = NULL;
-    uint8_t *tail_buf = NULL;
-    QEMUIOVector local_qiov;
-    bool use_local_qiov = false;
+    BdrvRequestPadding pad;
     int ret;
 
-    trace_bdrv_co_preadv(child->bs, offset, bytes, flags);
-
-    if (!drv) {
-        return -ENOMEDIUM;
-    }
+    trace_bdrv_co_preadv(bs, offset, bytes, flags);
 
     ret = bdrv_check_byte_request(bs, offset, bytes);
     if (ret < 0) {
@@ -1443,43 +1592,16 @@ int coroutine_fn bdrv_co_preadv(BdrvChild *child,
         flags |= BDRV_REQ_COPY_ON_READ;
     }
 
-    /* Align read if necessary by padding qiov */
-    if (offset & (align - 1)) {
-        head_buf = qemu_blockalign(bs, align);
-        qemu_iovec_init(&local_qiov, qiov->niov + 2);
-        qemu_iovec_add(&local_qiov, head_buf, offset & (align - 1));
-        qemu_iovec_concat(&local_qiov, qiov, 0, qiov->size);
-        use_local_qiov = true;
-
-        bytes += offset & (align - 1);
-        offset = offset & ~(align - 1);
-    }
-
-    if ((offset + bytes) & (align - 1)) {
-        if (!use_local_qiov) {
-            qemu_iovec_init(&local_qiov, qiov->niov + 1);
-            qemu_iovec_concat(&local_qiov, qiov, 0, qiov->size);
-            use_local_qiov = true;
-        }
-        tail_buf = qemu_blockalign(bs, align);
-        qemu_iovec_add(&local_qiov, tail_buf,
-                       align - ((offset + bytes) & (align - 1)));
-
-        bytes = ROUND_UP(bytes, align);
-    }
+    bdrv_pad_request(bs, &qiov, &offset, &bytes, &pad);
 
     tracked_request_begin(&req, bs, offset, bytes, BDRV_TRACKED_READ);
-    ret = bdrv_aligned_preadv(child, &req, offset, bytes, align,
-                              use_local_qiov ? &local_qiov : qiov,
-                              flags);
+    ret = bdrv_aligned_preadv(child, &req, offset, bytes,
+                              bs->bl.request_alignment,
+                              qiov, flags);
     tracked_request_end(&req);
     bdrv_dec_in_flight(bs);
 
-    if (use_local_qiov) {
-        qemu_iovec_destroy(&local_qiov);
-        qemu_vfree(head_buf);
-        qemu_vfree(tail_buf);
-    }
+    bdrv_padding_destroy(&pad);
 
     return ret;
 }
@@ -1775,44 +1897,34 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvChild *child,
                                                 BdrvTrackedRequest *req)
 {
     BlockDriverState *bs = child->bs;
-    uint8_t *buf = NULL;
     QEMUIOVector local_qiov;
     uint64_t align = bs->bl.request_alignment;
-    unsigned int head_padding_bytes, tail_padding_bytes;
     int ret = 0;
+    bool padding;
+    BdrvRequestPadding pad;
 
-    head_padding_bytes = offset & (align - 1);
-    tail_padding_bytes = (align - (offset + bytes)) & (align - 1);
-
-
-    assert(flags & BDRV_REQ_ZERO_WRITE);
-    if (head_padding_bytes || tail_padding_bytes) {
-        buf = qemu_blockalign(bs, align);
-        qemu_iovec_init_buf(&local_qiov, buf, align);
-    }
-    if (head_padding_bytes) {
-        uint64_t zero_bytes = MIN(bytes, align - head_padding_bytes);
-
-        /* RMW the unaligned part before head. */
+    padding = bdrv_init_padding(bs, offset, bytes, &pad);
+    if (padding) {
         mark_request_serialising(req, align);
         wait_serialising_requests(req);
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_HEAD);
-        ret = bdrv_aligned_preadv(child, req, offset & ~(align - 1), align,
-                                  align, &local_qiov, 0);
-        if (ret < 0) {
-            goto fail;
-        }
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_HEAD);
 
-        memset(buf + head_padding_bytes, 0, zero_bytes);
-        ret = bdrv_aligned_pwritev(child, req, offset & ~(align - 1), align,
-                                   align, &local_qiov,
-                                   flags & ~BDRV_REQ_ZERO_WRITE);
-        if (ret < 0) {
-            goto fail;
+        bdrv_padding_rmw_read(child, req, &pad, true);
+
+        if (pad.head || pad.merge_reads) {
+            int64_t aligned_offset = offset & ~(align - 1);
+            int64_t write_bytes = pad.merge_reads ? pad.buf_len : align;
+
+            qemu_iovec_init_buf(&local_qiov, pad.buf, write_bytes);
+            ret = bdrv_aligned_pwritev(child, req, aligned_offset, write_bytes,
+                                       align, &local_qiov,
+                                       flags & ~BDRV_REQ_ZERO_WRITE);
+            if (ret < 0 || pad.merge_reads) {
+                /* Error or all work is done */
+                goto out;
+            }
+            offset += write_bytes - pad.head;
+            bytes -= write_bytes - pad.head;
         }
-        offset += zero_bytes;
-        bytes -= zero_bytes;
     }
 
     assert(!bytes || (offset & (align - 1)) == 0);
@@ -1822,7 +1934,7 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvChild *child,
         ret = bdrv_aligned_pwritev(child, req, offset, aligned_bytes, align,
                                    NULL, flags);
         if (ret < 0) {
-            goto fail;
+            goto out;
         }
         bytes -= aligned_bytes;
         offset += aligned_bytes;
@@ -1830,26 +1942,17 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvChild *child,
 
     assert(!bytes || (offset & (align - 1)) == 0);
     if (bytes) {
-        assert(align == tail_padding_bytes + bytes);
-        /* RMW the unaligned part after tail. */
-        mark_request_serialising(req, align);
-        wait_serialising_requests(req);
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL);
-        ret = bdrv_aligned_preadv(child, req, offset, align,
-                                  align, &local_qiov, 0);
-        if (ret < 0) {
-            goto fail;
-        }
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL);
+        assert(align == pad.tail + bytes);
 
-        memset(buf, 0, bytes);
+        qemu_iovec_init_buf(&local_qiov, pad.tail_buf, align);
         ret = bdrv_aligned_pwritev(child, req, offset, align, align,
                                    &local_qiov, flags & ~BDRV_REQ_ZERO_WRITE);
     }
-fail:
-    qemu_vfree(buf);
-    return ret;
 
+out:
+    bdrv_padding_destroy(&pad);
+
+    return ret;
 }
 
 /*
@@ -1862,10 +1965,7 @@ int coroutine_fn bdrv_co_pwritev(BdrvChild *child,
     BlockDriverState *bs = child->bs;
     BdrvTrackedRequest req;
     uint64_t align = bs->bl.request_alignment;
-    uint8_t *head_buf = NULL;
-    uint8_t *tail_buf = NULL;
-    QEMUIOVector local_qiov;
-    bool use_local_qiov = false;
+    BdrvRequestPadding pad;
     int ret;
 
     trace_bdrv_co_pwritev(child->bs, offset, bytes, flags);
@@ -1892,86 +1992,21 @@ int coroutine_fn bdrv_co_pwritev(BdrvChild *child,
         goto out;
     }
 
-    if (offset & (align - 1)) {
-        QEMUIOVector head_qiov;
-
+    if (bdrv_pad_request(bs, &qiov, &offset, &bytes, &pad)) {
         mark_request_serialising(&req, align);
         wait_serialising_requests(&req);
-
-        head_buf = qemu_blockalign(bs, align);
-        qemu_iovec_init_buf(&head_qiov, head_buf, align);
-
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_HEAD);
-        ret = bdrv_aligned_preadv(child, &req, offset & ~(align - 1), align,
-                                  align, &head_qiov, 0);
-        if (ret < 0) {
-            goto fail;
-        }
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_HEAD);
-
-        qemu_iovec_init(&local_qiov, qiov->niov + 2);
-        qemu_iovec_add(&local_qiov, head_buf, offset & (align - 1));
-        qemu_iovec_concat(&local_qiov, qiov, 0, qiov->size);
-        use_local_qiov = true;
-
-        bytes += offset & (align - 1);
-        offset = offset & ~(align - 1);
-
-        /* We have read the tail already if the request is smaller
-         * than one aligned block.
-         */
-        if (bytes < align) {
-            qemu_iovec_add(&local_qiov, head_buf + bytes, align - bytes);
-            bytes = align;
-        }
-    }
-
-    if ((offset + bytes) & (align - 1)) {
-        QEMUIOVector tail_qiov;
-        size_t tail_bytes;
-        bool waited;
-
-        mark_request_serialising(&req, align);
-        waited = wait_serialising_requests(&req);
-        assert(!waited || !use_local_qiov);
-
-        tail_buf = qemu_blockalign(bs, align);
-        qemu_iovec_init_buf(&tail_qiov, tail_buf, align);
-
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_TAIL);
-        ret = bdrv_aligned_preadv(child, &req, (offset + bytes) & ~(align - 1),
-                                  align, align, &tail_qiov, 0);
-        if (ret < 0) {
-            goto fail;
-        }
-        bdrv_debug_event(bs, BLKDBG_PWRITEV_RMW_AFTER_TAIL);
-
-        if (!use_local_qiov) {
-            qemu_iovec_init(&local_qiov, qiov->niov + 1);
-            qemu_iovec_concat(&local_qiov, qiov, 0, qiov->size);
-            use_local_qiov = true;
-        }
-
-        tail_bytes = (offset + bytes) & (align - 1);
-        qemu_iovec_add(&local_qiov, tail_buf + tail_bytes, align - tail_bytes);
-
-        bytes = ROUND_UP(bytes, align);
+        bdrv_padding_rmw_read(child, &req, &pad, false);
     }
 
     ret = bdrv_aligned_pwritev(child, &req, offset, bytes, align,
-                               use_local_qiov ? &local_qiov : qiov,
-                               flags);
+                               qiov, flags);
 
-fail:
+    bdrv_padding_destroy(&pad);
 
-    if (use_local_qiov) {
-        qemu_iovec_destroy(&local_qiov);
-    }
-    qemu_vfree(head_buf);
-    qemu_vfree(tail_buf);
 out:
     tracked_request_end(&req);
     bdrv_dec_in_flight(bs);
+
     return ret;
 }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:10:31 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:10:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnQd-0005AJ-6B; Wed, 15 Apr 2020 19:10:31 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnQb-0005AC-HR
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:29 +0000
X-Inumbo-ID: c51277b2-7f4c-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c51277b2-7f4c-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:10:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=n2e/LCfI9K/iXU9pWBtbDW6sS1sIpBGI7yQT9xnlel8=; b=A4Jpd4BWIV52d2Ktn5sz0IZkEh
 52pHel53pGVGlt+rt2jYn5an5eYaU4GMVFZb8IEWwy1OtvMtgN4i98d0DTUzR7NFd07I1utzI0MgW
 VmodAYs3Ic+Y40OLX94yXPLbjvqp/FSqt6JsnGzVtw9SqgwTTTcC+V3nfOf0asHcf1pk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQa-0002oy-Op
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:28 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQa-00088O-O0
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:28 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block: Make wait/mark serialising requests
 public
Message-Id: <E1jOnQa-00088O-O0@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:10:28 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 590cff8230749794ba09b38f3ea4eb6b0f2f73b5
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Nov 1 16:25:08 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block: Make wait/mark serialising requests public
    
    Make both bdrv_mark_request_serialising() and
    bdrv_wait_serialising_requests() public so they can be used from block
    drivers.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191101152510.11719-2-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 304d9d7f034ff7f5e1e66a65b7f720f63a72c57e)
     Conflicts:
            block/io.c
    *drop context dependency on 1acc3466a2
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/io.c                | 24 ++++++++++++------------
 include/block/block_int.h |  3 +++
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/block/io.c b/block/io.c
index 07d2d825c3..d4ceaaa2ce 100644
--- a/block/io.c
+++ b/block/io.c
@@ -694,7 +694,7 @@ static void tracked_request_begin(BdrvTrackedRequest *req,
     qemu_co_mutex_unlock(&bs->reqs_lock);
 }
 
-static void mark_request_serialising(BdrvTrackedRequest *req, uint64_t align)
+void bdrv_mark_request_serialising(BdrvTrackedRequest *req, uint64_t align)
 {
     int64_t overlap_offset = req->offset & ~(align - 1);
     uint64_t overlap_bytes = ROUND_UP(req->offset + req->bytes, align)
@@ -784,7 +784,7 @@ void bdrv_dec_in_flight(BlockDriverState *bs)
     bdrv_wakeup(bs);
 }
 
-static bool coroutine_fn wait_serialising_requests(BdrvTrackedRequest *self)
+bool coroutine_fn bdrv_wait_serialising_requests(BdrvTrackedRequest *self)
 {
     BlockDriverState *bs = self->bs;
     BdrvTrackedRequest *req;
@@ -1340,14 +1340,14 @@ static int coroutine_fn bdrv_aligned_preadv(BdrvChild *child,
          * with each other for the same cluster.  For example, in copy-on-read
          * it ensures that the CoR read and write operations are atomic and
          * guest writes cannot interleave between them. */
-        mark_request_serialising(req, bdrv_get_cluster_size(bs));
+        bdrv_mark_request_serialising(req, bdrv_get_cluster_size(bs));
     }
 
     /* BDRV_REQ_SERIALISING is only for write operation */
     assert(!(flags & BDRV_REQ_SERIALISING));
 
     if (!(flags & BDRV_REQ_NO_SERIALISING)) {
-        wait_serialising_requests(req);
+        bdrv_wait_serialising_requests(req);
     }
 
     if (flags & BDRV_REQ_COPY_ON_READ) {
@@ -1736,10 +1736,10 @@ bdrv_co_write_req_prepare(BdrvChild *child, int64_t offset, uint64_t bytes,
     assert(!(flags & ~BDRV_REQ_MASK));
 
     if (flags & BDRV_REQ_SERIALISING) {
-        mark_request_serialising(req, bdrv_get_cluster_size(bs));
+        bdrv_mark_request_serialising(req, bdrv_get_cluster_size(bs));
     }
 
-    waited = wait_serialising_requests(req);
+    waited = bdrv_wait_serialising_requests(req);
 
     assert(!waited || !req->serialising ||
            is_request_serialising_and_aligned(req));
@@ -1905,8 +1905,8 @@ static int coroutine_fn bdrv_co_do_zero_pwritev(BdrvChild *child,
 
     padding = bdrv_init_padding(bs, offset, bytes, &pad);
     if (padding) {
-        mark_request_serialising(req, align);
-        wait_serialising_requests(req);
+        bdrv_mark_request_serialising(req, align);
+        bdrv_wait_serialising_requests(req);
 
         bdrv_padding_rmw_read(child, req, &pad, true);
 
@@ -1993,8 +1993,8 @@ int coroutine_fn bdrv_co_pwritev(BdrvChild *child,
     }
 
     if (bdrv_pad_request(bs, &qiov, &offset, &bytes, &pad)) {
-        mark_request_serialising(&req, align);
-        wait_serialising_requests(&req);
+        bdrv_mark_request_serialising(&req, align);
+        bdrv_wait_serialising_requests(&req);
         bdrv_padding_rmw_read(child, &req, &pad, false);
     }
 
@@ -3078,7 +3078,7 @@ static int coroutine_fn bdrv_co_copy_range_internal(
         /* BDRV_REQ_SERIALISING is only for write operation */
         assert(!(read_flags & BDRV_REQ_SERIALISING));
         if (!(read_flags & BDRV_REQ_NO_SERIALISING)) {
-            wait_serialising_requests(&req);
+            bdrv_wait_serialising_requests(&req);
         }
 
         ret = src->bs->drv->bdrv_co_copy_range_from(src->bs,
@@ -3205,7 +3205,7 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, int64_t offset,
      * new area, we need to make sure that no write requests are made to it
      * concurrently or they might be overwritten by preallocation. */
     if (new_bytes) {
-        mark_request_serialising(&req, 1);
+        bdrv_mark_request_serialising(&req, 1);
     }
     if (bs->read_only) {
         error_setg(errp, "Image is read-only");
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 3aa1e832a8..4465b02242 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -962,6 +962,9 @@ extern unsigned int bdrv_drain_all_count;
 void bdrv_apply_subtree_drain(BdrvChild *child, BlockDriverState *new_parent);
 void bdrv_unapply_subtree_drain(BdrvChild *child, BlockDriverState *old_parent);
 
+bool coroutine_fn bdrv_wait_serialising_requests(BdrvTrackedRequest *self);
+void bdrv_mark_request_serialising(BdrvTrackedRequest *req, uint64_t align);
+
 int get_tmp_filename(char *filename, int size);
 BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size,
                             const char *filename);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:10:41 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:10:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnQn-0005BD-87; Wed, 15 Apr 2020 19:10:41 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnQl-0005B4-O5
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:39 +0000
X-Inumbo-ID: cb2336d2-7f4c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id cb2336d2-7f4c-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:10:39 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Zm2oEBVjjogRQ7uxzmwHRDk+l0tyoggIUC3VUHoyZHw=; b=tzKgACKFSFJYRsnHdV6dzdjolF
 KpMSvU8iaQxyvW12r2r2nAjv9zBD3TedI1KgNx9pxOjD9jv24VFtO9Fu8VEZWL7btojGVD39iYUl6
 RfnDAt/DiWW+Xa2Wr7/LLqnlpxcTEgGFwAW+EW0zZM1Vc87bxcyqyENZanjZdsHW7Ml0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQk-0002pA-Si
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:38 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQk-000898-RW
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:38 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block: Add bdrv_co_get_self_request()
Message-Id: <E1jOnQk-000898-RW@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:10:38 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d9b88f7e0d56feb4d7daa2506e2756fc48e975a1
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Nov 1 16:25:09 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block: Add bdrv_co_get_self_request()
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191101152510.11719-3-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit c28107e9e55b11cd35cf3dc2505e3e69d10dcf13)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/io.c                | 18 ++++++++++++++++++
 include/block/block_int.h |  1 +
 2 files changed, 19 insertions(+)

diff --git a/block/io.c b/block/io.c
index d4ceaaa2ce..65b5102714 100644
--- a/block/io.c
+++ b/block/io.c
@@ -722,6 +722,24 @@ static bool is_request_serialising_and_aligned(BdrvTrackedRequest *req)
 }
 
 /**
+ * Return the tracked request on @bs for the current coroutine, or
+ * NULL if there is none.
+ */
+BdrvTrackedRequest *coroutine_fn bdrv_co_get_self_request(BlockDriverState *bs)
+{
+    BdrvTrackedRequest *req;
+    Coroutine *self = qemu_coroutine_self();
+
+    QLIST_FOREACH(req, &bs->tracked_requests, list) {
+        if (req->co == self) {
+            return req;
+        }
+    }
+
+    return NULL;
+}
+
+/**
  * Round a region to cluster boundaries
  */
 void bdrv_round_to_clusters(BlockDriverState *bs,
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 4465b02242..05ee6b4866 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -964,6 +964,7 @@ void bdrv_unapply_subtree_drain(BdrvChild *child, BlockDriverState *old_parent);
 
 bool coroutine_fn bdrv_wait_serialising_requests(BdrvTrackedRequest *self);
 void bdrv_mark_request_serialising(BdrvTrackedRequest *req, uint64_t align);
+BdrvTrackedRequest *coroutine_fn bdrv_co_get_self_request(BlockDriverState *bs);
 
 int get_tmp_filename(char *filename, int size);
 BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:10:51 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:10:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnQx-0005CF-A6; Wed, 15 Apr 2020 19:10:51 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnQw-0005C6-26
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:50 +0000
X-Inumbo-ID: d12d79a2-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d12d79a2-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:10:49 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=x3H0msUB6cdX+5oKOLfL2XTcrxRAB5N7rG+nAagqyoE=; b=vJ60ROPk63IZ5L/J26udXMuHMp
 O7aqGmgVuG4qj9VEft2CygUv3dx0J7Riiv/cQAVaW/4Od9aL/iOcCFb8ByVPoUfN8A5Ht0RLzmcvI
 dN0jywHV6Dixmy9EYwZYJAD7bRlRAkq3GQLGqKv0jtNiGJmCV8QHZe3LyPCnJkVZhbog=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQv-0002pl-2V
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:49 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnQv-0008AE-1X
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:49 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/file-posix: Let post-EOF fallocate
 serialize
Message-Id: <E1jOnQv-0008AE-1X@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:10:49 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7db05c8a732fbdc986a40aadf0de6dd23057d044
Author:     Max Reitz <mreitz@redhat.com>
AuthorDate: Fri Nov 1 16:25:10 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block/file-posix: Let post-EOF fallocate serialize
    
    The XFS kernel driver has a bug that may cause data corruption for qcow2
    images as of qemu commit c8bb23cbdbe32f.  We can work around it by
    treating post-EOF fallocates as serializing up until infinity (INT64_MAX
    in practice).
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20191101152510.11719-4-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 292d06b925b2787ee6f2430996b95651cae42fce)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/file-posix.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/block/file-posix.c b/block/file-posix.c
index 992eb4a798..c5df61b477 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -2623,6 +2623,42 @@ raw_do_pwrite_zeroes(BlockDriverState *bs, int64_t offset, int bytes,
     RawPosixAIOData acb;
     ThreadPoolFunc *handler;
 
+#ifdef CONFIG_FALLOCATE
+    if (offset + bytes > bs->total_sectors * BDRV_SECTOR_SIZE) {
+        BdrvTrackedRequest *req;
+        uint64_t end;
+
+        /*
+         * This is a workaround for a bug in the Linux XFS driver,
+         * where writes submitted through the AIO interface will be
+         * discarded if they happen beyond a concurrently running
+         * fallocate() that increases the file length (i.e., both the
+         * write and the fallocate() happen beyond the EOF).
+         *
+         * To work around it, we extend the tracked request for this
+         * zero write until INT64_MAX (effectively infinity), and mark
+         * it as serializing.
+         *
+         * We have to enable this workaround for all filesystems and
+         * AIO modes (not just XFS with aio=native), because for
+         * remote filesystems we do not know the host configuration.
+         */
+
+        req = bdrv_co_get_self_request(bs);
+        assert(req);
+        assert(req->type == BDRV_TRACKED_WRITE);
+        assert(req->offset <= offset);
+        assert(req->offset + req->bytes >= offset + bytes);
+
+        end = INT64_MAX & -(uint64_t)bs->bl.request_alignment;
+        req->bytes = end - req->offset;
+        req->overlap_bytes = req->bytes;
+
+        bdrv_mark_request_serialising(req, bs->bl.request_alignment);
+        bdrv_wait_serialising_requests(req);
+    }
+#endif
+
     acb = (RawPosixAIOData) {
         .bs             = bs,
         .aio_fildes     = s->fd,
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:11:01 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:11:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnR7-0005Dc-CY; Wed, 15 Apr 2020 19:11:01 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnR6-0005DM-2C
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:00 +0000
X-Inumbo-ID: d730a63a-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d730a63a-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:10:59 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vJvxuA/tQxYpnW+KZ+HbraMAqdrTZDgqqEmN0TVhM0o=; b=rlJfNieY6fGO6jsgxKJ8pBh7vz
 yD183POZJr4XJazzSLNGdJixTXvG0hvG5KNM3aWJPjoFACPyHcXzBW7H4BoIccm71fXy2PORvGETy
 /RY3SYJO8UWqueXewuLhPYDSAAvH8y1kPxW2g7PAwPy/7vXZzaM8JsRNUu9Yfdl1a5uc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnR5-0002pu-5I
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:59 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnR5-0008BH-4F
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:10:59 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] file-posix: Handle undetectable alignment
Message-Id: <E1jOnR5-0008BH-4F@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:10:59 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f0d3fa265d074a155164d59af12db72986cfe55d
Author:     Nir Soffer <nirsof@gmail.com>
AuthorDate: Tue Aug 13 21:21:03 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    file-posix: Handle undetectable alignment
    
    In some cases buf_align or request_alignment cannot be detected:
    
    1. With Gluster, buf_align cannot be detected since the actual I/O is
       done on Gluster server, and qemu buffer alignment does not matter.
       Since we don't have alignment requirement, buf_align=1 is the best
       value.
    
    2. With local XFS filesystem, buf_align cannot be detected if reading
       from unallocated area. In this we must align the buffer, but we don't
       know what is the correct size. Using the wrong alignment results in
       I/O error.
    
    3. With Gluster backed by XFS, request_alignment cannot be detected if
       reading from unallocated area. In this case we need to use the
       correct alignment, and failing to do so results in I/O errors.
    
    4. With NFS, the server does not use direct I/O, so both buf_align cannot
       be detected. In this case we don't need any alignment so we can use
       buf_align=1 and request_alignment=1.
    
    These cases seems to work when storage sector size is 512 bytes, because
    the current code starts checking align=512. If the check succeeds
    because alignment cannot be detected we use 512. But this does not work
    for storage with 4k sector size.
    
    To determine if we can detect the alignment, we probe first with
    align=1. If probing succeeds, maybe there are no alignment requirement
    (cases 1, 4) or we are probing unallocated area (cases 2, 3). Since we
    don't have any way to tell, we treat this as undetectable alignment. If
    probing with align=1 fails with EINVAL, but probing with one of the
    expected alignments succeeds, we know that we found a working alignment.
    
    Practically the alignment requirements are the same for buffer
    alignment, buffer length, and offset in file. So in case we cannot
    detect buf_align, we can use request alignment. If we cannot detect
    request alignment, we can fallback to a safe value. To use this logic,
    we probe first request alignment instead of buf_align.
    
    Here is a table showing the behaviour with current code (the value in
    parenthesis is the optimal value).
    
    Case    Sector    buf_align (opt)   request_alignment (opt)     result
    ======================================================================
    1       512       512   (1)          512   (512)                 OK
    1       4096      512   (1)          4096  (4096)                FAIL
    ----------------------------------------------------------------------
    2       512       512   (512)        512   (512)                 OK
    2       4096      512   (4096)       4096  (4096)                FAIL
    ----------------------------------------------------------------------
    3       512       512   (1)          512   (512)                 OK
    3       4096      512   (1)          512   (4096)                FAIL
    ----------------------------------------------------------------------
    4       512       512   (1)          512   (1)                   OK
    4       4096      512   (1)          512   (1)                   OK
    
    Same cases with this change:
    
    Case    Sector    buf_align (opt)   request_alignment (opt)     result
    ======================================================================
    1       512       512   (1)          512   (512)                 OK
    1       4096      4096  (1)          4096  (4096)                OK
    ----------------------------------------------------------------------
    2       512       512   (512)        512   (512)                 OK
    2       4096      4096  (4096)       4096  (4096)                OK
    ----------------------------------------------------------------------
    3       512       4096  (1)          4096  (512)                 OK
    3       4096      4096  (1)          4096  (4096)                OK
    ----------------------------------------------------------------------
    4       512       4096  (1)          4096  (1)                   OK
    4       4096      4096  (1)          4096  (1)                   OK
    
    I tested that provisioning VMs and copying disks on local XFS and
    Gluster with 4k bytes sector size work now, resolving bugs [1],[2].
    I tested also on XFS, NFS, Gluster with 512 bytes sector size.
    
    [1] https://bugzilla.redhat.com/1737256
    [2] https://bugzilla.redhat.com/1738657
    
    Signed-off-by: Nir Soffer <nsoffer@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    
    (cherry picked from commit a6b257a08e3d72219f03e461a52152672fec0612)
    
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/file-posix.c | 36 +++++++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index c5df61b477..be32dd8c51 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -323,6 +323,7 @@ static void raw_probe_alignment(BlockDriverState *bs, int fd, Error **errp)
     BDRVRawState *s = bs->opaque;
     char *buf;
     size_t max_align = MAX(MAX_BLOCKSIZE, getpagesize());
+    size_t alignments[] = {1, 512, 1024, 2048, 4096};
 
     /* For SCSI generic devices the alignment is not really used.
        With buffered I/O, we don't have any restrictions. */
@@ -349,25 +350,38 @@ static void raw_probe_alignment(BlockDriverState *bs, int fd, Error **errp)
     }
 #endif
 
-    /* If we could not get the sizes so far, we can only guess them */
-    if (!s->buf_align) {
+    /*
+     * If we could not get the sizes so far, we can only guess them. First try
+     * to detect request alignment, since it is more likely to succeed. Then
+     * try to detect buf_align, which cannot be detected in some cases (e.g.
+     * Gluster). If buf_align cannot be detected, we fallback to the value of
+     * request_alignment.
+     */
+
+    if (!bs->bl.request_alignment) {
+        int i;
         size_t align;
-        buf = qemu_memalign(max_align, 2 * max_align);
-        for (align = 512; align <= max_align; align <<= 1) {
-            if (raw_is_io_aligned(fd, buf + align, max_align)) {
-                s->buf_align = align;
+        buf = qemu_memalign(max_align, max_align);
+        for (i = 0; i < ARRAY_SIZE(alignments); i++) {
+            align = alignments[i];
+            if (raw_is_io_aligned(fd, buf, align)) {
+                /* Fallback to safe value. */
+                bs->bl.request_alignment = (align != 1) ? align : max_align;
                 break;
             }
         }
         qemu_vfree(buf);
     }
 
-    if (!bs->bl.request_alignment) {
+    if (!s->buf_align) {
+        int i;
         size_t align;
-        buf = qemu_memalign(s->buf_align, max_align);
-        for (align = 512; align <= max_align; align <<= 1) {
-            if (raw_is_io_aligned(fd, buf, align)) {
-                bs->bl.request_alignment = align;
+        buf = qemu_memalign(max_align, 2 * max_align);
+        for (i = 0; i < ARRAY_SIZE(alignments); i++) {
+            align = alignments[i];
+            if (raw_is_io_aligned(fd, buf + align, max_align)) {
+                /* Fallback to request_aligment. */
+                s->buf_align = (align != 1) ? align : bs->bl.request_alignment;
                 break;
             }
         }
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:11:12 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:11:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnRI-0005El-FD; Wed, 15 Apr 2020 19:11:12 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnRG-0005EY-QJ
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:10 +0000
X-Inumbo-ID: dd33edf8-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dd33edf8-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:11:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Or84FcTXd9hj/sbnQVFxZi7u8ceqG0z4aT0OMkCuVjM=; b=2tznCWFJSX37+YFVVUbpQR3AN5
 Tm51Fgo17aUut5lFRzLQiHJ/nvIXU3sjas6jdZ3fyVgKHxVTMN52tLBSrTyH2LE6avdsDn4/0Ikpd
 9afaauXzlOn9bXNq+cFUYm5BAaW2BzGZlsJYC0wDfRD2v1QfFccckXPZwpDFAflq5QoU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRF-0002qL-83
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:09 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRF-0008CK-7F
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:09 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block: posix: Always allocate the first block
Message-Id: <E1jOnRF-0008CK-7F@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:11:09 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3d018ff3bdd8aec260254036b600cfa8d694ced4
Author:     Nir Soffer <nirsof@gmail.com>
AuthorDate: Tue Aug 27 04:05:27 2019 +0300
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    block: posix: Always allocate the first block
    
    When creating an image with preallocation "off" or "falloc", the first
    block of the image is typically not allocated. When using Gluster
    storage backed by XFS filesystem, reading this block using direct I/O
    succeeds regardless of request length, fooling alignment detection.
    
    In this case we fallback to a safe value (4096) instead of the optimal
    value (512), which may lead to unneeded data copying when aligning
    requests.  Allocating the first block avoids the fallback.
    
    Since we allocate the first block even with preallocation=off, we no
    longer create images with zero disk size:
    
        $ ./qemu-img create -f raw test.raw 1g
        Formatting 'test.raw', fmt=raw size=1073741824
    
        $ ls -lhs test.raw
        4.0K -rw-r--r--. 1 nsoffer nsoffer 1.0G Aug 16 23:48 test.raw
    
    And converting the image requires additional cluster:
    
        $ ./qemu-img measure -f raw -O qcow2 test.raw
        required size: 458752
        fully allocated size: 1074135040
    
    When using format like vmdk with multiple files per image, we allocate
    one block per file:
    
        $ ./qemu-img create -f vmdk -o subformat=twoGbMaxExtentFlat test.vmdk 4g
        Formatting 'test.vmdk', fmt=vmdk size=4294967296 compat6=off hwversion=undefined subformat=twoGbMaxExtentFlat
    
        $ ls -lhs test*.vmdk
        4.0K -rw-r--r--. 1 nsoffer nsoffer 2.0G Aug 27 03:23 test-f001.vmdk
        4.0K -rw-r--r--. 1 nsoffer nsoffer 2.0G Aug 27 03:23 test-f002.vmdk
        4.0K -rw-r--r--. 1 nsoffer nsoffer  353 Aug 27 03:23 test.vmdk
    
    I did quick performance test for copying disks with qemu-img convert to
    new raw target image to Gluster storage with sector size of 512 bytes:
    
        for i in $(seq 10); do
            rm -f dst.raw
            sleep 10
            time ./qemu-img convert -f raw -O raw -t none -T none src.raw dst.raw
        done
    
    Here is a table comparing the total time spent:
    
    Type    Before(s)   After(s)    Diff(%)
    ---------------------------------------
    real      530.028    469.123      -11.4
    user       17.204     10.768      -37.4
    sys        17.881      7.011      -60.7
    
    We can see very clear improvement in CPU usage.
    
    Signed-off-by: Nir Soffer <nsoffer@redhat.com>
    Message-id: 20190827010528.8818-2-nsoffer@redhat.com
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    
    (cherry picked from commit 3a20013fbb26d2a1bd11ef148eefdb1508783787)
    
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/file-posix.c               | 51 ++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/059.out       |  2 +-
 tests/qemu-iotests/150.out       | 11 ---------
 tests/qemu-iotests/150.out.qcow2 | 11 +++++++++
 tests/qemu-iotests/150.out.raw   | 12 ++++++++++
 tests/qemu-iotests/175           | 19 ++++++++++-----
 tests/qemu-iotests/175.out       |  8 +++----
 tests/qemu-iotests/178.out.qcow2 |  4 ++--
 tests/qemu-iotests/221.out       | 12 ++++++----
 tests/qemu-iotests/253.out       | 12 ++++++----
 10 files changed, 110 insertions(+), 32 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index be32dd8c51..2184aa980c 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1674,6 +1674,43 @@ static int handle_aiocb_discard(void *opaque)
     return ret;
 }
 
+/*
+ * Help alignment probing by allocating the first block.
+ *
+ * When reading with direct I/O from unallocated area on Gluster backed by XFS,
+ * reading succeeds regardless of request length. In this case we fallback to
+ * safe alignment which is not optimal. Allocating the first block avoids this
+ * fallback.
+ *
+ * fd may be opened with O_DIRECT, but we don't know the buffer alignment or
+ * request alignment, so we use safe values.
+ *
+ * Returns: 0 on success, -errno on failure. Since this is an optimization,
+ * caller may ignore failures.
+ */
+static int allocate_first_block(int fd, size_t max_size)
+{
+    size_t write_size = (max_size < MAX_BLOCKSIZE)
+        ? BDRV_SECTOR_SIZE
+        : MAX_BLOCKSIZE;
+    size_t max_align = MAX(MAX_BLOCKSIZE, getpagesize());
+    void *buf;
+    ssize_t n;
+    int ret;
+
+    buf = qemu_memalign(max_align, write_size);
+    memset(buf, 0, write_size);
+
+    do {
+        n = pwrite(fd, buf, write_size, 0);
+    } while (n == -1 && errno == EINTR);
+
+    ret = (n == -1) ? -errno : 0;
+
+    qemu_vfree(buf);
+    return ret;
+}
+
 static int handle_aiocb_truncate(void *opaque)
 {
     RawPosixAIOData *aiocb = opaque;
@@ -1713,6 +1750,17 @@ static int handle_aiocb_truncate(void *opaque)
                 /* posix_fallocate() doesn't set errno. */
                 error_setg_errno(errp, -result,
                                  "Could not preallocate new data");
+            } else if (current_length == 0) {
+                /*
+                 * posix_fallocate() uses fallocate() if the filesystem
+                 * supports it, or fallback to manually writing zeroes. If
+                 * fallocate() was used, unaligned reads from the fallocated
+                 * area in raw_probe_alignment() will succeed, hence we need to
+                 * allocate the first block.
+                 *
+                 * Optimize future alignment probing; ignore failures.
+                 */
+                allocate_first_block(fd, offset);
             }
         } else {
             result = 0;
@@ -1774,6 +1822,9 @@ static int handle_aiocb_truncate(void *opaque)
         if (ftruncate(fd, offset) != 0) {
             result = -errno;
             error_setg_errno(errp, -result, "Could not resize file");
+        } else if (current_length == 0 && offset > current_length) {
+            /* Optimize future alignment probing; ignore failures. */
+            allocate_first_block(fd, offset);
         }
         return result;
     default:
diff --git a/tests/qemu-iotests/059.out b/tests/qemu-iotests/059.out
index 4fab42a28c..fe3f861f3c 100644
--- a/tests/qemu-iotests/059.out
+++ b/tests/qemu-iotests/059.out
@@ -27,7 +27,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824000 subformat=twoGbMax
 image: TEST_DIR/t.vmdk
 file format: vmdk
 virtual size: 0.977 TiB (1073741824000 bytes)
-disk size: 16 KiB
+disk size: 1.97 MiB
 Format specific information:
     cid: XXXXXXXX
     parent cid: XXXXXXXX
diff --git a/tests/qemu-iotests/150.out b/tests/qemu-iotests/150.out
deleted file mode 100644
index 2a54e8dcfa..0000000000
--- a/tests/qemu-iotests/150.out
+++ /dev/null
@@ -1,11 +0,0 @@
-QA output created by 150
-
-=== Mapping sparse conversion ===
-
-Offset          Length          File
-
-=== Mapping non-sparse conversion ===
-
-Offset          Length          File
-0               0x100000        TEST_DIR/t.IMGFMT
-*** done
diff --git a/tests/qemu-iotests/150.out.qcow2 b/tests/qemu-iotests/150.out.qcow2
new file mode 100644
index 0000000000..2a54e8dcfa
--- /dev/null
+++ b/tests/qemu-iotests/150.out.qcow2
@@ -0,0 +1,11 @@
+QA output created by 150
+
+=== Mapping sparse conversion ===
+
+Offset          Length          File
+
+=== Mapping non-sparse conversion ===
+
+Offset          Length          File
+0               0x100000        TEST_DIR/t.IMGFMT
+*** done
diff --git a/tests/qemu-iotests/150.out.raw b/tests/qemu-iotests/150.out.raw
new file mode 100644
index 0000000000..3cdc7727a5
--- /dev/null
+++ b/tests/qemu-iotests/150.out.raw
@@ -0,0 +1,12 @@
+QA output created by 150
+
+=== Mapping sparse conversion ===
+
+Offset          Length          File
+0               0x1000          TEST_DIR/t.IMGFMT
+
+=== Mapping non-sparse conversion ===
+
+Offset          Length          File
+0               0x100000        TEST_DIR/t.IMGFMT
+*** done
diff --git a/tests/qemu-iotests/175 b/tests/qemu-iotests/175
index 51e62c8276..7ba28b3c1b 100755
--- a/tests/qemu-iotests/175
+++ b/tests/qemu-iotests/175
@@ -37,14 +37,16 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
 # the file size.  This function hides the resulting difference in the
 # stat -c '%b' output.
 # Parameter 1: Number of blocks an empty file occupies
-# Parameter 2: Image size in bytes
+# Parameter 2: Minimal number of blocks in an image
+# Parameter 3: Image size in bytes
 _filter_blocks()
 {
     extra_blocks=$1
-    img_size=$2
+    min_blocks=$2
+    img_size=$3
 
-    sed -e "s/blocks=$extra_blocks\\(\$\\|[^0-9]\\)/nothing allocated/" \
-        -e "s/blocks=$((extra_blocks + img_size / 512))\\(\$\\|[^0-9]\\)/everything allocated/"
+    sed -e "s/blocks=$min_blocks\\(\$\\|[^0-9]\\)/min allocation/" \
+        -e "s/blocks=$((extra_blocks + img_size / 512))\\(\$\\|[^0-9]\\)/max allocation/"
 }
 
 # get standard environment, filters and checks
@@ -60,16 +62,21 @@ size=$((1 * 1024 * 1024))
 touch "$TEST_DIR/empty"
 extra_blocks=$(stat -c '%b' "$TEST_DIR/empty")
 
+# We always write the first byte; check how many blocks this filesystem
+# allocates to match empty image alloation.
+printf "\0" > "$TEST_DIR/empty"
+min_blocks=$(stat -c '%b' "$TEST_DIR/empty")
+
 echo
 echo "== creating image with default preallocation =="
 _make_test_img $size | _filter_imgfmt
-stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $size
+stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $size
 
 for mode in off full falloc; do
     echo
     echo "== creating image with preallocation $mode =="
     IMGOPTS=preallocation=$mode _make_test_img $size | _filter_imgfmt
-    stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $size
+    stat -c "size=%s, blocks=%b" $TEST_IMG | _filter_blocks $extra_blocks $min_blocks $size
 done
 
 # success, all done
diff --git a/tests/qemu-iotests/175.out b/tests/qemu-iotests/175.out
index 6d9a5ed84e..263e521262 100644
--- a/tests/qemu-iotests/175.out
+++ b/tests/qemu-iotests/175.out
@@ -2,17 +2,17 @@ QA output created by 175
 
 == creating image with default preallocation ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576
-size=1048576, nothing allocated
+size=1048576, min allocation
 
 == creating image with preallocation off ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=off
-size=1048576, nothing allocated
+size=1048576, min allocation
 
 == creating image with preallocation full ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=full
-size=1048576, everything allocated
+size=1048576, max allocation
 
 == creating image with preallocation falloc ==
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 preallocation=falloc
-size=1048576, everything allocated
+size=1048576, max allocation
  *** done
diff --git a/tests/qemu-iotests/178.out.qcow2 b/tests/qemu-iotests/178.out.qcow2
index 55a8dc926f..9e7d8c44df 100644
--- a/tests/qemu-iotests/178.out.qcow2
+++ b/tests/qemu-iotests/178.out.qcow2
@@ -101,7 +101,7 @@ converted image file size in bytes: 196608
 == raw input image with data (human) ==
 
 Formatting 'TEST_DIR/t.qcow2', fmt=IMGFMT size=1073741824
-required size: 393216
+required size: 458752
 fully allocated size: 1074135040
 wrote 512/512 bytes at offset 512
 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
@@ -257,7 +257,7 @@ converted image file size in bytes: 196608
 
 Formatting 'TEST_DIR/t.qcow2', fmt=IMGFMT size=1073741824
 {
-    "required": 393216,
+    "required": 458752,
     "fully-allocated": 1074135040
 }
 wrote 512/512 bytes at offset 512
diff --git a/tests/qemu-iotests/221.out b/tests/qemu-iotests/221.out
index 9f9dd52bb0..dca024a0c3 100644
--- a/tests/qemu-iotests/221.out
+++ b/tests/qemu-iotests/221.out
@@ -3,14 +3,18 @@ QA output created by 221
 === Check mapping of unaligned raw image ===
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65537
-[{ "start": 0, "length": 66048, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
-[{ "start": 0, "length": 66048, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 61952, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 61952, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
 wrote 1/1 bytes at offset 65536
 1 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-[{ "start": 0, "length": 65536, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 61440, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
 { "start": 65536, "length": 1, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
 { "start": 65537, "length": 511, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
-[{ "start": 0, "length": 65536, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 61440, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
 { "start": 65536, "length": 1, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
 { "start": 65537, "length": 511, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
 *** done
diff --git a/tests/qemu-iotests/253.out b/tests/qemu-iotests/253.out
index 607c0baa0b..3d08b305d7 100644
--- a/tests/qemu-iotests/253.out
+++ b/tests/qemu-iotests/253.out
@@ -3,12 +3,16 @@ QA output created by 253
 === Check mapping of unaligned raw image ===
 
 Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048575
-[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
-[{ "start": 0, "length": 1048576, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 1044480, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 1044480, "depth": 0, "zero": true, "data": false, "offset": OFFSET}]
 wrote 65535/65535 bytes at offset 983040
 63.999 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
-[{ "start": 0, "length": 983040, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 978944, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
 { "start": 983040, "length": 65536, "depth": 0, "zero": false, "data": true, "offset": OFFSET}]
-[{ "start": 0, "length": 983040, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
+[{ "start": 0, "length": 4096, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
+{ "start": 4096, "length": 978944, "depth": 0, "zero": true, "data": false, "offset": OFFSET},
 { "start": 983040, "length": 65536, "depth": 0, "zero": false, "data": true, "offset": OFFSET}]
 *** done
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:11:21 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:11:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnRR-0005Fu-Jt; Wed, 15 Apr 2020 19:11:21 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnRQ-0005Fi-3k
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:20 +0000
X-Inumbo-ID: e3360f6a-7f4c-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e3360f6a-7f4c-11ea-9e09-bc764e2007e4;
 Wed, 15 Apr 2020 19:11:19 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=gd5qMyd6MSBT/bXJYVyUW9chAG4lXuiM6g69yY87xlA=; b=x2OGJW0Xa/5K6jVm21iddKx+Ji
 Umls0d81pdLchaETfVqAzUZNzQQ7TGFMMt5yhv4Rb6ENMWGUR81IkxtQ3ZMFCSr5VftPX9a27jw6Q
 LY2rneuNh8xqb9/d1h6aRILOoY3kOwZ23X8XR8AZW7SM40GufJDqDdTFTJIlXJgBe4XM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRP-0002qU-Ao
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:19 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRP-0008DD-9r
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:19 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] tests: make filemonitor test more robust to
 event ordering
Message-Id: <E1jOnRP-0008DD-9r@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:11:19 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 54c130493c544573253f5bbdcdb705f3d79377f0
Author:     Daniel P. Berrangé <berrange@redhat.com>
AuthorDate: Wed Aug 21 16:14:27 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 11:59:58 2019 -0600

    tests: make filemonitor test more robust to event ordering
    
    The ordering of events that are emitted during the rmdir
    test have changed with kernel >= 5.3. Semantically both
    new & old orderings are correct, so we must be able to
    cope with either.
    
    To cope with this, when we see an unexpected event, we
    push it back onto the queue and look and the subsequent
    event to see if that matches instead.
    
    Tested-by: Peter Xu <peterx@redhat.com>
    Tested-by: Wei Yang <richardw.yang@linux.intel.com>
    Tested-by: Cornelia Huck <cohuck@redhat.com>
    Reviewed-by: Thomas Huth <thuth@redhat.com>
    Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
    (cherry picked from commit bf9e0313c27d8e6ecd7f7de3d63e1cb25d8f6311)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 tests/test-util-filemonitor.c | 43 ++++++++++++++++++++++++++++++++++---------
 1 file changed, 34 insertions(+), 9 deletions(-)

diff --git a/tests/test-util-filemonitor.c b/tests/test-util-filemonitor.c
index 46e781c022..301cd2db61 100644
--- a/tests/test-util-filemonitor.c
+++ b/tests/test-util-filemonitor.c
@@ -45,6 +45,11 @@ typedef struct {
     const char *filedst;
     int64_t *watchid;
     int eventid;
+    /*
+     * Only valid with OP_EVENT - this event might be
+     * swapped with the next OP_EVENT
+     */
+    bool swapnext;
 } QFileMonitorTestOp;
 
 typedef struct {
@@ -98,6 +103,10 @@ qemu_file_monitor_test_handler(int64_t id,
     QFileMonitorTestData *data = opaque;
     QFileMonitorTestRecord *rec = g_new0(QFileMonitorTestRecord, 1);
 
+    if (debug) {
+        g_printerr("Queue event id %" PRIx64 " event %d file %s\n",
+                   id, event, filename);
+    }
     rec->id = id;
     rec->event = event;
     rec->filename = g_strdup(filename);
@@ -125,7 +134,8 @@ qemu_file_monitor_test_record_free(QFileMonitorTestRecord *rec)
  * to wait for the event to be queued for us.
  */
 static QFileMonitorTestRecord *
-qemu_file_monitor_test_next_record(QFileMonitorTestData *data)
+qemu_file_monitor_test_next_record(QFileMonitorTestData *data,
+                                   QFileMonitorTestRecord *pushback)
 {
     GTimer *timer = g_timer_new();
     QFileMonitorTestRecord *record = NULL;
@@ -139,9 +149,15 @@ qemu_file_monitor_test_next_record(QFileMonitorTestData *data)
     }
     if (data->records) {
         record = data->records->data;
-        tmp = data->records;
-        data->records = g_list_remove_link(data->records, tmp);
-        g_list_free(tmp);
+        if (pushback) {
+            data->records->data = pushback;
+        } else {
+            tmp = data->records;
+            data->records = g_list_remove_link(data->records, tmp);
+            g_list_free(tmp);
+        }
+    } else if (pushback) {
+        qemu_file_monitor_test_record_free(pushback);
     }
     qemu_mutex_unlock(&data->lock);
 
@@ -158,13 +174,15 @@ static bool
 qemu_file_monitor_test_expect(QFileMonitorTestData *data,
                               int64_t id,
                               QFileMonitorEvent event,
-                              const char *filename)
+                              const char *filename,
+                              bool swapnext)
 {
     QFileMonitorTestRecord *rec;
     bool ret = false;
 
-    rec = qemu_file_monitor_test_next_record(data);
+    rec = qemu_file_monitor_test_next_record(data, NULL);
 
+ retry:
     if (!rec) {
         g_printerr("Missing event watch id %" PRIx64 " event %d file %s\n",
                    id, event, filename);
@@ -172,6 +190,11 @@ qemu_file_monitor_test_expect(QFileMonitorTestData *data,
     }
 
     if (id != rec->id) {
+        if (swapnext) {
+            rec = qemu_file_monitor_test_next_record(data, rec);
+            swapnext = false;
+            goto retry;
+        }
         g_printerr("Expected watch id %" PRIx64 " but got %" PRIx64 "\n",
                    id, rec->id);
         goto cleanup;
@@ -347,7 +370,8 @@ test_file_monitor_events(void)
           .filesrc = "fish", },
         { .type = QFILE_MONITOR_TEST_OP_EVENT,
           .filesrc = "", .watchid = &watch4,
-          .eventid = QFILE_MONITOR_EVENT_IGNORED },
+          .eventid = QFILE_MONITOR_EVENT_IGNORED,
+          .swapnext = true },
         { .type = QFILE_MONITOR_TEST_OP_EVENT,
           .filesrc = "fish", .watchid = &watch0,
           .eventid = QFILE_MONITOR_EVENT_DELETED },
@@ -493,8 +517,9 @@ test_file_monitor_events(void)
                 g_printerr("Event id=%" PRIx64 " event=%d file=%s\n",
                            *op->watchid, op->eventid, op->filesrc);
             }
-            if (!qemu_file_monitor_test_expect(
-                    &data, *op->watchid, op->eventid, op->filesrc))
+            if (!qemu_file_monitor_test_expect(&data, *op->watchid,
+                                               op->eventid, op->filesrc,
+                                               op->swapnext))
                 goto cleanup;
             break;
         case QFILE_MONITOR_TEST_OP_CREATE:
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:11:31 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:11:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnRb-0005Hb-MH; Wed, 15 Apr 2020 19:11:31 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnRa-0005HQ-0r
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:30 +0000
X-Inumbo-ID: e938745c-7f4c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e938745c-7f4c-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:11:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4zXhy+GXGY/DMWe4RFc4rkCzHMFTyc1qs/7b/iCK2t0=; b=Xu+FxeeRZbRvv0VwyeSgHQRL5L
 EL0KIKJ8ruMR/j/A0bIGdeiQtiBws4EkGSJ9E6gT41amLHirB/GaCV1lSP0nAfbrKED+CYTaJ3Joj
 Zl3t9kf387GwvVPvjhvDhjpf9W0AKrKpk43c5ogOXYWb5qqUesVKNizHVjV/oULHUBT4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRZ-0002qd-DH
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:29 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRZ-0008Dy-CP
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:29 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] memory: Align MemoryRegionSections fields
Message-Id: <E1jOnRZ-0008Dy-CP@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:11:29 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c0aca9352d51c102c55fe29ce5c1bf8e74a5183e
Author:     Dr. David Alan Gilbert <dgilbert@redhat.com>
AuthorDate: Wed Aug 14 18:55:33 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:23:49 2019 -0600

    memory: Align MemoryRegionSections fields
    
    MemoryRegionSection includes an Int128 'size' field;
    on some platforms the compiler causes an alignment of this to
    a 128bit boundary, leaving 8 bytes of dead space.
    This deadspace can be filled with junk.
    
    Move the size field to the top avoiding unnecessary alignment.
    
    Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Message-Id: <20190814175535.2023-2-dgilbert@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 44f85d3276397cfa2cfa379c61430405dad4e644)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/exec/memory.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/exec/memory.h b/include/exec/memory.h
index bb0961ddb9..e28d79cc59 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -487,10 +487,10 @@ static inline FlatView *address_space_to_flatview(AddressSpace *as)
  * @nonvolatile: this section is non-volatile
  */
 struct MemoryRegionSection {
+    Int128 size;
     MemoryRegion *mr;
     FlatView *fv;
     hwaddr offset_within_region;
-    Int128 size;
     hwaddr offset_within_address_space;
     bool readonly;
     bool nonvolatile;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:11:41 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:11:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnRl-0005Ii-OA; Wed, 15 Apr 2020 19:11:41 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnRk-0005IW-2j
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:40 +0000
X-Inumbo-ID: ef3859da-7f4c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ef3859da-7f4c-11ea-b4f4-bc764e2007e4;
 Wed, 15 Apr 2020 19:11:39 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=UwrARVWA8NMNhdkWe08zJDqTj0fDQHuYha679uoeYUY=; b=QhS1Tjm8ZQqW/g1cPEDTNq4VZF
 GcW8Kax8+quE1kw4Xkd7RqOsmNH2Zbde5/fc0eS8P2OWY+k0TokaHaXQHeqhAeOZfbB+EE5bUvAI8
 VsVTpkqTtZEZ0tYlvtxvM+vw6QZ62JX5mFC3Itjp0LP1NUNTs0ofgIIjGNpccofoaFPM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRj-0002rp-Fk
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:39 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRj-0008Ei-Eu
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:39 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] memory: Provide an equality function for
 MemoryRegionSections
Message-Id: <E1jOnRj-0008Ei-Eu@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:11:39 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 42b6571357a083f721a27daa6dfdc69e4bd516bd
Author:     Dr. David Alan Gilbert <dgilbert@redhat.com>
AuthorDate: Wed Aug 14 18:55:34 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:23:54 2019 -0600

    memory: Provide an equality function for MemoryRegionSections
    
    Provide a comparison function that checks all the fields are the same.
    
    Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Message-Id: <20190814175535.2023-3-dgilbert@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 9366cf02e4e31c2a8128904d4d8290a0fad5f888)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 include/exec/memory.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/include/exec/memory.h b/include/exec/memory.h
index e28d79cc59..611a89122d 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -496,6 +496,18 @@ struct MemoryRegionSection {
     bool nonvolatile;
 };
 
+static inline bool MemoryRegionSection_eq(MemoryRegionSection *a,
+                                          MemoryRegionSection *b)
+{
+    return a->mr == b->mr &&
+           a->fv == b->fv &&
+           a->offset_within_region == b->offset_within_region &&
+           a->offset_within_address_space == b->offset_within_address_space &&
+           int128_eq(a->size, b->size) &&
+           a->readonly == b->readonly &&
+           a->nonvolatile == b->nonvolatile;
+}
+
 /**
  * memory_region_init: Initialize a memory region
  *
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:11:51 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:11:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnRv-0005Jo-QV; Wed, 15 Apr 2020 19:11:51 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnRu-0005Jd-By
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:50 +0000
X-Inumbo-ID: f53ceb34-7f4c-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f53ceb34-7f4c-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:11:49 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=7dP7wCSLyMkvq50YUUNjIoug8sbCS4evctg8oALOs6g=; b=7HNEcKXyM4JYiJTvy/Q2W4H6dz
 Lqa20QXygEVExKAJ2UC4f4mSo3XPXJCErNIrM1M/umq7Sdm73Zu0XF7QmXhBc/tdnBE9AthlGnbIF
 Da48uwd/yC+q3fJH9lg2k7Faamtl+VPPHXKnAlD1beYa4GPzQ6BKdwFtPNSW7dJqhrwA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRt-0002si-IF
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:49 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnRt-0008FY-HM
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:49 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] vhost: Fix memory region section comparison
Message-Id: <E1jOnRt-0008FY-HM@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:11:49 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 145b562990d252aeca7c37c21eb7e7110cfceffc
Author:     Dr. David Alan Gilbert <dgilbert@redhat.com>
AuthorDate: Wed Aug 14 18:55:35 2019 +0100
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:23:54 2019 -0600

    vhost: Fix memory region section comparison
    
    Using memcmp to compare structures wasn't safe,
    as I found out on ARM when I was getting falce miscompares.
    
    Use the helper function for comparing the MRSs.
    
    Fixes: ade6d081fc33948e56e6 ("vhost: Regenerate region list from changed sections list")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
    Message-Id: <20190814175535.2023-4-dgilbert@redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    (cherry picked from commit 3fc4a64cbaed2ddee4c60ddc06740b320e18ab82)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 hw/virtio/vhost.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
index bc899fc60e..2ef4bc720f 100644
--- a/hw/virtio/vhost.c
+++ b/hw/virtio/vhost.c
@@ -451,8 +451,13 @@ static void vhost_commit(MemoryListener *listener)
         changed = true;
     } else {
         /* Same size, lets check the contents */
-        changed = n_old_sections && memcmp(dev->mem_sections, old_sections,
-                         n_old_sections * sizeof(old_sections[0])) != 0;
+        for (int i = 0; i < n_old_sections; i++) {
+            if (!MemoryRegionSection_eq(&old_sections[i],
+                                        &dev->mem_sections[i])) {
+                changed = true;
+                break;
+            }
+        }
     }
 
     trace_vhost_commit(dev->started, changed);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:12:00 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:12:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnS4-0005Ko-Sg; Wed, 15 Apr 2020 19:12:00 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnS4-0005Kh-DR
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:00 +0000
X-Inumbo-ID: fb3cc798-7f4c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fb3cc798-7f4c-11ea-b58d-bc764e2007e4;
 Wed, 15 Apr 2020 19:11:59 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=bTKCw3mYRctIbrpItE2pR727TI7JMyycQqMfG2PmQFE=; b=2WLEGARgki6cIstlUg8Qv5aDqu
 zN9HkQntZAyVq/w88Pk/zOib6spo9Sl942OQcsIdFf7dv2n7vGQNp1sb4UCBlDSZ+ulQjVhVwtQnz
 4IvbED4O6O2Jh5ODhtEY+PkSgQqrsrwc19BXbwL7o5OI9lgpQ96U+brJnUHxhH2uxVLg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnS3-0002sr-Kt
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:59 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnS3-0008GO-Js
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:11:59 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] block/create: Do not abort if a block driver
 is not available
Message-Id: <E1jOnS3-0008GO-Js@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:11:59 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 088f1e8fd9e790bc5766bd43af134230abcff6dd
Author:     Philippe Mathieu-Daudé <philmd@redhat.com>
AuthorDate: Thu Sep 12 00:08:49 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:31:38 2019 -0600

    block/create: Do not abort if a block driver is not available
    
    The 'blockdev-create' QMP command was introduced as experimental
    feature in commit b0292b851b8, using the assert() debug call.
    It got promoted to 'stable' command in 3fb588a0f2c, but the
    assert call was not removed.
    
    Some block drivers are optional, and bdrv_find_format() might
    return a NULL value, triggering the assertion.
    
    Stable code is not expected to abort, so return an error instead.
    
    This is easily reproducible when libnfs is not installed:
    
      ./configure
      [...]
      module support    no
      Block whitelist (rw)
      Block whitelist (ro)
      libiscsi support  yes
      libnfs support    no
      [...]
    
    Start QEMU:
    
      $ qemu-system-x86_64 -S -qmp unix:/tmp/qemu.qmp,server,nowait
    
    Send the 'blockdev-create' with the 'nfs' driver:
    
      $ ( cat << 'EOF'
      {'execute': 'qmp_capabilities'}
      {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
      EOF
      ) | socat STDIO UNIX:/tmp/qemu.qmp
      {"QMP": {"version": {"qemu": {"micro": 50, "minor": 1, "major": 4}, "package": "v4.1.0-733-g89ea03a7dc"}, "capabilities": ["oob"]}}
      {"return": {}}
    
    QEMU crashes:
    
      $ gdb qemu-system-x86_64 core
      Program received signal SIGSEGV, Segmentation fault.
      (gdb) bt
      #0  0x00007ffff510957f in raise () at /lib64/libc.so.6
      #1  0x00007ffff50f3895 in abort () at /lib64/libc.so.6
      #2  0x00007ffff50f3769 in _nl_load_domain.cold.0 () at /lib64/libc.so.6
      #3  0x00007ffff5101a26 in .annobin_assert.c_end () at /lib64/libc.so.6
      #4  0x0000555555d7e1f1 in qmp_blockdev_create (job_id=0x555556baee40 "x", options=0x555557666610, errp=0x7fffffffc770) at block/create.c:69
      #5  0x0000555555c96b52 in qmp_marshal_blockdev_create (args=0x7fffdc003830, ret=0x7fffffffc7f8, errp=0x7fffffffc7f0) at qapi/qapi-commands-block-core.c:1314
      #6  0x0000555555deb0a0 in do_qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false, errp=0x7fffffffc898) at qapi/qmp-dispatch.c:131
      #7  0x0000555555deb2a1 in qmp_dispatch (cmds=0x55555645de70 <qmp_commands>, request=0x7fffdc005c70, allow_oob=false) at qapi/qmp-dispatch.c:174
    
    With this patch applied, QEMU returns a QMP error:
    
      {'execute': 'blockdev-create', 'arguments': {'job-id': 'x', 'options': {'size': 0, 'driver': 'nfs', 'location': {'path': '/', 'server': {'host': '::1', 'type': 'inet'}}}}, 'id': 'x'}
      {"id": "x", "error": {"class": "GenericError", "desc": "Block driver 'nfs' not found or not supported"}}
    
    Cc: qemu-stable@nongnu.org
    Reported-by: Xu Tian <xutian@redhat.com>
    Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    (cherry picked from commit d90d5cae2b10efc0e8d0b3cc91ff16201853d3ba)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/create.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/block/create.c b/block/create.c
index 95341219ef..de5e97bb18 100644
--- a/block/create.c
+++ b/block/create.c
@@ -63,9 +63,13 @@ void qmp_blockdev_create(const char *job_id, BlockdevCreateOptions *options,
     const char *fmt = BlockdevDriver_str(options->driver);
     BlockDriver *drv = bdrv_find_format(fmt);
 
+    if (!drv) {
+        error_setg(errp, "Block driver '%s' not found or not supported", fmt);
+        return;
+    }
+
     /* If the driver is in the schema, we know that it exists. But it may not
      * be whitelisted. */
-    assert(drv);
     if (bdrv_uses_whitelist() && !bdrv_is_whitelisted(drv, false)) {
         error_setg(errp, "Driver is not whitelisted");
         return;
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:12:12 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:12:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnSF-0005Ly-Ud; Wed, 15 Apr 2020 19:12:11 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnSE-0005Lq-Vt
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:11 +0000
X-Inumbo-ID: 013f65ec-7f4d-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 013f65ec-7f4d-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:12:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=R7nxJJqpZLplpmrPbRv10zxaNZj61vFZkRRZYoDTBOE=; b=l9eJoXQFFFVpJ8L7oUMeb33ucn
 H/gYoQB9wAMh9q2jbtnyNjsJHGWs7AGQnVnHAMvUc+TFuaE7VLr/ABJr3RdDh5qii91uKnf1hZrJ3
 KubIC9gpAmiOjwH7iFmOFjJW4Br1K8nWwLXYd+JbB6hsjvwun4I0RclffkOQBtqv3tRc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSD-0002tD-NV
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:09 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSD-0008HM-MW
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:09 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] mirror: Keep mirror_top_bs drained after
 dropping permissions
Message-Id: <E1jOnSD-0008HM-MW@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:12:09 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e092a17d3825a8f2c93cb429aaa5d857b579b64c
Author:     Kevin Wolf <kwolf@redhat.com>
AuthorDate: Mon Jul 22 17:44:27 2019 +0200
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Tue Nov 12 16:31:49 2019 -0600

    mirror: Keep mirror_top_bs drained after dropping permissions
    
    mirror_top_bs is currently implicitly drained through its connection to
    the source or the target node. However, the drain section for target_bs
    ends early after moving mirror_top_bs from src to target_bs, so that
    requests can already be restarted while mirror_top_bs is still present
    in the chain, but has dropped all permissions and therefore runs into an
    assertion failure like this:
    
        qemu-system-x86_64: block/io.c:1634: bdrv_co_write_req_prepare:
        Assertion `child->perm & BLK_PERM_WRITE' failed.
    
    Keep mirror_top_bs drained until all graph changes have completed.
    
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
    Reviewed-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit d2da5e288a2e71e82866c8fdefd41b5727300124)
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 block/mirror.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/block/mirror.c b/block/mirror.c
index 0e3f7923cf..681b305de6 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -661,7 +661,10 @@ static int mirror_exit_common(Job *job)
     s->target = NULL;
 
     /* We don't access the source any more. Dropping any WRITE/RESIZE is
-     * required before it could become a backing file of target_bs. */
+     * required before it could become a backing file of target_bs. Not having
+     * these permissions any more means that we can't allow any new requests on
+     * mirror_top_bs from now on, so keep it drained. */
+    bdrv_drained_begin(mirror_top_bs);
     bs_opaque->stop = true;
     bdrv_child_refresh_perms(mirror_top_bs, mirror_top_bs->backing,
                              &error_abort);
@@ -729,6 +732,7 @@ static int mirror_exit_common(Job *job)
     bs_opaque->job = NULL;
 
     bdrv_drained_end(src);
+    bdrv_drained_end(mirror_top_bs);
     s->in_drain = false;
     bdrv_unref(mirror_top_bs);
     bdrv_unref(src);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:12:21 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:12:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnSP-0005N2-2t; Wed, 15 Apr 2020 19:12:21 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnSO-0005Mu-GL
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:20 +0000
X-Inumbo-ID: 068da8a7-7f4d-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 068da8a7-7f4d-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:12:20 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=eOxRucdw7tEcckOMS9TA9m406htjUU+WF17tOA7HXHs=; b=f4e2QgNTtHnpn2gq/7tPicFZOb
 FctgumaqxkAZsq8OYjUM3l3Dr1Cs6BF2sq1MMvdt2BakLYQ/8/KfYIM1vSZsIFuCQhYSj6qj0orxf
 EYyndLW6d6qH+zJXb+Jbe0aoRBqNGjwNdinfdBTALek5hZ0d6d5qPsiB0BMhYqaoPms8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSN-0002tM-QD
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:19 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSN-0008I0-P9
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:19 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] Update version for 4.1.1 release
Message-Id: <E1jOnSN-0008I0-P9@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:12:19 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 99c5874a9b6c9f70aef285d6eff85d4f46de3c52
Author:     Michael Roth <mdroth@linux.vnet.ibm.com>
AuthorDate: Thu Nov 14 12:04:03 2019 -0600
Commit:     Michael Roth <mdroth@linux.vnet.ibm.com>
CommitDate: Thu Nov 14 12:04:03 2019 -0600

    Update version for 4.1.1 release
    
    Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
 VERSION | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/VERSION b/VERSION
index ee74734aa2..627a3f43a6 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.1.0
+4.1.1
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:12:32 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:12:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnSa-0005Oa-4z; Wed, 15 Apr 2020 19:12:32 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnSY-0005OR-On
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:30 +0000
X-Inumbo-ID: 0d5220fe-7f4d-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0d5220fe-7f4d-11ea-83d8-bc764e2007e4;
 Wed, 15 Apr 2020 19:12:30 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=JAmaRf35W4HobaqbpsrClaA2bJDHtAQQZIMHd8QHato=; b=2FkqgAfPGUgDfF8h9cUZmWM+N7
 0xwiVB6iwZMwg7U6W5l5QO0Po+zlAtr/NgjDUKexaT98gt6PbkICrGP7gtbzfKQhrdE0aQNI06j+m
 cFYJxidC0sqGSii1XDDR+1pxzaj3K7JXhcmzxur6cu11/vax7S7VwnMDm1SGVExFGrqo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSX-0002tV-Vh
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:29 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSX-0008IX-Uf
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:29 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] Merge tag 'v4.1.1' of
 https://git.qemu.org/git/qemu into HEAD
Message-Id: <E1jOnSX-0008IX-Uf@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:12:29 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2865b67da41570c5acbb0e0761535b0401a8a54a
Merge: 933ebad2470a169504799a1d95b8e410bd9847ef 99c5874a9b6c9f70aef285d6eff85d4f46de3c52
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Tue Apr 14 18:33:00 2020 +0100
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Tue Apr 14 18:33:00 2020 +0100

    Merge tag 'v4.1.1' of https://git.qemu.org/git/qemu into HEAD
    
    Fix conflict in hw/xen/xen-bus.c. Basically ignore 4.1.1 version and
    use the version of the file already in qemu-xen as it has more patches
    applied.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>

 VERSION                                            |    2 +-
 block/backup.c                                     |   17 +-
 block/create.c                                     |    6 +-
 block/curl.c                                       |  125 +-
 block/file-posix.c                                 |  200 +-
 block/io.c                                         |  413 +-
 block/mirror.c                                     |   19 +-
 block/nfs.c                                        |    6 +-
 block/qcow2-bitmap.c                               |   14 +-
 block/qcow2-cluster.c                              |   12 +-
 block/qcow2-refcount.c                             |    2 +
 block/qcow2.c                                      |    9 +-
 block/qcow2.h                                      |    2 +-
 block/snapshot.c                                   |   26 +-
 block/vpc.c                                        |    3 +-
 blockjob.c                                         |   17 +-
 contrib/libvhost-user/libvhost-user.c              |    3 +-
 dma-helpers.c                                      |   13 +-
 hw/arm/boot.c                                      |    2 +
 hw/block/dataplane/virtio-blk.c                    |    3 +
 hw/core/loader.c                                   |    2 +-
 hw/i386/pc.c                                       |   14 +-
 hw/ide/ahci.c                                      |    3 -
 hw/ide/core.c                                      |   14 -
 hw/net/virtio-net.c                                |   27 +-
 hw/s390x/s390-pci-bus.c                            |    7 +-
 hw/scsi/lsi53c895a.c                               |   41 +-
 hw/virtio/vhost.c                                  |    9 +-
 hw/virtio/virtio.c                                 |    7 +
 include/block/block_int.h                          |    4 +
 include/exec/memory.h                              |   14 +-
 include/hw/virtio/virtio-net.h                     |    2 +
 include/hw/virtio/virtio.h                         |    6 +
 include/qemu/coroutine.h                           |   15 +
 include/qemu/hbitmap.h                             |    5 +
 include/qemu/iov.h                                 |    9 +-
 net/colo-compare.c                                 |    6 +-
 net/vhost-user.c                                   |    4 +
 roms/Makefile.edk2                                 |    7 +-
 scripts/make-release                               |    8 +
 scsi/pr-manager.c                                  |    1 -
 target/alpha/helper.c                              |    4 +-
 target/arm/translate-vfp.inc.c                     |    7 +-
 target/arm/translate.c                             |   21 +-
 target/s390x/translate_vx.inc.c                    |    2 +-
 target/xtensa/core-test_mmuhifi_c3.c               |    3 +-
 target/xtensa/core-test_mmuhifi_c3/core-isa.h      |  116 +-
 .../xtensa/core-test_mmuhifi_c3/gdb-config.inc.c   |  114 +-
 .../core-test_mmuhifi_c3/xtensa-modules.inc.c      | 6384 ++++++++++----------
 tests/acceptance/pc_cpu_hotplug_props.py           |   35 +
 tests/qemu-iotests/030                             |    3 +-
 tests/qemu-iotests/040                             |    3 +-
 tests/qemu-iotests/041                             |    3 +-
 tests/qemu-iotests/044                             |    3 +-
 tests/qemu-iotests/045                             |    3 +-
 tests/qemu-iotests/055                             |    3 +-
 tests/qemu-iotests/056                             |    3 +-
 tests/qemu-iotests/057                             |    3 +-
 tests/qemu-iotests/059.out                         |    2 +-
 tests/qemu-iotests/065                             |    3 +-
 tests/qemu-iotests/096                             |    3 +-
 tests/qemu-iotests/118                             |    3 +-
 tests/qemu-iotests/124                             |    3 +-
 tests/qemu-iotests/129                             |    3 +-
 tests/qemu-iotests/132                             |    3 +-
 tests/qemu-iotests/139                             |    3 +-
 tests/qemu-iotests/147                             |    5 +-
 tests/qemu-iotests/148                             |    3 +-
 tests/qemu-iotests/150.out                         |   11 -
 tests/qemu-iotests/150.out.qcow2                   |   11 +
 tests/qemu-iotests/150.out.raw                     |   12 +
 tests/qemu-iotests/151                             |    3 +-
 tests/qemu-iotests/152                             |    3 +-
 tests/qemu-iotests/155                             |    3 +-
 tests/qemu-iotests/163                             |    3 +-
 tests/qemu-iotests/165                             |    3 +-
 tests/qemu-iotests/169                             |    3 +-
 tests/qemu-iotests/175                             |   19 +-
 tests/qemu-iotests/175.out                         |    8 +-
 tests/qemu-iotests/178.out.qcow2                   |    4 +-
 tests/qemu-iotests/196                             |    3 +-
 tests/qemu-iotests/199                             |    3 +-
 tests/qemu-iotests/205                             |    3 +-
 tests/qemu-iotests/221.out                         |   12 +-
 tests/qemu-iotests/245                             |    3 +-
 tests/qemu-iotests/253.out                         |   12 +-
 tests/qemu-iotests/265                             |   67 +
 tests/qemu-iotests/265.out                         |    6 +
 tests/qemu-iotests/266                             |  153 +
 tests/qemu-iotests/266.out                         |  137 +
 tests/qemu-iotests/267                             |  168 +
 tests/qemu-iotests/267.out                         |  182 +
 tests/qemu-iotests/270                             |   83 +
 tests/qemu-iotests/270.out                         |    9 +
 tests/qemu-iotests/272                             |   79 +
 tests/qemu-iotests/272.out                         |   10 +
 tests/qemu-iotests/common.filter                   |   11 +-
 tests/qemu-iotests/common.rc                       |   20 +
 tests/qemu-iotests/group                           |    5 +
 tests/qemu-iotests/iotests.py                      |   42 +-
 tests/test-hbitmap.c                               |    2 +-
 tests/test-util-filemonitor.c                      |   43 +-
 ui/cocoa.m                                         |   12 +
 util/hbitmap.c                                     |   12 +
 util/iov.c                                         |  143 +-
 105 files changed, 5372 insertions(+), 3771 deletions(-)
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:12:42 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:12:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnSk-0005Pa-7D; Wed, 15 Apr 2020 19:12:42 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnSi-0005PR-UD
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:40 +0000
X-Inumbo-ID: 12e02eb3-7f4d-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 12e02eb3-7f4d-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:12:40 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=9votW9ubfsRo3q63B8jObAvlEVQmNwkTu+qoQBo2p2I=; b=YTGnhM5Lit0LiCIGVIUYpwhXpS
 Xz7N+Zxxy2N+jd1r5grBjb/5pCgyD+TUnuHgfo1IHxq/8I1TXYJHOqKSJ+Ov2G5nXsAVNdOy8AtFc
 +IvF8P2iciweHQYU6LhB4UJPFHShGT8PW898eAX88/xT+owEoqpUmGvqBLQsrALRuO9Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSi-0002ti-2B
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:40 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSi-0008Kg-1E
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:40 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] xen-bus/block: explicitly assign event
 channels to an AioContext
Message-Id: <E1jOnSi-0008Kg-1E@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:12:40 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2c38e9982f671e367e139a723b4bd9f3993fc61f
Author:     Paul Durrant <pdurrant@amazon.com>
AuthorDate: Mon Dec 16 14:34:51 2019 +0000
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Tue Apr 14 18:38:05 2020 +0100

    xen-bus/block: explicitly assign event channels to an AioContext
    
    It is not safe to close an event channel from the QEMU main thread when
    that channel's poller is running in IOThread context.
    
    This patch adds a new xen_device_set_event_channel_context() function
    to explicitly assign the channel AioContext, and modifies
    xen_device_bind_event_channel() to initially assign the channel's poller
    to the QEMU main thread context. The code in xen-block's dataplane is
    then modified to assign the channel to IOThread context during
    xen_block_dataplane_start() and de-assign it during in
    xen_block_dataplane_stop(), such that the channel is always assigned
    back to main thread context before it is closed. aio_set_fd_handler()
    already deals with all the necessary synchronization when moving an fd
    between AioContext-s so no extra code is needed to manage this.
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Paul Durrant <pdurrant@amazon.com>
    Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
    Message-Id: <20191216143451.19024-1-pdurrant@amazon.com>
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    (cherry picked from commit 32d0b7be68216f130dc962533c6fc2f9ad848a8b)
---
 hw/block/dataplane/xen-block.c | 20 ++++++++++++++++++--
 hw/xen/xen-bus.c               | 27 +++++++++++++++++++++++----
 include/hw/xen/xen-bus.h       |  5 ++++-
 3 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.c
index 0f200c5fb0..18ba4ac897 100644
--- a/hw/block/dataplane/xen-block.c
+++ b/hw/block/dataplane/xen-block.c
@@ -685,12 +685,24 @@ void xen_block_dataplane_stop(XenBlockDataPlane *dataplane)
         return;
     }
 
+    xendev = dataplane->xendev;
+
     aio_context_acquire(dataplane->ctx);
+    if (dataplane->event_channel) {
+        /* Only reason for failure is a NULL channel */
+        xen_device_set_event_channel_context(xendev, dataplane->event_channel,
+                                             qemu_get_aio_context(),
+                                             &error_abort);
+    }
     /* Xen doesn't have multiple users for nodes, so this can't fail */
     blk_set_aio_context(dataplane->blk, qemu_get_aio_context(), &error_abort);
     aio_context_release(dataplane->ctx);
 
-    xendev = dataplane->xendev;
+    /*
+     * Now that the context has been moved onto the main thread, cancel
+     * further processing.
+     */
+    qemu_bh_cancel(dataplane->bh);
 
     if (dataplane->event_channel) {
         Error *local_err = NULL;
@@ -807,7 +819,7 @@ void xen_block_dataplane_start(XenBlockDataPlane *dataplane,
     }
 
     dataplane->event_channel =
-        xen_device_bind_event_channel(xendev, dataplane->ctx, event_channel,
+        xen_device_bind_event_channel(xendev, event_channel,
                                       xen_block_dataplane_event, dataplane,
                                       &local_err);
     if (local_err) {
@@ -818,7 +830,11 @@ void xen_block_dataplane_start(XenBlockDataPlane *dataplane,
     aio_context_acquire(dataplane->ctx);
     /* If other users keep the BlockBackend in the iothread, that's ok */
     blk_set_aio_context(dataplane->blk, dataplane->ctx, NULL);
+    /* Only reason for failure is a NULL channel */
+    xen_device_set_event_channel_context(xendev, dataplane->event_channel,
+                                         dataplane->ctx, &error_abort);
     aio_context_release(dataplane->ctx);
+
     return;
 
 stop:
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 63469e0cf9..cf79c5e3a8 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -1089,8 +1089,26 @@ static void xen_device_event(void *opaque)
     }
 }
 
+void xen_device_set_event_channel_context(XenDevice *xendev,
+                                          XenEventChannel *channel,
+                                          AioContext *ctx,
+                                          Error **errp)
+{
+    if (!channel) {
+        error_setg(errp, "bad channel");
+        return;
+    }
+
+    if (channel->ctx)
+        aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
+                           NULL, NULL, NULL, NULL);
+
+    channel->ctx = ctx;
+    aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
+                       xen_device_event, NULL, xen_device_poll, channel);
+}
+
 XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
-                                               AioContext *ctx,
                                                unsigned int port,
                                                XenEventHandler handler,
                                                void *opaque, Error **errp)
@@ -1116,9 +1134,10 @@ XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
     channel->handler = handler;
     channel->opaque = opaque;
 
-    channel->ctx = ctx;
-    aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
-                       xen_device_event, NULL, xen_device_poll, channel);
+    /* Only reason for failure is a NULL channel */
+    xen_device_set_event_channel_context(xendev, channel,
+                                         qemu_get_aio_context(),
+                                         &error_abort);
 
     QLIST_INSERT_HEAD(&xendev->event_channels, channel, list);
 
diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h
index 3d5532258d..c18c1372af 100644
--- a/include/hw/xen/xen-bus.h
+++ b/include/hw/xen/xen-bus.h
@@ -128,10 +128,13 @@ void xen_device_copy_grant_refs(XenDevice *xendev, bool to_domain,
 typedef bool (*XenEventHandler)(void *opaque);
 
 XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
-                                               AioContext *ctx,
                                                unsigned int port,
                                                XenEventHandler handler,
                                                void *opaque, Error **errp);
+void xen_device_set_event_channel_context(XenDevice *xendev,
+                                          XenEventChannel *channel,
+                                          AioContext *ctx,
+                                          Error **errp);
 void xen_device_notify_event_channel(XenDevice *xendev,
                                      XenEventChannel *channel,
                                      Error **errp);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Wed Apr 15 19:12:52 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 15 Apr 2020 19:12:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOnSu-0005Qc-9C; Wed, 15 Apr 2020 19:12:52 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=JszV=57=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOnSs-0005QR-Uu
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:50 +0000
X-Inumbo-ID: 1912981b-7f4d-11ea-8ac5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1912981b-7f4d-11ea-8ac5-12813bfff9fa;
 Wed, 15 Apr 2020 19:12:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=CElZbKSFMLscTble22S8MfAygFbbvF5PVdJ9CceN9v0=; b=tzzC2TaCh4qJmklrCBDqNDQcLQ
 E9Lh9tEq2e3wVtpeYAL4bJREqu/3hqlx/dAi73L3xN4Kaxy95eJAOUxpxM6AtpU1mw4PKyv6bmgIG
 8sVwEROE2u34/nAaZ0J1rbFIH6fNV0Xh1CAbh8SZJeDwDa/LqL73uYDntQJnY0Z4udtw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSs-0002uJ-4d
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:50 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOnSs-0008LV-3k
 for xen-changelog@lists.xenproject.org; Wed, 15 Apr 2020 19:12:50 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen stable-4.13] xen-block: Fix double qlist remove and request
 leak
Message-Id: <E1jOnSs-0008LV-3k@xenbits.xenproject.org>
Date: Wed, 15 Apr 2020 19:12:50 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 730e2b1927e7d911bbd5350714054ddd5912f4ed
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Mon Apr 6 15:02:17 2020 +0100
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Tue Apr 14 18:38:05 2020 +0100

    xen-block: Fix double qlist remove and request leak
    
    Commit a31ca6801c02 ("qemu/queue.h: clear linked list pointers on
    remove") revealed that a request was removed twice from a list, once
    in xen_block_finish_request() and a second time in
    xen_block_release_request() when both function are called from
    xen_block_complete_aio(). But also, the `requests_inflight' counter is
    decreased twice, and thus became negative.
    
    This is a bug that was introduced in bfd0d6366043 ("xen-block: improve
    response latency"), where a `finished' list was removed.
    
    That commit also introduced a leak of request in xen_block_do_aio().
    That function calls xen_block_finish_request() but the request is
    never released after that.
    
    To fix both issue, we do two changes:
    - we squash finish_request() and release_request() together as we want
      to remove a request from 'inflight' list to add it to 'freelist'.
    - before releasing a request, we need to let the other end know the
      result, thus we should call xen_block_send_response() before
      releasing a request.
    
    The first change fixes the double QLIST_REMOVE() as we remove the extra
    call. The second change makes the leak go away because if we want to
    call finish_request(), we need to call a function that does all of
    finish, send response, and release.
    
    Fixes: bfd0d6366043 ("xen-block: improve response latency")
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Message-Id: <20200406140217.1441858-1-anthony.perard@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    [mreitz: Amended commit message as per Paul's suggestions]
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    (cherry picked from commit 36d883ba0de8a281072ded2b51e0a711fd002139)
---
 hw/block/dataplane/xen-block.c | 48 ++++++++++++++----------------------------
 1 file changed, 16 insertions(+), 32 deletions(-)

diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.c
index 18ba4ac897..8f712451a1 100644
--- a/hw/block/dataplane/xen-block.c
+++ b/hw/block/dataplane/xen-block.c
@@ -64,6 +64,8 @@ struct XenBlockDataPlane {
     AioContext *ctx;
 };
 
+static int xen_block_send_response(XenBlockRequest *request);
+
 static void reset_request(XenBlockRequest *request)
 {
     memset(&request->req, 0, sizeof(request->req));
@@ -115,23 +117,26 @@ out:
     return request;
 }
 
-static void xen_block_finish_request(XenBlockRequest *request)
+static void xen_block_complete_request(XenBlockRequest *request)
 {
     XenBlockDataPlane *dataplane = request->dataplane;
 
-    QLIST_REMOVE(request, list);
-    dataplane->requests_inflight--;
-}
+    if (xen_block_send_response(request)) {
+        Error *local_err = NULL;
 
-static void xen_block_release_request(XenBlockRequest *request)
-{
-    XenBlockDataPlane *dataplane = request->dataplane;
+        xen_device_notify_event_channel(dataplane->xendev,
+                                        dataplane->event_channel,
+                                        &local_err);
+        if (local_err) {
+            error_report_err(local_err);
+        }
+    }
 
     QLIST_REMOVE(request, list);
+    dataplane->requests_inflight--;
     reset_request(request);
     request->dataplane = dataplane;
     QLIST_INSERT_HEAD(&dataplane->freelist, request, list);
-    dataplane->requests_inflight--;
 }
 
 /*
@@ -246,7 +251,6 @@ static int xen_block_copy_request(XenBlockRequest *request)
 }
 
 static int xen_block_do_aio(XenBlockRequest *request);
-static int xen_block_send_response(XenBlockRequest *request);
 
 static void xen_block_complete_aio(void *opaque, int ret)
 {
@@ -286,7 +290,6 @@ static void xen_block_complete_aio(void *opaque, int ret)
     }
 
     request->status = request->aio_errors ? BLKIF_RSP_ERROR : BLKIF_RSP_OKAY;
-    xen_block_finish_request(request);
 
     switch (request->req.operation) {
     case BLKIF_OP_WRITE:
@@ -306,17 +309,8 @@ static void xen_block_complete_aio(void *opaque, int ret)
     default:
         break;
     }
-    if (xen_block_send_response(request)) {
-        Error *local_err = NULL;
 
-        xen_device_notify_event_channel(dataplane->xendev,
-                                        dataplane->event_channel,
-                                        &local_err);
-        if (local_err) {
-            error_report_err(local_err);
-        }
-    }
-    xen_block_release_request(request);
+    xen_block_complete_request(request);
 
     if (dataplane->more_work) {
         qemu_bh_schedule(dataplane->bh);
@@ -420,8 +414,8 @@ static int xen_block_do_aio(XenBlockRequest *request)
     return 0;
 
 err:
-    xen_block_finish_request(request);
     request->status = BLKIF_RSP_ERROR;
+    xen_block_complete_request(request);
     return -1;
 }
 
@@ -575,17 +569,7 @@ static bool xen_block_handle_requests(XenBlockDataPlane *dataplane)
                 break;
             };
 
-            if (xen_block_send_response(request)) {
-                Error *local_err = NULL;
-
-                xen_device_notify_event_channel(dataplane->xendev,
-                                                dataplane->event_channel,
-                                                &local_err);
-                if (local_err) {
-                    error_report_err(local_err);
-                }
-            }
-            xen_block_release_request(request);
+            xen_block_complete_request(request);
             continue;
         }
 
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 05:11:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 05:11:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOwno-0007AZ-KC; Thu, 16 Apr 2020 05:11:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOwnn-0007AU-6r
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:03 +0000
X-Inumbo-ID: aa93d85a-7fa0-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id aa93d85a-7fa0-11ea-83d8-bc764e2007e4;
 Thu, 16 Apr 2020 05:11:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=j6Uu21nEvG0uoSpOKX0gpsGiauQJhVzx6+o3BWTLeuI=; b=eBUQEVhGx7a4j3kQbYd/4GeV/l
 scA/lZtsG68ddGfHHxoenYfAcjqZdGtBtd0rOFaiYakpdqck+nHZR7eEF5kYzGRivCV7ISqWFaaJ1
 qIZgF2iz6Ts0vvhuCQ5L6xBgWQ2umLbDNEpYveBWhKxlPZuahYXDzbCHTDaPW0XpcMV4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwnm-0003F1-0I
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwnl-0001MU-VQ
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jOwnl-0001MU-VQ@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 05:11:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 65b16f3d217044380a80f15334ccf83b3eae6bf9
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:48:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:48:26 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 4f3e799ebb..4d909fd5d6 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -253,6 +253,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 05:11:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 05:11:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOwny-0007BA-MB; Thu, 16 Apr 2020 05:11:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOwnx-0007B2-Ra
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:13 +0000
X-Inumbo-ID: b0928f44-7fa0-11ea-8b4d-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b0928f44-7fa0-11ea-8b4d-12813bfff9fa;
 Thu, 16 Apr 2020 05:11:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GE1TClsylcjr4WxfJOZ626ifqVIgM6aH9PLDcw3MtD4=; b=uQwwGEWqSsjXN0goGUtKmKqt3O
 ImgwIdPnTxIX3xkmWtET3Ri6WwCHV/s0L0SY6ooFWjFgq44yQ/yFDThjdXT7ni9D+r9Hq9W11YPfO
 zlJjYuZNbJSbdrCHcWj1wjjDn0bGTJpqw4SJyeChZ0tVn/q01a5R2zsqkToHXL17ezhc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwnw-0003F6-3H
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwnw-0001N6-23
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jOwnw-0001N6-23@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 05:11:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ef922bda43f645749e41bd2730f6206f291be289
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:49:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:49:21 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 4d909fd5d6..b04726cb49 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -479,25 +479,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -506,7 +503,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -530,7 +527,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -539,7 +535,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -570,17 +567,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 05:11:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 05:11:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOwo8-0007CM-Oe; Thu, 16 Apr 2020 05:11:24 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOwo7-0007CB-CR
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:23 +0000
X-Inumbo-ID: b697e560-7fa0-11ea-8b4d-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b697e560-7fa0-11ea-8b4d-12813bfff9fa;
 Thu, 16 Apr 2020 05:11:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xZQiB55SfKs09n/ZZ66Ax89N5957XwXx08J2KXVgKCE=; b=ZodefhoD3NV60IFL0cDz5Rm4fg
 XAPDJ2AcvUUgIABMuC/Cjw+ZPN/dwxETYq8yWqvhhbslg+jliNO7nA2HcNsUfv4XH9nzYihFr8smH
 x92823oSHkIMHKT5V9fJp7HYimzQ1FRqaYFki2gpAtwazADrQmAAg8pc6ibwG3kGSrKc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwo6-0003FI-6c
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwo6-0001Nw-4s
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jOwo6-0001Nw-4s@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 05:11:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b6a2c42303cb70c87de49b4a70e28f7495432f07
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 14:50:16 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:50:16 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 3dfea1ac2a..b31d8af108 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -48,6 +48,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -64,11 +68,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -92,6 +104,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -121,11 +134,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -157,11 +179,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 05:11:33 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 05:11:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOwoH-0007DU-QX; Thu, 16 Apr 2020 05:11:33 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOwoG-0007DM-Vd
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:33 +0000
X-Inumbo-ID: bca324a6-7fa0-11ea-8b4d-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bca324a6-7fa0-11ea-8b4d-12813bfff9fa;
 Thu, 16 Apr 2020 05:11:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5qGm54EX64hezYCvkFXTlji90s6g2Ci5h/ldYvJEu/o=; b=Yafer/42saDT8SFiov3k0XuIh5
 PIqCJAwP6Al5bw34gBOuAQUIXHR+59xLTW5hP0DdQa78wuQbV3UH/kmuSr4z3B6/c1pQz70KblLNl
 LxmRrdNMfjqzoUVx29w4rxgIotoTrJ0ormSu5RamyWvsykWtVDMaot0KEtzeECoFWP8k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwoG-0003FZ-9R
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwoG-0001Ox-8L
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jOwoG-0001Ox-8L@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 05:11:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d91d4fe88146bb4cf8e66819b6c1b762ce0ac6fc
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 14:51:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:51:45 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 5536d282b9..ce0ad578e3 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1032,7 +1032,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 05:11:43 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 05:11:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jOwoR-0007Ee-SX; Thu, 16 Apr 2020 05:11:43 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jOwoQ-0007EW-WD
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:43 +0000
X-Inumbo-ID: c29de396-7fa0-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c29de396-7fa0-11ea-b4f4-bc764e2007e4;
 Thu, 16 Apr 2020 05:11:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=qISIDIDB1Mpw6UCRXJriG2e9hA6S4/AtDX7jjCS8N5I=; b=M24wnJHjfeBrKLyNyS/0O8uZ5e
 ghsnbpiVwXT8kpaTF9mS2/0a0mXNa+MB7vzHELXWcLCbXNDdcY3MMDxj0Wm6PM0jPjRJlNr0nUGWM
 ashLsbHJFlZtaBzNnyBFe62ZTkMtkmPJlqC64jhXwUV9W/pV+/0cJ/hLb/+0cO9G3n2g=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwoQ-0003Gj-CM
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jOwoQ-0001Pa-B9
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 05:11:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jOwoQ-0001Pa-B9@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 05:11:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b66ce5058ec9ce84418cedd39b2bf07b7c5a1f65
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:53:03 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:53:03 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index ce0ad578e3..917e63d370 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3583,8 +3583,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3651,6 +3650,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 08:55:12 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 08:55:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP0Ie-0000yF-4n; Thu, 16 Apr 2020 08:55:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP0Id-0000yA-B1
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 08:55:07 +0000
X-Inumbo-ID: f78dc476-7fbf-11ea-8b69-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f78dc476-7fbf-11ea-8b69-12813bfff9fa;
 Thu, 16 Apr 2020 08:55:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=25kbR2i0ttLGrDEJzDfUif61nX3ygQYSji1potD0QhI=; b=i+6PV3sgTlVsnNfq98bhK5861h
 7dH2VLpyMSsN3EXesKH0F53X85I1RHWKM9O3K1Owlca6kyTrWMPhHb5qjFzFB+cLGjltR7y3dxMc2
 1P13iOaaTe78ybd7J5WFv5/B4I923ook44VUNtb985sQbNV7KLmhTTIXTvjZ8a6kYb1k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0Ib-00085Z-Hc
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 08:55:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0Ib-00005d-GA
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 08:55:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/boot: Fix early exception handling with
 CONFIG_PERF_COUNTERS
Message-Id: <E1jP0Ib-00005d-GA@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 08:55:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 615bfe42c6d183a0e54a0525ef82b58580d01619
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Wed Apr 15 17:01:09 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Thu Apr 16 09:48:38 2020 +0100

    x86/boot: Fix early exception handling with CONFIG_PERF_COUNTERS
    
    The PERFC_INCR() macro uses current->processor, but current is not valid
    during early boot.  This causes the following crash to occur if
    e.g. rdmsr_safe() has to recover from a #GP fault.
    
      (XEN) Early fatal page fault at e008:ffff82d0803b1a39 (cr2=0000000000000004, ec=0000)
      (XEN) ----[ Xen-4.14-unstable  x86_64  debug=y   Not tainted ]----
      (XEN) CPU:    0
      (XEN) RIP:    e008:[<ffff82d0803b1a39>] x86_64/entry.S#handle_exception_saved+0x64/0xb8
      ...
      (XEN) Xen call trace:
      (XEN)    [<ffff82d0803b1a39>] R x86_64/entry.S#handle_exception_saved+0x64/0xb8
      (XEN)    [<ffff82d0806394fe>] F __start_xen+0x2cd/0x2980
      (XEN)    [<ffff82d0802000ec>] F __high_start+0x4c/0x4e
    
    Furthermore, the PERFC_INCR() macro is wildly inefficient.  There has been a
    single caller for many releases now, so inline it and delete the macro
    completely.
    
    There is no need to reference current at all.  What is actually needed is the
    per_cpu_offset which can be obtained directly from the top-of-stack block.
    This simplifies the counter handling to 3 instructions and no spilling to the
    stack at all.
    
    The same breakage from above is now handled properly:
    
      (XEN) traps.c:1591: GPF (0000): ffff82d0806394fe [__start_xen+0x2cd/0x2980] -> ffff82d0803b3bfb
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/x86/x86_64/asm-offsets.c |  1 +
 xen/arch/x86/x86_64/entry.S       |  6 +++++-
 xen/include/asm-x86/asm_defns.h   | 16 ----------------
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index b8e8510439..500df7a3e7 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -112,6 +112,7 @@ void __dummy__(void)
     OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
     OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
     OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
+    OFFSET(CPUINFO_per_cpu_offset, struct cpu_info, per_cpu_offset);
     OFFSET(CPUINFO_cr4, struct cpu_info, cr4);
     OFFSET(CPUINFO_xen_cr3, struct cpu_info, xen_cr3);
     OFFSET(CPUINFO_pv_cr3, struct cpu_info, pv_cr3);
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 997c481ecb..d55453f3f3 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -679,7 +679,11 @@ handle_exception_saved:
 1:      movq  %rsp,%rdi
         movzbl UREGS_entry_vector(%rsp),%eax
         leaq  exception_table(%rip),%rdx
-        PERFC_INCR(exceptions, %rax, %rbx)
+#ifdef CONFIG_PERF_COUNTERS
+        lea   per_cpu__perfcounters(%rip), %rcx
+        add   STACK_CPUINFO_FIELD(per_cpu_offset)(%r14), %rcx
+        incl  ASM_PERFC_exceptions * 4(%rcx, %rax, 4)
+#endif
         mov   (%rdx, %rax, 8), %rdx
         INDIRECT_CALL %rdx
         mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h
index bc9d9fcdb2..b42a19b654 100644
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -346,22 +346,6 @@ static always_inline void stac(void)
 
 #endif
 
-#ifdef CONFIG_PERF_COUNTERS
-#define PERFC_INCR(_name,_idx,_cur)             \
-        pushq _cur;                             \
-        movslq VCPU_processor(_cur),_cur;       \
-        pushq %rdx;                             \
-        leaq __per_cpu_offset(%rip),%rdx;       \
-        movq (%rdx,_cur,8),_cur;                \
-        leaq per_cpu__perfcounters(%rip),%rdx;  \
-        addq %rdx,_cur;                         \
-        popq %rdx;                              \
-        incl ASM_PERFC_##_name*4(_cur,_idx,4);  \
-        popq _cur
-#else
-#define PERFC_INCR(_name,_idx,_cur)
-#endif
-
 /* Work around AMD erratum #88 */
 #define safe_swapgs                             \
         "mfence; swapgs;"
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 09:11:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 09:11:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP0Y7-0002iV-2T; Thu, 16 Apr 2020 09:11:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP0Y5-0002iQ-I1
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:05 +0000
X-Inumbo-ID: 3239dda8-7fc2-11ea-8b6a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3239dda8-7fc2-11ea-8b6a-12813bfff9fa;
 Thu, 16 Apr 2020 09:11:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=9uRapf+zcFCm5Vwoq5nnFphEDE6ciIZIyfSdhrAg0ak=; b=sGUIo/v3Q2s23Q82EVNxW4j7Dy
 hvNN0IaG7dKHlcHP0dGz8gJoRFQh5MM/LsdiFmtatXmgLF0VfCQYv7FOIwgckrQB84IlxIXiOYXcQ
 +FGsXW+pn6i5Rc6O0O+g91nVVAzKrAC3xc6nue0EIcDel1KUNeISfbURtoAqUBhN/+XI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0Y4-0008Pt-8V
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0Y4-0001Sb-7F
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/altp2m: add missing break
Message-Id: <E1jP0Y4-0001Sb-7F@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 09:11:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6b93f3ca85e331e3ad24185668efbde506fb0e18
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 16 10:55:42 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 10:55:42 2020 +0200

    x86/altp2m: add missing break
    
    Add a missing break in the HVMOP_altp2m_set_visibility case, or else
    code flow will continue into the default case and trigger the assert.
    
    Fixes: 3fd3e9303ec4b1 ('x86/altp2m: hypercall to set altp2m view visibility')
    Coverity-ID: 1461759
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/hvm/hvm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 6f6f3f73a8..45959d3412 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4798,6 +4798,7 @@ static int do_altp2m_op(
         else
             rc = p2m_set_altp2m_view_visibility(d, idx,
                                                 a.u.set_visibility.visible);
+        break;
     }
 
     default:
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 09:11:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 09:11:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP0YH-0002j8-4S; Thu, 16 Apr 2020 09:11:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP0YF-0002ix-8L
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:15 +0000
X-Inumbo-ID: 38ff6e44-7fc2-11ea-8b6a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 38ff6e44-7fc2-11ea-8b6a-12813bfff9fa;
 Thu, 16 Apr 2020 09:11:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=l+djd18AsF/OTpvJlDTbBO/zaX8T0wtFnnuAllzPCcw=; b=Fr+JZ5ltRMPjtOSHugjYiw1roO
 AgTNEZLJ14bpZwZPkYDc4LBOtjLW4OSriWkAebryOJMeCjUEg12LXukW9L/877gJGA0BtD9MMF7Vh
 SKfD6T5h7m5F9upES3rOHbu9tQSWH59KKvRsKziO4+XNNFI2Ch4NxwShpSVVsg83TvHU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0YE-0008QT-BU
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0YE-0001TG-AJ
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] hvmloader: enable MMIO and I/O decode,
 after all resource allocation
Message-Id: <E1jP0YE-0001TG-AJ@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 09:11:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a8e0c228c79f3a000e19183090eb41fca173b034
Author:     Harsha Shamsundara Havanur <havanur@amazon.com>
AuthorDate: Thu Apr 16 10:58:46 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 10:58:46 2020 +0200

    hvmloader: enable MMIO and I/O decode, after all resource allocation
    
    It was observed that PCI MMIO and/or IO BARs were programmed with
    memory and I/O decodes (bits 0 and 1 of PCI COMMAND register) enabled,
    during PCI setup phase. This resulted in incorrect memory mapping as
    soon as the lower half of the 64 bit bar is programmed.
    This displaced any RAM mappings under 4G. After the
    upper half is programmed PCI memory mapping is restored to its
    intended high mem location, but the RAM displaced is not restored.
    The OS then continues to boot and function until it tries to access
    the displaced RAM at which point it suffers a page fault and crashes.
    
    This patch address the issue by deferring enablement of memory and
    I/O decode in command register until all the resources, like interrupts
    I/O and/or MMIO BARs for all the PCI device functions are programmed,
    in the descending order of memory requested.
    
    Signed-off-by: Harsha Shamsundara Havanur <havanur@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 tools/firmware/hvmloader/pci.c | 49 +++++++++++++++++++++++++++++++-----------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
index 0b708bf578..dcd097a866 100644
--- a/tools/firmware/hvmloader/pci.c
+++ b/tools/firmware/hvmloader/pci.c
@@ -84,6 +84,7 @@ void pci_setup(void)
     uint32_t vga_devfn = 256;
     uint16_t class, vendor_id, device_id;
     unsigned int bar, pin, link, isa_irq;
+    uint8_t pci_devfn_decode_type[256] = {};
 
     /* Resources assignable to PCI devices via BARs. */
     struct resource {
@@ -120,6 +121,13 @@ void pci_setup(void)
      */
     bool allow_memory_relocate = 1;
 
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_IO !=
+                 PCI_COMMAND_IO);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MEMORY !=
+                 PCI_COMMAND_MEMORY);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MASTER !=
+                 PCI_COMMAND_MASTER);
+
     s = xenstore_read(HVM_XS_ALLOW_MEMORY_RELOCATE, NULL);
     if ( s )
         allow_memory_relocate = strtoll(s, NULL, 0);
@@ -208,6 +216,20 @@ void pci_setup(void)
             break;
         }
 
+        /*
+         * It is recommended that BAR programming be done whilst decode
+         * bits are cleared to avoid incorrect mappings being created.
+         * When 64-bit memory BAR is programmed, first by writing the
+         * lower half and then the upper half, which maps to an address
+         * under 4G, as soon as lower half is wriiten, replacing any RAM
+         * mapped in that address, which is not restored back after the
+         * upper half is written and PCI memory is correctly mapped to
+         * its intended high mem address.
+         */
+        cmd = pci_readw(devfn, PCI_COMMAND);
+        cmd &= ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
+        pci_writew(devfn, PCI_COMMAND, cmd);
+
         /* Map the I/O memory and port resources. */
         for ( bar = 0; bar < 7; bar++ )
         {
@@ -289,10 +311,8 @@ void pci_setup(void)
                    devfn>>3, devfn&7, 'A'+pin-1, isa_irq);
         }
 
-        /* Enable bus mastering. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_MASTER;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+        /* Enable bus master for this function later */
+        pci_devfn_decode_type[devfn] = PCI_COMMAND_MASTER;
     }
 
     if ( mmio_hole_size )
@@ -497,16 +517,12 @@ void pci_setup(void)
                PRIllx_arg(bar_sz),
                bar_data_upper, bar_data);
 			
-
-        /* Now enable the memory or I/O mapping. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
         if ( (bar_reg == PCI_ROM_ADDRESS) ||
              ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
               PCI_BASE_ADDRESS_SPACE_MEMORY) )
-            cmd |= PCI_COMMAND_MEMORY;
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_MEMORY;
         else
-            cmd |= PCI_COMMAND_IO;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_IO;
     }
 
     if ( pci_hi_mem_start )
@@ -526,10 +542,17 @@ void pci_setup(void)
          * has IO enabled, even if there is no I/O BAR on that
          * particular device.
          */
-        cmd = pci_readw(vga_devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_IO;
-        pci_writew(vga_devfn, PCI_COMMAND, cmd);
+        pci_devfn_decode_type[vga_devfn] |= PCI_COMMAND_IO;
     }
+
+    /* Enable bus master, memory and I/O decode for all valid functions. */
+    for ( devfn = 0; devfn < 256; devfn++ )
+        if ( pci_devfn_decode_type[devfn] )
+        {
+            cmd = pci_readw(devfn, PCI_COMMAND);
+            cmd |= pci_devfn_decode_type[devfn];
+            pci_writew(devfn, PCI_COMMAND, cmd);
+        }
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 09:11:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 09:11:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP0YR-0002kQ-77; Thu, 16 Apr 2020 09:11:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP0YP-0002kC-6q
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:25 +0000
X-Inumbo-ID: 3eb79119-7fc2-11ea-8b6a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3eb79119-7fc2-11ea-8b6a-12813bfff9fa;
 Thu, 16 Apr 2020 09:11:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=drbkf8lcHzgw9m4O2B5L1d1xEevkL9UQu8CnDSHCSCQ=; b=ITRM27hd328MhKlL/erq7fwL9P
 9W8Pf/zWLa0R3YcWPDFGW2R5/0hLQTI0zD61CkIPUBY2PUrDMBP31JCVlj5umSVMJ2WgPRRx8cqO+
 Qt+5N0cG+HFkJEXkqLFM8RSrqbtM1g8eAdu86f57jKzJW3zoOoXwXCXTbChRi3N4vKIg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0YO-0008Qg-EO
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0YO-0001UR-DH
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shim: map and unmap page tables in
 replace_va_mapping
Message-Id: <E1jP0YO-0001UR-DH@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 09:11:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6c8afe5aadb33761431b24157d99b25eac15fc7e
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 16 11:01:46 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 11:01:46 2020 +0200

    x86/shim: map and unmap page tables in replace_va_mapping
    
    Also, introduce lYe_from_lXe() macros which do not rely on the direct
    map when walking page tables. Unfortunately, they cannot be inline
    functions due to the header dependency on domain_page.h, so keep them as
    macros just like map_lYt_from_lXe().
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/pv/shim.c     |  9 +++++----
 xen/include/asm-x86/page.h | 19 +++++++++++++++++++
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c
index ed2ece8a8a..31264582cc 100644
--- a/xen/arch/x86/pv/shim.c
+++ b/xen/arch/x86/pv/shim.c
@@ -168,16 +168,17 @@ const struct platform_bad_page *__init pv_shim_reserved_pages(unsigned int *size
 static void __init replace_va_mapping(struct domain *d, l4_pgentry_t *l4start,
                                       unsigned long va, mfn_t mfn)
 {
-    l4_pgentry_t *pl4e = l4start + l4_table_offset(va);
-    l3_pgentry_t *pl3e = l4e_to_l3e(*pl4e) + l3_table_offset(va);
-    l2_pgentry_t *pl2e = l3e_to_l2e(*pl3e) + l2_table_offset(va);
-    l1_pgentry_t *pl1e = l2e_to_l1e(*pl2e) + l1_table_offset(va);
+    l4_pgentry_t l4e = l4start[l4_table_offset(va)];
+    l3_pgentry_t l3e = l3e_from_l4e(l4e, l3_table_offset(va));
+    l2_pgentry_t l2e = l2e_from_l3e(l3e, l2_table_offset(va));
+    l1_pgentry_t *pl1e = map_l1t_from_l2e(l2e) + l1_table_offset(va);
     struct page_info *page = mfn_to_page(l1e_get_mfn(*pl1e));
 
     put_page_and_type(page);
 
     *pl1e = l1e_from_mfn(mfn, (!is_pv_32bit_domain(d) ? L1_PROT
                                                       : COMPAT_L1_PROT));
+    unmap_domain_page(pl1e);
 }
 
 static void evtchn_reserve(struct domain *d, unsigned int port)
diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h
index eb73a0fc23..5acf3d3d5a 100644
--- a/xen/include/asm-x86/page.h
+++ b/xen/include/asm-x86/page.h
@@ -197,6 +197,25 @@ static inline l4_pgentry_t l4e_from_paddr(paddr_t pa, unsigned int flags)
 #define map_l2t_from_l3e(x)        (l2_pgentry_t *)map_domain_page(l3e_get_mfn(x))
 #define map_l3t_from_l4e(x)        (l3_pgentry_t *)map_domain_page(l4e_get_mfn(x))
 
+/* Unlike lYe_to_lXe(), lXe_from_lYe() do not rely on the direct map. */
+#define l1e_from_l2e(l2e_, offset_) ({                      \
+        const l1_pgentry_t *l1t_ = map_l1t_from_l2e(l2e_);  \
+        l1_pgentry_t l1e_ = l1t_[offset_];                  \
+        unmap_domain_page(l1t_);                            \
+        l1e_; })
+
+#define l2e_from_l3e(l3e_, offset_) ({                      \
+        const l2_pgentry_t *l2t_ = map_l2t_from_l3e(l3e_);  \
+        l2_pgentry_t l2e_ = l2t_[offset_];                  \
+        unmap_domain_page(l2t_);                            \
+        l2e_; })
+
+#define l3e_from_l4e(l4e_, offset_) ({                      \
+        const l3_pgentry_t *l3t_ = map_l3t_from_l4e(l4e_);  \
+        l3_pgentry_t l3e_ = l3t_[offset_];                  \
+        unmap_domain_page(l3t_);                            \
+        l3e_; })
+
 /* Given a virtual address, get an entry offset into a page table. */
 #define l1_table_offset(a)         \
     (((a) >> L1_PAGETABLE_SHIFT) & (L1_PAGETABLE_ENTRIES - 1))
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 09:11:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 09:11:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP0Yb-0002lX-96; Thu, 16 Apr 2020 09:11:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP0YZ-0002lH-88
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:35 +0000
X-Inumbo-ID: 45034c42-7fc2-11ea-8b6a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 45034c42-7fc2-11ea-8b6a-12813bfff9fa;
 Thu, 16 Apr 2020 09:11:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rPW2uqBOaLl5avD+zg69sgoBCZdXzsJGPpWCJuE4Pco=; b=pXl3TIJXk1UmXsgmabHUpcNIT7
 xLNggI3xVUr8/gXohoUWpcr0OhQK6fR1sxW6rOMXu62G3ToErP4z3xk2SzO6B1YXDJ1wxAb5azOCe
 l30L1eF8gMlHddm1ax4VZb+EDYQRkit+XeqLEa+utiIDm7LTMF/xf8yBK0sMFRHkpsyw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0YY-0008Ry-HE
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0YY-0001V0-G5
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86_64/mm: map and unmap page tables in m2p_mapped
Message-Id: <E1jP0YY-0001V0-G5@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 09:11:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f362f5b5d09f42c045e1fc32dbad3a661f4b5de5
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 16 11:04:51 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 11:04:51 2020 +0200

    x86_64/mm: map and unmap page tables in m2p_mapped
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index cee836ec37..41755ded26 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -129,14 +129,13 @@ static mfn_t alloc_hotadd_mfn(struct mem_hotadd_info *info)
 static int m2p_mapped(unsigned long spfn)
 {
     unsigned long va;
-    l3_pgentry_t *l3_ro_mpt;
-    l2_pgentry_t *l2_ro_mpt;
+    l3_pgentry_t l3e;
+    l2_pgentry_t l2e;
 
     va = RO_MPT_VIRT_START + spfn * sizeof(*machine_to_phys_mapping);
-    l3_ro_mpt = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
+    l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(va)], l3_table_offset(va));
 
-    switch ( l3e_get_flags(l3_ro_mpt[l3_table_offset(va)]) &
-             (_PAGE_PRESENT |_PAGE_PSE))
+    switch ( l3e_get_flags(l3e) & (_PAGE_PRESENT | _PAGE_PSE) )
     {
         case _PAGE_PSE|_PAGE_PRESENT:
             return M2P_1G_MAPPED;
@@ -146,9 +145,9 @@ static int m2p_mapped(unsigned long spfn)
         default:
             return M2P_NO_MAPPED;
     }
-    l2_ro_mpt = l3e_to_l2e(l3_ro_mpt[l3_table_offset(va)]);
+    l2e = l2e_from_l3e(l3e, l2_table_offset(va));
 
-    if (l2e_get_flags(l2_ro_mpt[l2_table_offset(va)]) & _PAGE_PRESENT)
+    if ( l2e_get_flags(l2e) & _PAGE_PRESENT )
         return M2P_2M_MAPPED;
 
     return M2P_NO_MAPPED;
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 09:11:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 09:11:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP0Yl-0002mZ-BE; Thu, 16 Apr 2020 09:11:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP0Yj-0002mK-A1
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:45 +0000
X-Inumbo-ID: 4b054b4a-7fc2-11ea-8b6a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4b054b4a-7fc2-11ea-8b6a-12813bfff9fa;
 Thu, 16 Apr 2020 09:11:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Dg++EZZ4z1Mi2DD4BNj4D8HKjgorAYbJGN5vAnrYGvg=; b=oYY9EOKcuCqao3C7Y5QyDTil3M
 vgMD0/HgdAn09PBJ+ST8z995F2cGH1w2zXKYZ8OIFbOLYIGw0PLwUX50WPowL6Nyrwy8r6vByD4u5
 9eZvo234Ru79+2LP6iqvVAVSXbawRl7MXQaaR3RlX/CsRDU9UyDTa+WPkDGSLKK++ZXQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0Yi-0008S7-Js
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0Yi-0001Vm-Iw
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86_64/mm: map and unmap page tables in
 share_hotadd_m2p_table
Message-Id: <E1jP0Yi-0001Vm-Iw@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 09:11:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 15b7bec5784c85ac44e5fa45533e7d51259b8191
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 16 11:05:28 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 11:05:28 2020 +0200

    x86_64/mm: map and unmap page tables in share_hotadd_m2p_table
    
    Fetch lYe by mapping and unmapping lXe instead of using the direct map,
    which is now done via the lYe_from_lXe() helpers.
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 41755ded26..cfaeae84e9 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -166,14 +166,14 @@ static int share_hotadd_m2p_table(struct mem_hotadd_info *info)
           v += n << PAGE_SHIFT )
     {
         n = L2_PAGETABLE_ENTRIES * L1_PAGETABLE_ENTRIES;
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-            l3_table_offset(v)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                           l3_table_offset(v));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
             continue;
         if ( !(l3e_get_flags(l3e) & _PAGE_PSE) )
         {
             n = L1_PAGETABLE_ENTRIES;
-            l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+            l2e = l2e_from_l3e(l3e, l2_table_offset(v));
             if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
                 continue;
             m2p_start_mfn = l2e_get_mfn(l2e);
@@ -194,11 +194,11 @@ static int share_hotadd_m2p_table(struct mem_hotadd_info *info)
           v != RDWR_COMPAT_MPT_VIRT_END;
           v += 1 << L2_PAGETABLE_SHIFT )
     {
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-            l3_table_offset(v)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                           l3_table_offset(v));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
             continue;
-        l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+        l2e = l2e_from_l3e(l3e, l2_table_offset(v));
         if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
             continue;
         m2p_start_mfn = l2e_get_mfn(l2e);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 09:11:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 09:11:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP0Yv-0002oI-DE; Thu, 16 Apr 2020 09:11:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP0Yt-0002nx-De
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:55 +0000
X-Inumbo-ID: 50b5a8b6-7fc2-11ea-8b6a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 50b5a8b6-7fc2-11ea-8b6a-12813bfff9fa;
 Thu, 16 Apr 2020 09:11:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=BPNj5ksi3tEOJzwhbEE1qg98kTCuwOZHKs6ditIj0FA=; b=GLqwiriHMJwwVb98S6r9sl400x
 ohuosxOI3JLNx6PurGwmpo9pjZG1q0FJc0+ucftga1YaO2GfqcuIa0YP1tSQ0tJ8FjSjOi3SxJTl5
 HF7s+BCJwZM/lo8fWTNALp0BcrnQa4k4PG19xRaKSOWNSttyPZyU1+mfSGoVb8IdO2OA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0Ys-0008SG-ML
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP0Ys-0001WM-LW
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 09:11:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86_64/mm: map and unmap page tables in
 destroy_m2p_mapping
Message-Id: <E1jP0Ys-0001WM-LW@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 09:11:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a48e1323f9aa29f1ffb95594671b73de6bd7c1d4
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 16 11:05:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 11:05:58 2020 +0200

    x86_64/mm: map and unmap page tables in destroy_m2p_mapping
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index cfaeae84e9..e85ef449f3 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -263,7 +263,8 @@ static void destroy_m2p_mapping(struct mem_hotadd_info *info)
     unsigned long i, va, rwva;
     unsigned long smap = info->spfn, emap = info->epfn;
 
-    l3_ro_mpt = l4e_to_l3e(idle_pg_table[l4_table_offset(RO_MPT_VIRT_START)]);
+    l3_ro_mpt = map_l3t_from_l4e(
+                    idle_pg_table[l4_table_offset(RO_MPT_VIRT_START)]);
 
     /*
      * No need to clean m2p structure existing before the hotplug
@@ -271,7 +272,7 @@ static void destroy_m2p_mapping(struct mem_hotadd_info *info)
     for (i = smap; i < emap;)
     {
         unsigned long pt_pfn;
-        l2_pgentry_t *l2_ro_mpt;
+        l2_pgentry_t *pl2e;
 
         va = RO_MPT_VIRT_START + i * sizeof(*machine_to_phys_mapping);
         rwva = RDWR_MPT_VIRT_START + i * sizeof(*machine_to_phys_mapping);
@@ -285,26 +286,30 @@ static void destroy_m2p_mapping(struct mem_hotadd_info *info)
             continue;
         }
 
-        l2_ro_mpt = l3e_to_l2e(l3_ro_mpt[l3_table_offset(va)]);
-        if (!(l2e_get_flags(l2_ro_mpt[l2_table_offset(va)]) & _PAGE_PRESENT))
+        pl2e = map_l2t_from_l3e(l3_ro_mpt[l3_table_offset(va)]) +
+                    l2_table_offset(va);
+        if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
         {
             i = ( i & ~((1UL << (L2_PAGETABLE_SHIFT - 3)) - 1)) +
                     (1UL << (L2_PAGETABLE_SHIFT - 3)) ;
+            UNMAP_DOMAIN_PAGE(pl2e);
             continue;
         }
 
-        pt_pfn = l2e_get_pfn(l2_ro_mpt[l2_table_offset(va)]);
+        pt_pfn = l2e_get_pfn(*pl2e);
         if ( hotadd_mem_valid(pt_pfn, info) )
         {
             destroy_xen_mappings(rwva, rwva + (1UL << L2_PAGETABLE_SHIFT));
 
-            l2_ro_mpt = l3e_to_l2e(l3_ro_mpt[l3_table_offset(va)]);
-            l2e_write(&l2_ro_mpt[l2_table_offset(va)], l2e_empty());
+            l2e_write(pl2e, l2e_empty());
         }
         i = ( i & ~((1UL << (L2_PAGETABLE_SHIFT - 3)) - 1)) +
               (1UL << (L2_PAGETABLE_SHIFT - 3));
+        unmap_domain_page(pl2e);
     }
 
+    UNMAP_DOMAIN_PAGE(l3_ro_mpt);
+
     destroy_compat_m2p_mapping(info);
 
     /* Brute-Force flush all TLB */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:22:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:22:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4Sy-0001J2-Dy; Thu, 16 Apr 2020 13:22:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4Sx-0001Ix-8d
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:03 +0000
X-Inumbo-ID: 421e08e6-7fe5-11ea-8b92-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 421e08e6-7fe5-11ea-8b92-12813bfff9fa;
 Thu, 16 Apr 2020 13:22:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=uz/qVZRRU+iL9M4nX8gPmfAW7cx3B5reeU76LdXNDZs=; b=m7GzZX2BV3O2tNBvn0GFBOlHth
 CO5swAfbM371MLNFgSvzCAx2Ewnzg8Mestaav9EaFe03rnR9q24r9kiu+8qx1ZHocTWKWAoAR1rKn
 m4wg2G4vcqOiQ2qa745s+V1J5+qm1OLeBbjiJU6yetac/bNsIkib1S84j391RNueGcEA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4Sw-00050p-0Q
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4Sv-0002X9-VI
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xenoprof: clear buffer intended to be shared with guests
Message-Id: <E1jP4Sv-0002X9-VI@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:22:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:32:33 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:32:33 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 4f3e799ebb..4d909fd5d6 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -253,6 +253,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:22:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:22:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4T8-0001Jk-G8; Thu, 16 Apr 2020 13:22:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4T7-0001Ja-8N
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:13 +0000
X-Inumbo-ID: 4820d9bc-7fe5-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4820d9bc-7fe5-11ea-9e09-bc764e2007e4;
 Thu, 16 Apr 2020 13:22:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Swj6SXyBWkpy5HiandYlu8Ld5ViXPneOeEe8MOxSIdw=; b=1FHk5HSrAOB/rID2t04/nfysp8
 sn15eaEuf67Jx4sqvR9pt1xEb6MblVmLjM505HeU95Gtdsm77h6nhrYhG+DQB62Hi+ch7bNo5AJWe
 RgaKRvVSez9yq31GxI2cFSrStJyzHCGtG7Y9FUBgps7RNd4QY7oOoJB97YnQNaJTM8N4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4T6-00051a-4C
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4T6-0002Xr-2L
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jP4T6-0002Xr-2L@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:22:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:33:19 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:33:19 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 4d909fd5d6..b04726cb49 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -479,25 +479,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -506,7 +503,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -530,7 +527,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -539,7 +535,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -570,17 +567,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:22:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:22:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4TI-0001Kz-Hi; Thu, 16 Apr 2020 13:22:24 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4TH-0001Kn-2j
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:23 +0000
X-Inumbo-ID: 4e22ba9c-7fe5-11ea-8b92-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4e22ba9c-7fe5-11ea-8b92-12813bfff9fa;
 Thu, 16 Apr 2020 13:22:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=w/53VYWMAIggZS/fS0WnBXe49xV/9QyzUMgaDKtxfYM=; b=M1s0bS8xgXB1/pdCXR5WNS/IrE
 L/wPCgfaRwYRg6u92sKDtkxGRh+0aCPhcD24ZKGtYG3NwQfEtHA/1qFv8eWeQdBnJ9lJxZV0q+OEh
 YtTY8QyYejQ2pll691j3S685K0gfz8NawlcvWSfbIxgYWi33S9Ji8LlMEgi4ipRI3jzY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4TG-00051m-7H
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4TG-0002YR-61
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/rwlock: Add missing memory barrier in the unlock
 path of rwlock
Message-Id: <E1jP4TG-0002YR-61@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:22:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6890a04072e664c25447a297fe663b45ecfd6398
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Thu Feb 20 20:54:40 2020 +0000
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:37:11 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 4d1b48c722..427664037a 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -60,6 +60,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(_can_read_lock(cnts)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(_can_read_lock(cnts)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -78,11 +82,19 @@ static inline void _read_lock(rwlock_t *lock)
 
     preempt_disable();
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(_can_read_lock(cnts)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -106,6 +118,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -141,12 +154,21 @@ static inline unsigned int _write_lock_val(void)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
     preempt_disable();
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _write_lock_val()) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -183,12 +205,17 @@ static inline int _write_trylock(rwlock_t *lock)
         return 0;
     }
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return 1;
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
     ASSERT(_is_write_locked_by_me(atomic_read(&lock->cnts)));
+    arch_lock_release_barrier();
     atomic_and(~(_QW_CPUMASK | _QW_WMASK), &lock->cnts);
     preempt_enable();
 }
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:22:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:22:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4TS-0001M0-Jw; Thu, 16 Apr 2020 13:22:34 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4TQ-0001Lo-Uf
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:32 +0000
X-Inumbo-ID: 542636f8-7fe5-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 542636f8-7fe5-11ea-b4f4-bc764e2007e4;
 Thu, 16 Apr 2020 13:22:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XuOwZqw8tl04cqr9BKXgC9d1/bKzSEDSjahGkFutFa8=; b=AO6lLF2n53aSI2TaUS26b6QIog
 ixCnxKhHmOUMhfizRk67woR/QM39qaqBdZT1Hnn8E+y25KUTGOcRmzF8UDYuy1NO+AoZDrGFudEtB
 M+hyIyv2HpW+94GWzOYy+t722jRq5cNpI/Ka5sGlh6HmRV3TjhtOX+amItSQKlPVd8ys=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4TQ-000521-AB
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4TQ-0002aB-96
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jP4TQ-0002aB-96@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:22:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit da0c66c8f48042a0186799014af69db0303b1da5
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 14:41:02 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:41:02 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 9fd6e60416..4b5344dc21 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1031,7 +1031,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:22:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:22:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4Tc-0001N8-Ls; Thu, 16 Apr 2020 13:22:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4Tb-0001My-4o
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:43 +0000
X-Inumbo-ID: 599e019d-7fe5-11ea-8b92-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 599e019d-7fe5-11ea-8b92-12813bfff9fa;
 Thu, 16 Apr 2020 13:22:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GV4E1SJnZbkpe91vR3vP8DaH1kduV/gBASv5nFAFxo4=; b=jOFd9O6+CARwaysg+t3GhCiabm
 u8vimeaJQx5ZEgrbIN1qbCn0T/8IX78UB+nqEX3e0NqZEGDtOxAqAhFtmESZeI6SXmvrReM2Lvn8d
 oruGkc3mEB37iQ/3rnLOz0TvCl8GwBrpuyFUh7i4CShliLdGxB02Z3m/1B1XSJGx848k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4Ta-00052A-Dn
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4Ta-0002bF-Bx
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jP4Ta-0002bF-Bx@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:22:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d6f22d5d9e8d6848ec229083ac9fb044f0adea93
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 14:42:32 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 14:42:32 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 4b5344dc21..96080b3dec 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3576,8 +3576,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3644,6 +3643,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:22:54 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:22:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4Tm-0001O8-Nk; Thu, 16 Apr 2020 13:22:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4Tl-0001Nv-Ax
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:53 +0000
X-Inumbo-ID: 6030f2d0-7fe5-11ea-8b92-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6030f2d0-7fe5-11ea-8b92-12813bfff9fa;
 Thu, 16 Apr 2020 13:22:52 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=JcANuMkgjQAEu4vNDgHp3rKu5JFwsXn3pVQn9a/DvW8=; b=vnaPyP2kIDx0PfhxLc6XNuSRvX
 kcclapqxrEV7W27a5YcLCVMaAXqCfbHc7T6VVOWofddfVjFIHna8V4mDXrGfLAEvJLdrHwrDbX+Tp
 Y3y+bhZRGGii9hc4M1Qm5qgAShTwrx2ZtD8rF9Z2uEOfzLuw0gvZzgIi9MmuoDJrtB7A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4Tk-00052J-Gd
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:52 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4Tk-0002c6-Fd
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:22:52 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/svm: Don't use vmcb->tlb_control as if it is a
 boolean
Message-Id: <E1jP4Tk-0002c6-Fd@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:22:52 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit fcd06227f83643194f8018f8dd37adce57763a61
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Tue Feb 12 18:37:04 2019 +0000
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Tue Apr 14 15:56:52 2020 +0100

    x86/svm: Don't use vmcb->tlb_control as if it is a boolean
    
    svm_asid_handle_vmrun() treats tlb_control as if it were boolean, but this has
    been superseded by new additions to the SVM spec.
    
    Introduce an enum containing all legal values, and update
    svm_asid_handle_vmrun() to use appropriate constants.
    
    While adjusting this, take the opportunity to fix up two coding style issues,
    and trim the include list.
    
    No functional change.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/hvm/svm/asid.c        | 15 +++++++--------
 xen/include/asm-x86/hvm/svm/vmcb.h | 13 ++++++++++++-
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/hvm/svm/asid.c b/xen/arch/x86/hvm/svm/asid.c
index e554e25213..9be90058c7 100644
--- a/xen/arch/x86/hvm/svm/asid.c
+++ b/xen/arch/x86/hvm/svm/asid.c
@@ -15,12 +15,9 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <xen/init.h>
-#include <xen/lib.h>
-#include <xen/perfc.h>
-#include <asm/hvm/svm/asid.h>
 #include <asm/amd.h>
 #include <asm/hvm/nestedhvm.h>
+#include <asm/hvm/svm/asid.h>
 
 void svm_asid_init(const struct cpuinfo_x86 *c)
 {
@@ -44,19 +41,21 @@ void svm_asid_handle_vmrun(void)
     struct hvm_vcpu_asid *p_asid =
         nestedhvm_vcpu_in_guestmode(curr)
         ? &vcpu_nestedhvm(curr).nv_n2asid : &curr->arch.hvm.n1asid;
-    bool_t need_flush = hvm_asid_handle_vmenter(p_asid);
+    bool need_flush = hvm_asid_handle_vmenter(p_asid);
 
     /* ASID 0 indicates that ASIDs are disabled. */
     if ( p_asid->asid == 0 )
     {
         vmcb_set_guest_asid(vmcb, 1);
-        vmcb->tlb_control = 1;
+        /* TODO: investigate using TLB_CTRL_FLUSH_ASID here instead. */
+        vmcb->tlb_control = TLB_CTRL_FLUSH_ALL;
         return;
     }
 
-    if (vmcb_get_guest_asid(vmcb) != p_asid->asid)
+    if ( vmcb_get_guest_asid(vmcb) != p_asid->asid )
         vmcb_set_guest_asid(vmcb, p_asid->asid);
-    vmcb->tlb_control = need_flush;
+
+    vmcb->tlb_control = need_flush ? TLB_CTRL_FLUSH_ALL : TLB_CTRL_NO_FLUSH;
 }
 
 /*
diff --git a/xen/include/asm-x86/hvm/svm/vmcb.h b/xen/include/asm-x86/hvm/svm/vmcb.h
index e5ed38369e..c2e1972feb 100644
--- a/xen/include/asm-x86/hvm/svm/vmcb.h
+++ b/xen/include/asm-x86/hvm/svm/vmcb.h
@@ -302,6 +302,17 @@ enum VMEXIT_EXITCODE
     VMEXIT_INVALID          =  -1
 };
 
+enum
+{
+    /* Available on all SVM-capable hardware. */
+    TLB_CTRL_NO_FLUSH             = 0,
+    TLB_CTRL_FLUSH_ALL            = 1,
+
+    /* Available with the FlushByASID feature. */
+    TLB_CTRL_FLUSH_ASID           = 3,
+    TLB_CTRL_FLUSH_ASID_NONGLOBAL = 7,
+};
+
 typedef union
 {
     struct
@@ -419,7 +430,7 @@ struct vmcb_struct {
     u64 _msrpm_base_pa;         /* offset 0x48 - cleanbit 1 */
     u64 _tsc_offset;            /* offset 0x50 - cleanbit 0 */
     u32 _guest_asid;            /* offset 0x58 - cleanbit 2 */
-    u8  tlb_control;            /* offset 0x5C */
+    u8  tlb_control;            /* offset 0x5C - TLB_CTRL_* */
     u8  res07[3];
     vintr_t _vintr;             /* offset 0x60 - cleanbit 3 */
     intstat_t int_stat;         /* offset 0x68 */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:33:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:33:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4dc-0002au-Tn; Thu, 16 Apr 2020 13:33:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4db-0002ad-2Z
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:03 +0000
X-Inumbo-ID: cab39eaf-7fe6-11ea-8b92-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id cab39eaf-7fe6-11ea-8b92-12813bfff9fa;
 Thu, 16 Apr 2020 13:33:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ku/VFqWrFCeQlhVgER+EK+hejJjRjGAFse4BD5qdgzc=; b=mVte5vDX+HvXxIhy0Th+SdE6Pn
 uMKWXY6EE1RATJgJrVRw2NPhBXt5Gt/t5mTxAnsvCkFiAznc8rHS/igQpWOY/iozN013RD7WJwwr1
 i+lmfnWJrQYvXQlUnpDUIMGuYDdzIUi43QxEdulyO9wPyfDerWGOH6yM5fI6yMqSbV6k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4dZ-0005F5-Mm
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4dZ-0003HM-La
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [mini-os master] mini-os: use -m elf_i386 for final linking
Message-Id: <E1jP4dZ-0003HM-La@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:33:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 203498c11cdb4e0dbfc90aa8d60319032288925c
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 16 15:17:15 2020 +0200
Commit:     Wei Liu <wl@xen.org>
CommitDate: Thu Apr 16 14:29:16 2020 +0100

    mini-os: use -m elf_i386 for final linking
    
    Using the standard -m elf_x86_64 for 64-bit mini-os results in the
    first section (.text) to start only at offset 2MB in the binary file.
    
    Quoting Andrew Cooper on that topic:
    
      Specifically, 64bit emulation appears to include "align primary
      sections to 2M so your OS can make better use of superpages even when
      mmap()ing", with no way I can spot to override this in the linker
      file.
    
    Using -m elf_i386 avoids that problem without any visible disadvantage.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 arch/x86/arch.mk | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/arch.mk b/arch/x86/arch.mk
index c87885f..00028a0 100644
--- a/arch/x86/arch.mk
+++ b/arch/x86/arch.mk
@@ -26,3 +26,5 @@ ifeq ($(CONFIG_PARAVIRT),n)
 ARCH_LDFLAGS_FINAL := --oformat=elf32-i386
 ARCH_AS_DEPS += x86_hvm.S
 endif
+
+ARCH_LDFLAGS_FINAL += -m elf_i386
--
generated by git-patchbot for /home/xen/git/mini-os.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:33:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:33:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4dl-0002cI-VX; Thu, 16 Apr 2020 13:33:13 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4dk-0002c1-Eu
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:12 +0000
X-Inumbo-ID: d1500e6e-7fe6-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d1500e6e-7fe6-11ea-83d8-bc764e2007e4;
 Thu, 16 Apr 2020 13:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=EZjHulr+MRRsuM75aqC4Ov3zmL1VE+/1HJ6/MWV4hoo=; b=ZOMZwNSvDpRe3wN++3inmv5kud
 U2p2brZxdu8zwMYKjp50jA/ynR96RTiZBIhrY7E8piTvqccTwByezRhxaJp9zXRAzDG49BSNLMyyn
 +eZOFOeF0HV/68pb+bTjlPQNc11dsE4R8H4i2vS7T9ZrPQfi2C7h8gRfkad00tJcP4p0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4dj-0005Fq-P9
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:11 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4dj-0003Hx-ON
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:11 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [mini-os master] mini-os: provide binary without debug information
Message-Id: <E1jP4dj-0003Hx-ON@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:33:11 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0f13d7a4e930ff0a9023fb98dbfb5ffea6c48bd8
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 16 14:27:48 2020 +0200
Commit:     Wei Liu <wl@xen.org>
CommitDate: Thu Apr 16 14:29:46 2020 +0100

    mini-os: provide binary without debug information
    
    Provide a mini-os binary stripped from debug information in order to
    have a smaller resulting kernel file. The binary with debug
    information is kept with the suffix "-debug".
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 Makefile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 6a05de6..be640cd 100644
--- a/Makefile
+++ b/Makefile
@@ -167,7 +167,9 @@ $(OBJ_DIR)/arch/x86/minios-x86%.lds:  arch/x86/minios-x86.lds.S
 $(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib $(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds
 	$(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(APP_O) $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@.o
 	$(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
-	$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@
+	$(LD) $(LDFLAGS) $(LDFLAGS_FINAL) $@.o $(EXTRA_OBJS) -o $@-debug
+	strip -s $@-debug -o $@
+	gzip -n -f -9 -c $@-debug >$@-debug.gz
 	gzip -n -f -9 -c $@ >$@.gz
 
 .PHONY: config
--
generated by git-patchbot for /home/xen/git/mini-os.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 13:33:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 13:33:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP4dv-0002dv-0u; Thu, 16 Apr 2020 13:33:23 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP4du-0002dl-Eh
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:22 +0000
X-Inumbo-ID: d74cef4e-7fe6-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d74cef4e-7fe6-11ea-b4f4-bc764e2007e4;
 Thu, 16 Apr 2020 13:33:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5xDhtnaAdT7Pau3iFxH3hFezBaGdY2yn4XY/y1RV3ic=; b=F0ctI58O44VaaBy6WRt0NUpSEe
 /39gjA776RXj9m3e1mxHUVctFPOAHIS3WXyTD6pqtGytSfUL1g07B9OMariuBtVa6SKegEz/gyQwu
 zZ/bdYcc5HKJgbqeW3y2MxhJlICIHSRCpODYNbDjiOVXIuCPEY3Urppep2vCJpk5rWLI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4dt-0005G1-Ra
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:21 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP4dt-0003IV-Qd
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 13:33:21 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [mini-os master] mini-os: allow 4096 event channels for 64-bit mini-os
Message-Id: <E1jP4dt-0003IV-Qd@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 13:33:21 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 47e1bb4c95c8eee1ccf358c2d8df96667bd0c3ce
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Thu Apr 16 14:27:00 2020 +0200
Commit:     Wei Liu <wl@xen.org>
CommitDate: Thu Apr 16 14:31:30 2020 +0100

    mini-os: allow 4096 event channels for 64-bit mini-os
    
    Limiting the number of event channels to 1024 is fine for 32-bit
    builds, but not for 64-bit ones. This might be a problem when using
    Xenstore-stubdom as the number of domains which can be supported is
    then limited to a little bit more than 1000.
    
    So raise the number of event channels to 4096 in 64-bit builds.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 events.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/events.c b/events.c
index 342aead..cdae90f 100644
--- a/events.c
+++ b/events.c
@@ -23,7 +23,7 @@
 #include <mini-os/lib.h>
 #include <xen/xsm/flask_op.h>
 
-#define NR_EVS 1024
+#define NR_EVS EVTCHN_2L_NR_CHANNELS
 
 /* this represents a event handler. Chaining or sharing is not allowed */
 typedef struct _ev_action_t {
--
generated by git-patchbot for /home/xen/git/mini-os.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 15:11:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 15:11:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP6AS-0003I5-PL; Thu, 16 Apr 2020 15:11:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP6AR-0003Hy-K4
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:03 +0000
X-Inumbo-ID: 7c442f28-7ff4-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7c442f28-7ff4-11ea-b58d-bc764e2007e4;
 Thu, 16 Apr 2020 15:11:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=sBCItor6hlz3n0pmgQSBCsQnS80RqSVLtnLCPtg5II0=; b=jkL8d7b3IpsDPkM/Lh3Rb0QlUe
 B9gkDk1r2lGnc9hx6aJFELmbsdJSRVc8RcIEHy8+1vlJLNeFu0xYHSNE6wTTNQ1yG+n8v3iic+9A4
 6pru/ruEbzfIMP5KRY+7J1MnkfsCAVAwlM9MmbsfzsolqV4GQpa09BDmjLaWnLSCmUhY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6AQ-0007DC-1V
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6AQ-0001PZ-0J
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.10] xenoprof: clear buffer intended to be shared with
 guests
Message-Id: <E1jP6AQ-0001PZ-0J@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 15:11:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3e0c3163a0171914afb8d1fba44afafeac4b2267
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:08:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:08:26 2020 +0200

    xenoprof: clear buffer intended to be shared with guests
    
    alloc_xenheap_pages() making use of MEMF_no_scrub is fine for Xen
    internally used allocations, but buffers allocated to be shared with
    (unpriviliged) guests need to be zapped of their prior content.
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0763a7ebfcdad66cf9e5475a1301eefb29bae9ed
    master date: 2020-04-14 14:32:33 +0200
---
 xen/common/xenoprof.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index 5acdde5691..e4a3a0702f 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -257,6 +257,9 @@ static int alloc_xenoprof_struct(
         return -ENOMEM;
     }
 
+    for ( i = 0; i < npages; ++i )
+        clear_page(d->xenoprof->rawbuf + i * PAGE_SIZE);
+
     d->xenoprof->npages = npages;
     d->xenoprof->nbuf = nvcpu;
     d->xenoprof->bufsize = bufsize;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.10


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 15:11:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 15:11:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP6Ab-0003Iz-RC; Thu, 16 Apr 2020 15:11:13 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP6Ab-0003Is-2H
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:13 +0000
X-Inumbo-ID: 82477d62-7ff4-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 82477d62-7ff4-11ea-b58d-bc764e2007e4;
 Thu, 16 Apr 2020 15:11:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hNKMB+jHcLVI9C9Dq5W6mO1XRHBxz+k2UG6lHVzClGU=; b=P02xJik3sd4Ri/l0eEQwEpBbls
 xYIB+H79Ho9iGDU3RKmGPi+J1ughgO6ZbdCFtz/RjVEsW+sxKUgcGe7o78PxDHSufARMnZHDaOtYC
 i5bBw9f6X8xI9P5rGAY+qTSi2En5wiu++3mSLxqvO19wL+HWqV/HLgPBXV2sjwpbBMYs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6Aa-0007DP-51
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6Aa-0001QH-3o
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.10] xenoprof: limit consumption of shared buffer data
Message-Id: <E1jP6Aa-0001QH-3o@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 15:11:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a91b8fc39e46c7b270c63882a1033b3c4faef5bf
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:10:48 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:10:48 2020 +0200

    xenoprof: limit consumption of shared buffer data
    
    Since a shared buffer can be written to by the guest, we may only read
    the head and tail pointers from there (all other fields should only ever
    be written to). Furthermore, for any particular operation the two values
    must be read exactly once, with both checks and consumption happening
    with the thus read values. (The backtrace related xenoprof_buf_space()
    use in xenoprof_log_event() is an exception: The values used there get
    re-checked by every subsequent xenoprof_add_sample().)
    
    Since that code needed touching, also fix the double increment of the
    lost samples count in case the backtrace related xenoprof_add_sample()
    invocation in xenoprof_log_event() fails.
    
    Where code is being touched anyway, add const as appropriate, but take
    the opportunity to entirely drop the now unused domain parameter of
    xenoprof_buf_space().
    
    This is part of XSA-313.
    
    Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 50ef9a3cb26e2f9383f6fdfbed361d8f174bae9f
    master date: 2020-04-14 14:33:19 +0200
---
 xen/common/xenoprof.c      | 32 +++++++++++++++++---------------
 xen/include/xen/xenoprof.h |  8 ++++----
 2 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/common/xenoprof.c b/xen/common/xenoprof.c
index e4a3a0702f..57b39f27b5 100644
--- a/xen/common/xenoprof.c
+++ b/xen/common/xenoprof.c
@@ -483,25 +483,22 @@ static int add_passive_list(XEN_GUEST_HANDLE_PARAM(void) arg)
 
 
 /* Get space in the buffer */
-static int xenoprof_buf_space(struct domain *d, xenoprof_buf_t * buf, int size)
+static int xenoprof_buf_space(int head, int tail, int size)
 {
-    int head, tail;
-
-    head = xenoprof_buf(d, buf, event_head);
-    tail = xenoprof_buf(d, buf, event_tail);
-
     return ((tail > head) ? 0 : size) + tail - head - 1;
 }
 
 /* Check for space and add a sample. Return 1 if successful, 0 otherwise. */
-static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
+static int xenoprof_add_sample(const struct domain *d,
+                               const struct xenoprof_vcpu *v,
                                uint64_t eip, int mode, int event)
 {
+    xenoprof_buf_t *buf = v->buffer;
     int head, tail, size;
 
     head = xenoprof_buf(d, buf, event_head);
     tail = xenoprof_buf(d, buf, event_tail);
-    size = xenoprof_buf(d, buf, event_size);
+    size = v->event_size;
     
     /* make sure indexes in shared buffer are sane */
     if ( (head < 0) || (head >= size) || (tail < 0) || (tail >= size) )
@@ -510,7 +507,7 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
         return 0;
     }
 
-    if ( xenoprof_buf_space(d, buf, size) > 0 )
+    if ( xenoprof_buf_space(head, tail, size) > 0 )
     {
         xenoprof_buf(d, buf, event_log[head].eip) = eip;
         xenoprof_buf(d, buf, event_log[head].mode) = mode;
@@ -534,7 +531,6 @@ static int xenoprof_add_sample(struct domain *d, xenoprof_buf_t *buf,
 int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
 {
     struct domain *d = vcpu->domain;
-    xenoprof_buf_t *buf = d->xenoprof->vcpu[vcpu->vcpu_id].buffer;
 
     /* Do not accidentally write an escape code due to a broken frame. */
     if ( pc == XENOPROF_ESCAPE_CODE )
@@ -543,7 +539,8 @@ int xenoprof_add_trace(struct vcpu *vcpu, uint64_t pc, int mode)
         return 0;
     }
 
-    return xenoprof_add_sample(d, buf, pc, mode, 0);
+    return xenoprof_add_sample(d, &d->xenoprof->vcpu[vcpu->vcpu_id],
+                               pc, mode, 0);
 }
 
 void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
@@ -574,17 +571,22 @@ void xenoprof_log_event(struct vcpu *vcpu, const struct cpu_user_regs *regs,
     /* Provide backtrace if requested. */
     if ( backtrace_depth > 0 )
     {
-        if ( (xenoprof_buf_space(d, buf, v->event_size) < 2) ||
-             !xenoprof_add_sample(d, buf, XENOPROF_ESCAPE_CODE, mode, 
-                                  XENOPROF_TRACE_BEGIN) )
+        if ( xenoprof_buf_space(xenoprof_buf(d, buf, event_head),
+                                xenoprof_buf(d, buf, event_tail),
+                                v->event_size) < 2 )
         {
             xenoprof_buf(d, buf, lost_samples)++;
             lost_samples++;
             return;
         }
+
+        /* xenoprof_add_sample() will increment lost_samples on failure */
+        if ( !xenoprof_add_sample(d, v, XENOPROF_ESCAPE_CODE, mode,
+                                  XENOPROF_TRACE_BEGIN) )
+            return;
     }
 
-    if ( xenoprof_add_sample(d, buf, pc, mode, event) )
+    if ( xenoprof_add_sample(d, v, pc, mode, event) )
     {
         if ( is_active(vcpu->domain) )
             active_samples++;
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index 8f045abce6..f1f9446bd5 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -61,12 +61,12 @@ struct xenoprof {
 
 #ifndef CONFIG_COMPAT
 #define XENOPROF_COMPAT(x) 0
-#define xenoprof_buf(d, b, field) ((b)->field)
+#define xenoprof_buf(d, b, field) ACCESS_ONCE((b)->field)
 #else
 #define XENOPROF_COMPAT(x) ((x)->is_compat)
-#define xenoprof_buf(d, b, field) (*(!(d)->xenoprof->is_compat ? \
-                                       &(b)->native.field : \
-                                       &(b)->compat.field))
+#define xenoprof_buf(d, b, field) ACCESS_ONCE(*(!(d)->xenoprof->is_compat \
+                                                ? &(b)->native.field \
+                                                : &(b)->compat.field))
 #endif
 
 struct domain;
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.10


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 15:11:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 15:11:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP6Al-0003KN-Tg; Thu, 16 Apr 2020 15:11:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP6Al-0003KF-4N
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:23 +0000
X-Inumbo-ID: 87816754-7ff4-11ea-8bb4-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 87816754-7ff4-11ea-8bb4-12813bfff9fa;
 Thu, 16 Apr 2020 15:11:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=EkvUH4GHHuM73Gqxfc3kKB3ASMPi45Q+BPeJs+0cnLA=; b=QzrAivdLMTvHHd4HBsJ5a2+gN6
 tZjVxu07gwiDhVSMzVYYxZFDfnLXvUTceya0OXnHkqOmh+4A1sIxMPXjacV5S4PRqxxrVgxpzIlkS
 84pfhSXSZm0vkyhQhZrJnxjjFI4cZMD8ryPCztoLIgsWXiiLY7WhQmnyf4kFCj3IjM+8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6Ak-0007E6-7n
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6Ak-0001RE-6k
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.10] xen/rwlock: Add missing memory barrier in the
 unlock path of rwlock
Message-Id: <E1jP6Ak-0001RE-6k@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 15:11:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 38e589d4b0eeb917e14cc021e62669f04cabd31b
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Tue Apr 14 15:11:38 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:11:38 2020 +0200

    xen/rwlock: Add missing memory barrier in the unlock path of rwlock
    
    The rwlock unlock paths are using atomic_sub() to release the lock.
    However the implementation of atomic_sub() rightfully doesn't contain a
    memory barrier. On Arm, this means a processor is allowed to re-order
    the memory access with the preceeding access.
    
    In other words, the unlock may be seen by another processor before all
    the memory accesses within the "critical" section.
    
    The rwlock paths already contains barrier indirectly, but they are not
    very useful without the counterpart in the unlock paths.
    
    The memory barriers are not necessary on x86 because loads/stores are
    not re-ordered with lock instructions.
    
    So add arch_lock_release_barrier() in the unlock paths that will only
    add memory barrier on Arm.
    
    Take the opportunity to document each lock paths explaining why a
    barrier is not necessary.
    
    This is XSA-314.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    master commit: 6890a04072e664c25447a297fe663b45ecfd6398
    master date: 2020-04-14 14:37:11 +0200
---
 xen/include/xen/rwlock.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 35657c56c4..15c3f8155e 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -47,6 +47,10 @@ static inline int _read_trylock(rwlock_t *lock)
     if ( likely(!(cnts & _QW_WMASK)) )
     {
         cnts = (u32)atomic_add_return(_QR_BIAS, &lock->cnts);
+        /*
+         * atomic_add_return() is a full barrier so no need for an
+         * arch_lock_acquire_barrier().
+         */
         if ( likely(!(cnts & _QW_WMASK)) )
             return 1;
         atomic_sub(_QR_BIAS, &lock->cnts);
@@ -63,11 +67,19 @@ static inline void _read_lock(rwlock_t *lock)
     u32 cnts;
 
     cnts = atomic_add_return(_QR_BIAS, &lock->cnts);
+    /*
+     * atomic_add_return() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( likely(!(cnts & _QW_WMASK)) )
         return;
 
     /* The slowpath will decrement the reader count, if necessary. */
     queue_read_lock_slowpath(lock);
+    /*
+     * queue_read_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _read_lock_irq(rwlock_t *lock)
@@ -91,6 +103,7 @@ static inline unsigned long _read_lock_irqsave(rwlock_t *lock)
  */
 static inline void _read_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * Atomically decrement the reader count
      */
@@ -120,11 +133,20 @@ static inline int _rw_is_locked(rwlock_t *lock)
  */
 static inline void _write_lock(rwlock_t *lock)
 {
-    /* Optimize for the unfair lock case where the fair flag is 0. */
+    /*
+     * Optimize for the unfair lock case where the fair flag is 0.
+     *
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     if ( atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0 )
         return;
 
     queue_write_lock_slowpath(lock);
+    /*
+     * queue_write_lock_slowpath() is using spinlock and therefore is a
+     * full barrier. So no need for an arch_lock_acquire_barrier().
+     */
 }
 
 static inline void _write_lock_irq(rwlock_t *lock)
@@ -156,11 +178,16 @@ static inline int _write_trylock(rwlock_t *lock)
     if ( unlikely(cnts) )
         return 0;
 
+    /*
+     * atomic_cmpxchg() is a full barrier so no need for an
+     * arch_lock_acquire_barrier().
+     */
     return likely(atomic_cmpxchg(&lock->cnts, 0, _QW_LOCKED) == 0);
 }
 
 static inline void _write_unlock(rwlock_t *lock)
 {
+    arch_lock_release_barrier();
     /*
      * If the writer field is atomic, it can be cleared directly.
      * Otherwise, an atomic subtraction will be used to clear it.
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.10


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 15:11:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 15:11:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP6Aw-0003Lw-0s; Thu, 16 Apr 2020 15:11:34 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP6Au-0003Lm-Vl
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:33 +0000
X-Inumbo-ID: 8e4d9f6a-7ff4-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8e4d9f6a-7ff4-11ea-b4f4-bc764e2007e4;
 Thu, 16 Apr 2020 15:11:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nnok59Qbkm9c4ozTFBKPznGIMco4DEKD0ufkCCd3io8=; b=y6/rcsf/5s4wkqfPKWws2sSkjz
 g4h3y2VNZsm1RGCgYjqfryV39WvlrfTDWRTugxyvYweCOa0H/I7Ei3oos9h5ARdDmt5fFGGsi72JW
 i8lfFfhJ5Yn9rtUCuWWYblmvany08AbviBviExISk4ZmbsuXZ7+wJ+9IKMpIb92Kthqk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6Au-0007EH-AX
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6Au-0001Rk-9S
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.10] xen/gnttab: Fix error path in map_grant_ref()
Message-Id: <E1jP6Au-0001Rk-9S@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 15:11:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit cbedabf8276f95bb4e93a5df43257790de87daad
Author:     Ross Lagerwall <ross.lagerwall@citrix.com>
AuthorDate: Tue Apr 14 15:13:24 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:13:24 2020 +0200

    xen/gnttab: Fix error path in map_grant_ref()
    
    Part of XSA-295 (c/s 863e74eb2cffb) inadvertently re-positioned the brackets,
    changing the logic.  If the _set_status() call fails, the grant_map hypercall
    would fail with a status of 1 (rc != GNTST_okay) instead of the expected
    negative GNTST_* error.
    
    This error path can be taken due to bad guest state, and causes net/blk-back
    in Linux to crash.
    
    This is XSA-316.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: da0c66c8f48042a0186799014af69db0303b1da5
    master date: 2020-04-14 14:41:02 +0200
---
 xen/common/grant_table.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index da7b644702..0583d56734 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -999,7 +999,7 @@ map_grant_ref(
     {
         if ( (rc = _set_status(shah, status, rd, rgt->gt_version, act,
                                op->flags & GNTMAP_readonly, 1,
-                               ld->domain_id) != GNTST_okay) )
+                               ld->domain_id)) != GNTST_okay )
             goto act_release_out;
 
         if ( !act->pin )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.10


From xen-changelog-bounces@lists.xenproject.org Thu Apr 16 15:11:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 16 Apr 2020 15:11:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jP6B6-0003N9-36; Thu, 16 Apr 2020 15:11:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=6hGn=6A=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jP6B5-0003N1-6u
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:43 +0000
X-Inumbo-ID: 94549ba2-7ff4-11ea-8bb4-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 94549ba2-7ff4-11ea-8bb4-12813bfff9fa;
 Thu, 16 Apr 2020 15:11:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=WiV+Og16KG3OnxR546gqVSW8d9yU4D3S0rVr8UDt350=; b=6o/u31QlnocZXDipIu+qmCMCuF
 6mdIgIxAzh0wvboss85ya0AZQvHZaolhQWF9A5wxWFl7AgGcwMQByQExoou6PsQBHtdZ6sHGYpg5g
 yfBaNWAPJ++80yDDsMtE4KFtygDcmD8jdJJWIe5I+UKQDBC2CK4ZbLxzlVIvvT6qJuMo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6B4-0007FZ-EC
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jP6B4-0001SW-Cb
 for xen-changelog@lists.xenproject.org; Thu, 16 Apr 2020 15:11:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.10] gnttab: fix GNTTABOP_copy continuation handling
Message-Id: <E1jP6B4-0001SW-Cb@xenbits.xenproject.org>
Date: Thu, 16 Apr 2020 15:11:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 24d62e126296b3f67dabdd49887d41d8ed69487f
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 14 15:14:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 14 15:14:21 2020 +0200

    gnttab: fix GNTTABOP_copy continuation handling
    
    The XSA-226 fix was flawed - the backwards transformation on rc was done
    too early, causing a continuation to not get invoked when the need for
    preemption was determined at the very first iteration of the request.
    This in particular means that all of the status fields of the individual
    operations would be left untouched, i.e. set to whatever the caller may
    or may not have initialized them to.
    
    This is part of XSA-318.
    
    Reported-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Tested-by: Pawel Wieczorkiewicz <wipawel@amazon.de>
    master commit: d6f22d5d9e8d6848ec229083ac9fb044f0adea93
    master date: 2020-04-14 14:42:32 +0200
---
 xen/common/grant_table.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 0583d56734..ecbaa019b4 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3513,8 +3513,7 @@ do_grant_table_op(
         rc = gnttab_copy(copy, count);
         if ( rc > 0 )
         {
-            rc = count - rc;
-            guest_handle_add_offset(copy, rc);
+            guest_handle_add_offset(copy, count - rc);
             uop = guest_handle_cast(copy, void);
         }
         break;
@@ -3581,6 +3580,9 @@ do_grant_table_op(
   out:
     if ( rc > 0 || opaque_out != 0 )
     {
+        /* Adjust rc, see gnttab_copy() for why this is needed. */
+        if ( cmd == GNTTABOP_copy )
+            rc = count - rc;
         ASSERT(rc < count);
         ASSERT((opaque_out & GNTTABOP_CMD_MASK) == 0);
         rc = hypercall_create_continuation(__HYPERVISOR_grant_table_op, "ihi",
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.10


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 04:22:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 04:22:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPIVw-00056M-O9; Fri, 17 Apr 2020 04:22:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPIVv-00056H-FA
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 04:22:03 +0000
X-Inumbo-ID: fc70ebb5-8062-11ea-8c5f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fc70ebb5-8062-11ea-8c5f-12813bfff9fa;
 Fri, 17 Apr 2020 04:22:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ugQkmPvrVnzn//T2Fm63BBBfTGc0UCV80uKCLMzaVzY=; b=IbPR9/mpfKoi+3sc8Kqii97BKq
 Z40lG9WuKUyConfNlddAh4F4fdhmGkiNiRaNJ1A6PIydphzIjPVsG7/M5vLz5q1k/kzx5pOhLdbAz
 lC7/4wGCaBO7aXvcHl2hoZompLyxwMumJxRjzDNBnk3DmLDGcgzKHB0WyrqNqwBBrK5s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPIVu-0003pX-3I
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 04:22:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPIVu-0005CW-1d
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 04:22:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/boot: Fix early exception handling with
 CONFIG_PERF_COUNTERS
Message-Id: <E1jPIVu-0005CW-1d@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 04:22:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 615bfe42c6d183a0e54a0525ef82b58580d01619
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Wed Apr 15 17:01:09 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Thu Apr 16 09:48:38 2020 +0100

    x86/boot: Fix early exception handling with CONFIG_PERF_COUNTERS
    
    The PERFC_INCR() macro uses current->processor, but current is not valid
    during early boot.  This causes the following crash to occur if
    e.g. rdmsr_safe() has to recover from a #GP fault.
    
      (XEN) Early fatal page fault at e008:ffff82d0803b1a39 (cr2=0000000000000004, ec=0000)
      (XEN) ----[ Xen-4.14-unstable  x86_64  debug=y   Not tainted ]----
      (XEN) CPU:    0
      (XEN) RIP:    e008:[<ffff82d0803b1a39>] x86_64/entry.S#handle_exception_saved+0x64/0xb8
      ...
      (XEN) Xen call trace:
      (XEN)    [<ffff82d0803b1a39>] R x86_64/entry.S#handle_exception_saved+0x64/0xb8
      (XEN)    [<ffff82d0806394fe>] F __start_xen+0x2cd/0x2980
      (XEN)    [<ffff82d0802000ec>] F __high_start+0x4c/0x4e
    
    Furthermore, the PERFC_INCR() macro is wildly inefficient.  There has been a
    single caller for many releases now, so inline it and delete the macro
    completely.
    
    There is no need to reference current at all.  What is actually needed is the
    per_cpu_offset which can be obtained directly from the top-of-stack block.
    This simplifies the counter handling to 3 instructions and no spilling to the
    stack at all.
    
    The same breakage from above is now handled properly:
    
      (XEN) traps.c:1591: GPF (0000): ffff82d0806394fe [__start_xen+0x2cd/0x2980] -> ffff82d0803b3bfb
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/x86/x86_64/asm-offsets.c |  1 +
 xen/arch/x86/x86_64/entry.S       |  6 +++++-
 xen/include/asm-x86/asm_defns.h   | 16 ----------------
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index b8e8510439..500df7a3e7 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -112,6 +112,7 @@ void __dummy__(void)
     OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
     OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
     OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
+    OFFSET(CPUINFO_per_cpu_offset, struct cpu_info, per_cpu_offset);
     OFFSET(CPUINFO_cr4, struct cpu_info, cr4);
     OFFSET(CPUINFO_xen_cr3, struct cpu_info, xen_cr3);
     OFFSET(CPUINFO_pv_cr3, struct cpu_info, pv_cr3);
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 997c481ecb..d55453f3f3 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -679,7 +679,11 @@ handle_exception_saved:
 1:      movq  %rsp,%rdi
         movzbl UREGS_entry_vector(%rsp),%eax
         leaq  exception_table(%rip),%rdx
-        PERFC_INCR(exceptions, %rax, %rbx)
+#ifdef CONFIG_PERF_COUNTERS
+        lea   per_cpu__perfcounters(%rip), %rcx
+        add   STACK_CPUINFO_FIELD(per_cpu_offset)(%r14), %rcx
+        incl  ASM_PERFC_exceptions * 4(%rcx, %rax, 4)
+#endif
         mov   (%rdx, %rax, 8), %rdx
         INDIRECT_CALL %rdx
         mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h
index bc9d9fcdb2..b42a19b654 100644
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -346,22 +346,6 @@ static always_inline void stac(void)
 
 #endif
 
-#ifdef CONFIG_PERF_COUNTERS
-#define PERFC_INCR(_name,_idx,_cur)             \
-        pushq _cur;                             \
-        movslq VCPU_processor(_cur),_cur;       \
-        pushq %rdx;                             \
-        leaq __per_cpu_offset(%rip),%rdx;       \
-        movq (%rdx,_cur,8),_cur;                \
-        leaq per_cpu__perfcounters(%rip),%rdx;  \
-        addq %rdx,_cur;                         \
-        popq %rdx;                              \
-        incl ASM_PERFC_##_name*4(_cur,_idx,4);  \
-        popq _cur
-#else
-#define PERFC_INCR(_name,_idx,_cur)
-#endif
-
 /* Work around AMD erratum #88 */
 #define safe_swapgs                             \
         "mfence; swapgs;"
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 07:33:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 07:33:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPLUp-0004vg-GF; Fri, 17 Apr 2020 07:33:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPLUn-0004vb-Sd
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 07:33:05 +0000
X-Inumbo-ID: acae5ae2-807d-11ea-8c84-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id acae5ae2-807d-11ea-8c84-12813bfff9fa;
 Fri, 17 Apr 2020 07:33:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=DeVkCOC7lkjFEeJI1MuYvB+4cGEEF+hcGUsY0gysxIw=; b=dbjU/b7XqxUaFb8hLZ7hDe/2BK
 OnUh2+rD/isjb/cIY3uvm7z9ePYA4g55zjJTAH2uOFZGpYLYWV3aS5rYcy/INkeTi7bdJUycLbbUX
 pv+Oofk2SjN8zZmTW3F7cDCE9eYRoCoDkTRiotnADMOZk6zW5uiDGKRx0YKbULXzefBc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPLUm-0007w7-9Q
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 07:33:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPLUm-0002FE-8D
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 07:33:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] sched/core: fix bug when moving a domain between
 cpupools
Message-Id: <E1jPLUm-0002FE-8D@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 07:33:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ee97008433f15e60478058c8ace514b939b6f862
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Fri Apr 17 09:27:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 17 09:27:21 2020 +0200

    sched/core: fix bug when moving a domain between cpupools
    
    For each UNIT, sched_set_affinity is called before unit->priv is updated
    to the new cpupool private UNIT data structure. The issue is
    sched_set_affinity will call the adjust_affinity method of the cpupool.
    If defined, the new cpupool may use unit->priv (e.g. credit), which at
    this point still references the old cpupool private UNIT data structure.
    
    This change fixes the bug by moving the switch of unit->priv earler in
    the function.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Dario Faggioli <dfaggioli@suse.com>
---
 xen/common/sched/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index 626861a3fe..c4ed070470 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -686,6 +686,7 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
         unsigned int unit_p = new_p;
 
         unitdata = unit->priv;
+        unit->priv = unit_priv[unit_idx];
 
         for_each_sched_unit_vcpu ( unit, v )
         {
@@ -707,7 +708,6 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
          */
         spin_unlock_irq(lock);
 
-        unit->priv = unit_priv[unit_idx];
         if ( !d->is_dying )
             sched_move_irqs(unit);
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 07:33:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 07:33:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPLUy-0004wJ-I3; Fri, 17 Apr 2020 07:33:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPLUx-0004wE-RX
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 07:33:15 +0000
X-Inumbo-ID: b2adc004-807d-11ea-8c84-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b2adc004-807d-11ea-8c84-12813bfff9fa;
 Fri, 17 Apr 2020 07:33:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nx996atyvx9m8Bp/jp1yFEWUpqBP3iCID/zvjTXykhQ=; b=pcdPrsx6LE6+/lh0j4ab042Mtp
 MTMRImkuzUgL6Htcw4LV2NuTrgolEVrtAL3o4FQgLs48wBipbq955DTh6Ns1iccD7cFruXmlLfaBA
 1sqxLtQk3z9lKKii6KVcnuIpo/+6XOxrew01136KiHDBu5RZqTdNBWfJZvwNf6Q+WAEo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPLUw-0007wD-CM
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 07:33:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPLUw-0002Ft-BA
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 07:33:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] sched: fix scheduler_disable() with core scheduling
Message-Id: <E1jPLUw-0002Ft-BA@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 07:33:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 82dd1a956d9b68f52e830d1dddfdfb4ab4d5a638
Author:     Sergey Dyasli <sergey.dyasli@citrix.com>
AuthorDate: Fri Apr 17 09:28:16 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 17 09:28:16 2020 +0200

    sched: fix scheduler_disable() with core scheduling
    
    In core-scheduling mode, Xen might crash when entering ACPI S5 state.
    This happens in sched_slave() during is_idle_unit(next) check because
    next->vcpu_list is stale and points to an already freed memory.
    
    This situation happens shortly after scheduler_disable() is called if
    some CPU is still inside sched_slave() softirq. Current logic simply
    returns prev->next_task from sched_wait_rendezvous_in() which causes
    the described crash because next_task->vcpu_list has become invalid.
    
    Fix the crash by returning NULL from sched_wait_rendezvous_in() in
    the case when scheduler_disable() has been called.
    
    Signed-off-by: Sergey Dyasli <sergey.dyasli@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
---
 xen/common/sched/core.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index c4ed070470..d94b95285f 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -2484,19 +2484,15 @@ static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
 
         *lock = pcpu_schedule_lock_irq(cpu);
 
-        if ( unlikely(!scheduler_active) )
-        {
-            ASSERT(is_idle_unit(prev));
-            atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
-            prev->rendezvous_in_cnt = 0;
-        }
-
         /*
          * Check for scheduling resource switched. This happens when we are
          * moved away from our cpupool and cpus are subject of the idle
          * scheduler now.
+         *
+         * This is also a bail out case when scheduler_disable() has been
+         * called.
          */
-        if ( unlikely(sr != get_sched_res(cpu)) )
+        if ( unlikely(sr != get_sched_res(cpu) || !scheduler_active) )
         {
             ASSERT(is_idle_unit(prev));
             atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 12:11:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 12:11:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPPpq-0004gW-6T; Fri, 17 Apr 2020 12:11:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPPpo-0004gR-Qu
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 12:11:04 +0000
X-Inumbo-ID: 8274edb4-80a4-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8274edb4-80a4-11ea-b58d-bc764e2007e4;
 Fri, 17 Apr 2020 12:11:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=T09QWatfgenHzs7G4/4yAYzQlm7y1nN0sfeNw0gNS8g=; b=vQJhpuhiGjDxm+Hb86dkVeq9bW
 EDjEcUwbTmP8wPejLKAHSGI1JEgt3Ovc7IuU2/7i/7qiMxoc7TuujhpNw+2rlZo7NdcB8IGAstk5N
 ex1uQ8TK45qG+j8jGAix45fq/cuG1zT7VAOI8LjrE4i5NOmE4ICRU/7PCQ6Oux1Z0W/M=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPPpn-0005Rj-QD
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 12:11:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPPpn-0004Ke-P1
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 12:11:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.11] update Xen version to 4.11.4
Message-Id: <E1jPPpn-0004Ke-P1@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 12:11:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 96a8b5bc48be2ae9691369849036453f8850135b
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Fri Apr 17 13:58:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 17 13:58:20 2020 +0200

    update Xen version to 4.11.4
---
 Config.mk    | 6 +++---
 xen/Makefile | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Config.mk b/Config.mk
index f1ed5e9184..735e53a9d7 100644
--- a/Config.mk
+++ b/Config.mk
@@ -275,15 +275,15 @@ SEABIOS_UPSTREAM_URL ?= git://xenbits.xen.org/seabios.git
 MINIOS_UPSTREAM_URL ?= git://xenbits.xen.org/mini-os.git
 endif
 OVMF_UPSTREAM_REVISION ?= 947f3737abf65fda63f3ffd97fddfa6986986868
-QEMU_UPSTREAM_REVISION ?= qemu-xen-4.11.3
-MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.11.3
+QEMU_UPSTREAM_REVISION ?= qemu-xen-4.11.4
+MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.11.4
 
 SEABIOS_UPSTREAM_REVISION ?= rel-1.11.1
 
 ETHERBOOT_NICS ?= rtl8139 8086100e
 
 
-QEMU_TRADITIONAL_REVISION ?= xen-4.11.3
+QEMU_TRADITIONAL_REVISION ?= xen-4.11.4
 # Fri Sep 15 19:37:27 2017 +0100
 # qemu-xen-traditional: Link against xentoolcore
 
diff --git a/xen/Makefile b/xen/Makefile
index af27147777..89d82db288 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -2,7 +2,7 @@
 # All other places this is stored (eg. compile.h) should be autogenerated.
 export XEN_VERSION       = 4
 export XEN_SUBVERSION    = 11
-export XEN_EXTRAVERSION ?= .4-pre$(XEN_VENDORVERSION)
+export XEN_EXTRAVERSION ?= .4$(XEN_VENDORVERSION)
 export XEN_FULLVERSION   = $(XEN_VERSION).$(XEN_SUBVERSION)$(XEN_EXTRAVERSION)
 -include xen-version
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.11


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 13:33:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 13:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPR7B-0002mo-Le; Fri, 17 Apr 2020 13:33:05 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPR79-0002mj-UP
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:03 +0000
X-Inumbo-ID: f5f15e8e-80af-11ea-8ce5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f5f15e8e-80af-11ea-8ce5-12813bfff9fa;
 Fri, 17 Apr 2020 13:33:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=SWm39mgTjBcX51aihgH12rV0G9QrDVOl3rWrSNoGO90=; b=I28Q0yvKt9OgVyjwkaYttIcdqm
 5alPoiWb8jpAZgvOdFyYmAvx5RPPH54u5SIY4CnbZTZFLkW1PqVGwbIMUvArLqbIbqIkTbd1ja0DF
 cQk3hnZpfhwLsdLLVW9ONE/mB984rtYT+jtkkxUfkORbSOddcX2BTxe/WAzxX3zgVSbE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR78-00071k-3H
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR78-0001EB-1u
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/altp2m: add missing break
Message-Id: <E1jPR78-0001EB-1u@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 13:33:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6b93f3ca85e331e3ad24185668efbde506fb0e18
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Thu Apr 16 10:55:42 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 10:55:42 2020 +0200

    x86/altp2m: add missing break
    
    Add a missing break in the HVMOP_altp2m_set_visibility case, or else
    code flow will continue into the default case and trigger the assert.
    
    Fixes: 3fd3e9303ec4b1 ('x86/altp2m: hypercall to set altp2m view visibility')
    Coverity-ID: 1461759
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/hvm/hvm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 6f6f3f73a8..45959d3412 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -4798,6 +4798,7 @@ static int do_altp2m_op(
         else
             rc = p2m_set_altp2m_view_visibility(d, idx,
                                                 a.u.set_visibility.visible);
+        break;
     }
 
     default:
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 13:33:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 13:33:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPR7K-0002nU-O6; Fri, 17 Apr 2020 13:33:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPR7J-0002nO-85
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:13 +0000
X-Inumbo-ID: fbf6fd7a-80af-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fbf6fd7a-80af-11ea-b4f4-bc764e2007e4;
 Fri, 17 Apr 2020 13:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Y6MphvmH4afiZ33kA6HXfDZ8VOEBhhn7Rq4HdwF3O6o=; b=ezFHkkvQOaQaowuw6iKom3dTZm
 /rUDmivtxCe+wxkhAX/0tPHApRxHBDb6rd0RCbMfHgssE99L0jmPQQiy0n2urhOr1TxWHImRA5hLy
 g7YyMTaVnIEcRokDOHLb6hP4TGr/T1C8qzhXT5sJpjvAlZxHJ3NTXkjzuB1TYxf9DS/A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7I-00071q-62
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7I-0001Er-4x
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] hvmloader: enable MMIO and I/O decode,
 after all resource allocation
Message-Id: <E1jPR7I-0001Er-4x@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 13:33:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a8e0c228c79f3a000e19183090eb41fca173b034
Author:     Harsha Shamsundara Havanur <havanur@amazon.com>
AuthorDate: Thu Apr 16 10:58:46 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 10:58:46 2020 +0200

    hvmloader: enable MMIO and I/O decode, after all resource allocation
    
    It was observed that PCI MMIO and/or IO BARs were programmed with
    memory and I/O decodes (bits 0 and 1 of PCI COMMAND register) enabled,
    during PCI setup phase. This resulted in incorrect memory mapping as
    soon as the lower half of the 64 bit bar is programmed.
    This displaced any RAM mappings under 4G. After the
    upper half is programmed PCI memory mapping is restored to its
    intended high mem location, but the RAM displaced is not restored.
    The OS then continues to boot and function until it tries to access
    the displaced RAM at which point it suffers a page fault and crashes.
    
    This patch address the issue by deferring enablement of memory and
    I/O decode in command register until all the resources, like interrupts
    I/O and/or MMIO BARs for all the PCI device functions are programmed,
    in the descending order of memory requested.
    
    Signed-off-by: Harsha Shamsundara Havanur <havanur@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 tools/firmware/hvmloader/pci.c | 49 +++++++++++++++++++++++++++++++-----------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
index 0b708bf578..dcd097a866 100644
--- a/tools/firmware/hvmloader/pci.c
+++ b/tools/firmware/hvmloader/pci.c
@@ -84,6 +84,7 @@ void pci_setup(void)
     uint32_t vga_devfn = 256;
     uint16_t class, vendor_id, device_id;
     unsigned int bar, pin, link, isa_irq;
+    uint8_t pci_devfn_decode_type[256] = {};
 
     /* Resources assignable to PCI devices via BARs. */
     struct resource {
@@ -120,6 +121,13 @@ void pci_setup(void)
      */
     bool allow_memory_relocate = 1;
 
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_IO !=
+                 PCI_COMMAND_IO);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MEMORY !=
+                 PCI_COMMAND_MEMORY);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MASTER !=
+                 PCI_COMMAND_MASTER);
+
     s = xenstore_read(HVM_XS_ALLOW_MEMORY_RELOCATE, NULL);
     if ( s )
         allow_memory_relocate = strtoll(s, NULL, 0);
@@ -208,6 +216,20 @@ void pci_setup(void)
             break;
         }
 
+        /*
+         * It is recommended that BAR programming be done whilst decode
+         * bits are cleared to avoid incorrect mappings being created.
+         * When 64-bit memory BAR is programmed, first by writing the
+         * lower half and then the upper half, which maps to an address
+         * under 4G, as soon as lower half is wriiten, replacing any RAM
+         * mapped in that address, which is not restored back after the
+         * upper half is written and PCI memory is correctly mapped to
+         * its intended high mem address.
+         */
+        cmd = pci_readw(devfn, PCI_COMMAND);
+        cmd &= ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
+        pci_writew(devfn, PCI_COMMAND, cmd);
+
         /* Map the I/O memory and port resources. */
         for ( bar = 0; bar < 7; bar++ )
         {
@@ -289,10 +311,8 @@ void pci_setup(void)
                    devfn>>3, devfn&7, 'A'+pin-1, isa_irq);
         }
 
-        /* Enable bus mastering. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_MASTER;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+        /* Enable bus master for this function later */
+        pci_devfn_decode_type[devfn] = PCI_COMMAND_MASTER;
     }
 
     if ( mmio_hole_size )
@@ -497,16 +517,12 @@ void pci_setup(void)
                PRIllx_arg(bar_sz),
                bar_data_upper, bar_data);
 			
-
-        /* Now enable the memory or I/O mapping. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
         if ( (bar_reg == PCI_ROM_ADDRESS) ||
              ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
               PCI_BASE_ADDRESS_SPACE_MEMORY) )
-            cmd |= PCI_COMMAND_MEMORY;
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_MEMORY;
         else
-            cmd |= PCI_COMMAND_IO;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_IO;
     }
 
     if ( pci_hi_mem_start )
@@ -526,10 +542,17 @@ void pci_setup(void)
          * has IO enabled, even if there is no I/O BAR on that
          * particular device.
          */
-        cmd = pci_readw(vga_devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_IO;
-        pci_writew(vga_devfn, PCI_COMMAND, cmd);
+        pci_devfn_decode_type[vga_devfn] |= PCI_COMMAND_IO;
     }
+
+    /* Enable bus master, memory and I/O decode for all valid functions. */
+    for ( devfn = 0; devfn < 256; devfn++ )
+        if ( pci_devfn_decode_type[devfn] )
+        {
+            cmd = pci_readw(devfn, PCI_COMMAND);
+            cmd |= pci_devfn_decode_type[devfn];
+            pci_writew(devfn, PCI_COMMAND, cmd);
+        }
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 13:33:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 13:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPR7U-0002oN-Po; Fri, 17 Apr 2020 13:33:24 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPR7T-0002oD-2t
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:23 +0000
X-Inumbo-ID: 01fa6324-80b0-11ea-8ce5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 01fa6324-80b0-11ea-8ce5-12813bfff9fa;
 Fri, 17 Apr 2020 13:33:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=6Ne0agA6mEsUBZBFuTD1BMH4Ol67bIYx9mKWWmE1d0E=; b=t6FhF9J4Qrvd+bOwL3YRNtZrsb
 dJQ5AP+jadS2yow50SN6A1WqY40G2uQH0JD7j1vjzbfPmzJ7pqwukX1Q8osl0xC5gyDeOSIF2EQK7
 OcbZ15LIoNPKoSyFOPTLZREyPW+UHfsje8H8WvmCUaCG9hMKlYjeOCdYyZsweHLEZve0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7S-000722-8m
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7S-0001FY-7j
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shim: map and unmap page tables in replace_va_mapping
Message-Id: <E1jPR7S-0001FY-7j@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 13:33:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6c8afe5aadb33761431b24157d99b25eac15fc7e
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 16 11:01:46 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 11:01:46 2020 +0200

    x86/shim: map and unmap page tables in replace_va_mapping
    
    Also, introduce lYe_from_lXe() macros which do not rely on the direct
    map when walking page tables. Unfortunately, they cannot be inline
    functions due to the header dependency on domain_page.h, so keep them as
    macros just like map_lYt_from_lXe().
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/pv/shim.c     |  9 +++++----
 xen/include/asm-x86/page.h | 19 +++++++++++++++++++
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/pv/shim.c b/xen/arch/x86/pv/shim.c
index ed2ece8a8a..31264582cc 100644
--- a/xen/arch/x86/pv/shim.c
+++ b/xen/arch/x86/pv/shim.c
@@ -168,16 +168,17 @@ const struct platform_bad_page *__init pv_shim_reserved_pages(unsigned int *size
 static void __init replace_va_mapping(struct domain *d, l4_pgentry_t *l4start,
                                       unsigned long va, mfn_t mfn)
 {
-    l4_pgentry_t *pl4e = l4start + l4_table_offset(va);
-    l3_pgentry_t *pl3e = l4e_to_l3e(*pl4e) + l3_table_offset(va);
-    l2_pgentry_t *pl2e = l3e_to_l2e(*pl3e) + l2_table_offset(va);
-    l1_pgentry_t *pl1e = l2e_to_l1e(*pl2e) + l1_table_offset(va);
+    l4_pgentry_t l4e = l4start[l4_table_offset(va)];
+    l3_pgentry_t l3e = l3e_from_l4e(l4e, l3_table_offset(va));
+    l2_pgentry_t l2e = l2e_from_l3e(l3e, l2_table_offset(va));
+    l1_pgentry_t *pl1e = map_l1t_from_l2e(l2e) + l1_table_offset(va);
     struct page_info *page = mfn_to_page(l1e_get_mfn(*pl1e));
 
     put_page_and_type(page);
 
     *pl1e = l1e_from_mfn(mfn, (!is_pv_32bit_domain(d) ? L1_PROT
                                                       : COMPAT_L1_PROT));
+    unmap_domain_page(pl1e);
 }
 
 static void evtchn_reserve(struct domain *d, unsigned int port)
diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h
index eb73a0fc23..5acf3d3d5a 100644
--- a/xen/include/asm-x86/page.h
+++ b/xen/include/asm-x86/page.h
@@ -197,6 +197,25 @@ static inline l4_pgentry_t l4e_from_paddr(paddr_t pa, unsigned int flags)
 #define map_l2t_from_l3e(x)        (l2_pgentry_t *)map_domain_page(l3e_get_mfn(x))
 #define map_l3t_from_l4e(x)        (l3_pgentry_t *)map_domain_page(l4e_get_mfn(x))
 
+/* Unlike lYe_to_lXe(), lXe_from_lYe() do not rely on the direct map. */
+#define l1e_from_l2e(l2e_, offset_) ({                      \
+        const l1_pgentry_t *l1t_ = map_l1t_from_l2e(l2e_);  \
+        l1_pgentry_t l1e_ = l1t_[offset_];                  \
+        unmap_domain_page(l1t_);                            \
+        l1e_; })
+
+#define l2e_from_l3e(l3e_, offset_) ({                      \
+        const l2_pgentry_t *l2t_ = map_l2t_from_l3e(l3e_);  \
+        l2_pgentry_t l2e_ = l2t_[offset_];                  \
+        unmap_domain_page(l2t_);                            \
+        l2e_; })
+
+#define l3e_from_l4e(l4e_, offset_) ({                      \
+        const l3_pgentry_t *l3t_ = map_l3t_from_l4e(l4e_);  \
+        l3_pgentry_t l3e_ = l3t_[offset_];                  \
+        unmap_domain_page(l3t_);                            \
+        l3e_; })
+
 /* Given a virtual address, get an entry offset into a page table. */
 #define l1_table_offset(a)         \
     (((a) >> L1_PAGETABLE_SHIFT) & (L1_PAGETABLE_ENTRIES - 1))
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 13:33:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 13:33:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPR7e-0002pG-Ra; Fri, 17 Apr 2020 13:33:34 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPR7d-0002p6-0C
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:33 +0000
X-Inumbo-ID: 07fad718-80b0-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 07fad718-80b0-11ea-b58d-bc764e2007e4;
 Fri, 17 Apr 2020 13:33:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=w6VzTl40/Vrh8Llmklx03ksz288NyJZkXHIWiq+eIG4=; b=e/2/iGU4m/WOOyHG4ZpLj5bm10
 TzeBYSI9dOKGswKhsRLIx5j0J4SWCpXqxm5mKkfKvMXJIrLeHJ5IP71qIuOmEJwUPeKa+t6Vvj85Y
 v1v+LU8g0e+W8FcCIpw6uO2qobKDakfjJCllfkYhhJXC5HZaDnKqTL8iKwQhhb9hOYAs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7c-00072B-Ba
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7c-0001GG-AZ
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86_64/mm: map and unmap page tables in m2p_mapped
Message-Id: <E1jPR7c-0001GG-AZ@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 13:33:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f362f5b5d09f42c045e1fc32dbad3a661f4b5de5
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 16 11:04:51 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 11:04:51 2020 +0200

    x86_64/mm: map and unmap page tables in m2p_mapped
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index cee836ec37..41755ded26 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -129,14 +129,13 @@ static mfn_t alloc_hotadd_mfn(struct mem_hotadd_info *info)
 static int m2p_mapped(unsigned long spfn)
 {
     unsigned long va;
-    l3_pgentry_t *l3_ro_mpt;
-    l2_pgentry_t *l2_ro_mpt;
+    l3_pgentry_t l3e;
+    l2_pgentry_t l2e;
 
     va = RO_MPT_VIRT_START + spfn * sizeof(*machine_to_phys_mapping);
-    l3_ro_mpt = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
+    l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(va)], l3_table_offset(va));
 
-    switch ( l3e_get_flags(l3_ro_mpt[l3_table_offset(va)]) &
-             (_PAGE_PRESENT |_PAGE_PSE))
+    switch ( l3e_get_flags(l3e) & (_PAGE_PRESENT | _PAGE_PSE) )
     {
         case _PAGE_PSE|_PAGE_PRESENT:
             return M2P_1G_MAPPED;
@@ -146,9 +145,9 @@ static int m2p_mapped(unsigned long spfn)
         default:
             return M2P_NO_MAPPED;
     }
-    l2_ro_mpt = l3e_to_l2e(l3_ro_mpt[l3_table_offset(va)]);
+    l2e = l2e_from_l3e(l3e, l2_table_offset(va));
 
-    if (l2e_get_flags(l2_ro_mpt[l2_table_offset(va)]) & _PAGE_PRESENT)
+    if ( l2e_get_flags(l2e) & _PAGE_PRESENT )
         return M2P_2M_MAPPED;
 
     return M2P_NO_MAPPED;
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 13:33:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 13:33:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPR7o-0002qv-TP; Fri, 17 Apr 2020 13:33:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPR7n-0002qh-4g
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:43 +0000
X-Inumbo-ID: 0d2c33e5-80b0-11ea-8ce5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0d2c33e5-80b0-11ea-8ce5-12813bfff9fa;
 Fri, 17 Apr 2020 13:33:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rgEMAWK3oot9JUzEvL9PBKGgJmSisvbONKDKQHSZ7ds=; b=wsvTAUr0ZwAzslauaQaNpWsbo3
 rzrurN+8kKbLi9juNzJ9HYKs/+NFOXXohFuIn4C8bCIGGxTvG0Sc7jIGPXK7Nf0hATf2yob7hHyEi
 MXYbArtyNrstX/YyDd0M0jZ8Y+IyVAXHnqoR79wTL1l5L6tzCmOm5Jn/R/daldWc2LaY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7m-00072L-EG
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7m-0001H1-DL
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86_64/mm: map and unmap page tables in
 share_hotadd_m2p_table
Message-Id: <E1jPR7m-0001H1-DL@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 13:33:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 15b7bec5784c85ac44e5fa45533e7d51259b8191
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 16 11:05:28 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 11:05:28 2020 +0200

    x86_64/mm: map and unmap page tables in share_hotadd_m2p_table
    
    Fetch lYe by mapping and unmapping lXe instead of using the direct map,
    which is now done via the lYe_from_lXe() helpers.
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 41755ded26..cfaeae84e9 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -166,14 +166,14 @@ static int share_hotadd_m2p_table(struct mem_hotadd_info *info)
           v += n << PAGE_SHIFT )
     {
         n = L2_PAGETABLE_ENTRIES * L1_PAGETABLE_ENTRIES;
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-            l3_table_offset(v)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                           l3_table_offset(v));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
             continue;
         if ( !(l3e_get_flags(l3e) & _PAGE_PSE) )
         {
             n = L1_PAGETABLE_ENTRIES;
-            l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+            l2e = l2e_from_l3e(l3e, l2_table_offset(v));
             if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
                 continue;
             m2p_start_mfn = l2e_get_mfn(l2e);
@@ -194,11 +194,11 @@ static int share_hotadd_m2p_table(struct mem_hotadd_info *info)
           v != RDWR_COMPAT_MPT_VIRT_END;
           v += 1 << L2_PAGETABLE_SHIFT )
     {
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-            l3_table_offset(v)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                           l3_table_offset(v));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
             continue;
-        l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+        l2e = l2e_from_l3e(l3e, l2_table_offset(v));
         if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
             continue;
         m2p_start_mfn = l2e_get_mfn(l2e);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 13:33:54 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 13:33:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPR7y-0002sM-1C; Fri, 17 Apr 2020 13:33:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPR7x-0002sA-CB
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:53 +0000
X-Inumbo-ID: 14005330-80b0-11ea-8ce5-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 14005330-80b0-11ea-8ce5-12813bfff9fa;
 Fri, 17 Apr 2020 13:33:52 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8tysDbmNp3hj8YjMUzIJrBSdX9dRdei0t38cwmE5gIY=; b=Z5bQc6ngKIol/0BC5x9ty2ok9B
 U+IVKVxiTv3WB43yKONxHuRXtXisAsC629rYLgX5XgH5RoC+i4rDQIkyDM+fA5xRE4BC9twEF9+TW
 xEG+zZIe7jwX3EEwTUC0cF1te0+mZq3YgZAyuUnEbVBawh1vSVCZmzWy6w+Q05inXaZA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7w-00072x-Gu
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:52 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPR7w-0001Hf-Fs
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 13:33:52 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86_64/mm: map and unmap page tables in
 destroy_m2p_mapping
Message-Id: <E1jPR7w-0001Hf-Fs@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 13:33:52 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a48e1323f9aa29f1ffb95594671b73de6bd7c1d4
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 16 11:05:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 16 11:05:58 2020 +0200

    x86_64/mm: map and unmap page tables in destroy_m2p_mapping
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index cfaeae84e9..e85ef449f3 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -263,7 +263,8 @@ static void destroy_m2p_mapping(struct mem_hotadd_info *info)
     unsigned long i, va, rwva;
     unsigned long smap = info->spfn, emap = info->epfn;
 
-    l3_ro_mpt = l4e_to_l3e(idle_pg_table[l4_table_offset(RO_MPT_VIRT_START)]);
+    l3_ro_mpt = map_l3t_from_l4e(
+                    idle_pg_table[l4_table_offset(RO_MPT_VIRT_START)]);
 
     /*
      * No need to clean m2p structure existing before the hotplug
@@ -271,7 +272,7 @@ static void destroy_m2p_mapping(struct mem_hotadd_info *info)
     for (i = smap; i < emap;)
     {
         unsigned long pt_pfn;
-        l2_pgentry_t *l2_ro_mpt;
+        l2_pgentry_t *pl2e;
 
         va = RO_MPT_VIRT_START + i * sizeof(*machine_to_phys_mapping);
         rwva = RDWR_MPT_VIRT_START + i * sizeof(*machine_to_phys_mapping);
@@ -285,26 +286,30 @@ static void destroy_m2p_mapping(struct mem_hotadd_info *info)
             continue;
         }
 
-        l2_ro_mpt = l3e_to_l2e(l3_ro_mpt[l3_table_offset(va)]);
-        if (!(l2e_get_flags(l2_ro_mpt[l2_table_offset(va)]) & _PAGE_PRESENT))
+        pl2e = map_l2t_from_l3e(l3_ro_mpt[l3_table_offset(va)]) +
+                    l2_table_offset(va);
+        if ( !(l2e_get_flags(*pl2e) & _PAGE_PRESENT) )
         {
             i = ( i & ~((1UL << (L2_PAGETABLE_SHIFT - 3)) - 1)) +
                     (1UL << (L2_PAGETABLE_SHIFT - 3)) ;
+            UNMAP_DOMAIN_PAGE(pl2e);
             continue;
         }
 
-        pt_pfn = l2e_get_pfn(l2_ro_mpt[l2_table_offset(va)]);
+        pt_pfn = l2e_get_pfn(*pl2e);
         if ( hotadd_mem_valid(pt_pfn, info) )
         {
             destroy_xen_mappings(rwva, rwva + (1UL << L2_PAGETABLE_SHIFT));
 
-            l2_ro_mpt = l3e_to_l2e(l3_ro_mpt[l3_table_offset(va)]);
-            l2e_write(&l2_ro_mpt[l2_table_offset(va)], l2e_empty());
+            l2e_write(pl2e, l2e_empty());
         }
         i = ( i & ~((1UL << (L2_PAGETABLE_SHIFT - 3)) - 1)) +
               (1UL << (L2_PAGETABLE_SHIFT - 3));
+        unmap_domain_page(pl2e);
     }
 
+    UNMAP_DOMAIN_PAGE(l3_ro_mpt);
+
     destroy_compat_m2p_mapping(info);
 
     /* Brute-Force flush all TLB */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 17:55:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 17:55:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPVCl-0002Bf-28; Fri, 17 Apr 2020 17:55:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPVCk-0002Ba-8I
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 17:55:06 +0000
X-Inumbo-ID: 90596881-80d4-11ea-8d67-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 90596881-80d4-11ea-8d67-12813bfff9fa;
 Fri, 17 Apr 2020 17:55:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=UQbYUUgIdfpkkuxI7si97aMWxY/cT1TqPUHQPeXB34M=; b=4yCFCGPOW30Dq4gyKbSkxHdXSW
 kvEwbpZLa6J3Cgk5R1P8F66vL+/SgPPE17HzpT9Svork3iSy9PDAHEGVQcZXNDxpMNLRHYt9jmr2L
 WzzJtbd/SFWjhxkgnlflJcam0nKa+cZfM9ZOzMynvNHwGMSj23fVFZ48762Jcpd4kfzU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPVCi-0004Hd-Jt
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 17:55:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPVCi-0002LP-Ig
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 17:55:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/pv: Delete CONFIG_PV_LDT_PAGING
Message-Id: <E1jPVCi-0002LP-Ig@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 17:55:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ca58e7b0800aaef85739508674abca2db9c6637d
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Apr 17 12:31:13 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Fri Apr 17 18:45:19 2020 +0100

    x86/pv: Delete CONFIG_PV_LDT_PAGING
    
    ... in accordance with the timeline laid out in the Kconfig message.  There
    has been no comment since it was disabled by default.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/Kconfig                | 23 -----------------------
 xen/arch/x86/mm.c                   | 31 -------------------------------
 xen/arch/x86/pv/descriptor-tables.c | 15 ---------------
 xen/arch/x86/pv/domain.c            |  4 ----
 xen/arch/x86/pv/mm.c                |  9 ---------
 xen/include/asm-x86/domain.h        |  6 ------
 6 files changed, 88 deletions(-)

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 8149362bde..a69be983d6 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -225,26 +225,3 @@ endmenu
 source "common/Kconfig"
 
 source "drivers/Kconfig"
-
-menu "Deprecated Functionality"
-
-config PV_LDT_PAGING
-	bool "PV LDT Paging-out support"
-	depends on PV
-	---help---
-	  For a very long time, the PV ABI has included the ability to page
-	  out the LDT by transitioning its mapping to not-present.  This
-	  functionality is believed to only exist for the PV Windows XP port
-	  which never came to anything.
-
-	  The implementation contains a vCPU scalability limitation in a
-	  position which is prohibitively complicated to resolve.  As the
-	  feature is believed to be unused in practice, removing the feature
-	  is the easiest remediation.
-
-	  If you discover a usecase which is broken by this option being off,
-	  please contact xen-devel@lists.xenproject.org urgently.  Baring
-	  something unexpected, the code and this option will be deleted 2
-	  releases after Xen 4.12.
-
-endmenu
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index fb53d62abc..ee56e053e1 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1251,40 +1251,9 @@ void put_page_from_l1e(l1_pgentry_t l1e, struct domain *l1e_owner)
      */
     if ( (l1e_get_flags(l1e) & _PAGE_RW) &&
          ((l1e_owner == pg_owner) || !paging_mode_external(pg_owner)) )
-    {
         put_page_and_type(page);
-    }
     else
-    {
-#ifdef CONFIG_PV_LDT_PAGING
-        /* We expect this is rare so we blow the entire shadow LDT. */
-        if ( unlikely(((page->u.inuse.type_info & PGT_type_mask) ==
-                       PGT_seg_desc_page)) &&
-             unlikely(((page->u.inuse.type_info & PGT_count_mask) != 0)) &&
-             (l1e_owner == pg_owner) )
-        {
-            struct vcpu *v;
-            cpumask_t *mask = this_cpu(scratch_cpumask);
-
-            cpumask_clear(mask);
-
-            for_each_vcpu ( pg_owner, v )
-            {
-                unsigned int cpu;
-
-                if ( !pv_destroy_ldt(v) )
-                    continue;
-                cpu = read_atomic(&v->dirty_cpu);
-                if ( is_vcpu_dirty_cpu(cpu) )
-                    __cpumask_set_cpu(cpu, mask);
-            }
-
-            if ( !cpumask_empty(mask) )
-                flush_tlb_mask(mask);
-        }
-#endif /* CONFIG_PV_LDT_PAGING */
         put_page(page);
-    }
 }
 
 #ifdef CONFIG_PV
diff --git a/xen/arch/x86/pv/descriptor-tables.c b/xen/arch/x86/pv/descriptor-tables.c
index 940804b18a..090f901b5b 100644
--- a/xen/arch/x86/pv/descriptor-tables.c
+++ b/xen/arch/x86/pv/descriptor-tables.c
@@ -37,14 +37,7 @@ bool pv_destroy_ldt(struct vcpu *v)
 
     ASSERT(!in_irq());
 
-#ifdef CONFIG_PV_LDT_PAGING
-    spin_lock(&v->arch.pv.shadow_ldt_lock);
-
-    if ( v->arch.pv.shadow_ldt_mapcnt == 0 )
-        goto out;
-#else
     ASSERT(v == current || !vcpu_cpu_dirty(v));
-#endif
 
     pl1e = pv_ldt_ptes(v);
 
@@ -62,14 +55,6 @@ bool pv_destroy_ldt(struct vcpu *v)
         put_page_and_type(page);
     }
 
-#ifdef CONFIG_PV_LDT_PAGING
-    ASSERT(v->arch.pv.shadow_ldt_mapcnt == mappings_dropped);
-    v->arch.pv.shadow_ldt_mapcnt = 0;
-
- out:
-    spin_unlock(&v->arch.pv.shadow_ldt_lock);
-#endif
-
     return mappings_dropped;
 }
 
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 70fae43965..43da5c179f 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -243,10 +243,6 @@ int pv_vcpu_initialise(struct vcpu *v)
 
     ASSERT(!is_idle_domain(d));
 
-#ifdef CONFIG_PV_LDT_PAGING
-    spin_lock_init(&v->arch.pv.shadow_ldt_lock);
-#endif
-
     rc = pv_create_gdt_ldt_l1tab(v);
     if ( rc )
         return rc;
diff --git a/xen/arch/x86/pv/mm.c b/xen/arch/x86/pv/mm.c
index 2b0dadc8da..5d4cd00941 100644
--- a/xen/arch/x86/pv/mm.c
+++ b/xen/arch/x86/pv/mm.c
@@ -123,17 +123,8 @@ bool pv_map_ldt_shadow_page(unsigned int offset)
     pl1e = &pv_ldt_ptes(curr)[offset >> PAGE_SHIFT];
     l1e_add_flags(gl1e, _PAGE_RW);
 
-#ifdef CONFIG_PV_LDT_PAGING
-    spin_lock(&curr->arch.pv.shadow_ldt_lock);
-#endif
-
     l1e_write(pl1e, gl1e);
 
-#ifdef CONFIG_PV_LDT_PAGING
-    curr->arch.pv.shadow_ldt_mapcnt++;
-    spin_unlock(&curr->arch.pv.shadow_ldt_lock);
-#endif
-
     return true;
 }
 
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 4192c636b1..554b8dddcc 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -520,12 +520,6 @@ struct pv_vcpu
     unsigned int iopl;        /* Current IOPL for this VCPU, shifted left by
                                * 12 to match the eflags register. */
 
-#ifdef CONFIG_PV_LDT_PAGING
-    /* Current LDT details. */
-    unsigned long shadow_ldt_mapcnt;
-    spinlock_t shadow_ldt_lock;
-#endif
-
     /*
      * %dr7 bits the guest has set, but aren't loaded into hardware, and are
      * completely emulated.
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 17 22:44:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 17 Apr 2020 22:44:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jPZiO-0000kU-AF; Fri, 17 Apr 2020 22:44:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=30+y=6B=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jPZiM-0000kP-KG
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 22:44:02 +0000
X-Inumbo-ID: ef1703be-80fc-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ef1703be-80fc-11ea-b4f4-bc764e2007e4;
 Fri, 17 Apr 2020 22:44:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=F7FaHKvFWk3K96JFWTeaU721fFA5rl0T2unCq+6L4QE=; b=1SeUqW2ScvE08vWJCL5wAwinQF
 88V1FHR5dUYkqF0j2WdUAu084iqz9XYVUhO2UQN9tIXYm3Qi7q2dLI/ddWeVpGc+KSQ0ImuNV6lDt
 Oqj9gHJbsSjLE1TtI7HXT4JLufLUcfCV/mxXhW2W57iG9+4GYVV5AKWVlp5unOfliBXY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPZiL-0006cB-PC
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 22:44:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jPZiL-000395-NT
 for xen-changelog@lists.xenproject.org; Fri, 17 Apr 2020 22:44:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.11] update Xen version to 4.11.4
Message-Id: <E1jPZiL-000395-NT@xenbits.xenproject.org>
Date: Fri, 17 Apr 2020 22:44:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 96a8b5bc48be2ae9691369849036453f8850135b
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Fri Apr 17 13:58:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 17 13:58:20 2020 +0200

    update Xen version to 4.11.4
---
 Config.mk    | 6 +++---
 xen/Makefile | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Config.mk b/Config.mk
index f1ed5e9184..735e53a9d7 100644
--- a/Config.mk
+++ b/Config.mk
@@ -275,15 +275,15 @@ SEABIOS_UPSTREAM_URL ?= git://xenbits.xen.org/seabios.git
 MINIOS_UPSTREAM_URL ?= git://xenbits.xen.org/mini-os.git
 endif
 OVMF_UPSTREAM_REVISION ?= 947f3737abf65fda63f3ffd97fddfa6986986868
-QEMU_UPSTREAM_REVISION ?= qemu-xen-4.11.3
-MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.11.3
+QEMU_UPSTREAM_REVISION ?= qemu-xen-4.11.4
+MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.11.4
 
 SEABIOS_UPSTREAM_REVISION ?= rel-1.11.1
 
 ETHERBOOT_NICS ?= rtl8139 8086100e
 
 
-QEMU_TRADITIONAL_REVISION ?= xen-4.11.3
+QEMU_TRADITIONAL_REVISION ?= xen-4.11.4
 # Fri Sep 15 19:37:27 2017 +0100
 # qemu-xen-traditional: Link against xentoolcore
 
diff --git a/xen/Makefile b/xen/Makefile
index af27147777..89d82db288 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -2,7 +2,7 @@
 # All other places this is stored (eg. compile.h) should be autogenerated.
 export XEN_VERSION       = 4
 export XEN_SUBVERSION    = 11
-export XEN_EXTRAVERSION ?= .4-pre$(XEN_VENDORVERSION)
+export XEN_EXTRAVERSION ?= .4$(XEN_VENDORVERSION)
 export XEN_FULLVERSION   = $(XEN_VERSION).$(XEN_SUBVERSION)$(XEN_EXTRAVERSION)
 -include xen-version
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.11


From xen-changelog-bounces@lists.xenproject.org Mon Apr 20 14:11:12 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2020 14:11:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQX8e-0004oJ-0r; Mon, 20 Apr 2020 14:11:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=uKCs=6E=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQX8d-0004oD-3v
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:07 +0000
X-Inumbo-ID: c62466d4-8310-11ea-906a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c62466d4-8310-11ea-906a-12813bfff9fa;
 Mon, 20 Apr 2020 14:11:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=RgMlQEWJ7lcCI4t2bj35y5V6j8apbK3W4i6gRSqAhX8=; b=NBebjIzLwlUUA0ruGNPeeaYx7T
 4MfMOC3wxFTIOaFO4eQESV2Jc3+rEXaJNcuyGgNZiNZlCZJ5kJWlKUntXo8xnus67smzKm+aYkrwC
 u4toQ6c8fkj0xBpGJ6u1kNbXqAPt/SsoEqH3LoCOiaigdcujdV+e/EoFtMxSd5Jm7vWk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQX8b-0006A6-B7
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQX8b-0007jK-9q
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] tools/ocaml: libxc: Check error return in
 stub_xc_vcpu_context_get()
Message-Id: <E1jQX8b-0007jK-9q@xenbits.xenproject.org>
Date: Mon, 20 Apr 2020 14:11:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3bf69699cacad3efb4fe6109044365f79379ed20
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Sun Mar 29 20:12:34 2020 +0100
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Mon Apr 20 15:02:17 2020 +0100

    tools/ocaml: libxc: Check error return in stub_xc_vcpu_context_get()
    
    xc_vcpu_getcontext() may fail to retrieve the vcpu context. Rather than
    ignoring the return value, check it and throw an error if needed.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Christian Lindig <christian.lindig@citrix.com>
---
 tools/ocaml/libs/xc/xenctrl_stubs.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
index 904da45c4f..0fdbeac158 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -497,6 +497,8 @@ CAMLprim value stub_xc_vcpu_context_get(value xch, value domid,
 	vcpu_guest_context_any_t ctxt;
 
 	ret = xc_vcpu_getcontext(_H(xch), _D(domid), Int_val(cpu), &ctxt);
+	if ( ret < 0 )
+		failwith_xc(_H(xch));
 
 	context = caml_alloc_string(sizeof(ctxt));
 	memcpy(String_val(context), (char *) &ctxt.c, sizeof(ctxt.c));
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 20 14:11:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2020 14:11:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQX8n-0004pF-2p; Mon, 20 Apr 2020 14:11:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=uKCs=6E=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQX8m-0004p7-Bh
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:16 +0000
X-Inumbo-ID: cc1bfa52-8310-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id cc1bfa52-8310-11ea-b4f4-bc764e2007e4;
 Mon, 20 Apr 2020 14:11:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0lBPITMSF987RUloaXi9qu0UDxIaSSvgvDPspaHbEfs=; b=e4ARychhuX2MzNw5tYSMHxp+Bj
 Oj4ULiuxw0mua8LDvcE6t5dYE4qjHzU/B40BEPW7RcL/ZQPfp4BwA1Qe3FFLaczz2rDlb02bqhf07
 aB2J89DEFEBTnPCJ9+wSa07qzVqvnTdtF5C4yBj/YLMehqz1SMl17YTASt12pxQ3cwC4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQX8l-0006Ar-Du
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQX8l-0007kl-Cr
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] tools/ocaml: libxb: Harden stub_header_of_string()
Message-Id: <E1jQX8l-0007kl-Cr@xenbits.xenproject.org>
Date: Mon, 20 Apr 2020 14:11:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d92ba1aa7cf877a77abdcbd94a6a19fc55886a75
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Mon Mar 30 14:29:10 2020 +0100
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Mon Apr 20 15:03:03 2020 +0100

    tools/ocaml: libxb: Harden stub_header_of_string()
    
    stub_header_of_string() should not modify the header. So mark the
    variable 'hdr' as const.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Christian Lindig <christian.lindig@citrix.com>
---
 tools/ocaml/libs/xb/xenbus_stubs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/ocaml/libs/xb/xenbus_stubs.c b/tools/ocaml/libs/xb/xenbus_stubs.c
index a68e783f70..001bb03371 100644
--- a/tools/ocaml/libs/xb/xenbus_stubs.c
+++ b/tools/ocaml/libs/xb/xenbus_stubs.c
@@ -40,12 +40,12 @@ CAMLprim value stub_header_of_string(value s)
 {
 	CAMLparam1(s);
 	CAMLlocal1(ret);
-	struct xsd_sockmsg *hdr;
+	const struct xsd_sockmsg *hdr;
 
 	if (caml_string_length(s) != sizeof(struct xsd_sockmsg))
 		caml_failwith("xb header incomplete");
 	ret = caml_alloc_tuple(4);
-	hdr = (struct xsd_sockmsg *) String_val(s);
+	hdr = (const struct xsd_sockmsg *) String_val(s);
 	Store_field(ret, 0, Val_int(hdr->tx_id));
 	Store_field(ret, 1, Val_int(hdr->req_id));
 	Store_field(ret, 2, Val_int(hdr->type));
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 20 14:11:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2020 14:11:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQX8x-0004qf-4a; Mon, 20 Apr 2020 14:11:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=uKCs=6E=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQX8w-0004qW-8c
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:26 +0000
X-Inumbo-ID: d22478d4-8310-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d22478d4-8310-11ea-83d8-bc764e2007e4;
 Mon, 20 Apr 2020 14:11:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=U0zFLfFyCaT1/KX5n4dcWCkX3BKOjc5iBRUwtpeya+w=; b=jnPvf3/Vz0lRopKuNuVJbbx4H+
 z840wb+43jzW2KfQZru0h9rLhtO/VWx24yVqeLhqBNlhpXlToF6mcKMLxTCHzV8S8VSiLDCm6hhaQ
 Rsh1q5EWe+qSEkfYYfrs4ij9Q2zAa0sBnoPLLfjNfLRXM5QnHCb7a+y0HrXhjBUONIjE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQX8v-0006B9-Go
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQX8v-0007la-Fc
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] tools/ocaml: libxb: Avoid to use String_val() when
 value is bytes
Message-Id: <E1jQX8v-0007la-Fc@xenbits.xenproject.org>
Date: Mon, 20 Apr 2020 14:11:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 78686437e949a85a207ae1a0d637efe2d3778bbe
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Mon Mar 30 18:50:08 2020 +0100
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Mon Apr 20 15:03:07 2020 +0100

    tools/ocaml: libxb: Avoid to use String_val() when value is bytes
    
    Commit ec7d54dd1a "ocaml/libs/xb: Use bytes in place of strings for
    mutable buffers" switch mutable buffers from string to bytes. However
    the C code were still using String_Val() to access them.
    
    While the underlying structure is the same between string and bytes, a
    string is meant to be immutable. OCaml 4.06.1 and later will enforce it.
    Therefore, it will not be possible to build the OCaml libs when using
    -safe-string. This is because String_val() will return a const value.
    
    To avoid plain cast in the code, the code is now switched to use
    Bytes_val(). As the macro is not defined in older OCaml version, we need
    to provide a stub.
    
    Take the opportunity to switch to const the buffer in
    ml_interface_write() as it should not be modified.
    
    Reported-by: Dario Faggioli <dfaggioli@suse.com>
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Christian Lindig <christian.lindig@citrix.com>
---
 tools/ocaml/libs/xb/xs_ring_stubs.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/tools/ocaml/libs/xb/xs_ring_stubs.c b/tools/ocaml/libs/xb/xs_ring_stubs.c
index 473787064a..7537a23949 100644
--- a/tools/ocaml/libs/xb/xs_ring_stubs.c
+++ b/tools/ocaml/libs/xb/xs_ring_stubs.c
@@ -36,6 +36,14 @@
 
 #define GET_C_STRUCT(a) ((struct mmap_interface *) a)
 
+/*
+ * Bytes_val has been introduced by Ocaml 4.06.1. So define our own version
+ * if needed.
+ */
+#ifndef Bytes_val
+#define Bytes_val(x) ((unsigned char *) Bp_val(x))
+#endif
+
 CAMLprim value ml_interface_read(value ml_interface,
                                  value ml_buffer,
                                  value ml_len)
@@ -44,7 +52,7 @@ CAMLprim value ml_interface_read(value ml_interface,
 	CAMLlocal1(ml_result);
 
 	struct mmap_interface *interface = GET_C_STRUCT(ml_interface);
-	char *buffer = String_val(ml_buffer);
+	unsigned char *buffer = Bytes_val(ml_buffer);
 	int len = Int_val(ml_len);
 	int result;
 
@@ -103,7 +111,7 @@ CAMLprim value ml_interface_write(value ml_interface,
 	CAMLlocal1(ml_result);
 
 	struct mmap_interface *interface = GET_C_STRUCT(ml_interface);
-	char *buffer = String_val(ml_buffer);
+	const unsigned char *buffer = Bytes_val(ml_buffer);
 	int len = Int_val(ml_len);
 	int result;
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 20 14:11:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 20 Apr 2020 14:11:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQX98-0004ru-6h; Mon, 20 Apr 2020 14:11:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=uKCs=6E=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQX96-0004ri-Kj
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:36 +0000
X-Inumbo-ID: d825bf68-8310-11ea-906a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d825bf68-8310-11ea-906a-12813bfff9fa;
 Mon, 20 Apr 2020 14:11:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=q5fY8X5N155lbuyy5a4xO4+c8hvWK3m5lz6658KJ5eU=; b=sGC3V22UAxOvy2nzchIjibgaqV
 faTAXoSrOvx8Z7ut4QTlGMRA9U3xBhmGZQUaUDYq7BvpGjsmlF/Ow32a6j36IKxreEI6Si73gPCvn
 w7FxGl3jpWi/Nf1t9wmM3pCtH1cb5b1mNYEvWDRQ3Rv9HmieiadFKVIczjm6C45zowZg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQX95-0006CN-Js
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQX95-0007mF-Ia
 for xen-changelog@lists.xenproject.org; Mon, 20 Apr 2020 14:11:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] tools/ocaml: Fix stubs build when OCaml has been
 compiled with -safe-string
Message-Id: <E1jQX95-0007mF-Ia@xenbits.xenproject.org>
Date: Mon, 20 Apr 2020 14:11:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 59b087e3954402c487e0abb4ad9bd05f43669436
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Mon Mar 30 15:14:23 2020 +0100
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Mon Apr 20 15:03:13 2020 +0100

    tools/ocaml: Fix stubs build when OCaml has been compiled with -safe-string
    
    The OCaml code has been fixed to handle properly -safe-string in Xen
    4.11, however the stubs part were missed.
    
    On OCaml newer than 4.06.1, String_Val() will return a const char *
    when using -safe-string leading to build failure when this is used
    in place where char * is expected.
    
    The main use in Xen code base is when a new string is allocated. The
    suggested approach by the OCaml community [1] is to use the helper
    caml_alloc_initialized_string() but it was introduced by OCaml 4.06.1.
    
    The next best approach is to cast String_val() to (char *) as the helper
    would have done. So use it when we need to update the new string using
    memcpy().
    
    Take the opportunity to remove the unnecessary cast of the source as
    mempcy() is expecting a void *.
    
    [1] https://github.com/ocaml/ocaml/pull/1274
    
    Reported-by: Dario Faggioli <dfaggioli@suse.com>
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Christian Lindig <christian.lindig@citrix.com>
---
 tools/ocaml/libs/xb/xenbus_stubs.c  | 2 +-
 tools/ocaml/libs/xc/xenctrl_stubs.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/ocaml/libs/xb/xenbus_stubs.c b/tools/ocaml/libs/xb/xenbus_stubs.c
index 001bb03371..3065181a55 100644
--- a/tools/ocaml/libs/xb/xenbus_stubs.c
+++ b/tools/ocaml/libs/xb/xenbus_stubs.c
@@ -65,7 +65,7 @@ CAMLprim value stub_string_of_header(value tid, value rid, value ty, value len)
 	};
 
 	ret = caml_alloc_string(sizeof(struct xsd_sockmsg));
-	memcpy(String_val(ret), &xsd, sizeof(struct xsd_sockmsg));
+	memcpy((char *) String_val(ret), &xsd, sizeof(struct xsd_sockmsg));
 
 	CAMLreturn(ret);
 }
diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
index 0fdbeac158..94aba38a42 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -501,7 +501,7 @@ CAMLprim value stub_xc_vcpu_context_get(value xch, value domid,
 		failwith_xc(_H(xch));
 
 	context = caml_alloc_string(sizeof(ctxt));
-	memcpy(String_val(context), (char *) &ctxt.c, sizeof(ctxt.c));
+	memcpy((char *) String_val(context), &ctxt.c, sizeof(ctxt.c));
 
 	CAMLreturn(context);
 }
@@ -680,7 +680,7 @@ CAMLprim value stub_xc_readconsolering(value xch)
 		conring_size = size;
 
 	ring = caml_alloc_string(count);
-	memcpy(String_val(ring), str, count);
+	memcpy((char *) String_val(ring), str, count);
 	free(str);
 
 	CAMLreturn(ring);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:11:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:11:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQovr-0008Uq-6J; Tue, 21 Apr 2020 09:11:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQovp-0008Ug-JM
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:05 +0000
X-Inumbo-ID: 075a8616-83b0-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 075a8616-83b0-11ea-9e09-bc764e2007e4;
 Tue, 21 Apr 2020 09:11:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Ahy3JVq3u7xqN0Qo7aM8VOmVhtiNrdsShwxHNVyufYI=; b=LSjOg8JEDHeKr9/oZUjWN1/C2h
 Tb+Ld0FrzqlUx3v9Gq5co9NiWgpfuiIn0kOtl2/L7tH4tPD253NUlZzfuQp8EVwuPXrV5uGIXQY2V
 U/eW4pIbT1fNtSdaLJ2lo2yt4dUYmUBpnDf9qk2iA2KgbXqD609dYXs7jdCsoHo5ytJk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQovo-0002u1-Pl
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQovo-0004iW-OT
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86emul: SYSRET must change CPL
Message-Id: <E1jQovo-0004iW-OT@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:11:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a94b55a2986145ab5b357feb340f782d9d199d10
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:51:42 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:51:42 2020 +0200

    x86emul: SYSRET must change CPL
    
    The special AMD behavior of leaving SS mostly alone wasn't really
    complete: We need to adjust CPL aka SS.DPL.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_emulate/x86_emulate.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index 3ed64c13ea..1959fc227a 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -6022,6 +6022,8 @@ x86_emulate(
 
             /* There's explicitly no RPL adjustment here. */
             sreg.sel = (msr_val >> 48) + 8;
+            /* But DPL needs adjustment, for the new CPL to be correct. */
+            sreg.dpl = 3;
         }
 
 #ifdef __x86_64__
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:11:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:11:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQow1-00004w-Gd; Tue, 21 Apr 2020 09:11:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQow0-0008WN-HM
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:16 +0000
X-Inumbo-ID: 0d5a3ff3-83b0-11ea-911a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0d5a3ff3-83b0-11ea-911a-12813bfff9fa;
 Tue, 21 Apr 2020 09:11:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=gn7TRBeWFzwZtK82V+fUw9G29biIkzQk0gXjaHZ3W5s=; b=kxqLNBJ7McwyegrL2pJU9VB6eP
 uofIhi2KvmvpSMVPjiPr1KVmzT23M0BG4SndcboQiF60PzKauwe8G7JkRy/Y7/JlGQRNyc/eHb2cw
 PRZnM0I9o+gL2fOu4uxFCXc6fJjIjho008lMk0Y+pRJuluuUH0AVrn0omf811vef+NiI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQovy-0002uL-Sg
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQovy-0004ja-RV
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/vtd: relax EPT page table sharing check
Message-Id: <E1jQovy-0004ja-RV@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:11:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3957e12c02670b97855ef0933b373f99993fa598
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Tue Apr 21 10:54:56 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:54:56 2020 +0200

    x86/vtd: relax EPT page table sharing check
    
    The EPT page tables can be shared with the IOMMU as long as the page
    sizes supported by EPT are also supported by the IOMMU.
    
    Current code checks that both the IOMMU and EPT support the same page
    sizes, but this is not strictly required, the IOMMU supporting more
    page sizes than EPT is fine and shouldn't block page table sharing.
    
    This is likely not a common case (IOMMU supporting more page sizes
    than EPT), but should still be fixed for correctness.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
---
 xen/drivers/passthrough/vtd/iommu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 07d40b37fe..208b33c0e4 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1914,8 +1914,8 @@ static int __init vtd_ept_page_compatible(struct vtd_iommu *iommu)
     if ( rdmsr_safe(MSR_IA32_VMX_EPT_VPID_CAP, ept_cap) != 0 ) 
         return 0;
 
-    return (ept_has_2mb(ept_cap) && opt_hap_2mb) == cap_sps_2mb(vtd_cap) &&
-           (ept_has_1gb(ept_cap) && opt_hap_1gb) == cap_sps_1gb(vtd_cap);
+    return (ept_has_2mb(ept_cap) && opt_hap_2mb) <= cap_sps_2mb(vtd_cap) &&
+           (ept_has_1gb(ept_cap) && opt_hap_1gb) <= cap_sps_1gb(vtd_cap);
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:11:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:11:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQowB-00007X-IY; Tue, 21 Apr 2020 09:11:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQow9-000078-Ks
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:25 +0000
X-Inumbo-ID: 1367a9d4-83b0-11ea-911a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1367a9d4-83b0-11ea-911a-12813bfff9fa;
 Tue, 21 Apr 2020 09:11:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8d7ht94xgRo7K+SdTBs4jHJZ5e+YN7WEncRjv2x/Qgw=; b=aMAwavdbguF9p/QvmTubVxnM8K
 9Pcz1GRnkedvuIr59X7ZmiiKyJZIzf8TFjElJt1iTGG65uayPD+nt3QuyFEkEQ+aiZ9hoMqK1bMyq
 zOEem/tAgiFkSLoJdI+IcRl9sBEX0S99aqVdg/KLdT37F5TTmOShn6Ems9cBWEJsrpAk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQow9-0002uU-01
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQow8-0004kS-UH
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shadow: drop a stray forward structure declaration
Message-Id: <E1jQow8-0004kS-UH@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:11:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ac7addbeff73bc8b06d8234a0e1658bba9368164
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:55:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:55:58 2020 +0200

    x86/shadow: drop a stray forward structure declaration
    
    struct sh_emulate_ctxt is private to shadow code, and hence a
    declaration for it is not needed here.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/include/asm-x86/paging.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index 051161481c..a7edca586d 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -92,7 +92,6 @@
  * These shouldn't be used directly by callers; rather use the functions
  * below which will indirect through this table as appropriate. */
 
-struct sh_emulate_ctxt;
 struct shadow_paging_mode {
 #ifdef CONFIG_SHADOW_PAGING
     void          (*detach_old_tables     )(struct vcpu *v);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:11:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:11:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQowL-00009w-N7; Tue, 21 Apr 2020 09:11:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQowJ-00009T-TP
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:35 +0000
X-Inumbo-ID: 196c61d0-83b0-11ea-911a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 196c61d0-83b0-11ea-911a-12813bfff9fa;
 Tue, 21 Apr 2020 09:11:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=+RvZ4SDwDxYNex00Qr4j6VF3HD1FomU8y6qtKI3Vpaw=; b=Fm0I3uek9Fv/6leGeytcVGv/Fp
 PxG7wF+GdXH1OklORBhgE+192yjy3Gg1/dHG9h0ka2+Z32b5lJVdEw+FijyB4ajs1fXOrShXDAJ2w
 oSnAX3LJya8jFHygTYjCxlsDRc4oR8S/0Fiwpuh9r09C9EQEBsSdTK0q5n90f2uQsLcg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQowJ-0002vl-3c
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQowJ-0004l3-2T
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shadow: monitor table is HVM-only
Message-Id: <E1jQowJ-0004l3-2T@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:11:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 452219e246486d35fffb0b418f97db1beb9bc37c
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:57:04 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:57:04 2020 +0200

    x86/shadow: monitor table is HVM-only
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c | 14 ++++++++------
 xen/arch/x86/mm/shadow/multi.c  |  6 ++++--
 xen/include/asm-x86/paging.h    |  2 ++
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 75dd414a6e..d5d0111067 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -2376,7 +2376,6 @@ void sh_reset_l3_up_pointers(struct vcpu *v)
 static void sh_update_paging_modes(struct vcpu *v)
 {
     struct domain *d = v->domain;
-    const struct paging_mode *old_mode = v->arch.paging.mode;
 
     ASSERT(paging_locked_by_me(d));
 
@@ -2421,11 +2420,11 @@ static void sh_update_paging_modes(struct vcpu *v)
     if ( v->arch.paging.mode )
         v->arch.paging.mode->shadow.detach_old_tables(v);
 
+#ifdef CONFIG_HVM
     if ( !is_pv_domain(d) )
     {
-        ///
-        /// HVM guest
-        ///
+        const struct paging_mode *old_mode = v->arch.paging.mode;
+
         ASSERT(shadow_mode_translate(d));
         ASSERT(shadow_mode_external(d));
 
@@ -2523,6 +2522,7 @@ static void sh_update_paging_modes(struct vcpu *v)
         //        different values for CR4.PSE and CR4.PGE at the same time.
         //        This *does* happen, at least for CR4.PGE...
     }
+#endif /* CONFIG_HVM */
 
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
     /* We need to check that all the vcpus have paging enabled to
@@ -2703,7 +2703,6 @@ void shadow_teardown(struct domain *d, bool *preempted)
  * Should only be called for dying domains. */
 {
     struct vcpu *v;
-    mfn_t mfn;
     struct page_info *unpaged_pagetable = NULL;
 
     ASSERT(d->is_dying);
@@ -2719,13 +2718,16 @@ void shadow_teardown(struct domain *d, bool *preempted)
             if ( v->arch.paging.mode )
             {
                 v->arch.paging.mode->shadow.detach_old_tables(v);
+#ifdef CONFIG_HVM
                 if ( shadow_mode_external(d) )
                 {
-                    mfn = pagetable_get_mfn(v->arch.monitor_table);
+                    mfn_t mfn = pagetable_get_mfn(v->arch.monitor_table);
+
                     if ( mfn_valid(mfn) && (mfn_x(mfn) != 0) )
                         v->arch.paging.mode->shadow.destroy_monitor_table(v, mfn);
                     v->arch.monitor_table = pagetable_null();
                 }
+#endif /* CONFIG_HVM */
             }
         }
     }
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index f6b1628742..5377754282 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -1515,7 +1515,7 @@ make_fl1_shadow(struct domain *d, gfn_t gfn)
 }
 
 
-#if SHADOW_PAGING_LEVELS == GUEST_PAGING_LEVELS
+#if SHADOW_PAGING_LEVELS == GUEST_PAGING_LEVELS && defined(CONFIG_HVM)
 mfn_t
 sh_make_monitor_table(struct vcpu *v)
 {
@@ -1965,7 +1965,7 @@ void sh_destroy_l1_shadow(struct domain *d, mfn_t smfn)
     shadow_free(d, smfn);
 }
 
-#if SHADOW_PAGING_LEVELS == GUEST_PAGING_LEVELS
+#if SHADOW_PAGING_LEVELS == GUEST_PAGING_LEVELS && defined(CONFIG_HVM)
 void sh_destroy_monitor_table(struct vcpu *v, mfn_t mmfn)
 {
     struct domain *d = v->domain;
@@ -4881,8 +4881,10 @@ const struct paging_mode sh_paging_mode = {
     .shadow.write_guest_entry      = sh_write_guest_entry,
     .shadow.cmpxchg_guest_entry    = sh_cmpxchg_guest_entry,
 #endif
+#ifdef CONFIG_HVM
     .shadow.make_monitor_table     = sh_make_monitor_table,
     .shadow.destroy_monitor_table  = sh_destroy_monitor_table,
+#endif
 #if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC
     .shadow.guess_wrmap            = sh_guess_wrmap,
 #endif
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index a7edca586d..c99ce3e136 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -102,8 +102,10 @@ struct shadow_paging_mode {
                                             intpte_t *old, intpte_t new,
                                             mfn_t gmfn);
 #endif
+#ifdef CONFIG_HVM
     mfn_t         (*make_monitor_table    )(struct vcpu *v);
     void          (*destroy_monitor_table )(struct vcpu *v, mfn_t mmfn);
+#endif
     int           (*guess_wrmap           )(struct vcpu *v, 
                                             unsigned long vaddr, mfn_t gmfn);
     void          (*pagetable_dying       )(paddr_t gpa);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:11:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:11:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQowV-0000CZ-2j; Tue, 21 Apr 2020 09:11:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQowT-0000CJ-Qk
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:45 +0000
X-Inumbo-ID: 1f6d56c0-83b0-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1f6d56c0-83b0-11ea-b4f4-bc764e2007e4;
 Tue, 21 Apr 2020 09:11:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=uJL8YrZiLDSi7bydiDjqadLHDnUmdKAnTqfs38pzAfM=; b=uOFl+xEkxEMUVFbE2TgzX5tTJp
 VtjdVbfWydFGUj770LJcEOhC3bY759Qk5SGdEmTcDNLJf0r2VTgrGhUm2PI27p4r3OK75Qb1QodgZ
 QBtiGEXg5SAFfXHq72pOKmOayxkuzBKnD1yJjMOtBKsrJvM907JRLW/FDpUFMqAvsZsQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQowT-0002we-6N
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQowT-0004lf-5T
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shadow: sh_remove_write_access_from_sl1p() can be
 static
Message-Id: <E1jQowT-0004lf-5T@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:11:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit df9238eaa4ad870bab835de5be3242f8f2a632ce
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:58:05 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:58:05 2020 +0200

    x86/shadow: sh_remove_write_access_from_sl1p() can be static
    
    It's only used by common.c.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c  | 7 +++++--
 xen/arch/x86/mm/shadow/private.h | 3 ---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index d5d0111067..33f3ad521a 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -38,6 +38,9 @@
 #include <xen/numa.h>
 #include "private.h"
 
+static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
+                                            mfn_t smfn, unsigned long offset);
+
 DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags);
 
 static int sh_enable_log_dirty(struct domain *, bool log_global);
@@ -1999,8 +2002,8 @@ int sh_remove_write_access(struct domain *d, mfn_t gmfn,
 }
 
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
-int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
-                                     mfn_t smfn, unsigned long off)
+static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
+                                            mfn_t smfn, unsigned long off)
 {
     struct page_info *sp = mfn_to_page(smfn);
 
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index e8b028a365..6eb7920d47 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -396,9 +396,6 @@ void sh_resync(struct domain *d, mfn_t gmfn);
 
 void oos_fixup_add(struct domain *d, mfn_t gmfn, mfn_t smfn, unsigned long off);
 
-int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
-                                     mfn_t smfn, unsigned long offset);
-
 /* Pull all out-of-sync shadows back into sync.  If skip != 0, we try
  * to avoid resyncing where we think we can get away with it. */
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:11:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:11:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQowf-0000FQ-4o; Tue, 21 Apr 2020 09:11:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQowe-0000F2-2g
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:56 +0000
X-Inumbo-ID: 257534ca-83b0-11ea-911a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 257534ca-83b0-11ea-911a-12813bfff9fa;
 Tue, 21 Apr 2020 09:11:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hDXn6HxHupU4y0OIsjzCaYJoYcFy70GW/pe07w7swFA=; b=oYVZWshp3mh8tV9XIRQpOPp+Jj
 Dmb4lbVqqxjjU5pmvW/obgei15JEZ5Q66YN5ArXHBx1ZKs0euUasVhUAg7V+/hAkKpn+qCBTblb3J
 uC+NdUqn7A4fN8yaesNejY8gJAEIz0Aiv+KHZP28bo+9vWSVMGBH/4wYgB+7vozZfV/A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQowd-0002wr-9l
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQowd-0004mN-8q
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:11:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shadow: the guess_wrmap() hook is needed for HVM
 only
Message-Id: <E1jQowd-0004mN-8q@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:11:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8b8d011ad868df38afae6282103087556beaa1f9
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:58:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:58:45 2020 +0200

    x86/shadow: the guess_wrmap() hook is needed for HVM only
    
    sh_remove_write_access() bails early for !external guests, and hence its
    building and thus the need for the hook can be suppressed altogether in
    !HVM configs.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c  |  2 ++
 xen/arch/x86/mm/shadow/multi.c   |  4 ++--
 xen/arch/x86/mm/shadow/private.h | 10 ++++++++++
 xen/include/asm-x86/paging.h     |  2 +-
 4 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 33f3ad521a..d899675ebd 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -1769,6 +1769,7 @@ static inline void trace_shadow_wrmap_bf(mfn_t gmfn)
     }
 }
 
+#ifdef CONFIG_HVM
 /**************************************************************************/
 /* Remove all writeable mappings of a guest frame from the shadow tables
  * Returns non-zero if we need to flush TLBs.
@@ -2000,6 +2001,7 @@ int sh_remove_write_access(struct domain *d, mfn_t gmfn,
     /* We killed at least one writeable mapping, so must flush TLBs. */
     return 1;
 }
+#endif /* CONFIG_HVM */
 
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
 static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 5377754282..ffb2b87740 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -4212,7 +4212,7 @@ int sh_rm_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
 }
 #endif /* OOS */
 
-#if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC
+#if defined(CONFIG_HVM) && (SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC)
 static int sh_guess_wrmap(struct vcpu *v, unsigned long vaddr, mfn_t gmfn)
 /* Look up this vaddr in the current shadow and see if it's a writeable
  * mapping of this gmfn.  If so, remove it.  Returns 1 if it worked. */
@@ -4884,10 +4884,10 @@ const struct paging_mode sh_paging_mode = {
 #ifdef CONFIG_HVM
     .shadow.make_monitor_table     = sh_make_monitor_table,
     .shadow.destroy_monitor_table  = sh_destroy_monitor_table,
-#endif
 #if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC
     .shadow.guess_wrmap            = sh_guess_wrmap,
 #endif
+#endif /* CONFIG_HVM */
     .shadow.pagetable_dying        = sh_pagetable_dying,
     .shadow.trace_emul_write_val   = trace_emulate_write_val,
     .shadow.shadow_levels          = SHADOW_PAGING_LEVELS,
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index 6eb7920d47..0044450999 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -359,6 +359,7 @@ void sh_install_xen_entries_in_l4(struct domain *, mfn_t gl4mfn, mfn_t sl4mfn);
 /* Update the shadows in response to a pagetable write from Xen */
 int sh_validate_guest_entry(struct vcpu *v, mfn_t gmfn, void *entry, u32 size);
 
+#ifdef CONFIG_HVM
 /* Remove all writeable mappings of a guest frame from the shadows.
  * Returns non-zero if we need to flush TLBs.
  * level and fault_addr desribe how we found this to be a pagetable;
@@ -366,6 +367,15 @@ int sh_validate_guest_entry(struct vcpu *v, mfn_t gmfn, void *entry, u32 size);
 extern int sh_remove_write_access(struct domain *d, mfn_t readonly_mfn,
                                   unsigned int level,
                                   unsigned long fault_addr);
+#else
+static inline int sh_remove_write_access(struct domain *d, mfn_t readonly_mfn,
+                                         unsigned int level,
+                                         unsigned long fault_addr)
+{
+    ASSERT(!shadow_mode_refcounts(d));
+    return 0;
+}
+#endif
 
 /* Functions that atomically write PT/P2M entries and update state */
 int shadow_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn,
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index c99ce3e136..4fb3f09e1a 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -105,9 +105,9 @@ struct shadow_paging_mode {
 #ifdef CONFIG_HVM
     mfn_t         (*make_monitor_table    )(struct vcpu *v);
     void          (*destroy_monitor_table )(struct vcpu *v, mfn_t mmfn);
-#endif
     int           (*guess_wrmap           )(struct vcpu *v, 
                                             unsigned long vaddr, mfn_t gmfn);
+#endif
     void          (*pagetable_dying       )(paddr_t gpa);
     void          (*trace_emul_write_val  )(const void *ptr, unsigned long vaddr,
                                             const void *src, unsigned int bytes);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:12:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:12:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQowp-0000Ho-6n; Tue, 21 Apr 2020 09:12:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQowo-0000Ha-IN
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:06 +0000
X-Inumbo-ID: 2a9f6f9d-83b0-11ea-911a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2a9f6f9d-83b0-11ea-911a-12813bfff9fa;
 Tue, 21 Apr 2020 09:12:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=yPDCuS3YfWdDE9GXgJ1nbJAtD2knrjqq81wbMC+vCN8=; b=u5T/PuNbJ07hL9mzVX+nOV1Dkq
 /Q3jQeKFbujNPWho3iY3qvqW9YGuPtTp2r2E8YzgauDnrFm6fqEGqxioUVtICyg9MHxvnHgYcdSuq
 J1gsd0iioSeEHPAX1oi9HtAgT4trNBgYO1y+HT7FC6l8tnkjiIEaW6852PumHgznjH+g=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQown-0002xI-EA
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQown-0004nK-DD
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/mm: pagetable_dying() is HVM-only
Message-Id: <E1jQown-0004nK-DD@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:12:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2fb2dee1ac6288349a8a8320cde739df4f0e379f
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:59:43 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:59:43 2020 +0200

    x86/mm: pagetable_dying() is HVM-only
    
    Its only caller lives in HVM-only code.
    
    This involves wider changes, in order to limit #ifdef-ary: Shadow's
    SHOPT_FAST_EMULATION and the fields used by it get constrained to HVM
    builds as well. Additionally the shadow_{init,continue}_emulation()
    stubs for the !HVM case aren't needed anymore and hence get dropped.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/paging.c         |  2 ++
 xen/arch/x86/mm/shadow/common.c  |  4 +++
 xen/arch/x86/mm/shadow/multi.c   | 62 +++++++++++++++++++++++-----------------
 xen/arch/x86/mm/shadow/private.h | 19 +++---------
 xen/include/asm-x86/domain.h     |  8 ++++++
 xen/include/asm-x86/mm.h         |  2 ++
 xen/include/asm-x86/paging.h     |  2 +-
 7 files changed, 56 insertions(+), 43 deletions(-)

diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c
index 469bb76429..f5ff5d67a0 100644
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -851,6 +851,7 @@ int paging_enable(struct domain *d, u32 mode)
         return shadow_enable(d, mode);
 }
 
+#ifdef CONFIG_HVM
 /* Called from the guest to indicate that a process is being torn down
  * and therefore its pagetables will soon be discarded */
 void pagetable_dying(paddr_t gpa)
@@ -865,6 +866,7 @@ void pagetable_dying(paddr_t gpa)
     BUG();
 #endif
 }
+#endif /* CONFIG_HVM */
 
 /* Print paging-assistance info to the console */
 void paging_dump_domain_info(struct domain *d)
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index d899675ebd..ad15803cc8 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -66,7 +66,9 @@ int shadow_domain_init(struct domain *d)
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
     d->arch.paging.shadow.oos_active = 0;
 #endif
+#ifdef CONFIG_HVM
     d->arch.paging.shadow.pagetable_dying_op = 0;
+#endif
 
     return 0;
 }
@@ -690,8 +692,10 @@ void shadow_promote(struct domain *d, mfn_t gmfn, unsigned int type)
     if ( !test_and_set_bit(_PGC_page_table, &page->count_info) )
     {
         page->shadow_flags = 0;
+#ifdef CONFIG_HVM
         if ( is_hvm_domain(d) )
             page->pagetable_dying = false;
+#endif
     }
 
     ASSERT(!(page->shadow_flags & (1u << type)));
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index ffb2b87740..16bb6f3e8a 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -2764,8 +2764,10 @@ static int sh_page_fault(struct vcpu *v,
     mfn_t gmfn, sl1mfn = _mfn(0);
     shadow_l1e_t sl1e, *ptr_sl1e;
     paddr_t gpa;
+#ifdef CONFIG_HVM
     struct sh_emulate_ctxt emul_ctxt;
     const struct x86_emulate_ops *emul_ops;
+#endif
     int r;
     p2m_type_t p2mt;
     uint32_t rc, error_code;
@@ -3253,7 +3255,13 @@ static int sh_page_fault(struct vcpu *v,
      * caught by user-mode page-table check above.
      */
  emulate_readonly:
+    if ( !is_hvm_domain(d) )
+    {
+        ASSERT_UNREACHABLE();
+        goto not_a_shadow_fault;
+    }
 
+#ifdef CONFIG_HVM
     /* Unshadow if we are writing to a toplevel pagetable that is
      * flagged as a dying process, and that is not currently used. */
     if ( sh_mfn_is_a_page_table(gmfn) && is_hvm_domain(d) &&
@@ -3302,31 +3310,28 @@ static int sh_page_fault(struct vcpu *v,
 #if SHADOW_OPTIMIZATIONS & SHOPT_FAST_EMULATION
  early_emulation:
 #endif
-    if ( is_hvm_domain(d) )
+    /*
+     * If we are in the middle of injecting an exception or interrupt then
+     * we should not emulate: the fault is a side effect of the processor
+     * trying to deliver the exception (e.g. IDT/GDT accesses, pushing the
+     * exception frame onto the stack).  Furthermore it is almost
+     * certainly the case the handler stack is currently considered to be
+     * a page table, so we should unshadow the faulting page before
+     * exiting.
+     */
+    if ( unlikely(hvm_event_pending(v)) )
     {
-        /*
-         * If we are in the middle of injecting an exception or interrupt then
-         * we should not emulate: the fault is a side effect of the processor
-         * trying to deliver the exception (e.g. IDT/GDT accesses, pushing the
-         * exception frame onto the stack).  Furthermore it is almost
-         * certainly the case the handler stack is currently considered to be
-         * a page table, so we should unshadow the faulting page before
-         * exiting.
-         */
-        if ( unlikely(hvm_event_pending(v)) )
-        {
 #if SHADOW_OPTIMIZATIONS & SHOPT_FAST_EMULATION
-            if ( fast_emul )
-            {
-                perfc_incr(shadow_fault_fast_emulate_fail);
-                v->arch.paging.last_write_emul_ok = 0;
-            }
-#endif
-            sh_remove_shadows(d, gmfn, 0 /* thorough */, 1 /* must succeed */);
-            trace_shadow_emulate_other(TRC_SHADOW_EMULATE_UNSHADOW_EVTINJ,
-                                       va, gfn);
-            return EXCRET_fault_fixed;
+        if ( fast_emul )
+        {
+            perfc_incr(shadow_fault_fast_emulate_fail);
+            v->arch.paging.last_write_emul_ok = 0;
         }
+#endif
+        sh_remove_shadows(d, gmfn, 0 /* thorough */, 1 /* must succeed */);
+        trace_shadow_emulate_other(TRC_SHADOW_EMULATE_UNSHADOW_EVTINJ,
+                                   va, gfn);
+        return EXCRET_fault_fixed;
     }
 
     SHADOW_PRINTK("emulate: eip=%#lx esp=%#lx\n", regs->rip, regs->rsp);
@@ -3334,11 +3339,8 @@ static int sh_page_fault(struct vcpu *v,
     emul_ops = shadow_init_emulation(&emul_ctxt, regs, GUEST_PTE_SIZE);
 
     r = x86_emulate(&emul_ctxt.ctxt, emul_ops);
-
-#ifdef CONFIG_HVM
     if ( r == X86EMUL_EXCEPTION )
     {
-        ASSERT(is_hvm_domain(d));
         /*
          * This emulation covers writes to shadow pagetables.  We tolerate #PF
          * (from accesses spanning pages, concurrent paging updated from
@@ -3360,7 +3362,6 @@ static int sh_page_fault(struct vcpu *v,
             r = X86EMUL_UNHANDLEABLE;
         }
     }
-#endif
 
     /*
      * NB. We do not unshadow on X86EMUL_EXCEPTION. It's not clear that it
@@ -3466,6 +3467,7 @@ static int sh_page_fault(struct vcpu *v,
  emulate_done:
     SHADOW_PRINTK("emulated\n");
     return EXCRET_fault_fixed;
+#endif /* CONFIG_HVM */
 
  mmio:
     if ( !guest_mode(regs) )
@@ -4166,7 +4168,9 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
 int sh_rm_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
                                  mfn_t smfn, unsigned long off)
 {
+#ifdef CONFIG_HVM
     struct vcpu *curr = current;
+#endif
     int r;
     shadow_l1e_t *sl1p, sl1e;
     struct page_info *sp;
@@ -4174,10 +4178,12 @@ int sh_rm_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
     ASSERT(mfn_valid(gmfn));
     ASSERT(mfn_valid(smfn));
 
+#ifdef CONFIG_HVM
     /* Remember if we've been told that this process is being torn down */
     if ( curr->domain == d && is_hvm_domain(d) )
         curr->arch.paging.shadow.pagetable_dying
             = mfn_to_page(gmfn)->pagetable_dying;
+#endif
 
     sp = mfn_to_page(smfn);
 
@@ -4433,6 +4439,7 @@ int sh_remove_l3_shadow(struct domain *d, mfn_t sl4mfn, mfn_t sl3mfn)
 }
 #endif /* 64bit guest */
 
+#ifdef CONFIG_HVM
 /**************************************************************************/
 /* Function for the guest to inform us that a process is being torn
  * down.  We remember that as a hint to unshadow its pagetables soon,
@@ -4554,6 +4561,7 @@ static void sh_pagetable_dying(paddr_t gpa)
     put_gfn(d, gpa >> PAGE_SHIFT);
 }
 #endif
+#endif /* CONFIG_HVM */
 
 /**************************************************************************/
 /* Audit tools */
@@ -4887,8 +4895,8 @@ const struct paging_mode sh_paging_mode = {
 #if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC
     .shadow.guess_wrmap            = sh_guess_wrmap,
 #endif
-#endif /* CONFIG_HVM */
     .shadow.pagetable_dying        = sh_pagetable_dying,
+#endif /* CONFIG_HVM */
     .shadow.trace_emul_write_val   = trace_emulate_write_val,
     .shadow.shadow_levels          = SHADOW_PAGING_LEVELS,
 };
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index 0044450999..3fd3f0617a 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -66,7 +66,11 @@ extern int shadow_audit_enable;
 #define SHOPT_FAST_EMULATION      0x80  /* Fast write emulation */
 #define SHOPT_OUT_OF_SYNC        0x100  /* Allow guest writes to L1 PTs */
 
+#ifdef CONFIG_HVM
 #define SHADOW_OPTIMIZATIONS     0x1ff
+#else
+#define SHADOW_OPTIMIZATIONS     (0x1ff & ~SHOPT_FAST_EMULATION)
+#endif
 
 
 /******************************************************************************
@@ -716,26 +720,11 @@ struct sh_emulate_ctxt {
 #endif
 };
 
-#ifdef CONFIG_HVM
 const struct x86_emulate_ops *shadow_init_emulation(
     struct sh_emulate_ctxt *sh_ctxt, struct cpu_user_regs *regs,
     unsigned int pte_size);
 void shadow_continue_emulation(
     struct sh_emulate_ctxt *sh_ctxt, struct cpu_user_regs *regs);
-#else
-static inline const struct x86_emulate_ops *shadow_init_emulation(
-    struct sh_emulate_ctxt *sh_ctxt, struct cpu_user_regs *regs,
-    unsigned int pte_size)
-{
-    BUG();
-    return NULL;
-}
-static inline void shadow_continue_emulation(
-    struct sh_emulate_ctxt *sh_ctxt, struct cpu_user_regs *regs)
-{
-    BUG();
-}
-#endif
 
 /* Stop counting towards early unshadows, as we've seen a real page fault */
 static inline void sh_reset_early_unshadow(struct vcpu *v)
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 554b8dddcc..e2294d553f 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -117,8 +117,10 @@ struct shadow_domain {
     /* OOS */
     bool_t oos_active;
 
+#ifdef CONFIG_HVM
     /* Has this domain ever used HVMOP_pagetable_dying? */
     bool_t pagetable_dying_op;
+#endif
 
 #ifdef CONFIG_PV
     /* PV L1 Terminal Fault mitigation. */
@@ -137,10 +139,12 @@ struct shadow_vcpu {
     unsigned long last_emulated_mfn_for_unshadow;
     /* MFN of the last shadow that we shot a writeable mapping in */
     unsigned long last_writeable_pte_smfn;
+#ifdef CONFIG_HVM
     /* Last frame number that we emulated a write to. */
     unsigned long last_emulated_frame;
     /* Last MFN that we emulated a write successfully */
     unsigned long last_emulated_mfn;
+#endif
 
     /* Shadow out-of-sync: pages that this vcpu has let go out of sync */
     mfn_t oos[SHADOW_OOS_PAGES];
@@ -151,8 +155,10 @@ struct shadow_vcpu {
         unsigned long off[SHADOW_OOS_FIXUPS];
     } oos_fixup[SHADOW_OOS_PAGES];
 
+#ifdef CONFIG_HVM
     bool_t pagetable_dying;
 #endif
+#endif
 };
 
 /************************************************/
@@ -225,10 +231,12 @@ struct paging_vcpu {
     const struct paging_mode *mode;
     /* Nested Virtualization: paging mode of nested guest */
     const struct paging_mode *nestedmode;
+#ifdef CONFIG_HVM
     /* HVM guest: last emulate was to a pagetable */
     unsigned int last_write_was_pt:1;
     /* HVM guest: last write emulation succeeds */
     unsigned int last_write_emul_ok:1;
+#endif
     /* Translated guest: virtual TLB */
     struct shadow_vtlb *vtlb;
     spinlock_t          vtlb_lock;
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 1fa334b306..3d3f9d49ac 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -287,7 +287,9 @@ struct page_info
          */
         struct {
             uint16_t shadow_flags;
+#ifdef CONFIG_HVM
             bool pagetable_dying;
+#endif
         };
 
         /* When in use as a shadow, next shadow in this hash chain. */
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index 4fb3f09e1a..5243de7312 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -107,8 +107,8 @@ struct shadow_paging_mode {
     void          (*destroy_monitor_table )(struct vcpu *v, mfn_t mmfn);
     int           (*guess_wrmap           )(struct vcpu *v, 
                                             unsigned long vaddr, mfn_t gmfn);
-#endif
     void          (*pagetable_dying       )(paddr_t gpa);
+#endif
     void          (*trace_emul_write_val  )(const void *ptr, unsigned long vaddr,
                                             const void *src, unsigned int bytes);
 #endif
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:12:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:12:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQowz-0000Jk-AN; Tue, 21 Apr 2020 09:12:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQowy-0000JX-7b
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:16 +0000
X-Inumbo-ID: 31836d72-83b0-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 31836d72-83b0-11ea-b4f4-bc764e2007e4;
 Tue, 21 Apr 2020 09:12:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Fi6mbgJuR6Kx1WxnBli9dG/ogg3h7sb+fVMCQsYY7GY=; b=nAVIO+jEoYlA7idJyxj+7JPWTp
 QA6GyE1iQT1Yy93p4lKBKE8MUjucbnvvnA2i76VkqIKdGM5wEcE7e7CTu2bGdkXUSTyF28PKN2Yre
 cnGw+/7SJW37rwUO+I+P7pHQLsYdOm/Pc+5cMlNoFsNBQL9Npy4C4JVF8UI5BEZ/sc0c=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQowx-0002xR-H4
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQowx-0004nv-GE
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shadow: the trace_emul_write_val() hook is HVM-only
Message-Id: <E1jQowx-0004nv-GE@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:12:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e55c9b25349c133a333b7b827d3b4645a84b5846
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 11:02:36 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 11:02:36 2020 +0200

    x86/shadow: the trace_emul_write_val() hook is HVM-only
    
    Its only caller lives in HVM-only code, and the only caller of
    trace_shadow_emulate() also already site in a HVM-only code section.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/multi.c | 4 +++-
 xen/include/asm-x86/paging.h   | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 16bb6f3e8a..2851aa0407 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -2694,6 +2694,7 @@ static inline void trace_shadow_emulate_other(u32 event,
     }
 }
 
+#ifdef CONFIG_HVM
 #if GUEST_PAGING_LEVELS == 3
 static DEFINE_PER_CPU(guest_va_t,trace_emulate_initial_va);
 static DEFINE_PER_CPU(int,trace_extra_emulation_count);
@@ -2745,6 +2746,7 @@ static inline void trace_shadow_emulate(guest_l1e_t gl1e, unsigned long va)
         __trace_var(event, 0/*!tsc*/, sizeof(d), &d);
     }
 }
+#endif /* CONFIG_HVM */
 
 /**************************************************************************/
 /* Entry points into the shadow code */
@@ -4896,8 +4898,8 @@ const struct paging_mode sh_paging_mode = {
     .shadow.guess_wrmap            = sh_guess_wrmap,
 #endif
     .shadow.pagetable_dying        = sh_pagetable_dying,
-#endif /* CONFIG_HVM */
     .shadow.trace_emul_write_val   = trace_emulate_write_val,
+#endif /* CONFIG_HVM */
     .shadow.shadow_levels          = SHADOW_PAGING_LEVELS,
 };
 
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index 5243de7312..f53575f3d9 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -108,10 +108,10 @@ struct shadow_paging_mode {
     int           (*guess_wrmap           )(struct vcpu *v, 
                                             unsigned long vaddr, mfn_t gmfn);
     void          (*pagetable_dying       )(paddr_t gpa);
-#endif
     void          (*trace_emul_write_val  )(const void *ptr, unsigned long vaddr,
                                             const void *src, unsigned int bytes);
 #endif
+#endif
     /* For outsiders to tell what mode we're in */
     unsigned int shadow_levels;
 };
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 09:12:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 09:12:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQox9-0000MY-Lu; Tue, 21 Apr 2020 09:12:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQox8-0000M9-83
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:26 +0000
X-Inumbo-ID: 3786b8f0-83b0-11ea-911a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3786b8f0-83b0-11ea-911a-12813bfff9fa;
 Tue, 21 Apr 2020 09:12:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=P74QLebLQtUP5eSuaSNATlkgAIlJCm/Wx/IDx59nrCk=; b=h+RajwOIBVkebcmxVh7y7w7MIx
 cl1sMd6MbjLWaEWotzffolePslyRyD6Oml+NVzacFBkWr9lUMadREc2RSyAhTpvUm1b9oJsmSV38V
 KlU2RDyn8gA/CMZS8E0321nEbKU9OH7G7PtfNnRntx/nWvTu/ebX63KxM6AZZRZnneWE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQox7-0002xi-Jr
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQox7-0004ob-Is
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 09:12:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shadow: don't open-code
 shadow_blow_tables_per_domain()
Message-Id: <E1jQox7-0004ob-Is@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 09:12:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7aacf6ac49829d8dd6242f67460f4d52d0d36503
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 11:03:46 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 11:03:46 2020 +0200

    x86/shadow: don't open-code shadow_blow_tables_per_domain()
    
    Make shadow_blow_all_tables() call the designated function, and on this
    occasion make the function itself use domain_vcpu().
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index ad15803cc8..aad977ccd7 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -1005,7 +1005,8 @@ static void shadow_blow_tables(struct domain *d)
 
 void shadow_blow_tables_per_domain(struct domain *d)
 {
-    if ( shadow_mode_enabled(d) && d->vcpu != NULL && d->vcpu[0] != NULL ) {
+    if ( shadow_mode_enabled(d) && domain_vcpu(d, 0) )
+    {
         paging_lock(d);
         shadow_blow_tables(d);
         paging_unlock(d);
@@ -1022,14 +1023,7 @@ static void shadow_blow_all_tables(unsigned char c)
     printk("'%c' pressed -> blowing all shadow tables\n", c);
     rcu_read_lock(&domlist_read_lock);
     for_each_domain(d)
-    {
-        if ( shadow_mode_enabled(d) && d->vcpu != NULL && d->vcpu[0] != NULL )
-        {
-            paging_lock(d);
-            shadow_blow_tables(d);
-            paging_unlock(d);
-        }
-    }
+        shadow_blow_tables_per_domain(d);
     rcu_read_unlock(&domlist_read_lock);
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 16:00:21 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 16:00:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQvJp-0004ND-7D; Tue, 21 Apr 2020 16:00:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQvJn-0004N8-Rt
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 16:00:15 +0000
X-Inumbo-ID: 2f7026a4-83e9-11ea-915f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2f7026a4-83e9-11ea-915f-12813bfff9fa;
 Tue, 21 Apr 2020 16:00:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=EAWTBC7KAxYWgdMxi8dC4VKfITo+m2luroB2DrU8BxE=; b=Ac5lSIcg2vQKqcdQ9B/Evre6/V
 DsBB0ABV/r7H3hFTrFjxfUT3JvpCnxPyIgmTXEAeMAm2Jh83f4VJXQSBDrjEMD+RXllleYysjc+kz
 jNViUZsQpe300z7LBMSBVflXRSK2+RZg+ThyQ/J4YotFVMRVtadk1+h76ixNPhTwaAbg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQvJl-0003MX-9x
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 16:00:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQvJl-0004RD-72
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 16:00:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86: Enumeration for Control-flow Enforcement Technology
Message-Id: <E1jQvJl-0004RD-72@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 16:00:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4803a67114279a656a54a23cebed646da32efeb6
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Feb 21 17:56:57 2020 +0000
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Tue Apr 21 16:52:03 2020 +0100

    x86: Enumeration for Control-flow Enforcement Technology
    
    The CET spec has been published and guest kernels are starting to get support.
    Introduce the CPUID and MSRs, and fully block the MSRs from guest use.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
---
 tools/libxl/libxl_cpuid.c                   | 2 ++
 tools/misc/xen-cpuid.c                      | 3 ++-
 xen/arch/x86/msr.c                          | 6 ++++++
 xen/include/asm-x86/msr-index.h             | 8 ++++++++
 xen/include/public/arch-x86/cpufeatureset.h | 2 ++
 5 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/tools/libxl/libxl_cpuid.c b/tools/libxl/libxl_cpuid.c
index b4f6fd590d..00262a3f8f 100644
--- a/tools/libxl/libxl_cpuid.c
+++ b/tools/libxl/libxl_cpuid.c
@@ -201,6 +201,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"pku",          0x00000007,  0, CPUID_REG_ECX,  3,  1},
         {"ospke",        0x00000007,  0, CPUID_REG_ECX,  4,  1},
         {"avx512-vbmi2", 0x00000007,  0, CPUID_REG_ECX,  6,  1},
+        {"cet-ss",       0x00000007,  0, CPUID_REG_ECX,  7,  1},
         {"gfni",         0x00000007,  0, CPUID_REG_ECX,  8,  1},
         {"vaes",         0x00000007,  0, CPUID_REG_ECX,  9,  1},
         {"vpclmulqdq",   0x00000007,  0, CPUID_REG_ECX, 10,  1},
@@ -213,6 +214,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"avx512-4vnniw",0x00000007,  0, CPUID_REG_EDX,  2,  1},
         {"avx512-4fmaps",0x00000007,  0, CPUID_REG_EDX,  3,  1},
         {"md-clear",     0x00000007,  0, CPUID_REG_EDX, 10,  1},
+        {"cet-ibt",      0x00000007,  0, CPUID_REG_EDX, 20,  1},
         {"ibrsb",        0x00000007,  0, CPUID_REG_EDX, 26,  1},
         {"stibp",        0x00000007,  0, CPUID_REG_EDX, 27,  1},
         {"l1d-flush",    0x00000007,  0, CPUID_REG_EDX, 28,  1},
diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c
index 585b530b21..ff36d8cee1 100644
--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -123,7 +123,7 @@ static const char *const str_7c0[32] =
     [ 0] = "prefetchwt1",      [ 1] = "avx512_vbmi",
     [ 2] = "umip",             [ 3] = "pku",
     [ 4] = "ospke",            [ 5] = "waitpkg",
-    [ 6] = "avx512_vbmi2",
+    [ 6] = "avx512_vbmi2",     [ 7] = "cet-ss",
     [ 8] = "gfni",             [ 9] = "vaes",
     [10] = "vpclmulqdq",       [11] = "avx512_vnni",
     [12] = "avx512_bitalg",
@@ -163,6 +163,7 @@ static const char *const str_7d0[32] =
     /* 12 */                [13] = "tsx-force-abort",
 
     [18] = "pconfig",
+    [20] = "cet-ibt",
 
     [26] = "ibrsb",         [27] = "stibp",
     [28] = "l1d_flush",     [29] = "arch_caps",
diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index b4a1ab0fa6..dcacae58de 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -167,6 +167,9 @@ int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val)
     case MSR_CORE_CAPABILITIES:
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
     case MSR_AMD64_LWP_CFG:
     case MSR_AMD64_LWP_CBADDR:
     case MSR_PPIN_CTL:
@@ -324,6 +327,9 @@ int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val)
     case MSR_TEST_CTRL:
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
     case MSR_AMD64_LWP_CFG:
     case MSR_AMD64_LWP_CBADDR:
     case MSR_PPIN_CTL:
diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h
index bb4e601445..85c5f20b76 100644
--- a/xen/include/asm-x86/msr-index.h
+++ b/xen/include/asm-x86/msr-index.h
@@ -66,6 +66,14 @@
 #define  TSX_CTRL_RTM_DISABLE               (_AC(1, ULL) <<  0)
 #define  TSX_CTRL_CPUID_CLEAR               (_AC(1, ULL) <<  1)
 
+#define MSR_U_CET                           0x000006a0
+#define MSR_S_CET                           0x000006a2
+#define MSR_PL0_SSP                         0x000006a4
+#define MSR_PL1_SSP                         0x000006a5
+#define MSR_PL2_SSP                         0x000006a6
+#define MSR_PL3_SSP                         0x000006a7
+#define MSR_INTERRUPT_SSP_TABLE             0x000006a8
+
 /*
  * Legacy MSR constants in need of cleanup.  No new MSRs below this comment.
  */
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 295b2b7aa8..e2749245f3 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -229,6 +229,7 @@ XEN_CPUFEATURE(UMIP,          6*32+ 2) /*S  User Mode Instruction Prevention */
 XEN_CPUFEATURE(PKU,           6*32+ 3) /*H  Protection Keys for Userspace */
 XEN_CPUFEATURE(OSPKE,         6*32+ 4) /*!  OS Protection Keys Enable */
 XEN_CPUFEATURE(AVX512_VBMI2,  6*32+ 6) /*A  Additional AVX-512 Vector Byte Manipulation Instrs */
+XEN_CPUFEATURE(CET_SS,        6*32+ 7) /*   CET - Shadow Stacks */
 XEN_CPUFEATURE(GFNI,          6*32+ 8) /*A  Galois Field Instrs */
 XEN_CPUFEATURE(VAES,          6*32+ 9) /*A  Vector AES Instrs */
 XEN_CPUFEATURE(VPCLMULQDQ,    6*32+10) /*A  Vector Carry-less Multiplication Instrs */
@@ -254,6 +255,7 @@ XEN_CPUFEATURE(AVX512_4VNNIW, 9*32+ 2) /*A  AVX512 Neural Network Instructions *
 XEN_CPUFEATURE(AVX512_4FMAPS, 9*32+ 3) /*A  AVX512 Multiply Accumulation Single Precision */
 XEN_CPUFEATURE(MD_CLEAR,      9*32+10) /*A  VERW clears microarchitectural buffers */
 XEN_CPUFEATURE(TSX_FORCE_ABORT, 9*32+13) /* MSR_TSX_FORCE_ABORT.RTM_ABORT */
+XEN_CPUFEATURE(CET_IBT,       9*32+20) /*   CET - Indirect Branch Tracking */
 XEN_CPUFEATURE(IBRSB,         9*32+26) /*A  IBRS and IBPB support (used by Intel) */
 XEN_CPUFEATURE(STIBP,         9*32+27) /*A  STIBP */
 XEN_CPUFEATURE(L1D_FLUSH,     9*32+28) /*S  MSR_FLUSH_CMD and L1D flush. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 19:22:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 19:22:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jQyTL-0000C7-JY; Tue, 21 Apr 2020 19:22:19 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jQyTK-0000C2-JL
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 19:22:18 +0000
X-Inumbo-ID: 69fefd4c-8405-11ea-9194-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 69fefd4c-8405-11ea-9194-12813bfff9fa;
 Tue, 21 Apr 2020 19:22:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=m7xNJjJ888cm6nhJuMUaQfgoZARjF/8O303IwyInVxQ=; b=djcy9qiovaTVZiUyPCeX+0VRpg
 LUJyqn3HdtXWdh6gdf3LV7otfnhT1lhhWwKaQ4n8fRNdPCPBnrB4BTlIKkCF0GoY+QzI1UhX4cnia
 v8hJ1uRplRntyQEoAoqBHkkAmzZeX/FOIDiOJwomDwGpWo8KpOn9Yi7rPFZRaWL3fS+w=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQyTJ-0007cG-Fj
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 19:22:17 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jQyTJ-00043L-CL
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 19:22:17 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/arm: vgic-v3: fix GICD_ISACTIVER range
Message-Id: <E1jQyTJ-00043L-CL@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 19:22:17 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0796cb907f2c31046427510a6da6f4941f678b76
Author:     Peng Fan <peng.fan@nxp.com>
AuthorDate: Fri Apr 17 15:16:09 2020 -0700
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Tue Apr 21 12:10:50 2020 -0700

    xen/arm: vgic-v3: fix GICD_ISACTIVER range
    
    The end should be GICD_ISACTIVERN not GICD_ISACTIVER.
    
    See https://marc.info/?l=xen-devel&m=158527653730795 for a discussion on
    what it would take to implement GICD_ISACTIVER/GICD_ICACTIVER properly.
    
    We chose v1 instead of v2 of this patch to avoid spamming the console:
    v2 adds a printk for every read, and reads can happen often.
    
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    [Stefano: improve commit message]
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/vgic-v3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 4e60ba15cc..fd8cfc156d 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -713,7 +713,7 @@ static int __vgic_v3_distr_common_mmio_read(const char *name, struct vcpu *v,
         goto read_as_zero;
 
     /* Read the active status of an IRQ via GICD/GICR is not supported */
-    case VRANGE32(GICD_ISACTIVER, GICD_ISACTIVER):
+    case VRANGE32(GICD_ISACTIVER, GICD_ISACTIVERN):
     case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN):
         goto read_as_zero;
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 21:44:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 21:44:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jR0gY-0004J8-7Y; Tue, 21 Apr 2020 21:44:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jR0gW-0004Iz-MP
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 21:44:04 +0000
X-Inumbo-ID: 37d490e8-8419-11ea-91c9-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 37d490e8-8419-11ea-91c9-12813bfff9fa;
 Tue, 21 Apr 2020 21:44:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=c0eVP7CiUfystCtCR63GCkiXmNB5zgWSfXQoXPMpgg8=; b=0NElPYZcjEGQoPMIa5WfN/avaC
 oya7ndxD5OxIFGmTWQxor1XsMLQ8TiaFop9TnIrdDW0jALgR2amK4KqMLE15ZFJuhYvnwjWL19zSw
 3lQlSz+iyZ62jxoERTCjAEnRB7qj1+YElILGF14CQaQit1QNUQcFmVDPv/z865JNwiWY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jR0gV-000236-6s
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 21:44:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jR0gV-0005I0-5X
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 21:44:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] sched/core: fix bug when moving a domain between cpupools
Message-Id: <E1jR0gV-0005I0-5X@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 21:44:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ee97008433f15e60478058c8ace514b939b6f862
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Fri Apr 17 09:27:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 17 09:27:21 2020 +0200

    sched/core: fix bug when moving a domain between cpupools
    
    For each UNIT, sched_set_affinity is called before unit->priv is updated
    to the new cpupool private UNIT data structure. The issue is
    sched_set_affinity will call the adjust_affinity method of the cpupool.
    If defined, the new cpupool may use unit->priv (e.g. credit), which at
    this point still references the old cpupool private UNIT data structure.
    
    This change fixes the bug by moving the switch of unit->priv earler in
    the function.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Dario Faggioli <dfaggioli@suse.com>
---
 xen/common/sched/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index 626861a3fe..c4ed070470 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -686,6 +686,7 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
         unsigned int unit_p = new_p;
 
         unitdata = unit->priv;
+        unit->priv = unit_priv[unit_idx];
 
         for_each_sched_unit_vcpu ( unit, v )
         {
@@ -707,7 +708,6 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
          */
         spin_unlock_irq(lock);
 
-        unit->priv = unit_priv[unit_idx];
         if ( !d->is_dying )
             sched_move_irqs(unit);
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 21:44:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 21:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jR0gi-0004K6-9w; Tue, 21 Apr 2020 21:44:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jR0gg-0004Jw-Pp
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 21:44:14 +0000
X-Inumbo-ID: 3d31f366-8419-11ea-91c9-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 3d31f366-8419-11ea-91c9-12813bfff9fa;
 Tue, 21 Apr 2020 21:44:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=OOAg7i2HKwWBv9V6ngriN/StUVErStpnb44p0mVhiD8=; b=ast3RtMutWN7VuZOm1cQJ6yCvN
 mKkqd/eUZIXOhG4+4BDz3bhayIlTDd7kwvM7AR4d77j2QGXJ6BwlfIh+By0mh7PJ5/9AmgAlsupxf
 4zj7ET3vUtWlKKTr4fe+/F3AvbGjI828TnqjF19H17MWSXQIBOGcRuujJOf6qgYZOhUg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jR0gf-00023E-J0
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 21:44:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jR0gf-0005Is-Ff
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 21:44:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] sched: fix scheduler_disable() with core scheduling
Message-Id: <E1jR0gf-0005Is-Ff@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 21:44:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 82dd1a956d9b68f52e830d1dddfdfb4ab4d5a638
Author:     Sergey Dyasli <sergey.dyasli@citrix.com>
AuthorDate: Fri Apr 17 09:28:16 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 17 09:28:16 2020 +0200

    sched: fix scheduler_disable() with core scheduling
    
    In core-scheduling mode, Xen might crash when entering ACPI S5 state.
    This happens in sched_slave() during is_idle_unit(next) check because
    next->vcpu_list is stale and points to an already freed memory.
    
    This situation happens shortly after scheduler_disable() is called if
    some CPU is still inside sched_slave() softirq. Current logic simply
    returns prev->next_task from sched_wait_rendezvous_in() which causes
    the described crash because next_task->vcpu_list has become invalid.
    
    Fix the crash by returning NULL from sched_wait_rendezvous_in() in
    the case when scheduler_disable() has been called.
    
    Signed-off-by: Sergey Dyasli <sergey.dyasli@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
---
 xen/common/sched/core.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index c4ed070470..d94b95285f 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -2484,19 +2484,15 @@ static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
 
         *lock = pcpu_schedule_lock_irq(cpu);
 
-        if ( unlikely(!scheduler_active) )
-        {
-            ASSERT(is_idle_unit(prev));
-            atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
-            prev->rendezvous_in_cnt = 0;
-        }
-
         /*
          * Check for scheduling resource switched. This happens when we are
          * moved away from our cpupool and cpus are subject of the idle
          * scheduler now.
+         *
+         * This is also a bail out case when scheduler_disable() has been
+         * called.
          */
-        if ( unlikely(sr != get_sched_res(cpu)) )
+        if ( unlikely(sr != get_sched_res(cpu) || !scheduler_active) )
         {
             ASSERT(is_idle_unit(prev));
             atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Tue Apr 21 23:55:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 21 Apr 2020 23:55:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.89)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jR2jK-0007bd-Um; Tue, 21 Apr 2020 23:55:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from
 <SRS0=o50T=6F=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jR2jJ-0007bY-Pz
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 23:55:05 +0000
X-Inumbo-ID: 855726d5-842b-11ea-91ec-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 855726d5-842b-11ea-91ec-12813bfff9fa;
 Tue, 21 Apr 2020 23:55:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=blQUU9QD2wFpEwqc8Ze4B83p8NAz+I/OHQNdJofCpuk=; b=GlOq/vt4lGmTh4mqIivJg3Ue4C
 kPIk4A3dRxfRcmwsC09EGorSO6/sCO9j9+W2jxvNEEp7W/wy2RUQ8zwJgZKyJ8IP7FJPEZn7U0Prk
 U8oWs53/YNCcEKgLqu0IF9ckFJz3oF29UZN2NdcEILrz9p2zbV5vDjjXW/qNKHq4o5Os=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jR2jI-0004cA-J2
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 23:55:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jR2jI-0005WI-Hi
 for xen-changelog@lists.xenproject.org; Tue, 21 Apr 2020 23:55:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/arm: Avoid open-coding the relinquish state machine
Message-Id: <E1jR2jI-0005WI-Hi@xenbits.xenproject.org>
Date: Tue, 21 Apr 2020 23:55:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.23
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 5730ac3c8346f56fe8ee90249cdcbdab2a4d5791
Author:     Julien Grall <julien@xen.org>
AuthorDate: Sun Apr 19 10:50:30 2020 +0100
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Tue Apr 21 16:46:25 2020 -0700

    xen/arm: Avoid open-coding the relinquish state machine
    
    In commit 0dfffe01d5 "x86: Improve the efficiency of
    domain_relinquish_resources()", the x86 version of the function has been
    reworked to avoid open-coding the state machine and also add more
    documentation.
    
    Bring the Arm version on par with x86 by introducing a documented
    PROGRESS() macro to avoid latent bugs and make the new PROG_* states
    private to domain_relinquish_resources().
    
    Cc: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
 xen/arch/arm/domain.c        | 60 +++++++++++++++++++++++++++-----------------
 xen/include/asm-arm/domain.h |  9 +------
 2 files changed, 38 insertions(+), 31 deletions(-)

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 6627be2922..31169326b2 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -674,7 +674,6 @@ int arch_domain_create(struct domain *d,
     int rc, count = 0;
 
     BUILD_BUG_ON(GUEST_MAX_VCPUS < MAX_VIRT_CPUS);
-    d->arch.relmem = RELMEM_not_started;
 
     /* Idle domains do not need this setup */
     if ( is_idle_domain(d) )
@@ -950,13 +949,41 @@ static int relinquish_memory(struct domain *d, struct page_list_head *list)
     return ret;
 }
 
+/*
+ * Record the current progress. Subsequent hypercall continuations will
+ * logically restart work from this point.
+ *
+ * PROGRESS() markers must not be in the middle of loops. The loop
+ * variable isn't preserved accross a continuation.
+ *
+ * To avoid redundant work, there should be a marker before each
+ * function which may return -ERESTART.
+ */
+enum {
+    PROG_tee = 1,
+    PROG_xen,
+    PROG_page,
+    PROG_mapping,
+    PROG_done,
+};
+
+#define PROGRESS(x)                         \
+    d->arch.rel_priv = PROG_ ## x;          \
+    /* Fallthrough */                       \
+    case PROG_ ## x
+
 int domain_relinquish_resources(struct domain *d)
 {
     int ret = 0;
 
-    switch ( d->arch.relmem )
+    /*
+     * This hypercall can take minutes of wallclock time to complete.  This
+     * logic implements a co-routine, stashing state in struct domain across
+     * hypercall continuation boundaries.
+     */
+    switch ( d->arch.rel_priv )
     {
-    case RELMEM_not_started:
+    case 0:
         ret = iommu_release_dt_devices(d);
         if ( ret )
             return ret;
@@ -967,42 +994,27 @@ int domain_relinquish_resources(struct domain *d)
          */
         domain_vpl011_deinit(d);
 
-        d->arch.relmem = RELMEM_tee;
-        /* Fallthrough */
-
-    case RELMEM_tee:
+    PROGRESS(tee):
         ret = tee_relinquish_resources(d);
         if (ret )
             return ret;
 
-        d->arch.relmem = RELMEM_xen;
-        /* Fallthrough */
-
-    case RELMEM_xen:
+    PROGRESS(xen):
         ret = relinquish_memory(d, &d->xenpage_list);
         if ( ret )
             return ret;
 
-        d->arch.relmem = RELMEM_page;
-        /* Fallthrough */
-
-    case RELMEM_page:
+    PROGRESS(page):
         ret = relinquish_memory(d, &d->page_list);
         if ( ret )
             return ret;
 
-        d->arch.relmem = RELMEM_mapping;
-        /* Fallthrough */
-
-    case RELMEM_mapping:
+    PROGRESS(mapping):
         ret = relinquish_p2m_mapping(d);
         if ( ret )
             return ret;
 
-        d->arch.relmem = RELMEM_done;
-        /* Fallthrough */
-
-    case RELMEM_done:
+    PROGRESS(done):
         break;
 
     default:
@@ -1012,6 +1024,8 @@ int domain_relinquish_resources(struct domain *d)
     return 0;
 }
 
+#undef PROGRESS
+
 void arch_dump_domain_info(struct domain *d)
 {
     p2m_dump_info(d);
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index d39477a939..d2142c6707 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -56,14 +56,7 @@ struct arch_domain
     struct vmmio vmmio;
 
     /* Continuable domain_relinquish_resources(). */
-    enum {
-        RELMEM_not_started,
-        RELMEM_tee,
-        RELMEM_xen,
-        RELMEM_page,
-        RELMEM_mapping,
-        RELMEM_done,
-    } relmem;
+    unsigned int rel_priv;
 
     struct {
         uint64_t offset;
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 22 09:00:43 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2020 09:00:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRBFH-0003D9-BN; Wed, 22 Apr 2020 09:00:39 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=An2L=6G=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRBFG-0003Cx-6m
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:00:38 +0000
X-Inumbo-ID: bb7cdf8c-8477-11ea-9243-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bb7cdf8c-8477-11ea-9243-12813bfff9fa;
 Wed, 22 Apr 2020 09:00:37 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ltzq88cGXsGyL0sVbba0Pb6RnnR3jKWIWDrN12YWLUA=; b=Cl61p1RxRj2OsShfejrSNBjDKy
 0OZpg97gFsasWF1ZY0F5LXmGivJ7MGJCHYvnsb8LJVBW/J3JuDyjZEJKg6j0htZhpAJbouLlQYgNN
 hlqsQyTI81i5HWIGE9iE+xdrNDxZ+78GoiZ1jgBK5kq9HoVSl5Dic27vXiEhaexw1mZo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRBFE-0000zZ-TI
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:00:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRBFE-0006Bx-KI
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:00:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shadow: make sh_remove_write_access() helper HVM
 only
Message-Id: <E1jRBFE-0006Bx-KI@xenbits.xenproject.org>
Date: Wed, 22 Apr 2020 09:00:36 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 43f1a11f9a5727289e0c89fe5ead4594f3582efa
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 10:50:05 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 10:50:05 2020 +0200

    x86/shadow: make sh_remove_write_access() helper HVM only
    
    Despite the inline attribute at least some clang versions warn about
    trace_shadow_wrmap_bf() being unused in !HVM builds. Include the helper
    in the #ifdef region.
    
    Fixes: 8b8d011ad868 ("x86/shadow: the guess_wrmap() hook is needed for HVM only")
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index aad977ccd7..4e135474e1 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -1756,6 +1756,7 @@ void sh_destroy_shadow(struct domain *d, mfn_t smfn)
     }
 }
 
+#ifdef CONFIG_HVM
 static inline void trace_shadow_wrmap_bf(mfn_t gmfn)
 {
     if ( tb_init_done )
@@ -1767,7 +1768,6 @@ static inline void trace_shadow_wrmap_bf(mfn_t gmfn)
     }
 }
 
-#ifdef CONFIG_HVM
 /**************************************************************************/
 /* Remove all writeable mappings of a guest frame from the shadow tables
  * Returns non-zero if we need to flush TLBs.
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 22 09:00:51 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2020 09:00:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRBFT-0003F6-EJ; Wed, 22 Apr 2020 09:00:51 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=An2L=6G=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRBFR-0003Ej-Do
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:00:49 +0000
X-Inumbo-ID: c24b832c-8477-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c24b832c-8477-11ea-83d8-bc764e2007e4;
 Wed, 22 Apr 2020 09:00:48 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Jla24WQ3fICczjVZE7LQAK7LMmfPot5TcFuE2smyhdk=; b=sXqINtfV5XWbnZSEaX6L0tKrOl
 v+IjFjPpwBLdSRnDuzDMCjWFzfFcvs5XbVUa7XlUzfZzJkYpCkzA6sXCZNHEk16wyYZx/yKhsbq63
 NM3vRrr2CbWp1SIvRrP7I8P5Rf9JUpX0WWaK6L5aV5nNkPS9UTg3sQX0VVECfEdQRIEs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRBFQ-0000zf-8v
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:00:48 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRBFP-0006DM-Ty
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:00:47 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/shadow: sh_update_linear_entries() is a no-op for PV
Message-Id: <E1jRBFP-0006DM-Ty@xenbits.xenproject.org>
Date: Wed, 22 Apr 2020 09:00:47 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7dc64a837532efb3e42b097115199910aac6976b
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 10:54:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 10:54:08 2020 +0200

    x86/shadow: sh_update_linear_entries() is a no-op for PV
    
    Consolidate the shadow_mode_external() in here: Check this once at the
    start of the function.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/multi.c | 80 +++++++++++++++---------------------------
 1 file changed, 29 insertions(+), 51 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 2851aa0407..4c2e7319e9 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -3680,20 +3680,7 @@ sh_update_linear_entries(struct vcpu *v)
 {
     struct domain *d = v->domain;
 
-    /* Linear pagetables in PV guests
-     * ------------------------------
-     *
-     * Guest linear pagetables, which map the guest pages, are at
-     * LINEAR_PT_VIRT_START.  Shadow linear pagetables, which map the
-     * shadows, are at SH_LINEAR_PT_VIRT_START.  Most of the time these
-     * are set up at shadow creation time, but (of course!) the PAE case
-     * is subtler.  Normal linear mappings are made by having an entry
-     * in the top-level table that points to itself (shadow linear) or
-     * to the guest top-level table (guest linear).  For PAE, to set up
-     * a linear map requires us to copy the four top-level entries into
-     * level-2 entries.  That means that every time we change a PAE l3e,
-     * we need to reflect the change into the copy.
-     *
+    /*
      * Linear pagetables in HVM guests
      * -------------------------------
      *
@@ -3711,34 +3698,30 @@ sh_update_linear_entries(struct vcpu *v)
      */
 
     /* Don't try to update the monitor table if it doesn't exist */
-    if ( shadow_mode_external(d)
-         && pagetable_get_pfn(v->arch.monitor_table) == 0 )
+    if ( !shadow_mode_external(d) ||
+         pagetable_get_pfn(v->arch.monitor_table) == 0 )
         return;
 
 #if SHADOW_PAGING_LEVELS == 4
 
-    /* For PV, one l4e points at the guest l4, one points at the shadow
-     * l4.  No maintenance required.
-     * For HVM, just need to update the l4e that points to the shadow l4. */
+    /* For HVM, just need to update the l4e that points to the shadow l4. */
 
-    if ( shadow_mode_external(d) )
+    /* Use the linear map if we can; otherwise make a new mapping */
+    if ( v == current )
     {
-        /* Use the linear map if we can; otherwise make a new mapping */
-        if ( v == current )
-        {
-            __linear_l4_table[l4_linear_offset(SH_LINEAR_PT_VIRT_START)] =
-                l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
-                             __PAGE_HYPERVISOR_RW);
-        }
-        else
-        {
-            l4_pgentry_t *ml4e;
-            ml4e = map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
-            ml4e[l4_table_offset(SH_LINEAR_PT_VIRT_START)] =
-                l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
-                             __PAGE_HYPERVISOR_RW);
-            unmap_domain_page(ml4e);
-        }
+        __linear_l4_table[l4_linear_offset(SH_LINEAR_PT_VIRT_START)] =
+            l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
+                         __PAGE_HYPERVISOR_RW);
+    }
+    else
+    {
+        l4_pgentry_t *ml4e;
+
+        ml4e = map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
+        ml4e[l4_table_offset(SH_LINEAR_PT_VIRT_START)] =
+            l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
+                         __PAGE_HYPERVISOR_RW);
+        unmap_domain_page(ml4e);
     }
 
 #elif SHADOW_PAGING_LEVELS == 3
@@ -3752,7 +3735,6 @@ sh_update_linear_entries(struct vcpu *v)
      * the shadows.
      */
 
-    ASSERT(shadow_mode_external(d));
     {
         /* Install copies of the shadow l3es into the monitor l2 table
          * that maps SH_LINEAR_PT_VIRT_START. */
@@ -3803,20 +3785,16 @@ sh_update_linear_entries(struct vcpu *v)
 #error this should not happen
 #endif
 
-    if ( shadow_mode_external(d) )
-    {
-        /*
-         * Having modified the linear pagetable mapping, flush local host TLBs.
-         * This was not needed when vmenter/vmexit always had the side effect
-         * of flushing host TLBs but, with ASIDs, it is possible to finish
-         * this CR3 update, vmenter the guest, vmexit due to a page fault,
-         * without an intervening host TLB flush. Then the page fault code
-         * could use the linear pagetable to read a top-level shadow page
-         * table entry. But, without this change, it would fetch the wrong
-         * value due to a stale TLB.
-         */
-        flush_tlb_local();
-    }
+    /*
+     * Having modified the linear pagetable mapping, flush local host TLBs.
+     * This was not needed when vmenter/vmexit always had the side effect of
+     * flushing host TLBs but, with ASIDs, it is possible to finish this CR3
+     * update, vmenter the guest, vmexit due to a page fault, without an
+     * intervening host TLB flush. Then the page fault code could use the
+     * linear pagetable to read a top-level shadow page table entry. But,
+     * without this change, it would fetch the wrong value due to a stale TLB.
+     */
+    flush_tlb_local();
 }
 
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 22 09:01:02 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2020 09:01:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRBFe-0003HJ-GX; Wed, 22 Apr 2020 09:01:02 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=An2L=6G=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRBFc-0003Gq-Hl
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:01:00 +0000
X-Inumbo-ID: c908102c-8477-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c908102c-8477-11ea-b4f4-bc764e2007e4;
 Wed, 22 Apr 2020 09:00:59 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=IHeFOmCiZgATtARLgcN5/7e2afwEemlSQvQ/AxWDluw=; b=3VGtESW04DlvBSn00f4n5/pDDe
 GAaM2+mjhzGixOw5LIhXj+PaM8ZnqCoi6oYiW4R8mddaoW2LMWZNrthAz0IQS5wIxIqU9pDBSXH6q
 xrYqkZWdT88r89IFCc5o/mg15LI27nUBGJ9NN+Dm+VgwvJOze1VCcJUUSFunxTWfsigc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRBFb-00010Y-KH
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:00:59 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRBFb-0006Eg-DM
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 09:00:59 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/mm: monitor table is HVM-only
Message-Id: <E1jRBFb-0006Eg-DM@xenbits.xenproject.org>
Date: Wed, 22 Apr 2020 09:00:59 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 17b094b97c823c956c57e31c5cd7175d56b3efe4
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 10:55:15 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 10:55:15 2020 +0200

    x86/mm: monitor table is HVM-only
    
    Move the per-vCPU field to the HVM sub-structure.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm.c               |  2 +-
 xen/arch/x86/mm/hap/hap.c       | 10 +++++-----
 xen/arch/x86/mm/shadow/common.c | 14 +++++++-------
 xen/arch/x86/mm/shadow/multi.c  | 10 +++++-----
 xen/include/asm-x86/domain.h    |  1 -
 xen/include/asm-x86/hvm/vcpu.h  |  3 +++
 6 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index ee56e053e1..ab9cd00225 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -545,7 +545,7 @@ void write_ptbase(struct vcpu *v)
  * Should be called after CR3 is updated.
  *
  * Uses values found in vcpu->arch.(guest_table and guest_table_user), and
- * for HVM guests, arch.monitor_table and hvm's guest CR3.
+ * for HVM guests, arch.hvm.monitor_table and hvm's guest CR3.
  *
  * Update ref counts to shadow tables appropriately.
  */
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 052ae35c6f..11829e7aad 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -393,7 +393,7 @@ static mfn_t hap_make_monitor_table(struct vcpu *v)
     l4_pgentry_t *l4e;
     mfn_t m4mfn;
 
-    ASSERT(pagetable_get_pfn(v->arch.monitor_table) == 0);
+    ASSERT(pagetable_get_pfn(v->arch.hvm.monitor_table) == 0);
 
     if ( (pg = hap_alloc(d)) == NULL )
         goto oom;
@@ -579,10 +579,10 @@ void hap_teardown(struct domain *d, bool *preempted)
         {
             if ( paging_get_hostmode(v) && paging_mode_external(d) )
             {
-                mfn = pagetable_get_mfn(v->arch.monitor_table);
+                mfn = pagetable_get_mfn(v->arch.hvm.monitor_table);
                 if ( mfn_valid(mfn) && (mfn_x(mfn) != 0) )
                     hap_destroy_monitor_table(v, mfn);
-                v->arch.monitor_table = pagetable_null();
+                v->arch.hvm.monitor_table = pagetable_null();
             }
         }
     }
@@ -758,10 +758,10 @@ static void hap_update_paging_modes(struct vcpu *v)
 
     v->arch.paging.mode = hap_paging_get_mode(v);
 
-    if ( pagetable_is_null(v->arch.monitor_table) )
+    if ( pagetable_is_null(v->arch.hvm.monitor_table) )
     {
         mfn_t mmfn = hap_make_monitor_table(v);
-        v->arch.monitor_table = pagetable_from_mfn(mmfn);
+        v->arch.hvm.monitor_table = pagetable_from_mfn(mmfn);
         make_cr3(v, mmfn);
         hvm_update_host_cr3(v);
     }
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 4e135474e1..3746dd6fb0 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -2465,10 +2465,10 @@ static void sh_update_paging_modes(struct vcpu *v)
                 &SHADOW_INTERNAL_NAME(sh_paging_mode, 2);
         }
 
-        if ( pagetable_is_null(v->arch.monitor_table) )
+        if ( pagetable_is_null(v->arch.hvm.monitor_table) )
         {
             mfn_t mmfn = v->arch.paging.mode->shadow.make_monitor_table(v);
-            v->arch.monitor_table = pagetable_from_mfn(mmfn);
+            v->arch.hvm.monitor_table = pagetable_from_mfn(mmfn);
             make_cr3(v, mmfn);
             hvm_update_host_cr3(v);
         }
@@ -2502,10 +2502,10 @@ static void sh_update_paging_modes(struct vcpu *v)
                     return;
                 }
 
-                old_mfn = pagetable_get_mfn(v->arch.monitor_table);
-                v->arch.monitor_table = pagetable_null();
+                old_mfn = pagetable_get_mfn(v->arch.hvm.monitor_table);
+                v->arch.hvm.monitor_table = pagetable_null();
                 new_mfn = v->arch.paging.mode->shadow.make_monitor_table(v);
-                v->arch.monitor_table = pagetable_from_mfn(new_mfn);
+                v->arch.hvm.monitor_table = pagetable_from_mfn(new_mfn);
                 SHADOW_PRINTK("new monitor table %"PRI_mfn "\n",
                                mfn_x(new_mfn));
 
@@ -2724,11 +2724,11 @@ void shadow_teardown(struct domain *d, bool *preempted)
 #ifdef CONFIG_HVM
                 if ( shadow_mode_external(d) )
                 {
-                    mfn_t mfn = pagetable_get_mfn(v->arch.monitor_table);
+                    mfn_t mfn = pagetable_get_mfn(v->arch.hvm.monitor_table);
 
                     if ( mfn_valid(mfn) && (mfn_x(mfn) != 0) )
                         v->arch.paging.mode->shadow.destroy_monitor_table(v, mfn);
-                    v->arch.monitor_table = pagetable_null();
+                    v->arch.hvm.monitor_table = pagetable_null();
                 }
 #endif /* CONFIG_HVM */
             }
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 4c2e7319e9..bd88852b64 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -1521,7 +1521,7 @@ sh_make_monitor_table(struct vcpu *v)
 {
     struct domain *d = v->domain;
 
-    ASSERT(pagetable_get_pfn(v->arch.monitor_table) == 0);
+    ASSERT(pagetable_get_pfn(v->arch.hvm.monitor_table) == 0);
 
     /* Guarantee we can get the memory we need */
     shadow_prealloc(d, SH_type_monitor_table, CONFIG_PAGING_LEVELS);
@@ -3699,7 +3699,7 @@ sh_update_linear_entries(struct vcpu *v)
 
     /* Don't try to update the monitor table if it doesn't exist */
     if ( !shadow_mode_external(d) ||
-         pagetable_get_pfn(v->arch.monitor_table) == 0 )
+         pagetable_get_pfn(v->arch.hvm.monitor_table) == 0 )
         return;
 
 #if SHADOW_PAGING_LEVELS == 4
@@ -3717,7 +3717,7 @@ sh_update_linear_entries(struct vcpu *v)
     {
         l4_pgentry_t *ml4e;
 
-        ml4e = map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
+        ml4e = map_domain_page(pagetable_get_mfn(v->arch.hvm.monitor_table));
         ml4e[l4_table_offset(SH_LINEAR_PT_VIRT_START)] =
             l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
                          __PAGE_HYPERVISOR_RW);
@@ -3752,7 +3752,7 @@ sh_update_linear_entries(struct vcpu *v)
             l4_pgentry_t *ml4e;
             l3_pgentry_t *ml3e;
             int linear_slot = shadow_l4_table_offset(SH_LINEAR_PT_VIRT_START);
-            ml4e = map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
+            ml4e = map_domain_page(pagetable_get_mfn(v->arch.hvm.monitor_table));
 
             ASSERT(l4e_get_flags(ml4e[linear_slot]) & _PAGE_PRESENT);
             l3mfn = l4e_get_mfn(ml4e[linear_slot]);
@@ -4087,7 +4087,7 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
     ///
     if ( shadow_mode_external(d) )
     {
-        make_cr3(v, pagetable_get_mfn(v->arch.monitor_table));
+        make_cr3(v, pagetable_get_mfn(v->arch.hvm.monitor_table));
     }
 #if SHADOW_PAGING_LEVELS == 4
     else // not shadow_mode_external...
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index e2294d553f..1e409c665d 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -583,7 +583,6 @@ struct arch_vcpu
     /* guest_table holds a ref to the page, and also a type-count unless
      * shadow refcounts are in use */
     pagetable_t shadow_table[4];        /* (MFN) shadow(s) of guest */
-    pagetable_t monitor_table;          /* (MFN) hypervisor PT (for HVM) */
     unsigned long cr3;                  /* (MA) value to install in HW CR3 */
 
     /*
diff --git a/xen/include/asm-x86/hvm/vcpu.h b/xen/include/asm-x86/hvm/vcpu.h
index eaeba71cf1..3d80cf5d76 100644
--- a/xen/include/asm-x86/hvm/vcpu.h
+++ b/xen/include/asm-x86/hvm/vcpu.h
@@ -176,6 +176,9 @@ struct hvm_vcpu {
         uint16_t p2midx;
     } fast_single_step;
 
+    /* (MFN) hypervisor page table */
+    pagetable_t         monitor_table;
+
     struct hvm_vcpu_asid n1asid;
 
     u64                 msr_tsc_adjust;
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 22 11:11:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2020 11:11:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRDHX-0007kd-AG; Wed, 22 Apr 2020 11:11:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=An2L=6G=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRDHW-0007gb-Eh
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 11:11:06 +0000
X-Inumbo-ID: f582ea34-8489-11ea-925d-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f582ea34-8489-11ea-925d-12813bfff9fa;
 Wed, 22 Apr 2020 11:11:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jFiJpW/yjJPGMvkccnd4ZTYQQw/kSnT0Q4GRmRvnfGw=; b=0vgC5x0XSkpI3Tzv007vaApjVo
 PkQH0W9zejlZ86dZgrelwZI7MuoJAJA1YPSU4EVz3In95ZAFb7Vu/dHfjA2hvWlYeh+xXt5iJK6ft
 lmQVf83MYXJ+elTNO912HiNtWqGSjvXvZp29JYitDwlYR9l/mbnlD11LFzeH787VgtKE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRDHV-0003ye-5F
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 11:11:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRDHV-000390-3Z
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 11:11:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/HVM: expose VM assist hypercall
Message-Id: <E1jRDHV-000390-3Z@xenbits.xenproject.org>
Date: Wed, 22 Apr 2020 11:11:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f13404d57f55a97838f1c16a366fbc3231ec21f1
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 12:58:25 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 12:58:25 2020 +0200

    x86/HVM: expose VM assist hypercall
    
    In preparation for the addition of VMASST_TYPE_runstate_update_flag
    commit 72c538cca957 ("arm: add support for vm_assist hypercall") enabled
    the hypercall for Arm. I consider it not logical that it then isn't also
    exposed to x86 HVM guests (with the same single feature permitted to be
    enabled as Arm has); Linux actually tries to use it afaict.
    
    Rather than introducing yet another thin wrapper around vm_assist(),
    make that function the main handler, requiring a per-arch
    arch_vm_assist_valid_mask() definition instead.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/x86/domain.c        |  3 +++
 xen/arch/x86/hvm/hypercall.c |  1 +
 xen/arch/x86/pv/hypercall.c  |  2 +-
 xen/common/compat/kernel.c   |  5 -----
 xen/common/domain.c          | 13 ++++++++-----
 xen/common/kernel.c          |  7 -------
 xen/include/asm-arm/config.h |  2 --
 xen/include/asm-arm/domain.h |  2 ++
 xen/include/asm-x86/config.h | 11 -----------
 xen/include/asm-x86/domain.h | 19 +++++++++++++++++++
 xen/include/xen/hypercall.h  |  2 --
 xen/include/xen/lib.h        |  2 --
 12 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index a008d7df1c..7f18f4a88a 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -939,6 +939,9 @@ int arch_set_info_guest(
         v->arch.dr6 = c(debugreg[6]);
         v->arch.dr7 = c(debugreg[7]);
 
+        if ( v->vcpu_id == 0 )
+            d->vm_assist = c.nat->vm_assist;
+
         hvm_set_info_guest(v);
         goto out;
     }
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index cedc7f2ac5..b4a0aeab50 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -128,6 +128,7 @@ static const hypercall_table_t hvm_hypercall_table[] = {
 #ifdef CONFIG_GRANT_TABLE
     HVM_CALL(grant_table_op),
 #endif
+    HYPERCALL(vm_assist),
     COMPAT_CALL(vcpu_op),
     HVM_CALL(physdev_op),
     COMPAT_CALL(xen_version),
diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c
index 17ddf9ea1f..686a7f2c5c 100644
--- a/xen/arch/x86/pv/hypercall.c
+++ b/xen/arch/x86/pv/hypercall.c
@@ -57,7 +57,7 @@ const hypercall_table_t pv_hypercall_table[] = {
 #ifdef CONFIG_GRANT_TABLE
     COMPAT_CALL(grant_table_op),
 #endif
-    COMPAT_CALL(vm_assist),
+    HYPERCALL(vm_assist),
     COMPAT_CALL(update_va_mapping_otherdomain),
     COMPAT_CALL(iret),
     COMPAT_CALL(vcpu_op),
diff --git a/xen/common/compat/kernel.c b/xen/common/compat/kernel.c
index 5c6e7322f8..804b919bdc 100644
--- a/xen/common/compat/kernel.c
+++ b/xen/common/compat/kernel.c
@@ -37,11 +37,6 @@ CHECK_TYPE(capabilities_info);
 
 CHECK_TYPE(domain_handle);
 
-#ifdef COMPAT_VM_ASSIST_VALID
-#undef VM_ASSIST_VALID
-#define VM_ASSIST_VALID COMPAT_VM_ASSIST_VALID
-#endif
-
 #define DO(fn) int compat_##fn
 #define COMPAT
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 3dcd73f67c..7cc9526139 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1517,20 +1517,23 @@ long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
-#ifdef VM_ASSIST_VALID
-long vm_assist(struct domain *p, unsigned int cmd, unsigned int type,
-               unsigned long valid)
+#ifdef arch_vm_assist_valid_mask
+long do_vm_assist(unsigned int cmd, unsigned int type)
 {
+    struct domain *currd = current->domain;
+    const unsigned long valid = arch_vm_assist_valid_mask(currd);
+
     if ( type >= BITS_PER_LONG || !test_bit(type, &valid) )
         return -EINVAL;
 
     switch ( cmd )
     {
     case VMASST_CMD_enable:
-        set_bit(type, &p->vm_assist);
+        set_bit(type, &currd->vm_assist);
         return 0;
+
     case VMASST_CMD_disable:
-        clear_bit(type, &p->vm_assist);
+        clear_bit(type, &currd->vm_assist);
         return 0;
     }
 
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 22941cec94..572e3fc07d 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -566,13 +566,6 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return -ENOSYS;
 }
 
-#ifdef VM_ASSIST_VALID
-DO(vm_assist)(unsigned int cmd, unsigned int type)
-{
-    return vm_assist(current->domain, cmd, type, VM_ASSIST_VALID);
-}
-#endif
-
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h
index bc89e84f4d..fbb4b23a69 100644
--- a/xen/include/asm-arm/config.h
+++ b/xen/include/asm-arm/config.h
@@ -195,8 +195,6 @@ extern unsigned long frametable_virt_end;
 #define watchdog_disable() ((void)0)
 #define watchdog_enable()  ((void)0)
 
-#define VM_ASSIST_VALID          (1UL << VMASST_TYPE_runstate_update_flag)
-
 #endif /* __ARM_CONFIG_H__ */
 /*
  * Local variables:
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index d2142c6707..4e2f582006 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -262,6 +262,8 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
+#define arch_vm_assist_valid_mask(d) (1UL << VMASST_TYPE_runstate_update_flag)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index a34053c4c0..2d6393e64e 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -309,17 +309,6 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
-#define NATIVE_VM_ASSIST_VALID   ((1UL << VMASST_TYPE_4gb_segments)        | \
-                                  (1UL << VMASST_TYPE_4gb_segments_notify) | \
-                                  (1UL << VMASST_TYPE_writable_pagetables) | \
-                                  (1UL << VMASST_TYPE_pae_extended_cr3)    | \
-                                  (1UL << VMASST_TYPE_architectural_iopl)  | \
-                                  (1UL << VMASST_TYPE_runstate_update_flag)| \
-                                  (1UL << VMASST_TYPE_m2p_strict))
-#define VM_ASSIST_VALID          NATIVE_VM_ASSIST_VALID
-#define COMPAT_VM_ASSIST_VALID   (NATIVE_VM_ASSIST_VALID & \
-                                  ((1UL << COMPAT_BITS_PER_LONG) - 1))
-
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 1e409c665d..b10d74fb57 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -701,6 +701,25 @@ static inline void pv_inject_sw_interrupt(unsigned int vector)
     pv_inject_event(&event);
 }
 
+#define PV32_VM_ASSIST_MASK ((1UL << VMASST_TYPE_4gb_segments)        | \
+                             (1UL << VMASST_TYPE_4gb_segments_notify) | \
+                             (1UL << VMASST_TYPE_writable_pagetables) | \
+                             (1UL << VMASST_TYPE_pae_extended_cr3)    | \
+                             (1UL << VMASST_TYPE_architectural_iopl)  | \
+                             (1UL << VMASST_TYPE_runstate_update_flag))
+/*
+ * Various of what PV32_VM_ASSIST_MASK has isn't really applicable to 64-bit,
+ * but we can't make such requests fail all of the sudden.
+ */
+#define PV64_VM_ASSIST_MASK (PV32_VM_ASSIST_MASK                      | \
+                             (1UL << VMASST_TYPE_m2p_strict))
+#define HVM_VM_ASSIST_MASK  (1UL << VMASST_TYPE_runstate_update_flag)
+
+#define arch_vm_assist_valid_mask(d) \
+    (is_hvm_domain(d) ? HVM_VM_ASSIST_MASK \
+                      : is_pv_32bit_domain(d) ? PV32_VM_ASSIST_MASK \
+                                              : PV64_VM_ASSIST_MASK)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index ad8ad27b23..d82a293377 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -192,8 +192,6 @@ extern int compat_xsm_op(
 
 extern int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg);
 
-extern int compat_vm_assist(unsigned int cmd, unsigned int type);
-
 DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t);
 extern int compat_multicall(
     XEN_GUEST_HANDLE_PARAM(multicall_entry_compat_t) call_list,
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 5d718bbdba..2d7a054931 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -122,8 +122,6 @@ extern void guest_printk(const struct domain *d, const char *format, ...)
     __attribute__ ((format (printf, 2, 3)));
 extern void noreturn panic(const char *format, ...)
     __attribute__ ((format (printf, 1, 2)));
-extern long vm_assist(struct domain *, unsigned int cmd, unsigned int type,
-                      unsigned long valid);
 extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst);
 extern int printk_ratelimit(void);
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 22 11:11:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 22 Apr 2020 11:11:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRDHh-0007oG-DH; Wed, 22 Apr 2020 11:11:17 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=An2L=6G=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRDHg-0007o9-0d
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 11:11:16 +0000
X-Inumbo-ID: fb87f244-8489-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fb87f244-8489-11ea-83d8-bc764e2007e4;
 Wed, 22 Apr 2020 11:11:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=70pOXswWJkvCQpgV72Uat72FwxOsw+WRw+DtwNDJ8CM=; b=S18VDXIK3tiNdtc4OXIEQC5nzf
 vb4dCPRQBlWjrIqJYOJR6W8rDhlSY79IG83YKYgjvQ3nmQX9mO8I7XUOiGyjN1mFIX+4YS2+vsPAw
 Ga18RM7pfo3FEOhLPPcthgZCEi22D6JxxBO/e7IOx4oVCExC0OSi2l1x0cCzGY+99znw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRDHf-0003yk-8M
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 11:11:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRDHf-0003AF-72
 for xen-changelog@lists.xenproject.org; Wed, 22 Apr 2020 11:11:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86: validate VM assist value in arch_set_info_guest()
Message-Id: <E1jRDHf-0003AF-72@xenbits.xenproject.org>
Date: Wed, 22 Apr 2020 11:11:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a62c6fe05c4ae905b7d4cb0ca946508b7f96d522
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 13:01:10 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 13:01:10 2020 +0200

    x86: validate VM assist value in arch_set_info_guest()
    
    While I can't spot anything that would go wrong, just like the
    respective hypercall only permits applicable bits to be set, we should
    also do so when loading guest context.
    
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/arch/x86/domain.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 7f18f4a88a..a4428190d5 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -932,6 +932,9 @@ int arch_set_info_guest(
         }
     }
 
+    if ( v->vcpu_id == 0 && (c(vm_assist) & ~arch_vm_assist_valid_mask(d)) )
+        return -EINVAL;
+
     if ( is_hvm_domain(d) )
     {
         for ( i = 0; i < ARRAY_SIZE(v->arch.dr); ++i )
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 08:11:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 08:11:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRWwy-0005IE-Ur; Thu, 23 Apr 2020 08:11:12 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRWwx-0005Hq-59
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:11 +0000
X-Inumbo-ID: fd40a436-8539-11ea-9335-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fd40a436-8539-11ea-9335-12813bfff9fa;
 Thu, 23 Apr 2020 08:11:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=p8NZfFXsE/aq4QCi6oB7qXPQmgE9ufrr5IuQ+jm05J4=; b=bNIXbZdmwta/chUDN4Xz2mfrxm
 9sECQ2gb/NCE+cadfsx7DKRgHXUZBMod0G5DukEa3Oq6PIN3IXVoezfCKS22sF7X30CimyNDIWFe6
 usgDuKBSCo7qFvnYqpwjEaPSsLdpOgyKipEGjEEhOI+vOYntcLjBFZBXElcYwoGxLfTo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWwv-0005kB-IV
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:09 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWwv-0001om-HZ
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:09 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/HVM: cancel emulation when register state got
 altered
Message-Id: <E1jRWwv-0001om-HZ@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 08:11:09 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a141051d7695265c721863dc91a2dc206b9ff5b1
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 23 09:51:18 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:51:18 2020 +0200

    x86/HVM: cancel emulation when register state got altered
    
    Re-execution (after having received data from a device model) relies on
    the same register state still being in place as it was when the request
    was first sent to the device model. Therefore vCPU state changes
    effected by remote sources need to result in no attempt of re-execution.
    Instead the returned data is to simply be ignored.
    
    Note that any such asynchronous state changes happen with the vCPU at
    least paused (potentially down and/or not marked ->is_initialised), so
    there's no issue with fiddling with register state behind the actively
    running emulator's back. Hence the new function doesn't need to
    synchronize with the core emulation logic.
    
    Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <pdurrant@amzn.com>
---
 xen/arch/x86/domctl.c             |  6 ++++++
 xen/arch/x86/hvm/domain.c         |  4 ++++
 xen/arch/x86/hvm/emulate.c        | 17 +++++++++++++++++
 xen/arch/x86/hvm/hvm.c            | 10 ++++++++++
 xen/arch/x86/hvm/vlapic.c         |  3 +++
 xen/include/asm-x86/hvm/emulate.h |  1 +
 xen/include/asm-x86/hvm/hvm.h     |  9 ++-------
 7 files changed, 43 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index add70126b9..03dffa5ecf 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -21,6 +21,7 @@
 #include <xen/iocap.h>
 #include <xen/paging.h>
 #include <asm/irq.h>
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/hvm.h>
 #include <asm/hvm/support.h>
 #include <asm/processor.h>
@@ -1147,11 +1148,16 @@ long arch_do_domctl(
             else
             {
                 vcpu_pause(v);
+
                 v->arch.xcr0 = _xcr0;
                 v->arch.xcr0_accum = _xcr0_accum;
                 v->arch.nonlazy_xstate_used = _xcr0_accum & XSTATE_NONLAZY;
                 compress_xsave_states(v, _xsave_area,
                                       evc->size - PV_XSAVE_HDR_SIZE);
+
+                if ( is_hvm_domain(d) )
+                    hvmemul_cancel(v);
+
                 vcpu_unpause(v);
             }
 
diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c
index 5d5a746a25..8e3375265c 100644
--- a/xen/arch/x86/hvm/domain.c
+++ b/xen/arch/x86/hvm/domain.c
@@ -22,6 +22,8 @@
 #include <xen/paging.h>
 #include <xen/sched.h>
 
+#include <asm/hvm/emulate.h>
+
 #include <public/hvm/hvm_vcpu.h>
 
 static int check_segment(struct segment_register *reg, enum x86_segment seg)
@@ -323,6 +325,8 @@ int arch_set_info_hvm_guest(struct vcpu *v, const vcpu_hvm_context_t *ctx)
 
     paging_update_paging_modes(v);
 
+    hvmemul_cancel(v);
+
     v->is_initialised = 1;
     set_bit(_VPF_down, &v->pause_flags);
 
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index d717277b2f..a4185c68cb 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -121,6 +121,23 @@ static const struct hvm_io_handler ioreq_server_handler = {
     .ops = &ioreq_server_ops
 };
 
+/*
+ * Drop all records of in-flight emulation. This is needed whenever a vCPU's
+ * register state may have changed behind the emulator's back.
+ */
+void hvmemul_cancel(struct vcpu *v)
+{
+    struct hvm_vcpu_io *vio = &v->arch.hvm.hvm_io;
+
+    vio->io_req.state = STATE_IOREQ_NONE;
+    vio->io_completion = HVMIO_no_completion;
+    vio->mmio_cache_count = 0;
+    vio->mmio_insn_bytes = 0;
+    vio->mmio_access = (struct npfec){};
+    vio->mmio_retry = false;
+    vio->g2m_ioport = NULL;
+}
+
 static int hvmemul_do_io(
     bool_t is_mmio, paddr_t addr, unsigned long *reps, unsigned int size,
     uint8_t dir, bool_t df, bool_t data_is_addr, uintptr_t data)
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 45959d3412..34b39e27df 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -478,6 +478,14 @@ u64 hvm_get_guest_tsc_fixed(struct vcpu *v, uint64_t at_tsc)
     return tsc + v->arch.hvm.cache_tsc_offset;
 }
 
+void hvm_set_info_guest(struct vcpu *v)
+{
+    if ( hvm_funcs.set_info_guest )
+        alternative_vcall(hvm_funcs.set_info_guest, v);
+
+    hvmemul_cancel(v);
+}
+
 void hvm_migrate_timers(struct vcpu *v)
 {
     rtc_migrate_timers(v);
@@ -1163,6 +1171,8 @@ static int hvm_load_cpu_ctxt(struct domain *d, hvm_domain_context_t *h)
     v->arch.dr6   = ctxt.dr6;
     v->arch.dr7   = ctxt.dr7;
 
+    hvmemul_cancel(v);
+
     /* Auxiliary processors should be woken immediately. */
     v->is_initialised = 1;
     clear_bit(_VPF_down, &v->pause_flags);
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 26726a4312..7b5c633033 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -33,6 +33,7 @@
 #include <asm/apic.h>
 #include <asm/io_apic.h>
 #include <asm/vpmu.h>
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/hvm.h>
 #include <asm/hvm/io.h>
 #include <asm/hvm/support.h>
@@ -306,6 +307,8 @@ static void vlapic_init_sipi_one(struct vcpu *target, uint32_t icr)
         BUG();
     }
 
+    hvmemul_cancel(target);
+
     vcpu_unpause(target);
 }
 
diff --git a/xen/include/asm-x86/hvm/emulate.h b/xen/include/asm-x86/hvm/emulate.h
index 2bdddef730..a2ad7ff1aa 100644
--- a/xen/include/asm-x86/hvm/emulate.h
+++ b/xen/include/asm-x86/hvm/emulate.h
@@ -77,6 +77,7 @@ void hvm_emulate_init_per_insn(
     unsigned int insn_bytes);
 void hvm_emulate_writeback(
     struct hvm_emulate_ctxt *hvmemul_ctxt);
+void hvmemul_cancel(struct vcpu *v);
 struct segment_register *hvmemul_get_seg_reg(
     enum x86_segment seg,
     struct hvm_emulate_ctxt *hvmemul_ctxt);
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index f283c7d187..1eb377dd82 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -277,6 +277,8 @@ void hvm_get_segment_register(struct vcpu *v, enum x86_segment seg,
 void hvm_set_segment_register(struct vcpu *v, enum x86_segment seg,
                               struct segment_register *reg);
 
+void hvm_set_info_guest(struct vcpu *v);
+
 bool hvm_set_guest_bndcfgs(struct vcpu *v, u64 val);
 
 int hvm_vmexit_cpuid(struct cpu_user_regs *regs, unsigned int inst_len);
@@ -545,12 +547,6 @@ static inline unsigned int hvm_get_insn_bytes(struct vcpu *v, uint8_t *buf)
             ? alternative_call(hvm_funcs.get_insn_bytes, v, buf) : 0);
 }
 
-static inline void hvm_set_info_guest(struct vcpu *v)
-{
-    if ( hvm_funcs.set_info_guest )
-        alternative_vcall(hvm_funcs.set_info_guest, v);
-}
-
 static inline void hvm_invalidate_regs_fields(struct cpu_user_regs *regs)
 {
 #ifndef NDEBUG
@@ -681,7 +677,6 @@ static inline bool altp2m_vcpu_emulate_ve(struct vcpu *v)
  */
 int hvm_guest_x86_mode(struct vcpu *v);
 unsigned long hvm_get_shadow_gs_base(struct vcpu *v);
-void hvm_set_info_guest(struct vcpu *v);
 void hvm_cpuid_policy_changed(struct vcpu *v);
 void hvm_set_tsc_offset(struct vcpu *v, uint64_t offset, uint64_t at_tsc);
 bool hvm_get_guest_bndcfgs(struct vcpu *v, uint64_t *val);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 08:11:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 08:11:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRWx9-0005JJ-0R; Thu, 23 Apr 2020 08:11:23 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRWx7-0005J6-9F
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:21 +0000
X-Inumbo-ID: 033f7bbe-853a-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 033f7bbe-853a-11ea-b58d-bc764e2007e4;
 Thu, 23 Apr 2020 08:11:19 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=awxeHhZlsPmTAfi4z8I3QhfTmXx7yuHRCQbdBFgQeWo=; b=ucf89dDnSa4w/5jmLJOw2wn7mg
 XHQLpTr5TlTQXl/bOIPJpUvU498UpJ5NVJKUgmuvrx1BmYDwJKmto/DyO13yUeF98AmDRNJeLwXQ+
 hSAm8jR4UYAPD8joBVga5dnoOSKsbki+CRjtI9R6WyZuOevsJnaQZMKXB/w6x7pOAdEc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWx5-0005kF-Ly
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:19 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWx5-0001pm-L5
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:19 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/HVM: implement memory read caching for insn
 emulation
Message-Id: <E1jRWx5-0001pm-L5@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 08:11:19 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2efbc2d446b1315de9c6441a4d535b1fb91e1767
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 23 09:55:00 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:55:00 2020 +0200

    x86/HVM: implement memory read caching for insn emulation
    
    Emulation requiring device model assistance uses a form of instruction
    re-execution, assuming that the second (and any further) pass takes
    exactly the same path. This is a valid assumption as far as use of CPU
    registers goes (as those can't change without any other instruction
    executing in between [1]), but is wrong for memory accesses. In
    particular it has been observed that Windows might page out buffers
    underneath an instruction currently under emulation (hitting between two
    passes). If the first pass read a memory operand successfully, any
    subsequent pass needs to get to see the exact same value.
    
    Introduce a cache to make sure above described assumption holds. This
    is a very simplistic implementation for now: Only exact matches are
    satisfied (no overlaps or partial reads or anything); this is sufficient
    for the immediate purpose of making re-execution an exact replay. The
    cache also won't be used just yet for guest page walks; that'll be the
    subject of a subsequent change.
    
    With the cache being generally transparent to upper layers, but with it
    having limited capacity yet being required for correctness, certain
    users of hvm_copy_from_guest_*() need to disable caching temporarily,
    without invalidating the cache. Note that the adjustments here to
    hvm_hypercall() and hvm_task_switch() are benign at this point; they'll
    become relevant once we start to be able to emulate respective insns
    through the main emulator (and more changes will then likely be needed
    to nested code).
    
    As to the actual data page in a problamtic scenario, there are a couple
    of aspects to take into consideration:
    - We must be talking about an insn accessing two locations (two memory
      ones, one of which is MMIO, or a memory and an I/O one).
    - If the non I/O / MMIO side is being read, the re-read (if it occurs at
      all) is having its result discarded, by taking the shortcut through
      the first switch()'s STATE_IORESP_READY case in hvmemul_do_io(). Note
      how, among all the re-issue sanity checks there, we avoid comparing
      the actual data.
    - If the non I/O / MMIO side is being written, it is the OSes
      responsibility to avoid actually moving page contents to disk while
      there might still be a write access in flight - this is no different
      in behavior from bare hardware.
    - Read-modify-write accesses are, as always, complicated, and while we
      deal with them better nowadays than we did in the past, we're still
      not quite there to guarantee hardware like behavior in all cases
      anyway. Nothing is getting worse by the changes made here, afaict.
    
    In __hvm_copy() also reduce p's scope and change its type to void *.
    
    [1] Other than on actual hardware, actions like
        XEN_DOMCTL_sethvmcontext, XEN_DOMCTL_setvcpucontext,
        VCPUOP_initialise, INIT, or SIPI issued against the vCPU can occur
        while the vCPU is blocked waiting for a device model to return data.
        In such cases emulation now gets canceled, though, and hence re-
        execution correctness is unaffected.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <pdurrant@amzn.com>
---
 xen/arch/x86/hvm/emulate.c        | 151 ++++++++++++++++++++++++++++++++++++++
 xen/arch/x86/hvm/hvm.c            |  36 ++++++---
 xen/arch/x86/hvm/hypercall.c      |  23 +++++-
 xen/arch/x86/hvm/intercept.c      |   8 +-
 xen/arch/x86/hvm/svm/svm.c        |   2 +
 xen/arch/x86/hvm/vmsi.c           |   4 +
 xen/arch/x86/hvm/vmx/vmx.c        |   2 +
 xen/include/asm-x86/hvm/emulate.h |  34 +++++++++
 xen/include/asm-x86/hvm/vcpu.h    |   2 +
 9 files changed, 249 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index a4185c68cb..6b3cbc7e50 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -28,6 +28,19 @@
 #include <asm/iocap.h>
 #include <asm/vm_event.h>
 
+struct hvmemul_cache
+{
+    /* The cache is disabled as long as num_ents > max_ents. */
+    unsigned int num_ents;
+    unsigned int max_ents;
+    struct {
+        paddr_t gpa:PADDR_BITS;
+        unsigned int :BITS_PER_LONG - PADDR_BITS - 8;
+        unsigned int size:8;
+        unsigned long data;
+    } ents[];
+};
+
 static void hvmtrace_io_assist(const ioreq_t *p)
 {
     unsigned int size, event;
@@ -136,6 +149,8 @@ void hvmemul_cancel(struct vcpu *v)
     vio->mmio_access = (struct npfec){};
     vio->mmio_retry = false;
     vio->g2m_ioport = NULL;
+
+    hvmemul_cache_disable(v);
 }
 
 static int hvmemul_do_io(
@@ -1883,12 +1898,17 @@ static int hvmemul_rep_movs(
         rc = HVMTRANS_okay;
     }
     else
+    {
+        unsigned int token = hvmemul_cache_disable(curr);
+
         /*
          * We do a modicum of checking here, just for paranoia's sake and to
          * definitely avoid copying an unitialised buffer into guest address
          * space.
          */
         rc = hvm_copy_from_guest_phys(buf, sgpa, bytes);
+        hvmemul_cache_restore(curr, token);
+    }
 
     if ( rc == HVMTRANS_okay )
         rc = hvm_copy_to_guest_phys(dgpa, buf, bytes, curr);
@@ -2551,6 +2571,19 @@ static int _hvm_emulate_one(struct hvm_emulate_ctxt *hvmemul_ctxt,
     struct hvm_vcpu_io *vio = &curr->arch.hvm.hvm_io;
     int rc;
 
+    /*
+     * Enable caching if it's currently disabled, but leave the cache
+     * untouched if it's already enabled, for re-execution to consume
+     * entries populated by an earlier pass.
+     */
+    if ( vio->cache->num_ents > vio->cache->max_ents )
+    {
+        ASSERT(vio->io_req.state == STATE_IOREQ_NONE);
+        vio->cache->num_ents = 0;
+    }
+    else
+        ASSERT(vio->io_req.state == STATE_IORESP_READY);
+
     hvm_emulate_init_per_insn(hvmemul_ctxt, vio->mmio_insn,
                               vio->mmio_insn_bytes);
 
@@ -2564,6 +2597,7 @@ static int _hvm_emulate_one(struct hvm_emulate_ctxt *hvmemul_ctxt,
     {
         vio->mmio_cache_count = 0;
         vio->mmio_insn_bytes = 0;
+        hvmemul_cache_disable(curr);
     }
     else
     {
@@ -2856,6 +2890,123 @@ void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
            hvmemul_ctxt->insn_buf);
 }
 
+int hvmemul_cache_init(struct vcpu *v)
+{
+    /*
+     * No insn can access more than 16 independent linear addresses (AVX512F
+     * scatters/gathers being the worst). Each such linear range can span a
+     * page boundary, i.e. may require two page walks. Account for each insn
+     * byte individually, for simplicity.
+     */
+    const unsigned int nents = (CONFIG_PAGING_LEVELS + 1) *
+                               (MAX_INST_LEN + 16 * 2);
+    struct hvmemul_cache *cache = xmalloc_flex_struct(struct hvmemul_cache,
+                                                      ents, nents);
+
+    if ( !cache )
+        return -ENOMEM;
+
+    /* Cache is disabled initially. */
+    cache->num_ents = nents + 1;
+    cache->max_ents = nents;
+
+    v->arch.hvm.hvm_io.cache = cache;
+
+    return 0;
+}
+
+unsigned int hvmemul_cache_disable(struct vcpu *v)
+{
+    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+    unsigned int token = cache->num_ents;
+
+    cache->num_ents = cache->max_ents + 1;
+
+    return token;
+}
+
+void hvmemul_cache_restore(struct vcpu *v, unsigned int token)
+{
+    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+
+    ASSERT(cache->num_ents > cache->max_ents);
+    cache->num_ents = token;
+}
+
+bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
+                        void *buffer, unsigned int size)
+{
+    const struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+    unsigned int i;
+
+    /* Cache unavailable? */
+    if ( cache->num_ents > cache->max_ents )
+        return false;
+
+    while ( size > sizeof(cache->ents->data) )
+    {
+        i = gpa & (sizeof(cache->ents->data) - 1)
+            ? -gpa & (sizeof(cache->ents->data) - 1)
+            : sizeof(cache->ents->data);
+        if ( !hvmemul_read_cache(v, gpa, buffer, i) )
+            return false;
+        gpa += i;
+        buffer += i;
+        size -= i;
+    }
+
+    for ( i = 0; i < cache->num_ents; ++i )
+        if ( cache->ents[i].gpa == gpa && cache->ents[i].size == size )
+        {
+            memcpy(buffer, &cache->ents[i].data, size);
+            return true;
+        }
+
+    return false;
+}
+
+void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
+                         const void *buffer, unsigned int size)
+{
+    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+    unsigned int i;
+
+    /* Cache unavailable? */
+    if ( cache->num_ents > cache->max_ents )
+        return;
+
+    while ( size > sizeof(cache->ents->data) )
+    {
+        i = gpa & (sizeof(cache->ents->data) - 1)
+            ? -gpa & (sizeof(cache->ents->data) - 1)
+            : sizeof(cache->ents->data);
+        hvmemul_write_cache(v, gpa, buffer, i);
+        gpa += i;
+        buffer += i;
+        size -= i;
+    }
+
+    for ( i = 0; i < cache->num_ents; ++i )
+        if ( cache->ents[i].gpa == gpa && cache->ents[i].size == size )
+        {
+            memcpy(&cache->ents[i].data, buffer, size);
+            return;
+        }
+
+    if ( unlikely(i >= cache->max_ents) )
+    {
+        domain_crash(v->domain);
+        return;
+    }
+
+    cache->ents[i].gpa  = gpa;
+    cache->ents[i].size = size;
+
+    memcpy(&cache->ents[i].data, buffer, size);
+
+    cache->num_ents = i + 1;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 34b39e27df..814b7020d8 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -727,6 +727,8 @@ int hvm_domain_initialise(struct domain *d)
 /* This function and all its descendants need to be to be idempotent. */
 void hvm_domain_relinquish_resources(struct domain *d)
 {
+    struct vcpu *v;
+
     if ( hvm_funcs.domain_relinquish_resources )
         alternative_vcall(hvm_funcs.domain_relinquish_resources, d);
 
@@ -743,6 +745,9 @@ void hvm_domain_relinquish_resources(struct domain *d)
     rtc_deinit(d);
     pmtimer_deinit(d);
     hpet_deinit(d);
+
+    for_each_vcpu ( d, v )
+        hvmemul_cache_destroy(v);
 }
 
 void hvm_domain_destroy(struct domain *d)
@@ -1550,6 +1555,10 @@ int hvm_vcpu_initialise(struct vcpu *v)
 
     v->arch.hvm.inject_event.vector = HVM_EVENT_VECTOR_UNSET;
 
+    rc = hvmemul_cache_init(v);
+    if ( rc )
+        goto fail4;
+
     rc = setup_compat_arg_xlat(v); /* teardown: free_compat_arg_xlat() */
     if ( rc != 0 )
         goto fail4;
@@ -1585,6 +1594,7 @@ int hvm_vcpu_initialise(struct vcpu *v)
  fail5:
     free_compat_arg_xlat(v);
  fail4:
+    hvmemul_cache_destroy(v);
     hvm_funcs.vcpu_destroy(v);
  fail3:
     vlapic_destroy(v);
@@ -2946,6 +2956,7 @@ void hvm_task_switch(
     unsigned int eflags, new_cpl;
     pagefault_info_t pfinfo;
     int exn_raised, rc;
+    unsigned int token = hvmemul_cache_disable(v);
     struct tss32 tss;
 
     hvm_get_segment_register(v, x86_seg_gdtr, &gdt);
@@ -3153,6 +3164,8 @@ void hvm_task_switch(
  out:
     hvm_unmap_entry(optss_desc);
     hvm_unmap_entry(nptss_desc);
+
+    hvmemul_cache_restore(v, token);
 }
 
 enum hvm_translation_result hvm_translate_get_page(
@@ -3240,7 +3253,6 @@ static enum hvm_translation_result __hvm_copy(
     void *buf, paddr_t addr, unsigned int size, struct vcpu *v, unsigned int flags,
     uint32_t pfec, pagefault_info_t *pfinfo)
 {
-    char *p;
     ASSERT(is_hvm_vcpu(v));
 
     /*
@@ -3288,11 +3300,17 @@ static enum hvm_translation_result __hvm_copy(
             return HVMTRANS_need_retry;
         }
 
-        p = __map_domain_page(page) + pgoff;
-
-        if ( flags & HVMCOPY_to_guest )
+        if ( (flags & HVMCOPY_to_guest) ||
+             !hvmemul_read_cache(v, gfn_to_gaddr(gfn) | pgoff, buf, count) )
         {
-            if ( p2m_is_discard_write(p2mt) )
+            void *p = __map_domain_page(page) + pgoff;
+
+            if ( !(flags & HVMCOPY_to_guest) )
+            {
+                memcpy(buf, p, count);
+                hvmemul_write_cache(v, gfn_to_gaddr(gfn) | pgoff, buf, count);
+            }
+            else if ( p2m_is_discard_write(p2mt) )
             {
                 static unsigned long lastpage;
 
@@ -3309,13 +3327,9 @@ static enum hvm_translation_result __hvm_copy(
                     memset(p, 0, count);
                 paging_mark_pfn_dirty(v->domain, _pfn(gfn_x(gfn)));
             }
-        }
-        else
-        {
-            memcpy(buf, p, count);
-        }
 
-        unmap_domain_page(p);
+            unmap_domain_page(p);
+        }
 
         addr += count;
         if ( buf )
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index b4a0aeab50..17ba0fe91b 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -22,6 +22,7 @@
 #include <xen/hypercall.h>
 #include <xen/nospec.h>
 
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/support.h>
 #include <asm/hvm/viridian.h>
 
@@ -164,6 +165,7 @@ int hvm_hypercall(struct cpu_user_regs *regs)
     struct domain *currd = curr->domain;
     int mode = hvm_guest_x86_mode(curr);
     unsigned long eax = regs->eax;
+    unsigned int token;
 
     switch ( mode )
     {
@@ -188,7 +190,18 @@ int hvm_hypercall(struct cpu_user_regs *regs)
     }
 
     if ( (eax & 0x80000000) && is_viridian_domain(currd) )
-        return viridian_hypercall(regs);
+    {
+        int ret;
+
+        /* See comment below. */
+        token = hvmemul_cache_disable(curr);
+
+        ret = viridian_hypercall(regs);
+
+        hvmemul_cache_restore(curr, token);
+
+        return ret;
+    }
 
     BUILD_BUG_ON(ARRAY_SIZE(hvm_hypercall_table) >
                  ARRAY_SIZE(hypercall_args_table));
@@ -207,6 +220,12 @@ int hvm_hypercall(struct cpu_user_regs *regs)
         return HVM_HCALL_completed;
     }
 
+    /*
+     * Caching is intended for instruction emulation only. Disable it
+     * for any accesses by hypercall argument copy-in / copy-out.
+     */
+    token = hvmemul_cache_disable(curr);
+
     curr->hcall_preempted = false;
 
     if ( mode == 8 )
@@ -300,6 +319,8 @@ int hvm_hypercall(struct cpu_user_regs *regs)
 #endif
     }
 
+    hvmemul_cache_restore(curr, token);
+
     HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%lu -> %lx", eax, regs->rax);
 
     if ( curr->hcall_preempted )
diff --git a/xen/arch/x86/hvm/intercept.c b/xen/arch/x86/hvm/intercept.c
index 0976a992ad..cd4c4c14b1 100644
--- a/xen/arch/x86/hvm/intercept.c
+++ b/xen/arch/x86/hvm/intercept.c
@@ -20,6 +20,7 @@
 #include <xen/types.h>
 #include <xen/sched.h>
 #include <asm/regs.h>
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/hvm.h>
 #include <asm/hvm/support.h>
 #include <asm/hvm/domain.h>
@@ -163,6 +164,9 @@ int hvm_process_io_intercept(const struct hvm_io_handler *handler,
         {
             if ( p->data_is_ptr )
             {
+                struct vcpu *curr = current;
+                unsigned int token = hvmemul_cache_disable(curr);
+
                 data = 0;
                 switch ( hvm_copy_from_guest_phys(&data, p->data + step * i,
                                                   p->size) )
@@ -179,9 +183,11 @@ int hvm_process_io_intercept(const struct hvm_io_handler *handler,
                     ASSERT_UNREACHABLE();
                     /* fall through */
                 default:
-                    domain_crash(current->domain);
+                    domain_crash(curr->domain);
                     return X86EMUL_UNHANDLEABLE;
                 }
+
+                hvmemul_cache_restore(curr, token);
             }
             else
                 data = p->data;
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 888f504a94..5950e4d52b 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1040,6 +1040,8 @@ void svm_vmenter_helper(const struct cpu_user_regs *regs)
     struct vcpu *curr = current;
     struct vmcb_struct *vmcb = curr->arch.hvm.svm.vmcb;
 
+    ASSERT(hvmemul_cache_disabled(curr));
+
     svm_asid_handle_vmrun();
 
     if ( unlikely(tb_init_done) )
diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
index 6597d9f719..5d4eddebee 100644
--- a/xen/arch/x86/hvm/vmsi.c
+++ b/xen/arch/x86/hvm/vmsi.c
@@ -35,6 +35,7 @@
 #include <xen/irq.h>
 #include <xen/vpci.h>
 #include <public/hvm/ioreq.h>
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/io.h>
 #include <asm/hvm/vpic.h>
 #include <asm/hvm/vlapic.h>
@@ -607,6 +608,7 @@ void msix_write_completion(struct vcpu *v)
     if ( !ctrl_address && snoop_addr &&
          v->arch.hvm.hvm_io.msix_snoop_gpa )
     {
+        unsigned int token = hvmemul_cache_disable(v);
         const struct msi_desc *desc;
         uint32_t data;
 
@@ -621,6 +623,8 @@ void msix_write_completion(struct vcpu *v)
                                       sizeof(data)) == HVMTRANS_okay &&
              !(data & PCI_MSIX_VECTOR_BITMASK) )
             ctrl_address = snoop_addr;
+
+        hvmemul_cache_restore(v, token);
     }
 
     if ( !ctrl_address )
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 869339062b..b4cf2eb4c1 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4362,6 +4362,8 @@ bool vmx_vmenter_helper(const struct cpu_user_regs *regs)
     struct hvm_vcpu_asid *p_asid;
     bool_t need_flush;
 
+    ASSERT(hvmemul_cache_disabled(curr));
+
     /* Shadow EPTP can't be updated here because irqs are disabled */
      if ( nestedhvm_vcpu_in_guestmode(curr) && vcpu_nestedhvm(curr).stale_np2m )
          return false;
diff --git a/xen/include/asm-x86/hvm/emulate.h b/xen/include/asm-x86/hvm/emulate.h
index a2ad7ff1aa..148bab93ce 100644
--- a/xen/include/asm-x86/hvm/emulate.h
+++ b/xen/include/asm-x86/hvm/emulate.h
@@ -14,6 +14,7 @@
 
 #include <xen/err.h>
 #include <xen/mm.h>
+#include <xen/sched.h>
 #include <asm/hvm/hvm.h>
 #include <asm/x86_emulate.h>
 
@@ -98,6 +99,39 @@ int hvmemul_do_pio_buffer(uint16_t port,
                           uint8_t dir,
                           void *buffer);
 
+#ifdef CONFIG_HVM
+/*
+ * The cache controlled by the functions below is not like an ordinary CPU
+ * cache, i.e. aiming to help performance, but a "secret store" which is
+ * needed for correctness.  The issue it helps addressing is the need for
+ * re-execution of an insn (after data was provided by a device model) to
+ * observe the exact same memory state, i.e. to specifically not observe any
+ * updates which may have occurred in the meantime by other agents.
+ * Therefore this cache gets
+ * - enabled when emulation of an insn starts,
+ * - disabled across processing secondary things like a hypercall resulting
+ *   from insn emulation,
+ * - disabled again when an emulated insn is known to not require any
+ *   further re-execution.
+ */
+int __must_check hvmemul_cache_init(struct vcpu *v);
+static inline void hvmemul_cache_destroy(struct vcpu *v)
+{
+    XFREE(v->arch.hvm.hvm_io.cache);
+}
+bool hvmemul_read_cache(const struct vcpu *, paddr_t gpa,
+                        void *buffer, unsigned int size);
+void hvmemul_write_cache(const struct vcpu *, paddr_t gpa,
+                         const void *buffer, unsigned int size);
+unsigned int hvmemul_cache_disable(struct vcpu *);
+void hvmemul_cache_restore(struct vcpu *, unsigned int token);
+/* For use in ASSERT()s only: */
+static inline bool hvmemul_cache_disabled(struct vcpu *v)
+{
+    return hvmemul_cache_disable(v) == hvmemul_cache_disable(v);
+}
+#endif
+
 void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
                               struct hvm_emulate_ctxt *hvmemul_ctxt, int rc);
 
diff --git a/xen/include/asm-x86/hvm/vcpu.h b/xen/include/asm-x86/hvm/vcpu.h
index 3d80cf5d76..5ccd075815 100644
--- a/xen/include/asm-x86/hvm/vcpu.h
+++ b/xen/include/asm-x86/hvm/vcpu.h
@@ -76,6 +76,8 @@ struct hvm_vcpu_io {
     /* For retries we shouldn't re-fetch the instruction. */
     unsigned int mmio_insn_bytes;
     unsigned char mmio_insn[16];
+    struct hvmemul_cache *cache;
+
     /*
      * For string instruction emulation we need to be able to signal a
      * necessary retry through other than function return codes.
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 08:11:32 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 08:11:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRWxI-0005LB-3j; Thu, 23 Apr 2020 08:11:32 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRWxG-0005Ky-So
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:30 +0000
X-Inumbo-ID: 094906d8-853a-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 094906d8-853a-11ea-9e09-bc764e2007e4;
 Thu, 23 Apr 2020 08:11:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=RF+ufqLdbLc8y9UE/zCtO+DKzbkhnwZgvsaD21yXu6A=; b=sqOj7kLRODB3QW98uLKj76zgVr
 W7Hsy476FXwH3ex+x3KIItfKdrtjlqkEyI1vtpGJYEfLmVe8ZlXzQMAngV6k0YTZ//iZtCJzjzYRq
 6uz2iTEFpl/nZTFoKeTFn44HhPwDqtLz/rH9RfiDgqoluE/IlJPnPajyOv73uu0NdpLE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxF-0005kP-PM
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:29 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxF-0001qi-OA
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:29 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/mm: use cache in guest_walk_tables()
Message-Id: <E1jRWxF-0001qi-OA@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 08:11:29 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8e85181cf88f83c4ca289f7273863179b1c20611
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 23 09:58:04 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:58:04 2020 +0200

    x86/mm: use cache in guest_walk_tables()
    
    Emulation requiring device model assistance uses a form of instruction
    re-execution, assuming that the second (and any further) pass takes
    exactly the same path. This is a valid assumption as far as use of CPU
    registers goes (as those can't change without any other instruction
    executing in between [1]), but is wrong for memory accesses. In
    particular it has been observed that Windows might page out buffers
    underneath an instruction currently under emulation (hitting between two
    passes). If the first pass translated a linear address successfully, any
    subsequent pass needs to do so too, yielding the exact same translation.
    To guarantee this, leverage the caching that now backs HVM insn
    emulation.
    
    [1] Other than on actual hardware, actions like
        XEN_DOMCTL_sethvmcontext, XEN_DOMCTL_setvcpucontext,
        VCPUOP_initialise, INIT, or SIPI issued against the vCPU can occur
        while the vCPU is blocked waiting for a device model to return data.
        In such cases emulation now gets canceled, though, and hence re-
        execution correctness is unaffected.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <pdurrant@amzn.com>
---
 xen/arch/x86/hvm/emulate.c        |  4 +--
 xen/arch/x86/mm/guest_walk.c      | 73 +++++++++++++++++++++++++++++++++------
 xen/arch/x86/mm/hap/guest_walk.c  |  3 +-
 xen/arch/x86/mm/shadow/multi.c    |  8 +++--
 xen/include/asm-x86/guest_pt.h    |  5 +--
 xen/include/asm-x86/hvm/emulate.h |  6 ++++
 6 files changed, 81 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index 6b3cbc7e50..e87ceaf23e 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2940,7 +2940,7 @@ bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
     unsigned int i;
 
     /* Cache unavailable? */
-    if ( cache->num_ents > cache->max_ents )
+    if ( !is_hvm_vcpu(v) || cache->num_ents > cache->max_ents )
         return false;
 
     while ( size > sizeof(cache->ents->data) )
@@ -2972,7 +2972,7 @@ void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
     unsigned int i;
 
     /* Cache unavailable? */
-    if ( cache->num_ents > cache->max_ents )
+    if ( !is_hvm_vcpu(v) || cache->num_ents > cache->max_ents )
         return;
 
     while ( size > sizeof(cache->ents->data) )
diff --git a/xen/arch/x86/mm/guest_walk.c b/xen/arch/x86/mm/guest_walk.c
index ab7021a1ce..1c601314f3 100644
--- a/xen/arch/x86/mm/guest_walk.c
+++ b/xen/arch/x86/mm/guest_walk.c
@@ -31,6 +31,7 @@ asm(".file \"" __OBJECT_FILE__ "\"");
 #include <xen/sched.h>
 #include <asm/page.h>
 #include <asm/guest_pt.h>
+#include <asm/hvm/emulate.h>
 
 /*
  * Modify a guest pagetable entry to set the Accessed and Dirty bits.
@@ -80,9 +81,9 @@ static bool set_ad_bits(guest_intpte_t *guest_p, guest_intpte_t *walk_p,
  * requested walk, to see whether the access is permitted.
  */
 bool
-guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
-                  unsigned long va, walk_t *gw,
-                  uint32_t walk, mfn_t top_mfn, void *top_map)
+guest_walk_tables(const struct vcpu *v, struct p2m_domain *p2m,
+                  unsigned long va, walk_t *gw, uint32_t walk,
+                  gfn_t top_gfn, mfn_t top_mfn, void *top_map)
 {
     struct domain *d = v->domain;
     guest_l1e_t *l1p = NULL;
@@ -90,8 +91,13 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
 #if GUEST_PAGING_LEVELS >= 4 /* 64-bit only... */
     guest_l3e_t *l3p = NULL;
     guest_l4e_t *l4p;
+    paddr_t l4gpa;
+#endif
+#if GUEST_PAGING_LEVELS >= 3 /* PAE or 64... */
+    paddr_t l3gpa;
 #endif
     uint32_t gflags, rc;
+    paddr_t l1gpa = 0, l2gpa = 0;
     unsigned int leaf_level;
     p2m_query_t qt = P2M_ALLOC | P2M_UNSHARE;
 
@@ -132,7 +138,13 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
     /* Get the l4e from the top level table and check its flags*/
     gw->l4mfn = top_mfn;
     l4p = (guest_l4e_t *) top_map;
-    gw->l4e = l4p[guest_l4_table_offset(va)];
+    l4gpa = gfn_to_gaddr(top_gfn) +
+            guest_l4_table_offset(va) * sizeof(gw->l4e);
+    if ( !hvmemul_read_cache(v, l4gpa, &gw->l4e, sizeof(gw->l4e)) )
+    {
+        gw->l4e = l4p[guest_l4_table_offset(va)];
+        hvmemul_write_cache(v, l4gpa, &gw->l4e, sizeof(gw->l4e));
+    }
     gflags = guest_l4e_get_flags(gw->l4e);
     if ( !(gflags & _PAGE_PRESENT) )
         goto out;
@@ -161,7 +173,13 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
     }
 
     /* Get the l3e and check its flags*/
-    gw->l3e = l3p[guest_l3_table_offset(va)];
+    l3gpa = gfn_to_gaddr(guest_l4e_get_gfn(gw->l4e)) +
+            guest_l3_table_offset(va) * sizeof(gw->l3e);
+    if ( !hvmemul_read_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e)) )
+    {
+        gw->l3e = l3p[guest_l3_table_offset(va)];
+        hvmemul_write_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e));
+    }
     gflags = guest_l3e_get_flags(gw->l3e);
     if ( !(gflags & _PAGE_PRESENT) )
         goto out;
@@ -213,7 +231,14 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
 #else /* PAE only... */
 
     /* Get the l3e and check its flag */
-    gw->l3e = ((guest_l3e_t *) top_map)[guest_l3_table_offset(va)];
+    l3gpa = gfn_to_gaddr(top_gfn) + ((unsigned long)top_map & ~PAGE_MASK) +
+            guest_l3_table_offset(va) * sizeof(gw->l3e);
+    if ( !hvmemul_read_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e)) )
+    {
+        gw->l3e = ((guest_l3e_t *)top_map)[guest_l3_table_offset(va)];
+        hvmemul_write_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e));
+    }
+
     gflags = guest_l3e_get_flags(gw->l3e);
     if ( !(gflags & _PAGE_PRESENT) )
         goto out;
@@ -238,18 +263,24 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
         goto out;
     }
 
-    /* Get the l2e */
-    gw->l2e = l2p[guest_l2_table_offset(va)];
+    l2gpa = gfn_to_gaddr(guest_l3e_get_gfn(gw->l3e));
 
 #else /* 32-bit only... */
 
-    /* Get l2e from the top level table */
     gw->l2mfn = top_mfn;
     l2p = (guest_l2e_t *) top_map;
-    gw->l2e = l2p[guest_l2_table_offset(va)];
+    l2gpa = gfn_to_gaddr(top_gfn);
 
 #endif /* All levels... */
 
+    /* Get the l2e */
+    l2gpa += guest_l2_table_offset(va) * sizeof(gw->l2e);
+    if ( !hvmemul_read_cache(v, l2gpa, &gw->l2e, sizeof(gw->l2e)) )
+    {
+        gw->l2e = l2p[guest_l2_table_offset(va)];
+        hvmemul_write_cache(v, l2gpa, &gw->l2e, sizeof(gw->l2e));
+    }
+
     /* Check the l2e flags. */
     gflags = guest_l2e_get_flags(gw->l2e);
     if ( !(gflags & _PAGE_PRESENT) )
@@ -330,7 +361,15 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
         gw->pfec |= rc & PFEC_synth_mask;
         goto out;
     }
-    gw->l1e = l1p[guest_l1_table_offset(va)];
+
+    l1gpa = gfn_to_gaddr(guest_l2e_get_gfn(gw->l2e)) +
+            guest_l1_table_offset(va) * sizeof(gw->l1e);
+    if ( !hvmemul_read_cache(v, l1gpa, &gw->l1e, sizeof(gw->l1e)) )
+    {
+        gw->l1e = l1p[guest_l1_table_offset(va)];
+        hvmemul_write_cache(v, l1gpa, &gw->l1e, sizeof(gw->l1e));
+    }
+
     gflags = guest_l1e_get_flags(gw->l1e);
     if ( !(gflags & _PAGE_PRESENT) )
         goto out;
@@ -441,22 +480,34 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
     case 1:
         if ( set_ad_bits(&l1p[guest_l1_table_offset(va)].l1, &gw->l1e.l1,
                          (walk & PFEC_write_access)) )
+        {
             paging_mark_dirty(d, gw->l1mfn);
+            hvmemul_write_cache(v, l1gpa, &gw->l1e, sizeof(gw->l1e));
+        }
         /* Fallthrough */
     case 2:
         if ( set_ad_bits(&l2p[guest_l2_table_offset(va)].l2, &gw->l2e.l2,
                          (walk & PFEC_write_access) && leaf_level == 2) )
+        {
             paging_mark_dirty(d, gw->l2mfn);
+            hvmemul_write_cache(v, l2gpa, &gw->l2e, sizeof(gw->l2e));
+        }
         /* Fallthrough */
 #if GUEST_PAGING_LEVELS == 4 /* 64-bit only... */
     case 3:
         if ( set_ad_bits(&l3p[guest_l3_table_offset(va)].l3, &gw->l3e.l3,
                          (walk & PFEC_write_access) && leaf_level == 3) )
+        {
             paging_mark_dirty(d, gw->l3mfn);
+            hvmemul_write_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e));
+        }
 
         if ( set_ad_bits(&l4p[guest_l4_table_offset(va)].l4, &gw->l4e.l4,
                          false) )
+        {
             paging_mark_dirty(d, gw->l4mfn);
+            hvmemul_write_cache(v, l4gpa, &gw->l4e, sizeof(gw->l4e));
+        }
 #endif
     }
 
diff --git a/xen/arch/x86/mm/hap/guest_walk.c b/xen/arch/x86/mm/hap/guest_walk.c
index 3b8ee2efce..6001cf3330 100644
--- a/xen/arch/x86/mm/hap/guest_walk.c
+++ b/xen/arch/x86/mm/hap/guest_walk.c
@@ -91,7 +91,8 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(
 #if GUEST_PAGING_LEVELS == 3
     top_map += (cr3 & ~(PAGE_MASK | 31));
 #endif
-    walk_ok = guest_walk_tables(v, p2m, ga, &gw, *pfec, top_mfn, top_map);
+    walk_ok = guest_walk_tables(v, p2m, ga, &gw, *pfec,
+                                top_gfn, top_mfn, top_map);
     unmap_domain_page(top_map);
     put_page(top_page);
 
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index bd88852b64..5368adf474 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -175,9 +175,13 @@ static inline bool
 sh_walk_guest_tables(struct vcpu *v, unsigned long va, walk_t *gw,
                      uint32_t pfec)
 {
+    gfn_t root_gfn = _gfn(paging_mode_external(v->domain)
+                          ? cr3_pa(v->arch.hvm.guest_cr[3]) >> PAGE_SHIFT
+                          : pagetable_get_pfn(v->arch.guest_table));
+
 #if GUEST_PAGING_LEVELS == 3 /* PAE */
     return guest_walk_tables(v, p2m_get_hostp2m(v->domain), va, gw, pfec,
-                             INVALID_MFN, v->arch.paging.shadow.gl3e);
+                             root_gfn, INVALID_MFN, v->arch.paging.shadow.gl3e);
 #else /* 32 or 64 */
     const struct domain *d = v->domain;
     mfn_t root_mfn = (v->arch.flags & TF_kernel_mode
@@ -185,7 +189,7 @@ sh_walk_guest_tables(struct vcpu *v, unsigned long va, walk_t *gw,
                       : pagetable_get_mfn(v->arch.guest_table_user));
     void *root_map = map_domain_page(root_mfn);
     bool ok = guest_walk_tables(v, p2m_get_hostp2m(d), va, gw, pfec,
-                                root_mfn, root_map);
+                                root_gfn, root_mfn, root_map);
 
     unmap_domain_page(root_map);
 
diff --git a/xen/include/asm-x86/guest_pt.h b/xen/include/asm-x86/guest_pt.h
index 6ab2041e48..6647ccfb85 100644
--- a/xen/include/asm-x86/guest_pt.h
+++ b/xen/include/asm-x86/guest_pt.h
@@ -428,8 +428,9 @@ static inline unsigned int guest_walk_to_page_order(const walk_t *gw)
 #define guest_walk_tables GPT_RENAME(guest_walk_tables, GUEST_PAGING_LEVELS)
 
 bool
-guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m, unsigned long va,
-                  walk_t *gw, uint32_t pfec, mfn_t top_mfn, void *top_map);
+guest_walk_tables(const struct vcpu *v, struct p2m_domain *p2m,
+                  unsigned long va, walk_t *gw, uint32_t pfec,
+                  gfn_t top_gfn, mfn_t top_mfn, void *top_map);
 
 /* Pretty-print the contents of a guest-walk */
 static inline void print_gw(const walk_t *gw)
diff --git a/xen/include/asm-x86/hvm/emulate.h b/xen/include/asm-x86/hvm/emulate.h
index 148bab93ce..f40290945c 100644
--- a/xen/include/asm-x86/hvm/emulate.h
+++ b/xen/include/asm-x86/hvm/emulate.h
@@ -130,6 +130,12 @@ static inline bool hvmemul_cache_disabled(struct vcpu *v)
 {
     return hvmemul_cache_disable(v) == hvmemul_cache_disable(v);
 }
+#else
+static inline bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
+                                      void *buf,
+                                      unsigned int size) { return false; }
+static inline void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
+                                       const void *buf, unsigned int size) {}
 #endif
 
 void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 08:11:42 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 08:11:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRWxS-0005Nd-5U; Thu, 23 Apr 2020 08:11:42 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRWxQ-0005NP-HD
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:40 +0000
X-Inumbo-ID: 0f1ed165-853a-11ea-9335-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0f1ed165-853a-11ea-9335-12813bfff9fa;
 Thu, 23 Apr 2020 08:11:40 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jdzH3FdUWMY/SR/hLO7CtmTnJCBfSAZte+noUkdoGY8=; b=QexGj1p/YEbW+ERaGV061uDlPw
 V9o6hU8Ik1nltfQ++NnMDpV0QHndRzwMNdtCoSrIY1SNadHkTRdoCZRQeaiHmVx4BfppQcSvvnGv6
 ZETvRc2tzrDXec04jtTaPYZdoDteRpld2yM1hC1AztDff6bXpDNS1vCMaTfxfywWLAfk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxP-0005mn-SI
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:39 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxP-0001rX-RF
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:39 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] build,xsm: fix multiple call
Message-Id: <E1jRWxP-0001rX-RF@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 08:11:39 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 52f3f319851e40892fbafeae53e512c7d61f03d0
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Thu Apr 23 09:59:05 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:59:05 2020 +0200

    build,xsm: fix multiple call
    
    Both script mkflask.sh and mkaccess_vector.sh generates multiple
    files. Exploits the 'multi-target pattern rule' trick to call each
    scripts only once.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/xsm/flask/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index b1fd454219..f001bb18d4 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -21,10 +21,10 @@ ALL_H_FILES = $(FLASK_H_FILES) $(AV_H_FILES)
 
 $(obj-y) ss/built_in.o: $(ALL_H_FILES)
 
-$(FLASK_H_FILES): $(FLASK_H_DEPEND)
+$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkflask.sh $(AWK) include $(FLASK_H_DEPEND)
 
-$(AV_H_FILES): $(AV_H_DEPEND)
+$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkaccess_vector.sh $(AWK) $(AV_H_DEPEND)
 
 obj-bin-$(CONFIG_XSM_FLASK_POLICY) += flask-policy.o
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 08:11:51 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 08:11:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRWxb-0005PB-74; Thu, 23 Apr 2020 08:11:51 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRWxa-0005P0-PG
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:50 +0000
X-Inumbo-ID: 154de69c-853a-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 154de69c-853a-11ea-b58d-bc764e2007e4;
 Thu, 23 Apr 2020 08:11:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Lrcl5fJ8l8Zw6uJh/8z7XYLBKSPjxjYCeP59V/KyYtY=; b=JMtLtVsm1rvYcLpvpBkfhBuOcU
 Ffah3pPv/v/bQZr/7wNSGsKncUNiqeZLdzyXrNFRlyBQCWQLRlgD3L2Pc2YKIJW1zTf6/RPDxfdu7
 6v0f81X3bPfVPaZJ+v/zUCMvJ9MxCERfGyrePIb7v0h4UCf3l5Ss7VxrcPdQqSXPV1Pg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxZ-0005mz-VT
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:49 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxZ-0001sJ-UP
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:11:49 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/build: include include/config/auto.conf in main
 Makefile
Message-Id: <E1jRWxZ-0001sJ-UP@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 08:11:49 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6c122d3984a5efb1f187cde0e478e4e346202f2b
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Thu Apr 23 09:59:27 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:59:27 2020 +0200

    xen/build: include include/config/auto.conf in main Makefile
    
    We are going to generate the CFLAGS early from "xen/Makefile" instead
    of in "Rules.mk", but we need to include "config/auto.conf", so
    include it in "Makefile".
    
    Before including "config/auto.conf" we check which make target a user
    is calling, as some targets don't need "auto.conf". For targets that
    needs auto.conf, make will generate it (and a default .config if
    missing).
    
    root-make-done is to avoid doing the calculation again once Rules.mk
    takes over and is been executed with the root Makefile. When Rules.mk
    is including xen/Makefile, `config-build' and `need-config' are
    undefined so auto.conf will not be included again (it is already
    included by Rules.mk) and kconfig target are out of reach of Rules.mk.
    
    We are introducing a target %config to catch all targets for kconfig.
    So we need an extra target %/.config to prevent make from trying to
    regenerate $(XEN_ROOT)/.config that is included in Config.mk.
    
    The way targets are filtered is inspired by Kbuild, with some code
    imported from Linux. That's why there is PHONY variable that isn't
    used yet, for example.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/Makefile | 101 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 78 insertions(+), 23 deletions(-)

diff --git a/xen/Makefile b/xen/Makefile
index e5f7b1ae13..643c689658 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -49,7 +49,76 @@ default: build
 .PHONY: dist
 dist: install
 
-build install:: include/config/auto.conf
+
+ifneq ($(root-make-done),y)
+# section to run before calling Rules.mk, but only once.
+#
+# To make sure we do not include .config for any of the *config targets
+# catch them early, and hand them over to tools/kconfig/Makefile
+
+clean-targets := %clean
+no-dot-config-targets := $(clean-targets) \
+                         uninstall debug cloc \
+                         cscope TAGS tags MAP gtags \
+                         xenversion
+
+config-build    := n
+need-config     := y
+
+ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
+    ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
+        need-config := n
+    endif
+endif
+
+ifneq ($(filter %config,$(MAKECMDGOALS)),)
+    config-build := y
+endif
+
+export root-make-done := y
+endif # root-make-done
+
+include scripts/Kbuild.include
+
+# Shorthand for kconfig
+kconfig = -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) HOSTCC="$(HOSTCC)" HOSTCXX="$(HOSTCXX)"
+
+ifeq ($(config-build),y)
+# ===========================================================================
+# *config targets only - make sure prerequisites are updated, and descend
+# in tools/kconfig to make the *config target
+
+config: FORCE
+	$(MAKE) $(kconfig) $@
+
+# Config.mk tries to include .config file, don't try to remake it
+%/.config: ;
+
+%config: FORCE
+	$(MAKE) $(kconfig) $@
+
+else # !config-build
+
+ifeq ($(need-config),y)
+include include/config/auto.conf
+# Read in dependencies to all Kconfig* files, make sure to run syncconfig if
+# changes are detected.
+include include/config/auto.conf.cmd
+
+# Allow people to just run `make` as before and not force them to configure
+$(KCONFIG_CONFIG):
+	$(MAKE) $(kconfig) defconfig
+
+# The actual configuration files used during the build are stored in
+# include/generated/ and include/config/. Update them if .config is newer than
+# include/config/auto.conf (which mirrors .config).
+#
+# This exploits the 'multi-target pattern rule' trick.
+# The syncconfig should be executed only once to make all the targets.
+include/config/%.conf include/config/%.conf.cmd: $(KCONFIG_CONFIG)
+	$(MAKE) $(kconfig) syncconfig
+
+endif # need-config
 
 .PHONY: build install uninstall clean distclean MAP
 build install uninstall debug clean distclean MAP::
@@ -254,9 +323,6 @@ cscope:
 _MAP:
 	$(NM) -n $(TARGET)-syms | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' > System.map
 
-.PHONY: FORCE
-FORCE:
-
 %.o %.i %.s: %.c FORCE
 	$(MAKE) -f $(BASEDIR)/Rules.mk -C $(*D) $(@F)
 
@@ -277,25 +343,6 @@ $(foreach base,arch/x86/mm/guest_walk_% \
                arch/x86/mm/shadow/guest_%, \
     $(foreach ext,o i s,$(call build-intermediate,$(base).$(ext))))
 
-kconfig := oldconfig config menuconfig defconfig allyesconfig allnoconfig \
-	nconfig xconfig gconfig savedefconfig listnewconfig olddefconfig \
-	randconfig $(notdir $(wildcard arch/$(SRCARCH)/configs/*_defconfig))
-.PHONY: $(kconfig)
-$(kconfig):
-	$(MAKE) -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) HOSTCC="$(HOSTCC)" HOSTCXX="$(HOSTCXX)" $@
-
-include/config/%.conf: include/config/auto.conf.cmd $(KCONFIG_CONFIG)
-	$(MAKE) -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) HOSTCC="$(HOSTCC)" HOSTCXX="$(HOSTCXX)" syncconfig
-
-# Allow people to just run `make` as before and not force them to configure
-$(KCONFIG_CONFIG):
-	$(MAKE) -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) HOSTCC="$(HOSTCC)" HOSTCXX="$(HOSTCXX)" defconfig
-
-# Break the dependency chain for the first run
-include/config/auto.conf.cmd: ;
-
--include $(BASEDIR)/include/config/auto.conf.cmd
-
 .PHONY: cloc
 cloc:
 	$(eval tmpfile := $(shell mktemp))
@@ -307,3 +354,11 @@ cloc:
 	cloc --list-file=$(tmpfile)
 	rm $(tmpfile)
 
+endif #config-build
+
+PHONY += FORCE
+FORCE:
+
+# Declare the contents of the PHONY variable as phony.  We keep that
+# information in a variable so we can use it in if_changed and friends.
+.PHONY: $(PHONY)
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 08:12:02 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 08:12:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRWxm-0005RT-Ac; Thu, 23 Apr 2020 08:12:02 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRWxl-0005RL-DU
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:12:01 +0000
X-Inumbo-ID: 1b51a42a-853a-11ea-9335-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1b51a42a-853a-11ea-9335-12813bfff9fa;
 Thu, 23 Apr 2020 08:12:00 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/vzdBWrwpKhsOIkfiN+NA6a/wnDlPlLK8cNARwnKe9M=; b=nIYw6Vy8fx9OnBqf+SUTvi6HxI
 yV1mt+VksRs6gZfwyizI8AriSmCbL9FnK8gmJ29nl3FbEj9Giz6tYbwz1XL9n0MyuooZomsUgBAjx
 BmXax+Rv4VeNECnTKbkO1r4gZ8reA+g80j+jGw3DrSjwSFkeg0AO771xW4iYFfQHWRwQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxk-0005n8-1v
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:12:00 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxk-0001t8-13
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:12:00 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/build: use new $(c_flags) and $(a_flags) instead of
 $(CFLAGS)
Message-Id: <E1jRWxk-0001t8-13@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 08:12:00 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 732571959f171638b5161c9ba0d557f7b6da74f4
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Thu Apr 23 10:00:07 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 10:00:07 2020 +0200

    xen/build: use new $(c_flags) and $(a_flags) instead of $(CFLAGS)
    
    In a later patch ("xen/build: have the root Makefile generates the
    CFLAGS), we want to generate the CFLAGS in xen/Makefile, then export
    it and have Rules.mk use a CFLAGS from the environment variables. That
    changes the flavor of the CFLAGS and flags intended for one target
    (like -D__OBJECT_FILE__ and -M%) gets propagated and duplicated. So we
    start by moving such flags out of $(CFLAGS) and into $(c_flags) which
    is to be modified by only Rules.mk.
    
    __OBJECT_FILE__ is only used by arch/x86/mm/*.c files, so having it in
    $(c_flags) is enough, we don't need it in $(a_flags).
    
    For include/Makefile and as-insn we can keep using CFLAGS, but since
    it doesn't have -M* flags anymore there is no need to filter them out.
    
    The XEN_BUILD_EFI tests in arch/x86/Makefile was filtering out
    CFLAGS-y, but according to dd40177c1bc8 ("x86-64/EFI: add CFLAGS to
    check compile"), it was done to filter out -MF. CFLAGS doesn't
    have those flags anymore, so no filtering is needed.
    
    This is inspired by the way Kbuild generates CFLAGS for each targets.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/Rules.mk                    | 23 +++++++++++------------
 xen/arch/arm/Makefile           |  4 ++--
 xen/arch/x86/Makefile           |  6 +++---
 xen/arch/x86/mm/Makefile        |  6 +++---
 xen/arch/x86/mm/hap/Makefile    |  6 +++---
 xen/arch/x86/mm/shadow/Makefile |  6 +++---
 xen/include/Makefile            |  2 +-
 7 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/xen/Rules.mk b/xen/Rules.mk
index 9079df7978..3408a35dbf 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,7 +57,6 @@ CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
 $(call cc-option-add,CFLAGS,CC,-Wvla)
 CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
 CFLAGS-$(CONFIG_DEBUG_INFO) += -g
-CFLAGS += '-D__OBJECT_FILE__="$@"'
 
 ifneq ($(CONFIG_CC_IS_CLANG),y)
 # Clang doesn't understand this command line argument, and doesn't appear to
@@ -70,9 +69,6 @@ AFLAGS += -D__ASSEMBLY__
 
 ALL_OBJS := $(ALL_OBJS-y)
 
-# Get gcc to generate the dependencies for us.
-CFLAGS-y += -MMD -MP -MF $(@D)/.$(@F).d
-
 CFLAGS += $(CFLAGS-y)
 # allow extra CFLAGS externally via EXTRA_CFLAGS_XEN_CORE
 CFLAGS += $(EXTRA_CFLAGS_XEN_CORE)
@@ -146,9 +142,12 @@ endif
 # Always build obj-bin files as binary even if they come from C source. 
 $(obj-bin-y): CFLAGS := $(filter-out -flto,$(CFLAGS))
 
+c_flags = -MMD -MP -MF $(@D)/.$(@F).d $(CFLAGS) '-D__OBJECT_FILE__="$@"'
+a_flags = -MMD -MP -MF $(@D)/.$(@F).d $(AFLAGS)
+
 built_in.o: $(obj-y) $(extra-y)
 ifeq ($(obj-y),)
-	$(CC) $(CFLAGS) -c -x c /dev/null -o $@
+	$(CC) $(c_flags) -c -x c /dev/null -o $@
 else
 ifeq ($(CONFIG_LTO),y)
 	$(LD_LTO) -r -o $@ $(filter-out $(extra-y),$^)
@@ -159,7 +158,7 @@ endif
 
 built_in_bin.o: $(obj-bin-y) $(extra-y)
 ifeq ($(obj-bin-y),)
-	$(CC) $(AFLAGS) -c -x assembler /dev/null -o $@
+	$(CC) $(a_flags) -c -x assembler /dev/null -o $@
 else
 	$(LD) $(LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
 endif
@@ -178,7 +177,7 @@ SRCPATH := $(patsubst $(BASEDIR)/%,%,$(CURDIR))
 
 %.o: %.c Makefile
 ifeq ($(CONFIG_ENFORCE_UNIQUE_SYMBOLS),y)
-	$(CC) $(CFLAGS) -c $< -o $(@D)/.$(@F).tmp -MQ $@
+	$(CC) $(c_flags) -c $< -o $(@D)/.$(@F).tmp -MQ $@
 ifeq ($(CONFIG_CC_IS_CLANG),y)
 	$(OBJCOPY) --redefine-sym $<=$(SRCPATH)/$< $(@D)/.$(@F).tmp $@
 else
@@ -186,11 +185,11 @@ else
 endif
 	rm -f $(@D)/.$(@F).tmp
 else
-	$(CC) $(CFLAGS) -c $< -o $@
+	$(CC) $(c_flags) -c $< -o $@
 endif
 
 %.o: %.S Makefile
-	$(CC) $(AFLAGS) -c $< -o $@
+	$(CC) $(a_flags) -c $< -o $@
 
 $(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o Makefile
 	$(OBJDUMP) -h $< | sed -n '/[0-9]/{s,00*,0,g;p;}' | while read idx name sz rest; do \
@@ -205,12 +204,12 @@ $(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o Makefile
 	$(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
 
 %.i: %.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(CFLAGS)) $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) $< -o $@
 
 %.s: %.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(CFLAGS)) -S $< -o $@
+	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -S $< -o $@
 
 %.s: %.S Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(AFLAGS)) $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(a_flags)) $< -o $@
 
 -include $(DEPS_INCLUDE)
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 7273f356f1..913f6cdeed 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -120,10 +120,10 @@ $(TARGET)-syms: prelink.o xen.lds
 	rm -f $(@D)/.$(@F).[0-9]*
 
 asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c
-	$(CC) $(filter-out -flto,$(CFLAGS)) -S -o $@ $<
+	$(CC) $(filter-out -flto,$(c_flags)) -S -o $@ $<
 
 xen.lds: xen.lds.S
-	$(CC) -P -E -Ui386 $(AFLAGS) -o $@ $<
+	$(CC) -P -E -Ui386 $(a_flags) -o $@ $<
 	sed -e 's/xen\.lds\.o:/xen\.lds:/g' <.xen.lds.d >.xen.lds.d.new
 	mv -f .xen.lds.d.new .xen.lds.d
 
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index e954edbc2e..1405525105 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -168,7 +168,7 @@ EFI_LDFLAGS += --major-os-version=2 --minor-os-version=0
 EFI_LDFLAGS += --major-subsystem-version=2 --minor-subsystem-version=0
 
 # Check if the compiler supports the MS ABI.
-export XEN_BUILD_EFI := $(shell $(CC) $(filter-out $(CFLAGS-y) .%.d,$(CFLAGS)) -c efi/check.c -o efi/check.o 2>/dev/null && echo y)
+export XEN_BUILD_EFI := $(shell $(CC) $(CFLAGS) -c efi/check.c -o efi/check.o 2>/dev/null && echo y)
 # Check if the linker supports PE.
 XEN_BUILD_PE := $(if $(XEN_BUILD_EFI),$(shell $(LD) -mi386pep --subsystem=10 -o efi/check.efi efi/check.o 2>/dev/null && echo y))
 CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI
@@ -223,7 +223,7 @@ efi/boot.init.o efi/runtime.o efi/compat.o efi/buildid.o efi/relocs-dummy.o: $(B
 efi/boot.init.o efi/runtime.o efi/compat.o efi/buildid.o efi/relocs-dummy.o: ;
 
 asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c $(BASEDIR)/include/asm-x86/asm-macros.h
-	$(CC) $(filter-out -Wa$(comma)% -flto,$(CFLAGS)) -S -o $@ $<
+	$(CC) $(filter-out -Wa$(comma)% -flto,$(c_flags)) -S -o $@ $<
 
 asm-macros.i: CFLAGS += -D__ASSEMBLY__ -P
 
@@ -240,7 +240,7 @@ $(BASEDIR)/include/asm-x86/asm-macros.h: asm-macros.i Makefile
 
 efi.lds: AFLAGS += -DEFI
 xen.lds efi.lds: xen.lds.S
-	$(CC) -P -E -Ui386 $(filter-out -Wa$(comma)%,$(AFLAGS)) -o $@ $<
+	$(CC) -P -E -Ui386 $(filter-out -Wa$(comma)%,$(a_flags)) -o $@ $<
 	sed -e 's/.*\.lds\.o:/$(@F):/g' <.$(@F).d >.$(@F).d.new
 	mv -f .$(@F).d.new .$(@F).d
 
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index d87dc0aa6e..a2431fde6b 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -12,10 +12,10 @@ obj-$(CONFIG_HVM) += p2m-ept.o p2m-pod.o
 obj-y += paging.o
 
 guest_walk_%.o: guest_walk.c Makefile
-	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CC) $(c_flags) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_walk_%.i: guest_walk.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_walk_%.s: guest_walk.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
+	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
diff --git a/xen/arch/x86/mm/hap/Makefile b/xen/arch/x86/mm/hap/Makefile
index b14a9aff93..22e7ad54bd 100644
--- a/xen/arch/x86/mm/hap/Makefile
+++ b/xen/arch/x86/mm/hap/Makefile
@@ -6,10 +6,10 @@ obj-y += nested_hap.o
 obj-y += nested_ept.o
 
 guest_walk_%level.o: guest_walk.c Makefile
-	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CC) $(c_flags) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_walk_%level.i: guest_walk.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_walk_%level.s: guest_walk.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
+	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
diff --git a/xen/arch/x86/mm/shadow/Makefile b/xen/arch/x86/mm/shadow/Makefile
index ff03a9937f..23d3ff1080 100644
--- a/xen/arch/x86/mm/shadow/Makefile
+++ b/xen/arch/x86/mm/shadow/Makefile
@@ -7,10 +7,10 @@ obj-y += none.o
 endif
 
 guest_%.o: multi.c Makefile
-	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CC) $(c_flags) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_%.i: multi.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_%.s: multi.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
+	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
diff --git a/xen/include/Makefile b/xen/include/Makefile
index 433bad9055..a488a98d8b 100644
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -64,7 +64,7 @@ compat/%.h: compat/%.i Makefile $(BASEDIR)/tools/compat-build-header.py
 	mv -f $@.new $@
 
 compat/%.i: compat/%.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)% -M% %.d -include %/include/xen/config.h,$(CFLAGS)) $(cppflags-y) -o $@ $<
+	$(CPP) $(filter-out -Wa$(comma)% -include %/include/xen/config.h,$(CFLAGS)) $(cppflags-y) -o $@ $<
 
 compat/%.c: public/%.h xlat.lst Makefile $(BASEDIR)/tools/compat-build-source.py
 	mkdir -p $(@D)
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 08:12:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 08:12:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRWxv-0005So-Dz; Thu, 23 Apr 2020 08:12:11 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRWxu-0005Sf-T7
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:12:10 +0000
X-Inumbo-ID: 21537f1a-853a-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 21537f1a-853a-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 08:12:10 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2ISpxIPNvUWroA9CbQFkeny3RVhcEc14srr3Qt3HvIo=; b=OMk6zlC6ZPfMlnIEE3tQjb8cHz
 0df8/rBytO791Tkzp7/FLtJJo2TqIulaMErvUGScx6+qYGAqJ7b1q6Pr40BW6AxJOcix0ECajL/a+
 8fzQDe2sWQ2Mb5UxvKLlKk8N2DtKQXQWIfrS/luJQ7QAyhYE60ULlLvfzUOies9ncBXs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxu-0005nX-4k
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:12:10 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRWxu-0001tr-3q
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 08:12:10 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] mem_sharing: allow forking domain with IOMMU enabled
Message-Id: <E1jRWxu-0001tr-3q@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 08:12:10 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit bb215898d46395080b911c15e5c3a7fff0c150cb
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Thu Apr 23 10:03:18 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 10:03:18 2020 +0200

    mem_sharing: allow forking domain with IOMMU enabled
    
    The memory sharing subsystem by default doesn't allow a domain to share memory
    if it has an IOMMU active for obvious security reasons. However, when fuzzing a
    VM fork, the same security restrictions don't necessarily apply. While it makes
    no sense to try to create a full fork of a VM that has an IOMMU attached as only
    one domain can own the pass-through device at a time, creating a shallow fork
    without a device model is still very useful for fuzzing kernel-mode drivers.
    
    By allowing the parent VM to initialize the kernel-mode driver with a real
    device that's pass-through, the driver can enter into a state more suitable for
    fuzzing. Some of these initialization steps are quite complex and are easier to
    perform when a real device is present. After the initialization, shallow forks
    can be utilized for fuzzing code-segments in the device driver that don't
    directly interact with the device.
    
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/mm/mem_sharing.c | 20 +++++++++++++-------
 xen/include/public/memory.h   |  4 +++-
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index e572e9e39d..bb74595351 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -1430,7 +1430,8 @@ static int range_share(struct domain *d, struct domain *cd,
     return rc;
 }
 
-static inline int mem_sharing_control(struct domain *d, bool enable)
+static inline int mem_sharing_control(struct domain *d, bool enable,
+                                      uint16_t flags)
 {
     if ( enable )
     {
@@ -1440,7 +1441,8 @@ static inline int mem_sharing_control(struct domain *d, bool enable)
         if ( unlikely(!hap_enabled(d)) )
             return -ENODEV;
 
-        if ( unlikely(is_iommu_enabled(d)) )
+        if ( unlikely(is_iommu_enabled(d) &&
+                      !(flags & XENMEM_FORK_WITH_IOMMU_ALLOWED)) )
             return -EXDEV;
     }
 
@@ -1827,7 +1829,8 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
     if ( rc )
         goto out;
 
-    if ( !mem_sharing_enabled(d) && (rc = mem_sharing_control(d, true)) )
+    if ( !mem_sharing_enabled(d) &&
+         (rc = mem_sharing_control(d, true, 0)) )
         return rc;
 
     switch ( mso.op )
@@ -2065,7 +2068,9 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         struct domain *pd;
 
         rc = -EINVAL;
-        if ( mso.u.fork.pad[0] || mso.u.fork.pad[1] || mso.u.fork.pad[2] )
+        if ( mso.u.fork.pad )
+            goto out;
+        if ( mso.u.fork.flags & ~XENMEM_FORK_WITH_IOMMU_ALLOWED )
             goto out;
 
         rc = rcu_lock_live_remote_domain_by_id(mso.u.fork.parent_domain,
@@ -2080,7 +2085,8 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
             goto out;
         }
 
-        if ( !mem_sharing_enabled(pd) && (rc = mem_sharing_control(pd, true)) )
+        if ( !mem_sharing_enabled(pd) &&
+             (rc = mem_sharing_control(pd, true, mso.u.fork.flags)) )
         {
             rcu_unlock_domain(pd);
             goto out;
@@ -2101,7 +2107,7 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         struct domain *pd;
 
         rc = -EINVAL;
-        if ( mso.u.fork.pad[0] || mso.u.fork.pad[1] || mso.u.fork.pad[2] )
+        if ( mso.u.fork.pad || mso.u.fork.flags )
             goto out;
 
         rc = -ENOSYS;
@@ -2138,7 +2144,7 @@ int mem_sharing_domctl(struct domain *d, struct xen_domctl_mem_sharing_op *mec)
     switch ( mec->op )
     {
     case XEN_DOMCTL_MEM_SHARING_CONTROL:
-        rc = mem_sharing_control(d, mec->u.enable);
+        rc = mem_sharing_control(d, mec->u.enable, 0);
         break;
 
     default:
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index d36d64b8dc..e56800357d 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -536,7 +536,9 @@ struct xen_mem_sharing_op {
         } debug;
         struct mem_sharing_op_fork {      /* OP_FORK */
             domid_t parent_domain;        /* IN: parent's domain id */
-            uint16_t pad[3];              /* Must be set to 0 */
+#define XENMEM_FORK_WITH_IOMMU_ALLOWED (1u << 0)
+            uint16_t flags;               /* IN: optional settings */
+            uint32_t pad;                 /* Must be set to 0 */
         } fork;
     } u;
 };
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:22:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:22:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRYzb-0000v2-Mx; Thu, 23 Apr 2020 10:22:03 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRYzb-0000um-7T
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:03 +0000
X-Inumbo-ID: 45b53fbc-854c-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 45b53fbc-854c-11ea-9e09-bc764e2007e4;
 Thu, 23 Apr 2020 10:22:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=cjc8uqSZxODSGYOwvkUmd7fcqTPGb4NF3jtPPRxROus=; b=FimiLaj6EksxEKqpP/o8KjmOv0
 a3u4UENrubtD6ufn6WjnKuuY6jAjZnL4TXe+chmCzIXfuhzA2xhCIjp5ovSmAYTr8EKrW/5ex760h
 e72izr8wBWG+zctZ1YAQth5dbwhZ0Jlkfx75TslodR87vbmsKuWrx+7VyShDhKlrGYhg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRYza-0000Cd-3L
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRYza-0004p3-2Q
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/pv: Delete CONFIG_PV_LDT_PAGING
Message-Id: <E1jRYza-0004p3-2Q@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:22:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ca58e7b0800aaef85739508674abca2db9c6637d
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Apr 17 12:31:13 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Fri Apr 17 18:45:19 2020 +0100

    x86/pv: Delete CONFIG_PV_LDT_PAGING
    
    ... in accordance with the timeline laid out in the Kconfig message.  There
    has been no comment since it was disabled by default.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/Kconfig                | 23 -----------------------
 xen/arch/x86/mm.c                   | 31 -------------------------------
 xen/arch/x86/pv/descriptor-tables.c | 15 ---------------
 xen/arch/x86/pv/domain.c            |  4 ----
 xen/arch/x86/pv/mm.c                |  9 ---------
 xen/include/asm-x86/domain.h        |  6 ------
 6 files changed, 88 deletions(-)

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 8149362bde..a69be983d6 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -225,26 +225,3 @@ endmenu
 source "common/Kconfig"
 
 source "drivers/Kconfig"
-
-menu "Deprecated Functionality"
-
-config PV_LDT_PAGING
-	bool "PV LDT Paging-out support"
-	depends on PV
-	---help---
-	  For a very long time, the PV ABI has included the ability to page
-	  out the LDT by transitioning its mapping to not-present.  This
-	  functionality is believed to only exist for the PV Windows XP port
-	  which never came to anything.
-
-	  The implementation contains a vCPU scalability limitation in a
-	  position which is prohibitively complicated to resolve.  As the
-	  feature is believed to be unused in practice, removing the feature
-	  is the easiest remediation.
-
-	  If you discover a usecase which is broken by this option being off,
-	  please contact xen-devel@lists.xenproject.org urgently.  Baring
-	  something unexpected, the code and this option will be deleted 2
-	  releases after Xen 4.12.
-
-endmenu
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index fb53d62abc..ee56e053e1 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1251,40 +1251,9 @@ void put_page_from_l1e(l1_pgentry_t l1e, struct domain *l1e_owner)
      */
     if ( (l1e_get_flags(l1e) & _PAGE_RW) &&
          ((l1e_owner == pg_owner) || !paging_mode_external(pg_owner)) )
-    {
         put_page_and_type(page);
-    }
     else
-    {
-#ifdef CONFIG_PV_LDT_PAGING
-        /* We expect this is rare so we blow the entire shadow LDT. */
-        if ( unlikely(((page->u.inuse.type_info & PGT_type_mask) ==
-                       PGT_seg_desc_page)) &&
-             unlikely(((page->u.inuse.type_info & PGT_count_mask) != 0)) &&
-             (l1e_owner == pg_owner) )
-        {
-            struct vcpu *v;
-            cpumask_t *mask = this_cpu(scratch_cpumask);
-
-            cpumask_clear(mask);
-
-            for_each_vcpu ( pg_owner, v )
-            {
-                unsigned int cpu;
-
-                if ( !pv_destroy_ldt(v) )
-                    continue;
-                cpu = read_atomic(&v->dirty_cpu);
-                if ( is_vcpu_dirty_cpu(cpu) )
-                    __cpumask_set_cpu(cpu, mask);
-            }
-
-            if ( !cpumask_empty(mask) )
-                flush_tlb_mask(mask);
-        }
-#endif /* CONFIG_PV_LDT_PAGING */
         put_page(page);
-    }
 }
 
 #ifdef CONFIG_PV
diff --git a/xen/arch/x86/pv/descriptor-tables.c b/xen/arch/x86/pv/descriptor-tables.c
index 940804b18a..090f901b5b 100644
--- a/xen/arch/x86/pv/descriptor-tables.c
+++ b/xen/arch/x86/pv/descriptor-tables.c
@@ -37,14 +37,7 @@ bool pv_destroy_ldt(struct vcpu *v)
 
     ASSERT(!in_irq());
 
-#ifdef CONFIG_PV_LDT_PAGING
-    spin_lock(&v->arch.pv.shadow_ldt_lock);
-
-    if ( v->arch.pv.shadow_ldt_mapcnt == 0 )
-        goto out;
-#else
     ASSERT(v == current || !vcpu_cpu_dirty(v));
-#endif
 
     pl1e = pv_ldt_ptes(v);
 
@@ -62,14 +55,6 @@ bool pv_destroy_ldt(struct vcpu *v)
         put_page_and_type(page);
     }
 
-#ifdef CONFIG_PV_LDT_PAGING
-    ASSERT(v->arch.pv.shadow_ldt_mapcnt == mappings_dropped);
-    v->arch.pv.shadow_ldt_mapcnt = 0;
-
- out:
-    spin_unlock(&v->arch.pv.shadow_ldt_lock);
-#endif
-
     return mappings_dropped;
 }
 
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 70fae43965..43da5c179f 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -243,10 +243,6 @@ int pv_vcpu_initialise(struct vcpu *v)
 
     ASSERT(!is_idle_domain(d));
 
-#ifdef CONFIG_PV_LDT_PAGING
-    spin_lock_init(&v->arch.pv.shadow_ldt_lock);
-#endif
-
     rc = pv_create_gdt_ldt_l1tab(v);
     if ( rc )
         return rc;
diff --git a/xen/arch/x86/pv/mm.c b/xen/arch/x86/pv/mm.c
index 2b0dadc8da..5d4cd00941 100644
--- a/xen/arch/x86/pv/mm.c
+++ b/xen/arch/x86/pv/mm.c
@@ -123,17 +123,8 @@ bool pv_map_ldt_shadow_page(unsigned int offset)
     pl1e = &pv_ldt_ptes(curr)[offset >> PAGE_SHIFT];
     l1e_add_flags(gl1e, _PAGE_RW);
 
-#ifdef CONFIG_PV_LDT_PAGING
-    spin_lock(&curr->arch.pv.shadow_ldt_lock);
-#endif
-
     l1e_write(pl1e, gl1e);
 
-#ifdef CONFIG_PV_LDT_PAGING
-    curr->arch.pv.shadow_ldt_mapcnt++;
-    spin_unlock(&curr->arch.pv.shadow_ldt_lock);
-#endif
-
     return true;
 }
 
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 4192c636b1..554b8dddcc 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -520,12 +520,6 @@ struct pv_vcpu
     unsigned int iopl;        /* Current IOPL for this VCPU, shifted left by
                                * 12 to match the eflags register. */
 
-#ifdef CONFIG_PV_LDT_PAGING
-    /* Current LDT details. */
-    unsigned long shadow_ldt_mapcnt;
-    spinlock_t shadow_ldt_lock;
-#endif
-
     /*
      * %dr7 bits the guest has set, but aren't loaded into hardware, and are
      * completely emulated.
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:22:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:22:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRYzl-0000yc-P7; Thu, 23 Apr 2020 10:22:13 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRYzl-0000yJ-5G
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:13 +0000
X-Inumbo-ID: 4bda83d4-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4bda83d4-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:22:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/MoT6t1mM0bXUzuG6jduOrgP1ckz784Bu407T2OSgig=; b=Cl47bJAGJQCSVIlB0ERLHvniZ2
 VSXqgk8lFJJ2IQ4xoJbmB1VuKCqwtHxKJkBaKhc2I7IC0AzjGw6aQSBrWkSJ8+sO3LkOdY2YfUTL/
 5wPuTRIEvPOZd2kfMpbRhsCJcpsfbhojd+eWXHhE3UDsW74jx7WL67WTAFeH2T+htNbg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRYzk-0000Cs-Dj
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRYzk-0004pv-Al
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] tools/ocaml: libxc: Check error return in
 stub_xc_vcpu_context_get()
Message-Id: <E1jRYzk-0004pv-Al@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:22:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3bf69699cacad3efb4fe6109044365f79379ed20
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Sun Mar 29 20:12:34 2020 +0100
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Mon Apr 20 15:02:17 2020 +0100

    tools/ocaml: libxc: Check error return in stub_xc_vcpu_context_get()
    
    xc_vcpu_getcontext() may fail to retrieve the vcpu context. Rather than
    ignoring the return value, check it and throw an error if needed.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Christian Lindig <christian.lindig@citrix.com>
---
 tools/ocaml/libs/xc/xenctrl_stubs.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
index 904da45c4f..0fdbeac158 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -497,6 +497,8 @@ CAMLprim value stub_xc_vcpu_context_get(value xch, value domid,
 	vcpu_guest_context_any_t ctxt;
 
 	ret = xc_vcpu_getcontext(_H(xch), _D(domid), Int_val(cpu), &ctxt);
+	if ( ret < 0 )
+		failwith_xc(_H(xch));
 
 	context = caml_alloc_string(sizeof(ctxt));
 	memcpy(String_val(context), (char *) &ctxt.c, sizeof(ctxt.c));
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:22:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:22:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRYzv-00011q-Qs; Thu, 23 Apr 2020 10:22:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRYzv-00011e-9y
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:23 +0000
X-Inumbo-ID: 51ec1760-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 51ec1760-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:22:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=sUTXAAf+j93qMN61Rpulk/tPNmRfaUL+pD3bwsesofA=; b=nEKi3EK185rev46u4O8z1A8x0Z
 az8T4DzWk8L8jGETR/9cm/G8j9PNtEuoXu7XA4EqZSrSWxrhyD3+qIfACbPj4z/hPe+IellMtJQO9
 1GEqKEviL8St+dto5U2byrrw3xkLOiXztWfq5STcTLkC2f3rpkW51U6OvBUWFHWtXr/Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRYzu-0000D7-Jg
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRYzu-0004qk-Im
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] tools/ocaml: libxb: Harden stub_header_of_string()
Message-Id: <E1jRYzu-0004qk-Im@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:22:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d92ba1aa7cf877a77abdcbd94a6a19fc55886a75
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Mon Mar 30 14:29:10 2020 +0100
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Mon Apr 20 15:03:03 2020 +0100

    tools/ocaml: libxb: Harden stub_header_of_string()
    
    stub_header_of_string() should not modify the header. So mark the
    variable 'hdr' as const.
    
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Christian Lindig <christian.lindig@citrix.com>
---
 tools/ocaml/libs/xb/xenbus_stubs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/ocaml/libs/xb/xenbus_stubs.c b/tools/ocaml/libs/xb/xenbus_stubs.c
index a68e783f70..001bb03371 100644
--- a/tools/ocaml/libs/xb/xenbus_stubs.c
+++ b/tools/ocaml/libs/xb/xenbus_stubs.c
@@ -40,12 +40,12 @@ CAMLprim value stub_header_of_string(value s)
 {
 	CAMLparam1(s);
 	CAMLlocal1(ret);
-	struct xsd_sockmsg *hdr;
+	const struct xsd_sockmsg *hdr;
 
 	if (caml_string_length(s) != sizeof(struct xsd_sockmsg))
 		caml_failwith("xb header incomplete");
 	ret = caml_alloc_tuple(4);
-	hdr = (struct xsd_sockmsg *) String_val(s);
+	hdr = (const struct xsd_sockmsg *) String_val(s);
 	Store_field(ret, 0, Val_int(hdr->tx_id));
 	Store_field(ret, 1, Val_int(hdr->req_id));
 	Store_field(ret, 2, Val_int(hdr->type));
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:22:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:22:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ09-00015N-54; Thu, 23 Apr 2020 10:22:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ07-000152-K9
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:35 +0000
X-Inumbo-ID: 581795ce-854c-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 581795ce-854c-11ea-9e09-bc764e2007e4;
 Thu, 23 Apr 2020 10:22:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=OW7Q2nEBwrU6PVytKuU2AoB4aYQl+NWQZbyLHqieLo0=; b=vcVu2uWcv8eqMQUBiNag8lI2yQ
 HV79wleD2sJCIGUGHObb68bHxgfPJFpX80HZbydZK5qXqR5X9aS2cI8X3PLCxSaWBYeRTSa1KHS/N
 JgETOb6RtbHpc3iBM/u/VemiT5B2yDGq4cWwHvqFsvthoWjoT9m0Iqx5mPshZMIZvp+8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ04-0000DP-VF
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ04-0004sH-Ro
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] tools/ocaml: libxb: Avoid to use String_val() when value
 is bytes
Message-Id: <E1jRZ04-0004sH-Ro@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:22:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 78686437e949a85a207ae1a0d637efe2d3778bbe
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Mon Mar 30 18:50:08 2020 +0100
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Mon Apr 20 15:03:07 2020 +0100

    tools/ocaml: libxb: Avoid to use String_val() when value is bytes
    
    Commit ec7d54dd1a "ocaml/libs/xb: Use bytes in place of strings for
    mutable buffers" switch mutable buffers from string to bytes. However
    the C code were still using String_Val() to access them.
    
    While the underlying structure is the same between string and bytes, a
    string is meant to be immutable. OCaml 4.06.1 and later will enforce it.
    Therefore, it will not be possible to build the OCaml libs when using
    -safe-string. This is because String_val() will return a const value.
    
    To avoid plain cast in the code, the code is now switched to use
    Bytes_val(). As the macro is not defined in older OCaml version, we need
    to provide a stub.
    
    Take the opportunity to switch to const the buffer in
    ml_interface_write() as it should not be modified.
    
    Reported-by: Dario Faggioli <dfaggioli@suse.com>
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Christian Lindig <christian.lindig@citrix.com>
---
 tools/ocaml/libs/xb/xs_ring_stubs.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/tools/ocaml/libs/xb/xs_ring_stubs.c b/tools/ocaml/libs/xb/xs_ring_stubs.c
index 473787064a..7537a23949 100644
--- a/tools/ocaml/libs/xb/xs_ring_stubs.c
+++ b/tools/ocaml/libs/xb/xs_ring_stubs.c
@@ -36,6 +36,14 @@
 
 #define GET_C_STRUCT(a) ((struct mmap_interface *) a)
 
+/*
+ * Bytes_val has been introduced by Ocaml 4.06.1. So define our own version
+ * if needed.
+ */
+#ifndef Bytes_val
+#define Bytes_val(x) ((unsigned char *) Bp_val(x))
+#endif
+
 CAMLprim value ml_interface_read(value ml_interface,
                                  value ml_buffer,
                                  value ml_len)
@@ -44,7 +52,7 @@ CAMLprim value ml_interface_read(value ml_interface,
 	CAMLlocal1(ml_result);
 
 	struct mmap_interface *interface = GET_C_STRUCT(ml_interface);
-	char *buffer = String_val(ml_buffer);
+	unsigned char *buffer = Bytes_val(ml_buffer);
 	int len = Int_val(ml_len);
 	int result;
 
@@ -103,7 +111,7 @@ CAMLprim value ml_interface_write(value ml_interface,
 	CAMLlocal1(ml_result);
 
 	struct mmap_interface *interface = GET_C_STRUCT(ml_interface);
-	char *buffer = String_val(ml_buffer);
+	const unsigned char *buffer = Bytes_val(ml_buffer);
 	int len = Int_val(ml_len);
 	int result;
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:22:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:22:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ0H-00017X-6w; Thu, 23 Apr 2020 10:22:45 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ0F-00017H-Qj
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:43 +0000
X-Inumbo-ID: 5e308dda-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5e308dda-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:22:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8rztTP0cuuedTheQptGoS7Oclsi+Q6VSfnwpGjTlfww=; b=xC37fj0oAF2mSaaWChZOCzYolw
 Cu+3j+jziv+2lqqK/NiQJjVbtSiasrAvHoK50QqKqloFZUbukq2apOS0glPfmwXI0lvDAKFvSeHNJ
 7tvXqVNMI+fVz5Lp6zkwHAiEHE0lk757k90QyFCCFHF73wgsIREdtcuOR6PX4C9lcNHw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0F-0000E7-67
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0F-0004tQ-4E
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] tools/ocaml: Fix stubs build when OCaml has been
 compiled with -safe-string
Message-Id: <E1jRZ0F-0004tQ-4E@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:22:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 59b087e3954402c487e0abb4ad9bd05f43669436
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Mon Mar 30 15:14:23 2020 +0100
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Mon Apr 20 15:03:13 2020 +0100

    tools/ocaml: Fix stubs build when OCaml has been compiled with -safe-string
    
    The OCaml code has been fixed to handle properly -safe-string in Xen
    4.11, however the stubs part were missed.
    
    On OCaml newer than 4.06.1, String_Val() will return a const char *
    when using -safe-string leading to build failure when this is used
    in place where char * is expected.
    
    The main use in Xen code base is when a new string is allocated. The
    suggested approach by the OCaml community [1] is to use the helper
    caml_alloc_initialized_string() but it was introduced by OCaml 4.06.1.
    
    The next best approach is to cast String_val() to (char *) as the helper
    would have done. So use it when we need to update the new string using
    memcpy().
    
    Take the opportunity to remove the unnecessary cast of the source as
    mempcy() is expecting a void *.
    
    [1] https://github.com/ocaml/ocaml/pull/1274
    
    Reported-by: Dario Faggioli <dfaggioli@suse.com>
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Christian Lindig <christian.lindig@citrix.com>
---
 tools/ocaml/libs/xb/xenbus_stubs.c  | 2 +-
 tools/ocaml/libs/xc/xenctrl_stubs.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/ocaml/libs/xb/xenbus_stubs.c b/tools/ocaml/libs/xb/xenbus_stubs.c
index 001bb03371..3065181a55 100644
--- a/tools/ocaml/libs/xb/xenbus_stubs.c
+++ b/tools/ocaml/libs/xb/xenbus_stubs.c
@@ -65,7 +65,7 @@ CAMLprim value stub_string_of_header(value tid, value rid, value ty, value len)
 	};
 
 	ret = caml_alloc_string(sizeof(struct xsd_sockmsg));
-	memcpy(String_val(ret), &xsd, sizeof(struct xsd_sockmsg));
+	memcpy((char *) String_val(ret), &xsd, sizeof(struct xsd_sockmsg));
 
 	CAMLreturn(ret);
 }
diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
index 0fdbeac158..94aba38a42 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -501,7 +501,7 @@ CAMLprim value stub_xc_vcpu_context_get(value xch, value domid,
 		failwith_xc(_H(xch));
 
 	context = caml_alloc_string(sizeof(ctxt));
-	memcpy(String_val(context), (char *) &ctxt.c, sizeof(ctxt.c));
+	memcpy((char *) String_val(context), &ctxt.c, sizeof(ctxt.c));
 
 	CAMLreturn(context);
 }
@@ -680,7 +680,7 @@ CAMLprim value stub_xc_readconsolering(value xch)
 		conring_size = size;
 
 	ring = caml_alloc_string(count);
-	memcpy(String_val(ring), str, count);
+	memcpy((char *) String_val(ring), str, count);
 	free(str);
 
 	CAMLreturn(ring);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:22:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:22:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ0R-00019s-AS; Thu, 23 Apr 2020 10:22:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ0P-00019X-RV
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:53 +0000
X-Inumbo-ID: 643b4a62-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 643b4a62-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:22:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=WGk/yfSFi4TavU+jbtrEC/7J/BYHB3b2mn/9PE2nVJg=; b=ZV0ciJKUAphmuuxdTXhWf3hcvw
 yAtodYn5VsC5j2H1syhluMR1OPe5zofMP2s59FfAgWV7E6B0UySIK5xKKE2a3YZL2pOx+uIvyZu/6
 V3VkOJg13GA0waZUD3KKUAOeTxCAy9fzmoPBjZUgb9xaFqEuxIZMsQIG60qnzEGcnDhA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0P-0000EN-A3
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0P-0004uH-8y
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:22:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86emul: SYSRET must change CPL
Message-Id: <E1jRZ0P-0004uH-8y@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:22:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a94b55a2986145ab5b357feb340f782d9d199d10
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:51:42 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:51:42 2020 +0200

    x86emul: SYSRET must change CPL
    
    The special AMD behavior of leaving SS mostly alone wasn't really
    complete: We need to adjust CPL aka SS.DPL.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_emulate/x86_emulate.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index 3ed64c13ea..1959fc227a 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -6022,6 +6022,8 @@ x86_emulate(
 
             /* There's explicitly no RPL adjustment here. */
             sreg.sel = (msr_val >> 48) + 8;
+            /* But DPL needs adjustment, for the new CPL to be correct. */
+            sreg.dpl = 3;
         }
 
 #ifdef __x86_64__
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:23:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:23:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ0b-0001EL-Kz; Thu, 23 Apr 2020 10:23:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ0Z-0001Dv-Ts
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:03 +0000
X-Inumbo-ID: 6a3ed88e-854c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 6a3ed88e-854c-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 10:23:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VrtUWWyGWW9vPv0+ZousY4K66uHtpB/8Yar3JkTDJjU=; b=xZhvrjvc20wd/b3X9lbue7+TAK
 7+9zE3XB/AH2Yfr0hJh9dcHx6HxrwyQntT2wqpU12vnl7aOUxwS//661Uoc+TAp/Y85V6y5+mCvnS
 KSM3yqp6KDgzmcQvhjNhdyFoj+WfreYAUOmnXLrmac6O9sFPJG4i2xKWqJTjcVn7K5Kc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0Z-0000Eu-D3
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0Z-0004vC-Bq
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/vtd: relax EPT page table sharing check
Message-Id: <E1jRZ0Z-0004vC-Bq@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:23:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3957e12c02670b97855ef0933b373f99993fa598
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Tue Apr 21 10:54:56 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:54:56 2020 +0200

    x86/vtd: relax EPT page table sharing check
    
    The EPT page tables can be shared with the IOMMU as long as the page
    sizes supported by EPT are also supported by the IOMMU.
    
    Current code checks that both the IOMMU and EPT support the same page
    sizes, but this is not strictly required, the IOMMU supporting more
    page sizes than EPT is fine and shouldn't block page table sharing.
    
    This is likely not a common case (IOMMU supporting more page sizes
    than EPT), but should still be fixed for correctness.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
---
 xen/drivers/passthrough/vtd/iommu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 07d40b37fe..208b33c0e4 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1914,8 +1914,8 @@ static int __init vtd_ept_page_compatible(struct vtd_iommu *iommu)
     if ( rdmsr_safe(MSR_IA32_VMX_EPT_VPID_CAP, ept_cap) != 0 ) 
         return 0;
 
-    return (ept_has_2mb(ept_cap) && opt_hap_2mb) == cap_sps_2mb(vtd_cap) &&
-           (ept_has_1gb(ept_cap) && opt_hap_1gb) == cap_sps_1gb(vtd_cap);
+    return (ept_has_2mb(ept_cap) && opt_hap_2mb) <= cap_sps_2mb(vtd_cap) &&
+           (ept_has_1gb(ept_cap) && opt_hap_1gb) <= cap_sps_1gb(vtd_cap);
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:23:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:23:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ0l-0001H7-Mr; Thu, 23 Apr 2020 10:23:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ0j-0001GU-VO
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:13 +0000
X-Inumbo-ID: 703e792e-854c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 703e792e-854c-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 10:23:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HHVgmKvWyJgk8eLq04RpnlmH/bsnS4dy8KqNmfyiw4c=; b=QTDylnOo7lOat9P3LaUY0prYRT
 mVrZ7Y1DbNZhJud1OP0nx8ztdje5LgfMcPHw+OGtpZ2XZmvoClz+uMel8ozhJkDlaXQ4/lfnjo4jY
 V/b5FbOhDmuzmF8rdnOKMu22sk64QjP5akLsx+nzSzXU2+GU/SGOug370aHD49Emh+G8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0j-0000FC-Fj
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0j-0004wL-En
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shadow: drop a stray forward structure declaration
Message-Id: <E1jRZ0j-0004wL-En@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:23:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit ac7addbeff73bc8b06d8234a0e1658bba9368164
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:55:58 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:55:58 2020 +0200

    x86/shadow: drop a stray forward structure declaration
    
    struct sh_emulate_ctxt is private to shadow code, and hence a
    declaration for it is not needed here.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/include/asm-x86/paging.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index 051161481c..a7edca586d 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -92,7 +92,6 @@
  * These shouldn't be used directly by callers; rather use the functions
  * below which will indirect through this table as appropriate. */
 
-struct sh_emulate_ctxt;
 struct shadow_paging_mode {
 #ifdef CONFIG_SHADOW_PAGING
     void          (*detach_old_tables     )(struct vcpu *v);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:23:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:23:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ0w-0001Kt-Oc; Thu, 23 Apr 2020 10:23:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ0v-0001KU-D7
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:25 +0000
X-Inumbo-ID: 764580f6-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 764580f6-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:23:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2PyXAvd9fysvjd2S7YuZct3FB34eDrNRk26UPGcO0J8=; b=OluAdx3nNbh8hCMG+bFOL4vSeK
 0227XRpTuIrraMYUet/z9eU9mFRM/YQXWn1Ga9caWu67KwWI/4Zq6tocVM2Y2lmIGCR+7LP7k6aK2
 yjiGT+DhgQmYNCLIKH4dC5CFOpZfsaunLCVCfGsmcgv3dqy8Wa8wlhWTGumnHtWyEt6Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0t-0000FR-J7
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ0t-0004xH-Hv
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shadow: monitor table is HVM-only
Message-Id: <E1jRZ0t-0004xH-Hv@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:23:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 452219e246486d35fffb0b418f97db1beb9bc37c
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:57:04 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:57:04 2020 +0200

    x86/shadow: monitor table is HVM-only
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c | 14 ++++++++------
 xen/arch/x86/mm/shadow/multi.c  |  6 ++++--
 xen/include/asm-x86/paging.h    |  2 ++
 3 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 75dd414a6e..d5d0111067 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -2376,7 +2376,6 @@ void sh_reset_l3_up_pointers(struct vcpu *v)
 static void sh_update_paging_modes(struct vcpu *v)
 {
     struct domain *d = v->domain;
-    const struct paging_mode *old_mode = v->arch.paging.mode;
 
     ASSERT(paging_locked_by_me(d));
 
@@ -2421,11 +2420,11 @@ static void sh_update_paging_modes(struct vcpu *v)
     if ( v->arch.paging.mode )
         v->arch.paging.mode->shadow.detach_old_tables(v);
 
+#ifdef CONFIG_HVM
     if ( !is_pv_domain(d) )
     {
-        ///
-        /// HVM guest
-        ///
+        const struct paging_mode *old_mode = v->arch.paging.mode;
+
         ASSERT(shadow_mode_translate(d));
         ASSERT(shadow_mode_external(d));
 
@@ -2523,6 +2522,7 @@ static void sh_update_paging_modes(struct vcpu *v)
         //        different values for CR4.PSE and CR4.PGE at the same time.
         //        This *does* happen, at least for CR4.PGE...
     }
+#endif /* CONFIG_HVM */
 
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
     /* We need to check that all the vcpus have paging enabled to
@@ -2703,7 +2703,6 @@ void shadow_teardown(struct domain *d, bool *preempted)
  * Should only be called for dying domains. */
 {
     struct vcpu *v;
-    mfn_t mfn;
     struct page_info *unpaged_pagetable = NULL;
 
     ASSERT(d->is_dying);
@@ -2719,13 +2718,16 @@ void shadow_teardown(struct domain *d, bool *preempted)
             if ( v->arch.paging.mode )
             {
                 v->arch.paging.mode->shadow.detach_old_tables(v);
+#ifdef CONFIG_HVM
                 if ( shadow_mode_external(d) )
                 {
-                    mfn = pagetable_get_mfn(v->arch.monitor_table);
+                    mfn_t mfn = pagetable_get_mfn(v->arch.monitor_table);
+
                     if ( mfn_valid(mfn) && (mfn_x(mfn) != 0) )
                         v->arch.paging.mode->shadow.destroy_monitor_table(v, mfn);
                     v->arch.monitor_table = pagetable_null();
                 }
+#endif /* CONFIG_HVM */
             }
         }
     }
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index f6b1628742..5377754282 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -1515,7 +1515,7 @@ make_fl1_shadow(struct domain *d, gfn_t gfn)
 }
 
 
-#if SHADOW_PAGING_LEVELS == GUEST_PAGING_LEVELS
+#if SHADOW_PAGING_LEVELS == GUEST_PAGING_LEVELS && defined(CONFIG_HVM)
 mfn_t
 sh_make_monitor_table(struct vcpu *v)
 {
@@ -1965,7 +1965,7 @@ void sh_destroy_l1_shadow(struct domain *d, mfn_t smfn)
     shadow_free(d, smfn);
 }
 
-#if SHADOW_PAGING_LEVELS == GUEST_PAGING_LEVELS
+#if SHADOW_PAGING_LEVELS == GUEST_PAGING_LEVELS && defined(CONFIG_HVM)
 void sh_destroy_monitor_table(struct vcpu *v, mfn_t mmfn)
 {
     struct domain *d = v->domain;
@@ -4881,8 +4881,10 @@ const struct paging_mode sh_paging_mode = {
     .shadow.write_guest_entry      = sh_write_guest_entry,
     .shadow.cmpxchg_guest_entry    = sh_cmpxchg_guest_entry,
 #endif
+#ifdef CONFIG_HVM
     .shadow.make_monitor_table     = sh_make_monitor_table,
     .shadow.destroy_monitor_table  = sh_destroy_monitor_table,
+#endif
 #if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC
     .shadow.guess_wrmap            = sh_guess_wrmap,
 #endif
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index a7edca586d..c99ce3e136 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -102,8 +102,10 @@ struct shadow_paging_mode {
                                             intpte_t *old, intpte_t new,
                                             mfn_t gmfn);
 #endif
+#ifdef CONFIG_HVM
     mfn_t         (*make_monitor_table    )(struct vcpu *v);
     void          (*destroy_monitor_table )(struct vcpu *v, mfn_t mmfn);
+#endif
     int           (*guess_wrmap           )(struct vcpu *v, 
                                             unsigned long vaddr, mfn_t gmfn);
     void          (*pagetable_dying       )(paddr_t gpa);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:23:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:23:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ15-0001Ni-QK; Thu, 23 Apr 2020 10:23:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ14-0001NL-BA
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:34 +0000
X-Inumbo-ID: 7c481720-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7c481720-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:23:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kY3DZM5IxrRBkGC69M67u63YuPAT56+V5bVfFPdLT5M=; b=KyaKHw27v68jxFJnNX15vG8MNz
 vCLowa6Fidr8NhLlGa9zmu3GmOxCKHACiZSh+ISP431pDisS9PS2Jd49ik8TzB+xTk7R93EspxLCY
 aEhIE9ARg5v4lBWOFLHLI1ZV9vWCEuwk4EFI7Mxfz+inlFpYNrDAO/dHdlq/+gMoCeCA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ13-0000Fj-Lv
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ13-0004y3-Ku
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shadow: sh_remove_write_access_from_sl1p() can be
 static
Message-Id: <E1jRZ13-0004y3-Ku@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:23:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit df9238eaa4ad870bab835de5be3242f8f2a632ce
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:58:05 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:58:05 2020 +0200

    x86/shadow: sh_remove_write_access_from_sl1p() can be static
    
    It's only used by common.c.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c  | 7 +++++--
 xen/arch/x86/mm/shadow/private.h | 3 ---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index d5d0111067..33f3ad521a 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -38,6 +38,9 @@
 #include <xen/numa.h>
 #include "private.h"
 
+static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
+                                            mfn_t smfn, unsigned long offset);
+
 DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags);
 
 static int sh_enable_log_dirty(struct domain *, bool log_global);
@@ -1999,8 +2002,8 @@ int sh_remove_write_access(struct domain *d, mfn_t gmfn,
 }
 
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
-int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
-                                     mfn_t smfn, unsigned long off)
+static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
+                                            mfn_t smfn, unsigned long off)
 {
     struct page_info *sp = mfn_to_page(smfn);
 
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index e8b028a365..6eb7920d47 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -396,9 +396,6 @@ void sh_resync(struct domain *d, mfn_t gmfn);
 
 void oos_fixup_add(struct domain *d, mfn_t gmfn, mfn_t smfn, unsigned long off);
 
-int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
-                                     mfn_t smfn, unsigned long offset);
-
 /* Pull all out-of-sync shadows back into sync.  If skip != 0, we try
  * to avoid resyncing where we think we can get away with it. */
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:23:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:23:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ1G-0001RG-SE; Thu, 23 Apr 2020 10:23:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ1E-0001Qu-QU
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:44 +0000
X-Inumbo-ID: 82787860-854c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 82787860-854c-11ea-b58d-bc764e2007e4;
 Thu, 23 Apr 2020 10:23:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=sIbk812+N+ofwVoTM73YQ2+G6eDCtKlOkFBSZIoyA5s=; b=MeqNidt8xWI83jyTc1CeqLRzdE
 g8cEh5GCxnj/GPD1CNsXvzkRbMSev/BJS8kEnAnepeOmvcEMVsh4dTEC+k+sCZ2V1tp+7vLmLaR3I
 tTfWsjkkWx56N/u77yPGb22+p+GOZMN6Laj9UR/57T6uL29GS64dY3RELaAYubLInIXQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1E-0000Ge-1r
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1D-0004zB-VC
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shadow: the guess_wrmap() hook is needed for HVM only
Message-Id: <E1jRZ1D-0004zB-VC@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:23:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8b8d011ad868df38afae6282103087556beaa1f9
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:58:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:58:45 2020 +0200

    x86/shadow: the guess_wrmap() hook is needed for HVM only
    
    sh_remove_write_access() bails early for !external guests, and hence its
    building and thus the need for the hook can be suppressed altogether in
    !HVM configs.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c  |  2 ++
 xen/arch/x86/mm/shadow/multi.c   |  4 ++--
 xen/arch/x86/mm/shadow/private.h | 10 ++++++++++
 xen/include/asm-x86/paging.h     |  2 +-
 4 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 33f3ad521a..d899675ebd 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -1769,6 +1769,7 @@ static inline void trace_shadow_wrmap_bf(mfn_t gmfn)
     }
 }
 
+#ifdef CONFIG_HVM
 /**************************************************************************/
 /* Remove all writeable mappings of a guest frame from the shadow tables
  * Returns non-zero if we need to flush TLBs.
@@ -2000,6 +2001,7 @@ int sh_remove_write_access(struct domain *d, mfn_t gmfn,
     /* We killed at least one writeable mapping, so must flush TLBs. */
     return 1;
 }
+#endif /* CONFIG_HVM */
 
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
 static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 5377754282..ffb2b87740 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -4212,7 +4212,7 @@ int sh_rm_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
 }
 #endif /* OOS */
 
-#if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC
+#if defined(CONFIG_HVM) && (SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC)
 static int sh_guess_wrmap(struct vcpu *v, unsigned long vaddr, mfn_t gmfn)
 /* Look up this vaddr in the current shadow and see if it's a writeable
  * mapping of this gmfn.  If so, remove it.  Returns 1 if it worked. */
@@ -4884,10 +4884,10 @@ const struct paging_mode sh_paging_mode = {
 #ifdef CONFIG_HVM
     .shadow.make_monitor_table     = sh_make_monitor_table,
     .shadow.destroy_monitor_table  = sh_destroy_monitor_table,
-#endif
 #if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC
     .shadow.guess_wrmap            = sh_guess_wrmap,
 #endif
+#endif /* CONFIG_HVM */
     .shadow.pagetable_dying        = sh_pagetable_dying,
     .shadow.trace_emul_write_val   = trace_emulate_write_val,
     .shadow.shadow_levels          = SHADOW_PAGING_LEVELS,
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index 6eb7920d47..0044450999 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -359,6 +359,7 @@ void sh_install_xen_entries_in_l4(struct domain *, mfn_t gl4mfn, mfn_t sl4mfn);
 /* Update the shadows in response to a pagetable write from Xen */
 int sh_validate_guest_entry(struct vcpu *v, mfn_t gmfn, void *entry, u32 size);
 
+#ifdef CONFIG_HVM
 /* Remove all writeable mappings of a guest frame from the shadows.
  * Returns non-zero if we need to flush TLBs.
  * level and fault_addr desribe how we found this to be a pagetable;
@@ -366,6 +367,15 @@ int sh_validate_guest_entry(struct vcpu *v, mfn_t gmfn, void *entry, u32 size);
 extern int sh_remove_write_access(struct domain *d, mfn_t readonly_mfn,
                                   unsigned int level,
                                   unsigned long fault_addr);
+#else
+static inline int sh_remove_write_access(struct domain *d, mfn_t readonly_mfn,
+                                         unsigned int level,
+                                         unsigned long fault_addr)
+{
+    ASSERT(!shadow_mode_refcounts(d));
+    return 0;
+}
+#endif
 
 /* Functions that atomically write PT/P2M entries and update state */
 int shadow_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn,
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index c99ce3e136..4fb3f09e1a 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -105,9 +105,9 @@ struct shadow_paging_mode {
 #ifdef CONFIG_HVM
     mfn_t         (*make_monitor_table    )(struct vcpu *v);
     void          (*destroy_monitor_table )(struct vcpu *v, mfn_t mmfn);
-#endif
     int           (*guess_wrmap           )(struct vcpu *v, 
                                             unsigned long vaddr, mfn_t gmfn);
+#endif
     void          (*pagetable_dying       )(paddr_t gpa);
     void          (*trace_emul_write_val  )(const void *ptr, unsigned long vaddr,
                                             const void *src, unsigned int bytes);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:23:58 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:23:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ1R-0001TK-Vz; Thu, 23 Apr 2020 10:23:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ1P-0001T1-RJ
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:55 +0000
X-Inumbo-ID: 88552c43-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 88552c43-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:23:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=vFotqL6/L5TW+KONKd9H2R8f/7fRjvVM/mxeHlZt+xA=; b=Hq6ZOu/VYQB2beFPLFBK5vGK5V
 jbzAX9Vd+6dl/OVU4B0Bq2kPks2nX7PEgC+ONSCChzuBxvigalc2u9JZTi+TZLb71F/X13vcUjTr3
 chA2534SNXdcfhJceITbLIgSPjCAWHJ8QcultcaSefMVO23BLsn1BNq6swBfBd/O1n+I=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1O-0000H1-I7
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1O-0004zx-F3
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:23:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/mm: pagetable_dying() is HVM-only
Message-Id: <E1jRZ1O-0004zx-F3@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:23:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2fb2dee1ac6288349a8a8320cde739df4f0e379f
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 10:59:43 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 10:59:43 2020 +0200

    x86/mm: pagetable_dying() is HVM-only
    
    Its only caller lives in HVM-only code.
    
    This involves wider changes, in order to limit #ifdef-ary: Shadow's
    SHOPT_FAST_EMULATION and the fields used by it get constrained to HVM
    builds as well. Additionally the shadow_{init,continue}_emulation()
    stubs for the !HVM case aren't needed anymore and hence get dropped.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/paging.c         |  2 ++
 xen/arch/x86/mm/shadow/common.c  |  4 +++
 xen/arch/x86/mm/shadow/multi.c   | 62 +++++++++++++++++++++++-----------------
 xen/arch/x86/mm/shadow/private.h | 19 +++---------
 xen/include/asm-x86/domain.h     |  8 ++++++
 xen/include/asm-x86/mm.h         |  2 ++
 xen/include/asm-x86/paging.h     |  2 +-
 7 files changed, 56 insertions(+), 43 deletions(-)

diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c
index 469bb76429..f5ff5d67a0 100644
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -851,6 +851,7 @@ int paging_enable(struct domain *d, u32 mode)
         return shadow_enable(d, mode);
 }
 
+#ifdef CONFIG_HVM
 /* Called from the guest to indicate that a process is being torn down
  * and therefore its pagetables will soon be discarded */
 void pagetable_dying(paddr_t gpa)
@@ -865,6 +866,7 @@ void pagetable_dying(paddr_t gpa)
     BUG();
 #endif
 }
+#endif /* CONFIG_HVM */
 
 /* Print paging-assistance info to the console */
 void paging_dump_domain_info(struct domain *d)
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index d899675ebd..ad15803cc8 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -66,7 +66,9 @@ int shadow_domain_init(struct domain *d)
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
     d->arch.paging.shadow.oos_active = 0;
 #endif
+#ifdef CONFIG_HVM
     d->arch.paging.shadow.pagetable_dying_op = 0;
+#endif
 
     return 0;
 }
@@ -690,8 +692,10 @@ void shadow_promote(struct domain *d, mfn_t gmfn, unsigned int type)
     if ( !test_and_set_bit(_PGC_page_table, &page->count_info) )
     {
         page->shadow_flags = 0;
+#ifdef CONFIG_HVM
         if ( is_hvm_domain(d) )
             page->pagetable_dying = false;
+#endif
     }
 
     ASSERT(!(page->shadow_flags & (1u << type)));
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index ffb2b87740..16bb6f3e8a 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -2764,8 +2764,10 @@ static int sh_page_fault(struct vcpu *v,
     mfn_t gmfn, sl1mfn = _mfn(0);
     shadow_l1e_t sl1e, *ptr_sl1e;
     paddr_t gpa;
+#ifdef CONFIG_HVM
     struct sh_emulate_ctxt emul_ctxt;
     const struct x86_emulate_ops *emul_ops;
+#endif
     int r;
     p2m_type_t p2mt;
     uint32_t rc, error_code;
@@ -3253,7 +3255,13 @@ static int sh_page_fault(struct vcpu *v,
      * caught by user-mode page-table check above.
      */
  emulate_readonly:
+    if ( !is_hvm_domain(d) )
+    {
+        ASSERT_UNREACHABLE();
+        goto not_a_shadow_fault;
+    }
 
+#ifdef CONFIG_HVM
     /* Unshadow if we are writing to a toplevel pagetable that is
      * flagged as a dying process, and that is not currently used. */
     if ( sh_mfn_is_a_page_table(gmfn) && is_hvm_domain(d) &&
@@ -3302,31 +3310,28 @@ static int sh_page_fault(struct vcpu *v,
 #if SHADOW_OPTIMIZATIONS & SHOPT_FAST_EMULATION
  early_emulation:
 #endif
-    if ( is_hvm_domain(d) )
+    /*
+     * If we are in the middle of injecting an exception or interrupt then
+     * we should not emulate: the fault is a side effect of the processor
+     * trying to deliver the exception (e.g. IDT/GDT accesses, pushing the
+     * exception frame onto the stack).  Furthermore it is almost
+     * certainly the case the handler stack is currently considered to be
+     * a page table, so we should unshadow the faulting page before
+     * exiting.
+     */
+    if ( unlikely(hvm_event_pending(v)) )
     {
-        /*
-         * If we are in the middle of injecting an exception or interrupt then
-         * we should not emulate: the fault is a side effect of the processor
-         * trying to deliver the exception (e.g. IDT/GDT accesses, pushing the
-         * exception frame onto the stack).  Furthermore it is almost
-         * certainly the case the handler stack is currently considered to be
-         * a page table, so we should unshadow the faulting page before
-         * exiting.
-         */
-        if ( unlikely(hvm_event_pending(v)) )
-        {
 #if SHADOW_OPTIMIZATIONS & SHOPT_FAST_EMULATION
-            if ( fast_emul )
-            {
-                perfc_incr(shadow_fault_fast_emulate_fail);
-                v->arch.paging.last_write_emul_ok = 0;
-            }
-#endif
-            sh_remove_shadows(d, gmfn, 0 /* thorough */, 1 /* must succeed */);
-            trace_shadow_emulate_other(TRC_SHADOW_EMULATE_UNSHADOW_EVTINJ,
-                                       va, gfn);
-            return EXCRET_fault_fixed;
+        if ( fast_emul )
+        {
+            perfc_incr(shadow_fault_fast_emulate_fail);
+            v->arch.paging.last_write_emul_ok = 0;
         }
+#endif
+        sh_remove_shadows(d, gmfn, 0 /* thorough */, 1 /* must succeed */);
+        trace_shadow_emulate_other(TRC_SHADOW_EMULATE_UNSHADOW_EVTINJ,
+                                   va, gfn);
+        return EXCRET_fault_fixed;
     }
 
     SHADOW_PRINTK("emulate: eip=%#lx esp=%#lx\n", regs->rip, regs->rsp);
@@ -3334,11 +3339,8 @@ static int sh_page_fault(struct vcpu *v,
     emul_ops = shadow_init_emulation(&emul_ctxt, regs, GUEST_PTE_SIZE);
 
     r = x86_emulate(&emul_ctxt.ctxt, emul_ops);
-
-#ifdef CONFIG_HVM
     if ( r == X86EMUL_EXCEPTION )
     {
-        ASSERT(is_hvm_domain(d));
         /*
          * This emulation covers writes to shadow pagetables.  We tolerate #PF
          * (from accesses spanning pages, concurrent paging updated from
@@ -3360,7 +3362,6 @@ static int sh_page_fault(struct vcpu *v,
             r = X86EMUL_UNHANDLEABLE;
         }
     }
-#endif
 
     /*
      * NB. We do not unshadow on X86EMUL_EXCEPTION. It's not clear that it
@@ -3466,6 +3467,7 @@ static int sh_page_fault(struct vcpu *v,
  emulate_done:
     SHADOW_PRINTK("emulated\n");
     return EXCRET_fault_fixed;
+#endif /* CONFIG_HVM */
 
  mmio:
     if ( !guest_mode(regs) )
@@ -4166,7 +4168,9 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
 int sh_rm_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
                                  mfn_t smfn, unsigned long off)
 {
+#ifdef CONFIG_HVM
     struct vcpu *curr = current;
+#endif
     int r;
     shadow_l1e_t *sl1p, sl1e;
     struct page_info *sp;
@@ -4174,10 +4178,12 @@ int sh_rm_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
     ASSERT(mfn_valid(gmfn));
     ASSERT(mfn_valid(smfn));
 
+#ifdef CONFIG_HVM
     /* Remember if we've been told that this process is being torn down */
     if ( curr->domain == d && is_hvm_domain(d) )
         curr->arch.paging.shadow.pagetable_dying
             = mfn_to_page(gmfn)->pagetable_dying;
+#endif
 
     sp = mfn_to_page(smfn);
 
@@ -4433,6 +4439,7 @@ int sh_remove_l3_shadow(struct domain *d, mfn_t sl4mfn, mfn_t sl3mfn)
 }
 #endif /* 64bit guest */
 
+#ifdef CONFIG_HVM
 /**************************************************************************/
 /* Function for the guest to inform us that a process is being torn
  * down.  We remember that as a hint to unshadow its pagetables soon,
@@ -4554,6 +4561,7 @@ static void sh_pagetable_dying(paddr_t gpa)
     put_gfn(d, gpa >> PAGE_SHIFT);
 }
 #endif
+#endif /* CONFIG_HVM */
 
 /**************************************************************************/
 /* Audit tools */
@@ -4887,8 +4895,8 @@ const struct paging_mode sh_paging_mode = {
 #if SHADOW_OPTIMIZATIONS & SHOPT_WRITABLE_HEURISTIC
     .shadow.guess_wrmap            = sh_guess_wrmap,
 #endif
-#endif /* CONFIG_HVM */
     .shadow.pagetable_dying        = sh_pagetable_dying,
+#endif /* CONFIG_HVM */
     .shadow.trace_emul_write_val   = trace_emulate_write_val,
     .shadow.shadow_levels          = SHADOW_PAGING_LEVELS,
 };
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index 0044450999..3fd3f0617a 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -66,7 +66,11 @@ extern int shadow_audit_enable;
 #define SHOPT_FAST_EMULATION      0x80  /* Fast write emulation */
 #define SHOPT_OUT_OF_SYNC        0x100  /* Allow guest writes to L1 PTs */
 
+#ifdef CONFIG_HVM
 #define SHADOW_OPTIMIZATIONS     0x1ff
+#else
+#define SHADOW_OPTIMIZATIONS     (0x1ff & ~SHOPT_FAST_EMULATION)
+#endif
 
 
 /******************************************************************************
@@ -716,26 +720,11 @@ struct sh_emulate_ctxt {
 #endif
 };
 
-#ifdef CONFIG_HVM
 const struct x86_emulate_ops *shadow_init_emulation(
     struct sh_emulate_ctxt *sh_ctxt, struct cpu_user_regs *regs,
     unsigned int pte_size);
 void shadow_continue_emulation(
     struct sh_emulate_ctxt *sh_ctxt, struct cpu_user_regs *regs);
-#else
-static inline const struct x86_emulate_ops *shadow_init_emulation(
-    struct sh_emulate_ctxt *sh_ctxt, struct cpu_user_regs *regs,
-    unsigned int pte_size)
-{
-    BUG();
-    return NULL;
-}
-static inline void shadow_continue_emulation(
-    struct sh_emulate_ctxt *sh_ctxt, struct cpu_user_regs *regs)
-{
-    BUG();
-}
-#endif
 
 /* Stop counting towards early unshadows, as we've seen a real page fault */
 static inline void sh_reset_early_unshadow(struct vcpu *v)
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 554b8dddcc..e2294d553f 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -117,8 +117,10 @@ struct shadow_domain {
     /* OOS */
     bool_t oos_active;
 
+#ifdef CONFIG_HVM
     /* Has this domain ever used HVMOP_pagetable_dying? */
     bool_t pagetable_dying_op;
+#endif
 
 #ifdef CONFIG_PV
     /* PV L1 Terminal Fault mitigation. */
@@ -137,10 +139,12 @@ struct shadow_vcpu {
     unsigned long last_emulated_mfn_for_unshadow;
     /* MFN of the last shadow that we shot a writeable mapping in */
     unsigned long last_writeable_pte_smfn;
+#ifdef CONFIG_HVM
     /* Last frame number that we emulated a write to. */
     unsigned long last_emulated_frame;
     /* Last MFN that we emulated a write successfully */
     unsigned long last_emulated_mfn;
+#endif
 
     /* Shadow out-of-sync: pages that this vcpu has let go out of sync */
     mfn_t oos[SHADOW_OOS_PAGES];
@@ -151,8 +155,10 @@ struct shadow_vcpu {
         unsigned long off[SHADOW_OOS_FIXUPS];
     } oos_fixup[SHADOW_OOS_PAGES];
 
+#ifdef CONFIG_HVM
     bool_t pagetable_dying;
 #endif
+#endif
 };
 
 /************************************************/
@@ -225,10 +231,12 @@ struct paging_vcpu {
     const struct paging_mode *mode;
     /* Nested Virtualization: paging mode of nested guest */
     const struct paging_mode *nestedmode;
+#ifdef CONFIG_HVM
     /* HVM guest: last emulate was to a pagetable */
     unsigned int last_write_was_pt:1;
     /* HVM guest: last write emulation succeeds */
     unsigned int last_write_emul_ok:1;
+#endif
     /* Translated guest: virtual TLB */
     struct shadow_vtlb *vtlb;
     spinlock_t          vtlb_lock;
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 1fa334b306..3d3f9d49ac 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -287,7 +287,9 @@ struct page_info
          */
         struct {
             uint16_t shadow_flags;
+#ifdef CONFIG_HVM
             bool pagetable_dying;
+#endif
         };
 
         /* When in use as a shadow, next shadow in this hash chain. */
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index 4fb3f09e1a..5243de7312 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -107,8 +107,8 @@ struct shadow_paging_mode {
     void          (*destroy_monitor_table )(struct vcpu *v, mfn_t mmfn);
     int           (*guess_wrmap           )(struct vcpu *v, 
                                             unsigned long vaddr, mfn_t gmfn);
-#endif
     void          (*pagetable_dying       )(paddr_t gpa);
+#endif
     void          (*trace_emul_write_val  )(const void *ptr, unsigned long vaddr,
                                             const void *src, unsigned int bytes);
 #endif
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:24:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:24:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ1a-0001Ud-1N; Thu, 23 Apr 2020 10:24:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ1Z-0001UU-Ac
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:05 +0000
X-Inumbo-ID: 8ecd9834-854c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 8ecd9834-854c-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 10:24:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2jbeGwe/PEvWT0UodvC6DYz1j28HRn5ZUGpG+iZr0g0=; b=eWO0y9cER5uIUPlXNvfiMeV6vU
 6Rf7o0we+iD0nzyhHOyT4neg+nWFjNIGgNRyI0ZJrOUoxg/OlyKmq48SqbPcnNpj2Yb5igX0iVa0d
 0ja1OIKHL7YW7H29D0+peKpOciVcCmMJlKDdoAzEbFteS0u7/tNLowracG5Lfc8xzvJI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1Y-0000Hr-OV
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1Y-00050u-NC
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shadow: the trace_emul_write_val() hook is HVM-only
Message-Id: <E1jRZ1Y-00050u-NC@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:24:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e55c9b25349c133a333b7b827d3b4645a84b5846
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 11:02:36 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 11:02:36 2020 +0200

    x86/shadow: the trace_emul_write_val() hook is HVM-only
    
    Its only caller lives in HVM-only code, and the only caller of
    trace_shadow_emulate() also already site in a HVM-only code section.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/multi.c | 4 +++-
 xen/include/asm-x86/paging.h   | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 16bb6f3e8a..2851aa0407 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -2694,6 +2694,7 @@ static inline void trace_shadow_emulate_other(u32 event,
     }
 }
 
+#ifdef CONFIG_HVM
 #if GUEST_PAGING_LEVELS == 3
 static DEFINE_PER_CPU(guest_va_t,trace_emulate_initial_va);
 static DEFINE_PER_CPU(int,trace_extra_emulation_count);
@@ -2745,6 +2746,7 @@ static inline void trace_shadow_emulate(guest_l1e_t gl1e, unsigned long va)
         __trace_var(event, 0/*!tsc*/, sizeof(d), &d);
     }
 }
+#endif /* CONFIG_HVM */
 
 /**************************************************************************/
 /* Entry points into the shadow code */
@@ -4896,8 +4898,8 @@ const struct paging_mode sh_paging_mode = {
     .shadow.guess_wrmap            = sh_guess_wrmap,
 #endif
     .shadow.pagetable_dying        = sh_pagetable_dying,
-#endif /* CONFIG_HVM */
     .shadow.trace_emul_write_val   = trace_emulate_write_val,
+#endif /* CONFIG_HVM */
     .shadow.shadow_levels          = SHADOW_PAGING_LEVELS,
 };
 
diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h
index 5243de7312..f53575f3d9 100644
--- a/xen/include/asm-x86/paging.h
+++ b/xen/include/asm-x86/paging.h
@@ -108,10 +108,10 @@ struct shadow_paging_mode {
     int           (*guess_wrmap           )(struct vcpu *v, 
                                             unsigned long vaddr, mfn_t gmfn);
     void          (*pagetable_dying       )(paddr_t gpa);
-#endif
     void          (*trace_emul_write_val  )(const void *ptr, unsigned long vaddr,
                                             const void *src, unsigned int bytes);
 #endif
+#endif
     /* For outsiders to tell what mode we're in */
     unsigned int shadow_levels;
 };
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:24:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:24:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ1k-0001W3-3B; Thu, 23 Apr 2020 10:24:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ1j-0001Vt-OM
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:15 +0000
X-Inumbo-ID: 9506f272-854c-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9506f272-854c-11ea-9e09-bc764e2007e4;
 Thu, 23 Apr 2020 10:24:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=d+dSU+7zOTd1+iktT4gE+r+4npP++kranRunjV2Gmis=; b=I0iGBlPICAsl6Ooj4wJa6YKiDU
 TBKFKHACizFoBlRSgW5JGb/awm9Waag231h/Ia7UX4bzPA6r0jsl0oZOhUv5wTkwBIn9AZHVs7tBv
 c1q8WMGWA1QswarMmStv1LFx5gkdoVsm/3yT3jHxrpN3+JXtOSQuRtazYLI8ddBOGGx4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1j-0000ID-6N
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1j-00051s-3h
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shadow: don't open-code
 shadow_blow_tables_per_domain()
Message-Id: <E1jRZ1j-00051s-3h@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:24:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7aacf6ac49829d8dd6242f67460f4d52d0d36503
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 21 11:03:46 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 21 11:03:46 2020 +0200

    x86/shadow: don't open-code shadow_blow_tables_per_domain()
    
    Make shadow_blow_all_tables() call the designated function, and on this
    occasion make the function itself use domain_vcpu().
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index ad15803cc8..aad977ccd7 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -1005,7 +1005,8 @@ static void shadow_blow_tables(struct domain *d)
 
 void shadow_blow_tables_per_domain(struct domain *d)
 {
-    if ( shadow_mode_enabled(d) && d->vcpu != NULL && d->vcpu[0] != NULL ) {
+    if ( shadow_mode_enabled(d) && domain_vcpu(d, 0) )
+    {
         paging_lock(d);
         shadow_blow_tables(d);
         paging_unlock(d);
@@ -1022,14 +1023,7 @@ static void shadow_blow_all_tables(unsigned char c)
     printk("'%c' pressed -> blowing all shadow tables\n", c);
     rcu_read_lock(&domlist_read_lock);
     for_each_domain(d)
-    {
-        if ( shadow_mode_enabled(d) && d->vcpu != NULL && d->vcpu[0] != NULL )
-        {
-            paging_lock(d);
-            shadow_blow_tables(d);
-            paging_unlock(d);
-        }
-    }
+        shadow_blow_tables_per_domain(d);
     rcu_read_unlock(&domlist_read_lock);
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:24:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:24:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ1v-0001XQ-57; Thu, 23 Apr 2020 10:24:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ1u-0001XI-58
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:26 +0000
X-Inumbo-ID: 9b1c2fa6-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9b1c2fa6-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:24:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=DU/VgIQ0/gQ3iYxdP2/ViUM0l/2lqBjnV48ZfWCuvfM=; b=lLIL9Shlr88lvtLVWF2U0WAmX4
 7STuFx26wwPuV0FTF6b6tSvl0ND+0gDrBjj2lmqjjrPOseSC8mXImPcMJJKrEm9mv9t2y1EO1bf4G
 O/DYPmyp/ockenGZdrxnMHq0SZH7827ItepLreIVU3AgyN50TR+LJYQZxiMTIp8LMR/Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1t-0000IZ-Cn
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ1t-00052j-Bl
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86: Enumeration for Control-flow Enforcement Technology
Message-Id: <E1jRZ1t-00052j-Bl@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:24:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4803a67114279a656a54a23cebed646da32efeb6
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Feb 21 17:56:57 2020 +0000
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Tue Apr 21 16:52:03 2020 +0100

    x86: Enumeration for Control-flow Enforcement Technology
    
    The CET spec has been published and guest kernels are starting to get support.
    Introduce the CPUID and MSRs, and fully block the MSRs from guest use.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
---
 tools/libxl/libxl_cpuid.c                   | 2 ++
 tools/misc/xen-cpuid.c                      | 3 ++-
 xen/arch/x86/msr.c                          | 6 ++++++
 xen/include/asm-x86/msr-index.h             | 8 ++++++++
 xen/include/public/arch-x86/cpufeatureset.h | 2 ++
 5 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/tools/libxl/libxl_cpuid.c b/tools/libxl/libxl_cpuid.c
index b4f6fd590d..00262a3f8f 100644
--- a/tools/libxl/libxl_cpuid.c
+++ b/tools/libxl/libxl_cpuid.c
@@ -201,6 +201,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"pku",          0x00000007,  0, CPUID_REG_ECX,  3,  1},
         {"ospke",        0x00000007,  0, CPUID_REG_ECX,  4,  1},
         {"avx512-vbmi2", 0x00000007,  0, CPUID_REG_ECX,  6,  1},
+        {"cet-ss",       0x00000007,  0, CPUID_REG_ECX,  7,  1},
         {"gfni",         0x00000007,  0, CPUID_REG_ECX,  8,  1},
         {"vaes",         0x00000007,  0, CPUID_REG_ECX,  9,  1},
         {"vpclmulqdq",   0x00000007,  0, CPUID_REG_ECX, 10,  1},
@@ -213,6 +214,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"avx512-4vnniw",0x00000007,  0, CPUID_REG_EDX,  2,  1},
         {"avx512-4fmaps",0x00000007,  0, CPUID_REG_EDX,  3,  1},
         {"md-clear",     0x00000007,  0, CPUID_REG_EDX, 10,  1},
+        {"cet-ibt",      0x00000007,  0, CPUID_REG_EDX, 20,  1},
         {"ibrsb",        0x00000007,  0, CPUID_REG_EDX, 26,  1},
         {"stibp",        0x00000007,  0, CPUID_REG_EDX, 27,  1},
         {"l1d-flush",    0x00000007,  0, CPUID_REG_EDX, 28,  1},
diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c
index 585b530b21..ff36d8cee1 100644
--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -123,7 +123,7 @@ static const char *const str_7c0[32] =
     [ 0] = "prefetchwt1",      [ 1] = "avx512_vbmi",
     [ 2] = "umip",             [ 3] = "pku",
     [ 4] = "ospke",            [ 5] = "waitpkg",
-    [ 6] = "avx512_vbmi2",
+    [ 6] = "avx512_vbmi2",     [ 7] = "cet-ss",
     [ 8] = "gfni",             [ 9] = "vaes",
     [10] = "vpclmulqdq",       [11] = "avx512_vnni",
     [12] = "avx512_bitalg",
@@ -163,6 +163,7 @@ static const char *const str_7d0[32] =
     /* 12 */                [13] = "tsx-force-abort",
 
     [18] = "pconfig",
+    [20] = "cet-ibt",
 
     [26] = "ibrsb",         [27] = "stibp",
     [28] = "l1d_flush",     [29] = "arch_caps",
diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index b4a1ab0fa6..dcacae58de 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -167,6 +167,9 @@ int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val)
     case MSR_CORE_CAPABILITIES:
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
     case MSR_AMD64_LWP_CFG:
     case MSR_AMD64_LWP_CBADDR:
     case MSR_PPIN_CTL:
@@ -324,6 +327,9 @@ int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val)
     case MSR_TEST_CTRL:
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
     case MSR_AMD64_LWP_CFG:
     case MSR_AMD64_LWP_CBADDR:
     case MSR_PPIN_CTL:
diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h
index bb4e601445..85c5f20b76 100644
--- a/xen/include/asm-x86/msr-index.h
+++ b/xen/include/asm-x86/msr-index.h
@@ -66,6 +66,14 @@
 #define  TSX_CTRL_RTM_DISABLE               (_AC(1, ULL) <<  0)
 #define  TSX_CTRL_CPUID_CLEAR               (_AC(1, ULL) <<  1)
 
+#define MSR_U_CET                           0x000006a0
+#define MSR_S_CET                           0x000006a2
+#define MSR_PL0_SSP                         0x000006a4
+#define MSR_PL1_SSP                         0x000006a5
+#define MSR_PL2_SSP                         0x000006a6
+#define MSR_PL3_SSP                         0x000006a7
+#define MSR_INTERRUPT_SSP_TABLE             0x000006a8
+
 /*
  * Legacy MSR constants in need of cleanup.  No new MSRs below this comment.
  */
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 295b2b7aa8..e2749245f3 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -229,6 +229,7 @@ XEN_CPUFEATURE(UMIP,          6*32+ 2) /*S  User Mode Instruction Prevention */
 XEN_CPUFEATURE(PKU,           6*32+ 3) /*H  Protection Keys for Userspace */
 XEN_CPUFEATURE(OSPKE,         6*32+ 4) /*!  OS Protection Keys Enable */
 XEN_CPUFEATURE(AVX512_VBMI2,  6*32+ 6) /*A  Additional AVX-512 Vector Byte Manipulation Instrs */
+XEN_CPUFEATURE(CET_SS,        6*32+ 7) /*   CET - Shadow Stacks */
 XEN_CPUFEATURE(GFNI,          6*32+ 8) /*A  Galois Field Instrs */
 XEN_CPUFEATURE(VAES,          6*32+ 9) /*A  Vector AES Instrs */
 XEN_CPUFEATURE(VPCLMULQDQ,    6*32+10) /*A  Vector Carry-less Multiplication Instrs */
@@ -254,6 +255,7 @@ XEN_CPUFEATURE(AVX512_4VNNIW, 9*32+ 2) /*A  AVX512 Neural Network Instructions *
 XEN_CPUFEATURE(AVX512_4FMAPS, 9*32+ 3) /*A  AVX512 Multiply Accumulation Single Precision */
 XEN_CPUFEATURE(MD_CLEAR,      9*32+10) /*A  VERW clears microarchitectural buffers */
 XEN_CPUFEATURE(TSX_FORCE_ABORT, 9*32+13) /* MSR_TSX_FORCE_ABORT.RTM_ABORT */
+XEN_CPUFEATURE(CET_IBT,       9*32+20) /*   CET - Indirect Branch Tracking */
 XEN_CPUFEATURE(IBRSB,         9*32+26) /*A  IBRS and IBPB support (used by Intel) */
 XEN_CPUFEATURE(STIBP,         9*32+27) /*A  STIBP */
 XEN_CPUFEATURE(L1D_FLUSH,     9*32+28) /*S  MSR_FLUSH_CMD and L1D flush. */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:24:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:24:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ25-0001Z5-8L; Thu, 23 Apr 2020 10:24:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ24-0001Yu-8r
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:36 +0000
X-Inumbo-ID: a11e73aa-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a11e73aa-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:24:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=yGgQd1y6zmYjwJ2yPmiPOOIcBiVr2/oa0XPZzjp0avQ=; b=Wv/FcCdUqNOUfhOmAZ2rkwTSAc
 o/TgaF8djSarGaodd6209QcMBawpfQJTnzsBFADVrz37TzUFGNXVH6bxNAiqYkDOhtrgZ2qsDQSw6
 Q84rBfBkkFgDS7z95NNutSGIbSEWSmcqxI61AtIm7OESNUtMhmLATt8xU0YvCiuK5Nn4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ23-0000Iz-FS
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ23-00053N-ER
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/arm: vgic-v3: fix GICD_ISACTIVER range
Message-Id: <E1jRZ23-00053N-ER@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:24:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0796cb907f2c31046427510a6da6f4941f678b76
Author:     Peng Fan <peng.fan@nxp.com>
AuthorDate: Fri Apr 17 15:16:09 2020 -0700
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Tue Apr 21 12:10:50 2020 -0700

    xen/arm: vgic-v3: fix GICD_ISACTIVER range
    
    The end should be GICD_ISACTIVERN not GICD_ISACTIVER.
    
    See https://marc.info/?l=xen-devel&m=158527653730795 for a discussion on
    what it would take to implement GICD_ISACTIVER/GICD_ICACTIVER properly.
    
    We chose v1 instead of v2 of this patch to avoid spamming the console:
    v2 adds a printk for every read, and reads can happen often.
    
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    [Stefano: improve commit message]
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/vgic-v3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/vgic-v3.c b/xen/arch/arm/vgic-v3.c
index 4e60ba15cc..fd8cfc156d 100644
--- a/xen/arch/arm/vgic-v3.c
+++ b/xen/arch/arm/vgic-v3.c
@@ -713,7 +713,7 @@ static int __vgic_v3_distr_common_mmio_read(const char *name, struct vcpu *v,
         goto read_as_zero;
 
     /* Read the active status of an IRQ via GICD/GICR is not supported */
-    case VRANGE32(GICD_ISACTIVER, GICD_ISACTIVER):
+    case VRANGE32(GICD_ISACTIVER, GICD_ISACTIVERN):
     case VRANGE32(GICD_ICACTIVER, GICD_ICACTIVERN):
         goto read_as_zero;
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:24:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:24:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ2F-0001ad-AN; Thu, 23 Apr 2020 10:24:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ2E-0001aU-By
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:46 +0000
X-Inumbo-ID: a7206362-854c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a7206362-854c-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 10:24:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Zog1Sc1okzYEH7ZlM1ep3ReRuujXtAQPjCXeWo/rSaQ=; b=cr2aKHlnByRrf1Tf5vCgmANYUy
 cFO4ATjMJWlGNDirb+G+0tqEO8Y3zIjXWQUjCy+prO4t71r+6kY8sxLHa87dtb9XhBS5Rher2JkIy
 6FwyDQZxZ4xK2z8tIUX2B9wIG6n736hGbZYY/e5CGEaZHJwpY8ET7/RAnF+EesI+HC6s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2D-0000Jg-I6
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2D-00054J-HD
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/arm: Avoid open-coding the relinquish state machine
Message-Id: <E1jRZ2D-00054J-HD@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:24:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 5730ac3c8346f56fe8ee90249cdcbdab2a4d5791
Author:     Julien Grall <julien@xen.org>
AuthorDate: Sun Apr 19 10:50:30 2020 +0100
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Tue Apr 21 16:46:25 2020 -0700

    xen/arm: Avoid open-coding the relinquish state machine
    
    In commit 0dfffe01d5 "x86: Improve the efficiency of
    domain_relinquish_resources()", the x86 version of the function has been
    reworked to avoid open-coding the state machine and also add more
    documentation.
    
    Bring the Arm version on par with x86 by introducing a documented
    PROGRESS() macro to avoid latent bugs and make the new PROG_* states
    private to domain_relinquish_resources().
    
    Cc: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
 xen/arch/arm/domain.c        | 60 +++++++++++++++++++++++++++-----------------
 xen/include/asm-arm/domain.h |  9 +------
 2 files changed, 38 insertions(+), 31 deletions(-)

diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 6627be2922..31169326b2 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -674,7 +674,6 @@ int arch_domain_create(struct domain *d,
     int rc, count = 0;
 
     BUILD_BUG_ON(GUEST_MAX_VCPUS < MAX_VIRT_CPUS);
-    d->arch.relmem = RELMEM_not_started;
 
     /* Idle domains do not need this setup */
     if ( is_idle_domain(d) )
@@ -950,13 +949,41 @@ static int relinquish_memory(struct domain *d, struct page_list_head *list)
     return ret;
 }
 
+/*
+ * Record the current progress. Subsequent hypercall continuations will
+ * logically restart work from this point.
+ *
+ * PROGRESS() markers must not be in the middle of loops. The loop
+ * variable isn't preserved accross a continuation.
+ *
+ * To avoid redundant work, there should be a marker before each
+ * function which may return -ERESTART.
+ */
+enum {
+    PROG_tee = 1,
+    PROG_xen,
+    PROG_page,
+    PROG_mapping,
+    PROG_done,
+};
+
+#define PROGRESS(x)                         \
+    d->arch.rel_priv = PROG_ ## x;          \
+    /* Fallthrough */                       \
+    case PROG_ ## x
+
 int domain_relinquish_resources(struct domain *d)
 {
     int ret = 0;
 
-    switch ( d->arch.relmem )
+    /*
+     * This hypercall can take minutes of wallclock time to complete.  This
+     * logic implements a co-routine, stashing state in struct domain across
+     * hypercall continuation boundaries.
+     */
+    switch ( d->arch.rel_priv )
     {
-    case RELMEM_not_started:
+    case 0:
         ret = iommu_release_dt_devices(d);
         if ( ret )
             return ret;
@@ -967,42 +994,27 @@ int domain_relinquish_resources(struct domain *d)
          */
         domain_vpl011_deinit(d);
 
-        d->arch.relmem = RELMEM_tee;
-        /* Fallthrough */
-
-    case RELMEM_tee:
+    PROGRESS(tee):
         ret = tee_relinquish_resources(d);
         if (ret )
             return ret;
 
-        d->arch.relmem = RELMEM_xen;
-        /* Fallthrough */
-
-    case RELMEM_xen:
+    PROGRESS(xen):
         ret = relinquish_memory(d, &d->xenpage_list);
         if ( ret )
             return ret;
 
-        d->arch.relmem = RELMEM_page;
-        /* Fallthrough */
-
-    case RELMEM_page:
+    PROGRESS(page):
         ret = relinquish_memory(d, &d->page_list);
         if ( ret )
             return ret;
 
-        d->arch.relmem = RELMEM_mapping;
-        /* Fallthrough */
-
-    case RELMEM_mapping:
+    PROGRESS(mapping):
         ret = relinquish_p2m_mapping(d);
         if ( ret )
             return ret;
 
-        d->arch.relmem = RELMEM_done;
-        /* Fallthrough */
-
-    case RELMEM_done:
+    PROGRESS(done):
         break;
 
     default:
@@ -1012,6 +1024,8 @@ int domain_relinquish_resources(struct domain *d)
     return 0;
 }
 
+#undef PROGRESS
+
 void arch_dump_domain_info(struct domain *d)
 {
     p2m_dump_info(d);
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index d39477a939..d2142c6707 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -56,14 +56,7 @@ struct arch_domain
     struct vmmio vmmio;
 
     /* Continuable domain_relinquish_resources(). */
-    enum {
-        RELMEM_not_started,
-        RELMEM_tee,
-        RELMEM_xen,
-        RELMEM_page,
-        RELMEM_mapping,
-        RELMEM_done,
-    } relmem;
+    unsigned int rel_priv;
 
     struct {
         uint64_t offset;
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:24:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:24:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ2P-0001bZ-CL; Thu, 23 Apr 2020 10:24:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ2O-0001bQ-6i
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:56 +0000
X-Inumbo-ID: ad23b9ee-854c-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ad23b9ee-854c-11ea-83d8-bc764e2007e4;
 Thu, 23 Apr 2020 10:24:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=dBB0GTrZAA1+cHrVIrzuYhNyi3wTlNCVq/ftI6hVUvE=; b=3xQyxO0cyau5FazJ4kwq3hZzaU
 qpD1PF6rYCiuAsg0uyvWT91xpDi9/w5yDVx/5L38adTt6hv4rWv0jM0LRL37UIUYrnZAx7m6p3Gt7
 pDmwxh5tlTkDpgjkkr3ozyAkHiHpcI++sDwvsWWYZzdqxP2JEHBh9879Qyclo/Z7eBwc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2N-0000Jv-Ko
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2N-00055J-Jw
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:24:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shadow: make sh_remove_write_access() helper HVM only
Message-Id: <E1jRZ2N-00055J-Jw@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:24:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 43f1a11f9a5727289e0c89fe5ead4594f3582efa
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 10:50:05 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 10:50:05 2020 +0200

    x86/shadow: make sh_remove_write_access() helper HVM only
    
    Despite the inline attribute at least some clang versions warn about
    trace_shadow_wrmap_bf() being unused in !HVM builds. Include the helper
    in the #ifdef region.
    
    Fixes: 8b8d011ad868 ("x86/shadow: the guess_wrmap() hook is needed for HVM only")
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/common.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index aad977ccd7..4e135474e1 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -1756,6 +1756,7 @@ void sh_destroy_shadow(struct domain *d, mfn_t smfn)
     }
 }
 
+#ifdef CONFIG_HVM
 static inline void trace_shadow_wrmap_bf(mfn_t gmfn)
 {
     if ( tb_init_done )
@@ -1767,7 +1768,6 @@ static inline void trace_shadow_wrmap_bf(mfn_t gmfn)
     }
 }
 
-#ifdef CONFIG_HVM
 /**************************************************************************/
 /* Remove all writeable mappings of a guest frame from the shadow tables
  * Returns non-zero if we need to flush TLBs.
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:25:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:25:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ2Z-0001cg-EF; Thu, 23 Apr 2020 10:25:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ2Y-0001cZ-PQ
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:06 +0000
X-Inumbo-ID: b34fbdd6-854c-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b34fbdd6-854c-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 10:25:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=71CJxszpSa2s1dWX12AFgTIWL4uPQwwij1Pq1DBAb/U=; b=p2ywMscBSdwEY20jPWY07tpjcS
 GwO9AzAlHM/vW0DNGdHloNhlx+FBqv6ENeuWk4UohIZNruTPgyV+KDmAlm6TsdDzJPzJLTNQ2IBIb
 4s9eylkJyhkefBBYeflmz9RXqBFOavKv9Ovtsoo+uUkUQnMKBfcIQhsttPq6vVq195kg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2Y-0000KN-01
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:06 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2X-00056Q-TO
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/shadow: sh_update_linear_entries() is a no-op for PV
Message-Id: <E1jRZ2X-00056Q-TO@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:25:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 7dc64a837532efb3e42b097115199910aac6976b
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 10:54:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 10:54:08 2020 +0200

    x86/shadow: sh_update_linear_entries() is a no-op for PV
    
    Consolidate the shadow_mode_external() in here: Check this once at the
    start of the function.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm/shadow/multi.c | 80 +++++++++++++++---------------------------
 1 file changed, 29 insertions(+), 51 deletions(-)

diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 2851aa0407..4c2e7319e9 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -3680,20 +3680,7 @@ sh_update_linear_entries(struct vcpu *v)
 {
     struct domain *d = v->domain;
 
-    /* Linear pagetables in PV guests
-     * ------------------------------
-     *
-     * Guest linear pagetables, which map the guest pages, are at
-     * LINEAR_PT_VIRT_START.  Shadow linear pagetables, which map the
-     * shadows, are at SH_LINEAR_PT_VIRT_START.  Most of the time these
-     * are set up at shadow creation time, but (of course!) the PAE case
-     * is subtler.  Normal linear mappings are made by having an entry
-     * in the top-level table that points to itself (shadow linear) or
-     * to the guest top-level table (guest linear).  For PAE, to set up
-     * a linear map requires us to copy the four top-level entries into
-     * level-2 entries.  That means that every time we change a PAE l3e,
-     * we need to reflect the change into the copy.
-     *
+    /*
      * Linear pagetables in HVM guests
      * -------------------------------
      *
@@ -3711,34 +3698,30 @@ sh_update_linear_entries(struct vcpu *v)
      */
 
     /* Don't try to update the monitor table if it doesn't exist */
-    if ( shadow_mode_external(d)
-         && pagetable_get_pfn(v->arch.monitor_table) == 0 )
+    if ( !shadow_mode_external(d) ||
+         pagetable_get_pfn(v->arch.monitor_table) == 0 )
         return;
 
 #if SHADOW_PAGING_LEVELS == 4
 
-    /* For PV, one l4e points at the guest l4, one points at the shadow
-     * l4.  No maintenance required.
-     * For HVM, just need to update the l4e that points to the shadow l4. */
+    /* For HVM, just need to update the l4e that points to the shadow l4. */
 
-    if ( shadow_mode_external(d) )
+    /* Use the linear map if we can; otherwise make a new mapping */
+    if ( v == current )
     {
-        /* Use the linear map if we can; otherwise make a new mapping */
-        if ( v == current )
-        {
-            __linear_l4_table[l4_linear_offset(SH_LINEAR_PT_VIRT_START)] =
-                l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
-                             __PAGE_HYPERVISOR_RW);
-        }
-        else
-        {
-            l4_pgentry_t *ml4e;
-            ml4e = map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
-            ml4e[l4_table_offset(SH_LINEAR_PT_VIRT_START)] =
-                l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
-                             __PAGE_HYPERVISOR_RW);
-            unmap_domain_page(ml4e);
-        }
+        __linear_l4_table[l4_linear_offset(SH_LINEAR_PT_VIRT_START)] =
+            l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
+                         __PAGE_HYPERVISOR_RW);
+    }
+    else
+    {
+        l4_pgentry_t *ml4e;
+
+        ml4e = map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
+        ml4e[l4_table_offset(SH_LINEAR_PT_VIRT_START)] =
+            l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
+                         __PAGE_HYPERVISOR_RW);
+        unmap_domain_page(ml4e);
     }
 
 #elif SHADOW_PAGING_LEVELS == 3
@@ -3752,7 +3735,6 @@ sh_update_linear_entries(struct vcpu *v)
      * the shadows.
      */
 
-    ASSERT(shadow_mode_external(d));
     {
         /* Install copies of the shadow l3es into the monitor l2 table
          * that maps SH_LINEAR_PT_VIRT_START. */
@@ -3803,20 +3785,16 @@ sh_update_linear_entries(struct vcpu *v)
 #error this should not happen
 #endif
 
-    if ( shadow_mode_external(d) )
-    {
-        /*
-         * Having modified the linear pagetable mapping, flush local host TLBs.
-         * This was not needed when vmenter/vmexit always had the side effect
-         * of flushing host TLBs but, with ASIDs, it is possible to finish
-         * this CR3 update, vmenter the guest, vmexit due to a page fault,
-         * without an intervening host TLB flush. Then the page fault code
-         * could use the linear pagetable to read a top-level shadow page
-         * table entry. But, without this change, it would fetch the wrong
-         * value due to a stale TLB.
-         */
-        flush_tlb_local();
-    }
+    /*
+     * Having modified the linear pagetable mapping, flush local host TLBs.
+     * This was not needed when vmenter/vmexit always had the side effect of
+     * flushing host TLBs but, with ASIDs, it is possible to finish this CR3
+     * update, vmenter the guest, vmexit due to a page fault, without an
+     * intervening host TLB flush. Then the page fault code could use the
+     * linear pagetable to read a top-level shadow page table entry. But,
+     * without this change, it would fetch the wrong value due to a stale TLB.
+     */
+    flush_tlb_local();
 }
 
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:25:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:25:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ2k-0001dw-G3; Thu, 23 Apr 2020 10:25:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ2j-0001dm-2g
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:17 +0000
X-Inumbo-ID: b9046ce1-854c-11ea-933f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b9046ce1-854c-11ea-933f-12813bfff9fa;
 Thu, 23 Apr 2020 10:25:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=o2N7SwqfQC2sTFCsWpJOgn7XpgVJ++zNnaaVWd5j7C0=; b=YoTIPun56R60naJAdnpBunNT0N
 07cYcyMqqON2CTJh1jW7bu9ph2FvdUOXKKbE6eVSePMNINAyNQ3MeiADKQrWewkMWOwtdvw9G8JgF
 uV5cB6fNFVZSJktIRJf0syY0YptxS46Ky7WjHAFnnWWRjiz1UtXR7Hcakvwzdn2N2tO4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2i-0000Ki-6A
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:16 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2i-00057L-5R
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:16 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/mm: monitor table is HVM-only
Message-Id: <E1jRZ2i-00057L-5R@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:25:16 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 17b094b97c823c956c57e31c5cd7175d56b3efe4
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 10:55:15 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 10:55:15 2020 +0200

    x86/mm: monitor table is HVM-only
    
    Move the per-vCPU field to the HVM sub-structure.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/mm.c               |  2 +-
 xen/arch/x86/mm/hap/hap.c       | 10 +++++-----
 xen/arch/x86/mm/shadow/common.c | 14 +++++++-------
 xen/arch/x86/mm/shadow/multi.c  | 10 +++++-----
 xen/include/asm-x86/domain.h    |  1 -
 xen/include/asm-x86/hvm/vcpu.h  |  3 +++
 6 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index ee56e053e1..ab9cd00225 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -545,7 +545,7 @@ void write_ptbase(struct vcpu *v)
  * Should be called after CR3 is updated.
  *
  * Uses values found in vcpu->arch.(guest_table and guest_table_user), and
- * for HVM guests, arch.monitor_table and hvm's guest CR3.
+ * for HVM guests, arch.hvm.monitor_table and hvm's guest CR3.
  *
  * Update ref counts to shadow tables appropriately.
  */
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 052ae35c6f..11829e7aad 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -393,7 +393,7 @@ static mfn_t hap_make_monitor_table(struct vcpu *v)
     l4_pgentry_t *l4e;
     mfn_t m4mfn;
 
-    ASSERT(pagetable_get_pfn(v->arch.monitor_table) == 0);
+    ASSERT(pagetable_get_pfn(v->arch.hvm.monitor_table) == 0);
 
     if ( (pg = hap_alloc(d)) == NULL )
         goto oom;
@@ -579,10 +579,10 @@ void hap_teardown(struct domain *d, bool *preempted)
         {
             if ( paging_get_hostmode(v) && paging_mode_external(d) )
             {
-                mfn = pagetable_get_mfn(v->arch.monitor_table);
+                mfn = pagetable_get_mfn(v->arch.hvm.monitor_table);
                 if ( mfn_valid(mfn) && (mfn_x(mfn) != 0) )
                     hap_destroy_monitor_table(v, mfn);
-                v->arch.monitor_table = pagetable_null();
+                v->arch.hvm.monitor_table = pagetable_null();
             }
         }
     }
@@ -758,10 +758,10 @@ static void hap_update_paging_modes(struct vcpu *v)
 
     v->arch.paging.mode = hap_paging_get_mode(v);
 
-    if ( pagetable_is_null(v->arch.monitor_table) )
+    if ( pagetable_is_null(v->arch.hvm.monitor_table) )
     {
         mfn_t mmfn = hap_make_monitor_table(v);
-        v->arch.monitor_table = pagetable_from_mfn(mmfn);
+        v->arch.hvm.monitor_table = pagetable_from_mfn(mmfn);
         make_cr3(v, mmfn);
         hvm_update_host_cr3(v);
     }
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 4e135474e1..3746dd6fb0 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -2465,10 +2465,10 @@ static void sh_update_paging_modes(struct vcpu *v)
                 &SHADOW_INTERNAL_NAME(sh_paging_mode, 2);
         }
 
-        if ( pagetable_is_null(v->arch.monitor_table) )
+        if ( pagetable_is_null(v->arch.hvm.monitor_table) )
         {
             mfn_t mmfn = v->arch.paging.mode->shadow.make_monitor_table(v);
-            v->arch.monitor_table = pagetable_from_mfn(mmfn);
+            v->arch.hvm.monitor_table = pagetable_from_mfn(mmfn);
             make_cr3(v, mmfn);
             hvm_update_host_cr3(v);
         }
@@ -2502,10 +2502,10 @@ static void sh_update_paging_modes(struct vcpu *v)
                     return;
                 }
 
-                old_mfn = pagetable_get_mfn(v->arch.monitor_table);
-                v->arch.monitor_table = pagetable_null();
+                old_mfn = pagetable_get_mfn(v->arch.hvm.monitor_table);
+                v->arch.hvm.monitor_table = pagetable_null();
                 new_mfn = v->arch.paging.mode->shadow.make_monitor_table(v);
-                v->arch.monitor_table = pagetable_from_mfn(new_mfn);
+                v->arch.hvm.monitor_table = pagetable_from_mfn(new_mfn);
                 SHADOW_PRINTK("new monitor table %"PRI_mfn "\n",
                                mfn_x(new_mfn));
 
@@ -2724,11 +2724,11 @@ void shadow_teardown(struct domain *d, bool *preempted)
 #ifdef CONFIG_HVM
                 if ( shadow_mode_external(d) )
                 {
-                    mfn_t mfn = pagetable_get_mfn(v->arch.monitor_table);
+                    mfn_t mfn = pagetable_get_mfn(v->arch.hvm.monitor_table);
 
                     if ( mfn_valid(mfn) && (mfn_x(mfn) != 0) )
                         v->arch.paging.mode->shadow.destroy_monitor_table(v, mfn);
-                    v->arch.monitor_table = pagetable_null();
+                    v->arch.hvm.monitor_table = pagetable_null();
                 }
 #endif /* CONFIG_HVM */
             }
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 4c2e7319e9..bd88852b64 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -1521,7 +1521,7 @@ sh_make_monitor_table(struct vcpu *v)
 {
     struct domain *d = v->domain;
 
-    ASSERT(pagetable_get_pfn(v->arch.monitor_table) == 0);
+    ASSERT(pagetable_get_pfn(v->arch.hvm.monitor_table) == 0);
 
     /* Guarantee we can get the memory we need */
     shadow_prealloc(d, SH_type_monitor_table, CONFIG_PAGING_LEVELS);
@@ -3699,7 +3699,7 @@ sh_update_linear_entries(struct vcpu *v)
 
     /* Don't try to update the monitor table if it doesn't exist */
     if ( !shadow_mode_external(d) ||
-         pagetable_get_pfn(v->arch.monitor_table) == 0 )
+         pagetable_get_pfn(v->arch.hvm.monitor_table) == 0 )
         return;
 
 #if SHADOW_PAGING_LEVELS == 4
@@ -3717,7 +3717,7 @@ sh_update_linear_entries(struct vcpu *v)
     {
         l4_pgentry_t *ml4e;
 
-        ml4e = map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
+        ml4e = map_domain_page(pagetable_get_mfn(v->arch.hvm.monitor_table));
         ml4e[l4_table_offset(SH_LINEAR_PT_VIRT_START)] =
             l4e_from_pfn(pagetable_get_pfn(v->arch.shadow_table[0]),
                          __PAGE_HYPERVISOR_RW);
@@ -3752,7 +3752,7 @@ sh_update_linear_entries(struct vcpu *v)
             l4_pgentry_t *ml4e;
             l3_pgentry_t *ml3e;
             int linear_slot = shadow_l4_table_offset(SH_LINEAR_PT_VIRT_START);
-            ml4e = map_domain_page(pagetable_get_mfn(v->arch.monitor_table));
+            ml4e = map_domain_page(pagetable_get_mfn(v->arch.hvm.monitor_table));
 
             ASSERT(l4e_get_flags(ml4e[linear_slot]) & _PAGE_PRESENT);
             l3mfn = l4e_get_mfn(ml4e[linear_slot]);
@@ -4087,7 +4087,7 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
     ///
     if ( shadow_mode_external(d) )
     {
-        make_cr3(v, pagetable_get_mfn(v->arch.monitor_table));
+        make_cr3(v, pagetable_get_mfn(v->arch.hvm.monitor_table));
     }
 #if SHADOW_PAGING_LEVELS == 4
     else // not shadow_mode_external...
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index e2294d553f..1e409c665d 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -583,7 +583,6 @@ struct arch_vcpu
     /* guest_table holds a ref to the page, and also a type-count unless
      * shadow refcounts are in use */
     pagetable_t shadow_table[4];        /* (MFN) shadow(s) of guest */
-    pagetable_t monitor_table;          /* (MFN) hypervisor PT (for HVM) */
     unsigned long cr3;                  /* (MA) value to install in HW CR3 */
 
     /*
diff --git a/xen/include/asm-x86/hvm/vcpu.h b/xen/include/asm-x86/hvm/vcpu.h
index eaeba71cf1..3d80cf5d76 100644
--- a/xen/include/asm-x86/hvm/vcpu.h
+++ b/xen/include/asm-x86/hvm/vcpu.h
@@ -176,6 +176,9 @@ struct hvm_vcpu {
         uint16_t p2midx;
     } fast_single_step;
 
+    /* (MFN) hypervisor page table */
+    pagetable_t         monitor_table;
+
     struct hvm_vcpu_asid n1asid;
 
     u64                 msr_tsc_adjust;
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:25:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:25:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ2u-0001fS-J0; Thu, 23 Apr 2020 10:25:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ2t-0001fI-Fh
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:27 +0000
X-Inumbo-ID: bf8f3496-854c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id bf8f3496-854c-11ea-b58d-bc764e2007e4;
 Thu, 23 Apr 2020 10:25:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZXIwF6E4Hb7+J9D5OJezvIon70AKQvOVYLivq6JNNco=; b=zXKKnAhkP20gc4zEReWQCsJXQW
 MytAIj8VfHXbMC1LY9De0r+3KkA9H2rrLSfJNkcRpm2AM6ieJaVZuMQ2i1WKnQDTf99jyChjZJQyE
 x9SrjzVdkXPnWpeox4bRnsHaANmszrQcrVgbQ8rvpxnCOw/ixSzL81r2rUZWUkEt/rn0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2s-0000L1-Hp
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:26 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ2s-000587-FA
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/HVM: expose VM assist hypercall
Message-Id: <E1jRZ2s-000587-FA@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:25:26 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f13404d57f55a97838f1c16a366fbc3231ec21f1
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 12:58:25 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 12:58:25 2020 +0200

    x86/HVM: expose VM assist hypercall
    
    In preparation for the addition of VMASST_TYPE_runstate_update_flag
    commit 72c538cca957 ("arm: add support for vm_assist hypercall") enabled
    the hypercall for Arm. I consider it not logical that it then isn't also
    exposed to x86 HVM guests (with the same single feature permitted to be
    enabled as Arm has); Linux actually tries to use it afaict.
    
    Rather than introducing yet another thin wrapper around vm_assist(),
    make that function the main handler, requiring a per-arch
    arch_vm_assist_valid_mask() definition instead.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/x86/domain.c        |  3 +++
 xen/arch/x86/hvm/hypercall.c |  1 +
 xen/arch/x86/pv/hypercall.c  |  2 +-
 xen/common/compat/kernel.c   |  5 -----
 xen/common/domain.c          | 13 ++++++++-----
 xen/common/kernel.c          |  7 -------
 xen/include/asm-arm/config.h |  2 --
 xen/include/asm-arm/domain.h |  2 ++
 xen/include/asm-x86/config.h | 11 -----------
 xen/include/asm-x86/domain.h | 19 +++++++++++++++++++
 xen/include/xen/hypercall.h  |  2 --
 xen/include/xen/lib.h        |  2 --
 12 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index a008d7df1c..7f18f4a88a 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -939,6 +939,9 @@ int arch_set_info_guest(
         v->arch.dr6 = c(debugreg[6]);
         v->arch.dr7 = c(debugreg[7]);
 
+        if ( v->vcpu_id == 0 )
+            d->vm_assist = c.nat->vm_assist;
+
         hvm_set_info_guest(v);
         goto out;
     }
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index cedc7f2ac5..b4a0aeab50 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -128,6 +128,7 @@ static const hypercall_table_t hvm_hypercall_table[] = {
 #ifdef CONFIG_GRANT_TABLE
     HVM_CALL(grant_table_op),
 #endif
+    HYPERCALL(vm_assist),
     COMPAT_CALL(vcpu_op),
     HVM_CALL(physdev_op),
     COMPAT_CALL(xen_version),
diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c
index 17ddf9ea1f..686a7f2c5c 100644
--- a/xen/arch/x86/pv/hypercall.c
+++ b/xen/arch/x86/pv/hypercall.c
@@ -57,7 +57,7 @@ const hypercall_table_t pv_hypercall_table[] = {
 #ifdef CONFIG_GRANT_TABLE
     COMPAT_CALL(grant_table_op),
 #endif
-    COMPAT_CALL(vm_assist),
+    HYPERCALL(vm_assist),
     COMPAT_CALL(update_va_mapping_otherdomain),
     COMPAT_CALL(iret),
     COMPAT_CALL(vcpu_op),
diff --git a/xen/common/compat/kernel.c b/xen/common/compat/kernel.c
index 5c6e7322f8..804b919bdc 100644
--- a/xen/common/compat/kernel.c
+++ b/xen/common/compat/kernel.c
@@ -37,11 +37,6 @@ CHECK_TYPE(capabilities_info);
 
 CHECK_TYPE(domain_handle);
 
-#ifdef COMPAT_VM_ASSIST_VALID
-#undef VM_ASSIST_VALID
-#define VM_ASSIST_VALID COMPAT_VM_ASSIST_VALID
-#endif
-
 #define DO(fn) int compat_##fn
 #define COMPAT
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 3dcd73f67c..7cc9526139 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1517,20 +1517,23 @@ long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
-#ifdef VM_ASSIST_VALID
-long vm_assist(struct domain *p, unsigned int cmd, unsigned int type,
-               unsigned long valid)
+#ifdef arch_vm_assist_valid_mask
+long do_vm_assist(unsigned int cmd, unsigned int type)
 {
+    struct domain *currd = current->domain;
+    const unsigned long valid = arch_vm_assist_valid_mask(currd);
+
     if ( type >= BITS_PER_LONG || !test_bit(type, &valid) )
         return -EINVAL;
 
     switch ( cmd )
     {
     case VMASST_CMD_enable:
-        set_bit(type, &p->vm_assist);
+        set_bit(type, &currd->vm_assist);
         return 0;
+
     case VMASST_CMD_disable:
-        clear_bit(type, &p->vm_assist);
+        clear_bit(type, &currd->vm_assist);
         return 0;
     }
 
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 22941cec94..572e3fc07d 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -566,13 +566,6 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return -ENOSYS;
 }
 
-#ifdef VM_ASSIST_VALID
-DO(vm_assist)(unsigned int cmd, unsigned int type)
-{
-    return vm_assist(current->domain, cmd, type, VM_ASSIST_VALID);
-}
-#endif
-
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h
index bc89e84f4d..fbb4b23a69 100644
--- a/xen/include/asm-arm/config.h
+++ b/xen/include/asm-arm/config.h
@@ -195,8 +195,6 @@ extern unsigned long frametable_virt_end;
 #define watchdog_disable() ((void)0)
 #define watchdog_enable()  ((void)0)
 
-#define VM_ASSIST_VALID          (1UL << VMASST_TYPE_runstate_update_flag)
-
 #endif /* __ARM_CONFIG_H__ */
 /*
  * Local variables:
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index d2142c6707..4e2f582006 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -262,6 +262,8 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
+#define arch_vm_assist_valid_mask(d) (1UL << VMASST_TYPE_runstate_update_flag)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index a34053c4c0..2d6393e64e 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -309,17 +309,6 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
-#define NATIVE_VM_ASSIST_VALID   ((1UL << VMASST_TYPE_4gb_segments)        | \
-                                  (1UL << VMASST_TYPE_4gb_segments_notify) | \
-                                  (1UL << VMASST_TYPE_writable_pagetables) | \
-                                  (1UL << VMASST_TYPE_pae_extended_cr3)    | \
-                                  (1UL << VMASST_TYPE_architectural_iopl)  | \
-                                  (1UL << VMASST_TYPE_runstate_update_flag)| \
-                                  (1UL << VMASST_TYPE_m2p_strict))
-#define VM_ASSIST_VALID          NATIVE_VM_ASSIST_VALID
-#define COMPAT_VM_ASSIST_VALID   (NATIVE_VM_ASSIST_VALID & \
-                                  ((1UL << COMPAT_BITS_PER_LONG) - 1))
-
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 1e409c665d..b10d74fb57 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -701,6 +701,25 @@ static inline void pv_inject_sw_interrupt(unsigned int vector)
     pv_inject_event(&event);
 }
 
+#define PV32_VM_ASSIST_MASK ((1UL << VMASST_TYPE_4gb_segments)        | \
+                             (1UL << VMASST_TYPE_4gb_segments_notify) | \
+                             (1UL << VMASST_TYPE_writable_pagetables) | \
+                             (1UL << VMASST_TYPE_pae_extended_cr3)    | \
+                             (1UL << VMASST_TYPE_architectural_iopl)  | \
+                             (1UL << VMASST_TYPE_runstate_update_flag))
+/*
+ * Various of what PV32_VM_ASSIST_MASK has isn't really applicable to 64-bit,
+ * but we can't make such requests fail all of the sudden.
+ */
+#define PV64_VM_ASSIST_MASK (PV32_VM_ASSIST_MASK                      | \
+                             (1UL << VMASST_TYPE_m2p_strict))
+#define HVM_VM_ASSIST_MASK  (1UL << VMASST_TYPE_runstate_update_flag)
+
+#define arch_vm_assist_valid_mask(d) \
+    (is_hvm_domain(d) ? HVM_VM_ASSIST_MASK \
+                      : is_pv_32bit_domain(d) ? PV32_VM_ASSIST_MASK \
+                                              : PV64_VM_ASSIST_MASK)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index ad8ad27b23..d82a293377 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -192,8 +192,6 @@ extern int compat_xsm_op(
 
 extern int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg);
 
-extern int compat_vm_assist(unsigned int cmd, unsigned int type);
-
 DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t);
 extern int compat_multicall(
     XEN_GUEST_HANDLE_PARAM(multicall_entry_compat_t) call_list,
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 5d718bbdba..2d7a054931 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -122,8 +122,6 @@ extern void guest_printk(const struct domain *d, const char *format, ...)
     __attribute__ ((format (printf, 2, 3)));
 extern void noreturn panic(const char *format, ...)
     __attribute__ ((format (printf, 1, 2)));
-extern long vm_assist(struct domain *, unsigned int cmd, unsigned int type,
-                      unsigned long valid);
 extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst);
 extern int printk_ratelimit(void);
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:25:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:25:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZ34-0001gi-Kk; Thu, 23 Apr 2020 10:25:38 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZ33-0001gY-4n
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:37 +0000
X-Inumbo-ID: c595fb9a-854c-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c595fb9a-854c-11ea-b58d-bc764e2007e4;
 Thu, 23 Apr 2020 10:25:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=SHTKBsB8YCMBQVx0dUrf1w8v5Aky2TzAKCwRAnd+7tY=; b=X+Gy1zzzAz9UnskkIO2EtvER8e
 6sWZQhZR9EdsEoNG1wwrCg5/k33MBJVQHgrkScjwXrDkdhzFM4u7AlSlvskEOcWHvay0ILALe34m3
 HcvZEq+andnvGpUXTXdKYruap9/KzgJJeFRy142eKisH7IHAcPVFVMsYxE8y7Te/r8PQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ32-0000LH-LV
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:36 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZ32-000591-Je
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:25:36 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86: validate VM assist value in arch_set_info_guest()
Message-Id: <E1jRZ32-000591-Je@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:25:36 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a62c6fe05c4ae905b7d4cb0ca946508b7f96d522
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Wed Apr 22 13:01:10 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 22 13:01:10 2020 +0200

    x86: validate VM assist value in arch_set_info_guest()
    
    While I can't spot anything that would go wrong, just like the
    respective hypercall only permits applicable bits to be set, we should
    also do so when loading guest context.
    
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/arch/x86/domain.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 7f18f4a88a..a4428190d5 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -932,6 +932,9 @@ int arch_set_info_guest(
         }
     }
 
+    if ( v->vcpu_id == 0 && (c(vm_assist) & ~arch_vm_assist_valid_mask(d)) )
+        return -EINVAL;
+
     if ( is_hvm_domain(d) )
     {
         for ( i = 0; i < ARRAY_SIZE(v->arch.dr); ++i )
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:33:12 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:33:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZAN-0002r2-AC; Thu, 23 Apr 2020 10:33:11 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZAM-0002qx-3Z
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:10 +0000
X-Inumbo-ID: d38af790-854d-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d38af790-854d-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 10:33:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=uR9THb0QIBb5U0xB65ZxPgQRjAxOaTjabSRpaF6JdPg=; b=tD785XNdoCV4EmS5UJIjI8WPhF
 EZn3yprv2FDtk5upL04ChC6CaqQc0hxQbaT4QwjfiuiaZ02PJvohJ6FDqUxqS4ZpS67X2bycpEQRf
 CRRfd3w1FWnfbYPR4frr5+baZMX8kaVf1zfeYutpaRkzl+AzwAqiKDVRhl0FJZCm6iQ0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZAL-0000Z5-IV
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:09 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZAL-0005sa-FH
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:09 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] golang/xenlight: add DeviceNicAdd/Remove wrappers
Message-Id: <E1jRZAL-0005sa-FH@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:33:09 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0f140aa92029516858cc986837dc902b88bd1675
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Sun Apr 12 18:02:40 2020 -0400
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 11:30:54 2020 +0100

    golang/xenlight: add DeviceNicAdd/Remove wrappers
    
    Add DeviceNicAdd and DeviceNicRemove as wrappers for
    libxl_device_nic_add and libxl_device_nic_remove.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
---
 tools/golang/xenlight/xenlight.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index 3f1b0baa0c..961939e947 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1045,3 +1045,37 @@ func (Ctx *Context) PrimaryConsoleGetTty(domid uint32) (path string, err error)
 	path = C.GoString(cpath)
 	return
 }
+
+// DeviceNicAdd adds a nic to a domain.
+func (Ctx *Context) DeviceNicAdd(domid Domid, nic *DeviceNic) error {
+	var cnic C.libxl_device_nic
+
+	if err := nic.toC(&cnic); err != nil {
+		return err
+	}
+	defer C.libxl_device_nic_dispose(&cnic)
+
+	ret := C.libxl_device_nic_add(Ctx.ctx, C.uint32_t(domid), &cnic, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
+
+// DeviceNicRemove removes a nic from a domain.
+func (Ctx *Context) DeviceNicRemove(domid Domid, nic *DeviceNic) error {
+	var cnic C.libxl_device_nic
+
+	if err := nic.toC(&cnic); err != nil {
+		return err
+	}
+	defer C.libxl_device_nic_dispose(&cnic)
+
+	ret := C.libxl_device_nic_remove(Ctx.ctx, C.uint32_t(domid), &cnic, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:33:21 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:33:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZAX-0002ru-Bm; Thu, 23 Apr 2020 10:33:21 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZAW-0002ri-9A
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:20 +0000
X-Inumbo-ID: d99b03c8-854d-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d99b03c8-854d-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 10:33:19 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5CjAGXI+0An2/UgekYN9lu2CgvR0fBrGo8BZCWF8uXc=; b=YX5Emm8KjeHEz0ZnvTa+1mkaOH
 UL+Usb6d5QidrB2wPdJwOmg/aFjTxNvo0wUf4/PY0xrk+I5d1pTzErzsh+TD2v7bqcoInBn311HZe
 92QRSHu+kyz3Q3L12SbJeZz+rhY1ZrDIbWKEv3iEMExh9oB5gC+yxaEOfk2QWbZZrqXs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZAV-0000ZK-OE
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:19 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZAV-0005uf-NF
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:19 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] golang/xenlight: add DevicePciAdd/Remove wrappers
Message-Id: <E1jRZAV-0005uf-NF@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:33:19 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit cb74bb259a0bef6411f30a240c4a1ab143aafc57
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Sun Apr 12 18:02:41 2020 -0400
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 11:30:54 2020 +0100

    golang/xenlight: add DevicePciAdd/Remove wrappers
    
    Add DevicePciAdd and DevicePciRemove as wrappers for
    libxl_device_pci_add and libxl_device_pci remove.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
---
 tools/golang/xenlight/xenlight.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index 961939e947..bc2e9de0e5 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1079,3 +1079,37 @@ func (Ctx *Context) DeviceNicRemove(domid Domid, nic *DeviceNic) error {
 
 	return nil
 }
+
+// DevicePciAdd is used to passthrough a PCI device to a domain.
+func (Ctx *Context) DevicePciAdd(domid Domid, pci *DevicePci) error {
+	var cpci C.libxl_device_pci
+
+	if err := pci.toC(&cpci); err != nil {
+		return err
+	}
+	defer C.libxl_device_pci_dispose(&cpci)
+
+	ret := C.libxl_device_pci_add(Ctx.ctx, C.uint32_t(domid), &cpci, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
+
+// DevicePciRemove removes a PCI device from a domain.
+func (Ctx *Context) DevicePciRemove(domid Domid, pci *DevicePci) error {
+	var cpci C.libxl_device_pci
+
+	if err := pci.toC(&cpci); err != nil {
+		return err
+	}
+	defer C.libxl_device_pci_dispose(&cpci)
+
+	ret := C.libxl_device_pci_remove(Ctx.ctx, C.uint32_t(domid), &cpci, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 10:33:31 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 10:33:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRZAh-0002tB-DT; Thu, 23 Apr 2020 10:33:31 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRZAg-0002t0-Kp
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:30 +0000
X-Inumbo-ID: df9e3f24-854d-11ea-9340-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id df9e3f24-854d-11ea-9340-12813bfff9fa;
 Thu, 23 Apr 2020 10:33:30 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VbCIMBf1WX4ZfZ4OYbovBED+ptbj8NEJ2Q4p9FPg85Y=; b=iD3W159MNJQI7khLb/b3sJONZ0
 OpYGlJ9aHZhV6x1KvyUj8YibjE3RJIhyHmSQZU5oWMRqbGIoH4pVrzxgBz9c/dMiu02PRWEy3eUdG
 vizaTercD7HDUosVYPxpAw+bzpiIsV2RQWU5jgopPFR+svQAgEG77dc7tbD1iHHbmmPA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZAf-0000ZT-Qu
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:29 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRZAf-0005vU-Ps
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 10:33:29 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] golang/xenlight: add DeviceUsbdevAdd/Remove wrappers
Message-Id: <E1jRZAf-0005vU-Ps@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 10:33:29 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f9e707aa97b204229dde5125116364c9e410ef67
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Sun Apr 12 18:02:42 2020 -0400
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 11:30:55 2020 +0100

    golang/xenlight: add DeviceUsbdevAdd/Remove wrappers
    
    Add DeviceUsbdevAdd and DeviceUsbdevRemove as wrappers for
    libxl_device_usbdev_add and libxl_device_usbdev_remove.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
---
 tools/golang/xenlight/xenlight.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index bc2e9de0e5..ff73c11889 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1113,3 +1113,37 @@ func (Ctx *Context) DevicePciRemove(domid Domid, pci *DevicePci) error {
 
 	return nil
 }
+
+// DeviceUsbdevAdd adds a USB device to a domain.
+func (Ctx *Context) DeviceUsbdevAdd(domid Domid, usbdev *DeviceUsbdev) error {
+	var cusbdev C.libxl_device_usbdev
+
+	if err := usbdev.toC(&cusbdev); err != nil {
+		return err
+	}
+	defer C.libxl_device_usbdev_dispose(&cusbdev)
+
+	ret := C.libxl_device_usbdev_add(Ctx.ctx, C.uint32_t(domid), &cusbdev, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
+
+// DeviceUsbdevRemove removes a USB device from a domain.
+func (Ctx *Context) DeviceUsbdevRemove(domid Domid, usbdev *DeviceUsbdev) error {
+	var cusbdev C.libxl_device_usbdev
+
+	if err := usbdev.toC(&cusbdev); err != nil {
+		return err
+	}
+	defer C.libxl_device_usbdev_dispose(&cusbdev)
+
+	ret := C.libxl_device_usbdev_remove(Ctx.ctx, C.uint32_t(domid), &cusbdev, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 15:11:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 15:11:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRdVM-0002iI-RB; Thu, 23 Apr 2020 15:11:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRdVL-0002iD-EO
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:07 +0000
X-Inumbo-ID: a6ff7288-8574-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a6ff7288-8574-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 15:11:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=4agSx5DyFEh3Po8/Kq9OKXJhNqziLa8BqIZ+75VdD8Q=; b=ay4RdjH9HyIbg+jgGcVojDAkIe
 +t7Pdaha6NDdZaEBCh3+u6CM2OtE2SF83yPRwN1M9NbP/6PTcrYkB1ErHFKdh2DsNMg34wfaKQN5J
 6xUX+XuIk++w+SF2ncVAqzo5r5ucVpAlg1hhdnB3ovLrVXVn22Q+CvIM1IatAkLgRJsY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRdVJ-0006Qf-6G
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRdVJ-0002rP-51
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] golang/xenlight: Don't try to marshall zero-length
 arrays in fromC
Message-Id: <E1jRdVJ-0002rP-51@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 15:11:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b70275d0d9fb626102a9521794f2bd75b4d420eb
Author:     George Dunlap <george.dunlap@citrix.com>
AuthorDate: Thu Dec 26 13:08:05 2019 +0000
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 16:00:11 2020 +0100

    golang/xenlight: Don't try to marshall zero-length arrays in fromC
    
    The current fromC array code will do the "magic" casting and
    martialling even when num_foo variable is 0.  Go crashes when doing
    the cast.
    
    Only do array marshalling if the number of elements is non-zero;
    otherwise, leave the target pointer empty (nil for Go slices, NULL for
    C arrays).
    
    Signed-off-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Nick Rosbrook <rosbrookn@ainfosec.com>
---
 tools/golang/xenlight/gengotypes.py  |  11 +-
 tools/golang/xenlight/helpers.gen.go | 440 ++++++++++++++++++++---------------
 2 files changed, 257 insertions(+), 194 deletions(-)

diff --git a/tools/golang/xenlight/gengotypes.py b/tools/golang/xenlight/gengotypes.py
index 50dada309b..e9ad92afa0 100644
--- a/tools/golang/xenlight/gengotypes.py
+++ b/tools/golang/xenlight/gengotypes.py
@@ -426,13 +426,12 @@ def xenlight_golang_array_from_C(ty = None):
     cname      = ty.name
     cslice     = 'c{}'.format(goname)
     clenvar    = ty.type.lenvar.name
-    golenvar   = xenlight_golang_fmt_name(clenvar,exported=False)
 
-    s += '{} := int(xc.{})\n'.format(golenvar, clenvar)
+    s += 'x.{} = nil\n'.format(goname)
+    s += 'if n := int(xc.{}); n > 0 {{\n'.format(clenvar)
     s += '{} := '.format(cslice)
-    s +='(*[1<<28]C.{})(unsafe.Pointer(xc.{}))[:{}:{}]\n'.format(ctypename, cname,
-                                                                golenvar, golenvar)
-    s += 'x.{} = make([]{}, {})\n'.format(goname, gotypename, golenvar)
+    s +='(*[1<<28]C.{})(unsafe.Pointer(xc.{}))[:n:n]\n'.format(ctypename, cname)
+    s += 'x.{} = make([]{}, n)\n'.format(goname, gotypename)
     s += 'for i, v := range {} {{\n'.format(cslice)
 
     is_enum = isinstance(ty.type.elem_type,idl.Enumeration)
@@ -442,7 +441,7 @@ def xenlight_golang_array_from_C(ty = None):
         s += 'if err := x.{}[i].fromC(&v); err != nil {{\n'.format(goname)
         s += 'return fmt.Errorf("converting field {}: %v", err) }}\n'.format(goname)
 
-    s += '}\n'
+    s += '}\n}\n'
 
     return s
 
diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/helpers.gen.go
index 344ce9a461..16e26d27f5 100644
--- a/tools/golang/xenlight/helpers.gen.go
+++ b/tools/golang/xenlight/helpers.gen.go
@@ -889,12 +889,14 @@ func NewVcpuSchedParams() (*VcpuSchedParams, error) {
 
 func (x *VcpuSchedParams) fromC(xc *C.libxl_vcpu_sched_params) error {
 	x.Sched = Scheduler(xc.sched)
-	numVcpus := int(xc.num_vcpus)
-	cVcpus := (*[1 << 28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:numVcpus:numVcpus]
-	x.Vcpus = make([]SchedParams, numVcpus)
-	for i, v := range cVcpus {
-		if err := x.Vcpus[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vcpus: %v", err)
+	x.Vcpus = nil
+	if n := int(xc.num_vcpus); n > 0 {
+		cVcpus := (*[1 << 28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:n:n]
+		x.Vcpus = make([]SchedParams, n)
+		for i, v := range cVcpus {
+			if err := x.Vcpus[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vcpus: %v", err)
+			}
 		}
 	}
 
@@ -991,11 +993,13 @@ func NewVnodeInfo() (*VnodeInfo, error) {
 
 func (x *VnodeInfo) fromC(xc *C.libxl_vnode_info) error {
 	x.Memkb = uint64(xc.memkb)
-	numDistances := int(xc.num_distances)
-	cDistances := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.distances))[:numDistances:numDistances]
-	x.Distances = make([]uint32, numDistances)
-	for i, v := range cDistances {
-		x.Distances[i] = uint32(v)
+	x.Distances = nil
+	if n := int(xc.num_distances); n > 0 {
+		cDistances := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.distances))[:n:n]
+		x.Distances = make([]uint32, n)
+		for i, v := range cDistances {
+			x.Distances[i] = uint32(v)
+		}
 	}
 	x.Pnode = uint32(xc.pnode)
 	if err := x.Vcpus.fromC(&xc.vcpus); err != nil {
@@ -1095,20 +1099,24 @@ func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
 	if err := x.Nodemap.fromC(&xc.nodemap); err != nil {
 		return fmt.Errorf("converting field Nodemap: %v", err)
 	}
-	numVcpuHardAffinity := int(xc.num_vcpu_hard_affinity)
-	cVcpuHardAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:numVcpuHardAffinity:numVcpuHardAffinity]
-	x.VcpuHardAffinity = make([]Bitmap, numVcpuHardAffinity)
-	for i, v := range cVcpuHardAffinity {
-		if err := x.VcpuHardAffinity[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
+	x.VcpuHardAffinity = nil
+	if n := int(xc.num_vcpu_hard_affinity); n > 0 {
+		cVcpuHardAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:n:n]
+		x.VcpuHardAffinity = make([]Bitmap, n)
+		for i, v := range cVcpuHardAffinity {
+			if err := x.VcpuHardAffinity[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
+			}
 		}
 	}
-	numVcpuSoftAffinity := int(xc.num_vcpu_soft_affinity)
-	cVcpuSoftAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:numVcpuSoftAffinity:numVcpuSoftAffinity]
-	x.VcpuSoftAffinity = make([]Bitmap, numVcpuSoftAffinity)
-	for i, v := range cVcpuSoftAffinity {
-		if err := x.VcpuSoftAffinity[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
+	x.VcpuSoftAffinity = nil
+	if n := int(xc.num_vcpu_soft_affinity); n > 0 {
+		cVcpuSoftAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:n:n]
+		x.VcpuSoftAffinity = make([]Bitmap, n)
+		for i, v := range cVcpuSoftAffinity {
+			if err := x.VcpuSoftAffinity[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
+			}
 		}
 	}
 	if err := x.NumaPlacement.fromC(&xc.numa_placement); err != nil {
@@ -1133,12 +1141,14 @@ func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
 		return fmt.Errorf("converting field Cpuid: %v", err)
 	}
 	x.BlkdevStart = C.GoString(xc.blkdev_start)
-	numVnumaNodes := int(xc.num_vnuma_nodes)
-	cVnumaNodes := (*[1 << 28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:numVnumaNodes:numVnumaNodes]
-	x.VnumaNodes = make([]VnodeInfo, numVnumaNodes)
-	for i, v := range cVnumaNodes {
-		if err := x.VnumaNodes[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field VnumaNodes: %v", err)
+	x.VnumaNodes = nil
+	if n := int(xc.num_vnuma_nodes); n > 0 {
+		cVnumaNodes := (*[1 << 28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:n:n]
+		x.VnumaNodes = make([]VnodeInfo, n)
+		for i, v := range cVnumaNodes {
+			if err := x.VnumaNodes[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field VnumaNodes: %v", err)
+			}
 		}
 	}
 	x.MaxGrantFrames = uint32(xc.max_grant_frames)
@@ -1163,26 +1173,32 @@ func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
 	if err := x.SchedParams.fromC(&xc.sched_params); err != nil {
 		return fmt.Errorf("converting field SchedParams: %v", err)
 	}
-	numIoports := int(xc.num_ioports)
-	cIoports := (*[1 << 28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:numIoports:numIoports]
-	x.Ioports = make([]IoportRange, numIoports)
-	for i, v := range cIoports {
-		if err := x.Ioports[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Ioports: %v", err)
+	x.Ioports = nil
+	if n := int(xc.num_ioports); n > 0 {
+		cIoports := (*[1 << 28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:n:n]
+		x.Ioports = make([]IoportRange, n)
+		for i, v := range cIoports {
+			if err := x.Ioports[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Ioports: %v", err)
+			}
 		}
 	}
-	numIrqs := int(xc.num_irqs)
-	cIrqs := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:numIrqs:numIrqs]
-	x.Irqs = make([]uint32, numIrqs)
-	for i, v := range cIrqs {
-		x.Irqs[i] = uint32(v)
+	x.Irqs = nil
+	if n := int(xc.num_irqs); n > 0 {
+		cIrqs := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:n:n]
+		x.Irqs = make([]uint32, n)
+		for i, v := range cIrqs {
+			x.Irqs[i] = uint32(v)
+		}
 	}
-	numIomem := int(xc.num_iomem)
-	cIomem := (*[1 << 28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:numIomem:numIomem]
-	x.Iomem = make([]IomemRange, numIomem)
-	for i, v := range cIomem {
-		if err := x.Iomem[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Iomem: %v", err)
+	x.Iomem = nil
+	if n := int(xc.num_iomem); n > 0 {
+		cIomem := (*[1 << 28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:n:n]
+		x.Iomem = make([]IomemRange, n)
+		for i, v := range cIomem {
+			if err := x.Iomem[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Iomem: %v", err)
+			}
 		}
 	}
 	if err := x.ClaimMode.fromC(&xc.claim_mode); err != nil {
@@ -2791,12 +2807,14 @@ func (x *DeviceVdispl) fromC(xc *C.libxl_device_vdispl) error {
 	x.BackendDomname = C.GoString(xc.backend_domname)
 	x.Devid = Devid(xc.devid)
 	x.BeAlloc = bool(xc.be_alloc)
-	numConnectors := int(xc.num_connectors)
-	cConnectors := (*[1 << 28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:numConnectors:numConnectors]
-	x.Connectors = make([]ConnectorParam, numConnectors)
-	for i, v := range cConnectors {
-		if err := x.Connectors[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Connectors: %v", err)
+	x.Connectors = nil
+	if n := int(xc.num_connectors); n > 0 {
+		cConnectors := (*[1 << 28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:n:n]
+		x.Connectors = make([]ConnectorParam, n)
+		for i, v := range cConnectors {
+			if err := x.Connectors[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Connectors: %v", err)
+			}
 		}
 	}
 
@@ -2848,17 +2866,21 @@ func NewVsndParams() (*VsndParams, error) {
 }
 
 func (x *VsndParams) fromC(xc *C.libxl_vsnd_params) error {
-	numSampleRates := int(xc.num_sample_rates)
-	cSampleRates := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:numSampleRates:numSampleRates]
-	x.SampleRates = make([]uint32, numSampleRates)
-	for i, v := range cSampleRates {
-		x.SampleRates[i] = uint32(v)
-	}
-	numSampleFormats := int(xc.num_sample_formats)
-	cSampleFormats := (*[1 << 28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:numSampleFormats:numSampleFormats]
-	x.SampleFormats = make([]VsndPcmFormat, numSampleFormats)
-	for i, v := range cSampleFormats {
-		x.SampleFormats[i] = VsndPcmFormat(v)
+	x.SampleRates = nil
+	if n := int(xc.num_sample_rates); n > 0 {
+		cSampleRates := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:n:n]
+		x.SampleRates = make([]uint32, n)
+		for i, v := range cSampleRates {
+			x.SampleRates[i] = uint32(v)
+		}
+	}
+	x.SampleFormats = nil
+	if n := int(xc.num_sample_formats); n > 0 {
+		cSampleFormats := (*[1 << 28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:n:n]
+		x.SampleFormats = make([]VsndPcmFormat, n)
+		for i, v := range cSampleFormats {
+			x.SampleFormats[i] = VsndPcmFormat(v)
+		}
 	}
 	x.ChannelsMin = uint32(xc.channels_min)
 	x.ChannelsMax = uint32(xc.channels_max)
@@ -2964,12 +2986,14 @@ func (x *VsndPcm) fromC(xc *C.libxl_vsnd_pcm) error {
 	if err := x.Params.fromC(&xc.params); err != nil {
 		return fmt.Errorf("converting field Params: %v", err)
 	}
-	numVsndStreams := int(xc.num_vsnd_streams)
-	cStreams := (*[1 << 28]C.libxl_vsnd_stream)(unsafe.Pointer(xc.streams))[:numVsndStreams:numVsndStreams]
-	x.Streams = make([]VsndStream, numVsndStreams)
-	for i, v := range cStreams {
-		if err := x.Streams[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Streams: %v", err)
+	x.Streams = nil
+	if n := int(xc.num_vsnd_streams); n > 0 {
+		cStreams := (*[1 << 28]C.libxl_vsnd_stream)(unsafe.Pointer(xc.streams))[:n:n]
+		x.Streams = make([]VsndStream, n)
+		for i, v := range cStreams {
+			if err := x.Streams[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Streams: %v", err)
+			}
 		}
 	}
 
@@ -3029,12 +3053,14 @@ func (x *DeviceVsnd) fromC(xc *C.libxl_device_vsnd) error {
 	if err := x.Params.fromC(&xc.params); err != nil {
 		return fmt.Errorf("converting field Params: %v", err)
 	}
-	numVsndPcms := int(xc.num_vsnd_pcms)
-	cPcms := (*[1 << 28]C.libxl_vsnd_pcm)(unsafe.Pointer(xc.pcms))[:numVsndPcms:numVsndPcms]
-	x.Pcms = make([]VsndPcm, numVsndPcms)
-	for i, v := range cPcms {
-		if err := x.Pcms[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Pcms: %v", err)
+	x.Pcms = nil
+	if n := int(xc.num_vsnd_pcms); n > 0 {
+		cPcms := (*[1 << 28]C.libxl_vsnd_pcm)(unsafe.Pointer(xc.pcms))[:n:n]
+		x.Pcms = make([]VsndPcm, n)
+		for i, v := range cPcms {
+			if err := x.Pcms[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Pcms: %v", err)
+			}
 		}
 	}
 
@@ -3100,124 +3126,154 @@ func (x *DomainConfig) fromC(xc *C.libxl_domain_config) error {
 	if err := x.BInfo.fromC(&xc.b_info); err != nil {
 		return fmt.Errorf("converting field BInfo: %v", err)
 	}
-	numDisks := int(xc.num_disks)
-	cDisks := (*[1 << 28]C.libxl_device_disk)(unsafe.Pointer(xc.disks))[:numDisks:numDisks]
-	x.Disks = make([]DeviceDisk, numDisks)
-	for i, v := range cDisks {
-		if err := x.Disks[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Disks: %v", err)
+	x.Disks = nil
+	if n := int(xc.num_disks); n > 0 {
+		cDisks := (*[1 << 28]C.libxl_device_disk)(unsafe.Pointer(xc.disks))[:n:n]
+		x.Disks = make([]DeviceDisk, n)
+		for i, v := range cDisks {
+			if err := x.Disks[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Disks: %v", err)
+			}
 		}
 	}
-	numNics := int(xc.num_nics)
-	cNics := (*[1 << 28]C.libxl_device_nic)(unsafe.Pointer(xc.nics))[:numNics:numNics]
-	x.Nics = make([]DeviceNic, numNics)
-	for i, v := range cNics {
-		if err := x.Nics[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Nics: %v", err)
+	x.Nics = nil
+	if n := int(xc.num_nics); n > 0 {
+		cNics := (*[1 << 28]C.libxl_device_nic)(unsafe.Pointer(xc.nics))[:n:n]
+		x.Nics = make([]DeviceNic, n)
+		for i, v := range cNics {
+			if err := x.Nics[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Nics: %v", err)
+			}
 		}
 	}
-	numPcidevs := int(xc.num_pcidevs)
-	cPcidevs := (*[1 << 28]C.libxl_device_pci)(unsafe.Pointer(xc.pcidevs))[:numPcidevs:numPcidevs]
-	x.Pcidevs = make([]DevicePci, numPcidevs)
-	for i, v := range cPcidevs {
-		if err := x.Pcidevs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Pcidevs: %v", err)
+	x.Pcidevs = nil
+	if n := int(xc.num_pcidevs); n > 0 {
+		cPcidevs := (*[1 << 28]C.libxl_device_pci)(unsafe.Pointer(xc.pcidevs))[:n:n]
+		x.Pcidevs = make([]DevicePci, n)
+		for i, v := range cPcidevs {
+			if err := x.Pcidevs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Pcidevs: %v", err)
+			}
 		}
 	}
-	numRdms := int(xc.num_rdms)
-	cRdms := (*[1 << 28]C.libxl_device_rdm)(unsafe.Pointer(xc.rdms))[:numRdms:numRdms]
-	x.Rdms = make([]DeviceRdm, numRdms)
-	for i, v := range cRdms {
-		if err := x.Rdms[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Rdms: %v", err)
+	x.Rdms = nil
+	if n := int(xc.num_rdms); n > 0 {
+		cRdms := (*[1 << 28]C.libxl_device_rdm)(unsafe.Pointer(xc.rdms))[:n:n]
+		x.Rdms = make([]DeviceRdm, n)
+		for i, v := range cRdms {
+			if err := x.Rdms[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Rdms: %v", err)
+			}
 		}
 	}
-	numDtdevs := int(xc.num_dtdevs)
-	cDtdevs := (*[1 << 28]C.libxl_device_dtdev)(unsafe.Pointer(xc.dtdevs))[:numDtdevs:numDtdevs]
-	x.Dtdevs = make([]DeviceDtdev, numDtdevs)
-	for i, v := range cDtdevs {
-		if err := x.Dtdevs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Dtdevs: %v", err)
+	x.Dtdevs = nil
+	if n := int(xc.num_dtdevs); n > 0 {
+		cDtdevs := (*[1 << 28]C.libxl_device_dtdev)(unsafe.Pointer(xc.dtdevs))[:n:n]
+		x.Dtdevs = make([]DeviceDtdev, n)
+		for i, v := range cDtdevs {
+			if err := x.Dtdevs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Dtdevs: %v", err)
+			}
 		}
 	}
-	numVfbs := int(xc.num_vfbs)
-	cVfbs := (*[1 << 28]C.libxl_device_vfb)(unsafe.Pointer(xc.vfbs))[:numVfbs:numVfbs]
-	x.Vfbs = make([]DeviceVfb, numVfbs)
-	for i, v := range cVfbs {
-		if err := x.Vfbs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vfbs: %v", err)
+	x.Vfbs = nil
+	if n := int(xc.num_vfbs); n > 0 {
+		cVfbs := (*[1 << 28]C.libxl_device_vfb)(unsafe.Pointer(xc.vfbs))[:n:n]
+		x.Vfbs = make([]DeviceVfb, n)
+		for i, v := range cVfbs {
+			if err := x.Vfbs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vfbs: %v", err)
+			}
 		}
 	}
-	numVkbs := int(xc.num_vkbs)
-	cVkbs := (*[1 << 28]C.libxl_device_vkb)(unsafe.Pointer(xc.vkbs))[:numVkbs:numVkbs]
-	x.Vkbs = make([]DeviceVkb, numVkbs)
-	for i, v := range cVkbs {
-		if err := x.Vkbs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vkbs: %v", err)
+	x.Vkbs = nil
+	if n := int(xc.num_vkbs); n > 0 {
+		cVkbs := (*[1 << 28]C.libxl_device_vkb)(unsafe.Pointer(xc.vkbs))[:n:n]
+		x.Vkbs = make([]DeviceVkb, n)
+		for i, v := range cVkbs {
+			if err := x.Vkbs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vkbs: %v", err)
+			}
 		}
 	}
-	numVtpms := int(xc.num_vtpms)
-	cVtpms := (*[1 << 28]C.libxl_device_vtpm)(unsafe.Pointer(xc.vtpms))[:numVtpms:numVtpms]
-	x.Vtpms = make([]DeviceVtpm, numVtpms)
-	for i, v := range cVtpms {
-		if err := x.Vtpms[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vtpms: %v", err)
+	x.Vtpms = nil
+	if n := int(xc.num_vtpms); n > 0 {
+		cVtpms := (*[1 << 28]C.libxl_device_vtpm)(unsafe.Pointer(xc.vtpms))[:n:n]
+		x.Vtpms = make([]DeviceVtpm, n)
+		for i, v := range cVtpms {
+			if err := x.Vtpms[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vtpms: %v", err)
+			}
 		}
 	}
-	numP9S := int(xc.num_p9s)
-	cP9S := (*[1 << 28]C.libxl_device_p9)(unsafe.Pointer(xc.p9s))[:numP9S:numP9S]
-	x.P9S = make([]DeviceP9, numP9S)
-	for i, v := range cP9S {
-		if err := x.P9S[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field P9S: %v", err)
+	x.P9S = nil
+	if n := int(xc.num_p9s); n > 0 {
+		cP9S := (*[1 << 28]C.libxl_device_p9)(unsafe.Pointer(xc.p9s))[:n:n]
+		x.P9S = make([]DeviceP9, n)
+		for i, v := range cP9S {
+			if err := x.P9S[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field P9S: %v", err)
+			}
 		}
 	}
-	numPvcallsifs := int(xc.num_pvcallsifs)
-	cPvcallsifs := (*[1 << 28]C.libxl_device_pvcallsif)(unsafe.Pointer(xc.pvcallsifs))[:numPvcallsifs:numPvcallsifs]
-	x.Pvcallsifs = make([]DevicePvcallsif, numPvcallsifs)
-	for i, v := range cPvcallsifs {
-		if err := x.Pvcallsifs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Pvcallsifs: %v", err)
+	x.Pvcallsifs = nil
+	if n := int(xc.num_pvcallsifs); n > 0 {
+		cPvcallsifs := (*[1 << 28]C.libxl_device_pvcallsif)(unsafe.Pointer(xc.pvcallsifs))[:n:n]
+		x.Pvcallsifs = make([]DevicePvcallsif, n)
+		for i, v := range cPvcallsifs {
+			if err := x.Pvcallsifs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Pvcallsifs: %v", err)
+			}
 		}
 	}
-	numVdispls := int(xc.num_vdispls)
-	cVdispls := (*[1 << 28]C.libxl_device_vdispl)(unsafe.Pointer(xc.vdispls))[:numVdispls:numVdispls]
-	x.Vdispls = make([]DeviceVdispl, numVdispls)
-	for i, v := range cVdispls {
-		if err := x.Vdispls[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vdispls: %v", err)
+	x.Vdispls = nil
+	if n := int(xc.num_vdispls); n > 0 {
+		cVdispls := (*[1 << 28]C.libxl_device_vdispl)(unsafe.Pointer(xc.vdispls))[:n:n]
+		x.Vdispls = make([]DeviceVdispl, n)
+		for i, v := range cVdispls {
+			if err := x.Vdispls[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vdispls: %v", err)
+			}
 		}
 	}
-	numVsnds := int(xc.num_vsnds)
-	cVsnds := (*[1 << 28]C.libxl_device_vsnd)(unsafe.Pointer(xc.vsnds))[:numVsnds:numVsnds]
-	x.Vsnds = make([]DeviceVsnd, numVsnds)
-	for i, v := range cVsnds {
-		if err := x.Vsnds[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vsnds: %v", err)
+	x.Vsnds = nil
+	if n := int(xc.num_vsnds); n > 0 {
+		cVsnds := (*[1 << 28]C.libxl_device_vsnd)(unsafe.Pointer(xc.vsnds))[:n:n]
+		x.Vsnds = make([]DeviceVsnd, n)
+		for i, v := range cVsnds {
+			if err := x.Vsnds[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vsnds: %v", err)
+			}
 		}
 	}
-	numChannels := int(xc.num_channels)
-	cChannels := (*[1 << 28]C.libxl_device_channel)(unsafe.Pointer(xc.channels))[:numChannels:numChannels]
-	x.Channels = make([]DeviceChannel, numChannels)
-	for i, v := range cChannels {
-		if err := x.Channels[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Channels: %v", err)
+	x.Channels = nil
+	if n := int(xc.num_channels); n > 0 {
+		cChannels := (*[1 << 28]C.libxl_device_channel)(unsafe.Pointer(xc.channels))[:n:n]
+		x.Channels = make([]DeviceChannel, n)
+		for i, v := range cChannels {
+			if err := x.Channels[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Channels: %v", err)
+			}
 		}
 	}
-	numUsbctrls := int(xc.num_usbctrls)
-	cUsbctrls := (*[1 << 28]C.libxl_device_usbctrl)(unsafe.Pointer(xc.usbctrls))[:numUsbctrls:numUsbctrls]
-	x.Usbctrls = make([]DeviceUsbctrl, numUsbctrls)
-	for i, v := range cUsbctrls {
-		if err := x.Usbctrls[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Usbctrls: %v", err)
+	x.Usbctrls = nil
+	if n := int(xc.num_usbctrls); n > 0 {
+		cUsbctrls := (*[1 << 28]C.libxl_device_usbctrl)(unsafe.Pointer(xc.usbctrls))[:n:n]
+		x.Usbctrls = make([]DeviceUsbctrl, n)
+		for i, v := range cUsbctrls {
+			if err := x.Usbctrls[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Usbctrls: %v", err)
+			}
 		}
 	}
-	numUsbdevs := int(xc.num_usbdevs)
-	cUsbdevs := (*[1 << 28]C.libxl_device_usbdev)(unsafe.Pointer(xc.usbdevs))[:numUsbdevs:numUsbdevs]
-	x.Usbdevs = make([]DeviceUsbdev, numUsbdevs)
-	for i, v := range cUsbdevs {
-		if err := x.Usbdevs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Usbdevs: %v", err)
+	x.Usbdevs = nil
+	if n := int(xc.num_usbdevs); n > 0 {
+		cUsbdevs := (*[1 << 28]C.libxl_device_usbdev)(unsafe.Pointer(xc.usbdevs))[:n:n]
+		x.Usbdevs = make([]DeviceUsbdev, n)
+		for i, v := range cUsbdevs {
+			if err := x.Usbdevs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Usbdevs: %v", err)
+			}
 		}
 	}
 	x.OnPoweroff = ActionOnShutdown(xc.on_poweroff)
@@ -3837,12 +3893,14 @@ func (x *Vdisplinfo) fromC(xc *C.libxl_vdisplinfo) error {
 	x.Devid = Devid(xc.devid)
 	x.State = int(xc.state)
 	x.BeAlloc = bool(xc.be_alloc)
-	numConnectors := int(xc.num_connectors)
-	cConnectors := (*[1 << 28]C.libxl_connectorinfo)(unsafe.Pointer(xc.connectors))[:numConnectors:numConnectors]
-	x.Connectors = make([]Connectorinfo, numConnectors)
-	for i, v := range cConnectors {
-		if err := x.Connectors[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Connectors: %v", err)
+	x.Connectors = nil
+	if n := int(xc.num_connectors); n > 0 {
+		cConnectors := (*[1 << 28]C.libxl_connectorinfo)(unsafe.Pointer(xc.connectors))[:n:n]
+		x.Connectors = make([]Connectorinfo, n)
+		for i, v := range cConnectors {
+			if err := x.Connectors[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Connectors: %v", err)
+			}
 		}
 	}
 
@@ -3936,12 +3994,14 @@ func NewPcminfo() (*Pcminfo, error) {
 }
 
 func (x *Pcminfo) fromC(xc *C.libxl_pcminfo) error {
-	numVsndStreams := int(xc.num_vsnd_streams)
-	cStreams := (*[1 << 28]C.libxl_streaminfo)(unsafe.Pointer(xc.streams))[:numVsndStreams:numVsndStreams]
-	x.Streams = make([]Streaminfo, numVsndStreams)
-	for i, v := range cStreams {
-		if err := x.Streams[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Streams: %v", err)
+	x.Streams = nil
+	if n := int(xc.num_vsnd_streams); n > 0 {
+		cStreams := (*[1 << 28]C.libxl_streaminfo)(unsafe.Pointer(xc.streams))[:n:n]
+		x.Streams = make([]Streaminfo, n)
+		for i, v := range cStreams {
+			if err := x.Streams[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Streams: %v", err)
+			}
 		}
 	}
 
@@ -3993,12 +4053,14 @@ func (x *Vsndinfo) fromC(xc *C.libxl_vsndinfo) error {
 	x.FrontendId = uint32(xc.frontend_id)
 	x.Devid = Devid(xc.devid)
 	x.State = int(xc.state)
-	numVsndPcms := int(xc.num_vsnd_pcms)
-	cPcms := (*[1 << 28]C.libxl_pcminfo)(unsafe.Pointer(xc.pcms))[:numVsndPcms:numVsndPcms]
-	x.Pcms = make([]Pcminfo, numVsndPcms)
-	for i, v := range cPcms {
-		if err := x.Pcms[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Pcms: %v", err)
+	x.Pcms = nil
+	if n := int(xc.num_vsnd_pcms); n > 0 {
+		cPcms := (*[1 << 28]C.libxl_pcminfo)(unsafe.Pointer(xc.pcms))[:n:n]
+		x.Pcms = make([]Pcminfo, n)
+		for i, v := range cPcms {
+			if err := x.Pcms[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Pcms: %v", err)
+			}
 		}
 	}
 
@@ -4109,11 +4171,13 @@ func NewNumainfo() (*Numainfo, error) {
 func (x *Numainfo) fromC(xc *C.libxl_numainfo) error {
 	x.Size = uint64(xc.size)
 	x.Free = uint64(xc.free)
-	numDists := int(xc.num_dists)
-	cDists := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.dists))[:numDists:numDists]
-	x.Dists = make([]uint32, numDists)
-	for i, v := range cDists {
-		x.Dists[i] = uint32(v)
+	x.Dists = nil
+	if n := int(xc.num_dists); n > 0 {
+		cDists := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.dists))[:n:n]
+		x.Dists = make([]uint32, n)
+		for i, v := range cDists {
+			x.Dists[i] = uint32(v)
+		}
 	}
 
 	return nil
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 15:11:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 15:11:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRdVU-0002iw-Sm; Thu, 23 Apr 2020 15:11:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRdVU-0002ir-C6
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:16 +0000
X-Inumbo-ID: ad2ac6bc-8574-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ad2ac6bc-8574-11ea-b4f4-bc764e2007e4;
 Thu, 23 Apr 2020 15:11:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=QdV6PtEdIpzaSoELvj0G7oq1s/LB1L54Uim3L8V01VI=; b=h5fLDws6qARPssT3cuPrzMV5hf
 Bd5PI+HT5gKWFhnGCDywbag9En/Go+eS6Pfx05UZRKFS9kmhZHszCZcEagWpDRowOCBkXPnZZYmvn
 Puy7Ti+2QMGcD/IgHTam0V8Fjj9TQLM5670YcoD7yD7q2yn7QGrA14Jx4bVPbnYyAEUw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRdVT-0006Qm-Gp
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRdVT-0002se-Ds
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] golang/xenlight: Notify xenlight of SIGCHLD
Message-Id: <E1jRdVT-0002se-Ds@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 15:11:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a73964c18e25ec451d5d0fd89e21702817f6b3dd
Author:     George Dunlap <george.dunlap@citrix.com>
AuthorDate: Thu Dec 26 17:35:27 2019 +0000
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 16:00:13 2020 +0100

    golang/xenlight: Notify xenlight of SIGCHLD
    
    libxl forks external processes and waits for them to complete; it
    therefore needs to be notified when children exit.
    
    In absence of instructions to the contrary, libxl sets up its own
    SIGCHLD handlers.
    
    Golang always unmasks and handles SIGCHLD itself.  libxl thankfully
    notices this and throws an assert() rather than clobbering SIGCHLD
    handlers.
    
    Tell libxl that we'll be responsible for getting SIGCHLD notifications
    to it.  Arrange for a channel in the context to receive notifications
    on SIGCHLD, and set up a goroutine that will pass these on to libxl.
    
    NB that every libxl context needs a notification; so multiple contexts
    will each spin up their own goroutine when opening a context, and shut
    it down on close.
    
    libxl also wants to hold on to a const pointer to
    xenlight_childproc_hooks rather than do a copy; so make a global
    structure in C space.  Make it `static const`, just for extra safety;
    this requires making a function in the C space to pass it to libxl.
    
    While here, add a few comments to make the context set-up a bit easier
    to follow.
    
    Signed-off-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Nick Rosbrook <rosbrookn@ainfosec.com>
---
 tools/golang/xenlight/xenlight.go | 70 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 68 insertions(+), 2 deletions(-)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index ff73c11889..20f6542f6b 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -17,9 +17,17 @@
 package xenlight
 
 /*
+
 #cgo LDFLAGS: -lxenlight -lyajl -lxentoollog
 #include <stdlib.h>
 #include <libxl.h>
+
+static const libxl_childproc_hooks childproc_hooks = { .chldowner = libxl_sigchld_owner_mainloop };
+
+void xenlight_set_chldproc(libxl_ctx *ctx) {
+	libxl_childproc_setmode(ctx, &childproc_hooks, NULL);
+}
+
 */
 import "C"
 
@@ -33,6 +41,9 @@ import "C"
 
 import (
 	"fmt"
+	"os"
+	"os/signal"
+	"syscall"
 	"unsafe"
 )
 
@@ -74,8 +85,37 @@ func (e Error) Error() string {
 
 // Context represents a libxl_ctx.
 type Context struct {
-	ctx    *C.libxl_ctx
-	logger *C.xentoollog_logger_stdiostream
+	ctx         *C.libxl_ctx
+	logger      *C.xentoollog_logger_stdiostream
+	sigchld     chan os.Signal
+	sigchldDone chan struct{}
+}
+
+// Golang always unmasks SIGCHLD, and internally has ways of
+// distributing SIGCHLD to multiple recipients.  libxl has provision
+// for this model: just tell it when a SIGCHLD happened, and it will
+// look after its own processes.
+//
+// This should "play nicely" with other users of SIGCHLD as long as
+// they don't reap libxl's processes.
+//
+// Every context needs to be notified on each SIGCHLD; so spin up a
+// new goroutine for each context.  If there are a large number of
+// contexts, this means each context will be woken up looking through
+// its own list of children.
+//
+// The alternate would be to register a fork callback, such that the
+// xenlight package can make a single list of all children, and only
+// notify the specific libxl context(s) that have children woken.  But
+// it's not clear to me this will be much more work than having the
+// xenlight go library do the same thing; doing it in separate go
+// threads has the potential to do it in parallel.  Leave that as an
+// optimization for later if it turns out to be a bottleneck.
+func sigchldHandler(ctx *Context) {
+	for _ = range ctx.sigchld {
+		C.libxl_childproc_sigchld_occurred(ctx.ctx)
+	}
+	close(ctx.sigchldDone)
 }
 
 // NewContext returns a new Context.
@@ -89,19 +129,45 @@ func NewContext() (ctx *Context, err error) {
 		}
 	}()
 
+	// Create a logger
 	ctx.logger = C.xtl_createlogger_stdiostream(C.stderr, C.XTL_ERROR, 0)
 
+	// Allocate a context
 	ret := C.libxl_ctx_alloc(&ctx.ctx, C.LIBXL_VERSION, 0,
 		(*C.xentoollog_logger)(unsafe.Pointer(ctx.logger)))
 	if ret != 0 {
 		return ctx, Error(ret)
 	}
 
+	// Tell libxl that we'll be dealing with SIGCHLD...
+	C.xenlight_set_chldproc(ctx.ctx)
+
+	// ...and arrange to keep that promise.
+	ctx.sigchld = make(chan os.Signal, 2)
+	ctx.sigchldDone = make(chan struct{}, 1)
+	signal.Notify(ctx.sigchld, syscall.SIGCHLD)
+
+	// This goroutine will run until the ctx.sigchld is closed in
+	// ctx.Close(); at which point it will close ctx.sigchldDone.
+	go sigchldHandler(ctx)
+
 	return ctx, nil
 }
 
 // Close closes the Context.
 func (ctx *Context) Close() error {
+	// Tell our SIGCHLD notifier to shut down, and wait for it to exit
+	// before we free the context.
+	if ctx.sigchld != nil {
+		signal.Stop(ctx.sigchld)
+		close(ctx.sigchld)
+
+		<-ctx.sigchldDone
+
+		ctx.sigchld = nil
+		ctx.sigchldDone = nil
+	}
+
 	if ctx.ctx != nil {
 		ret := C.libxl_ctx_free(ctx.ctx)
 		if ret != 0 {
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 23 15:11:28 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 23 Apr 2020 15:11:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRdVf-0002kG-Vt; Thu, 23 Apr 2020 15:11:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NgY2=6H=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRdVf-0002kB-OS
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:27 +0000
X-Inumbo-ID: b2c2a195-8574-11ea-9394-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b2c2a195-8574-11ea-9394-12813bfff9fa;
 Thu, 23 Apr 2020 15:11:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Ag/87jsIhzV1+MXRbz/SrlXATq7Vxont6rMo7XoHiFw=; b=I68QosnJ511cgnX2COxyor0Ko3
 +cRXUrA5TlP8c+7ORcZy6ZNUaLvNAZfEYOTN/ebRjJtObmhU/KgYLketPUp2lg92GTADRie2HJJ/N
 t44mpubYEbEJOMtTrZSqK/q+jwJIAGGrrHDs6JZu0L6OLtOpp23pGBSdPwhfw1k0iK8I=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRdVd-0006R2-VV
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRdVd-0002tX-Sk
 for xen-changelog@lists.xenproject.org; Thu, 23 Apr 2020 15:11:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] golang/xenlight: Implement DomainCreateNew
Message-Id: <E1jRdVd-0002tX-Sk@xenbits.xenproject.org>
Date: Thu, 23 Apr 2020 15:11:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit aa14feb6723d3bb15a884533ade1cd9732792145
Author:     George Dunlap <george.dunlap@citrix.com>
AuthorDate: Tue Dec 24 12:51:56 2019 +0000
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 16:00:15 2020 +0100

    golang/xenlight: Implement DomainCreateNew
    
    This implements the wrapper around libxl_domain_create_new().  With
    the previous changes, it's now possible to create a domain using the
    golang bindings (although not yet to unpause it or harvest it after it
    shuts down).
    
    Signed-off-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Nick Rosbrook <rosbrookn@ainfosec.com>
---
 tools/golang/xenlight/xenlight.go | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index 20f6542f6b..6b4f492550 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1213,3 +1213,21 @@ func (Ctx *Context) DeviceUsbdevRemove(domid Domid, usbdev *DeviceUsbdev) error
 
 	return nil
 }
+
+// DomainCreateNew creates a new domain.
+func (Ctx *Context) DomainCreateNew(config *DomainConfig) (Domid, error) {
+	var cdomid C.uint32_t
+	var cconfig C.libxl_domain_config
+	err := config.toC(&cconfig)
+	if err != nil {
+		return Domid(0), fmt.Errorf("converting domain config to C: %v", err)
+	}
+	defer C.libxl_domain_config_dispose(&cconfig)
+
+	ret := C.libxl_domain_create_new(Ctx.ctx, &cconfig, &cdomid, nil, nil)
+	if ret != 0 {
+		return Domid(0), Error(ret)
+	}
+
+	return Domid(cdomid), nil
+}
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 13:11:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 13:11:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRy6r-00069V-EL; Fri, 24 Apr 2020 13:11:13 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRy6r-00069Q-1n
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:13 +0000
X-Inumbo-ID: 110d6b18-862d-11ea-94a3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 110d6b18-862d-11ea-94a3-12813bfff9fa;
 Fri, 24 Apr 2020 13:11:10 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=dFYsN2swK+B0bT92WH5RpBTzE16f4DWxvVy6ErZkne8=; b=gnNShEVf3Zpx4zM3s6LvPHL/FP
 wsZ1ljpZoHT70kxJ62hhYOLrNtCb57PgPOGyROFfzubaRZN6Dh51ji3GR1Kn0/9YNsD0I2FQbfvNn
 o9QXuB4rTHaFmZl5ItYtm/OvqOuxSKgVdqIxAMMaqbl/zX+cYP66OlCAiFmeWUz+klmM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy6o-0000LJ-G9
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:10 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy6o-0005Nl-EO
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:10 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/build: have the root Makefile generates the CFLAGS
Message-Id: <E1jRy6o-0005Nl-EO@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 13:11:10 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2740d96efdd3009f8adb40aacdbcf05cfe8d1bbb
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Apr 24 14:57:10 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 14:57:10 2020 +0200

    xen/build: have the root Makefile generates the CFLAGS
    
    Instead of generating the CFLAGS in Rules.mk everytime we enter a new
    subdirectory, we are going to generate most of them a single time, and
    export the result in the environment so that Rules.mk can use it.  The
    only flags left to be generated are the ones that depend on the
    targets, but the variable $(c_flags) takes care of that.
    
    Arch specific CFLAGS are generated by a new file "arch/*/arch.mk"
    which is included by the root Makefile.
    
    We export the *FLAGS via the environment variables XEN_*FLAGS because
    Rules.mk still includes Config.mk and would add duplicated flags to
    CFLAGS.
    
    When running Rules.mk in the root directory (xen/), the variable
    `root-make-done' is set, so `need-config' will remain undef and so the
    root Makefile will not generate the cflags again.
    
    We can't use CFLAGS in subdirectories to add flags to particular
    targets, instead start to use CFLAGS-y. Idem for AFLAGS.
    So there are two different CFLAGS-y, the one in xen/Makefile (and
    arch.mk), and the one in subdirs that Rules.mk is going to use.
    We can't add to XEN_CFLAGS because it is exported, so making change to
    it might be propagated to subdirectory which isn't intended.
    
    Some style change are introduced in this patch:
        when LDFLAGS_DIRECT is included in LDFLAGS
        use of CFLAGS-$(CONFIG_INDIRECT_THUNK) instead of ifeq().
    
    The LTO change hasn't been tested properly, as LTO is marked as
    broken.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
---
 xen/Makefile               | 58 +++++++++++++++++++++++++++++
 xen/Rules.mk               | 73 +++++++++----------------------------
 xen/arch/arm/Makefile      | 10 ++---
 xen/arch/arm/Rules.mk      | 23 ------------
 xen/arch/arm/arch.mk       | 18 +++++++++
 xen/arch/arm/efi/Makefile  |  2 +-
 xen/arch/x86/Makefile      | 24 ++++++------
 xen/arch/x86/Rules.mk      | 91 +++-------------------------------------------
 xen/arch/x86/arch.mk       | 84 ++++++++++++++++++++++++++++++++++++++++++
 xen/arch/x86/efi/Makefile  |  2 +-
 xen/common/libelf/Makefile |  4 +-
 xen/common/libfdt/Makefile |  4 +-
 xen/include/Makefile       |  2 +-
 xen/xsm/flask/Makefile     |  2 +-
 xen/xsm/flask/ss/Makefile  |  2 +-
 15 files changed, 210 insertions(+), 189 deletions(-)

diff --git a/xen/Makefile b/xen/Makefile
index 643c689658..2a689b26a2 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -118,6 +118,64 @@ $(KCONFIG_CONFIG):
 include/config/%.conf include/config/%.conf.cmd: $(KCONFIG_CONFIG)
 	$(MAKE) $(kconfig) syncconfig
 
+ifeq ($(CONFIG_DEBUG),y)
+CFLAGS += -O1
+else
+CFLAGS += -O2
+endif
+
+ifeq ($(CONFIG_FRAME_POINTER),y)
+CFLAGS += -fno-omit-frame-pointer
+else
+CFLAGS += -fomit-frame-pointer
+endif
+
+CFLAGS += -nostdinc -fno-builtin -fno-common
+CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
+$(call cc-option-add,CFLAGS,CC,-Wvla)
+CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
+CFLAGS-$(CONFIG_DEBUG_INFO) += -g
+
+ifneq ($(CONFIG_CC_IS_CLANG),y)
+# Clang doesn't understand this command line argument, and doesn't appear to
+# have a suitable alternative.  The resulting compiled binary does function,
+# but has an excessively large symbol table.
+CFLAGS += -Wa,--strip-local-absolute
+endif
+
+AFLAGS += -D__ASSEMBLY__
+
+CFLAGS += $(CFLAGS-y)
+# allow extra CFLAGS externally via EXTRA_CFLAGS_XEN_CORE
+CFLAGS += $(EXTRA_CFLAGS_XEN_CORE)
+
+# Most CFLAGS are safe for assembly files:
+#  -std=gnu{89,99} gets confused by #-prefixed end-of-line comments
+#  -flto makes no sense and annoys clang
+AFLAGS += $(filter-out -std=gnu% -flto,$(CFLAGS)) $(AFLAGS-y)
+
+# LDFLAGS are only passed directly to $(LD)
+LDFLAGS += $(LDFLAGS_DIRECT) $(LDFLAGS-y)
+
+ifeq ($(CONFIG_UBSAN),y)
+CFLAGS_UBSAN := -fsanitize=undefined
+else
+CFLAGS_UBSAN :=
+endif
+
+ifeq ($(CONFIG_LTO),y)
+CFLAGS += -flto
+LDFLAGS-$(CONFIG_CC_IS_CLANG) += -plugin LLVMgold.so
+endif
+
+include $(BASEDIR)/arch/$(TARGET_ARCH)/arch.mk
+
+# define new variables to avoid the ones defined in Config.mk
+export XEN_CFLAGS := $(CFLAGS)
+export XEN_AFLAGS := $(AFLAGS)
+export XEN_LDFLAGS := $(LDFLAGS)
+export CFLAGS_UBSAN
+
 endif # need-config
 
 .PHONY: build install uninstall clean distclean MAP
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 3408a35dbf..8e4b9e3a4a 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -38,59 +38,17 @@ ALL_OBJS-y               += $(BASEDIR)/arch/$(TARGET_ARCH)/built_in.o
 ALL_OBJS-$(CONFIG_CRYPTO)   += $(BASEDIR)/crypto/built_in.o
 
 # Initialise some variables
-CFLAGS_UBSAN :=
-
-ifeq ($(CONFIG_DEBUG),y)
-CFLAGS += -O1
-else
-CFLAGS += -O2
-endif
-
-ifeq ($(CONFIG_FRAME_POINTER),y)
-CFLAGS += -fno-omit-frame-pointer
-else
-CFLAGS += -fomit-frame-pointer
-endif
-
-CFLAGS += -nostdinc -fno-builtin -fno-common
-CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
-$(call cc-option-add,CFLAGS,CC,-Wvla)
-CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
-CFLAGS-$(CONFIG_DEBUG_INFO) += -g
-
-ifneq ($(CONFIG_CC_IS_CLANG),y)
-# Clang doesn't understand this command line argument, and doesn't appear to
-# have an suitable alternative.  The resulting compiled binary does function,
-# but has an excessively large symbol table.
-CFLAGS += -Wa,--strip-local-absolute
-endif
-
-AFLAGS += -D__ASSEMBLY__
+CFLAGS-y :=
+AFLAGS-y :=
 
 ALL_OBJS := $(ALL_OBJS-y)
 
-CFLAGS += $(CFLAGS-y)
-# allow extra CFLAGS externally via EXTRA_CFLAGS_XEN_CORE
-CFLAGS += $(EXTRA_CFLAGS_XEN_CORE)
-
-# Most CFLAGS are safe for assembly files:
-#  -std=gnu{89,99} gets confused by #-prefixed end-of-line comments
-#  -flto makes no sense and annoys clang
-AFLAGS += $(filter-out -std=gnu% -flto,$(CFLAGS))
-
-# LDFLAGS are only passed directly to $(LD)
-LDFLAGS += $(LDFLAGS_DIRECT)
-
-LDFLAGS += $(LDFLAGS-y)
-
 SPECIAL_DATA_SECTIONS := rodata $(foreach a,1 2 4 8 16, \
                                             $(foreach w,1 2 4, \
                                                         rodata.str$(w).$(a)) \
                                             rodata.cst$(a)) \
                          $(foreach r,rel rel.ro,data.$(r).local)
 
-include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk
-
 include Makefile
 
 define gendep
@@ -107,7 +65,7 @@ $(foreach o,$(filter-out %/,$(obj-y) $(obj-bin-y) $(extra-y)),$(eval $(call gend
 subdir-y := $(subdir-y) $(filter %/, $(obj-y))
 obj-y    := $(patsubst %/, %/built_in.o, $(obj-y))
 
-$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS += -DINIT_SECTIONS_ONLY
+$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS-y += -DINIT_SECTIONS_ONLY
 
 ifeq ($(CONFIG_COVERAGE),y)
 ifeq ($(CONFIG_CC_IS_CLANG),y)
@@ -115,19 +73,16 @@ ifeq ($(CONFIG_CC_IS_CLANG),y)
 else
     COV_FLAGS := -fprofile-arcs -ftest-coverage
 endif
-$(filter-out %.init.o $(nocov-y),$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS += $(COV_FLAGS)
+$(filter-out %.init.o $(nocov-y),$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS-y += $(COV_FLAGS)
 endif
 
 ifeq ($(CONFIG_UBSAN),y)
-CFLAGS_UBSAN += -fsanitize=undefined
 # Any -fno-sanitize= options need to come after any -fsanitize= options
 $(filter-out %.init.o $(noubsan-y),$(obj-y) $(obj-bin-y) $(extra-y)): \
-CFLAGS += $(filter-out -fno-%,$(CFLAGS_UBSAN)) $(filter -fno-%,$(CFLAGS_UBSAN))
+CFLAGS-y += $(filter-out -fno-%,$(CFLAGS_UBSAN)) $(filter -fno-%,$(CFLAGS_UBSAN))
 endif
 
 ifeq ($(CONFIG_LTO),y)
-CFLAGS += -flto
-LDFLAGS-$(CONFIG_CC_IS_CLANG) += -plugin LLVMgold.so
 # Would like to handle all object files as bitcode, but objects made from
 # pure asm are in a different format and have to be collected separately.
 # Mirror the directory tree, collecting them as built_in_bin.o.
@@ -140,10 +95,18 @@ obj-bin-y :=
 endif
 
 # Always build obj-bin files as binary even if they come from C source. 
-$(obj-bin-y): CFLAGS := $(filter-out -flto,$(CFLAGS))
+$(obj-bin-y): XEN_CFLAGS := $(filter-out -flto,$(XEN_CFLAGS))
+
+# Calculation of flags, first the generic flags, then the arch specific flags,
+# and last the flags modified for a target or a directory.
+
+c_flags = -MMD -MP -MF $(@D)/.$(@F).d $(XEN_CFLAGS) '-D__OBJECT_FILE__="$@"'
+a_flags = -MMD -MP -MF $(@D)/.$(@F).d $(XEN_AFLAGS)
+
+include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk
 
-c_flags = -MMD -MP -MF $(@D)/.$(@F).d $(CFLAGS) '-D__OBJECT_FILE__="$@"'
-a_flags = -MMD -MP -MF $(@D)/.$(@F).d $(AFLAGS)
+c_flags += $(CFLAGS-y)
+a_flags += $(CFLAGS-y) $(AFLAGS-y)
 
 built_in.o: $(obj-y) $(extra-y)
 ifeq ($(obj-y),)
@@ -152,7 +115,7 @@ else
 ifeq ($(CONFIG_LTO),y)
 	$(LD_LTO) -r -o $@ $(filter-out $(extra-y),$^)
 else
-	$(LD) $(LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
 endif
 endif
 
@@ -160,7 +123,7 @@ built_in_bin.o: $(obj-bin-y) $(extra-y)
 ifeq ($(obj-bin-y),)
 	$(CC) $(a_flags) -c -x assembler /dev/null -o $@
 else
-	$(LD) $(LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
 endif
 
 # Force execution of pattern rules (for which PHONY cannot be directly used).
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 913f6cdeed..9f1ab23357 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -95,24 +95,24 @@ prelink_lto.o: $(ALL_OBJS)
 
 # Link it with all the binary objects
 prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 else
 prelink.o: $(ALL_OBJS)
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 endif
 
 $(TARGET)-syms: prelink.o xen.lds
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o \
 	    $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
 	$(NM) -pa --format=sysv $(@D)/.$(@F).0 \
 		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).0.S
 	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o \
 	    $(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
 	$(NM) -pa --format=sysv $(@D)/.$(@F).1 \
 		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).1.S
 	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
 	    $(@D)/.$(@F).1.o -o $@
 	$(NM) -pa --format=sysv $(@D)/$(@F) \
 		| $(BASEDIR)/tools/symbols --xensyms --sysv --sort \
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index 3ad284aa71..e69de29bb2 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -1,23 +0,0 @@
-########################################
-# arm-specific definitions
-
-#
-# If you change any of these configuration options then you must
-# 'make clean' before rebuilding.
-#
-
-CFLAGS += -I$(BASEDIR)/include
-
-$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
-$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
-
-# Prevent floating-point variables from creeping into Xen.
-CFLAGS-$(CONFIG_ARM_32) += -msoft-float
-CFLAGS-$(CONFIG_ARM_32) += -mcpu=cortex-a15
-
-CFLAGS-$(CONFIG_ARM_64) += -mcpu=generic
-CFLAGS-$(CONFIG_ARM_64) += -mgeneral-regs-only # No fp registers etc
-
-ifneq ($(filter command line environment,$(origin CONFIG_EARLY_PRINTK)),)
-    $(error You must use 'make menuconfig' to enable/disable early printk now)
-endif
diff --git a/xen/arch/arm/arch.mk b/xen/arch/arm/arch.mk
new file mode 100644
index 0000000000..c8186f5828
--- /dev/null
+++ b/xen/arch/arm/arch.mk
@@ -0,0 +1,18 @@
+########################################
+# arm-specific definitions
+
+CFLAGS += -I$(BASEDIR)/include
+
+$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
+$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
+
+# Prevent floating-point variables from creeping into Xen.
+CFLAGS-$(CONFIG_ARM_32) += -msoft-float
+CFLAGS-$(CONFIG_ARM_32) += -mcpu=cortex-a15
+
+CFLAGS-$(CONFIG_ARM_64) += -mcpu=generic
+CFLAGS-$(CONFIG_ARM_64) += -mgeneral-regs-only # No fp registers etc
+
+ifneq ($(filter command line environment,$(origin CONFIG_EARLY_PRINTK)),)
+    $(error You must use 'make menuconfig' to enable/disable early printk now)
+endif
diff --git a/xen/arch/arm/efi/Makefile b/xen/arch/arm/efi/Makefile
index d34c916891..e3ff2c3f28 100644
--- a/xen/arch/arm/efi/Makefile
+++ b/xen/arch/arm/efi/Makefile
@@ -1,4 +1,4 @@
-CFLAGS += -fshort-wchar
+CFLAGS-y += -fshort-wchar
 
 obj-y +=  boot.init.o runtime.o
 obj-$(CONFIG_ACPI) +=  efi-dom0.init.o
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index 1405525105..a805e9982e 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -121,32 +121,32 @@ prelink-efi_lto.o: $(ALL_OBJS) efi/runtime.o efi/compat.o
 
 # Link it with all the binary objects
 prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 
 prelink-efi.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink-efi_lto.o efi/boot.init.o
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 else
 prelink.o: $(ALL_OBJS)
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 
 prelink-efi.o: $(ALL_OBJS) efi/boot.init.o efi/runtime.o efi/compat.o
-	$(LD) $(LDFLAGS) -r -o $@ $(filter-out %/efi/built_in.o,$^)
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $(filter-out %/efi/built_in.o,$^)
 endif
 
 $(TARGET)-syms: prelink.o xen.lds
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
 	    $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
 	$(NM) -pa --format=sysv $(@D)/.$(@F).0 \
 		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort \
 		>$(@D)/.$(@F).0.S
 	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
 	    $(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
 	$(NM) -pa --format=sysv $(@D)/.$(@F).1 \
 		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort $(syms-warn-dup-y) \
 		>$(@D)/.$(@F).1.S
 	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
 	    $(@D)/.$(@F).1.o -o $@
 	$(NM) -pa --format=sysv $(@D)/$(@F) \
 		| $(BASEDIR)/tools/symbols --xensyms --sysv --sort \
@@ -159,7 +159,7 @@ note.o: $(TARGET)-syms
 		--rename-section=.data=.note.gnu.build-id -S $@.bin $@
 	rm -f $@.bin
 
-EFI_LDFLAGS = $(patsubst -m%,-mi386pep,$(LDFLAGS)) --subsystem=10
+EFI_LDFLAGS = $(patsubst -m%,-mi386pep,$(XEN_LDFLAGS)) --subsystem=10
 EFI_LDFLAGS += --image-base=$(1) --stack=0,0 --heap=0,0 --strip-debug
 EFI_LDFLAGS += --section-alignment=0x200000 --file-alignment=0x20
 EFI_LDFLAGS += --major-image-version=$(XEN_VERSION)
@@ -168,7 +168,7 @@ EFI_LDFLAGS += --major-os-version=2 --minor-os-version=0
 EFI_LDFLAGS += --major-subsystem-version=2 --minor-subsystem-version=0
 
 # Check if the compiler supports the MS ABI.
-export XEN_BUILD_EFI := $(shell $(CC) $(CFLAGS) -c efi/check.c -o efi/check.o 2>/dev/null && echo y)
+export XEN_BUILD_EFI := $(shell $(CC) $(XEN_CFLAGS) -c efi/check.c -o efi/check.o 2>/dev/null && echo y)
 # Check if the linker supports PE.
 XEN_BUILD_PE := $(if $(XEN_BUILD_EFI),$(shell $(LD) -mi386pep --subsystem=10 -o efi/check.efi efi/check.o 2>/dev/null && echo y))
 CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI
@@ -178,7 +178,7 @@ $(TARGET).efi: ALT_BASE = 0x$(shell $(NM) efi/relocs-dummy.o | sed -n 's, A ALT_
 
 ifneq ($(build_id_linker),)
 ifeq ($(call ld-ver-build-id,$(LD) $(filter -m%,$(EFI_LDFLAGS))),y)
-CFLAGS += -DBUILD_ID_EFI
+CFLAGS-y += -DBUILD_ID_EFI
 EFI_LDFLAGS += $(build_id_linker)
 note_file := efi/buildid.o
 # NB: this must be the last input in the linker call, because inputs following
@@ -225,7 +225,7 @@ efi/boot.init.o efi/runtime.o efi/compat.o efi/buildid.o efi/relocs-dummy.o: ;
 asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c $(BASEDIR)/include/asm-x86/asm-macros.h
 	$(CC) $(filter-out -Wa$(comma)% -flto,$(c_flags)) -S -o $@ $<
 
-asm-macros.i: CFLAGS += -D__ASSEMBLY__ -P
+asm-macros.i: CFLAGS-y += -D__ASSEMBLY__ -P
 
 $(BASEDIR)/include/asm-x86/asm-macros.h: asm-macros.i Makefile
 	echo '#if 0' >$@.new
@@ -238,7 +238,7 @@ $(BASEDIR)/include/asm-x86/asm-macros.h: asm-macros.i Makefile
 	echo '#endif' >>$@.new
 	$(call move-if-changed,$@.new,$@)
 
-efi.lds: AFLAGS += -DEFI
+efi.lds: AFLAGS-y += -DEFI
 xen.lds efi.lds: xen.lds.S
 	$(CC) -P -E -Ui386 $(filter-out -Wa$(comma)%,$(a_flags)) -o $@ $<
 	sed -e 's/.*\.lds\.o:/$(@F):/g' <.$(@F).d >.$(@F).d.new
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 4b7ab78467..56fe22c979 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -1,89 +1,10 @@
 ########################################
 # x86-specific definitions
 
-XEN_IMG_OFFSET := 0x200000
-
-CFLAGS += -I$(BASEDIR)/include
-CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-generic
-CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-default
-CFLAGS += -DXEN_IMG_OFFSET=$(XEN_IMG_OFFSET)
-CFLAGS += '-D__OBJECT_LABEL__=$(subst /,$$,$(subst -,_,$(subst $(BASEDIR)/,,$(CURDIR))/$@))'
-
-# Prevent floating-point variables from creeping into Xen.
-CFLAGS += -msoft-float
-
-ifeq ($(CONFIG_CC_IS_CLANG),y)
-# Note: Any test which adds -no-integrated-as will cause subsequent tests to
-# succeed, and not trigger further additions.
-#
-# The tests to select whether the integrated assembler is usable need to happen
-# before testing any assembler features, or else the result of the tests would
-# be stale if the integrated assembler is not used.
-
-# Older clang's built-in assembler doesn't understand .skip with labels:
-# https://bugs.llvm.org/show_bug.cgi?id=27369
-$(call as-option-add,CFLAGS,CC,".L0: .L1: .skip (.L1 - .L0)",,\
-                     -no-integrated-as)
-
-# Check whether clang asm()-s support .include.
-$(call as-option-add,CFLAGS,CC,".include \"asm-x86/indirect_thunk_asm.h\"",,\
-                     -no-integrated-as)
-
-# Check whether clang keeps .macro-s between asm()-s:
-# https://bugs.llvm.org/show_bug.cgi?id=36110
-$(call as-option-add,CFLAGS,CC,\
-                     ".macro FOO;.endm"$$(close); asm volatile $$(open)".macro FOO;.endm",\
-                     -no-integrated-as)
-endif
-
-$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
-$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
-$(call as-option-add,CFLAGS,CC,"vmcall",-DHAVE_AS_VMX)
-$(call as-option-add,CFLAGS,CC,"crc32 %eax$$(comma)%eax",-DHAVE_AS_SSE4_2)
-$(call as-option-add,CFLAGS,CC,"invept (%rax)$$(comma)%rax",-DHAVE_AS_EPT)
-$(call as-option-add,CFLAGS,CC,"rdrand %eax",-DHAVE_AS_RDRAND)
-$(call as-option-add,CFLAGS,CC,"rdfsbase %rax",-DHAVE_AS_FSGSBASE)
-$(call as-option-add,CFLAGS,CC,"xsaveopt (%rax)",-DHAVE_AS_XSAVEOPT)
-$(call as-option-add,CFLAGS,CC,"rdseed %eax",-DHAVE_AS_RDSEED)
-$(call as-option-add,CFLAGS,CC,"clwb (%rax)",-DHAVE_AS_CLWB)
-$(call as-option-add,CFLAGS,CC,".equ \"x\"$$(comma)1", \
-                     -U__OBJECT_LABEL__ -DHAVE_AS_QUOTED_SYM \
-                     '-D__OBJECT_LABEL__=$(subst $(BASEDIR)/,,$(CURDIR))/$$@')
-$(call as-option-add,CFLAGS,CC,"invpcid (%rax)$$(comma)%rax",-DHAVE_AS_INVPCID)
-
-# GAS's idea of true is -1.  Clang's idea is 1
-$(call as-option-add,CFLAGS,CC,\
-    ".if ((1 > 0) < 0); .error \"\";.endif",,-DHAVE_AS_NEGATIVE_TRUE)
-
-# Check to see whether the assmbler supports the .nop directive.
-$(call as-option-add,CFLAGS,CC,\
-    ".L1: .L2: .nops (.L2 - .L1)$$(comma)9",-DHAVE_AS_NOPS_DIRECTIVE)
-
-CFLAGS += -mno-red-zone -fpic -fno-asynchronous-unwind-tables
-
-# Xen doesn't use SSE interally.  If the compiler supports it, also skip the
-# SSE setup for variadic function calls.
-CFLAGS += -mno-sse $(call cc-option,$(CC),-mskip-rax-setup)
-
-# Compile with thunk-extern, indirect-branch-register if avaiable.
-ifeq ($(CONFIG_INDIRECT_THUNK),y)
-CFLAGS += -mindirect-branch=thunk-extern -mindirect-branch-register
-CFLAGS += -fno-jump-tables
+ifneq ($(filter -DHAVE_AS_QUOTED_SYM,$(XEN_CFLAGS)),)
+object_label_flags = '-D__OBJECT_LABEL__=$(subst $(BASEDIR)/,,$(CURDIR))/$@'
+else
+object_label_flags = '-D__OBJECT_LABEL__=$(subst /,$$,$(subst -,_,$(subst $(BASEDIR)/,,$(CURDIR))/$@))'
 endif
-
-# If supported by the compiler, reduce stack alignment to 8 bytes. But allow
-# this to be overridden elsewhere.
-$(call cc-option-add,CFLAGS-stack-boundary,CC,-mpreferred-stack-boundary=3)
-CFLAGS += $(CFLAGS-stack-boundary)
-
-ifeq ($(CONFIG_UBSAN),y)
-# Don't enable alignment sanitisation.  x86 has efficient unaligned accesses,
-# and various things (ACPI tables, hypercall pages, stubs, etc) are wont-fix.
-# It also causes an as-yet-unidentified crash on native boot before the
-# console starts.
-$(call cc-option-add,CFLAGS_UBSAN,CC,-fno-sanitize=alignment)
-endif
-
-# Set up the assembler include path properly for older toolchains.
-CFLAGS += -Wa,-I$(BASEDIR)/include
-
+c_flags += $(object_label_flags) $(CFLAGS-stack-boundary)
+a_flags += $(object_label_flags) $(CFLAGS-stack-boundary)
diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk
new file mode 100644
index 0000000000..2a51553edb
--- /dev/null
+++ b/xen/arch/x86/arch.mk
@@ -0,0 +1,84 @@
+########################################
+# x86-specific definitions
+
+export XEN_IMG_OFFSET := 0x200000
+
+CFLAGS += -I$(BASEDIR)/include
+CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-generic
+CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-default
+CFLAGS += -DXEN_IMG_OFFSET=$(XEN_IMG_OFFSET)
+
+# Prevent floating-point variables from creeping into Xen.
+CFLAGS += -msoft-float
+
+ifeq ($(CONFIG_CC_IS_CLANG),y)
+# Note: Any test which adds -no-integrated-as will cause subsequent tests to
+# succeed, and not trigger further additions.
+#
+# The tests to select whether the integrated assembler is usable need to happen
+# before testing any assembler features, or else the result of the tests would
+# be stale if the integrated assembler is not used.
+
+# Older clang's built-in assembler doesn't understand .skip with labels:
+# https://bugs.llvm.org/show_bug.cgi?id=27369
+$(call as-option-add,CFLAGS,CC,".L0: .L1: .skip (.L1 - .L0)",,\
+                     -no-integrated-as)
+
+# Check whether clang asm()-s support .include.
+$(call as-option-add,CFLAGS,CC,".include \"asm-x86/indirect_thunk_asm.h\"",,\
+                     -no-integrated-as)
+
+# Check whether clang keeps .macro-s between asm()-s:
+# https://bugs.llvm.org/show_bug.cgi?id=36110
+$(call as-option-add,CFLAGS,CC,\
+                     ".macro FOO;.endm"$$(close); asm volatile $$(open)".macro FOO;.endm",\
+                     -no-integrated-as)
+endif
+
+$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
+$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
+$(call as-option-add,CFLAGS,CC,"vmcall",-DHAVE_AS_VMX)
+$(call as-option-add,CFLAGS,CC,"crc32 %eax$$(comma)%eax",-DHAVE_AS_SSE4_2)
+$(call as-option-add,CFLAGS,CC,"invept (%rax)$$(comma)%rax",-DHAVE_AS_EPT)
+$(call as-option-add,CFLAGS,CC,"rdrand %eax",-DHAVE_AS_RDRAND)
+$(call as-option-add,CFLAGS,CC,"rdfsbase %rax",-DHAVE_AS_FSGSBASE)
+$(call as-option-add,CFLAGS,CC,"xsaveopt (%rax)",-DHAVE_AS_XSAVEOPT)
+$(call as-option-add,CFLAGS,CC,"rdseed %eax",-DHAVE_AS_RDSEED)
+$(call as-option-add,CFLAGS,CC,"clwb (%rax)",-DHAVE_AS_CLWB)
+$(call as-option-add,CFLAGS,CC,".equ \"x\"$$(comma)1",-DHAVE_AS_QUOTED_SYM)
+$(call as-option-add,CFLAGS,CC,"invpcid (%rax)$$(comma)%rax",-DHAVE_AS_INVPCID)
+
+# GAS's idea of true is -1.  Clang's idea is 1
+$(call as-option-add,CFLAGS,CC,\
+    ".if ((1 > 0) < 0); .error \"\";.endif",,-DHAVE_AS_NEGATIVE_TRUE)
+
+# Check to see whether the assmbler supports the .nop directive.
+$(call as-option-add,CFLAGS,CC,\
+    ".L1: .L2: .nops (.L2 - .L1)$$(comma)9",-DHAVE_AS_NOPS_DIRECTIVE)
+
+CFLAGS += -mno-red-zone -fpic -fno-asynchronous-unwind-tables
+
+# Xen doesn't use SSE interally.  If the compiler supports it, also skip the
+# SSE setup for variadic function calls.
+CFLAGS += -mno-sse $(call cc-option,$(CC),-mskip-rax-setup)
+
+# Compile with thunk-extern, indirect-branch-register if avaiable.
+CFLAGS-$(CONFIG_INDIRECT_THUNK) += -mindirect-branch=thunk-extern
+CFLAGS-$(CONFIG_INDIRECT_THUNK) += -mindirect-branch-register
+CFLAGS-$(CONFIG_INDIRECT_THUNK) += -fno-jump-tables
+
+# If supported by the compiler, reduce stack alignment to 8 bytes. But allow
+# this to be overridden elsewhere.
+$(call cc-option-add,CFLAGS-stack-boundary,CC,-mpreferred-stack-boundary=3)
+export CFLAGS-stack-boundary
+
+ifeq ($(CONFIG_UBSAN),y)
+# Don't enable alignment sanitisation.  x86 has efficient unaligned accesses,
+# and various things (ACPI tables, hypercall pages, stubs, etc) are wont-fix.
+# It also causes an as-yet-unidentified crash on native boot before the
+# console starts.
+$(call cc-option-add,CFLAGS_UBSAN,CC,-fno-sanitize=alignment)
+endif
+
+# Set up the assembler include path properly for older toolchains.
+CFLAGS += -Wa,-I$(BASEDIR)/include
diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 4bc0a196e9..490d791aae 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -1,4 +1,4 @@
-CFLAGS += -fshort-wchar
+CFLAGS-y += -fshort-wchar
 
 %.o: %.ihex
 	$(OBJCOPY) -I ihex -O binary $< $@
diff --git a/xen/common/libelf/Makefile b/xen/common/libelf/Makefile
index 3d9e38f27e..464c448d9d 100644
--- a/xen/common/libelf/Makefile
+++ b/xen/common/libelf/Makefile
@@ -3,10 +3,10 @@ nocov-y += libelf.o
 
 SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
 
-CFLAGS += -Wno-pointer-sign
+CFLAGS-y += -Wno-pointer-sign
 
 libelf.o: libelf-temp.o Makefile
 	$(OBJCOPY) $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
 
 libelf-temp.o: libelf-tools.o libelf-loader.o libelf-dominfo.o #libelf-relocate.o
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
diff --git a/xen/common/libfdt/Makefile b/xen/common/libfdt/Makefile
index c075bbf546..e2a5e59380 100644
--- a/xen/common/libfdt/Makefile
+++ b/xen/common/libfdt/Makefile
@@ -5,10 +5,10 @@ SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
 obj-y += libfdt.o
 nocov-y += libfdt.o
 
-CFLAGS += -I$(BASEDIR)/include/xen/libfdt/
+CFLAGS-y += -I$(BASEDIR)/include/xen/libfdt/
 
 libfdt.o: libfdt-temp.o Makefile
 	$(OBJCOPY) $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
 
 libfdt-temp.o: $(LIBFDT_OBJS)
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
diff --git a/xen/include/Makefile b/xen/include/Makefile
index a488a98d8b..2a10725d68 100644
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -64,7 +64,7 @@ compat/%.h: compat/%.i Makefile $(BASEDIR)/tools/compat-build-header.py
 	mv -f $@.new $@
 
 compat/%.i: compat/%.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)% -include %/include/xen/config.h,$(CFLAGS)) $(cppflags-y) -o $@ $<
+	$(CPP) $(filter-out -Wa$(comma)% -include %/include/xen/config.h,$(XEN_CFLAGS)) $(cppflags-y) -o $@ $<
 
 compat/%.c: public/%.h xlat.lst Makefile $(BASEDIR)/tools/compat-build-source.py
 	mkdir -p $(@D)
diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index f001bb18d4..6db396347b 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -4,7 +4,7 @@ obj-y += flask_op.o
 
 obj-y += ss/
 
-CFLAGS += -I./include
+CFLAGS-y += -I./include
 
 AWK = awk
 
diff --git a/xen/xsm/flask/ss/Makefile b/xen/xsm/flask/ss/Makefile
index 046ce8f533..d32b9e0713 100644
--- a/xen/xsm/flask/ss/Makefile
+++ b/xen/xsm/flask/ss/Makefile
@@ -8,4 +8,4 @@ obj-y += services.o
 obj-y += conditional.o
 obj-y += mls.o
 
-CFLAGS += -I../include
+CFLAGS-y += -I../include
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 13:11:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 13:11:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRy71-0006Ac-Q1; Fri, 24 Apr 2020 13:11:23 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRy70-0006AU-RK
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:22 +0000
X-Inumbo-ID: 17169a16-862d-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 17169a16-862d-11ea-b58d-bc764e2007e4;
 Fri, 24 Apr 2020 13:11:21 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=JHVh7C7t2TbFPNoOPWpCCLyCA5BxFqduNKrHlgkumjQ=; b=R2sk7Hl/rmtMQqyo1PQShQXbBp
 QB4PqVR0AIMM8fu/BSaqGu1fMNeOlBAhXoTV2Xkos97/PmX9t9/Su78azCuSQATISLPif08NhOUvV
 3aQ59/i1wNYIbWnsK63v87CKcnCQ7qR5cn5CJMvS7YIeRyrl2UninIeB7Ei5KN1N9XpQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy6y-0000LP-Ka
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:20 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy6y-0005Or-JE
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:20 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] build: introduce documentation for xen Makefiles
Message-Id: <E1jRy6y-0005Or-JE@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 13:11:20 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 16055cb50cbb9b0b9eaf9937696a5c1d1f6fd71f
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Apr 24 15:00:37 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:00:37 2020 +0200

    build: introduce documentation for xen Makefiles
    
    This start explainning the variables that can be used in the many
    Makefiles in xen/.
    
    Most of the document copies and modifies text from Linux v5.4 document
    linux.git/Documentation/kbuild/makefiles.rst. Modification are mostly
    to avoid mentioning kbuild. Thus I've added the SPDX tag which was
    only in index.rst in linux.git.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 docs/misc/xen-makefiles/makefiles.rst | 87 +++++++++++++++++++++++++++++++++++
 xen/Rules.mk                          |  4 ++
 2 files changed, 91 insertions(+)

diff --git a/docs/misc/xen-makefiles/makefiles.rst b/docs/misc/xen-makefiles/makefiles.rst
new file mode 100644
index 0000000000..a86e3a612d
--- /dev/null
+++ b/docs/misc/xen-makefiles/makefiles.rst
@@ -0,0 +1,87 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=============
+Xen Makefiles
+=============
+
+Documentation for the build system of Xen, found in xen.git/xen/.
+
+Makefile files
+==============
+
+Description of the syntax that can be used in most Makefiles named
+'Makefile'. ('xen/Makefile' isn't part of the description.)
+
+'Makefile's are consumed by 'Rules.mk' when building.
+
+Goal definitions
+----------------
+
+	Goal definitions are the main part (heart) of the Makefile.
+	These lines define the files to be built, any special compilation
+	options, and any subdirectories to be entered recursively.
+
+	The most simple makefile contains one line:
+
+	Example::
+
+		obj-y += foo.o
+
+	This tells the build system that there is one object in that
+	directory, named foo.o. foo.o will be built from foo.c or foo.S.
+
+	The following pattern is often used to have object selected
+	depending on the configuration:
+
+	Example::
+
+		obj-$(CONFIG_FOO) += foo.o
+
+	$(CONFIG_FOO) can evaluates to y.
+	If CONFIG_FOO is not y, then the file will not be compiled nor linked.
+
+Descending down in directories
+------------------------------
+
+	A Makefile is only responsible for building objects in its own
+	directory. Files in subdirectories should be taken care of by
+	Makefiles in these subdirs. The build system will automatically
+	invoke make recursively in subdirectories, provided you let it know of
+	them.
+
+	To do so, obj-y is used.
+	acpi lives in a separate directory, and the Makefile present in
+	drivers/ tells the build system to descend down using the following
+	assignment.
+
+	Example::
+
+		#drivers/Makefile
+		obj-$(CONFIG_ACPI) += acpi/
+
+	If CONFIG_ACPI is set to 'y'
+	the corresponding obj- variable will be set, and the build system
+	will descend down in the apci directory.
+	The build system only uses this information to decide that it needs
+	to visit the directory, it is the Makefile in the subdirectory that
+	specifies what is modular and what is built-in.
+
+	It is good practice to use a `CONFIG_` variable when assigning directory
+	names. This allows the build system to totally skip the directory if the
+	corresponding `CONFIG_` option is 'y'.
+
+Compilation flags
+-----------------
+
+    CFLAGS-y and AFLAGS-y
+	These two flags apply only to the makefile in which they
+	are assigned. They are used for all the normal cc, as and ld
+	invocations happening during a recursive build.
+
+	$(CFLAGS-y) is necessary because the top Makefile owns the
+	variable $(XEN_CFLAGS) and uses it for compilation flags for the
+	entire tree. And the variable $(CFLAGS) is modified by Config.mk
+	which evaluated in every subdirs.
+
+	CFLAGS-y specifies options for compiling with $(CC).
+	AFLAGS-y specifies assembler options.
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 8e4b9e3a4a..9d1e1ebf5e 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -1,3 +1,7 @@
+#
+# See docs/misc/xen-makefiles/makefiles.rst on variables that can be used in
+# Makefile and are consumed by Rules.mk
+#
 
 -include $(BASEDIR)/include/config/auto.conf
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 13:11:33 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 13:11:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRy7B-0006DB-Rd; Fri, 24 Apr 2020 13:11:33 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRy7A-0006Cn-7G
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:32 +0000
X-Inumbo-ID: 1d18281c-862d-11ea-94a3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1d18281c-862d-11ea-94a3-12813bfff9fa;
 Fri, 24 Apr 2020 13:11:30 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hyPgeA24i4CNE8UeS3U49IgoYVwJVLXOOC9SYfYy9wc=; b=Y9SYdcpm/XfG1q9MKIZ2f3UFPw
 KpSggmBytB/fM2r8KfadPpLGlXmBUNwtQRUKZl7xAxBxpjulrid60Zw/IwfHYcjbJuW4h/MkTzNzN
 iJM4YWswHYPADQSCJyJmPsXZN7JfuACnFgQ3byh2TsFSKEgYgOYSweaMJArtekBn/L2M=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy78-0000M2-NS
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:30 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy78-0005Pk-MM
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:30 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/build: introduce if_changed and if_changed_rule
Message-Id: <E1jRy78-0005Pk-MM@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 13:11:30 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4fdb4b71b152431b519345e6a8cc8738974db7e6
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Apr 24 15:01:11 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:01:11 2020 +0200

    xen/build: introduce if_changed and if_changed_rule
    
    The if_changed macro from Linux, in addition to check if any files
    needs an update, check if the command line has changed since the last
    invocation. The latter will force a rebuild if any options to the
    executable have changed.
    
    if_changed_rule checks dependencies like if_changed, but execute
    rule_$(1) instead of cmd_$(1) when a target needs to be rebuilt. A rule_
    macro can call more than one cmd_ macro. One of the cmd_ macro in a
    rule need to be call using a macro that record the command line, so
    cmd_and_record is introduced. It is similar to cmd_and_fixup from
    Linux but without a call to fixdep which we don't have yet. (We will
    later replace cmd_and_record by cmd_and_fixup.)
    
    Example of a rule_ macro:
    define rule_cc_o_c
        $(call cmd_and_record,cc_o_o)
        $(call cmd,objcopy)
    endef
    
    This needs one of the call to use cmd_and_record, otherwise no .*.cmd
    file will be created, and the target will keep been rebuilt.
    
    In order for if_changed to works correctly, we need to load the .%.cmd
    files that the macro generates, this is done by adding targets in to
    the $(targets) variable. We use intermediate_targets to add %.init.o
    dependency %.o to target since there aren't in obj-y.
    
    We also add $(MAKECMDGOALS) to targets so that when running for
    example `make common/memory.i`, make will load the associated .%.cmd
    dependency file.
    
    Beside the if_changed*, we import the machinery used for a "beautify
    output". The important one is when running make with V=2 which help to
    debug the makefiles by printing why a target is been rebuilt, via the
    $(echo-why) macro.
    
    if_changed and if_changed_rule aren't used yet.
    
    Most of this code is copied from Linux v5.4, including the
    documentation.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 .gitignore                            |   1 +
 docs/misc/xen-makefiles/makefiles.rst |  98 +++++++++++++++++++++++++++++++
 xen/Makefile                          |  53 ++++++++++++++++-
 xen/Rules.mk                          |  33 ++++++++++-
 xen/scripts/Kbuild.include            | 107 ++++++++++++++++++++++++++++++++++
 5 files changed, 290 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index 4ca679ddbc..bfa53723b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 .hg
+.*.cmd
 .*.tmp
 *.orig
 *~
diff --git a/docs/misc/xen-makefiles/makefiles.rst b/docs/misc/xen-makefiles/makefiles.rst
index a86e3a612d..04bc72601c 100644
--- a/docs/misc/xen-makefiles/makefiles.rst
+++ b/docs/misc/xen-makefiles/makefiles.rst
@@ -85,3 +85,101 @@ Compilation flags
 
 	CFLAGS-y specifies options for compiling with $(CC).
 	AFLAGS-y specifies assembler options.
+
+
+Build system infrastructure
+===========================
+
+This chapter describe some of the macro used when building Xen.
+
+Macros
+------
+
+
+    if_changed
+	if_changed is the infrastructure used for the following commands.
+
+	Usage::
+
+		target: source(s) FORCE
+			$(call if_changed,ld/objcopy/...)
+
+	When the rule is evaluated, it is checked to see if any files
+	need an update, or the command line has changed since the last
+	invocation. The latter will force a rebuild if any options
+	to the executable have changed.
+	Any target that utilises if_changed must be listed in $(targets),
+	otherwise the command line check will fail, and the target will
+	always be built.
+	if_changed may be used in conjunction with custom commands as
+	defined in "Custom commands".
+
+	Note: It is a typical mistake to forget the FORCE prerequisite.
+	Another common pitfall is that whitespace is sometimes
+	significant; for instance, the below will fail (note the extra space
+	after the comma)::
+
+		target: source(s) FORCE
+
+	**WRONG!**	$(call if_changed, ld/objcopy/...)
+
+	Note:
+		if_changed should not be used more than once per target.
+		It stores the executed command in a corresponding .cmd file
+		and multiple calls would result in overwrites and unwanted
+		results when the target is up to date and only the tests on
+		changed commands trigger execution of commands.
+
+    ld
+	Link target.
+
+	Example::
+
+		targets += setup setup.o bootsect bootsect.o
+		$(obj)/setup $(obj)/bootsect: %: %.o FORCE
+			$(call if_changed,ld)
+
+	$(targets) are assigned all potential targets, by which the build
+	system knows the targets and will:
+
+		1) check for commandline changes
+
+	The ": %: %.o" part of the prerequisite is a shorthand that
+	frees us from listing the setup.o and bootsect.o files.
+
+	Note:
+		It is a common mistake to forget the "targets :=" assignment,
+		resulting in the target file being recompiled for no
+		obvious reason.
+
+    objcopy
+	Copy binary. Uses OBJCOPYFLAGS usually specified in
+	arch/$(ARCH)/Makefile.
+
+Custom commands
+---------------
+
+	When the build system is executing with V=0, then only
+	a shorthand of a command is normally displayed.
+	To enable this behaviour for custom commands, two variables are
+	required to be set::
+
+		quiet_cmd_<command>	- what shall be echoed
+		      cmd_<command>	- the command to execute
+
+	Example::
+
+		# xsm/flask/Makefile
+		mkflask := policy/mkflask.sh
+		quiet_cmd_mkflask = MKFLASK $@
+		cmd_mkflask = $(CONFIG_SHELL) $(mkflask) $(AWK) include \
+			$(FLASK_H_DEPEND)
+
+		include/flask.h: $(FLASK_H_DEPEND) $(mkflask) FORCE
+			$(call if_changed,mkflask)
+
+	When updating the include/flask.h target, the line:
+
+		MKFLASK include/flask.h
+
+	will be displayed with "make V=0". (V=0 is the default)
diff --git a/xen/Makefile b/xen/Makefile
index 2a689b26a2..07f8ef8087 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -52,7 +52,57 @@ dist: install
 
 ifneq ($(root-make-done),y)
 # section to run before calling Rules.mk, but only once.
+
+# Beautify output
+# ---------------------------------------------------------------------------
+#
+# Normally, we echo the whole command before executing it. By making
+# that echo $($(quiet)$(cmd)), we now have the possibility to set
+# $(quiet) to choose other forms of output instead, e.g.
+#
+#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
+#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
+#
+# If $(quiet) is empty, the whole command will be printed.
+# If it is set to "quiet_", only the short version will be printed.
+# If it is set to "silent_", nothing will be printed at all, since
+# the variable $(silent_cmd_cc_o_c) doesn't exist.
+#
+# A simple variant is to prefix commands with $(Q) - that's useful
+# for commands that shall be hidden in non-verbose mode.
 #
+#	$(Q)ln $@ :<
+#
+# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
+# If KBUILD_VERBOSE equals 1 then the above command is displayed.
+#
+# To put more focus on warnings, be less verbose as default
+# Use 'make V=1' to see the full commands
+
+ifeq ("$(origin V)", "command line")
+    KBUILD_VERBOSE := $(V)
+endif
+ifndef KBUILD_VERBOSE
+    KBUILD_VERBOSE := 0
+endif
+
+ifeq ($(KBUILD_VERBOSE),1)
+    quiet :=
+    Q :=
+else
+    quiet := quiet_
+    Q := @
+endif
+
+# If the user is running make -s (silent mode), suppress echoing of
+# commands
+
+ifneq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),)
+    quiet := silent_
+endif
+
+export quiet Q KBUILD_VERBOSE
+
 # To make sure we do not include .config for any of the *config targets
 # catch them early, and hand them over to tools/kconfig/Makefile
 
@@ -261,7 +311,8 @@ _clean: delete-unfresh-files
 	$(MAKE) $(clean) arch/x86
 	$(MAKE) $(clean) test
 	$(MAKE) -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) clean
-	find . \( -name "*.o" -o -name ".*.d" -o -name ".*.d2" -o -name "*.gcno" \) -exec rm -f {} \;
+	find . \( -name "*.o" -o -name ".*.d" -o -name ".*.d2" \
+		-o -name "*.gcno" -o -name ".*.cmd" \) -exec rm -f {} \;
 	rm -f include/asm $(TARGET) $(TARGET).gz $(TARGET).efi $(TARGET).efi.map $(TARGET)-syms $(TARGET)-syms.map *~ core
 	rm -f include/asm-*/asm-offsets.h
 	rm -f .banner
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 9d1e1ebf5e..21cac7f5f5 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -42,6 +42,7 @@ ALL_OBJS-y               += $(BASEDIR)/arch/$(TARGET_ARCH)/built_in.o
 ALL_OBJS-$(CONFIG_CRYPTO)   += $(BASEDIR)/crypto/built_in.o
 
 # Initialise some variables
+targets :=
 CFLAGS-y :=
 AFLAGS-y :=
 
@@ -69,6 +70,10 @@ $(foreach o,$(filter-out %/,$(obj-y) $(obj-bin-y) $(extra-y)),$(eval $(call gend
 subdir-y := $(subdir-y) $(filter %/, $(obj-y))
 obj-y    := $(patsubst %/, %/built_in.o, $(obj-y))
 
+# $(subdir-obj-y) is the list of objects in $(obj-y) which uses dir/ to
+# tell kbuild to descend
+subdir-obj-y := $(filter %/built_in.o, $(obj-y))
+
 $(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS-y += -DINIT_SECTIONS_ONLY
 
 ifeq ($(CONFIG_COVERAGE),y)
@@ -123,6 +128,10 @@ else
 endif
 endif
 
+targets += built_in.o
+targets += $(filter-out $(subdir-obj-y), $(obj-y)) $(extra-y)
+targets += $(MAKECMDGOALS)
+
 built_in_bin.o: $(obj-bin-y) $(extra-y)
 ifeq ($(obj-bin-y),)
 	$(CC) $(a_flags) -c -x assembler /dev/null -o $@
@@ -131,7 +140,7 @@ else
 endif
 
 # Force execution of pattern rules (for which PHONY cannot be directly used).
-.PHONY: FORCE
+PHONY += FORCE
 FORCE:
 
 %/built_in.o: FORCE
@@ -179,4 +188,26 @@ $(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o Makefile
 %.s: %.S Makefile
 	$(CPP) $(filter-out -Wa$(comma)%,$(a_flags)) $< -o $@
 
+# Add intermediate targets:
+# When building objects with specific suffix patterns, add intermediate
+# targets that the final targets are derived from.
+intermediate_targets = $(foreach sfx, $(2), \
+				$(patsubst %$(strip $(1)),%$(sfx), \
+					$(filter %$(strip $(1)), $(targets))))
+# %.init.o <- %.o
+targets += $(call intermediate_targets, .init.o, .o)
+
 -include $(DEPS_INCLUDE)
+
+# Read all saved command lines and dependencies for the $(targets) we
+# may be building above, using $(if_changed{,_dep}). As an
+# optimization, we don't need to read them if the target does not
+# exist, we will rebuild anyway in that case.
+
+existing-targets := $(wildcard $(sort $(targets)))
+
+-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
+
+# Declare the contents of the PHONY variable as phony.  We keep that
+# information in a variable so we can use it in if_changed and friends.
+.PHONY: $(PHONY)
diff --git a/xen/scripts/Kbuild.include b/xen/scripts/Kbuild.include
index 806c68824e..e62eddc365 100644
--- a/xen/scripts/Kbuild.include
+++ b/xen/scripts/Kbuild.include
@@ -2,11 +2,30 @@
 ####
 # kbuild: Generic definitions
 
+# Convenient variables
+squote  := '
+empty   :=
+space   := $(empty) $(empty)
+space_escape := _-_SPACE_-_
+pound   := \#
+
+###
+# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
+dot-target = $(@D)/.$(@F)
+
 ###
 # dependencies
 DEPS = .*.d
 DEPS_INCLUDE = $(addsuffix .d2, $(basename $(wildcard $(DEPS))))
 
+###
+# real prerequisites without phony targets
+real-prereqs = $(filter-out $(PHONY), $^)
+
+###
+# Escape single quote for use in echo statements
+escsq = $(subst $(squote),'\$(squote)',$1)
+
 # as-insn: Check whether assembler supports an instruction.
 # Usage: cflags-y += $(call as-insn,CC FLAGS,"insn",option-yes,option-no)
 as-insn = $(if $(shell echo 'void _(void) { asm volatile ( $(2) ); }' \
@@ -32,3 +51,91 @@ cc-ifversion = $(shell [ $(CONFIG_GCC_VERSION)0 $(1) $(2)000 ] && echo $(3) || e
 # Usage:
 # $(MAKE) $(clean) dir
 clean := -f $(BASEDIR)/scripts/Makefile.clean clean -C
+
+# echo command.
+# Short version is used, if $(quiet) equals `quiet_', otherwise full one.
+echo-cmd = $(if $($(quiet)cmd_$(1)),\
+        echo '  $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';)
+
+# printing commands
+cmd = @set -e; $(echo-cmd) $(cmd_$(1))
+
+###
+# if_changed      - execute command if any prerequisite is newer than
+#                   target, or command line has changed
+# if_changed_rule - as if_changed but execute rule instead
+
+ifneq ($(KBUILD_NOCMDDEP),1)
+# Check if both commands are the same including their order. Result is empty
+# string if equal. User may override this check using make KBUILD_NOCMDDEP=1
+cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(cmd_$@))), \
+                         $(subst $(space),$(space_escape),$(strip $(cmd_$1))))
+else
+cmd-check = $(if $(strip $(cmd_$@)),,1)
+endif
+
+# Replace >$< with >$$< to preserve $ when reloading the .cmd file
+# (needed for make)
+# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file
+# (needed for make)
+# Replace >'< with >'\''< to be able to enclose the whole string in '...'
+# (needed for the shell)
+make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
+
+# Find any prerequisites that is newer than target or that does not exist.
+# PHONY targets skipped in both cases.
+any-prereq = $(filter-out $(PHONY),$?)$(filter-out $(PHONY) $(wildcard $^),$^)
+
+# Execute command if command has changed or prerequisite(s) are updated.
+if_changed = $(if $(any-prereq)$(cmd-check),                                 \
+        $(cmd);                                                              \
+        printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
+
+# Usage: $(call if_changed_rule,foo)
+# Will check if $(cmd_foo) or any of the prerequisites changed,
+# and if so will execute $(rule_foo).
+if_changed_rule = $(if $(any-prereq)$(cmd-check),$(rule_$(1)),@:)
+
+cmd_and_record =                                                             \
+        $(cmd);                                                              \
+        printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd
+
+###
+# why - tell why a target got built
+#       enabled by make V=2
+#       Output (listed in the order they are checked):
+#          (1) - due to target is PHONY
+#          (2) - due to target missing
+#          (3) - due to: file1.h file2.h
+#          (4) - due to command line change
+#          (5) - due to missing .cmd file
+#          (6) - due to target not in $(targets)
+# (1) PHONY targets are always build
+# (2) No target, so we better build it
+# (3) Prerequisite is newer than target
+# (4) The command line stored in the file named dir/.target.cmd
+#     differed from actual command line. This happens when compiler
+#     options changes
+# (5) No dir/.target.cmd file (used to store command line)
+# (6) No dir/.target.cmd file and target not listed in $(targets)
+#     This is a good hint that there is a bug in the kbuild file
+ifeq ($(KBUILD_VERBOSE),2)
+why =                                                                        \
+    $(if $(filter $@, $(PHONY)),- due to target is PHONY,                    \
+        $(if $(wildcard $@),                                                 \
+            $(if $(any-prereq),- due to: $(any-prereq),                      \
+                $(if $(cmd-check),                                           \
+                    $(if $(cmd_$@),- due to command line change,             \
+                        $(if $(filter $@, $(targets)),                       \
+                            - due to missing .cmd file,                      \
+                            - due to $(notdir $@) not in $$(targets)         \
+                         )                                                   \
+                     )                                                       \
+                 )                                                           \
+             ),                                                              \
+             - due to target missing                                         \
+         )                                                                   \
+     )
+
+echo-why = $(call escsq, $(strip $(why)))
+endif
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 13:11:43 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 13:11:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRy7K-0006Eq-TG; Fri, 24 Apr 2020 13:11:42 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRy7J-0006Eg-Vl
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:42 +0000
X-Inumbo-ID: 2319bd98-862d-11ea-94a3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2319bd98-862d-11ea-94a3-12813bfff9fa;
 Fri, 24 Apr 2020 13:11:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=RZRSOp7umQewBnaTafVZz0La862RKVGPkTwYWd6MZBw=; b=D/F7B18j23+j1GjLK1+rxxXcXU
 MVXgzrxDV55SwhTVBf6zyKhCH87NUnui1jWOc8mDjm1VtELSgAk0ag2gSFXb71+V+NRzC5h+w1L7L
 0aLj7ktQHAxBJ70JegIEZNiyCDC6q3laPn8f2izBit2gYtaUaU2efe6Bf4pyhABYnkMk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy7I-0000Nl-QU
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:40 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy7I-0005QK-PP
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:40 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/build: start using if_changed
Message-Id: <E1jRy7I-0005QK-PP@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 13:11:40 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e321576f4047661111c7e069f03fc96294d7bb32
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Apr 24 15:02:03 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:02:03 2020 +0200

    xen/build: start using if_changed
    
    This patch start to use if_changed introduced in a previous commit.
    
    Whenever if_changed is called, the target must have FORCE as
    dependency so that if_changed can check if the command line to be
    run has changed, so the macro $(real-prereqs) must be used to
    discover the dependencies without "FORCE".
    
    Whenever a target isn't in obj-y, it should be added to extra-y so the
    .*.cmd dependency file associated with the target can be loaded. This
    is done for xsm/flask/ and both common/lib{elf,fdt}/ and
    arch/x86/Makefile.
    
    For the targets that generate .*.d dependency files, there's going to
    be two dependency files (.*.d and .*.cmd) until we can merge them
    together in a later patch via fixdep from Linux.
    
    One cleanup, libelf-relocate.o doesn't exist anymore.
    
    We import cmd_ld and cmd_objcopy from Linux v5.4.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
---
 xen/Rules.mk               | 68 +++++++++++++++++++++++++++++++++-------------
 xen/arch/arm/Makefile      |  4 +--
 xen/arch/x86/Makefile      |  1 +
 xen/arch/x86/efi/Makefile  |  7 +++--
 xen/common/libelf/Makefile | 12 +++++---
 xen/common/libfdt/Makefile | 11 +++++---
 xen/xsm/flask/Makefile     | 17 +++++++++---
 7 files changed, 85 insertions(+), 35 deletions(-)

diff --git a/xen/Rules.mk b/xen/Rules.mk
index 21cac7f5f5..2e28c57230 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -56,6 +56,18 @@ SPECIAL_DATA_SECTIONS := rodata $(foreach a,1 2 4 8 16, \
 
 include Makefile
 
+# Linking
+# ---------------------------------------------------------------------------
+
+quiet_cmd_ld = LD      $@
+cmd_ld = $(LD) $(XEN_LDFLAGS) -r -o $@ $(real-prereqs)
+
+# Objcopy
+# ---------------------------------------------------------------------------
+
+quiet_cmd_objcopy = OBJCOPY $@
+cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $< $@
+
 define gendep
     ifneq ($(1),$(subst /,:,$(1)))
         DEPS += $(dir $(1)).$(notdir $(1)).d
@@ -164,29 +176,47 @@ else
 	$(CC) $(c_flags) -c $< -o $@
 endif
 
-%.o: %.S Makefile
-	$(CC) $(a_flags) -c $< -o $@
+quiet_cmd_cc_o_S = CC      $@
+cmd_cc_o_S = $(CC) $(a_flags) -c $< -o $@
+
+%.o: %.S FORCE
+	$(call if_changed,cc_o_S)
+
+
+quiet_cmd_obj_init_o = INIT_O  $@
+define cmd_obj_init_o
+    $(OBJDUMP) -h $< | sed -n '/[0-9]/{s,00*,0,g;p;}' | while read idx name sz rest; do \
+        case "$$name" in \
+        .*.local) ;; \
+        .text|.text.*|.data|.data.*|.bss) \
+            test $$sz != 0 || continue; \
+            echo "Error: size of $<:$$name is 0x$$sz" >&2; \
+            exit $$(expr $$idx + 1);; \
+        esac; \
+    done; \
+    $(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
+endef
+
+$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o FORCE
+	$(call if_changed,obj_init_o)
+
+quiet_cmd_cpp_i_c = CPP     $@
+cmd_cpp_i_c = $(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) $< -o $@
+
+quiet_cmd_cc_s_c = CC      $@
+cmd_cc_s_c = $(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -S $< -o $@
 
-$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o Makefile
-	$(OBJDUMP) -h $< | sed -n '/[0-9]/{s,00*,0,g;p;}' | while read idx name sz rest; do \
-		case "$$name" in \
-		.*.local) ;; \
-		.text|.text.*|.data|.data.*|.bss) \
-			test $$sz != 0 || continue; \
-			echo "Error: size of $<:$$name is 0x$$sz" >&2; \
-			exit $$(expr $$idx + 1);; \
-		esac; \
-	done
-	$(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
+quiet_cmd_s_S = CPP     $@
+cmd_s_S = $(CPP) $(filter-out -Wa$(comma)%,$(a_flags)) $< -o $@
 
-%.i: %.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) $< -o $@
+%.i: %.c FORCE
+	$(call if_changed,cpp_i_c)
 
-%.s: %.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -S $< -o $@
+%.s: %.c FORCE
+	$(call if_changed,cc_s_c)
 
-%.s: %.S Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(a_flags)) $< -o $@
+%.s: %.S FORCE
+	$(call if_changed,cpp_s_S)
 
 # Add intermediate targets:
 # When building objects with specific suffix patterns, add intermediate
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 9f1ab23357..b79ad55646 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -97,8 +97,8 @@ prelink_lto.o: $(ALL_OBJS)
 prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
 	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 else
-prelink.o: $(ALL_OBJS)
-	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
+prelink.o: $(ALL_OBJS) FORCE
+	$(call if_changed,ld)
 endif
 
 $(TARGET)-syms: prelink.o xen.lds
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index a805e9982e..44137d919b 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -71,6 +71,7 @@ obj-$(CONFIG_TBOOT) += tboot.o
 obj-y += hpet.o
 obj-y += vm_event.o
 obj-y += xstate.o
+extra-y += asm-macros.i
 
 x86_emulate.o: x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h
 
diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 490d791aae..3e4c395b75 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -1,7 +1,10 @@
 CFLAGS-y += -fshort-wchar
 
-%.o: %.ihex
-	$(OBJCOPY) -I ihex -O binary $< $@
+quiet_cmd_objcopy_o_ihex = OBJCOPY $@
+cmd_objcopy_o_ihex = $(OBJCOPY) -I ihex -O binary $< $@
+
+%.o: %.ihex FORCE
+	$(call if_changed,objcopy_o_ihex)
 
 boot.init.o: buildid.o
 
diff --git a/xen/common/libelf/Makefile b/xen/common/libelf/Makefile
index 464c448d9d..a92326c982 100644
--- a/xen/common/libelf/Makefile
+++ b/xen/common/libelf/Makefile
@@ -1,12 +1,16 @@
 obj-bin-y := libelf.o
 nocov-y += libelf.o
+libelf-objs := libelf-tools.o libelf-loader.o libelf-dominfo.o
 
 SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
+OBJCOPYFLAGS := $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s))
 
 CFLAGS-y += -Wno-pointer-sign
 
-libelf.o: libelf-temp.o Makefile
-	$(OBJCOPY) $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
+libelf.o: libelf-temp.o FORCE
+	$(call if_changed,objcopy)
 
-libelf-temp.o: libelf-tools.o libelf-loader.o libelf-dominfo.o #libelf-relocate.o
-	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
+libelf-temp.o: $(libelf-objs) FORCE
+	$(call if_changed,ld)
+
+extra-y += libelf-temp.o $(libelf-objs)
diff --git a/xen/common/libfdt/Makefile b/xen/common/libfdt/Makefile
index e2a5e59380..6bd207cf8f 100644
--- a/xen/common/libfdt/Makefile
+++ b/xen/common/libfdt/Makefile
@@ -1,14 +1,17 @@
 include Makefile.libfdt
 
 SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
+OBJCOPYFLAGS := $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s))
 
 obj-y += libfdt.o
 nocov-y += libfdt.o
 
 CFLAGS-y += -I$(BASEDIR)/include/xen/libfdt/
 
-libfdt.o: libfdt-temp.o Makefile
-	$(OBJCOPY) $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
+libfdt.o: libfdt-temp.o FORCE
+	$(call if_changed,objcopy)
 
-libfdt-temp.o: $(LIBFDT_OBJS)
-	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
+libfdt-temp.o: $(LIBFDT_OBJS) FORCE
+	$(call if_changed,ld)
+
+extra-y += libfdt-temp.o $(LIBFDT_OBJS)
diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index 6db396347b..eebfceecc5 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -20,12 +20,21 @@ AV_H_FILES = include/av_perm_to_string.h include/av_permissions.h
 ALL_H_FILES = $(FLASK_H_FILES) $(AV_H_FILES)
 
 $(obj-y) ss/built_in.o: $(ALL_H_FILES)
+extra-y += $(ALL_H_FILES)
 
-$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND)
-	$(CONFIG_SHELL) policy/mkflask.sh $(AWK) include $(FLASK_H_DEPEND)
+mkflask := policy/mkflask.sh
+quiet_cmd_mkflask = MKFLASK $@
+cmd_mkflask = $(CONFIG_SHELL) $(mkflask) $(AWK) include $(FLASK_H_DEPEND)
 
-$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND)
-	$(CONFIG_SHELL) policy/mkaccess_vector.sh $(AWK) $(AV_H_DEPEND)
+$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND) $(mkflask) FORCE
+	$(call if_changed,mkflask)
+
+mkaccess := policy/mkaccess_vector.sh
+quiet_cmd_mkaccess = MKACCESS VECTOR $@
+cmd_mkaccess = $(CONFIG_SHELL) $(mkaccess) $(AWK) $(AV_H_DEPEND)
+
+$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND) $(mkaccess) FORCE
+	$(call if_changed,mkaccess)
 
 obj-bin-$(CONFIG_XSM_FLASK_POLICY) += flask-policy.o
 flask-policy.o: policy.bin
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 13:11:53 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 13:11:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRy7V-0006GY-0H; Fri, 24 Apr 2020 13:11:53 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRy7T-0006GQ-Ve
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:52 +0000
X-Inumbo-ID: 291fbbde-862d-11ea-94a3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 291fbbde-862d-11ea-94a3-12813bfff9fa;
 Fri, 24 Apr 2020 13:11:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=TZG6BXzz9mb+8W4f92dv3HRgAwVs7zpBslpw12fCfWc=; b=jisYmyU0PDXA3KtDqg2J60R0r9
 0a4yBQigpvEJxHOi4aGKAfBy8vBG3QqJhU77zOiqWD5dRhWFcfiVE2f+ECw2upGX7nSz88uaPcu7W
 4XvwOQ9YrJIRZl3079jH0YpOU33uX4g7dD6yxizVRgRLTTWsiB+/GOihLt4I/TFN1QJA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy7S-0000Nu-TK
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:50 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy7S-0005R1-SH
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:11:50 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] mem_sharing: fix sharability check during fork reset
Message-Id: <E1jRy7S-0005R1-SH@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 13:11:50 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f5500c3196455572f0c79fb7b6d8e5141a7385c8
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Fri Apr 24 15:05:33 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:05:33 2020 +0200

    mem_sharing: fix sharability check during fork reset
    
    When resetting a VM fork we ought to only remove pages that were allocated for
    the fork during it's execution and the contents copied over from the parent.
    This can be determined if the page is sharable as special pages used by the
    fork for other purposes will not pass this test. Unfortunately during the fork
    reset loop we only partially check whether that's the case. A page's type may
    indicate it is sharable (pass p2m_is_sharable) but that's not a sufficient
    check by itself. All checks that are normally performed before a page is
    converted to the sharable type need to be performed to avoid removing pages
    from the p2m that may be used for other purposes. For example, currently the
    reset loop also removes the vcpu info pages from the p2m, potentially putting
    the guest into infinite page-fault loops.
    
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/mm/mem_sharing.c | 83 ++++++++++++++++++++++++-------------------
 1 file changed, 47 insertions(+), 36 deletions(-)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index bb74595351..344a5bfb3d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -633,31 +633,33 @@ unsigned int mem_sharing_get_nr_shared_mfns(void)
 /* Functions that change a page's type and ownership */
 static int page_make_sharable(struct domain *d,
                               struct page_info *page,
-                              int expected_refcnt)
+                              unsigned int expected_refcnt,
+                              bool validate_only)
 {
-    bool_t drop_dom_ref;
+    int rc = 0;
+    bool drop_dom_ref = false;
 
-    spin_lock(&d->page_alloc_lock);
+    spin_lock_recursive(&d->page_alloc_lock);
 
     if ( d->is_dying )
     {
-        spin_unlock(&d->page_alloc_lock);
-        return -EBUSY;
+        rc = -EBUSY;
+        goto out;
     }
 
     /* Change page type and count atomically */
     if ( !get_page_and_type(page, d, PGT_shared_page) )
     {
-        spin_unlock(&d->page_alloc_lock);
-        return -EINVAL;
+        rc = -EINVAL;
+        goto out;
     }
 
     /* Check it wasn't already sharable and undo if it was */
     if ( (page->u.inuse.type_info & PGT_count_mask) != 1 )
     {
-        spin_unlock(&d->page_alloc_lock);
         put_page_and_type(page);
-        return -EEXIST;
+        rc = -EEXIST;
+        goto out;
     }
 
     /*
@@ -666,20 +668,26 @@ static int page_make_sharable(struct domain *d,
      */
     if ( page->count_info != (PGC_allocated | (2 + expected_refcnt)) )
     {
-        spin_unlock(&d->page_alloc_lock);
         /* Return type count back to zero */
         put_page_and_type(page);
-        return -E2BIG;
+        rc = -E2BIG;
+        goto out;
     }
 
-    page_set_owner(page, dom_cow);
-    drop_dom_ref = !domain_adjust_tot_pages(d, -1);
-    page_list_del(page, &d->page_list);
-    spin_unlock(&d->page_alloc_lock);
+    if ( !validate_only )
+    {
+        page_set_owner(page, dom_cow);
+        drop_dom_ref = !domain_adjust_tot_pages(d, -1);
+        page_list_del(page, &d->page_list);
+    }
+
+out:
+    spin_unlock_recursive(&d->page_alloc_lock);
 
     if ( drop_dom_ref )
         put_domain(d);
-    return 0;
+
+    return rc;
 }
 
 static int page_make_private(struct domain *d, struct page_info *page)
@@ -810,7 +818,8 @@ static int debug_gref(struct domain *d, grant_ref_t ref)
 }
 
 static int nominate_page(struct domain *d, gfn_t gfn,
-                         int expected_refcnt, shr_handle_t *phandle)
+                         unsigned int expected_refcnt, bool validate_only,
+                         shr_handle_t *phandle)
 {
     struct p2m_domain *hp2m = p2m_get_hostp2m(d);
     p2m_type_t p2mt;
@@ -879,8 +888,8 @@ static int nominate_page(struct domain *d, gfn_t gfn,
     }
 
     /* Try to convert the mfn to the sharable type */
-    ret = page_make_sharable(d, page, expected_refcnt);
-    if ( ret )
+    ret = page_make_sharable(d, page, expected_refcnt, validate_only);
+    if ( ret || validate_only )
         goto out;
 
     /*
@@ -1392,13 +1401,13 @@ static int range_share(struct domain *d, struct domain *cd,
          * We only break out if we run out of memory as individual pages may
          * legitimately be unsharable and we just want to skip over those.
          */
-        rc = nominate_page(d, _gfn(start), 0, &sh);
+        rc = nominate_page(d, _gfn(start), 0, false, &sh);
         if ( rc == -ENOMEM )
             break;
 
         if ( !rc )
         {
-            rc = nominate_page(cd, _gfn(start), 0, &ch);
+            rc = nominate_page(cd, _gfn(start), 0, false, &ch);
             if ( rc == -ENOMEM )
                 break;
 
@@ -1478,7 +1487,7 @@ int mem_sharing_fork_page(struct domain *d, gfn_t gfn, bool unsharing)
         /* For read-only accesses we just add a shared entry to the physmap */
         while ( parent )
         {
-            if ( !(rc = nominate_page(parent, gfn, 0, &handle)) )
+            if ( !(rc = nominate_page(parent, gfn, 0, false, &handle)) )
                 break;
 
             parent = parent->parent;
@@ -1775,20 +1784,22 @@ static int mem_sharing_fork_reset(struct domain *d, struct domain *pd)
     spin_lock_recursive(&d->page_alloc_lock);
     page_list_for_each_safe(page, tmp, &d->page_list)
     {
-        p2m_type_t p2mt;
-        p2m_access_t p2ma;
+        shr_handle_t sh;
         mfn_t mfn = page_to_mfn(page);
         gfn_t gfn = mfn_to_gfn(d, mfn);
 
-        mfn = __get_gfn_type_access(p2m, gfn_x(gfn), &p2mt, &p2ma,
-                                    0, NULL, false);
-
-        /* only reset pages that are sharable */
-        if ( !p2m_is_sharable(p2mt) )
-            continue;
-
-        /* take an extra reference or just skip if can't for whatever reason */
-        if ( !get_page(page, d) )
+        /*
+         * We only want to remove pages from the fork here that were copied
+         * from the parent but could be potentially re-populated using memory
+         * sharing after the reset. These pages all must be regular pages with
+         * no extra reference held to them, thus should be possible to make
+         * them sharable. Unfortunately p2m_is_sharable check is not sufficient
+         * to test this as it doesn't check the page's reference count. We thus
+         * check whether the page is convertable to the shared type using
+         * nominate_page. In case the page is already shared (ie. a share
+         * handle is returned) then we don't remove it.
+         */
+        if ( (rc = nominate_page(d, gfn, 0, true, &sh)) || sh )
             continue;
 
         /* forked memory is 4k, not splitting large pages so this must work */
@@ -1797,7 +1808,7 @@ static int mem_sharing_fork_reset(struct domain *d, struct domain *pd)
         ASSERT(!rc);
 
         put_page_alloc_ref(page);
-        put_page(page);
+        put_page_and_type(page);
     }
     spin_unlock_recursive(&d->page_alloc_lock);
 
@@ -1839,7 +1850,7 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
     {
         shr_handle_t handle;
 
-        rc = nominate_page(d, _gfn(mso.u.nominate.u.gfn), 0, &handle);
+        rc = nominate_page(d, _gfn(mso.u.nominate.u.gfn), 0, false, &handle);
         mso.u.nominate.handle = handle;
     }
     break;
@@ -1854,7 +1865,7 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         if ( rc < 0 )
             goto out;
 
-        rc = nominate_page(d, gfn, 3, &handle);
+        rc = nominate_page(d, gfn, 3, false, &handle);
         mso.u.nominate.handle = handle;
     }
     break;
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 13:12:04 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 13:12:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRy7g-0006I2-21; Fri, 24 Apr 2020 13:12:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRy7e-0006Hp-Jf
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:12:02 +0000
X-Inumbo-ID: 2f0dd5b3-862d-11ea-94a3-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2f0dd5b3-862d-11ea-94a3-12813bfff9fa;
 Fri, 24 Apr 2020 13:12:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=3uB8yx+wzgbH9r2fnYxt6tD8Xa1rZCsonEBfinSnD1E=; b=c5rNLPVGX/f0N0RVVIAMhvxhpt
 iKsaTxsXeB50FOcYGIWGxwK4zmjOe7lQVLb/FqrwgjgMtGE2KvEBNEW+IFk+8J8jfK67Ijrks3xz8
 +WpeuAkHPEmuiwGrk4J8DU8NIfIzqOzj9SNYBOgQ3oKRL4IUqjvmrm14MO8rnGcX7BQs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy7d-0000O3-0p
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:12:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRy7c-0005S2-W5
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 13:12:00 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86: drop cpu_has_ffxsr
Message-Id: <E1jRy7c-0005S2-W5@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 13:12:00 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 96b5c267e52657e99bd1bbf81dd51925447115e2
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Fri Apr 24 15:06:15 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:06:15 2020 +0200

    x86: drop cpu_has_ffxsr
    
    It's definition is bogus when it comes to Hygon CPUs, but since we don't
    use it anywhere drop it rather than correcting it.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/include/asm-x86/cpufeature.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/xen/include/asm-x86/cpufeature.h b/xen/include/asm-x86/cpufeature.h
index fb8137e3e8..859970570b 100644
--- a/xen/include/asm-x86/cpufeature.h
+++ b/xen/include/asm-x86/cpufeature.h
@@ -66,8 +66,6 @@
 
 /* CPUID level 0x80000001.edx */
 #define cpu_has_nx              boot_cpu_has(X86_FEATURE_NX)
-#define cpu_has_ffxsr           ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) \
-                                 && boot_cpu_has(X86_FEATURE_FFXSR))
 #define cpu_has_page1gb         boot_cpu_has(X86_FEATURE_PAGE1GB)
 #define cpu_has_rdtscp          boot_cpu_has(X86_FEATURE_RDTSCP)
 #define cpu_has_3dnow_ext       boot_cpu_has(X86_FEATURE_3DNOWEXT)
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:00:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:00:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRys8-0001ur-PN; Fri, 24 Apr 2020 14:00:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRys7-0001r5-Gj
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:03 +0000
X-Inumbo-ID: e498cf12-8633-11ea-94af-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e498cf12-8633-11ea-94af-12813bfff9fa;
 Fri, 24 Apr 2020 14:00:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=y8FzZBoh5vLdO6qP2Xup2h7/QJd/z8R7wArNN8RYKBg=; b=GvDHVbbBnISPxBYm2QbYgLQpOv
 3iHI9yJn0OOqX8tbGgOy62f4xFymamNOlWaEL7yZIaX5O2Z3JwBWu72EbFLCrs8CvCdHoo/TSqCjx
 Jk8roeTK2BWs/yWZh1yHxKCN6Oex4X1z0OGjny2pFN+2nBeIiv02+2AyLLVU8ix00svM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRys6-0001SL-D7
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRys6-0000cy-Bw
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/HVM: cancel emulation when register state got altered
Message-Id: <E1jRys6-0000cy-Bw@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:00:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a141051d7695265c721863dc91a2dc206b9ff5b1
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 23 09:51:18 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:51:18 2020 +0200

    x86/HVM: cancel emulation when register state got altered
    
    Re-execution (after having received data from a device model) relies on
    the same register state still being in place as it was when the request
    was first sent to the device model. Therefore vCPU state changes
    effected by remote sources need to result in no attempt of re-execution.
    Instead the returned data is to simply be ignored.
    
    Note that any such asynchronous state changes happen with the vCPU at
    least paused (potentially down and/or not marked ->is_initialised), so
    there's no issue with fiddling with register state behind the actively
    running emulator's back. Hence the new function doesn't need to
    synchronize with the core emulation logic.
    
    Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <pdurrant@amzn.com>
---
 xen/arch/x86/domctl.c             |  6 ++++++
 xen/arch/x86/hvm/domain.c         |  4 ++++
 xen/arch/x86/hvm/emulate.c        | 17 +++++++++++++++++
 xen/arch/x86/hvm/hvm.c            | 10 ++++++++++
 xen/arch/x86/hvm/vlapic.c         |  3 +++
 xen/include/asm-x86/hvm/emulate.h |  1 +
 xen/include/asm-x86/hvm/hvm.h     |  9 ++-------
 7 files changed, 43 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index add70126b9..03dffa5ecf 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -21,6 +21,7 @@
 #include <xen/iocap.h>
 #include <xen/paging.h>
 #include <asm/irq.h>
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/hvm.h>
 #include <asm/hvm/support.h>
 #include <asm/processor.h>
@@ -1147,11 +1148,16 @@ long arch_do_domctl(
             else
             {
                 vcpu_pause(v);
+
                 v->arch.xcr0 = _xcr0;
                 v->arch.xcr0_accum = _xcr0_accum;
                 v->arch.nonlazy_xstate_used = _xcr0_accum & XSTATE_NONLAZY;
                 compress_xsave_states(v, _xsave_area,
                                       evc->size - PV_XSAVE_HDR_SIZE);
+
+                if ( is_hvm_domain(d) )
+                    hvmemul_cancel(v);
+
                 vcpu_unpause(v);
             }
 
diff --git a/xen/arch/x86/hvm/domain.c b/xen/arch/x86/hvm/domain.c
index 5d5a746a25..8e3375265c 100644
--- a/xen/arch/x86/hvm/domain.c
+++ b/xen/arch/x86/hvm/domain.c
@@ -22,6 +22,8 @@
 #include <xen/paging.h>
 #include <xen/sched.h>
 
+#include <asm/hvm/emulate.h>
+
 #include <public/hvm/hvm_vcpu.h>
 
 static int check_segment(struct segment_register *reg, enum x86_segment seg)
@@ -323,6 +325,8 @@ int arch_set_info_hvm_guest(struct vcpu *v, const vcpu_hvm_context_t *ctx)
 
     paging_update_paging_modes(v);
 
+    hvmemul_cancel(v);
+
     v->is_initialised = 1;
     set_bit(_VPF_down, &v->pause_flags);
 
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index d717277b2f..a4185c68cb 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -121,6 +121,23 @@ static const struct hvm_io_handler ioreq_server_handler = {
     .ops = &ioreq_server_ops
 };
 
+/*
+ * Drop all records of in-flight emulation. This is needed whenever a vCPU's
+ * register state may have changed behind the emulator's back.
+ */
+void hvmemul_cancel(struct vcpu *v)
+{
+    struct hvm_vcpu_io *vio = &v->arch.hvm.hvm_io;
+
+    vio->io_req.state = STATE_IOREQ_NONE;
+    vio->io_completion = HVMIO_no_completion;
+    vio->mmio_cache_count = 0;
+    vio->mmio_insn_bytes = 0;
+    vio->mmio_access = (struct npfec){};
+    vio->mmio_retry = false;
+    vio->g2m_ioport = NULL;
+}
+
 static int hvmemul_do_io(
     bool_t is_mmio, paddr_t addr, unsigned long *reps, unsigned int size,
     uint8_t dir, bool_t df, bool_t data_is_addr, uintptr_t data)
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 45959d3412..34b39e27df 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -478,6 +478,14 @@ u64 hvm_get_guest_tsc_fixed(struct vcpu *v, uint64_t at_tsc)
     return tsc + v->arch.hvm.cache_tsc_offset;
 }
 
+void hvm_set_info_guest(struct vcpu *v)
+{
+    if ( hvm_funcs.set_info_guest )
+        alternative_vcall(hvm_funcs.set_info_guest, v);
+
+    hvmemul_cancel(v);
+}
+
 void hvm_migrate_timers(struct vcpu *v)
 {
     rtc_migrate_timers(v);
@@ -1163,6 +1171,8 @@ static int hvm_load_cpu_ctxt(struct domain *d, hvm_domain_context_t *h)
     v->arch.dr6   = ctxt.dr6;
     v->arch.dr7   = ctxt.dr7;
 
+    hvmemul_cancel(v);
+
     /* Auxiliary processors should be woken immediately. */
     v->is_initialised = 1;
     clear_bit(_VPF_down, &v->pause_flags);
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 26726a4312..7b5c633033 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -33,6 +33,7 @@
 #include <asm/apic.h>
 #include <asm/io_apic.h>
 #include <asm/vpmu.h>
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/hvm.h>
 #include <asm/hvm/io.h>
 #include <asm/hvm/support.h>
@@ -306,6 +307,8 @@ static void vlapic_init_sipi_one(struct vcpu *target, uint32_t icr)
         BUG();
     }
 
+    hvmemul_cancel(target);
+
     vcpu_unpause(target);
 }
 
diff --git a/xen/include/asm-x86/hvm/emulate.h b/xen/include/asm-x86/hvm/emulate.h
index 2bdddef730..a2ad7ff1aa 100644
--- a/xen/include/asm-x86/hvm/emulate.h
+++ b/xen/include/asm-x86/hvm/emulate.h
@@ -77,6 +77,7 @@ void hvm_emulate_init_per_insn(
     unsigned int insn_bytes);
 void hvm_emulate_writeback(
     struct hvm_emulate_ctxt *hvmemul_ctxt);
+void hvmemul_cancel(struct vcpu *v);
 struct segment_register *hvmemul_get_seg_reg(
     enum x86_segment seg,
     struct hvm_emulate_ctxt *hvmemul_ctxt);
diff --git a/xen/include/asm-x86/hvm/hvm.h b/xen/include/asm-x86/hvm/hvm.h
index f283c7d187..1eb377dd82 100644
--- a/xen/include/asm-x86/hvm/hvm.h
+++ b/xen/include/asm-x86/hvm/hvm.h
@@ -277,6 +277,8 @@ void hvm_get_segment_register(struct vcpu *v, enum x86_segment seg,
 void hvm_set_segment_register(struct vcpu *v, enum x86_segment seg,
                               struct segment_register *reg);
 
+void hvm_set_info_guest(struct vcpu *v);
+
 bool hvm_set_guest_bndcfgs(struct vcpu *v, u64 val);
 
 int hvm_vmexit_cpuid(struct cpu_user_regs *regs, unsigned int inst_len);
@@ -545,12 +547,6 @@ static inline unsigned int hvm_get_insn_bytes(struct vcpu *v, uint8_t *buf)
             ? alternative_call(hvm_funcs.get_insn_bytes, v, buf) : 0);
 }
 
-static inline void hvm_set_info_guest(struct vcpu *v)
-{
-    if ( hvm_funcs.set_info_guest )
-        alternative_vcall(hvm_funcs.set_info_guest, v);
-}
-
 static inline void hvm_invalidate_regs_fields(struct cpu_user_regs *regs)
 {
 #ifndef NDEBUG
@@ -681,7 +677,6 @@ static inline bool altp2m_vcpu_emulate_ve(struct vcpu *v)
  */
 int hvm_guest_x86_mode(struct vcpu *v);
 unsigned long hvm_get_shadow_gs_base(struct vcpu *v);
-void hvm_set_info_guest(struct vcpu *v);
 void hvm_cpuid_policy_changed(struct vcpu *v);
 void hvm_set_tsc_offset(struct vcpu *v, uint64_t offset, uint64_t at_tsc);
 bool hvm_get_guest_bndcfgs(struct vcpu *v, uint64_t *val);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:00:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:00:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRysJ-0002Kv-RO; Fri, 24 Apr 2020 14:00:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRysI-0002Kh-IB
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:14 +0000
X-Inumbo-ID: ead415e4-8633-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ead415e4-8633-11ea-9e09-bc764e2007e4;
 Fri, 24 Apr 2020 14:00:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=i90v8npRbh5X5Mb5f+0Ag8JL/Y7uRsO0VVYAgAfuqCY=; b=pK87oKeodK/yh/t827N/dScIZx
 9KziBeHhR28JbMUFNfOb3bqA2rajkUrXKoyehuSRFzr81Eibid1+Ssl4+2Z0rskrKs+/l5EZn6e7l
 L5ABB5ZgK45O3byPxPdCtH4yVk6ESIHlFBiJS68nDXfi3q7IIUl0NPtAYNAe0Ko/ntYU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysG-0001SR-Sb
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysG-0000fY-Oz
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/HVM: implement memory read caching for insn emulation
Message-Id: <E1jRysG-0000fY-Oz@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:00:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2efbc2d446b1315de9c6441a4d535b1fb91e1767
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 23 09:55:00 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:55:00 2020 +0200

    x86/HVM: implement memory read caching for insn emulation
    
    Emulation requiring device model assistance uses a form of instruction
    re-execution, assuming that the second (and any further) pass takes
    exactly the same path. This is a valid assumption as far as use of CPU
    registers goes (as those can't change without any other instruction
    executing in between [1]), but is wrong for memory accesses. In
    particular it has been observed that Windows might page out buffers
    underneath an instruction currently under emulation (hitting between two
    passes). If the first pass read a memory operand successfully, any
    subsequent pass needs to get to see the exact same value.
    
    Introduce a cache to make sure above described assumption holds. This
    is a very simplistic implementation for now: Only exact matches are
    satisfied (no overlaps or partial reads or anything); this is sufficient
    for the immediate purpose of making re-execution an exact replay. The
    cache also won't be used just yet for guest page walks; that'll be the
    subject of a subsequent change.
    
    With the cache being generally transparent to upper layers, but with it
    having limited capacity yet being required for correctness, certain
    users of hvm_copy_from_guest_*() need to disable caching temporarily,
    without invalidating the cache. Note that the adjustments here to
    hvm_hypercall() and hvm_task_switch() are benign at this point; they'll
    become relevant once we start to be able to emulate respective insns
    through the main emulator (and more changes will then likely be needed
    to nested code).
    
    As to the actual data page in a problamtic scenario, there are a couple
    of aspects to take into consideration:
    - We must be talking about an insn accessing two locations (two memory
      ones, one of which is MMIO, or a memory and an I/O one).
    - If the non I/O / MMIO side is being read, the re-read (if it occurs at
      all) is having its result discarded, by taking the shortcut through
      the first switch()'s STATE_IORESP_READY case in hvmemul_do_io(). Note
      how, among all the re-issue sanity checks there, we avoid comparing
      the actual data.
    - If the non I/O / MMIO side is being written, it is the OSes
      responsibility to avoid actually moving page contents to disk while
      there might still be a write access in flight - this is no different
      in behavior from bare hardware.
    - Read-modify-write accesses are, as always, complicated, and while we
      deal with them better nowadays than we did in the past, we're still
      not quite there to guarantee hardware like behavior in all cases
      anyway. Nothing is getting worse by the changes made here, afaict.
    
    In __hvm_copy() also reduce p's scope and change its type to void *.
    
    [1] Other than on actual hardware, actions like
        XEN_DOMCTL_sethvmcontext, XEN_DOMCTL_setvcpucontext,
        VCPUOP_initialise, INIT, or SIPI issued against the vCPU can occur
        while the vCPU is blocked waiting for a device model to return data.
        In such cases emulation now gets canceled, though, and hence re-
        execution correctness is unaffected.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <pdurrant@amzn.com>
---
 xen/arch/x86/hvm/emulate.c        | 151 ++++++++++++++++++++++++++++++++++++++
 xen/arch/x86/hvm/hvm.c            |  36 ++++++---
 xen/arch/x86/hvm/hypercall.c      |  23 +++++-
 xen/arch/x86/hvm/intercept.c      |   8 +-
 xen/arch/x86/hvm/svm/svm.c        |   2 +
 xen/arch/x86/hvm/vmsi.c           |   4 +
 xen/arch/x86/hvm/vmx/vmx.c        |   2 +
 xen/include/asm-x86/hvm/emulate.h |  34 +++++++++
 xen/include/asm-x86/hvm/vcpu.h    |   2 +
 9 files changed, 249 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index a4185c68cb..6b3cbc7e50 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -28,6 +28,19 @@
 #include <asm/iocap.h>
 #include <asm/vm_event.h>
 
+struct hvmemul_cache
+{
+    /* The cache is disabled as long as num_ents > max_ents. */
+    unsigned int num_ents;
+    unsigned int max_ents;
+    struct {
+        paddr_t gpa:PADDR_BITS;
+        unsigned int :BITS_PER_LONG - PADDR_BITS - 8;
+        unsigned int size:8;
+        unsigned long data;
+    } ents[];
+};
+
 static void hvmtrace_io_assist(const ioreq_t *p)
 {
     unsigned int size, event;
@@ -136,6 +149,8 @@ void hvmemul_cancel(struct vcpu *v)
     vio->mmio_access = (struct npfec){};
     vio->mmio_retry = false;
     vio->g2m_ioport = NULL;
+
+    hvmemul_cache_disable(v);
 }
 
 static int hvmemul_do_io(
@@ -1883,12 +1898,17 @@ static int hvmemul_rep_movs(
         rc = HVMTRANS_okay;
     }
     else
+    {
+        unsigned int token = hvmemul_cache_disable(curr);
+
         /*
          * We do a modicum of checking here, just for paranoia's sake and to
          * definitely avoid copying an unitialised buffer into guest address
          * space.
          */
         rc = hvm_copy_from_guest_phys(buf, sgpa, bytes);
+        hvmemul_cache_restore(curr, token);
+    }
 
     if ( rc == HVMTRANS_okay )
         rc = hvm_copy_to_guest_phys(dgpa, buf, bytes, curr);
@@ -2551,6 +2571,19 @@ static int _hvm_emulate_one(struct hvm_emulate_ctxt *hvmemul_ctxt,
     struct hvm_vcpu_io *vio = &curr->arch.hvm.hvm_io;
     int rc;
 
+    /*
+     * Enable caching if it's currently disabled, but leave the cache
+     * untouched if it's already enabled, for re-execution to consume
+     * entries populated by an earlier pass.
+     */
+    if ( vio->cache->num_ents > vio->cache->max_ents )
+    {
+        ASSERT(vio->io_req.state == STATE_IOREQ_NONE);
+        vio->cache->num_ents = 0;
+    }
+    else
+        ASSERT(vio->io_req.state == STATE_IORESP_READY);
+
     hvm_emulate_init_per_insn(hvmemul_ctxt, vio->mmio_insn,
                               vio->mmio_insn_bytes);
 
@@ -2564,6 +2597,7 @@ static int _hvm_emulate_one(struct hvm_emulate_ctxt *hvmemul_ctxt,
     {
         vio->mmio_cache_count = 0;
         vio->mmio_insn_bytes = 0;
+        hvmemul_cache_disable(curr);
     }
     else
     {
@@ -2856,6 +2890,123 @@ void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
            hvmemul_ctxt->insn_buf);
 }
 
+int hvmemul_cache_init(struct vcpu *v)
+{
+    /*
+     * No insn can access more than 16 independent linear addresses (AVX512F
+     * scatters/gathers being the worst). Each such linear range can span a
+     * page boundary, i.e. may require two page walks. Account for each insn
+     * byte individually, for simplicity.
+     */
+    const unsigned int nents = (CONFIG_PAGING_LEVELS + 1) *
+                               (MAX_INST_LEN + 16 * 2);
+    struct hvmemul_cache *cache = xmalloc_flex_struct(struct hvmemul_cache,
+                                                      ents, nents);
+
+    if ( !cache )
+        return -ENOMEM;
+
+    /* Cache is disabled initially. */
+    cache->num_ents = nents + 1;
+    cache->max_ents = nents;
+
+    v->arch.hvm.hvm_io.cache = cache;
+
+    return 0;
+}
+
+unsigned int hvmemul_cache_disable(struct vcpu *v)
+{
+    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+    unsigned int token = cache->num_ents;
+
+    cache->num_ents = cache->max_ents + 1;
+
+    return token;
+}
+
+void hvmemul_cache_restore(struct vcpu *v, unsigned int token)
+{
+    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+
+    ASSERT(cache->num_ents > cache->max_ents);
+    cache->num_ents = token;
+}
+
+bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
+                        void *buffer, unsigned int size)
+{
+    const struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+    unsigned int i;
+
+    /* Cache unavailable? */
+    if ( cache->num_ents > cache->max_ents )
+        return false;
+
+    while ( size > sizeof(cache->ents->data) )
+    {
+        i = gpa & (sizeof(cache->ents->data) - 1)
+            ? -gpa & (sizeof(cache->ents->data) - 1)
+            : sizeof(cache->ents->data);
+        if ( !hvmemul_read_cache(v, gpa, buffer, i) )
+            return false;
+        gpa += i;
+        buffer += i;
+        size -= i;
+    }
+
+    for ( i = 0; i < cache->num_ents; ++i )
+        if ( cache->ents[i].gpa == gpa && cache->ents[i].size == size )
+        {
+            memcpy(buffer, &cache->ents[i].data, size);
+            return true;
+        }
+
+    return false;
+}
+
+void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
+                         const void *buffer, unsigned int size)
+{
+    struct hvmemul_cache *cache = v->arch.hvm.hvm_io.cache;
+    unsigned int i;
+
+    /* Cache unavailable? */
+    if ( cache->num_ents > cache->max_ents )
+        return;
+
+    while ( size > sizeof(cache->ents->data) )
+    {
+        i = gpa & (sizeof(cache->ents->data) - 1)
+            ? -gpa & (sizeof(cache->ents->data) - 1)
+            : sizeof(cache->ents->data);
+        hvmemul_write_cache(v, gpa, buffer, i);
+        gpa += i;
+        buffer += i;
+        size -= i;
+    }
+
+    for ( i = 0; i < cache->num_ents; ++i )
+        if ( cache->ents[i].gpa == gpa && cache->ents[i].size == size )
+        {
+            memcpy(&cache->ents[i].data, buffer, size);
+            return;
+        }
+
+    if ( unlikely(i >= cache->max_ents) )
+    {
+        domain_crash(v->domain);
+        return;
+    }
+
+    cache->ents[i].gpa  = gpa;
+    cache->ents[i].size = size;
+
+    memcpy(&cache->ents[i].data, buffer, size);
+
+    cache->num_ents = i + 1;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 34b39e27df..814b7020d8 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -727,6 +727,8 @@ int hvm_domain_initialise(struct domain *d)
 /* This function and all its descendants need to be to be idempotent. */
 void hvm_domain_relinquish_resources(struct domain *d)
 {
+    struct vcpu *v;
+
     if ( hvm_funcs.domain_relinquish_resources )
         alternative_vcall(hvm_funcs.domain_relinquish_resources, d);
 
@@ -743,6 +745,9 @@ void hvm_domain_relinquish_resources(struct domain *d)
     rtc_deinit(d);
     pmtimer_deinit(d);
     hpet_deinit(d);
+
+    for_each_vcpu ( d, v )
+        hvmemul_cache_destroy(v);
 }
 
 void hvm_domain_destroy(struct domain *d)
@@ -1550,6 +1555,10 @@ int hvm_vcpu_initialise(struct vcpu *v)
 
     v->arch.hvm.inject_event.vector = HVM_EVENT_VECTOR_UNSET;
 
+    rc = hvmemul_cache_init(v);
+    if ( rc )
+        goto fail4;
+
     rc = setup_compat_arg_xlat(v); /* teardown: free_compat_arg_xlat() */
     if ( rc != 0 )
         goto fail4;
@@ -1585,6 +1594,7 @@ int hvm_vcpu_initialise(struct vcpu *v)
  fail5:
     free_compat_arg_xlat(v);
  fail4:
+    hvmemul_cache_destroy(v);
     hvm_funcs.vcpu_destroy(v);
  fail3:
     vlapic_destroy(v);
@@ -2946,6 +2956,7 @@ void hvm_task_switch(
     unsigned int eflags, new_cpl;
     pagefault_info_t pfinfo;
     int exn_raised, rc;
+    unsigned int token = hvmemul_cache_disable(v);
     struct tss32 tss;
 
     hvm_get_segment_register(v, x86_seg_gdtr, &gdt);
@@ -3153,6 +3164,8 @@ void hvm_task_switch(
  out:
     hvm_unmap_entry(optss_desc);
     hvm_unmap_entry(nptss_desc);
+
+    hvmemul_cache_restore(v, token);
 }
 
 enum hvm_translation_result hvm_translate_get_page(
@@ -3240,7 +3253,6 @@ static enum hvm_translation_result __hvm_copy(
     void *buf, paddr_t addr, unsigned int size, struct vcpu *v, unsigned int flags,
     uint32_t pfec, pagefault_info_t *pfinfo)
 {
-    char *p;
     ASSERT(is_hvm_vcpu(v));
 
     /*
@@ -3288,11 +3300,17 @@ static enum hvm_translation_result __hvm_copy(
             return HVMTRANS_need_retry;
         }
 
-        p = __map_domain_page(page) + pgoff;
-
-        if ( flags & HVMCOPY_to_guest )
+        if ( (flags & HVMCOPY_to_guest) ||
+             !hvmemul_read_cache(v, gfn_to_gaddr(gfn) | pgoff, buf, count) )
         {
-            if ( p2m_is_discard_write(p2mt) )
+            void *p = __map_domain_page(page) + pgoff;
+
+            if ( !(flags & HVMCOPY_to_guest) )
+            {
+                memcpy(buf, p, count);
+                hvmemul_write_cache(v, gfn_to_gaddr(gfn) | pgoff, buf, count);
+            }
+            else if ( p2m_is_discard_write(p2mt) )
             {
                 static unsigned long lastpage;
 
@@ -3309,13 +3327,9 @@ static enum hvm_translation_result __hvm_copy(
                     memset(p, 0, count);
                 paging_mark_pfn_dirty(v->domain, _pfn(gfn_x(gfn)));
             }
-        }
-        else
-        {
-            memcpy(buf, p, count);
-        }
 
-        unmap_domain_page(p);
+            unmap_domain_page(p);
+        }
 
         addr += count;
         if ( buf )
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index b4a0aeab50..17ba0fe91b 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -22,6 +22,7 @@
 #include <xen/hypercall.h>
 #include <xen/nospec.h>
 
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/support.h>
 #include <asm/hvm/viridian.h>
 
@@ -164,6 +165,7 @@ int hvm_hypercall(struct cpu_user_regs *regs)
     struct domain *currd = curr->domain;
     int mode = hvm_guest_x86_mode(curr);
     unsigned long eax = regs->eax;
+    unsigned int token;
 
     switch ( mode )
     {
@@ -188,7 +190,18 @@ int hvm_hypercall(struct cpu_user_regs *regs)
     }
 
     if ( (eax & 0x80000000) && is_viridian_domain(currd) )
-        return viridian_hypercall(regs);
+    {
+        int ret;
+
+        /* See comment below. */
+        token = hvmemul_cache_disable(curr);
+
+        ret = viridian_hypercall(regs);
+
+        hvmemul_cache_restore(curr, token);
+
+        return ret;
+    }
 
     BUILD_BUG_ON(ARRAY_SIZE(hvm_hypercall_table) >
                  ARRAY_SIZE(hypercall_args_table));
@@ -207,6 +220,12 @@ int hvm_hypercall(struct cpu_user_regs *regs)
         return HVM_HCALL_completed;
     }
 
+    /*
+     * Caching is intended for instruction emulation only. Disable it
+     * for any accesses by hypercall argument copy-in / copy-out.
+     */
+    token = hvmemul_cache_disable(curr);
+
     curr->hcall_preempted = false;
 
     if ( mode == 8 )
@@ -300,6 +319,8 @@ int hvm_hypercall(struct cpu_user_regs *regs)
 #endif
     }
 
+    hvmemul_cache_restore(curr, token);
+
     HVM_DBG_LOG(DBG_LEVEL_HCALL, "hcall%lu -> %lx", eax, regs->rax);
 
     if ( curr->hcall_preempted )
diff --git a/xen/arch/x86/hvm/intercept.c b/xen/arch/x86/hvm/intercept.c
index 0976a992ad..cd4c4c14b1 100644
--- a/xen/arch/x86/hvm/intercept.c
+++ b/xen/arch/x86/hvm/intercept.c
@@ -20,6 +20,7 @@
 #include <xen/types.h>
 #include <xen/sched.h>
 #include <asm/regs.h>
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/hvm.h>
 #include <asm/hvm/support.h>
 #include <asm/hvm/domain.h>
@@ -163,6 +164,9 @@ int hvm_process_io_intercept(const struct hvm_io_handler *handler,
         {
             if ( p->data_is_ptr )
             {
+                struct vcpu *curr = current;
+                unsigned int token = hvmemul_cache_disable(curr);
+
                 data = 0;
                 switch ( hvm_copy_from_guest_phys(&data, p->data + step * i,
                                                   p->size) )
@@ -179,9 +183,11 @@ int hvm_process_io_intercept(const struct hvm_io_handler *handler,
                     ASSERT_UNREACHABLE();
                     /* fall through */
                 default:
-                    domain_crash(current->domain);
+                    domain_crash(curr->domain);
                     return X86EMUL_UNHANDLEABLE;
                 }
+
+                hvmemul_cache_restore(curr, token);
             }
             else
                 data = p->data;
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index 888f504a94..5950e4d52b 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1040,6 +1040,8 @@ void svm_vmenter_helper(const struct cpu_user_regs *regs)
     struct vcpu *curr = current;
     struct vmcb_struct *vmcb = curr->arch.hvm.svm.vmcb;
 
+    ASSERT(hvmemul_cache_disabled(curr));
+
     svm_asid_handle_vmrun();
 
     if ( unlikely(tb_init_done) )
diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
index 6597d9f719..5d4eddebee 100644
--- a/xen/arch/x86/hvm/vmsi.c
+++ b/xen/arch/x86/hvm/vmsi.c
@@ -35,6 +35,7 @@
 #include <xen/irq.h>
 #include <xen/vpci.h>
 #include <public/hvm/ioreq.h>
+#include <asm/hvm/emulate.h>
 #include <asm/hvm/io.h>
 #include <asm/hvm/vpic.h>
 #include <asm/hvm/vlapic.h>
@@ -607,6 +608,7 @@ void msix_write_completion(struct vcpu *v)
     if ( !ctrl_address && snoop_addr &&
          v->arch.hvm.hvm_io.msix_snoop_gpa )
     {
+        unsigned int token = hvmemul_cache_disable(v);
         const struct msi_desc *desc;
         uint32_t data;
 
@@ -621,6 +623,8 @@ void msix_write_completion(struct vcpu *v)
                                       sizeof(data)) == HVMTRANS_okay &&
              !(data & PCI_MSIX_VECTOR_BITMASK) )
             ctrl_address = snoop_addr;
+
+        hvmemul_cache_restore(v, token);
     }
 
     if ( !ctrl_address )
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 869339062b..b4cf2eb4c1 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4362,6 +4362,8 @@ bool vmx_vmenter_helper(const struct cpu_user_regs *regs)
     struct hvm_vcpu_asid *p_asid;
     bool_t need_flush;
 
+    ASSERT(hvmemul_cache_disabled(curr));
+
     /* Shadow EPTP can't be updated here because irqs are disabled */
      if ( nestedhvm_vcpu_in_guestmode(curr) && vcpu_nestedhvm(curr).stale_np2m )
          return false;
diff --git a/xen/include/asm-x86/hvm/emulate.h b/xen/include/asm-x86/hvm/emulate.h
index a2ad7ff1aa..148bab93ce 100644
--- a/xen/include/asm-x86/hvm/emulate.h
+++ b/xen/include/asm-x86/hvm/emulate.h
@@ -14,6 +14,7 @@
 
 #include <xen/err.h>
 #include <xen/mm.h>
+#include <xen/sched.h>
 #include <asm/hvm/hvm.h>
 #include <asm/x86_emulate.h>
 
@@ -98,6 +99,39 @@ int hvmemul_do_pio_buffer(uint16_t port,
                           uint8_t dir,
                           void *buffer);
 
+#ifdef CONFIG_HVM
+/*
+ * The cache controlled by the functions below is not like an ordinary CPU
+ * cache, i.e. aiming to help performance, but a "secret store" which is
+ * needed for correctness.  The issue it helps addressing is the need for
+ * re-execution of an insn (after data was provided by a device model) to
+ * observe the exact same memory state, i.e. to specifically not observe any
+ * updates which may have occurred in the meantime by other agents.
+ * Therefore this cache gets
+ * - enabled when emulation of an insn starts,
+ * - disabled across processing secondary things like a hypercall resulting
+ *   from insn emulation,
+ * - disabled again when an emulated insn is known to not require any
+ *   further re-execution.
+ */
+int __must_check hvmemul_cache_init(struct vcpu *v);
+static inline void hvmemul_cache_destroy(struct vcpu *v)
+{
+    XFREE(v->arch.hvm.hvm_io.cache);
+}
+bool hvmemul_read_cache(const struct vcpu *, paddr_t gpa,
+                        void *buffer, unsigned int size);
+void hvmemul_write_cache(const struct vcpu *, paddr_t gpa,
+                         const void *buffer, unsigned int size);
+unsigned int hvmemul_cache_disable(struct vcpu *);
+void hvmemul_cache_restore(struct vcpu *, unsigned int token);
+/* For use in ASSERT()s only: */
+static inline bool hvmemul_cache_disabled(struct vcpu *v)
+{
+    return hvmemul_cache_disable(v) == hvmemul_cache_disable(v);
+}
+#endif
+
 void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
                               struct hvm_emulate_ctxt *hvmemul_ctxt, int rc);
 
diff --git a/xen/include/asm-x86/hvm/vcpu.h b/xen/include/asm-x86/hvm/vcpu.h
index 3d80cf5d76..5ccd075815 100644
--- a/xen/include/asm-x86/hvm/vcpu.h
+++ b/xen/include/asm-x86/hvm/vcpu.h
@@ -76,6 +76,8 @@ struct hvm_vcpu_io {
     /* For retries we shouldn't re-fetch the instruction. */
     unsigned int mmio_insn_bytes;
     unsigned char mmio_insn[16];
+    struct hvmemul_cache *cache;
+
     /*
      * For string instruction emulation we need to be able to signal a
      * necessary retry through other than function return codes.
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:00:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:00:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRysT-0002Ma-VB; Fri, 24 Apr 2020 14:00:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRysS-0002MP-IA
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:24 +0000
X-Inumbo-ID: f12413f4-8633-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f12413f4-8633-11ea-b4f4-bc764e2007e4;
 Fri, 24 Apr 2020 14:00:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HPyi64yxxiK95DYQKmpObSEgMZNXquYxw5XYoUs0O20=; b=QhCQYZDXLD0ybmr/Gru+hHR54W
 aCabJDu8ojNo17NqJBzIYl3wO0BpUmT4GmGpPfsxpB4wBIWQbdonCqZVkwtffI2RgVQnNGWW69owA
 9gFghq7lgly0nZjMF9cTJ7f4G0nUNhxCRxhYmhEzBP6+AY1KxsNhdRWlnlUdvb5Sh2js=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysR-0001TL-Dn
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysR-0000gP-Am
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/mm: use cache in guest_walk_tables()
Message-Id: <E1jRysR-0000gP-Am@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:00:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8e85181cf88f83c4ca289f7273863179b1c20611
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 23 09:58:04 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:58:04 2020 +0200

    x86/mm: use cache in guest_walk_tables()
    
    Emulation requiring device model assistance uses a form of instruction
    re-execution, assuming that the second (and any further) pass takes
    exactly the same path. This is a valid assumption as far as use of CPU
    registers goes (as those can't change without any other instruction
    executing in between [1]), but is wrong for memory accesses. In
    particular it has been observed that Windows might page out buffers
    underneath an instruction currently under emulation (hitting between two
    passes). If the first pass translated a linear address successfully, any
    subsequent pass needs to do so too, yielding the exact same translation.
    To guarantee this, leverage the caching that now backs HVM insn
    emulation.
    
    [1] Other than on actual hardware, actions like
        XEN_DOMCTL_sethvmcontext, XEN_DOMCTL_setvcpucontext,
        VCPUOP_initialise, INIT, or SIPI issued against the vCPU can occur
        while the vCPU is blocked waiting for a device model to return data.
        In such cases emulation now gets canceled, though, and hence re-
        execution correctness is unaffected.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Paul Durrant <pdurrant@amzn.com>
---
 xen/arch/x86/hvm/emulate.c        |  4 +--
 xen/arch/x86/mm/guest_walk.c      | 73 +++++++++++++++++++++++++++++++++------
 xen/arch/x86/mm/hap/guest_walk.c  |  3 +-
 xen/arch/x86/mm/shadow/multi.c    |  8 +++--
 xen/include/asm-x86/guest_pt.h    |  5 +--
 xen/include/asm-x86/hvm/emulate.h |  6 ++++
 6 files changed, 81 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index 6b3cbc7e50..e87ceaf23e 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2940,7 +2940,7 @@ bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
     unsigned int i;
 
     /* Cache unavailable? */
-    if ( cache->num_ents > cache->max_ents )
+    if ( !is_hvm_vcpu(v) || cache->num_ents > cache->max_ents )
         return false;
 
     while ( size > sizeof(cache->ents->data) )
@@ -2972,7 +2972,7 @@ void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
     unsigned int i;
 
     /* Cache unavailable? */
-    if ( cache->num_ents > cache->max_ents )
+    if ( !is_hvm_vcpu(v) || cache->num_ents > cache->max_ents )
         return;
 
     while ( size > sizeof(cache->ents->data) )
diff --git a/xen/arch/x86/mm/guest_walk.c b/xen/arch/x86/mm/guest_walk.c
index ab7021a1ce..1c601314f3 100644
--- a/xen/arch/x86/mm/guest_walk.c
+++ b/xen/arch/x86/mm/guest_walk.c
@@ -31,6 +31,7 @@ asm(".file \"" __OBJECT_FILE__ "\"");
 #include <xen/sched.h>
 #include <asm/page.h>
 #include <asm/guest_pt.h>
+#include <asm/hvm/emulate.h>
 
 /*
  * Modify a guest pagetable entry to set the Accessed and Dirty bits.
@@ -80,9 +81,9 @@ static bool set_ad_bits(guest_intpte_t *guest_p, guest_intpte_t *walk_p,
  * requested walk, to see whether the access is permitted.
  */
 bool
-guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
-                  unsigned long va, walk_t *gw,
-                  uint32_t walk, mfn_t top_mfn, void *top_map)
+guest_walk_tables(const struct vcpu *v, struct p2m_domain *p2m,
+                  unsigned long va, walk_t *gw, uint32_t walk,
+                  gfn_t top_gfn, mfn_t top_mfn, void *top_map)
 {
     struct domain *d = v->domain;
     guest_l1e_t *l1p = NULL;
@@ -90,8 +91,13 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
 #if GUEST_PAGING_LEVELS >= 4 /* 64-bit only... */
     guest_l3e_t *l3p = NULL;
     guest_l4e_t *l4p;
+    paddr_t l4gpa;
+#endif
+#if GUEST_PAGING_LEVELS >= 3 /* PAE or 64... */
+    paddr_t l3gpa;
 #endif
     uint32_t gflags, rc;
+    paddr_t l1gpa = 0, l2gpa = 0;
     unsigned int leaf_level;
     p2m_query_t qt = P2M_ALLOC | P2M_UNSHARE;
 
@@ -132,7 +138,13 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
     /* Get the l4e from the top level table and check its flags*/
     gw->l4mfn = top_mfn;
     l4p = (guest_l4e_t *) top_map;
-    gw->l4e = l4p[guest_l4_table_offset(va)];
+    l4gpa = gfn_to_gaddr(top_gfn) +
+            guest_l4_table_offset(va) * sizeof(gw->l4e);
+    if ( !hvmemul_read_cache(v, l4gpa, &gw->l4e, sizeof(gw->l4e)) )
+    {
+        gw->l4e = l4p[guest_l4_table_offset(va)];
+        hvmemul_write_cache(v, l4gpa, &gw->l4e, sizeof(gw->l4e));
+    }
     gflags = guest_l4e_get_flags(gw->l4e);
     if ( !(gflags & _PAGE_PRESENT) )
         goto out;
@@ -161,7 +173,13 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
     }
 
     /* Get the l3e and check its flags*/
-    gw->l3e = l3p[guest_l3_table_offset(va)];
+    l3gpa = gfn_to_gaddr(guest_l4e_get_gfn(gw->l4e)) +
+            guest_l3_table_offset(va) * sizeof(gw->l3e);
+    if ( !hvmemul_read_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e)) )
+    {
+        gw->l3e = l3p[guest_l3_table_offset(va)];
+        hvmemul_write_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e));
+    }
     gflags = guest_l3e_get_flags(gw->l3e);
     if ( !(gflags & _PAGE_PRESENT) )
         goto out;
@@ -213,7 +231,14 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
 #else /* PAE only... */
 
     /* Get the l3e and check its flag */
-    gw->l3e = ((guest_l3e_t *) top_map)[guest_l3_table_offset(va)];
+    l3gpa = gfn_to_gaddr(top_gfn) + ((unsigned long)top_map & ~PAGE_MASK) +
+            guest_l3_table_offset(va) * sizeof(gw->l3e);
+    if ( !hvmemul_read_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e)) )
+    {
+        gw->l3e = ((guest_l3e_t *)top_map)[guest_l3_table_offset(va)];
+        hvmemul_write_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e));
+    }
+
     gflags = guest_l3e_get_flags(gw->l3e);
     if ( !(gflags & _PAGE_PRESENT) )
         goto out;
@@ -238,18 +263,24 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
         goto out;
     }
 
-    /* Get the l2e */
-    gw->l2e = l2p[guest_l2_table_offset(va)];
+    l2gpa = gfn_to_gaddr(guest_l3e_get_gfn(gw->l3e));
 
 #else /* 32-bit only... */
 
-    /* Get l2e from the top level table */
     gw->l2mfn = top_mfn;
     l2p = (guest_l2e_t *) top_map;
-    gw->l2e = l2p[guest_l2_table_offset(va)];
+    l2gpa = gfn_to_gaddr(top_gfn);
 
 #endif /* All levels... */
 
+    /* Get the l2e */
+    l2gpa += guest_l2_table_offset(va) * sizeof(gw->l2e);
+    if ( !hvmemul_read_cache(v, l2gpa, &gw->l2e, sizeof(gw->l2e)) )
+    {
+        gw->l2e = l2p[guest_l2_table_offset(va)];
+        hvmemul_write_cache(v, l2gpa, &gw->l2e, sizeof(gw->l2e));
+    }
+
     /* Check the l2e flags. */
     gflags = guest_l2e_get_flags(gw->l2e);
     if ( !(gflags & _PAGE_PRESENT) )
@@ -330,7 +361,15 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
         gw->pfec |= rc & PFEC_synth_mask;
         goto out;
     }
-    gw->l1e = l1p[guest_l1_table_offset(va)];
+
+    l1gpa = gfn_to_gaddr(guest_l2e_get_gfn(gw->l2e)) +
+            guest_l1_table_offset(va) * sizeof(gw->l1e);
+    if ( !hvmemul_read_cache(v, l1gpa, &gw->l1e, sizeof(gw->l1e)) )
+    {
+        gw->l1e = l1p[guest_l1_table_offset(va)];
+        hvmemul_write_cache(v, l1gpa, &gw->l1e, sizeof(gw->l1e));
+    }
+
     gflags = guest_l1e_get_flags(gw->l1e);
     if ( !(gflags & _PAGE_PRESENT) )
         goto out;
@@ -441,22 +480,34 @@ guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m,
     case 1:
         if ( set_ad_bits(&l1p[guest_l1_table_offset(va)].l1, &gw->l1e.l1,
                          (walk & PFEC_write_access)) )
+        {
             paging_mark_dirty(d, gw->l1mfn);
+            hvmemul_write_cache(v, l1gpa, &gw->l1e, sizeof(gw->l1e));
+        }
         /* Fallthrough */
     case 2:
         if ( set_ad_bits(&l2p[guest_l2_table_offset(va)].l2, &gw->l2e.l2,
                          (walk & PFEC_write_access) && leaf_level == 2) )
+        {
             paging_mark_dirty(d, gw->l2mfn);
+            hvmemul_write_cache(v, l2gpa, &gw->l2e, sizeof(gw->l2e));
+        }
         /* Fallthrough */
 #if GUEST_PAGING_LEVELS == 4 /* 64-bit only... */
     case 3:
         if ( set_ad_bits(&l3p[guest_l3_table_offset(va)].l3, &gw->l3e.l3,
                          (walk & PFEC_write_access) && leaf_level == 3) )
+        {
             paging_mark_dirty(d, gw->l3mfn);
+            hvmemul_write_cache(v, l3gpa, &gw->l3e, sizeof(gw->l3e));
+        }
 
         if ( set_ad_bits(&l4p[guest_l4_table_offset(va)].l4, &gw->l4e.l4,
                          false) )
+        {
             paging_mark_dirty(d, gw->l4mfn);
+            hvmemul_write_cache(v, l4gpa, &gw->l4e, sizeof(gw->l4e));
+        }
 #endif
     }
 
diff --git a/xen/arch/x86/mm/hap/guest_walk.c b/xen/arch/x86/mm/hap/guest_walk.c
index 3b8ee2efce..6001cf3330 100644
--- a/xen/arch/x86/mm/hap/guest_walk.c
+++ b/xen/arch/x86/mm/hap/guest_walk.c
@@ -91,7 +91,8 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)(
 #if GUEST_PAGING_LEVELS == 3
     top_map += (cr3 & ~(PAGE_MASK | 31));
 #endif
-    walk_ok = guest_walk_tables(v, p2m, ga, &gw, *pfec, top_mfn, top_map);
+    walk_ok = guest_walk_tables(v, p2m, ga, &gw, *pfec,
+                                top_gfn, top_mfn, top_map);
     unmap_domain_page(top_map);
     put_page(top_page);
 
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index bd88852b64..5368adf474 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -175,9 +175,13 @@ static inline bool
 sh_walk_guest_tables(struct vcpu *v, unsigned long va, walk_t *gw,
                      uint32_t pfec)
 {
+    gfn_t root_gfn = _gfn(paging_mode_external(v->domain)
+                          ? cr3_pa(v->arch.hvm.guest_cr[3]) >> PAGE_SHIFT
+                          : pagetable_get_pfn(v->arch.guest_table));
+
 #if GUEST_PAGING_LEVELS == 3 /* PAE */
     return guest_walk_tables(v, p2m_get_hostp2m(v->domain), va, gw, pfec,
-                             INVALID_MFN, v->arch.paging.shadow.gl3e);
+                             root_gfn, INVALID_MFN, v->arch.paging.shadow.gl3e);
 #else /* 32 or 64 */
     const struct domain *d = v->domain;
     mfn_t root_mfn = (v->arch.flags & TF_kernel_mode
@@ -185,7 +189,7 @@ sh_walk_guest_tables(struct vcpu *v, unsigned long va, walk_t *gw,
                       : pagetable_get_mfn(v->arch.guest_table_user));
     void *root_map = map_domain_page(root_mfn);
     bool ok = guest_walk_tables(v, p2m_get_hostp2m(d), va, gw, pfec,
-                                root_mfn, root_map);
+                                root_gfn, root_mfn, root_map);
 
     unmap_domain_page(root_map);
 
diff --git a/xen/include/asm-x86/guest_pt.h b/xen/include/asm-x86/guest_pt.h
index 6ab2041e48..6647ccfb85 100644
--- a/xen/include/asm-x86/guest_pt.h
+++ b/xen/include/asm-x86/guest_pt.h
@@ -428,8 +428,9 @@ static inline unsigned int guest_walk_to_page_order(const walk_t *gw)
 #define guest_walk_tables GPT_RENAME(guest_walk_tables, GUEST_PAGING_LEVELS)
 
 bool
-guest_walk_tables(struct vcpu *v, struct p2m_domain *p2m, unsigned long va,
-                  walk_t *gw, uint32_t pfec, mfn_t top_mfn, void *top_map);
+guest_walk_tables(const struct vcpu *v, struct p2m_domain *p2m,
+                  unsigned long va, walk_t *gw, uint32_t pfec,
+                  gfn_t top_gfn, mfn_t top_mfn, void *top_map);
 
 /* Pretty-print the contents of a guest-walk */
 static inline void print_gw(const walk_t *gw)
diff --git a/xen/include/asm-x86/hvm/emulate.h b/xen/include/asm-x86/hvm/emulate.h
index 148bab93ce..f40290945c 100644
--- a/xen/include/asm-x86/hvm/emulate.h
+++ b/xen/include/asm-x86/hvm/emulate.h
@@ -130,6 +130,12 @@ static inline bool hvmemul_cache_disabled(struct vcpu *v)
 {
     return hvmemul_cache_disable(v) == hvmemul_cache_disable(v);
 }
+#else
+static inline bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
+                                      void *buf,
+                                      unsigned int size) { return false; }
+static inline void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
+                                       const void *buf, unsigned int size) {}
 #endif
 
 void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:00:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:00:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRyse-0002OV-0c; Fri, 24 Apr 2020 14:00:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRysc-0002OG-3I
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:34 +0000
X-Inumbo-ID: f72d6c78-8633-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f72d6c78-8633-11ea-b4f4-bc764e2007e4;
 Fri, 24 Apr 2020 14:00:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5psbLU59L9K9VUGq5xKSamTtD5VzLc9zY9diLW3F9Mo=; b=lUtCy92kCK5hLi8qAlH6QIxcPt
 gtjqHGduxqfWdH49JDolCvssY3tAW0AL4T/gM3xMogy6Npip8Hf79pwPesx4AsYnFMidlae9x8MZa
 UQ6ceXBDeW+lQ05PcQkkzYJgE/SJGpYlehqwnkOO/7iK6RgtQKeneq1/n8+5+8keDiUg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysb-0001TX-Jk
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysb-0000hD-IY
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] build,xsm: fix multiple call
Message-Id: <E1jRysb-0000hD-IY@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:00:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 52f3f319851e40892fbafeae53e512c7d61f03d0
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Thu Apr 23 09:59:05 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:59:05 2020 +0200

    build,xsm: fix multiple call
    
    Both script mkflask.sh and mkaccess_vector.sh generates multiple
    files. Exploits the 'multi-target pattern rule' trick to call each
    scripts only once.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/xsm/flask/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index b1fd454219..f001bb18d4 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -21,10 +21,10 @@ ALL_H_FILES = $(FLASK_H_FILES) $(AV_H_FILES)
 
 $(obj-y) ss/built_in.o: $(ALL_H_FILES)
 
-$(FLASK_H_FILES): $(FLASK_H_DEPEND)
+$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkflask.sh $(AWK) include $(FLASK_H_DEPEND)
 
-$(AV_H_FILES): $(AV_H_DEPEND)
+$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkaccess_vector.sh $(AWK) $(AV_H_DEPEND)
 
 obj-bin-$(CONFIG_XSM_FLASK_POLICY) += flask-policy.o
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:00:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:00:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRyso-0002Pd-2N; Fri, 24 Apr 2020 14:00:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRysm-0002PS-LV
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:44 +0000
X-Inumbo-ID: fd4c53a8-8633-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fd4c53a8-8633-11ea-83d8-bc764e2007e4;
 Fri, 24 Apr 2020 14:00:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=88psId37pcLyR9Mw9nqTpTdJAl6aSGOFs/Va1S1SjsQ=; b=ZmZMsDtx4ARvT2gr3YObP0eIdW
 1BhBYX4NFMMh9yVodaAHiEehpxnQGoJQGw/nry0ZQm4QHhVnLGoN77BHX/jsILoF+QK5qmEwMMiAZ
 Aub/7j5/hIAgqzg75WCwdXi/E8GMLN56G+ILgA2GKJQJGrce1pTq/1Xqpldg5F9f2/AM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysl-0001Tm-SX
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysl-0000iP-Po
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/build: include include/config/auto.conf in main
 Makefile
Message-Id: <E1jRysl-0000iP-Po@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:00:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6c122d3984a5efb1f187cde0e478e4e346202f2b
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Thu Apr 23 09:59:27 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 09:59:27 2020 +0200

    xen/build: include include/config/auto.conf in main Makefile
    
    We are going to generate the CFLAGS early from "xen/Makefile" instead
    of in "Rules.mk", but we need to include "config/auto.conf", so
    include it in "Makefile".
    
    Before including "config/auto.conf" we check which make target a user
    is calling, as some targets don't need "auto.conf". For targets that
    needs auto.conf, make will generate it (and a default .config if
    missing).
    
    root-make-done is to avoid doing the calculation again once Rules.mk
    takes over and is been executed with the root Makefile. When Rules.mk
    is including xen/Makefile, `config-build' and `need-config' are
    undefined so auto.conf will not be included again (it is already
    included by Rules.mk) and kconfig target are out of reach of Rules.mk.
    
    We are introducing a target %config to catch all targets for kconfig.
    So we need an extra target %/.config to prevent make from trying to
    regenerate $(XEN_ROOT)/.config that is included in Config.mk.
    
    The way targets are filtered is inspired by Kbuild, with some code
    imported from Linux. That's why there is PHONY variable that isn't
    used yet, for example.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/Makefile | 101 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 78 insertions(+), 23 deletions(-)

diff --git a/xen/Makefile b/xen/Makefile
index e5f7b1ae13..643c689658 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -49,7 +49,76 @@ default: build
 .PHONY: dist
 dist: install
 
-build install:: include/config/auto.conf
+
+ifneq ($(root-make-done),y)
+# section to run before calling Rules.mk, but only once.
+#
+# To make sure we do not include .config for any of the *config targets
+# catch them early, and hand them over to tools/kconfig/Makefile
+
+clean-targets := %clean
+no-dot-config-targets := $(clean-targets) \
+                         uninstall debug cloc \
+                         cscope TAGS tags MAP gtags \
+                         xenversion
+
+config-build    := n
+need-config     := y
+
+ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
+    ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
+        need-config := n
+    endif
+endif
+
+ifneq ($(filter %config,$(MAKECMDGOALS)),)
+    config-build := y
+endif
+
+export root-make-done := y
+endif # root-make-done
+
+include scripts/Kbuild.include
+
+# Shorthand for kconfig
+kconfig = -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) HOSTCC="$(HOSTCC)" HOSTCXX="$(HOSTCXX)"
+
+ifeq ($(config-build),y)
+# ===========================================================================
+# *config targets only - make sure prerequisites are updated, and descend
+# in tools/kconfig to make the *config target
+
+config: FORCE
+	$(MAKE) $(kconfig) $@
+
+# Config.mk tries to include .config file, don't try to remake it
+%/.config: ;
+
+%config: FORCE
+	$(MAKE) $(kconfig) $@
+
+else # !config-build
+
+ifeq ($(need-config),y)
+include include/config/auto.conf
+# Read in dependencies to all Kconfig* files, make sure to run syncconfig if
+# changes are detected.
+include include/config/auto.conf.cmd
+
+# Allow people to just run `make` as before and not force them to configure
+$(KCONFIG_CONFIG):
+	$(MAKE) $(kconfig) defconfig
+
+# The actual configuration files used during the build are stored in
+# include/generated/ and include/config/. Update them if .config is newer than
+# include/config/auto.conf (which mirrors .config).
+#
+# This exploits the 'multi-target pattern rule' trick.
+# The syncconfig should be executed only once to make all the targets.
+include/config/%.conf include/config/%.conf.cmd: $(KCONFIG_CONFIG)
+	$(MAKE) $(kconfig) syncconfig
+
+endif # need-config
 
 .PHONY: build install uninstall clean distclean MAP
 build install uninstall debug clean distclean MAP::
@@ -254,9 +323,6 @@ cscope:
 _MAP:
 	$(NM) -n $(TARGET)-syms | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' > System.map
 
-.PHONY: FORCE
-FORCE:
-
 %.o %.i %.s: %.c FORCE
 	$(MAKE) -f $(BASEDIR)/Rules.mk -C $(*D) $(@F)
 
@@ -277,25 +343,6 @@ $(foreach base,arch/x86/mm/guest_walk_% \
                arch/x86/mm/shadow/guest_%, \
     $(foreach ext,o i s,$(call build-intermediate,$(base).$(ext))))
 
-kconfig := oldconfig config menuconfig defconfig allyesconfig allnoconfig \
-	nconfig xconfig gconfig savedefconfig listnewconfig olddefconfig \
-	randconfig $(notdir $(wildcard arch/$(SRCARCH)/configs/*_defconfig))
-.PHONY: $(kconfig)
-$(kconfig):
-	$(MAKE) -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) HOSTCC="$(HOSTCC)" HOSTCXX="$(HOSTCXX)" $@
-
-include/config/%.conf: include/config/auto.conf.cmd $(KCONFIG_CONFIG)
-	$(MAKE) -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) HOSTCC="$(HOSTCC)" HOSTCXX="$(HOSTCXX)" syncconfig
-
-# Allow people to just run `make` as before and not force them to configure
-$(KCONFIG_CONFIG):
-	$(MAKE) -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) HOSTCC="$(HOSTCC)" HOSTCXX="$(HOSTCXX)" defconfig
-
-# Break the dependency chain for the first run
-include/config/auto.conf.cmd: ;
-
--include $(BASEDIR)/include/config/auto.conf.cmd
-
 .PHONY: cloc
 cloc:
 	$(eval tmpfile := $(shell mktemp))
@@ -307,3 +354,11 @@ cloc:
 	cloc --list-file=$(tmpfile)
 	rm $(tmpfile)
 
+endif #config-build
+
+PHONY += FORCE
+FORCE:
+
+# Declare the contents of the PHONY variable as phony.  We keep that
+# information in a variable so we can use it in if_changed and friends.
+.PHONY: $(PHONY)
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:00:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:00:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRysz-0002Qw-4M; Fri, 24 Apr 2020 14:00:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRysx-0002Qj-4M
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:55 +0000
X-Inumbo-ID: 03642fae-8634-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 03642fae-8634-11ea-b4f4-bc764e2007e4;
 Fri, 24 Apr 2020 14:00:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=jAjjUg11k+66AtqDe3GMeBkTvMTM5si7nF54SlpNOaE=; b=YH6b307AZt6ZRSnT2tTVKNHz4M
 T/G7XVdQxHNvwQr4XEIo3U+LYUEUIQ+yGv1fbujjQi2aXtqsOElVx3bdtDMe+3Vo4xaLdlOtw1gHP
 5RqyKAp4mAuoKxVGO+IGDvz41GHWQeMDOvGRK+nCDBsr0W/89r3JrBlyStoyeS1Q2n1I=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysw-0001U1-3R
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRysw-0000jG-1f
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:00:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/build: use new $(c_flags) and $(a_flags) instead of
 $(CFLAGS)
Message-Id: <E1jRysw-0000jG-1f@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:00:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 732571959f171638b5161c9ba0d557f7b6da74f4
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Thu Apr 23 10:00:07 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 10:00:07 2020 +0200

    xen/build: use new $(c_flags) and $(a_flags) instead of $(CFLAGS)
    
    In a later patch ("xen/build: have the root Makefile generates the
    CFLAGS), we want to generate the CFLAGS in xen/Makefile, then export
    it and have Rules.mk use a CFLAGS from the environment variables. That
    changes the flavor of the CFLAGS and flags intended for one target
    (like -D__OBJECT_FILE__ and -M%) gets propagated and duplicated. So we
    start by moving such flags out of $(CFLAGS) and into $(c_flags) which
    is to be modified by only Rules.mk.
    
    __OBJECT_FILE__ is only used by arch/x86/mm/*.c files, so having it in
    $(c_flags) is enough, we don't need it in $(a_flags).
    
    For include/Makefile and as-insn we can keep using CFLAGS, but since
    it doesn't have -M* flags anymore there is no need to filter them out.
    
    The XEN_BUILD_EFI tests in arch/x86/Makefile was filtering out
    CFLAGS-y, but according to dd40177c1bc8 ("x86-64/EFI: add CFLAGS to
    check compile"), it was done to filter out -MF. CFLAGS doesn't
    have those flags anymore, so no filtering is needed.
    
    This is inspired by the way Kbuild generates CFLAGS for each targets.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/Rules.mk                    | 23 +++++++++++------------
 xen/arch/arm/Makefile           |  4 ++--
 xen/arch/x86/Makefile           |  6 +++---
 xen/arch/x86/mm/Makefile        |  6 +++---
 xen/arch/x86/mm/hap/Makefile    |  6 +++---
 xen/arch/x86/mm/shadow/Makefile |  6 +++---
 xen/include/Makefile            |  2 +-
 7 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/xen/Rules.mk b/xen/Rules.mk
index 9079df7978..3408a35dbf 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -57,7 +57,6 @@ CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
 $(call cc-option-add,CFLAGS,CC,-Wvla)
 CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
 CFLAGS-$(CONFIG_DEBUG_INFO) += -g
-CFLAGS += '-D__OBJECT_FILE__="$@"'
 
 ifneq ($(CONFIG_CC_IS_CLANG),y)
 # Clang doesn't understand this command line argument, and doesn't appear to
@@ -70,9 +69,6 @@ AFLAGS += -D__ASSEMBLY__
 
 ALL_OBJS := $(ALL_OBJS-y)
 
-# Get gcc to generate the dependencies for us.
-CFLAGS-y += -MMD -MP -MF $(@D)/.$(@F).d
-
 CFLAGS += $(CFLAGS-y)
 # allow extra CFLAGS externally via EXTRA_CFLAGS_XEN_CORE
 CFLAGS += $(EXTRA_CFLAGS_XEN_CORE)
@@ -146,9 +142,12 @@ endif
 # Always build obj-bin files as binary even if they come from C source. 
 $(obj-bin-y): CFLAGS := $(filter-out -flto,$(CFLAGS))
 
+c_flags = -MMD -MP -MF $(@D)/.$(@F).d $(CFLAGS) '-D__OBJECT_FILE__="$@"'
+a_flags = -MMD -MP -MF $(@D)/.$(@F).d $(AFLAGS)
+
 built_in.o: $(obj-y) $(extra-y)
 ifeq ($(obj-y),)
-	$(CC) $(CFLAGS) -c -x c /dev/null -o $@
+	$(CC) $(c_flags) -c -x c /dev/null -o $@
 else
 ifeq ($(CONFIG_LTO),y)
 	$(LD_LTO) -r -o $@ $(filter-out $(extra-y),$^)
@@ -159,7 +158,7 @@ endif
 
 built_in_bin.o: $(obj-bin-y) $(extra-y)
 ifeq ($(obj-bin-y),)
-	$(CC) $(AFLAGS) -c -x assembler /dev/null -o $@
+	$(CC) $(a_flags) -c -x assembler /dev/null -o $@
 else
 	$(LD) $(LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
 endif
@@ -178,7 +177,7 @@ SRCPATH := $(patsubst $(BASEDIR)/%,%,$(CURDIR))
 
 %.o: %.c Makefile
 ifeq ($(CONFIG_ENFORCE_UNIQUE_SYMBOLS),y)
-	$(CC) $(CFLAGS) -c $< -o $(@D)/.$(@F).tmp -MQ $@
+	$(CC) $(c_flags) -c $< -o $(@D)/.$(@F).tmp -MQ $@
 ifeq ($(CONFIG_CC_IS_CLANG),y)
 	$(OBJCOPY) --redefine-sym $<=$(SRCPATH)/$< $(@D)/.$(@F).tmp $@
 else
@@ -186,11 +185,11 @@ else
 endif
 	rm -f $(@D)/.$(@F).tmp
 else
-	$(CC) $(CFLAGS) -c $< -o $@
+	$(CC) $(c_flags) -c $< -o $@
 endif
 
 %.o: %.S Makefile
-	$(CC) $(AFLAGS) -c $< -o $@
+	$(CC) $(a_flags) -c $< -o $@
 
 $(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o Makefile
 	$(OBJDUMP) -h $< | sed -n '/[0-9]/{s,00*,0,g;p;}' | while read idx name sz rest; do \
@@ -205,12 +204,12 @@ $(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o Makefile
 	$(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
 
 %.i: %.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(CFLAGS)) $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) $< -o $@
 
 %.s: %.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(CFLAGS)) -S $< -o $@
+	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -S $< -o $@
 
 %.s: %.S Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(AFLAGS)) $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(a_flags)) $< -o $@
 
 -include $(DEPS_INCLUDE)
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 7273f356f1..913f6cdeed 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -120,10 +120,10 @@ $(TARGET)-syms: prelink.o xen.lds
 	rm -f $(@D)/.$(@F).[0-9]*
 
 asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c
-	$(CC) $(filter-out -flto,$(CFLAGS)) -S -o $@ $<
+	$(CC) $(filter-out -flto,$(c_flags)) -S -o $@ $<
 
 xen.lds: xen.lds.S
-	$(CC) -P -E -Ui386 $(AFLAGS) -o $@ $<
+	$(CC) -P -E -Ui386 $(a_flags) -o $@ $<
 	sed -e 's/xen\.lds\.o:/xen\.lds:/g' <.xen.lds.d >.xen.lds.d.new
 	mv -f .xen.lds.d.new .xen.lds.d
 
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index e954edbc2e..1405525105 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -168,7 +168,7 @@ EFI_LDFLAGS += --major-os-version=2 --minor-os-version=0
 EFI_LDFLAGS += --major-subsystem-version=2 --minor-subsystem-version=0
 
 # Check if the compiler supports the MS ABI.
-export XEN_BUILD_EFI := $(shell $(CC) $(filter-out $(CFLAGS-y) .%.d,$(CFLAGS)) -c efi/check.c -o efi/check.o 2>/dev/null && echo y)
+export XEN_BUILD_EFI := $(shell $(CC) $(CFLAGS) -c efi/check.c -o efi/check.o 2>/dev/null && echo y)
 # Check if the linker supports PE.
 XEN_BUILD_PE := $(if $(XEN_BUILD_EFI),$(shell $(LD) -mi386pep --subsystem=10 -o efi/check.efi efi/check.o 2>/dev/null && echo y))
 CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI
@@ -223,7 +223,7 @@ efi/boot.init.o efi/runtime.o efi/compat.o efi/buildid.o efi/relocs-dummy.o: $(B
 efi/boot.init.o efi/runtime.o efi/compat.o efi/buildid.o efi/relocs-dummy.o: ;
 
 asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c $(BASEDIR)/include/asm-x86/asm-macros.h
-	$(CC) $(filter-out -Wa$(comma)% -flto,$(CFLAGS)) -S -o $@ $<
+	$(CC) $(filter-out -Wa$(comma)% -flto,$(c_flags)) -S -o $@ $<
 
 asm-macros.i: CFLAGS += -D__ASSEMBLY__ -P
 
@@ -240,7 +240,7 @@ $(BASEDIR)/include/asm-x86/asm-macros.h: asm-macros.i Makefile
 
 efi.lds: AFLAGS += -DEFI
 xen.lds efi.lds: xen.lds.S
-	$(CC) -P -E -Ui386 $(filter-out -Wa$(comma)%,$(AFLAGS)) -o $@ $<
+	$(CC) -P -E -Ui386 $(filter-out -Wa$(comma)%,$(a_flags)) -o $@ $<
 	sed -e 's/.*\.lds\.o:/$(@F):/g' <.$(@F).d >.$(@F).d.new
 	mv -f .$(@F).d.new .$(@F).d
 
diff --git a/xen/arch/x86/mm/Makefile b/xen/arch/x86/mm/Makefile
index d87dc0aa6e..a2431fde6b 100644
--- a/xen/arch/x86/mm/Makefile
+++ b/xen/arch/x86/mm/Makefile
@@ -12,10 +12,10 @@ obj-$(CONFIG_HVM) += p2m-ept.o p2m-pod.o
 obj-y += paging.o
 
 guest_walk_%.o: guest_walk.c Makefile
-	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CC) $(c_flags) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_walk_%.i: guest_walk.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_walk_%.s: guest_walk.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
+	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
diff --git a/xen/arch/x86/mm/hap/Makefile b/xen/arch/x86/mm/hap/Makefile
index b14a9aff93..22e7ad54bd 100644
--- a/xen/arch/x86/mm/hap/Makefile
+++ b/xen/arch/x86/mm/hap/Makefile
@@ -6,10 +6,10 @@ obj-y += nested_hap.o
 obj-y += nested_ept.o
 
 guest_walk_%level.o: guest_walk.c Makefile
-	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CC) $(c_flags) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_walk_%level.i: guest_walk.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_walk_%level.s: guest_walk.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
+	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
diff --git a/xen/arch/x86/mm/shadow/Makefile b/xen/arch/x86/mm/shadow/Makefile
index ff03a9937f..23d3ff1080 100644
--- a/xen/arch/x86/mm/shadow/Makefile
+++ b/xen/arch/x86/mm/shadow/Makefile
@@ -7,10 +7,10 @@ obj-y += none.o
 endif
 
 guest_%.o: multi.c Makefile
-	$(CC) $(CFLAGS) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CC) $(c_flags) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_%.i: multi.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
+	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -c $< -o $@
 
 guest_%.s: multi.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(CFLAGS)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
+	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -DGUEST_PAGING_LEVELS=$* -S $< -o $@
diff --git a/xen/include/Makefile b/xen/include/Makefile
index 433bad9055..a488a98d8b 100644
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -64,7 +64,7 @@ compat/%.h: compat/%.i Makefile $(BASEDIR)/tools/compat-build-header.py
 	mv -f $@.new $@
 
 compat/%.i: compat/%.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)% -M% %.d -include %/include/xen/config.h,$(CFLAGS)) $(cppflags-y) -o $@ $<
+	$(CPP) $(filter-out -Wa$(comma)% -include %/include/xen/config.h,$(CFLAGS)) $(cppflags-y) -o $@ $<
 
 compat/%.c: public/%.h xlat.lst Makefile $(BASEDIR)/tools/compat-build-source.py
 	mkdir -p $(@D)
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:01:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:01:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRyt9-0002SK-7e; Fri, 24 Apr 2020 14:01:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRyt8-0002Ru-Dx
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:06 +0000
X-Inumbo-ID: 096cf99e-8634-11ea-94af-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 096cf99e-8634-11ea-94af-12813bfff9fa;
 Fri, 24 Apr 2020 14:01:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=RJQ7nrd2q20rsvFd8E+WzWV+kp1klAzaDHUqQhDfWO0=; b=w3yxl20e7wEji2yzJIrjmHuymh
 cHskq6+25vaWABiitTqvZpA6fdqW97IPD8R2uMEBRkCIfkQTp/SOiWrOfha2JYfk8HB0G20erystR
 1iwvVl/lP3Dh/4EQ2d7k161hpNohJpJZTeRt2GYHPDhjkpYDiPURcKwM3UN+RzvkTtHo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRyt6-0001UV-6x
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRyt6-0000kd-5N
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] mem_sharing: allow forking domain with IOMMU enabled
Message-Id: <E1jRyt6-0000kd-5N@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:01:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit bb215898d46395080b911c15e5c3a7fff0c150cb
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Thu Apr 23 10:03:18 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 23 10:03:18 2020 +0200

    mem_sharing: allow forking domain with IOMMU enabled
    
    The memory sharing subsystem by default doesn't allow a domain to share memory
    if it has an IOMMU active for obvious security reasons. However, when fuzzing a
    VM fork, the same security restrictions don't necessarily apply. While it makes
    no sense to try to create a full fork of a VM that has an IOMMU attached as only
    one domain can own the pass-through device at a time, creating a shallow fork
    without a device model is still very useful for fuzzing kernel-mode drivers.
    
    By allowing the parent VM to initialize the kernel-mode driver with a real
    device that's pass-through, the driver can enter into a state more suitable for
    fuzzing. Some of these initialization steps are quite complex and are easier to
    perform when a real device is present. After the initialization, shallow forks
    can be utilized for fuzzing code-segments in the device driver that don't
    directly interact with the device.
    
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/mm/mem_sharing.c | 20 +++++++++++++-------
 xen/include/public/memory.h   |  4 +++-
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index e572e9e39d..bb74595351 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -1430,7 +1430,8 @@ static int range_share(struct domain *d, struct domain *cd,
     return rc;
 }
 
-static inline int mem_sharing_control(struct domain *d, bool enable)
+static inline int mem_sharing_control(struct domain *d, bool enable,
+                                      uint16_t flags)
 {
     if ( enable )
     {
@@ -1440,7 +1441,8 @@ static inline int mem_sharing_control(struct domain *d, bool enable)
         if ( unlikely(!hap_enabled(d)) )
             return -ENODEV;
 
-        if ( unlikely(is_iommu_enabled(d)) )
+        if ( unlikely(is_iommu_enabled(d) &&
+                      !(flags & XENMEM_FORK_WITH_IOMMU_ALLOWED)) )
             return -EXDEV;
     }
 
@@ -1827,7 +1829,8 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
     if ( rc )
         goto out;
 
-    if ( !mem_sharing_enabled(d) && (rc = mem_sharing_control(d, true)) )
+    if ( !mem_sharing_enabled(d) &&
+         (rc = mem_sharing_control(d, true, 0)) )
         return rc;
 
     switch ( mso.op )
@@ -2065,7 +2068,9 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         struct domain *pd;
 
         rc = -EINVAL;
-        if ( mso.u.fork.pad[0] || mso.u.fork.pad[1] || mso.u.fork.pad[2] )
+        if ( mso.u.fork.pad )
+            goto out;
+        if ( mso.u.fork.flags & ~XENMEM_FORK_WITH_IOMMU_ALLOWED )
             goto out;
 
         rc = rcu_lock_live_remote_domain_by_id(mso.u.fork.parent_domain,
@@ -2080,7 +2085,8 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
             goto out;
         }
 
-        if ( !mem_sharing_enabled(pd) && (rc = mem_sharing_control(pd, true)) )
+        if ( !mem_sharing_enabled(pd) &&
+             (rc = mem_sharing_control(pd, true, mso.u.fork.flags)) )
         {
             rcu_unlock_domain(pd);
             goto out;
@@ -2101,7 +2107,7 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         struct domain *pd;
 
         rc = -EINVAL;
-        if ( mso.u.fork.pad[0] || mso.u.fork.pad[1] || mso.u.fork.pad[2] )
+        if ( mso.u.fork.pad || mso.u.fork.flags )
             goto out;
 
         rc = -ENOSYS;
@@ -2138,7 +2144,7 @@ int mem_sharing_domctl(struct domain *d, struct xen_domctl_mem_sharing_op *mec)
     switch ( mec->op )
     {
     case XEN_DOMCTL_MEM_SHARING_CONTROL:
-        rc = mem_sharing_control(d, mec->u.enable);
+        rc = mem_sharing_control(d, mec->u.enable, 0);
         break;
 
     default:
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index d36d64b8dc..e56800357d 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -536,7 +536,9 @@ struct xen_mem_sharing_op {
         } debug;
         struct mem_sharing_op_fork {      /* OP_FORK */
             domid_t parent_domain;        /* IN: parent's domain id */
-            uint16_t pad[3];              /* Must be set to 0 */
+#define XENMEM_FORK_WITH_IOMMU_ALLOWED (1u << 0)
+            uint16_t flags;               /* IN: optional settings */
+            uint32_t pad;                 /* Must be set to 0 */
         } fork;
     } u;
 };
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:01:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:01:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRytI-0002TI-9F; Fri, 24 Apr 2020 14:01:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRytH-0002TB-C0
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:15 +0000
X-Inumbo-ID: 0ec694b0-8634-11ea-94af-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0ec694b0-8634-11ea-94af-12813bfff9fa;
 Fri, 24 Apr 2020 14:01:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kTEXtWgfPdTuDnFr45jZor+/rfxKitExIVbvqgqglt4=; b=M+lNSeQDIuzp9GQoLeyNvkUhSa
 UrUYAq+ZTkuOp5ZtxLimYg44dwCoWCg/XkoDU1mB1/E3qk2OhfLsusjnrjqC/1iROWo1v+Kv2JD+B
 AY9GEnfWrHwT6mSFNqT5WnrfbYMAyAWNkIwLzEHDapbJpn0IGGEfiLHPEX2LAfp5WkUI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRytG-0001Uk-9q
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRytG-0000lY-8p
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] golang/xenlight: add DeviceNicAdd/Remove wrappers
Message-Id: <E1jRytG-0000lY-8p@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:01:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0f140aa92029516858cc986837dc902b88bd1675
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Sun Apr 12 18:02:40 2020 -0400
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 11:30:54 2020 +0100

    golang/xenlight: add DeviceNicAdd/Remove wrappers
    
    Add DeviceNicAdd and DeviceNicRemove as wrappers for
    libxl_device_nic_add and libxl_device_nic_remove.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
---
 tools/golang/xenlight/xenlight.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index 3f1b0baa0c..961939e947 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1045,3 +1045,37 @@ func (Ctx *Context) PrimaryConsoleGetTty(domid uint32) (path string, err error)
 	path = C.GoString(cpath)
 	return
 }
+
+// DeviceNicAdd adds a nic to a domain.
+func (Ctx *Context) DeviceNicAdd(domid Domid, nic *DeviceNic) error {
+	var cnic C.libxl_device_nic
+
+	if err := nic.toC(&cnic); err != nil {
+		return err
+	}
+	defer C.libxl_device_nic_dispose(&cnic)
+
+	ret := C.libxl_device_nic_add(Ctx.ctx, C.uint32_t(domid), &cnic, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
+
+// DeviceNicRemove removes a nic from a domain.
+func (Ctx *Context) DeviceNicRemove(domid Domid, nic *DeviceNic) error {
+	var cnic C.libxl_device_nic
+
+	if err := nic.toC(&cnic); err != nil {
+		return err
+	}
+	defer C.libxl_device_nic_dispose(&cnic)
+
+	ret := C.libxl_device_nic_remove(Ctx.ctx, C.uint32_t(domid), &cnic, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:01:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:01:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRytR-0002UL-Av; Fri, 24 Apr 2020 14:01:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRytQ-0002UD-VL
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:24 +0000
X-Inumbo-ID: 15716f9a-8634-11ea-b58d-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 15716f9a-8634-11ea-b58d-bc764e2007e4;
 Fri, 24 Apr 2020 14:01:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nTuZ/wFHOu9TH+dOFkRow7KAYrmoZonbsjL4EHOnAOo=; b=1FX58093vL0eC/Ue638OEyyQhr
 S1httybi4Nq70MGflrycUgtzreu16r9AOOM7LVJokE1XJfaGjcGtCDagvTuNgruP7LNQieO6Be0nz
 HgnVw3JXUEf3L7p5a2IpYhwoiIozfDrzeUFRChpdkC5XcqpF+7Zi7OZTjgUpeozXa1+A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRytQ-0001VK-CV
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRytQ-0000mE-BX
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] golang/xenlight: add DevicePciAdd/Remove wrappers
Message-Id: <E1jRytQ-0000mE-BX@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:01:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit cb74bb259a0bef6411f30a240c4a1ab143aafc57
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Sun Apr 12 18:02:41 2020 -0400
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 11:30:54 2020 +0100

    golang/xenlight: add DevicePciAdd/Remove wrappers
    
    Add DevicePciAdd and DevicePciRemove as wrappers for
    libxl_device_pci_add and libxl_device_pci remove.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
---
 tools/golang/xenlight/xenlight.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index 961939e947..bc2e9de0e5 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1079,3 +1079,37 @@ func (Ctx *Context) DeviceNicRemove(domid Domid, nic *DeviceNic) error {
 
 	return nil
 }
+
+// DevicePciAdd is used to passthrough a PCI device to a domain.
+func (Ctx *Context) DevicePciAdd(domid Domid, pci *DevicePci) error {
+	var cpci C.libxl_device_pci
+
+	if err := pci.toC(&cpci); err != nil {
+		return err
+	}
+	defer C.libxl_device_pci_dispose(&cpci)
+
+	ret := C.libxl_device_pci_add(Ctx.ctx, C.uint32_t(domid), &cpci, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
+
+// DevicePciRemove removes a PCI device from a domain.
+func (Ctx *Context) DevicePciRemove(domid Domid, pci *DevicePci) error {
+	var cpci C.libxl_device_pci
+
+	if err := pci.toC(&cpci); err != nil {
+		return err
+	}
+	defer C.libxl_device_pci_dispose(&cpci)
+
+	ret := C.libxl_device_pci_remove(Ctx.ctx, C.uint32_t(domid), &cpci, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:01:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:01:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRytc-0002Vx-CR; Fri, 24 Apr 2020 14:01:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRytb-0002Vl-CE
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:35 +0000
X-Inumbo-ID: 1ba0449a-8634-11ea-94af-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1ba0449a-8634-11ea-94af-12813bfff9fa;
 Fri, 24 Apr 2020 14:01:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=RCTg6hLZyAI2+4yYsiduxsF/GwLH/nwHxWOpv90DDSc=; b=rSp/eR26XAqNiy89r51W0Gm0Pp
 kUlDFm0tlStol9RIbP9+9dAN63uGbwHPeFdZMgoCCbTCi/qSxmbnX/PSljU/AadxEaB30Q2UppH1i
 AwdUoVup6AegLb7KqPmnpyNB836O9x03itZDF1Y0pqMvGpbETZYiELX1VXlwx7vt+nJE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRyta-0001X3-OP
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRyta-0000n7-LU
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] golang/xenlight: add DeviceUsbdevAdd/Remove wrappers
Message-Id: <E1jRyta-0000n7-LU@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:01:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f9e707aa97b204229dde5125116364c9e410ef67
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Sun Apr 12 18:02:42 2020 -0400
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 11:30:55 2020 +0100

    golang/xenlight: add DeviceUsbdevAdd/Remove wrappers
    
    Add DeviceUsbdevAdd and DeviceUsbdevRemove as wrappers for
    libxl_device_usbdev_add and libxl_device_usbdev_remove.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Reviewed-by: George Dunlap <george.dunlap@citrix.com>
---
 tools/golang/xenlight/xenlight.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index bc2e9de0e5..ff73c11889 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1113,3 +1113,37 @@ func (Ctx *Context) DevicePciRemove(domid Domid, pci *DevicePci) error {
 
 	return nil
 }
+
+// DeviceUsbdevAdd adds a USB device to a domain.
+func (Ctx *Context) DeviceUsbdevAdd(domid Domid, usbdev *DeviceUsbdev) error {
+	var cusbdev C.libxl_device_usbdev
+
+	if err := usbdev.toC(&cusbdev); err != nil {
+		return err
+	}
+	defer C.libxl_device_usbdev_dispose(&cusbdev)
+
+	ret := C.libxl_device_usbdev_add(Ctx.ctx, C.uint32_t(domid), &cusbdev, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
+
+// DeviceUsbdevRemove removes a USB device from a domain.
+func (Ctx *Context) DeviceUsbdevRemove(domid Domid, usbdev *DeviceUsbdev) error {
+	var cusbdev C.libxl_device_usbdev
+
+	if err := usbdev.toC(&cusbdev); err != nil {
+		return err
+	}
+	defer C.libxl_device_usbdev_dispose(&cusbdev)
+
+	ret := C.libxl_device_usbdev_remove(Ctx.ctx, C.uint32_t(domid), &cusbdev, nil)
+	if ret != 0 {
+		return Error(ret)
+	}
+
+	return nil
+}
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:01:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:01:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRytn-0002X2-EG; Fri, 24 Apr 2020 14:01:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRytn-0002Ww-1B
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:47 +0000
X-Inumbo-ID: 21d3a2b2-8634-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 21d3a2b2-8634-11ea-9e09-bc764e2007e4;
 Fri, 24 Apr 2020 14:01:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=CB0++w82kEpiC6WpwK0JCgxW1kF+95xBPH6x6c+GiZo=; b=Q0AWULk46CVFs50th/hSgIb4qG
 mjaoFTHb9SSds+j2+vtivO2OJ4XUL1gZ1y0mTsANpOHsUTux/IOqe3Ba2NUi0ylCZMvNOUObsDuQx
 oQyySGAPH9/QBxeCT+Vvn7tEpS16EgEEJXbgz2ZUKB9SMKeTNtHzteyDAxeFvmiz6y/0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRytl-0001XC-5M
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRytl-0000o0-4O
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] golang/xenlight: Don't try to marshall zero-length
 arrays in fromC
Message-Id: <E1jRytl-0000o0-4O@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:01:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit b70275d0d9fb626102a9521794f2bd75b4d420eb
Author:     George Dunlap <george.dunlap@citrix.com>
AuthorDate: Thu Dec 26 13:08:05 2019 +0000
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 16:00:11 2020 +0100

    golang/xenlight: Don't try to marshall zero-length arrays in fromC
    
    The current fromC array code will do the "magic" casting and
    martialling even when num_foo variable is 0.  Go crashes when doing
    the cast.
    
    Only do array marshalling if the number of elements is non-zero;
    otherwise, leave the target pointer empty (nil for Go slices, NULL for
    C arrays).
    
    Signed-off-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Nick Rosbrook <rosbrookn@ainfosec.com>
---
 tools/golang/xenlight/gengotypes.py  |  11 +-
 tools/golang/xenlight/helpers.gen.go | 440 ++++++++++++++++++++---------------
 2 files changed, 257 insertions(+), 194 deletions(-)

diff --git a/tools/golang/xenlight/gengotypes.py b/tools/golang/xenlight/gengotypes.py
index 50dada309b..e9ad92afa0 100644
--- a/tools/golang/xenlight/gengotypes.py
+++ b/tools/golang/xenlight/gengotypes.py
@@ -426,13 +426,12 @@ def xenlight_golang_array_from_C(ty = None):
     cname      = ty.name
     cslice     = 'c{}'.format(goname)
     clenvar    = ty.type.lenvar.name
-    golenvar   = xenlight_golang_fmt_name(clenvar,exported=False)
 
-    s += '{} := int(xc.{})\n'.format(golenvar, clenvar)
+    s += 'x.{} = nil\n'.format(goname)
+    s += 'if n := int(xc.{}); n > 0 {{\n'.format(clenvar)
     s += '{} := '.format(cslice)
-    s +='(*[1<<28]C.{})(unsafe.Pointer(xc.{}))[:{}:{}]\n'.format(ctypename, cname,
-                                                                golenvar, golenvar)
-    s += 'x.{} = make([]{}, {})\n'.format(goname, gotypename, golenvar)
+    s +='(*[1<<28]C.{})(unsafe.Pointer(xc.{}))[:n:n]\n'.format(ctypename, cname)
+    s += 'x.{} = make([]{}, n)\n'.format(goname, gotypename)
     s += 'for i, v := range {} {{\n'.format(cslice)
 
     is_enum = isinstance(ty.type.elem_type,idl.Enumeration)
@@ -442,7 +441,7 @@ def xenlight_golang_array_from_C(ty = None):
         s += 'if err := x.{}[i].fromC(&v); err != nil {{\n'.format(goname)
         s += 'return fmt.Errorf("converting field {}: %v", err) }}\n'.format(goname)
 
-    s += '}\n'
+    s += '}\n}\n'
 
     return s
 
diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/helpers.gen.go
index 344ce9a461..16e26d27f5 100644
--- a/tools/golang/xenlight/helpers.gen.go
+++ b/tools/golang/xenlight/helpers.gen.go
@@ -889,12 +889,14 @@ func NewVcpuSchedParams() (*VcpuSchedParams, error) {
 
 func (x *VcpuSchedParams) fromC(xc *C.libxl_vcpu_sched_params) error {
 	x.Sched = Scheduler(xc.sched)
-	numVcpus := int(xc.num_vcpus)
-	cVcpus := (*[1 << 28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:numVcpus:numVcpus]
-	x.Vcpus = make([]SchedParams, numVcpus)
-	for i, v := range cVcpus {
-		if err := x.Vcpus[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vcpus: %v", err)
+	x.Vcpus = nil
+	if n := int(xc.num_vcpus); n > 0 {
+		cVcpus := (*[1 << 28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:n:n]
+		x.Vcpus = make([]SchedParams, n)
+		for i, v := range cVcpus {
+			if err := x.Vcpus[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vcpus: %v", err)
+			}
 		}
 	}
 
@@ -991,11 +993,13 @@ func NewVnodeInfo() (*VnodeInfo, error) {
 
 func (x *VnodeInfo) fromC(xc *C.libxl_vnode_info) error {
 	x.Memkb = uint64(xc.memkb)
-	numDistances := int(xc.num_distances)
-	cDistances := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.distances))[:numDistances:numDistances]
-	x.Distances = make([]uint32, numDistances)
-	for i, v := range cDistances {
-		x.Distances[i] = uint32(v)
+	x.Distances = nil
+	if n := int(xc.num_distances); n > 0 {
+		cDistances := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.distances))[:n:n]
+		x.Distances = make([]uint32, n)
+		for i, v := range cDistances {
+			x.Distances[i] = uint32(v)
+		}
 	}
 	x.Pnode = uint32(xc.pnode)
 	if err := x.Vcpus.fromC(&xc.vcpus); err != nil {
@@ -1095,20 +1099,24 @@ func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
 	if err := x.Nodemap.fromC(&xc.nodemap); err != nil {
 		return fmt.Errorf("converting field Nodemap: %v", err)
 	}
-	numVcpuHardAffinity := int(xc.num_vcpu_hard_affinity)
-	cVcpuHardAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:numVcpuHardAffinity:numVcpuHardAffinity]
-	x.VcpuHardAffinity = make([]Bitmap, numVcpuHardAffinity)
-	for i, v := range cVcpuHardAffinity {
-		if err := x.VcpuHardAffinity[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
+	x.VcpuHardAffinity = nil
+	if n := int(xc.num_vcpu_hard_affinity); n > 0 {
+		cVcpuHardAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:n:n]
+		x.VcpuHardAffinity = make([]Bitmap, n)
+		for i, v := range cVcpuHardAffinity {
+			if err := x.VcpuHardAffinity[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
+			}
 		}
 	}
-	numVcpuSoftAffinity := int(xc.num_vcpu_soft_affinity)
-	cVcpuSoftAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:numVcpuSoftAffinity:numVcpuSoftAffinity]
-	x.VcpuSoftAffinity = make([]Bitmap, numVcpuSoftAffinity)
-	for i, v := range cVcpuSoftAffinity {
-		if err := x.VcpuSoftAffinity[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
+	x.VcpuSoftAffinity = nil
+	if n := int(xc.num_vcpu_soft_affinity); n > 0 {
+		cVcpuSoftAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:n:n]
+		x.VcpuSoftAffinity = make([]Bitmap, n)
+		for i, v := range cVcpuSoftAffinity {
+			if err := x.VcpuSoftAffinity[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
+			}
 		}
 	}
 	if err := x.NumaPlacement.fromC(&xc.numa_placement); err != nil {
@@ -1133,12 +1141,14 @@ func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
 		return fmt.Errorf("converting field Cpuid: %v", err)
 	}
 	x.BlkdevStart = C.GoString(xc.blkdev_start)
-	numVnumaNodes := int(xc.num_vnuma_nodes)
-	cVnumaNodes := (*[1 << 28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:numVnumaNodes:numVnumaNodes]
-	x.VnumaNodes = make([]VnodeInfo, numVnumaNodes)
-	for i, v := range cVnumaNodes {
-		if err := x.VnumaNodes[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field VnumaNodes: %v", err)
+	x.VnumaNodes = nil
+	if n := int(xc.num_vnuma_nodes); n > 0 {
+		cVnumaNodes := (*[1 << 28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:n:n]
+		x.VnumaNodes = make([]VnodeInfo, n)
+		for i, v := range cVnumaNodes {
+			if err := x.VnumaNodes[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field VnumaNodes: %v", err)
+			}
 		}
 	}
 	x.MaxGrantFrames = uint32(xc.max_grant_frames)
@@ -1163,26 +1173,32 @@ func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
 	if err := x.SchedParams.fromC(&xc.sched_params); err != nil {
 		return fmt.Errorf("converting field SchedParams: %v", err)
 	}
-	numIoports := int(xc.num_ioports)
-	cIoports := (*[1 << 28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:numIoports:numIoports]
-	x.Ioports = make([]IoportRange, numIoports)
-	for i, v := range cIoports {
-		if err := x.Ioports[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Ioports: %v", err)
+	x.Ioports = nil
+	if n := int(xc.num_ioports); n > 0 {
+		cIoports := (*[1 << 28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:n:n]
+		x.Ioports = make([]IoportRange, n)
+		for i, v := range cIoports {
+			if err := x.Ioports[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Ioports: %v", err)
+			}
 		}
 	}
-	numIrqs := int(xc.num_irqs)
-	cIrqs := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:numIrqs:numIrqs]
-	x.Irqs = make([]uint32, numIrqs)
-	for i, v := range cIrqs {
-		x.Irqs[i] = uint32(v)
+	x.Irqs = nil
+	if n := int(xc.num_irqs); n > 0 {
+		cIrqs := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:n:n]
+		x.Irqs = make([]uint32, n)
+		for i, v := range cIrqs {
+			x.Irqs[i] = uint32(v)
+		}
 	}
-	numIomem := int(xc.num_iomem)
-	cIomem := (*[1 << 28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:numIomem:numIomem]
-	x.Iomem = make([]IomemRange, numIomem)
-	for i, v := range cIomem {
-		if err := x.Iomem[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Iomem: %v", err)
+	x.Iomem = nil
+	if n := int(xc.num_iomem); n > 0 {
+		cIomem := (*[1 << 28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:n:n]
+		x.Iomem = make([]IomemRange, n)
+		for i, v := range cIomem {
+			if err := x.Iomem[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Iomem: %v", err)
+			}
 		}
 	}
 	if err := x.ClaimMode.fromC(&xc.claim_mode); err != nil {
@@ -2791,12 +2807,14 @@ func (x *DeviceVdispl) fromC(xc *C.libxl_device_vdispl) error {
 	x.BackendDomname = C.GoString(xc.backend_domname)
 	x.Devid = Devid(xc.devid)
 	x.BeAlloc = bool(xc.be_alloc)
-	numConnectors := int(xc.num_connectors)
-	cConnectors := (*[1 << 28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:numConnectors:numConnectors]
-	x.Connectors = make([]ConnectorParam, numConnectors)
-	for i, v := range cConnectors {
-		if err := x.Connectors[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Connectors: %v", err)
+	x.Connectors = nil
+	if n := int(xc.num_connectors); n > 0 {
+		cConnectors := (*[1 << 28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:n:n]
+		x.Connectors = make([]ConnectorParam, n)
+		for i, v := range cConnectors {
+			if err := x.Connectors[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Connectors: %v", err)
+			}
 		}
 	}
 
@@ -2848,17 +2866,21 @@ func NewVsndParams() (*VsndParams, error) {
 }
 
 func (x *VsndParams) fromC(xc *C.libxl_vsnd_params) error {
-	numSampleRates := int(xc.num_sample_rates)
-	cSampleRates := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:numSampleRates:numSampleRates]
-	x.SampleRates = make([]uint32, numSampleRates)
-	for i, v := range cSampleRates {
-		x.SampleRates[i] = uint32(v)
-	}
-	numSampleFormats := int(xc.num_sample_formats)
-	cSampleFormats := (*[1 << 28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:numSampleFormats:numSampleFormats]
-	x.SampleFormats = make([]VsndPcmFormat, numSampleFormats)
-	for i, v := range cSampleFormats {
-		x.SampleFormats[i] = VsndPcmFormat(v)
+	x.SampleRates = nil
+	if n := int(xc.num_sample_rates); n > 0 {
+		cSampleRates := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:n:n]
+		x.SampleRates = make([]uint32, n)
+		for i, v := range cSampleRates {
+			x.SampleRates[i] = uint32(v)
+		}
+	}
+	x.SampleFormats = nil
+	if n := int(xc.num_sample_formats); n > 0 {
+		cSampleFormats := (*[1 << 28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:n:n]
+		x.SampleFormats = make([]VsndPcmFormat, n)
+		for i, v := range cSampleFormats {
+			x.SampleFormats[i] = VsndPcmFormat(v)
+		}
 	}
 	x.ChannelsMin = uint32(xc.channels_min)
 	x.ChannelsMax = uint32(xc.channels_max)
@@ -2964,12 +2986,14 @@ func (x *VsndPcm) fromC(xc *C.libxl_vsnd_pcm) error {
 	if err := x.Params.fromC(&xc.params); err != nil {
 		return fmt.Errorf("converting field Params: %v", err)
 	}
-	numVsndStreams := int(xc.num_vsnd_streams)
-	cStreams := (*[1 << 28]C.libxl_vsnd_stream)(unsafe.Pointer(xc.streams))[:numVsndStreams:numVsndStreams]
-	x.Streams = make([]VsndStream, numVsndStreams)
-	for i, v := range cStreams {
-		if err := x.Streams[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Streams: %v", err)
+	x.Streams = nil
+	if n := int(xc.num_vsnd_streams); n > 0 {
+		cStreams := (*[1 << 28]C.libxl_vsnd_stream)(unsafe.Pointer(xc.streams))[:n:n]
+		x.Streams = make([]VsndStream, n)
+		for i, v := range cStreams {
+			if err := x.Streams[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Streams: %v", err)
+			}
 		}
 	}
 
@@ -3029,12 +3053,14 @@ func (x *DeviceVsnd) fromC(xc *C.libxl_device_vsnd) error {
 	if err := x.Params.fromC(&xc.params); err != nil {
 		return fmt.Errorf("converting field Params: %v", err)
 	}
-	numVsndPcms := int(xc.num_vsnd_pcms)
-	cPcms := (*[1 << 28]C.libxl_vsnd_pcm)(unsafe.Pointer(xc.pcms))[:numVsndPcms:numVsndPcms]
-	x.Pcms = make([]VsndPcm, numVsndPcms)
-	for i, v := range cPcms {
-		if err := x.Pcms[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Pcms: %v", err)
+	x.Pcms = nil
+	if n := int(xc.num_vsnd_pcms); n > 0 {
+		cPcms := (*[1 << 28]C.libxl_vsnd_pcm)(unsafe.Pointer(xc.pcms))[:n:n]
+		x.Pcms = make([]VsndPcm, n)
+		for i, v := range cPcms {
+			if err := x.Pcms[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Pcms: %v", err)
+			}
 		}
 	}
 
@@ -3100,124 +3126,154 @@ func (x *DomainConfig) fromC(xc *C.libxl_domain_config) error {
 	if err := x.BInfo.fromC(&xc.b_info); err != nil {
 		return fmt.Errorf("converting field BInfo: %v", err)
 	}
-	numDisks := int(xc.num_disks)
-	cDisks := (*[1 << 28]C.libxl_device_disk)(unsafe.Pointer(xc.disks))[:numDisks:numDisks]
-	x.Disks = make([]DeviceDisk, numDisks)
-	for i, v := range cDisks {
-		if err := x.Disks[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Disks: %v", err)
+	x.Disks = nil
+	if n := int(xc.num_disks); n > 0 {
+		cDisks := (*[1 << 28]C.libxl_device_disk)(unsafe.Pointer(xc.disks))[:n:n]
+		x.Disks = make([]DeviceDisk, n)
+		for i, v := range cDisks {
+			if err := x.Disks[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Disks: %v", err)
+			}
 		}
 	}
-	numNics := int(xc.num_nics)
-	cNics := (*[1 << 28]C.libxl_device_nic)(unsafe.Pointer(xc.nics))[:numNics:numNics]
-	x.Nics = make([]DeviceNic, numNics)
-	for i, v := range cNics {
-		if err := x.Nics[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Nics: %v", err)
+	x.Nics = nil
+	if n := int(xc.num_nics); n > 0 {
+		cNics := (*[1 << 28]C.libxl_device_nic)(unsafe.Pointer(xc.nics))[:n:n]
+		x.Nics = make([]DeviceNic, n)
+		for i, v := range cNics {
+			if err := x.Nics[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Nics: %v", err)
+			}
 		}
 	}
-	numPcidevs := int(xc.num_pcidevs)
-	cPcidevs := (*[1 << 28]C.libxl_device_pci)(unsafe.Pointer(xc.pcidevs))[:numPcidevs:numPcidevs]
-	x.Pcidevs = make([]DevicePci, numPcidevs)
-	for i, v := range cPcidevs {
-		if err := x.Pcidevs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Pcidevs: %v", err)
+	x.Pcidevs = nil
+	if n := int(xc.num_pcidevs); n > 0 {
+		cPcidevs := (*[1 << 28]C.libxl_device_pci)(unsafe.Pointer(xc.pcidevs))[:n:n]
+		x.Pcidevs = make([]DevicePci, n)
+		for i, v := range cPcidevs {
+			if err := x.Pcidevs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Pcidevs: %v", err)
+			}
 		}
 	}
-	numRdms := int(xc.num_rdms)
-	cRdms := (*[1 << 28]C.libxl_device_rdm)(unsafe.Pointer(xc.rdms))[:numRdms:numRdms]
-	x.Rdms = make([]DeviceRdm, numRdms)
-	for i, v := range cRdms {
-		if err := x.Rdms[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Rdms: %v", err)
+	x.Rdms = nil
+	if n := int(xc.num_rdms); n > 0 {
+		cRdms := (*[1 << 28]C.libxl_device_rdm)(unsafe.Pointer(xc.rdms))[:n:n]
+		x.Rdms = make([]DeviceRdm, n)
+		for i, v := range cRdms {
+			if err := x.Rdms[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Rdms: %v", err)
+			}
 		}
 	}
-	numDtdevs := int(xc.num_dtdevs)
-	cDtdevs := (*[1 << 28]C.libxl_device_dtdev)(unsafe.Pointer(xc.dtdevs))[:numDtdevs:numDtdevs]
-	x.Dtdevs = make([]DeviceDtdev, numDtdevs)
-	for i, v := range cDtdevs {
-		if err := x.Dtdevs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Dtdevs: %v", err)
+	x.Dtdevs = nil
+	if n := int(xc.num_dtdevs); n > 0 {
+		cDtdevs := (*[1 << 28]C.libxl_device_dtdev)(unsafe.Pointer(xc.dtdevs))[:n:n]
+		x.Dtdevs = make([]DeviceDtdev, n)
+		for i, v := range cDtdevs {
+			if err := x.Dtdevs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Dtdevs: %v", err)
+			}
 		}
 	}
-	numVfbs := int(xc.num_vfbs)
-	cVfbs := (*[1 << 28]C.libxl_device_vfb)(unsafe.Pointer(xc.vfbs))[:numVfbs:numVfbs]
-	x.Vfbs = make([]DeviceVfb, numVfbs)
-	for i, v := range cVfbs {
-		if err := x.Vfbs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vfbs: %v", err)
+	x.Vfbs = nil
+	if n := int(xc.num_vfbs); n > 0 {
+		cVfbs := (*[1 << 28]C.libxl_device_vfb)(unsafe.Pointer(xc.vfbs))[:n:n]
+		x.Vfbs = make([]DeviceVfb, n)
+		for i, v := range cVfbs {
+			if err := x.Vfbs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vfbs: %v", err)
+			}
 		}
 	}
-	numVkbs := int(xc.num_vkbs)
-	cVkbs := (*[1 << 28]C.libxl_device_vkb)(unsafe.Pointer(xc.vkbs))[:numVkbs:numVkbs]
-	x.Vkbs = make([]DeviceVkb, numVkbs)
-	for i, v := range cVkbs {
-		if err := x.Vkbs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vkbs: %v", err)
+	x.Vkbs = nil
+	if n := int(xc.num_vkbs); n > 0 {
+		cVkbs := (*[1 << 28]C.libxl_device_vkb)(unsafe.Pointer(xc.vkbs))[:n:n]
+		x.Vkbs = make([]DeviceVkb, n)
+		for i, v := range cVkbs {
+			if err := x.Vkbs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vkbs: %v", err)
+			}
 		}
 	}
-	numVtpms := int(xc.num_vtpms)
-	cVtpms := (*[1 << 28]C.libxl_device_vtpm)(unsafe.Pointer(xc.vtpms))[:numVtpms:numVtpms]
-	x.Vtpms = make([]DeviceVtpm, numVtpms)
-	for i, v := range cVtpms {
-		if err := x.Vtpms[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vtpms: %v", err)
+	x.Vtpms = nil
+	if n := int(xc.num_vtpms); n > 0 {
+		cVtpms := (*[1 << 28]C.libxl_device_vtpm)(unsafe.Pointer(xc.vtpms))[:n:n]
+		x.Vtpms = make([]DeviceVtpm, n)
+		for i, v := range cVtpms {
+			if err := x.Vtpms[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vtpms: %v", err)
+			}
 		}
 	}
-	numP9S := int(xc.num_p9s)
-	cP9S := (*[1 << 28]C.libxl_device_p9)(unsafe.Pointer(xc.p9s))[:numP9S:numP9S]
-	x.P9S = make([]DeviceP9, numP9S)
-	for i, v := range cP9S {
-		if err := x.P9S[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field P9S: %v", err)
+	x.P9S = nil
+	if n := int(xc.num_p9s); n > 0 {
+		cP9S := (*[1 << 28]C.libxl_device_p9)(unsafe.Pointer(xc.p9s))[:n:n]
+		x.P9S = make([]DeviceP9, n)
+		for i, v := range cP9S {
+			if err := x.P9S[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field P9S: %v", err)
+			}
 		}
 	}
-	numPvcallsifs := int(xc.num_pvcallsifs)
-	cPvcallsifs := (*[1 << 28]C.libxl_device_pvcallsif)(unsafe.Pointer(xc.pvcallsifs))[:numPvcallsifs:numPvcallsifs]
-	x.Pvcallsifs = make([]DevicePvcallsif, numPvcallsifs)
-	for i, v := range cPvcallsifs {
-		if err := x.Pvcallsifs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Pvcallsifs: %v", err)
+	x.Pvcallsifs = nil
+	if n := int(xc.num_pvcallsifs); n > 0 {
+		cPvcallsifs := (*[1 << 28]C.libxl_device_pvcallsif)(unsafe.Pointer(xc.pvcallsifs))[:n:n]
+		x.Pvcallsifs = make([]DevicePvcallsif, n)
+		for i, v := range cPvcallsifs {
+			if err := x.Pvcallsifs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Pvcallsifs: %v", err)
+			}
 		}
 	}
-	numVdispls := int(xc.num_vdispls)
-	cVdispls := (*[1 << 28]C.libxl_device_vdispl)(unsafe.Pointer(xc.vdispls))[:numVdispls:numVdispls]
-	x.Vdispls = make([]DeviceVdispl, numVdispls)
-	for i, v := range cVdispls {
-		if err := x.Vdispls[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vdispls: %v", err)
+	x.Vdispls = nil
+	if n := int(xc.num_vdispls); n > 0 {
+		cVdispls := (*[1 << 28]C.libxl_device_vdispl)(unsafe.Pointer(xc.vdispls))[:n:n]
+		x.Vdispls = make([]DeviceVdispl, n)
+		for i, v := range cVdispls {
+			if err := x.Vdispls[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vdispls: %v", err)
+			}
 		}
 	}
-	numVsnds := int(xc.num_vsnds)
-	cVsnds := (*[1 << 28]C.libxl_device_vsnd)(unsafe.Pointer(xc.vsnds))[:numVsnds:numVsnds]
-	x.Vsnds = make([]DeviceVsnd, numVsnds)
-	for i, v := range cVsnds {
-		if err := x.Vsnds[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Vsnds: %v", err)
+	x.Vsnds = nil
+	if n := int(xc.num_vsnds); n > 0 {
+		cVsnds := (*[1 << 28]C.libxl_device_vsnd)(unsafe.Pointer(xc.vsnds))[:n:n]
+		x.Vsnds = make([]DeviceVsnd, n)
+		for i, v := range cVsnds {
+			if err := x.Vsnds[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Vsnds: %v", err)
+			}
 		}
 	}
-	numChannels := int(xc.num_channels)
-	cChannels := (*[1 << 28]C.libxl_device_channel)(unsafe.Pointer(xc.channels))[:numChannels:numChannels]
-	x.Channels = make([]DeviceChannel, numChannels)
-	for i, v := range cChannels {
-		if err := x.Channels[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Channels: %v", err)
+	x.Channels = nil
+	if n := int(xc.num_channels); n > 0 {
+		cChannels := (*[1 << 28]C.libxl_device_channel)(unsafe.Pointer(xc.channels))[:n:n]
+		x.Channels = make([]DeviceChannel, n)
+		for i, v := range cChannels {
+			if err := x.Channels[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Channels: %v", err)
+			}
 		}
 	}
-	numUsbctrls := int(xc.num_usbctrls)
-	cUsbctrls := (*[1 << 28]C.libxl_device_usbctrl)(unsafe.Pointer(xc.usbctrls))[:numUsbctrls:numUsbctrls]
-	x.Usbctrls = make([]DeviceUsbctrl, numUsbctrls)
-	for i, v := range cUsbctrls {
-		if err := x.Usbctrls[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Usbctrls: %v", err)
+	x.Usbctrls = nil
+	if n := int(xc.num_usbctrls); n > 0 {
+		cUsbctrls := (*[1 << 28]C.libxl_device_usbctrl)(unsafe.Pointer(xc.usbctrls))[:n:n]
+		x.Usbctrls = make([]DeviceUsbctrl, n)
+		for i, v := range cUsbctrls {
+			if err := x.Usbctrls[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Usbctrls: %v", err)
+			}
 		}
 	}
-	numUsbdevs := int(xc.num_usbdevs)
-	cUsbdevs := (*[1 << 28]C.libxl_device_usbdev)(unsafe.Pointer(xc.usbdevs))[:numUsbdevs:numUsbdevs]
-	x.Usbdevs = make([]DeviceUsbdev, numUsbdevs)
-	for i, v := range cUsbdevs {
-		if err := x.Usbdevs[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Usbdevs: %v", err)
+	x.Usbdevs = nil
+	if n := int(xc.num_usbdevs); n > 0 {
+		cUsbdevs := (*[1 << 28]C.libxl_device_usbdev)(unsafe.Pointer(xc.usbdevs))[:n:n]
+		x.Usbdevs = make([]DeviceUsbdev, n)
+		for i, v := range cUsbdevs {
+			if err := x.Usbdevs[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Usbdevs: %v", err)
+			}
 		}
 	}
 	x.OnPoweroff = ActionOnShutdown(xc.on_poweroff)
@@ -3837,12 +3893,14 @@ func (x *Vdisplinfo) fromC(xc *C.libxl_vdisplinfo) error {
 	x.Devid = Devid(xc.devid)
 	x.State = int(xc.state)
 	x.BeAlloc = bool(xc.be_alloc)
-	numConnectors := int(xc.num_connectors)
-	cConnectors := (*[1 << 28]C.libxl_connectorinfo)(unsafe.Pointer(xc.connectors))[:numConnectors:numConnectors]
-	x.Connectors = make([]Connectorinfo, numConnectors)
-	for i, v := range cConnectors {
-		if err := x.Connectors[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Connectors: %v", err)
+	x.Connectors = nil
+	if n := int(xc.num_connectors); n > 0 {
+		cConnectors := (*[1 << 28]C.libxl_connectorinfo)(unsafe.Pointer(xc.connectors))[:n:n]
+		x.Connectors = make([]Connectorinfo, n)
+		for i, v := range cConnectors {
+			if err := x.Connectors[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Connectors: %v", err)
+			}
 		}
 	}
 
@@ -3936,12 +3994,14 @@ func NewPcminfo() (*Pcminfo, error) {
 }
 
 func (x *Pcminfo) fromC(xc *C.libxl_pcminfo) error {
-	numVsndStreams := int(xc.num_vsnd_streams)
-	cStreams := (*[1 << 28]C.libxl_streaminfo)(unsafe.Pointer(xc.streams))[:numVsndStreams:numVsndStreams]
-	x.Streams = make([]Streaminfo, numVsndStreams)
-	for i, v := range cStreams {
-		if err := x.Streams[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Streams: %v", err)
+	x.Streams = nil
+	if n := int(xc.num_vsnd_streams); n > 0 {
+		cStreams := (*[1 << 28]C.libxl_streaminfo)(unsafe.Pointer(xc.streams))[:n:n]
+		x.Streams = make([]Streaminfo, n)
+		for i, v := range cStreams {
+			if err := x.Streams[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Streams: %v", err)
+			}
 		}
 	}
 
@@ -3993,12 +4053,14 @@ func (x *Vsndinfo) fromC(xc *C.libxl_vsndinfo) error {
 	x.FrontendId = uint32(xc.frontend_id)
 	x.Devid = Devid(xc.devid)
 	x.State = int(xc.state)
-	numVsndPcms := int(xc.num_vsnd_pcms)
-	cPcms := (*[1 << 28]C.libxl_pcminfo)(unsafe.Pointer(xc.pcms))[:numVsndPcms:numVsndPcms]
-	x.Pcms = make([]Pcminfo, numVsndPcms)
-	for i, v := range cPcms {
-		if err := x.Pcms[i].fromC(&v); err != nil {
-			return fmt.Errorf("converting field Pcms: %v", err)
+	x.Pcms = nil
+	if n := int(xc.num_vsnd_pcms); n > 0 {
+		cPcms := (*[1 << 28]C.libxl_pcminfo)(unsafe.Pointer(xc.pcms))[:n:n]
+		x.Pcms = make([]Pcminfo, n)
+		for i, v := range cPcms {
+			if err := x.Pcms[i].fromC(&v); err != nil {
+				return fmt.Errorf("converting field Pcms: %v", err)
+			}
 		}
 	}
 
@@ -4109,11 +4171,13 @@ func NewNumainfo() (*Numainfo, error) {
 func (x *Numainfo) fromC(xc *C.libxl_numainfo) error {
 	x.Size = uint64(xc.size)
 	x.Free = uint64(xc.free)
-	numDists := int(xc.num_dists)
-	cDists := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.dists))[:numDists:numDists]
-	x.Dists = make([]uint32, numDists)
-	for i, v := range cDists {
-		x.Dists[i] = uint32(v)
+	x.Dists = nil
+	if n := int(xc.num_dists); n > 0 {
+		cDists := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.dists))[:n:n]
+		x.Dists = make([]uint32, n)
+		for i, v := range cDists {
+			x.Dists[i] = uint32(v)
+		}
 	}
 
 	return nil
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:01:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:01:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRytx-0002YA-IA; Fri, 24 Apr 2020 14:01:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRytw-0002Xz-Cf
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:56 +0000
X-Inumbo-ID: 27d51bfa-8634-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 27d51bfa-8634-11ea-83d8-bc764e2007e4;
 Fri, 24 Apr 2020 14:01:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=fvxFcP/3IeG8R2SUYJ+083bK5cOKVECIIwqE4Sp5FoM=; b=giogTsG7P5wCaeB26v/2Z4Xxfb
 e5paHctAZqccSVqTdmSbekolW0P0MpiagKVafd0dgn9TFRWpwnLF/7N3zbMY61+Z8quK2OwpWPjzr
 QBXYqUGxcd+SZbd3UhRuVbz8tVjSKFVoDwB+oC2fW7rLpGeyXw6XuWIDN5btyPynB1qY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRytv-0001XL-7o
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRytv-0000p0-70
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:01:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] golang/xenlight: Notify xenlight of SIGCHLD
Message-Id: <E1jRytv-0000p0-70@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:01:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a73964c18e25ec451d5d0fd89e21702817f6b3dd
Author:     George Dunlap <george.dunlap@citrix.com>
AuthorDate: Thu Dec 26 17:35:27 2019 +0000
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 16:00:13 2020 +0100

    golang/xenlight: Notify xenlight of SIGCHLD
    
    libxl forks external processes and waits for them to complete; it
    therefore needs to be notified when children exit.
    
    In absence of instructions to the contrary, libxl sets up its own
    SIGCHLD handlers.
    
    Golang always unmasks and handles SIGCHLD itself.  libxl thankfully
    notices this and throws an assert() rather than clobbering SIGCHLD
    handlers.
    
    Tell libxl that we'll be responsible for getting SIGCHLD notifications
    to it.  Arrange for a channel in the context to receive notifications
    on SIGCHLD, and set up a goroutine that will pass these on to libxl.
    
    NB that every libxl context needs a notification; so multiple contexts
    will each spin up their own goroutine when opening a context, and shut
    it down on close.
    
    libxl also wants to hold on to a const pointer to
    xenlight_childproc_hooks rather than do a copy; so make a global
    structure in C space.  Make it `static const`, just for extra safety;
    this requires making a function in the C space to pass it to libxl.
    
    While here, add a few comments to make the context set-up a bit easier
    to follow.
    
    Signed-off-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Nick Rosbrook <rosbrookn@ainfosec.com>
---
 tools/golang/xenlight/xenlight.go | 70 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 68 insertions(+), 2 deletions(-)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index ff73c11889..20f6542f6b 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -17,9 +17,17 @@
 package xenlight
 
 /*
+
 #cgo LDFLAGS: -lxenlight -lyajl -lxentoollog
 #include <stdlib.h>
 #include <libxl.h>
+
+static const libxl_childproc_hooks childproc_hooks = { .chldowner = libxl_sigchld_owner_mainloop };
+
+void xenlight_set_chldproc(libxl_ctx *ctx) {
+	libxl_childproc_setmode(ctx, &childproc_hooks, NULL);
+}
+
 */
 import "C"
 
@@ -33,6 +41,9 @@ import "C"
 
 import (
 	"fmt"
+	"os"
+	"os/signal"
+	"syscall"
 	"unsafe"
 )
 
@@ -74,8 +85,37 @@ func (e Error) Error() string {
 
 // Context represents a libxl_ctx.
 type Context struct {
-	ctx    *C.libxl_ctx
-	logger *C.xentoollog_logger_stdiostream
+	ctx         *C.libxl_ctx
+	logger      *C.xentoollog_logger_stdiostream
+	sigchld     chan os.Signal
+	sigchldDone chan struct{}
+}
+
+// Golang always unmasks SIGCHLD, and internally has ways of
+// distributing SIGCHLD to multiple recipients.  libxl has provision
+// for this model: just tell it when a SIGCHLD happened, and it will
+// look after its own processes.
+//
+// This should "play nicely" with other users of SIGCHLD as long as
+// they don't reap libxl's processes.
+//
+// Every context needs to be notified on each SIGCHLD; so spin up a
+// new goroutine for each context.  If there are a large number of
+// contexts, this means each context will be woken up looking through
+// its own list of children.
+//
+// The alternate would be to register a fork callback, such that the
+// xenlight package can make a single list of all children, and only
+// notify the specific libxl context(s) that have children woken.  But
+// it's not clear to me this will be much more work than having the
+// xenlight go library do the same thing; doing it in separate go
+// threads has the potential to do it in parallel.  Leave that as an
+// optimization for later if it turns out to be a bottleneck.
+func sigchldHandler(ctx *Context) {
+	for _ = range ctx.sigchld {
+		C.libxl_childproc_sigchld_occurred(ctx.ctx)
+	}
+	close(ctx.sigchldDone)
 }
 
 // NewContext returns a new Context.
@@ -89,19 +129,45 @@ func NewContext() (ctx *Context, err error) {
 		}
 	}()
 
+	// Create a logger
 	ctx.logger = C.xtl_createlogger_stdiostream(C.stderr, C.XTL_ERROR, 0)
 
+	// Allocate a context
 	ret := C.libxl_ctx_alloc(&ctx.ctx, C.LIBXL_VERSION, 0,
 		(*C.xentoollog_logger)(unsafe.Pointer(ctx.logger)))
 	if ret != 0 {
 		return ctx, Error(ret)
 	}
 
+	// Tell libxl that we'll be dealing with SIGCHLD...
+	C.xenlight_set_chldproc(ctx.ctx)
+
+	// ...and arrange to keep that promise.
+	ctx.sigchld = make(chan os.Signal, 2)
+	ctx.sigchldDone = make(chan struct{}, 1)
+	signal.Notify(ctx.sigchld, syscall.SIGCHLD)
+
+	// This goroutine will run until the ctx.sigchld is closed in
+	// ctx.Close(); at which point it will close ctx.sigchldDone.
+	go sigchldHandler(ctx)
+
 	return ctx, nil
 }
 
 // Close closes the Context.
 func (ctx *Context) Close() error {
+	// Tell our SIGCHLD notifier to shut down, and wait for it to exit
+	// before we free the context.
+	if ctx.sigchld != nil {
+		signal.Stop(ctx.sigchld)
+		close(ctx.sigchld)
+
+		<-ctx.sigchldDone
+
+		ctx.sigchld = nil
+		ctx.sigchldDone = nil
+	}
+
 	if ctx.ctx != nil {
 		ret := C.libxl_ctx_free(ctx.ctx)
 		if ret != 0 {
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:02:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:02:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRyu6-0002ZF-K2; Fri, 24 Apr 2020 14:02:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRyu6-0002Z6-3t
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:02:06 +0000
X-Inumbo-ID: 2dd9e12a-8634-11ea-94af-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2dd9e12a-8634-11ea-94af-12813bfff9fa;
 Fri, 24 Apr 2020 14:02:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=24N3BIPyVrMTZd5zaC5dikJv3gBfa0caB3KdSTExiC4=; b=WiOqbUqbe/lL4hLvev6Zb+jQLL
 qiBlFSlAppEDW7XvOgCsyVF13NRaY+ydRkTu7UDt8yx5pNkctgyO56SKGGPOF6ZK772jBef2hRbO6
 jEvHf3iOaiiYkaxLkZIdaLAGj6xFcSCe6zf/RF6fhTdY7M9hNBNOy7pfUgpHBbfoCosg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRyu5-0001Xh-Ai
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:02:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRyu5-0000pn-9e
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:02:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] golang/xenlight: Implement DomainCreateNew
Message-Id: <E1jRyu5-0000pn-9e@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:02:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit aa14feb6723d3bb15a884533ade1cd9732792145
Author:     George Dunlap <george.dunlap@citrix.com>
AuthorDate: Tue Dec 24 12:51:56 2019 +0000
Commit:     George Dunlap <george.dunlap@citrix.com>
CommitDate: Thu Apr 23 16:00:15 2020 +0100

    golang/xenlight: Implement DomainCreateNew
    
    This implements the wrapper around libxl_domain_create_new().  With
    the previous changes, it's now possible to create a domain using the
    golang bindings (although not yet to unpause it or harvest it after it
    shuts down).
    
    Signed-off-by: George Dunlap <george.dunlap@citrix.com>
    Reviewed-by: Nick Rosbrook <rosbrookn@ainfosec.com>
---
 tools/golang/xenlight/xenlight.go | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index 20f6542f6b..6b4f492550 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -1213,3 +1213,21 @@ func (Ctx *Context) DeviceUsbdevRemove(domid Domid, usbdev *DeviceUsbdev) error
 
 	return nil
 }
+
+// DomainCreateNew creates a new domain.
+func (Ctx *Context) DomainCreateNew(config *DomainConfig) (Domid, error) {
+	var cdomid C.uint32_t
+	var cconfig C.libxl_domain_config
+	err := config.toC(&cconfig)
+	if err != nil {
+		return Domid(0), fmt.Errorf("converting domain config to C: %v", err)
+	}
+	defer C.libxl_domain_config_dispose(&cconfig)
+
+	ret := C.libxl_domain_create_new(Ctx.ctx, &cconfig, &cdomid, nil, nil)
+	if ret != 0 {
+		return Domid(0), Error(ret)
+	}
+
+	return Domid(cdomid), nil
+}
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 14:55:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 14:55:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jRzjU-0000JN-6x; Fri, 24 Apr 2020 14:55:12 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jRzjT-0000JI-1V
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:55:11 +0000
X-Inumbo-ID: 984a7a86-863b-11ea-b4f4-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 984a7a86-863b-11ea-b4f4-bc764e2007e4;
 Fri, 24 Apr 2020 14:55:10 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=k4KjUCNKBM4hpyTw9PGozgKrDAHnS5knBYH7w0QgGEw=; b=UfACp8NvseKO1gvZLWHrkDmjRr
 aGsJltgC/r/56JThXM+1EuK7V+h2JCo9lA7wSWGJTB5J+icHTR2dLJKZnN8/BzwYKVysHV0GgLigc
 Bp8lmz8+uPoN3hGH/GVM4BkfvKOte0G1yXpp06UHxZsc3ncfVeA8ppknOdTyfCkGP73Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRzjS-0002hv-CY
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:55:10 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jRzjS-00051U-9O
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 14:55:10 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] Update QEMU_TRADITIONAL_REVISION
Message-Id: <E1jRzjS-00051U-9O@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 14:55:10 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3acfd35b61688ad9a5b843ee923221eb36e0b613
Author:     Ian Jackson <ian.jackson@eu.citrix.com>
AuthorDate: Fri Apr 24 15:49:23 2020 +0100
Commit:     Ian Jackson <ian.jackson@eu.citrix.com>
CommitDate: Fri Apr 24 15:49:23 2020 +0100

    Update QEMU_TRADITIONAL_REVISION
    
    Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
 Config.mk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Config.mk b/Config.mk
index 0f303c79b2..3621162ae4 100644
--- a/Config.mk
+++ b/Config.mk
@@ -252,9 +252,9 @@ SEABIOS_UPSTREAM_REVISION ?= rel-1.13.0
 ETHERBOOT_NICS ?= rtl8139 8086100e
 
 
-QEMU_TRADITIONAL_REVISION ?= d0d8ad39ecb51cd7497cd524484fe09f50876798
-# Wed Oct 10 18:52:54 2018 +0000
-# xen/pt: allow QEMU to request MSI unmasking at bind time
+QEMU_TRADITIONAL_REVISION ?= 3c659044118e34603161457db9934a34f816d78b
+# Fri Mar 13 12:35:26 2020 +0000
+# xen: cleanup IOREQ server on exit
 
 # Specify which qemu-dm to use. This may be `ioemu' to use the old
 # Mercurial in-tree version, or a local directory, or a git URL.
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Fri Apr 24 17:55:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 24 Apr 2020 17:55:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jS2Xb-0007j7-PN; Fri, 24 Apr 2020 17:55:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QsAV=6I=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jS2Xa-0007j2-NF
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 17:55:06 +0000
X-Inumbo-ID: b9ed40f1-8654-11ea-94ec-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b9ed40f1-8654-11ea-94ec-12813bfff9fa;
 Fri, 24 Apr 2020 17:55:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=utqv7vSa75Rn5UBn4RJlH9JvosszDuZNii2yufw4SmI=; b=kIso3trF4tJ/YElwqI+Efl3aE9
 MQ5/FhuTLIBwKqHRXUHjbAmQIVJJ7u3zZkCOYnHjsXoE3t9K2+965/xuGCdKbe7Gyt/90FW7pKD8I
 V20Q9DBLL0gikK2/1x3cuajbKDMNEHTmhGc50fG6+GNpD341VzwpKg6Q9CQmRF9mKoy8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jS2XY-0006vK-OR
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 17:55:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jS2XY-0000bm-N5
 for xen-changelog@lists.xenproject.org; Fri, 24 Apr 2020 17:55:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] Introduce a description of the Backport and Fixes tags
Message-Id: <E1jS2XY-0000bm-N5@xenbits.xenproject.org>
Date: Fri, 24 Apr 2020 17:55:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f093b08c47b39da6019421a2b61d40745b3e573b
Author:     Stefano Stabellini <sstabellini@kernel.org>
AuthorDate: Tue Apr 21 11:29:46 2020 -0700
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 24 10:47:56 2020 -0700

    Introduce a description of the Backport and Fixes tags
    
    Create a new document under docs/process to describe our special tags.
    Add a description of the Fixes tag and the new Backport tag. Also
    clarify that lines with tags should not be split.
    
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Acked-by: Wei Liu <wl@xen.org>
    Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
    CC: jbeulich@suse.com
    CC: george.dunlap@citrix.com
    CC: julien@xen.org
    CC: lars.kurth@citrix.com
    CC: andrew.cooper3@citrix.com
    CC: konrad.wilk@oracle.com
---
 docs/process/tags.pandoc | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/docs/process/tags.pandoc b/docs/process/tags.pandoc
new file mode 100644
index 0000000000..1841cb87a8
--- /dev/null
+++ b/docs/process/tags.pandoc
@@ -0,0 +1,55 @@
+Tags: No line splitting
+-----------------------
+Do not split a tag across multiple lines, tags are exempt from the
+"wrap at 75 columns" rule in order to simplify parsing scripts.  For
+example:
+
+        Fixes: 67d01cdb5518 ("x86: infrastructure to allow converting certain indirect calls to direct ones")
+
+
+Fixes Tag
+---------
+
+If your patch fixes a bug in a specific commit, e.g. you found an issue using
+``git bisect``, please use the 'Fixes:' tag with the first 12 characters of
+the SHA-1 ID, and the one line summary.
+
+The following ``git config`` settings can be used to add a pretty format for
+outputting the above style in the ``git log`` or ``git show`` commands:
+
+        [core]
+                abbrev = 12
+        [pretty]
+                fixes = Fixes: %h (\"%s\")
+
+
+Backport Tag
+------------
+
+A backport tag is an optional tag in the commit message to request a
+given commit to be backported to the released trees:
+
+    Backport: 4.9+
+
+It marks a commit for being a candidate for backports to all released
+trees from 4.9 onward.
+
+The backport requester is expected to specify which currently supported
+releases need the backport; but encouraged to specify a release as far
+back as possible which applies. If the requester doesn't know the oldest
+affected tree, they are encouraged to append a comment like the
+following:
+
+    Backport: 4.9+ # maybe older
+
+Maintainers request the Backport tag to be added on commit. Contributors
+are welcome to mark their patches with the Backport tag when they deem
+appropriate. Maintainers will request for it to be removed when that is
+not the case.
+
+Please note that the Backport tag is a **request** for backport, which
+will still need to be evaluated by the maintainers. Maintainers might
+ask the requester to help with the backporting work if it is not
+trivial.
+
+When possible, please use the Fixes tag instead (or in addition).
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 09:55:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 09:55:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSHWa-0002Og-JC; Sat, 25 Apr 2020 09:55:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSHWZ-0002Ob-G9
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:03 +0000
X-Inumbo-ID: d558c582-86da-11ea-959c-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id d558c582-86da-11ea-959c-12813bfff9fa;
 Sat, 25 Apr 2020 09:55:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=1WDm99froSkStLF6P0/Q7u5MUxBFuBLoeeh7LTuvZ0Q=; b=nbm2JIm1FjDQDNQliIMe6DNjh6
 AdqT8v4IZY/Q45DNcV/RCDCpzN9ToIHyeUPxRJNj7oAf9pAUfSHlW2Q27whlMCNrr2Q0dHlOXtxFm
 EARr+l44wGsrgWOaWCnhM26FPAI9mz7pLRSXZ3QX//V19V4uOGq/ojBmHrfGmWoa8HBk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHWY-00010n-Pj
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHWY-0004tp-Nk
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/build: have the root Makefile generates the CFLAGS
Message-Id: <E1jSHWY-0004tp-Nk@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 09:55:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2740d96efdd3009f8adb40aacdbcf05cfe8d1bbb
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Apr 24 14:57:10 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 14:57:10 2020 +0200

    xen/build: have the root Makefile generates the CFLAGS
    
    Instead of generating the CFLAGS in Rules.mk everytime we enter a new
    subdirectory, we are going to generate most of them a single time, and
    export the result in the environment so that Rules.mk can use it.  The
    only flags left to be generated are the ones that depend on the
    targets, but the variable $(c_flags) takes care of that.
    
    Arch specific CFLAGS are generated by a new file "arch/*/arch.mk"
    which is included by the root Makefile.
    
    We export the *FLAGS via the environment variables XEN_*FLAGS because
    Rules.mk still includes Config.mk and would add duplicated flags to
    CFLAGS.
    
    When running Rules.mk in the root directory (xen/), the variable
    `root-make-done' is set, so `need-config' will remain undef and so the
    root Makefile will not generate the cflags again.
    
    We can't use CFLAGS in subdirectories to add flags to particular
    targets, instead start to use CFLAGS-y. Idem for AFLAGS.
    So there are two different CFLAGS-y, the one in xen/Makefile (and
    arch.mk), and the one in subdirs that Rules.mk is going to use.
    We can't add to XEN_CFLAGS because it is exported, so making change to
    it might be propagated to subdirectory which isn't intended.
    
    Some style change are introduced in this patch:
        when LDFLAGS_DIRECT is included in LDFLAGS
        use of CFLAGS-$(CONFIG_INDIRECT_THUNK) instead of ifeq().
    
    The LTO change hasn't been tested properly, as LTO is marked as
    broken.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
---
 xen/Makefile               | 58 +++++++++++++++++++++++++++++
 xen/Rules.mk               | 73 +++++++++----------------------------
 xen/arch/arm/Makefile      | 10 ++---
 xen/arch/arm/Rules.mk      | 23 ------------
 xen/arch/arm/arch.mk       | 18 +++++++++
 xen/arch/arm/efi/Makefile  |  2 +-
 xen/arch/x86/Makefile      | 24 ++++++------
 xen/arch/x86/Rules.mk      | 91 +++-------------------------------------------
 xen/arch/x86/arch.mk       | 84 ++++++++++++++++++++++++++++++++++++++++++
 xen/arch/x86/efi/Makefile  |  2 +-
 xen/common/libelf/Makefile |  4 +-
 xen/common/libfdt/Makefile |  4 +-
 xen/include/Makefile       |  2 +-
 xen/xsm/flask/Makefile     |  2 +-
 xen/xsm/flask/ss/Makefile  |  2 +-
 15 files changed, 210 insertions(+), 189 deletions(-)

diff --git a/xen/Makefile b/xen/Makefile
index 643c689658..2a689b26a2 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -118,6 +118,64 @@ $(KCONFIG_CONFIG):
 include/config/%.conf include/config/%.conf.cmd: $(KCONFIG_CONFIG)
 	$(MAKE) $(kconfig) syncconfig
 
+ifeq ($(CONFIG_DEBUG),y)
+CFLAGS += -O1
+else
+CFLAGS += -O2
+endif
+
+ifeq ($(CONFIG_FRAME_POINTER),y)
+CFLAGS += -fno-omit-frame-pointer
+else
+CFLAGS += -fomit-frame-pointer
+endif
+
+CFLAGS += -nostdinc -fno-builtin -fno-common
+CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
+$(call cc-option-add,CFLAGS,CC,-Wvla)
+CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
+CFLAGS-$(CONFIG_DEBUG_INFO) += -g
+
+ifneq ($(CONFIG_CC_IS_CLANG),y)
+# Clang doesn't understand this command line argument, and doesn't appear to
+# have a suitable alternative.  The resulting compiled binary does function,
+# but has an excessively large symbol table.
+CFLAGS += -Wa,--strip-local-absolute
+endif
+
+AFLAGS += -D__ASSEMBLY__
+
+CFLAGS += $(CFLAGS-y)
+# allow extra CFLAGS externally via EXTRA_CFLAGS_XEN_CORE
+CFLAGS += $(EXTRA_CFLAGS_XEN_CORE)
+
+# Most CFLAGS are safe for assembly files:
+#  -std=gnu{89,99} gets confused by #-prefixed end-of-line comments
+#  -flto makes no sense and annoys clang
+AFLAGS += $(filter-out -std=gnu% -flto,$(CFLAGS)) $(AFLAGS-y)
+
+# LDFLAGS are only passed directly to $(LD)
+LDFLAGS += $(LDFLAGS_DIRECT) $(LDFLAGS-y)
+
+ifeq ($(CONFIG_UBSAN),y)
+CFLAGS_UBSAN := -fsanitize=undefined
+else
+CFLAGS_UBSAN :=
+endif
+
+ifeq ($(CONFIG_LTO),y)
+CFLAGS += -flto
+LDFLAGS-$(CONFIG_CC_IS_CLANG) += -plugin LLVMgold.so
+endif
+
+include $(BASEDIR)/arch/$(TARGET_ARCH)/arch.mk
+
+# define new variables to avoid the ones defined in Config.mk
+export XEN_CFLAGS := $(CFLAGS)
+export XEN_AFLAGS := $(AFLAGS)
+export XEN_LDFLAGS := $(LDFLAGS)
+export CFLAGS_UBSAN
+
 endif # need-config
 
 .PHONY: build install uninstall clean distclean MAP
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 3408a35dbf..8e4b9e3a4a 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -38,59 +38,17 @@ ALL_OBJS-y               += $(BASEDIR)/arch/$(TARGET_ARCH)/built_in.o
 ALL_OBJS-$(CONFIG_CRYPTO)   += $(BASEDIR)/crypto/built_in.o
 
 # Initialise some variables
-CFLAGS_UBSAN :=
-
-ifeq ($(CONFIG_DEBUG),y)
-CFLAGS += -O1
-else
-CFLAGS += -O2
-endif
-
-ifeq ($(CONFIG_FRAME_POINTER),y)
-CFLAGS += -fno-omit-frame-pointer
-else
-CFLAGS += -fomit-frame-pointer
-endif
-
-CFLAGS += -nostdinc -fno-builtin -fno-common
-CFLAGS += -Werror -Wredundant-decls -Wno-pointer-arith
-$(call cc-option-add,CFLAGS,CC,-Wvla)
-CFLAGS += -pipe -D__XEN__ -include $(BASEDIR)/include/xen/config.h
-CFLAGS-$(CONFIG_DEBUG_INFO) += -g
-
-ifneq ($(CONFIG_CC_IS_CLANG),y)
-# Clang doesn't understand this command line argument, and doesn't appear to
-# have an suitable alternative.  The resulting compiled binary does function,
-# but has an excessively large symbol table.
-CFLAGS += -Wa,--strip-local-absolute
-endif
-
-AFLAGS += -D__ASSEMBLY__
+CFLAGS-y :=
+AFLAGS-y :=
 
 ALL_OBJS := $(ALL_OBJS-y)
 
-CFLAGS += $(CFLAGS-y)
-# allow extra CFLAGS externally via EXTRA_CFLAGS_XEN_CORE
-CFLAGS += $(EXTRA_CFLAGS_XEN_CORE)
-
-# Most CFLAGS are safe for assembly files:
-#  -std=gnu{89,99} gets confused by #-prefixed end-of-line comments
-#  -flto makes no sense and annoys clang
-AFLAGS += $(filter-out -std=gnu% -flto,$(CFLAGS))
-
-# LDFLAGS are only passed directly to $(LD)
-LDFLAGS += $(LDFLAGS_DIRECT)
-
-LDFLAGS += $(LDFLAGS-y)
-
 SPECIAL_DATA_SECTIONS := rodata $(foreach a,1 2 4 8 16, \
                                             $(foreach w,1 2 4, \
                                                         rodata.str$(w).$(a)) \
                                             rodata.cst$(a)) \
                          $(foreach r,rel rel.ro,data.$(r).local)
 
-include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk
-
 include Makefile
 
 define gendep
@@ -107,7 +65,7 @@ $(foreach o,$(filter-out %/,$(obj-y) $(obj-bin-y) $(extra-y)),$(eval $(call gend
 subdir-y := $(subdir-y) $(filter %/, $(obj-y))
 obj-y    := $(patsubst %/, %/built_in.o, $(obj-y))
 
-$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS += -DINIT_SECTIONS_ONLY
+$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS-y += -DINIT_SECTIONS_ONLY
 
 ifeq ($(CONFIG_COVERAGE),y)
 ifeq ($(CONFIG_CC_IS_CLANG),y)
@@ -115,19 +73,16 @@ ifeq ($(CONFIG_CC_IS_CLANG),y)
 else
     COV_FLAGS := -fprofile-arcs -ftest-coverage
 endif
-$(filter-out %.init.o $(nocov-y),$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS += $(COV_FLAGS)
+$(filter-out %.init.o $(nocov-y),$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS-y += $(COV_FLAGS)
 endif
 
 ifeq ($(CONFIG_UBSAN),y)
-CFLAGS_UBSAN += -fsanitize=undefined
 # Any -fno-sanitize= options need to come after any -fsanitize= options
 $(filter-out %.init.o $(noubsan-y),$(obj-y) $(obj-bin-y) $(extra-y)): \
-CFLAGS += $(filter-out -fno-%,$(CFLAGS_UBSAN)) $(filter -fno-%,$(CFLAGS_UBSAN))
+CFLAGS-y += $(filter-out -fno-%,$(CFLAGS_UBSAN)) $(filter -fno-%,$(CFLAGS_UBSAN))
 endif
 
 ifeq ($(CONFIG_LTO),y)
-CFLAGS += -flto
-LDFLAGS-$(CONFIG_CC_IS_CLANG) += -plugin LLVMgold.so
 # Would like to handle all object files as bitcode, but objects made from
 # pure asm are in a different format and have to be collected separately.
 # Mirror the directory tree, collecting them as built_in_bin.o.
@@ -140,10 +95,18 @@ obj-bin-y :=
 endif
 
 # Always build obj-bin files as binary even if they come from C source. 
-$(obj-bin-y): CFLAGS := $(filter-out -flto,$(CFLAGS))
+$(obj-bin-y): XEN_CFLAGS := $(filter-out -flto,$(XEN_CFLAGS))
+
+# Calculation of flags, first the generic flags, then the arch specific flags,
+# and last the flags modified for a target or a directory.
+
+c_flags = -MMD -MP -MF $(@D)/.$(@F).d $(XEN_CFLAGS) '-D__OBJECT_FILE__="$@"'
+a_flags = -MMD -MP -MF $(@D)/.$(@F).d $(XEN_AFLAGS)
+
+include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk
 
-c_flags = -MMD -MP -MF $(@D)/.$(@F).d $(CFLAGS) '-D__OBJECT_FILE__="$@"'
-a_flags = -MMD -MP -MF $(@D)/.$(@F).d $(AFLAGS)
+c_flags += $(CFLAGS-y)
+a_flags += $(CFLAGS-y) $(AFLAGS-y)
 
 built_in.o: $(obj-y) $(extra-y)
 ifeq ($(obj-y),)
@@ -152,7 +115,7 @@ else
 ifeq ($(CONFIG_LTO),y)
 	$(LD_LTO) -r -o $@ $(filter-out $(extra-y),$^)
 else
-	$(LD) $(LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
 endif
 endif
 
@@ -160,7 +123,7 @@ built_in_bin.o: $(obj-bin-y) $(extra-y)
 ifeq ($(obj-bin-y),)
 	$(CC) $(a_flags) -c -x assembler /dev/null -o $@
 else
-	$(LD) $(LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $(filter-out $(extra-y),$^)
 endif
 
 # Force execution of pattern rules (for which PHONY cannot be directly used).
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 913f6cdeed..9f1ab23357 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -95,24 +95,24 @@ prelink_lto.o: $(ALL_OBJS)
 
 # Link it with all the binary objects
 prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 else
 prelink.o: $(ALL_OBJS)
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 endif
 
 $(TARGET)-syms: prelink.o xen.lds
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o \
 	    $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
 	$(NM) -pa --format=sysv $(@D)/.$(@F).0 \
 		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).0.S
 	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o \
 	    $(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
 	$(NM) -pa --format=sysv $(@D)/.$(@F).1 \
 		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort >$(@D)/.$(@F).1.S
 	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
 	    $(@D)/.$(@F).1.o -o $@
 	$(NM) -pa --format=sysv $(@D)/$(@F) \
 		| $(BASEDIR)/tools/symbols --xensyms --sysv --sort \
diff --git a/xen/arch/arm/Rules.mk b/xen/arch/arm/Rules.mk
index 3ad284aa71..e69de29bb2 100644
--- a/xen/arch/arm/Rules.mk
+++ b/xen/arch/arm/Rules.mk
@@ -1,23 +0,0 @@
-########################################
-# arm-specific definitions
-
-#
-# If you change any of these configuration options then you must
-# 'make clean' before rebuilding.
-#
-
-CFLAGS += -I$(BASEDIR)/include
-
-$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
-$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
-
-# Prevent floating-point variables from creeping into Xen.
-CFLAGS-$(CONFIG_ARM_32) += -msoft-float
-CFLAGS-$(CONFIG_ARM_32) += -mcpu=cortex-a15
-
-CFLAGS-$(CONFIG_ARM_64) += -mcpu=generic
-CFLAGS-$(CONFIG_ARM_64) += -mgeneral-regs-only # No fp registers etc
-
-ifneq ($(filter command line environment,$(origin CONFIG_EARLY_PRINTK)),)
-    $(error You must use 'make menuconfig' to enable/disable early printk now)
-endif
diff --git a/xen/arch/arm/arch.mk b/xen/arch/arm/arch.mk
new file mode 100644
index 0000000000..c8186f5828
--- /dev/null
+++ b/xen/arch/arm/arch.mk
@@ -0,0 +1,18 @@
+########################################
+# arm-specific definitions
+
+CFLAGS += -I$(BASEDIR)/include
+
+$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
+$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
+
+# Prevent floating-point variables from creeping into Xen.
+CFLAGS-$(CONFIG_ARM_32) += -msoft-float
+CFLAGS-$(CONFIG_ARM_32) += -mcpu=cortex-a15
+
+CFLAGS-$(CONFIG_ARM_64) += -mcpu=generic
+CFLAGS-$(CONFIG_ARM_64) += -mgeneral-regs-only # No fp registers etc
+
+ifneq ($(filter command line environment,$(origin CONFIG_EARLY_PRINTK)),)
+    $(error You must use 'make menuconfig' to enable/disable early printk now)
+endif
diff --git a/xen/arch/arm/efi/Makefile b/xen/arch/arm/efi/Makefile
index d34c916891..e3ff2c3f28 100644
--- a/xen/arch/arm/efi/Makefile
+++ b/xen/arch/arm/efi/Makefile
@@ -1,4 +1,4 @@
-CFLAGS += -fshort-wchar
+CFLAGS-y += -fshort-wchar
 
 obj-y +=  boot.init.o runtime.o
 obj-$(CONFIG_ACPI) +=  efi-dom0.init.o
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index 1405525105..a805e9982e 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -121,32 +121,32 @@ prelink-efi_lto.o: $(ALL_OBJS) efi/runtime.o efi/compat.o
 
 # Link it with all the binary objects
 prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 
 prelink-efi.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink-efi_lto.o efi/boot.init.o
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 else
 prelink.o: $(ALL_OBJS)
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 
 prelink-efi.o: $(ALL_OBJS) efi/boot.init.o efi/runtime.o efi/compat.o
-	$(LD) $(LDFLAGS) -r -o $@ $(filter-out %/efi/built_in.o,$^)
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $(filter-out %/efi/built_in.o,$^)
 endif
 
 $(TARGET)-syms: prelink.o xen.lds
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
 	    $(BASEDIR)/common/symbols-dummy.o -o $(@D)/.$(@F).0
 	$(NM) -pa --format=sysv $(@D)/.$(@F).0 \
 		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort \
 		>$(@D)/.$(@F).0.S
 	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).0.o
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
 	    $(@D)/.$(@F).0.o -o $(@D)/.$(@F).1
 	$(NM) -pa --format=sysv $(@D)/.$(@F).1 \
 		| $(BASEDIR)/tools/symbols $(all_symbols) --sysv --sort $(syms-warn-dup-y) \
 		>$(@D)/.$(@F).1.S
 	$(MAKE) -f $(BASEDIR)/Rules.mk $(@D)/.$(@F).1.o
-	$(LD) $(LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
+	$(LD) $(XEN_LDFLAGS) -T xen.lds -N prelink.o $(build_id_linker) \
 	    $(@D)/.$(@F).1.o -o $@
 	$(NM) -pa --format=sysv $(@D)/$(@F) \
 		| $(BASEDIR)/tools/symbols --xensyms --sysv --sort \
@@ -159,7 +159,7 @@ note.o: $(TARGET)-syms
 		--rename-section=.data=.note.gnu.build-id -S $@.bin $@
 	rm -f $@.bin
 
-EFI_LDFLAGS = $(patsubst -m%,-mi386pep,$(LDFLAGS)) --subsystem=10
+EFI_LDFLAGS = $(patsubst -m%,-mi386pep,$(XEN_LDFLAGS)) --subsystem=10
 EFI_LDFLAGS += --image-base=$(1) --stack=0,0 --heap=0,0 --strip-debug
 EFI_LDFLAGS += --section-alignment=0x200000 --file-alignment=0x20
 EFI_LDFLAGS += --major-image-version=$(XEN_VERSION)
@@ -168,7 +168,7 @@ EFI_LDFLAGS += --major-os-version=2 --minor-os-version=0
 EFI_LDFLAGS += --major-subsystem-version=2 --minor-subsystem-version=0
 
 # Check if the compiler supports the MS ABI.
-export XEN_BUILD_EFI := $(shell $(CC) $(CFLAGS) -c efi/check.c -o efi/check.o 2>/dev/null && echo y)
+export XEN_BUILD_EFI := $(shell $(CC) $(XEN_CFLAGS) -c efi/check.c -o efi/check.o 2>/dev/null && echo y)
 # Check if the linker supports PE.
 XEN_BUILD_PE := $(if $(XEN_BUILD_EFI),$(shell $(LD) -mi386pep --subsystem=10 -o efi/check.efi efi/check.o 2>/dev/null && echo y))
 CFLAGS-$(XEN_BUILD_EFI) += -DXEN_BUILD_EFI
@@ -178,7 +178,7 @@ $(TARGET).efi: ALT_BASE = 0x$(shell $(NM) efi/relocs-dummy.o | sed -n 's, A ALT_
 
 ifneq ($(build_id_linker),)
 ifeq ($(call ld-ver-build-id,$(LD) $(filter -m%,$(EFI_LDFLAGS))),y)
-CFLAGS += -DBUILD_ID_EFI
+CFLAGS-y += -DBUILD_ID_EFI
 EFI_LDFLAGS += $(build_id_linker)
 note_file := efi/buildid.o
 # NB: this must be the last input in the linker call, because inputs following
@@ -225,7 +225,7 @@ efi/boot.init.o efi/runtime.o efi/compat.o efi/buildid.o efi/relocs-dummy.o: ;
 asm-offsets.s: $(TARGET_SUBARCH)/asm-offsets.c $(BASEDIR)/include/asm-x86/asm-macros.h
 	$(CC) $(filter-out -Wa$(comma)% -flto,$(c_flags)) -S -o $@ $<
 
-asm-macros.i: CFLAGS += -D__ASSEMBLY__ -P
+asm-macros.i: CFLAGS-y += -D__ASSEMBLY__ -P
 
 $(BASEDIR)/include/asm-x86/asm-macros.h: asm-macros.i Makefile
 	echo '#if 0' >$@.new
@@ -238,7 +238,7 @@ $(BASEDIR)/include/asm-x86/asm-macros.h: asm-macros.i Makefile
 	echo '#endif' >>$@.new
 	$(call move-if-changed,$@.new,$@)
 
-efi.lds: AFLAGS += -DEFI
+efi.lds: AFLAGS-y += -DEFI
 xen.lds efi.lds: xen.lds.S
 	$(CC) -P -E -Ui386 $(filter-out -Wa$(comma)%,$(a_flags)) -o $@ $<
 	sed -e 's/.*\.lds\.o:/$(@F):/g' <.$(@F).d >.$(@F).d.new
diff --git a/xen/arch/x86/Rules.mk b/xen/arch/x86/Rules.mk
index 4b7ab78467..56fe22c979 100644
--- a/xen/arch/x86/Rules.mk
+++ b/xen/arch/x86/Rules.mk
@@ -1,89 +1,10 @@
 ########################################
 # x86-specific definitions
 
-XEN_IMG_OFFSET := 0x200000
-
-CFLAGS += -I$(BASEDIR)/include
-CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-generic
-CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-default
-CFLAGS += -DXEN_IMG_OFFSET=$(XEN_IMG_OFFSET)
-CFLAGS += '-D__OBJECT_LABEL__=$(subst /,$$,$(subst -,_,$(subst $(BASEDIR)/,,$(CURDIR))/$@))'
-
-# Prevent floating-point variables from creeping into Xen.
-CFLAGS += -msoft-float
-
-ifeq ($(CONFIG_CC_IS_CLANG),y)
-# Note: Any test which adds -no-integrated-as will cause subsequent tests to
-# succeed, and not trigger further additions.
-#
-# The tests to select whether the integrated assembler is usable need to happen
-# before testing any assembler features, or else the result of the tests would
-# be stale if the integrated assembler is not used.
-
-# Older clang's built-in assembler doesn't understand .skip with labels:
-# https://bugs.llvm.org/show_bug.cgi?id=27369
-$(call as-option-add,CFLAGS,CC,".L0: .L1: .skip (.L1 - .L0)",,\
-                     -no-integrated-as)
-
-# Check whether clang asm()-s support .include.
-$(call as-option-add,CFLAGS,CC,".include \"asm-x86/indirect_thunk_asm.h\"",,\
-                     -no-integrated-as)
-
-# Check whether clang keeps .macro-s between asm()-s:
-# https://bugs.llvm.org/show_bug.cgi?id=36110
-$(call as-option-add,CFLAGS,CC,\
-                     ".macro FOO;.endm"$$(close); asm volatile $$(open)".macro FOO;.endm",\
-                     -no-integrated-as)
-endif
-
-$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
-$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
-$(call as-option-add,CFLAGS,CC,"vmcall",-DHAVE_AS_VMX)
-$(call as-option-add,CFLAGS,CC,"crc32 %eax$$(comma)%eax",-DHAVE_AS_SSE4_2)
-$(call as-option-add,CFLAGS,CC,"invept (%rax)$$(comma)%rax",-DHAVE_AS_EPT)
-$(call as-option-add,CFLAGS,CC,"rdrand %eax",-DHAVE_AS_RDRAND)
-$(call as-option-add,CFLAGS,CC,"rdfsbase %rax",-DHAVE_AS_FSGSBASE)
-$(call as-option-add,CFLAGS,CC,"xsaveopt (%rax)",-DHAVE_AS_XSAVEOPT)
-$(call as-option-add,CFLAGS,CC,"rdseed %eax",-DHAVE_AS_RDSEED)
-$(call as-option-add,CFLAGS,CC,"clwb (%rax)",-DHAVE_AS_CLWB)
-$(call as-option-add,CFLAGS,CC,".equ \"x\"$$(comma)1", \
-                     -U__OBJECT_LABEL__ -DHAVE_AS_QUOTED_SYM \
-                     '-D__OBJECT_LABEL__=$(subst $(BASEDIR)/,,$(CURDIR))/$$@')
-$(call as-option-add,CFLAGS,CC,"invpcid (%rax)$$(comma)%rax",-DHAVE_AS_INVPCID)
-
-# GAS's idea of true is -1.  Clang's idea is 1
-$(call as-option-add,CFLAGS,CC,\
-    ".if ((1 > 0) < 0); .error \"\";.endif",,-DHAVE_AS_NEGATIVE_TRUE)
-
-# Check to see whether the assmbler supports the .nop directive.
-$(call as-option-add,CFLAGS,CC,\
-    ".L1: .L2: .nops (.L2 - .L1)$$(comma)9",-DHAVE_AS_NOPS_DIRECTIVE)
-
-CFLAGS += -mno-red-zone -fpic -fno-asynchronous-unwind-tables
-
-# Xen doesn't use SSE interally.  If the compiler supports it, also skip the
-# SSE setup for variadic function calls.
-CFLAGS += -mno-sse $(call cc-option,$(CC),-mskip-rax-setup)
-
-# Compile with thunk-extern, indirect-branch-register if avaiable.
-ifeq ($(CONFIG_INDIRECT_THUNK),y)
-CFLAGS += -mindirect-branch=thunk-extern -mindirect-branch-register
-CFLAGS += -fno-jump-tables
+ifneq ($(filter -DHAVE_AS_QUOTED_SYM,$(XEN_CFLAGS)),)
+object_label_flags = '-D__OBJECT_LABEL__=$(subst $(BASEDIR)/,,$(CURDIR))/$@'
+else
+object_label_flags = '-D__OBJECT_LABEL__=$(subst /,$$,$(subst -,_,$(subst $(BASEDIR)/,,$(CURDIR))/$@))'
 endif
-
-# If supported by the compiler, reduce stack alignment to 8 bytes. But allow
-# this to be overridden elsewhere.
-$(call cc-option-add,CFLAGS-stack-boundary,CC,-mpreferred-stack-boundary=3)
-CFLAGS += $(CFLAGS-stack-boundary)
-
-ifeq ($(CONFIG_UBSAN),y)
-# Don't enable alignment sanitisation.  x86 has efficient unaligned accesses,
-# and various things (ACPI tables, hypercall pages, stubs, etc) are wont-fix.
-# It also causes an as-yet-unidentified crash on native boot before the
-# console starts.
-$(call cc-option-add,CFLAGS_UBSAN,CC,-fno-sanitize=alignment)
-endif
-
-# Set up the assembler include path properly for older toolchains.
-CFLAGS += -Wa,-I$(BASEDIR)/include
-
+c_flags += $(object_label_flags) $(CFLAGS-stack-boundary)
+a_flags += $(object_label_flags) $(CFLAGS-stack-boundary)
diff --git a/xen/arch/x86/arch.mk b/xen/arch/x86/arch.mk
new file mode 100644
index 0000000000..2a51553edb
--- /dev/null
+++ b/xen/arch/x86/arch.mk
@@ -0,0 +1,84 @@
+########################################
+# x86-specific definitions
+
+export XEN_IMG_OFFSET := 0x200000
+
+CFLAGS += -I$(BASEDIR)/include
+CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-generic
+CFLAGS += -I$(BASEDIR)/include/asm-x86/mach-default
+CFLAGS += -DXEN_IMG_OFFSET=$(XEN_IMG_OFFSET)
+
+# Prevent floating-point variables from creeping into Xen.
+CFLAGS += -msoft-float
+
+ifeq ($(CONFIG_CC_IS_CLANG),y)
+# Note: Any test which adds -no-integrated-as will cause subsequent tests to
+# succeed, and not trigger further additions.
+#
+# The tests to select whether the integrated assembler is usable need to happen
+# before testing any assembler features, or else the result of the tests would
+# be stale if the integrated assembler is not used.
+
+# Older clang's built-in assembler doesn't understand .skip with labels:
+# https://bugs.llvm.org/show_bug.cgi?id=27369
+$(call as-option-add,CFLAGS,CC,".L0: .L1: .skip (.L1 - .L0)",,\
+                     -no-integrated-as)
+
+# Check whether clang asm()-s support .include.
+$(call as-option-add,CFLAGS,CC,".include \"asm-x86/indirect_thunk_asm.h\"",,\
+                     -no-integrated-as)
+
+# Check whether clang keeps .macro-s between asm()-s:
+# https://bugs.llvm.org/show_bug.cgi?id=36110
+$(call as-option-add,CFLAGS,CC,\
+                     ".macro FOO;.endm"$$(close); asm volatile $$(open)".macro FOO;.endm",\
+                     -no-integrated-as)
+endif
+
+$(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
+$(call cc-option-add,CFLAGS,CC,-Wnested-externs)
+$(call as-option-add,CFLAGS,CC,"vmcall",-DHAVE_AS_VMX)
+$(call as-option-add,CFLAGS,CC,"crc32 %eax$$(comma)%eax",-DHAVE_AS_SSE4_2)
+$(call as-option-add,CFLAGS,CC,"invept (%rax)$$(comma)%rax",-DHAVE_AS_EPT)
+$(call as-option-add,CFLAGS,CC,"rdrand %eax",-DHAVE_AS_RDRAND)
+$(call as-option-add,CFLAGS,CC,"rdfsbase %rax",-DHAVE_AS_FSGSBASE)
+$(call as-option-add,CFLAGS,CC,"xsaveopt (%rax)",-DHAVE_AS_XSAVEOPT)
+$(call as-option-add,CFLAGS,CC,"rdseed %eax",-DHAVE_AS_RDSEED)
+$(call as-option-add,CFLAGS,CC,"clwb (%rax)",-DHAVE_AS_CLWB)
+$(call as-option-add,CFLAGS,CC,".equ \"x\"$$(comma)1",-DHAVE_AS_QUOTED_SYM)
+$(call as-option-add,CFLAGS,CC,"invpcid (%rax)$$(comma)%rax",-DHAVE_AS_INVPCID)
+
+# GAS's idea of true is -1.  Clang's idea is 1
+$(call as-option-add,CFLAGS,CC,\
+    ".if ((1 > 0) < 0); .error \"\";.endif",,-DHAVE_AS_NEGATIVE_TRUE)
+
+# Check to see whether the assmbler supports the .nop directive.
+$(call as-option-add,CFLAGS,CC,\
+    ".L1: .L2: .nops (.L2 - .L1)$$(comma)9",-DHAVE_AS_NOPS_DIRECTIVE)
+
+CFLAGS += -mno-red-zone -fpic -fno-asynchronous-unwind-tables
+
+# Xen doesn't use SSE interally.  If the compiler supports it, also skip the
+# SSE setup for variadic function calls.
+CFLAGS += -mno-sse $(call cc-option,$(CC),-mskip-rax-setup)
+
+# Compile with thunk-extern, indirect-branch-register if avaiable.
+CFLAGS-$(CONFIG_INDIRECT_THUNK) += -mindirect-branch=thunk-extern
+CFLAGS-$(CONFIG_INDIRECT_THUNK) += -mindirect-branch-register
+CFLAGS-$(CONFIG_INDIRECT_THUNK) += -fno-jump-tables
+
+# If supported by the compiler, reduce stack alignment to 8 bytes. But allow
+# this to be overridden elsewhere.
+$(call cc-option-add,CFLAGS-stack-boundary,CC,-mpreferred-stack-boundary=3)
+export CFLAGS-stack-boundary
+
+ifeq ($(CONFIG_UBSAN),y)
+# Don't enable alignment sanitisation.  x86 has efficient unaligned accesses,
+# and various things (ACPI tables, hypercall pages, stubs, etc) are wont-fix.
+# It also causes an as-yet-unidentified crash on native boot before the
+# console starts.
+$(call cc-option-add,CFLAGS_UBSAN,CC,-fno-sanitize=alignment)
+endif
+
+# Set up the assembler include path properly for older toolchains.
+CFLAGS += -Wa,-I$(BASEDIR)/include
diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 4bc0a196e9..490d791aae 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -1,4 +1,4 @@
-CFLAGS += -fshort-wchar
+CFLAGS-y += -fshort-wchar
 
 %.o: %.ihex
 	$(OBJCOPY) -I ihex -O binary $< $@
diff --git a/xen/common/libelf/Makefile b/xen/common/libelf/Makefile
index 3d9e38f27e..464c448d9d 100644
--- a/xen/common/libelf/Makefile
+++ b/xen/common/libelf/Makefile
@@ -3,10 +3,10 @@ nocov-y += libelf.o
 
 SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
 
-CFLAGS += -Wno-pointer-sign
+CFLAGS-y += -Wno-pointer-sign
 
 libelf.o: libelf-temp.o Makefile
 	$(OBJCOPY) $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
 
 libelf-temp.o: libelf-tools.o libelf-loader.o libelf-dominfo.o #libelf-relocate.o
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
diff --git a/xen/common/libfdt/Makefile b/xen/common/libfdt/Makefile
index c075bbf546..e2a5e59380 100644
--- a/xen/common/libfdt/Makefile
+++ b/xen/common/libfdt/Makefile
@@ -5,10 +5,10 @@ SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
 obj-y += libfdt.o
 nocov-y += libfdt.o
 
-CFLAGS += -I$(BASEDIR)/include/xen/libfdt/
+CFLAGS-y += -I$(BASEDIR)/include/xen/libfdt/
 
 libfdt.o: libfdt-temp.o Makefile
 	$(OBJCOPY) $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
 
 libfdt-temp.o: $(LIBFDT_OBJS)
-	$(LD) $(LDFLAGS) -r -o $@ $^
+	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
diff --git a/xen/include/Makefile b/xen/include/Makefile
index a488a98d8b..2a10725d68 100644
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -64,7 +64,7 @@ compat/%.h: compat/%.i Makefile $(BASEDIR)/tools/compat-build-header.py
 	mv -f $@.new $@
 
 compat/%.i: compat/%.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)% -include %/include/xen/config.h,$(CFLAGS)) $(cppflags-y) -o $@ $<
+	$(CPP) $(filter-out -Wa$(comma)% -include %/include/xen/config.h,$(XEN_CFLAGS)) $(cppflags-y) -o $@ $<
 
 compat/%.c: public/%.h xlat.lst Makefile $(BASEDIR)/tools/compat-build-source.py
 	mkdir -p $(@D)
diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index f001bb18d4..6db396347b 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -4,7 +4,7 @@ obj-y += flask_op.o
 
 obj-y += ss/
 
-CFLAGS += -I./include
+CFLAGS-y += -I./include
 
 AWK = awk
 
diff --git a/xen/xsm/flask/ss/Makefile b/xen/xsm/flask/ss/Makefile
index 046ce8f533..d32b9e0713 100644
--- a/xen/xsm/flask/ss/Makefile
+++ b/xen/xsm/flask/ss/Makefile
@@ -8,4 +8,4 @@ obj-y += services.o
 obj-y += conditional.o
 obj-y += mls.o
 
-CFLAGS += -I../include
+CFLAGS-y += -I../include
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 09:55:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 09:55:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSHWk-0002Pa-MW; Sat, 25 Apr 2020 09:55:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSHWj-0002PS-Aq
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:13 +0000
X-Inumbo-ID: db5b792a-86da-11ea-959c-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id db5b792a-86da-11ea-959c-12813bfff9fa;
 Sat, 25 Apr 2020 09:55:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0cb/kGVLwGDJPJOdKpAWWXSOmA8gjXYhTTOy/ww2pN4=; b=IwMlDd+l4TCK9Y4ondFJklUMvt
 VwHJnaYvJlPI6TLMbM9VQyLgKs1YpszIOEy4Z7s0mLC+C/xuZbJ6sJxBqLeUWSY8K30nYTuoMMflg
 m84efVtPzTYqxxtoysoycOelRVobXLEXmaA3GCIrYWLV4gQIrqXGrnikEADsaBbE/L1w=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHWi-00010z-SU
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHWi-0004uT-RU
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] build: introduce documentation for xen Makefiles
Message-Id: <E1jSHWi-0004uT-RU@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 09:55:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 16055cb50cbb9b0b9eaf9937696a5c1d1f6fd71f
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Apr 24 15:00:37 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:00:37 2020 +0200

    build: introduce documentation for xen Makefiles
    
    This start explainning the variables that can be used in the many
    Makefiles in xen/.
    
    Most of the document copies and modifies text from Linux v5.4 document
    linux.git/Documentation/kbuild/makefiles.rst. Modification are mostly
    to avoid mentioning kbuild. Thus I've added the SPDX tag which was
    only in index.rst in linux.git.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 docs/misc/xen-makefiles/makefiles.rst | 87 +++++++++++++++++++++++++++++++++++
 xen/Rules.mk                          |  4 ++
 2 files changed, 91 insertions(+)

diff --git a/docs/misc/xen-makefiles/makefiles.rst b/docs/misc/xen-makefiles/makefiles.rst
new file mode 100644
index 0000000000..a86e3a612d
--- /dev/null
+++ b/docs/misc/xen-makefiles/makefiles.rst
@@ -0,0 +1,87 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+=============
+Xen Makefiles
+=============
+
+Documentation for the build system of Xen, found in xen.git/xen/.
+
+Makefile files
+==============
+
+Description of the syntax that can be used in most Makefiles named
+'Makefile'. ('xen/Makefile' isn't part of the description.)
+
+'Makefile's are consumed by 'Rules.mk' when building.
+
+Goal definitions
+----------------
+
+	Goal definitions are the main part (heart) of the Makefile.
+	These lines define the files to be built, any special compilation
+	options, and any subdirectories to be entered recursively.
+
+	The most simple makefile contains one line:
+
+	Example::
+
+		obj-y += foo.o
+
+	This tells the build system that there is one object in that
+	directory, named foo.o. foo.o will be built from foo.c or foo.S.
+
+	The following pattern is often used to have object selected
+	depending on the configuration:
+
+	Example::
+
+		obj-$(CONFIG_FOO) += foo.o
+
+	$(CONFIG_FOO) can evaluates to y.
+	If CONFIG_FOO is not y, then the file will not be compiled nor linked.
+
+Descending down in directories
+------------------------------
+
+	A Makefile is only responsible for building objects in its own
+	directory. Files in subdirectories should be taken care of by
+	Makefiles in these subdirs. The build system will automatically
+	invoke make recursively in subdirectories, provided you let it know of
+	them.
+
+	To do so, obj-y is used.
+	acpi lives in a separate directory, and the Makefile present in
+	drivers/ tells the build system to descend down using the following
+	assignment.
+
+	Example::
+
+		#drivers/Makefile
+		obj-$(CONFIG_ACPI) += acpi/
+
+	If CONFIG_ACPI is set to 'y'
+	the corresponding obj- variable will be set, and the build system
+	will descend down in the apci directory.
+	The build system only uses this information to decide that it needs
+	to visit the directory, it is the Makefile in the subdirectory that
+	specifies what is modular and what is built-in.
+
+	It is good practice to use a `CONFIG_` variable when assigning directory
+	names. This allows the build system to totally skip the directory if the
+	corresponding `CONFIG_` option is 'y'.
+
+Compilation flags
+-----------------
+
+    CFLAGS-y and AFLAGS-y
+	These two flags apply only to the makefile in which they
+	are assigned. They are used for all the normal cc, as and ld
+	invocations happening during a recursive build.
+
+	$(CFLAGS-y) is necessary because the top Makefile owns the
+	variable $(XEN_CFLAGS) and uses it for compilation flags for the
+	entire tree. And the variable $(CFLAGS) is modified by Config.mk
+	which evaluated in every subdirs.
+
+	CFLAGS-y specifies options for compiling with $(CC).
+	AFLAGS-y specifies assembler options.
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 8e4b9e3a4a..9d1e1ebf5e 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -1,3 +1,7 @@
+#
+# See docs/misc/xen-makefiles/makefiles.rst on variables that can be used in
+# Makefile and are consumed by Rules.mk
+#
 
 -include $(BASEDIR)/include/config/auto.conf
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 09:55:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 09:55:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSHWv-0002Qv-O6; Sat, 25 Apr 2020 09:55:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSHWu-0002Qo-Ka
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:24 +0000
X-Inumbo-ID: e1629a24-86da-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id e1629a24-86da-11ea-83d8-bc764e2007e4;
 Sat, 25 Apr 2020 09:55:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=WOit3B3begCb9ORwnZZLOxeusEfWqSmVc4QfcFEhhVE=; b=smrxEdbkL533oDTkVsKiTseDON
 v9I6lvqaRPhTMLpFtt0vHziQpvqypLpWikhxbnbn3dw8mprT1TOLKyr7zTGRg8vNlqu1w3qF7Nayk
 b/wK9pTMapZ8yhAywJUtA8pMzPKakp5zAdMYbjVLACe3TIaGeq8A17+DioRHY//qd1gc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHWs-00011F-VT
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHWs-0004v7-UE
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/build: introduce if_changed and if_changed_rule
Message-Id: <E1jSHWs-0004v7-UE@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 09:55:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4fdb4b71b152431b519345e6a8cc8738974db7e6
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Apr 24 15:01:11 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:01:11 2020 +0200

    xen/build: introduce if_changed and if_changed_rule
    
    The if_changed macro from Linux, in addition to check if any files
    needs an update, check if the command line has changed since the last
    invocation. The latter will force a rebuild if any options to the
    executable have changed.
    
    if_changed_rule checks dependencies like if_changed, but execute
    rule_$(1) instead of cmd_$(1) when a target needs to be rebuilt. A rule_
    macro can call more than one cmd_ macro. One of the cmd_ macro in a
    rule need to be call using a macro that record the command line, so
    cmd_and_record is introduced. It is similar to cmd_and_fixup from
    Linux but without a call to fixdep which we don't have yet. (We will
    later replace cmd_and_record by cmd_and_fixup.)
    
    Example of a rule_ macro:
    define rule_cc_o_c
        $(call cmd_and_record,cc_o_o)
        $(call cmd,objcopy)
    endef
    
    This needs one of the call to use cmd_and_record, otherwise no .*.cmd
    file will be created, and the target will keep been rebuilt.
    
    In order for if_changed to works correctly, we need to load the .%.cmd
    files that the macro generates, this is done by adding targets in to
    the $(targets) variable. We use intermediate_targets to add %.init.o
    dependency %.o to target since there aren't in obj-y.
    
    We also add $(MAKECMDGOALS) to targets so that when running for
    example `make common/memory.i`, make will load the associated .%.cmd
    dependency file.
    
    Beside the if_changed*, we import the machinery used for a "beautify
    output". The important one is when running make with V=2 which help to
    debug the makefiles by printing why a target is been rebuilt, via the
    $(echo-why) macro.
    
    if_changed and if_changed_rule aren't used yet.
    
    Most of this code is copied from Linux v5.4, including the
    documentation.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 .gitignore                            |   1 +
 docs/misc/xen-makefiles/makefiles.rst |  98 +++++++++++++++++++++++++++++++
 xen/Makefile                          |  53 ++++++++++++++++-
 xen/Rules.mk                          |  33 ++++++++++-
 xen/scripts/Kbuild.include            | 107 ++++++++++++++++++++++++++++++++++
 5 files changed, 290 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index 4ca679ddbc..bfa53723b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 .hg
+.*.cmd
 .*.tmp
 *.orig
 *~
diff --git a/docs/misc/xen-makefiles/makefiles.rst b/docs/misc/xen-makefiles/makefiles.rst
index a86e3a612d..04bc72601c 100644
--- a/docs/misc/xen-makefiles/makefiles.rst
+++ b/docs/misc/xen-makefiles/makefiles.rst
@@ -85,3 +85,101 @@ Compilation flags
 
 	CFLAGS-y specifies options for compiling with $(CC).
 	AFLAGS-y specifies assembler options.
+
+
+Build system infrastructure
+===========================
+
+This chapter describe some of the macro used when building Xen.
+
+Macros
+------
+
+
+    if_changed
+	if_changed is the infrastructure used for the following commands.
+
+	Usage::
+
+		target: source(s) FORCE
+			$(call if_changed,ld/objcopy/...)
+
+	When the rule is evaluated, it is checked to see if any files
+	need an update, or the command line has changed since the last
+	invocation. The latter will force a rebuild if any options
+	to the executable have changed.
+	Any target that utilises if_changed must be listed in $(targets),
+	otherwise the command line check will fail, and the target will
+	always be built.
+	if_changed may be used in conjunction with custom commands as
+	defined in "Custom commands".
+
+	Note: It is a typical mistake to forget the FORCE prerequisite.
+	Another common pitfall is that whitespace is sometimes
+	significant; for instance, the below will fail (note the extra space
+	after the comma)::
+
+		target: source(s) FORCE
+
+	**WRONG!**	$(call if_changed, ld/objcopy/...)
+
+	Note:
+		if_changed should not be used more than once per target.
+		It stores the executed command in a corresponding .cmd file
+		and multiple calls would result in overwrites and unwanted
+		results when the target is up to date and only the tests on
+		changed commands trigger execution of commands.
+
+    ld
+	Link target.
+
+	Example::
+
+		targets += setup setup.o bootsect bootsect.o
+		$(obj)/setup $(obj)/bootsect: %: %.o FORCE
+			$(call if_changed,ld)
+
+	$(targets) are assigned all potential targets, by which the build
+	system knows the targets and will:
+
+		1) check for commandline changes
+
+	The ": %: %.o" part of the prerequisite is a shorthand that
+	frees us from listing the setup.o and bootsect.o files.
+
+	Note:
+		It is a common mistake to forget the "targets :=" assignment,
+		resulting in the target file being recompiled for no
+		obvious reason.
+
+    objcopy
+	Copy binary. Uses OBJCOPYFLAGS usually specified in
+	arch/$(ARCH)/Makefile.
+
+Custom commands
+---------------
+
+	When the build system is executing with V=0, then only
+	a shorthand of a command is normally displayed.
+	To enable this behaviour for custom commands, two variables are
+	required to be set::
+
+		quiet_cmd_<command>	- what shall be echoed
+		      cmd_<command>	- the command to execute
+
+	Example::
+
+		# xsm/flask/Makefile
+		mkflask := policy/mkflask.sh
+		quiet_cmd_mkflask = MKFLASK $@
+		cmd_mkflask = $(CONFIG_SHELL) $(mkflask) $(AWK) include \
+			$(FLASK_H_DEPEND)
+
+		include/flask.h: $(FLASK_H_DEPEND) $(mkflask) FORCE
+			$(call if_changed,mkflask)
+
+	When updating the include/flask.h target, the line:
+
+		MKFLASK include/flask.h
+
+	will be displayed with "make V=0". (V=0 is the default)
diff --git a/xen/Makefile b/xen/Makefile
index 2a689b26a2..07f8ef8087 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -52,7 +52,57 @@ dist: install
 
 ifneq ($(root-make-done),y)
 # section to run before calling Rules.mk, but only once.
+
+# Beautify output
+# ---------------------------------------------------------------------------
+#
+# Normally, we echo the whole command before executing it. By making
+# that echo $($(quiet)$(cmd)), we now have the possibility to set
+# $(quiet) to choose other forms of output instead, e.g.
+#
+#         quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
+#         cmd_cc_o_c       = $(CC) $(c_flags) -c -o $@ $<
+#
+# If $(quiet) is empty, the whole command will be printed.
+# If it is set to "quiet_", only the short version will be printed.
+# If it is set to "silent_", nothing will be printed at all, since
+# the variable $(silent_cmd_cc_o_c) doesn't exist.
+#
+# A simple variant is to prefix commands with $(Q) - that's useful
+# for commands that shall be hidden in non-verbose mode.
 #
+#	$(Q)ln $@ :<
+#
+# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
+# If KBUILD_VERBOSE equals 1 then the above command is displayed.
+#
+# To put more focus on warnings, be less verbose as default
+# Use 'make V=1' to see the full commands
+
+ifeq ("$(origin V)", "command line")
+    KBUILD_VERBOSE := $(V)
+endif
+ifndef KBUILD_VERBOSE
+    KBUILD_VERBOSE := 0
+endif
+
+ifeq ($(KBUILD_VERBOSE),1)
+    quiet :=
+    Q :=
+else
+    quiet := quiet_
+    Q := @
+endif
+
+# If the user is running make -s (silent mode), suppress echoing of
+# commands
+
+ifneq ($(findstring s,$(filter-out --%,$(MAKEFLAGS))),)
+    quiet := silent_
+endif
+
+export quiet Q KBUILD_VERBOSE
+
 # To make sure we do not include .config for any of the *config targets
 # catch them early, and hand them over to tools/kconfig/Makefile
 
@@ -261,7 +311,8 @@ _clean: delete-unfresh-files
 	$(MAKE) $(clean) arch/x86
 	$(MAKE) $(clean) test
 	$(MAKE) -f $(BASEDIR)/tools/kconfig/Makefile.kconfig ARCH=$(ARCH) SRCARCH=$(SRCARCH) clean
-	find . \( -name "*.o" -o -name ".*.d" -o -name ".*.d2" -o -name "*.gcno" \) -exec rm -f {} \;
+	find . \( -name "*.o" -o -name ".*.d" -o -name ".*.d2" \
+		-o -name "*.gcno" -o -name ".*.cmd" \) -exec rm -f {} \;
 	rm -f include/asm $(TARGET) $(TARGET).gz $(TARGET).efi $(TARGET).efi.map $(TARGET)-syms $(TARGET)-syms.map *~ core
 	rm -f include/asm-*/asm-offsets.h
 	rm -f .banner
diff --git a/xen/Rules.mk b/xen/Rules.mk
index 9d1e1ebf5e..21cac7f5f5 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -42,6 +42,7 @@ ALL_OBJS-y               += $(BASEDIR)/arch/$(TARGET_ARCH)/built_in.o
 ALL_OBJS-$(CONFIG_CRYPTO)   += $(BASEDIR)/crypto/built_in.o
 
 # Initialise some variables
+targets :=
 CFLAGS-y :=
 AFLAGS-y :=
 
@@ -69,6 +70,10 @@ $(foreach o,$(filter-out %/,$(obj-y) $(obj-bin-y) $(extra-y)),$(eval $(call gend
 subdir-y := $(subdir-y) $(filter %/, $(obj-y))
 obj-y    := $(patsubst %/, %/built_in.o, $(obj-y))
 
+# $(subdir-obj-y) is the list of objects in $(obj-y) which uses dir/ to
+# tell kbuild to descend
+subdir-obj-y := $(filter %/built_in.o, $(obj-y))
+
 $(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): CFLAGS-y += -DINIT_SECTIONS_ONLY
 
 ifeq ($(CONFIG_COVERAGE),y)
@@ -123,6 +128,10 @@ else
 endif
 endif
 
+targets += built_in.o
+targets += $(filter-out $(subdir-obj-y), $(obj-y)) $(extra-y)
+targets += $(MAKECMDGOALS)
+
 built_in_bin.o: $(obj-bin-y) $(extra-y)
 ifeq ($(obj-bin-y),)
 	$(CC) $(a_flags) -c -x assembler /dev/null -o $@
@@ -131,7 +140,7 @@ else
 endif
 
 # Force execution of pattern rules (for which PHONY cannot be directly used).
-.PHONY: FORCE
+PHONY += FORCE
 FORCE:
 
 %/built_in.o: FORCE
@@ -179,4 +188,26 @@ $(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o Makefile
 %.s: %.S Makefile
 	$(CPP) $(filter-out -Wa$(comma)%,$(a_flags)) $< -o $@
 
+# Add intermediate targets:
+# When building objects with specific suffix patterns, add intermediate
+# targets that the final targets are derived from.
+intermediate_targets = $(foreach sfx, $(2), \
+				$(patsubst %$(strip $(1)),%$(sfx), \
+					$(filter %$(strip $(1)), $(targets))))
+# %.init.o <- %.o
+targets += $(call intermediate_targets, .init.o, .o)
+
 -include $(DEPS_INCLUDE)
+
+# Read all saved command lines and dependencies for the $(targets) we
+# may be building above, using $(if_changed{,_dep}). As an
+# optimization, we don't need to read them if the target does not
+# exist, we will rebuild anyway in that case.
+
+existing-targets := $(wildcard $(sort $(targets)))
+
+-include $(foreach f,$(existing-targets),$(dir $(f)).$(notdir $(f)).cmd)
+
+# Declare the contents of the PHONY variable as phony.  We keep that
+# information in a variable so we can use it in if_changed and friends.
+.PHONY: $(PHONY)
diff --git a/xen/scripts/Kbuild.include b/xen/scripts/Kbuild.include
index 806c68824e..e62eddc365 100644
--- a/xen/scripts/Kbuild.include
+++ b/xen/scripts/Kbuild.include
@@ -2,11 +2,30 @@
 ####
 # kbuild: Generic definitions
 
+# Convenient variables
+squote  := '
+empty   :=
+space   := $(empty) $(empty)
+space_escape := _-_SPACE_-_
+pound   := \#
+
+###
+# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
+dot-target = $(@D)/.$(@F)
+
 ###
 # dependencies
 DEPS = .*.d
 DEPS_INCLUDE = $(addsuffix .d2, $(basename $(wildcard $(DEPS))))
 
+###
+# real prerequisites without phony targets
+real-prereqs = $(filter-out $(PHONY), $^)
+
+###
+# Escape single quote for use in echo statements
+escsq = $(subst $(squote),'\$(squote)',$1)
+
 # as-insn: Check whether assembler supports an instruction.
 # Usage: cflags-y += $(call as-insn,CC FLAGS,"insn",option-yes,option-no)
 as-insn = $(if $(shell echo 'void _(void) { asm volatile ( $(2) ); }' \
@@ -32,3 +51,91 @@ cc-ifversion = $(shell [ $(CONFIG_GCC_VERSION)0 $(1) $(2)000 ] && echo $(3) || e
 # Usage:
 # $(MAKE) $(clean) dir
 clean := -f $(BASEDIR)/scripts/Makefile.clean clean -C
+
+# echo command.
+# Short version is used, if $(quiet) equals `quiet_', otherwise full one.
+echo-cmd = $(if $($(quiet)cmd_$(1)),\
+        echo '  $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';)
+
+# printing commands
+cmd = @set -e; $(echo-cmd) $(cmd_$(1))
+
+###
+# if_changed      - execute command if any prerequisite is newer than
+#                   target, or command line has changed
+# if_changed_rule - as if_changed but execute rule instead
+
+ifneq ($(KBUILD_NOCMDDEP),1)
+# Check if both commands are the same including their order. Result is empty
+# string if equal. User may override this check using make KBUILD_NOCMDDEP=1
+cmd-check = $(filter-out $(subst $(space),$(space_escape),$(strip $(cmd_$@))), \
+                         $(subst $(space),$(space_escape),$(strip $(cmd_$1))))
+else
+cmd-check = $(if $(strip $(cmd_$@)),,1)
+endif
+
+# Replace >$< with >$$< to preserve $ when reloading the .cmd file
+# (needed for make)
+# Replace >#< with >$(pound)< to avoid starting a comment in the .cmd file
+# (needed for make)
+# Replace >'< with >'\''< to be able to enclose the whole string in '...'
+# (needed for the shell)
+make-cmd = $(call escsq,$(subst $(pound),$$(pound),$(subst $$,$$$$,$(cmd_$(1)))))
+
+# Find any prerequisites that is newer than target or that does not exist.
+# PHONY targets skipped in both cases.
+any-prereq = $(filter-out $(PHONY),$?)$(filter-out $(PHONY) $(wildcard $^),$^)
+
+# Execute command if command has changed or prerequisite(s) are updated.
+if_changed = $(if $(any-prereq)$(cmd-check),                                 \
+        $(cmd);                                                              \
+        printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd, @:)
+
+# Usage: $(call if_changed_rule,foo)
+# Will check if $(cmd_foo) or any of the prerequisites changed,
+# and if so will execute $(rule_foo).
+if_changed_rule = $(if $(any-prereq)$(cmd-check),$(rule_$(1)),@:)
+
+cmd_and_record =                                                             \
+        $(cmd);                                                              \
+        printf '%s\n' 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd
+
+###
+# why - tell why a target got built
+#       enabled by make V=2
+#       Output (listed in the order they are checked):
+#          (1) - due to target is PHONY
+#          (2) - due to target missing
+#          (3) - due to: file1.h file2.h
+#          (4) - due to command line change
+#          (5) - due to missing .cmd file
+#          (6) - due to target not in $(targets)
+# (1) PHONY targets are always build
+# (2) No target, so we better build it
+# (3) Prerequisite is newer than target
+# (4) The command line stored in the file named dir/.target.cmd
+#     differed from actual command line. This happens when compiler
+#     options changes
+# (5) No dir/.target.cmd file (used to store command line)
+# (6) No dir/.target.cmd file and target not listed in $(targets)
+#     This is a good hint that there is a bug in the kbuild file
+ifeq ($(KBUILD_VERBOSE),2)
+why =                                                                        \
+    $(if $(filter $@, $(PHONY)),- due to target is PHONY,                    \
+        $(if $(wildcard $@),                                                 \
+            $(if $(any-prereq),- due to: $(any-prereq),                      \
+                $(if $(cmd-check),                                           \
+                    $(if $(cmd_$@),- due to command line change,             \
+                        $(if $(filter $@, $(targets)),                       \
+                            - due to missing .cmd file,                      \
+                            - due to $(notdir $@) not in $$(targets)         \
+                         )                                                   \
+                     )                                                       \
+                 )                                                           \
+             ),                                                              \
+             - due to target missing                                         \
+         )                                                                   \
+     )
+
+echo-why = $(call escsq, $(strip $(why)))
+endif
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 09:55:34 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 09:55:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSHX4-0002Rs-Pg; Sat, 25 Apr 2020 09:55:34 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSHX3-0002Ri-GD
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:33 +0000
X-Inumbo-ID: e7635ee0-86da-11ea-959c-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e7635ee0-86da-11ea-959c-12813bfff9fa;
 Sat, 25 Apr 2020 09:55:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=mSydYqFWNS48gYpEkNyJqyMswV4MiUScFSt+2FvB7EA=; b=7BXiLMP2BvyU4emIgcLLTjA/jK
 tc/Z1vHNlAmQCqxt/XjupFkjFm2M7/UkB4oKsClmW4Xi+8iXshzgur6B6lgpAzCoQyV4Dsy76Luci
 y8IcLsHbQJIUrcmAvY7FHP5jq9vF5YvHsSJb8P5ooSjuhKVPW8DPRXjnxgbLmVIX0aIc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHX3-00011O-2D
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHX3-0004vw-19
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/build: start using if_changed
Message-Id: <E1jSHX3-0004vw-19@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 09:55:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e321576f4047661111c7e069f03fc96294d7bb32
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Fri Apr 24 15:02:03 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:02:03 2020 +0200

    xen/build: start using if_changed
    
    This patch start to use if_changed introduced in a previous commit.
    
    Whenever if_changed is called, the target must have FORCE as
    dependency so that if_changed can check if the command line to be
    run has changed, so the macro $(real-prereqs) must be used to
    discover the dependencies without "FORCE".
    
    Whenever a target isn't in obj-y, it should be added to extra-y so the
    .*.cmd dependency file associated with the target can be loaded. This
    is done for xsm/flask/ and both common/lib{elf,fdt}/ and
    arch/x86/Makefile.
    
    For the targets that generate .*.d dependency files, there's going to
    be two dependency files (.*.d and .*.cmd) until we can merge them
    together in a later patch via fixdep from Linux.
    
    One cleanup, libelf-relocate.o doesn't exist anymore.
    
    We import cmd_ld and cmd_objcopy from Linux v5.4.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
---
 xen/Rules.mk               | 68 +++++++++++++++++++++++++++++++++-------------
 xen/arch/arm/Makefile      |  4 +--
 xen/arch/x86/Makefile      |  1 +
 xen/arch/x86/efi/Makefile  |  7 +++--
 xen/common/libelf/Makefile | 12 +++++---
 xen/common/libfdt/Makefile | 11 +++++---
 xen/xsm/flask/Makefile     | 17 +++++++++---
 7 files changed, 85 insertions(+), 35 deletions(-)

diff --git a/xen/Rules.mk b/xen/Rules.mk
index 21cac7f5f5..2e28c57230 100644
--- a/xen/Rules.mk
+++ b/xen/Rules.mk
@@ -56,6 +56,18 @@ SPECIAL_DATA_SECTIONS := rodata $(foreach a,1 2 4 8 16, \
 
 include Makefile
 
+# Linking
+# ---------------------------------------------------------------------------
+
+quiet_cmd_ld = LD      $@
+cmd_ld = $(LD) $(XEN_LDFLAGS) -r -o $@ $(real-prereqs)
+
+# Objcopy
+# ---------------------------------------------------------------------------
+
+quiet_cmd_objcopy = OBJCOPY $@
+cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $< $@
+
 define gendep
     ifneq ($(1),$(subst /,:,$(1)))
         DEPS += $(dir $(1)).$(notdir $(1)).d
@@ -164,29 +176,47 @@ else
 	$(CC) $(c_flags) -c $< -o $@
 endif
 
-%.o: %.S Makefile
-	$(CC) $(a_flags) -c $< -o $@
+quiet_cmd_cc_o_S = CC      $@
+cmd_cc_o_S = $(CC) $(a_flags) -c $< -o $@
+
+%.o: %.S FORCE
+	$(call if_changed,cc_o_S)
+
+
+quiet_cmd_obj_init_o = INIT_O  $@
+define cmd_obj_init_o
+    $(OBJDUMP) -h $< | sed -n '/[0-9]/{s,00*,0,g;p;}' | while read idx name sz rest; do \
+        case "$$name" in \
+        .*.local) ;; \
+        .text|.text.*|.data|.data.*|.bss) \
+            test $$sz != 0 || continue; \
+            echo "Error: size of $<:$$name is 0x$$sz" >&2; \
+            exit $$(expr $$idx + 1);; \
+        esac; \
+    done; \
+    $(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
+endef
+
+$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o FORCE
+	$(call if_changed,obj_init_o)
+
+quiet_cmd_cpp_i_c = CPP     $@
+cmd_cpp_i_c = $(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) $< -o $@
+
+quiet_cmd_cc_s_c = CC      $@
+cmd_cc_s_c = $(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -S $< -o $@
 
-$(filter %.init.o,$(obj-y) $(obj-bin-y) $(extra-y)): %.init.o: %.o Makefile
-	$(OBJDUMP) -h $< | sed -n '/[0-9]/{s,00*,0,g;p;}' | while read idx name sz rest; do \
-		case "$$name" in \
-		.*.local) ;; \
-		.text|.text.*|.data|.data.*|.bss) \
-			test $$sz != 0 || continue; \
-			echo "Error: size of $<:$$name is 0x$$sz" >&2; \
-			exit $$(expr $$idx + 1);; \
-		esac; \
-	done
-	$(OBJCOPY) $(foreach s,$(SPECIAL_DATA_SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
+quiet_cmd_s_S = CPP     $@
+cmd_s_S = $(CPP) $(filter-out -Wa$(comma)%,$(a_flags)) $< -o $@
 
-%.i: %.c Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(c_flags)) $< -o $@
+%.i: %.c FORCE
+	$(call if_changed,cpp_i_c)
 
-%.s: %.c Makefile
-	$(CC) $(filter-out -Wa$(comma)%,$(c_flags)) -S $< -o $@
+%.s: %.c FORCE
+	$(call if_changed,cc_s_c)
 
-%.s: %.S Makefile
-	$(CPP) $(filter-out -Wa$(comma)%,$(a_flags)) $< -o $@
+%.s: %.S FORCE
+	$(call if_changed,cpp_s_S)
 
 # Add intermediate targets:
 # When building objects with specific suffix patterns, add intermediate
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 9f1ab23357..b79ad55646 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -97,8 +97,8 @@ prelink_lto.o: $(ALL_OBJS)
 prelink.o: $(patsubst %/built_in.o,%/built_in_bin.o,$(ALL_OBJS)) prelink_lto.o
 	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
 else
-prelink.o: $(ALL_OBJS)
-	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
+prelink.o: $(ALL_OBJS) FORCE
+	$(call if_changed,ld)
 endif
 
 $(TARGET)-syms: prelink.o xen.lds
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index a805e9982e..44137d919b 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -71,6 +71,7 @@ obj-$(CONFIG_TBOOT) += tboot.o
 obj-y += hpet.o
 obj-y += vm_event.o
 obj-y += xstate.o
+extra-y += asm-macros.i
 
 x86_emulate.o: x86_emulate/x86_emulate.c x86_emulate/x86_emulate.h
 
diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 490d791aae..3e4c395b75 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -1,7 +1,10 @@
 CFLAGS-y += -fshort-wchar
 
-%.o: %.ihex
-	$(OBJCOPY) -I ihex -O binary $< $@
+quiet_cmd_objcopy_o_ihex = OBJCOPY $@
+cmd_objcopy_o_ihex = $(OBJCOPY) -I ihex -O binary $< $@
+
+%.o: %.ihex FORCE
+	$(call if_changed,objcopy_o_ihex)
 
 boot.init.o: buildid.o
 
diff --git a/xen/common/libelf/Makefile b/xen/common/libelf/Makefile
index 464c448d9d..a92326c982 100644
--- a/xen/common/libelf/Makefile
+++ b/xen/common/libelf/Makefile
@@ -1,12 +1,16 @@
 obj-bin-y := libelf.o
 nocov-y += libelf.o
+libelf-objs := libelf-tools.o libelf-loader.o libelf-dominfo.o
 
 SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
+OBJCOPYFLAGS := $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s))
 
 CFLAGS-y += -Wno-pointer-sign
 
-libelf.o: libelf-temp.o Makefile
-	$(OBJCOPY) $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
+libelf.o: libelf-temp.o FORCE
+	$(call if_changed,objcopy)
 
-libelf-temp.o: libelf-tools.o libelf-loader.o libelf-dominfo.o #libelf-relocate.o
-	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
+libelf-temp.o: $(libelf-objs) FORCE
+	$(call if_changed,ld)
+
+extra-y += libelf-temp.o $(libelf-objs)
diff --git a/xen/common/libfdt/Makefile b/xen/common/libfdt/Makefile
index e2a5e59380..6bd207cf8f 100644
--- a/xen/common/libfdt/Makefile
+++ b/xen/common/libfdt/Makefile
@@ -1,14 +1,17 @@
 include Makefile.libfdt
 
 SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
+OBJCOPYFLAGS := $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s))
 
 obj-y += libfdt.o
 nocov-y += libfdt.o
 
 CFLAGS-y += -I$(BASEDIR)/include/xen/libfdt/
 
-libfdt.o: libfdt-temp.o Makefile
-	$(OBJCOPY) $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s)) $< $@
+libfdt.o: libfdt-temp.o FORCE
+	$(call if_changed,objcopy)
 
-libfdt-temp.o: $(LIBFDT_OBJS)
-	$(LD) $(XEN_LDFLAGS) -r -o $@ $^
+libfdt-temp.o: $(LIBFDT_OBJS) FORCE
+	$(call if_changed,ld)
+
+extra-y += libfdt-temp.o $(LIBFDT_OBJS)
diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index 6db396347b..eebfceecc5 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -20,12 +20,21 @@ AV_H_FILES = include/av_perm_to_string.h include/av_permissions.h
 ALL_H_FILES = $(FLASK_H_FILES) $(AV_H_FILES)
 
 $(obj-y) ss/built_in.o: $(ALL_H_FILES)
+extra-y += $(ALL_H_FILES)
 
-$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND)
-	$(CONFIG_SHELL) policy/mkflask.sh $(AWK) include $(FLASK_H_DEPEND)
+mkflask := policy/mkflask.sh
+quiet_cmd_mkflask = MKFLASK $@
+cmd_mkflask = $(CONFIG_SHELL) $(mkflask) $(AWK) include $(FLASK_H_DEPEND)
 
-$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND)
-	$(CONFIG_SHELL) policy/mkaccess_vector.sh $(AWK) $(AV_H_DEPEND)
+$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND) $(mkflask) FORCE
+	$(call if_changed,mkflask)
+
+mkaccess := policy/mkaccess_vector.sh
+quiet_cmd_mkaccess = MKACCESS VECTOR $@
+cmd_mkaccess = $(CONFIG_SHELL) $(mkaccess) $(AWK) $(AV_H_DEPEND)
+
+$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND) $(mkaccess) FORCE
+	$(call if_changed,mkaccess)
 
 obj-bin-$(CONFIG_XSM_FLASK_POLICY) += flask-policy.o
 flask-policy.o: policy.bin
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 09:55:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 09:55:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSHXE-0002TC-Sf; Sat, 25 Apr 2020 09:55:44 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSHXE-0002T5-8h
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:44 +0000
X-Inumbo-ID: ed8da6c2-86da-11ea-83d8-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ed8da6c2-86da-11ea-83d8-bc764e2007e4;
 Sat, 25 Apr 2020 09:55:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5a3TFq9SaCMSCT2Cw5AE1Zqs7qsGx1QkAA6/JQ9BueE=; b=lzExS8iRkouMIqZqHOXCJWOR8R
 7ZYhoEz5uXkaTIXOU/yuCftQ+47zjY+Sh6L7Uj5HxR5NtwVm6We2+ec4BiP2A3ZjUjOykIcemsozR
 caCZAyiRswmNU2lJb1L5ryyxRbNKPMxddr2E+orv3t50KBX0AhyuaUlxOIe/go3GY7uw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHXD-00011a-Dc
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHXD-0004wi-Ae
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] mem_sharing: fix sharability check during fork reset
Message-Id: <E1jSHXD-0004wi-Ae@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 09:55:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f5500c3196455572f0c79fb7b6d8e5141a7385c8
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Fri Apr 24 15:05:33 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:05:33 2020 +0200

    mem_sharing: fix sharability check during fork reset
    
    When resetting a VM fork we ought to only remove pages that were allocated for
    the fork during it's execution and the contents copied over from the parent.
    This can be determined if the page is sharable as special pages used by the
    fork for other purposes will not pass this test. Unfortunately during the fork
    reset loop we only partially check whether that's the case. A page's type may
    indicate it is sharable (pass p2m_is_sharable) but that's not a sufficient
    check by itself. All checks that are normally performed before a page is
    converted to the sharable type need to be performed to avoid removing pages
    from the p2m that may be used for other purposes. For example, currently the
    reset loop also removes the vcpu info pages from the p2m, potentially putting
    the guest into infinite page-fault loops.
    
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/mm/mem_sharing.c | 83 ++++++++++++++++++++++++-------------------
 1 file changed, 47 insertions(+), 36 deletions(-)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index bb74595351..344a5bfb3d 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -633,31 +633,33 @@ unsigned int mem_sharing_get_nr_shared_mfns(void)
 /* Functions that change a page's type and ownership */
 static int page_make_sharable(struct domain *d,
                               struct page_info *page,
-                              int expected_refcnt)
+                              unsigned int expected_refcnt,
+                              bool validate_only)
 {
-    bool_t drop_dom_ref;
+    int rc = 0;
+    bool drop_dom_ref = false;
 
-    spin_lock(&d->page_alloc_lock);
+    spin_lock_recursive(&d->page_alloc_lock);
 
     if ( d->is_dying )
     {
-        spin_unlock(&d->page_alloc_lock);
-        return -EBUSY;
+        rc = -EBUSY;
+        goto out;
     }
 
     /* Change page type and count atomically */
     if ( !get_page_and_type(page, d, PGT_shared_page) )
     {
-        spin_unlock(&d->page_alloc_lock);
-        return -EINVAL;
+        rc = -EINVAL;
+        goto out;
     }
 
     /* Check it wasn't already sharable and undo if it was */
     if ( (page->u.inuse.type_info & PGT_count_mask) != 1 )
     {
-        spin_unlock(&d->page_alloc_lock);
         put_page_and_type(page);
-        return -EEXIST;
+        rc = -EEXIST;
+        goto out;
     }
 
     /*
@@ -666,20 +668,26 @@ static int page_make_sharable(struct domain *d,
      */
     if ( page->count_info != (PGC_allocated | (2 + expected_refcnt)) )
     {
-        spin_unlock(&d->page_alloc_lock);
         /* Return type count back to zero */
         put_page_and_type(page);
-        return -E2BIG;
+        rc = -E2BIG;
+        goto out;
     }
 
-    page_set_owner(page, dom_cow);
-    drop_dom_ref = !domain_adjust_tot_pages(d, -1);
-    page_list_del(page, &d->page_list);
-    spin_unlock(&d->page_alloc_lock);
+    if ( !validate_only )
+    {
+        page_set_owner(page, dom_cow);
+        drop_dom_ref = !domain_adjust_tot_pages(d, -1);
+        page_list_del(page, &d->page_list);
+    }
+
+out:
+    spin_unlock_recursive(&d->page_alloc_lock);
 
     if ( drop_dom_ref )
         put_domain(d);
-    return 0;
+
+    return rc;
 }
 
 static int page_make_private(struct domain *d, struct page_info *page)
@@ -810,7 +818,8 @@ static int debug_gref(struct domain *d, grant_ref_t ref)
 }
 
 static int nominate_page(struct domain *d, gfn_t gfn,
-                         int expected_refcnt, shr_handle_t *phandle)
+                         unsigned int expected_refcnt, bool validate_only,
+                         shr_handle_t *phandle)
 {
     struct p2m_domain *hp2m = p2m_get_hostp2m(d);
     p2m_type_t p2mt;
@@ -879,8 +888,8 @@ static int nominate_page(struct domain *d, gfn_t gfn,
     }
 
     /* Try to convert the mfn to the sharable type */
-    ret = page_make_sharable(d, page, expected_refcnt);
-    if ( ret )
+    ret = page_make_sharable(d, page, expected_refcnt, validate_only);
+    if ( ret || validate_only )
         goto out;
 
     /*
@@ -1392,13 +1401,13 @@ static int range_share(struct domain *d, struct domain *cd,
          * We only break out if we run out of memory as individual pages may
          * legitimately be unsharable and we just want to skip over those.
          */
-        rc = nominate_page(d, _gfn(start), 0, &sh);
+        rc = nominate_page(d, _gfn(start), 0, false, &sh);
         if ( rc == -ENOMEM )
             break;
 
         if ( !rc )
         {
-            rc = nominate_page(cd, _gfn(start), 0, &ch);
+            rc = nominate_page(cd, _gfn(start), 0, false, &ch);
             if ( rc == -ENOMEM )
                 break;
 
@@ -1478,7 +1487,7 @@ int mem_sharing_fork_page(struct domain *d, gfn_t gfn, bool unsharing)
         /* For read-only accesses we just add a shared entry to the physmap */
         while ( parent )
         {
-            if ( !(rc = nominate_page(parent, gfn, 0, &handle)) )
+            if ( !(rc = nominate_page(parent, gfn, 0, false, &handle)) )
                 break;
 
             parent = parent->parent;
@@ -1775,20 +1784,22 @@ static int mem_sharing_fork_reset(struct domain *d, struct domain *pd)
     spin_lock_recursive(&d->page_alloc_lock);
     page_list_for_each_safe(page, tmp, &d->page_list)
     {
-        p2m_type_t p2mt;
-        p2m_access_t p2ma;
+        shr_handle_t sh;
         mfn_t mfn = page_to_mfn(page);
         gfn_t gfn = mfn_to_gfn(d, mfn);
 
-        mfn = __get_gfn_type_access(p2m, gfn_x(gfn), &p2mt, &p2ma,
-                                    0, NULL, false);
-
-        /* only reset pages that are sharable */
-        if ( !p2m_is_sharable(p2mt) )
-            continue;
-
-        /* take an extra reference or just skip if can't for whatever reason */
-        if ( !get_page(page, d) )
+        /*
+         * We only want to remove pages from the fork here that were copied
+         * from the parent but could be potentially re-populated using memory
+         * sharing after the reset. These pages all must be regular pages with
+         * no extra reference held to them, thus should be possible to make
+         * them sharable. Unfortunately p2m_is_sharable check is not sufficient
+         * to test this as it doesn't check the page's reference count. We thus
+         * check whether the page is convertable to the shared type using
+         * nominate_page. In case the page is already shared (ie. a share
+         * handle is returned) then we don't remove it.
+         */
+        if ( (rc = nominate_page(d, gfn, 0, true, &sh)) || sh )
             continue;
 
         /* forked memory is 4k, not splitting large pages so this must work */
@@ -1797,7 +1808,7 @@ static int mem_sharing_fork_reset(struct domain *d, struct domain *pd)
         ASSERT(!rc);
 
         put_page_alloc_ref(page);
-        put_page(page);
+        put_page_and_type(page);
     }
     spin_unlock_recursive(&d->page_alloc_lock);
 
@@ -1839,7 +1850,7 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
     {
         shr_handle_t handle;
 
-        rc = nominate_page(d, _gfn(mso.u.nominate.u.gfn), 0, &handle);
+        rc = nominate_page(d, _gfn(mso.u.nominate.u.gfn), 0, false, &handle);
         mso.u.nominate.handle = handle;
     }
     break;
@@ -1854,7 +1865,7 @@ int mem_sharing_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_sharing_op_t) arg)
         if ( rc < 0 )
             goto out;
 
-        rc = nominate_page(d, gfn, 3, &handle);
+        rc = nominate_page(d, gfn, 3, false, &handle);
         mso.u.nominate.handle = handle;
     }
     break;
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 09:55:54 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 09:55:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSHXO-0002US-UQ; Sat, 25 Apr 2020 09:55:54 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSHXN-0002UG-Vw
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:54 +0000
X-Inumbo-ID: f3a09588-86da-11ea-959c-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f3a09588-86da-11ea-959c-12813bfff9fa;
 Sat, 25 Apr 2020 09:55:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=9zXbt2UJowzErC6eL8zzll6PxEa8EP7T2G+Jqfewy+U=; b=gRk9OhZ3nV0kn0vFZhXOjXpWud
 pwfiPaZJeNuDzmOyqS7j4kcXS14bmX9U4qND40OR75VwIhZPUz7kYeQ23nSJFiVNN1NkfjzfBiwZs
 TR6sC9JR/mMpPNBpSg+zgBcSGh5v9so6vAq6QZ5EbssXG0iaOpZgJXfZ/Mw1DYlobqH8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHXN-00011j-JZ
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSHXN-0004xT-IS
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 09:55:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86: drop cpu_has_ffxsr
Message-Id: <E1jSHXN-0004xT-IS@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 09:55:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 96b5c267e52657e99bd1bbf81dd51925447115e2
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Fri Apr 24 15:06:15 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Fri Apr 24 15:06:15 2020 +0200

    x86: drop cpu_has_ffxsr
    
    It's definition is bogus when it comes to Hygon CPUs, but since we don't
    use it anywhere drop it rather than correcting it.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/include/asm-x86/cpufeature.h | 2 --
 1 file changed, 2 deletions(-)

diff --git a/xen/include/asm-x86/cpufeature.h b/xen/include/asm-x86/cpufeature.h
index fb8137e3e8..859970570b 100644
--- a/xen/include/asm-x86/cpufeature.h
+++ b/xen/include/asm-x86/cpufeature.h
@@ -66,8 +66,6 @@
 
 /* CPUID level 0x80000001.edx */
 #define cpu_has_nx              boot_cpu_has(X86_FEATURE_NX)
-#define cpu_has_ffxsr           ((boot_cpu_data.x86_vendor == X86_VENDOR_AMD) \
-                                 && boot_cpu_has(X86_FEATURE_FFXSR))
 #define cpu_has_page1gb         boot_cpu_has(X86_FEATURE_PAGE1GB)
 #define cpu_has_rdtscp          boot_cpu_has(X86_FEATURE_RDTSCP)
 #define cpu_has_3dnow_ext       boot_cpu_has(X86_FEATURE_3DNOWEXT)
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 16:22:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 16:22:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSNZ7-0001XC-Kh; Sat, 25 Apr 2020 16:22:05 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSNZ6-0001X7-D7
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:04 +0000
X-Inumbo-ID: e57e9eba-8710-11ea-95e9-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e57e9eba-8710-11ea-95e9-12813bfff9fa;
 Sat, 25 Apr 2020 16:22:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=cXTsn2tI7f5H7HxXuEP9kERtUKcCQpd4vPRsP1dFf/k=; b=iCYkONT0VWKGptikOSO8m5oVc6
 zOFthXv5oWeba1mLxgWCzvBLAWrSGgZAm/JMT7/cNy6xxqRhyrKqqOReKfDT9tE/U9TLWEprdojYN
 I2m2853OZJMifE3SJqlPR+6Lg1Ac0yMv3H/hbGhQa3r3o3O1Mlv6Ljg9VsRvjImT5sw4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSNZ4-0001rN-K5
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSNZ4-0000bV-Iz
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen-traditional master] Add support for generic notifier lists
Message-Id: <E1jSNZ4-0000bV-Iz@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 16:22:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 211ed7d2da5abe7bb17cedc2debbe248c1d1f5d6
Author:     Anthony Liguori <aliguori@us.ibm.com>
AuthorDate: Fri Mar 13 12:35:26 2020 +0000
Commit:     Ian Jackson <ian.jackson@eu.citrix.com>
CommitDate: Fri Apr 24 15:42:07 2020 +0100

    Add support for generic notifier lists
    
    Notifiers are data-less callbacks and a notifier list is a list of registered
    notifiers that all are interested in a particular event.
    
    We'll use this in a few patches to implement mouse change notification.
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    
    [cherry-picked from d1e70c5e6d1472856c52969301247fe8c3c8389d
        conflicts: used the sys-qeue interface and added required
        LIST_REMOVE_SAFE function to that]
    
    Signed-off-by: Maximilian Heyne <mheyne@amazon.de>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
 Makefile    |  1 +
 notify.c    | 39 +++++++++++++++++++++++++++++++++++++++
 notify.h    | 43 +++++++++++++++++++++++++++++++++++++++++++
 sys-queue.h |  5 +++++
 4 files changed, 88 insertions(+)

diff --git a/Makefile b/Makefile
index 0fbec990..d921bcdf 100644
--- a/Makefile
+++ b/Makefile
@@ -93,6 +93,7 @@ OBJS+=sd.o ssi-sd.o
 OBJS+=bt.o bt-host.o bt-vhci.o bt-l2cap.o bt-sdp.o bt-hci.o bt-hid.o usb-bt.o
 OBJS+=buffered_file.o migration.o migration-tcp.o net.o qemu-sockets.o
 OBJS+=qemu-char.o aio.o net-checksum.o savevm.o cache-utils.o
+OBJS+=notify.o
 
 ifdef CONFIG_BRLAPI
 OBJS+= baum.o
diff --git a/notify.c b/notify.c
new file mode 100644
index 00000000..59e1e7c7
--- /dev/null
+++ b/notify.c
@@ -0,0 +1,39 @@
+/*
+ * Notifier lists
+ *
+ * Copyright IBM, Corp. 2010
+ *
+ * Authors:
+ *  Anthony Liguori   <aliguori@us.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2.  See
+ * the COPYING file in the top-level directory.
+ *
+ */
+
+#include "qemu-common.h"
+#include "notify.h"
+
+void notifier_list_init(NotifierList *list)
+{
+    LIST_INIT(&list->notifiers);
+}
+
+void notifier_list_add(NotifierList *list, Notifier *notifier)
+{
+    LIST_INSERT_HEAD(&list->notifiers, notifier, node);
+}
+
+void notifier_list_remove(Notifier *notifier)
+{
+    LIST_REMOVE(notifier, node);
+}
+
+void notifier_list_notify(NotifierList *list)
+{
+    Notifier *notifier, *next;
+
+    LIST_FOREACH_SAFE(notifier, &list->notifiers, node, next) {
+        notifier->notify(notifier);
+    }
+}
diff --git a/notify.h b/notify.h
new file mode 100644
index 00000000..093c63f1
--- /dev/null
+++ b/notify.h
@@ -0,0 +1,43 @@
+/*
+ * Notifier lists
+ *
+ * Copyright IBM, Corp. 2010
+ *
+ * Authors:
+ *  Anthony Liguori   <aliguori@us.ibm.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2.  See
+ * the COPYING file in the top-level directory.
+ *
+ */
+
+#ifndef QEMU_NOTIFY_H
+#define QEMU_NOTIFY_H
+
+#include "sys-queue.h"
+
+typedef struct Notifier Notifier;
+
+struct Notifier
+{
+    void (*notify)(Notifier *notifier);
+    LIST_ENTRY(Notifier) node;
+};
+
+typedef struct NotifierList
+{
+    LIST_HEAD(, Notifier) notifiers;
+} NotifierList;
+
+#define NOTIFIER_LIST_INITIALIZER(head) \
+    { LIST_HEAD_INITIALIZER((head).notifiers) }
+
+void notifier_list_init(NotifierList *list);
+
+void notifier_list_add(NotifierList *list, Notifier *notifier);
+
+void notifier_list_remove(Notifier *notifier);
+
+void notifier_list_notify(NotifierList *list);
+
+#endif
diff --git a/sys-queue.h b/sys-queue.h
index 55c26fe7..81ab044a 100644
--- a/sys-queue.h
+++ b/sys-queue.h
@@ -132,6 +132,11 @@ struct {                                                                \
                 (var);                                                  \
                 (var) = ((var)->field.le_next))
 
+#define LIST_FOREACH_SAFE(var, head, field, next_var)                   \
+        for ((var) = ((head)->lh_first);                                \
+                (var) && ((next_var) = ((var)->field.le_next), 1);      \
+                (var) = (next_var))
+
 /*
  * List access methods.
  */
--
generated by git-patchbot for /home/xen/git/qemu-xen-traditional.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 16:22:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 16:22:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSNZG-0001Y2-MC; Sat, 25 Apr 2020 16:22:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSNZF-0001Xu-Hd
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:13 +0000
X-Inumbo-ID: ea68dca8-8710-11ea-95e9-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ea68dca8-8710-11ea-95e9-12813bfff9fa;
 Sat, 25 Apr 2020 16:22:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=gwGqX3T8Rdazqvy8yAjQAkr2Yginm3Y4HifJPHbg6C4=; b=usoAOKOY4PfxOw1M6cLuQ1BIFG
 cGX2z4fSG1rDpBuYypYkbUFF9ZO6yb5KrSY4APJ5zzkr+NtNroPBQCKr12pdCDV0VIhsE2lRyNE3F
 qUFVuh/2+feV+bZNNFUNA3+bnea/zvIW9x3rHZns6yqDEARExRJGULIRgx1IS+NkgNYU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSNZE-0001rr-My
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSNZE-0000cJ-Ls
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen-traditional master] Add exit notifiers.
Message-Id: <E1jSNZE-0000cJ-Ls@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 16:22:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit eb9bf793f5857ab5ca850bfecba4f11496881500
Author:     Gerd Hoffmann <kraxel@redhat.com>
AuthorDate: Fri Mar 13 12:35:26 2020 +0000
Commit:     Ian Jackson <ian.jackson@eu.citrix.com>
CommitDate: Fri Apr 24 15:43:09 2020 +0100

    Add exit notifiers.
    
    Hook up any cleanup work which needs to be done here.  Advantages over
    using atexit(3):
    
      (1) You get passed in a pointer to the notifier.  If you embed that
          into your state struct you can use container_of() to get get your
          state info.
      (2) You can unregister, say when un-plugging a device.
    
    Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
    (cherry picked from commit fd42deeb4cb42f90084046e3ebdb4383953195e3)
    Signed-off-by: Maximilian Heyne <mheyne@amazon.de>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
 sysemu.h |  5 +++++
 vl.c     | 20 ++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/sysemu.h b/sysemu.h
index 968258a8..759d0e9d 100644
--- a/sysemu.h
+++ b/sysemu.h
@@ -2,6 +2,8 @@
 #define SYSEMU_H
 /* Misc. things related to the system emulator.  */
 
+#include "notify.h"
+
 /* vl.c */
 extern const char *bios_name;
 extern const char *bios_dir;
@@ -39,6 +41,9 @@ void qemu_system_powerdown(void);
 #endif
 void qemu_system_reset(void);
 
+void qemu_add_exit_notifier(Notifier *notify);
+void qemu_remove_exit_notifier(Notifier *notify);
+
 void do_savevm(const char *name);
 void do_loadvm(const char *name);
 void do_delvm(const char *name);
diff --git a/vl.c b/vl.c
index c3c5d630..2163217e 100644
--- a/vl.c
+++ b/vl.c
@@ -282,6 +282,9 @@ uint8_t qemu_uuid[16];
 
 #include "xen-vl-extra.c"
 
+static NotifierList exit_notifiers =
+    NOTIFIER_LIST_INITIALIZER(exit_notifiers);
+
 /***********************************************************/
 /* x86 ISA bus support */
 
@@ -4843,6 +4846,21 @@ static void vcpu_hex_str_to_bitmap(const char *optarg)
     }
 }
 
+void qemu_add_exit_notifier(Notifier *notify)
+{
+    notifier_list_add(&exit_notifiers, notify);
+}
+
+void qemu_remove_exit_notifier(Notifier *notify)
+{
+    notifier_list_remove(notify);
+}
+
+static void qemu_run_exit_notifiers(void)
+{
+    notifier_list_notify(&exit_notifiers);
+}
+
 int main(int argc, char **argv, char **envp)
 {
 #ifdef CONFIG_GDBSTUB
@@ -4887,6 +4905,8 @@ int main(int argc, char **argv, char **envp)
     const char *chroot_dir = NULL;
     const char *run_as = NULL;
 
+    atexit(qemu_run_exit_notifiers);
+
     qemu_cache_utils_init(envp);
     logfile = stderr; /* initial value */
 
--
generated by git-patchbot for /home/xen/git/qemu-xen-traditional.git#master


From xen-changelog-bounces@lists.xenproject.org Sat Apr 25 16:22:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 25 Apr 2020 16:22:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSNZR-0001Z9-Np; Sat, 25 Apr 2020 16:22:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=FiqJ=6J=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSNZQ-0001Yw-47
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:24 +0000
X-Inumbo-ID: f17eab56-8710-11ea-9e09-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f17eab56-8710-11ea-9e09-bc764e2007e4;
 Sat, 25 Apr 2020 16:22:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=+vPLu9l8f7j4UwIq1Ur3RSUEzUyzoq2c6nwMC5ZC+Xw=; b=WljI6OTMBgQUVL5zRGpEJgfpVP
 gokcFyD/W46hwlrCyF3eWbERnsAWsU+osKeg8KSUdKatr+0ZzOziCQ9DfnGIfUmFnu6fjwLv4B/7F
 2EDm827VbXqMAydRjs0wjkfXCVmI5FzkuTuDxkEZJpv9LloNk1dFI1h6BdYpC0omV/Nw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSNZO-0001s6-Q5
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSNZO-0000d4-On
 for xen-changelog@lists.xenproject.org; Sat, 25 Apr 2020 16:22:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen-traditional master] xen: cleanup IOREQ server on exit
Message-Id: <E1jSNZO-0000d4-On@xenbits.xenproject.org>
Date: Sat, 25 Apr 2020 16:22:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3c659044118e34603161457db9934a34f816d78b
Author:     Maximilian Heyne <mheyne@amazon.de>
AuthorDate: Fri Mar 13 12:35:26 2020 +0000
Commit:     Ian Jackson <ian.jackson@eu.citrix.com>
CommitDate: Fri Apr 24 15:44:22 2020 +0100

    xen: cleanup IOREQ server on exit
    
    Use the backported Notifier interface to register an atexit handler to
    cleanup the IOREQ server. This is required since Xen commit a5a180f9
    ("x86/domain: don't destroy IOREQ servers on soft reset") is introduced
    which requires Qemu to explicitly close the IOREQ server.
    
    This is can be seen as a backport of ba7fdd64 ("xen: cleanup IOREQ
    server on exit").
    
    Signed-off-by: Maximilian Heyne <mheyne@amazon.de>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
 hw/xen_machine_fv.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/hw/xen_machine_fv.c b/hw/xen_machine_fv.c
index f0989fad..66eb4a1e 100644
--- a/hw/xen_machine_fv.c
+++ b/hw/xen_machine_fv.c
@@ -31,6 +31,7 @@
 #include "qemu-aio.h"
 #include "xen_backend.h"
 #include "pci.h"
+#include "sysemu.h"
 
 #include <xen/hvm/params.h>
 #include <sys/mman.h>
@@ -67,6 +68,8 @@ TAILQ_HEAD(map_cache_head, map_cache_rev) locked_entries = TAILQ_HEAD_INITIALIZE
 static unsigned long last_address_page = ~0UL;
 static uint8_t      *last_address_vaddr;
 
+static Notifier exit_notifier;
+
 static int qemu_map_cache_init(void)
 {
     unsigned long size;
@@ -283,6 +286,11 @@ void xen_disable_io(void)
     xc_hvm_set_ioreq_server_state(xc_handle, domid, ioservid, 0);
 }
 
+static void xen_exit_notifier(Notifier *n)
+{
+    xc_hvm_destroy_ioreq_server(xc_handle, domid, ioservid);
+}
+
 static void xen_init_fv(ram_addr_t ram_size, int vga_ram_size,
 			const char *boot_device,
 			const char *kernel_filename,const char *kernel_cmdline,
@@ -317,6 +325,9 @@ static void xen_init_fv(ram_addr_t ram_size, int vga_ram_size,
         exit(-1);
     }
 
+    exit_notifier.notify = xen_exit_notifier;
+    qemu_add_exit_notifier(&exit_notifier);
+
     if (xc_hvm_get_ioreq_server_info(xc_handle, domid, ioservid,
                                      &ioreq_pfn, &bufioreq_pfn,
                                      &bufioreq_evtchn)) {
--
generated by git-patchbot for /home/xen/git/qemu-xen-traditional.git#master


From xen-changelog-bounces@lists.xenproject.org Sun Apr 26 10:33:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 26 Apr 2020 10:33:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSeau-0005zt-Ak; Sun, 26 Apr 2020 10:33:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L+0a=6K=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSeas-0005zo-Ss
 for xen-changelog@lists.xenproject.org; Sun, 26 Apr 2020 10:33:02 +0000
X-Inumbo-ID: 4e315ee6-87a9-11ea-9688-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 4e315ee6-87a9-11ea-9688-12813bfff9fa;
 Sun, 26 Apr 2020 10:33:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GwRzxFQ4QIMamikVkuBzf1jeEi4A3on159vSqjq4b/E=; b=X0DnhSQ/Nj8JmkAAZs6TrmIuc2
 p0HR+P3NbQRJ9I84mpvhVVW4ZAyW1/cEHXVfJekdQxuT554r5RAL3GQqqUv4A3qA54YMpdXQoLxep
 it59D3c+FZ0Gz1qFDxXZqZ4+cAIKLzydFP8AbaeQloRl59EbgcX7DY+raRt1ExxWeIO8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSear-0007FV-Qs
 for xen-changelog@lists.xenproject.org; Sun, 26 Apr 2020 10:33:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSear-0002Et-Pl
 for xen-changelog@lists.xenproject.org; Sun, 26 Apr 2020 10:33:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] Update QEMU_TRADITIONAL_REVISION
Message-Id: <E1jSear-0002Et-Pl@xenbits.xenproject.org>
Date: Sun, 26 Apr 2020 10:33:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3acfd35b61688ad9a5b843ee923221eb36e0b613
Author:     Ian Jackson <ian.jackson@eu.citrix.com>
AuthorDate: Fri Apr 24 15:49:23 2020 +0100
Commit:     Ian Jackson <ian.jackson@eu.citrix.com>
CommitDate: Fri Apr 24 15:49:23 2020 +0100

    Update QEMU_TRADITIONAL_REVISION
    
    Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
---
 Config.mk | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Config.mk b/Config.mk
index 0f303c79b2..3621162ae4 100644
--- a/Config.mk
+++ b/Config.mk
@@ -252,9 +252,9 @@ SEABIOS_UPSTREAM_REVISION ?= rel-1.13.0
 ETHERBOOT_NICS ?= rtl8139 8086100e
 
 
-QEMU_TRADITIONAL_REVISION ?= d0d8ad39ecb51cd7497cd524484fe09f50876798
-# Wed Oct 10 18:52:54 2018 +0000
-# xen/pt: allow QEMU to request MSI unmasking at bind time
+QEMU_TRADITIONAL_REVISION ?= 3c659044118e34603161457db9934a34f816d78b
+# Fri Mar 13 12:35:26 2020 +0000
+# xen: cleanup IOREQ server on exit
 
 # Specify which qemu-dm to use. This may be `ioemu' to use the old
 # Mercurial in-tree version, or a local directory, or a git URL.
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Sun Apr 26 10:33:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 26 Apr 2020 10:33:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSeb4-00060R-CB; Sun, 26 Apr 2020 10:33:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L+0a=6K=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSeb2-00060J-VU
 for xen-changelog@lists.xenproject.org; Sun, 26 Apr 2020 10:33:13 +0000
X-Inumbo-ID: 542e1cbc-87a9-11ea-b07b-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 542e1cbc-87a9-11ea-b07b-bc764e2007e4;
 Sun, 26 Apr 2020 10:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=fS8rU9mvo8hVcBdpDRQZe9y31Erm8/oXe9V6eevJU38=; b=ZDQdzWI5+V7sr0fXmO9W800Trt
 p2TF1umipVs/aMJql4vwjJATc2qm1qc3HuxD+AHE7TYWSDVdssCbLwiYl2t99QJyXgP9HcLUSMWEn
 mtCBtY5jqgSUSlmf7JXAQELml4ormXfMGqsBsBRn5fr956dLCgy5KOLsiRj8LRxutPuc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSeb1-0007Fb-Ti
 for xen-changelog@lists.xenproject.org; Sun, 26 Apr 2020 10:33:11 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSeb1-0002Fn-SX
 for xen-changelog@lists.xenproject.org; Sun, 26 Apr 2020 10:33:11 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] Introduce a description of the Backport and Fixes tags
Message-Id: <E1jSeb1-0002Fn-SX@xenbits.xenproject.org>
Date: Sun, 26 Apr 2020 10:33:11 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f093b08c47b39da6019421a2b61d40745b3e573b
Author:     Stefano Stabellini <sstabellini@kernel.org>
AuthorDate: Tue Apr 21 11:29:46 2020 -0700
Commit:     Stefano Stabellini <sstabellini@kernel.org>
CommitDate: Fri Apr 24 10:47:56 2020 -0700

    Introduce a description of the Backport and Fixes tags
    
    Create a new document under docs/process to describe our special tags.
    Add a description of the Fixes tag and the new Backport tag. Also
    clarify that lines with tags should not be split.
    
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Acked-by: Wei Liu <wl@xen.org>
    Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
    CC: jbeulich@suse.com
    CC: george.dunlap@citrix.com
    CC: julien@xen.org
    CC: lars.kurth@citrix.com
    CC: andrew.cooper3@citrix.com
    CC: konrad.wilk@oracle.com
---
 docs/process/tags.pandoc | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/docs/process/tags.pandoc b/docs/process/tags.pandoc
new file mode 100644
index 0000000000..1841cb87a8
--- /dev/null
+++ b/docs/process/tags.pandoc
@@ -0,0 +1,55 @@
+Tags: No line splitting
+-----------------------
+Do not split a tag across multiple lines, tags are exempt from the
+"wrap at 75 columns" rule in order to simplify parsing scripts.  For
+example:
+
+        Fixes: 67d01cdb5518 ("x86: infrastructure to allow converting certain indirect calls to direct ones")
+
+
+Fixes Tag
+---------
+
+If your patch fixes a bug in a specific commit, e.g. you found an issue using
+``git bisect``, please use the 'Fixes:' tag with the first 12 characters of
+the SHA-1 ID, and the one line summary.
+
+The following ``git config`` settings can be used to add a pretty format for
+outputting the above style in the ``git log`` or ``git show`` commands:
+
+        [core]
+                abbrev = 12
+        [pretty]
+                fixes = Fixes: %h (\"%s\")
+
+
+Backport Tag
+------------
+
+A backport tag is an optional tag in the commit message to request a
+given commit to be backported to the released trees:
+
+    Backport: 4.9+
+
+It marks a commit for being a candidate for backports to all released
+trees from 4.9 onward.
+
+The backport requester is expected to specify which currently supported
+releases need the backport; but encouraged to specify a release as far
+back as possible which applies. If the requester doesn't know the oldest
+affected tree, they are encouraged to append a comment like the
+following:
+
+    Backport: 4.9+ # maybe older
+
+Maintainers request the Backport tag to be added on commit. Contributors
+are welcome to mark their patches with the Backport tag when they deem
+appropriate. Maintainers will request for it to be removed when that is
+not the case.
+
+Please note that the Backport tag is a **request** for backport, which
+will still need to be evaluated by the maintainers. Maintainers might
+ask the requester to help with the backporting work if it is not
+trivial.
+
+When possible, please use the Fixes tag instead (or in addition).
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 07:44:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 07:44:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSyQz-0002fg-Gh; Mon, 27 Apr 2020 07:44:09 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSyQy-0002ew-1o
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:08 +0000
X-Inumbo-ID: de89c256-885a-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id de89c256-885a-11ea-9887-bc764e2007e4;
 Mon, 27 Apr 2020 07:44:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GH+YoDnHC0zoIDKx4X3iO6k9CuglSlWrKQp3EzzsRfM=; b=16dj2BIz9Yo7tANaj0qdel1iY2
 PMXl7zwWGLUdCfmeOHuZ+Q0XxxQDJt2EJgVH5qAEterzfJuEZlpaHXssBj8wSVj3ig8Iua50TkEjC
 KL3GD8XnhdFNUSsVKADBxP61fsrUMm7V7dlgqUQ87sZKTcA0LDQSXQ9HwIAOZxlxEGeU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSyQu-0008Uz-Tf
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSyQu-0001Qh-Rp
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] guest_access: harden *copy_to_guest_offset() to prevent
 const dest operand
Message-Id: <E1jSyQu-0001Qh-Rp@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 07:44:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4bdf6b5a7fec876e9bbd70ebe605828ad0fb12a4
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Mon Apr 27 09:28:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 09:28:21 2020 +0200

    guest_access: harden *copy_to_guest_offset() to prevent const dest operand
    
    At the moment, *copy_to_guest_offset() will allow the hypervisor to copy
    data to guest handle marked const.
    
    Thankfully, no users of the helper will do that. Rather than hoping this
    can be caught during review, harden copy_to_guest_offset() so the build
    will fail if such users are introduced.
    
    There is no easy way to check whether a const is NULL in C99. The
    approach used is to introduce an unused variable that is non-const and
    assign the handle. If the handle were const, this would fail at build
    because without an explicit cast, it is not possible to assign a const
    variable to a non-const variable.
    
    Suggested-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>
---
 xen/include/asm-arm/guest_access.h | 4 ++++
 xen/include/asm-x86/guest_access.h | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/xen/include/asm-arm/guest_access.h b/xen/include/asm-arm/guest_access.h
index 8997a1cbfe..3b8d4ec322 100644
--- a/xen/include/asm-arm/guest_access.h
+++ b/xen/include/asm-arm/guest_access.h
@@ -78,6 +78,8 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
 #define copy_to_guest_offset(hnd, off, ptr, nr) ({      \
     const typeof(*(ptr)) *_s = (ptr);                   \
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
+    /* Check that the handle is not for a const type */ \
+    void *__maybe_unused _t = (hnd).p;                  \
     ((void)((hnd).p == (ptr)));                         \
     raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));  \
 })
@@ -127,6 +129,8 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
 #define __copy_to_guest_offset(hnd, off, ptr, nr) ({    \
     const typeof(*(ptr)) *_s = (ptr);                   \
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
+    /* Check that the handle is not for a const type */ \
+    void *__maybe_unused _t = (hnd).p;                  \
     ((void)((hnd).p == (ptr)));                         \
     __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\
 })
diff --git a/xen/include/asm-x86/guest_access.h b/xen/include/asm-x86/guest_access.h
index ca700c959a..a22745ceb4 100644
--- a/xen/include/asm-x86/guest_access.h
+++ b/xen/include/asm-x86/guest_access.h
@@ -87,6 +87,8 @@
 #define copy_to_guest_offset(hnd, off, ptr, nr) ({      \
     const typeof(*(ptr)) *_s = (ptr);                   \
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
+    /* Check that the handle is not for a const type */ \
+    void *__maybe_unused _t = (hnd).p;                  \
     ((void)((hnd).p == (ptr)));                         \
     raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));  \
 })
@@ -137,6 +139,8 @@
 #define __copy_to_guest_offset(hnd, off, ptr, nr) ({    \
     const typeof(*(ptr)) *_s = (ptr);                   \
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
+    /* Check that the handle is not for a const type */ \
+    void *__maybe_unused _t = (hnd).p;                  \
     ((void)((hnd).p == (ptr)));                         \
     __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\
 })
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 07:44:19 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 07:44:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSyR9-0002gf-IG; Mon, 27 Apr 2020 07:44:19 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSyR8-0002gM-0z
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:18 +0000
X-Inumbo-ID: e48cbcbc-885a-11ea-9745-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e48cbcbc-885a-11ea-9745-12813bfff9fa;
 Mon, 27 Apr 2020 07:44:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=AmFltbZpCOUnIE/hECIysbFy0K4R1Yfd1wtdkqCSf28=; b=tpe2b9rxzfycbzW3m0dbzq+/RG
 6U9gRReN60G9SExRnTFcCzFlnpgxsZN4Ov3OQjAv/oE5zEAcvGYtSU22cTUXGPEHVKhUXTOqaKX+J
 YYKBQeYyKYozSEp8nsB9sBebt/1AakocTIZim4dbTe6fX0yCcvDIqMneM3XRnOJ/axXU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSyR5-0008Vg-0D
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSyR4-0001Rp-VQ
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] guestcopy: evaluate {, __}copy{,
 _field}_to_guest*() ptr argument just once
Message-Id: <E1jSyR4-0001Rp-VQ@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 07:44:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d0ee8e9ca4d4163e42dcd5f1cf13e4fae30a4190
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 09:30:16 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 09:30:16 2020 +0200

    guestcopy: evaluate {,__}copy{,_field}_to_guest*() ptr argument just once
    
    There's nothing wrong with having e.g.
    
        copy_to_guest(uarg, ptr++, 1);
    
    yet until now this would increment "ptr" twice.
    
    Also drop a pair of unneeded parentheses from every instance at this
    occasion.
    
    Fixes: b7954cc59831 ("Enhance guest memory accessor macros so that source operands can be")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
---
 xen/include/asm-arm/guest_access.h | 8 ++++----
 xen/include/asm-x86/guest_access.h | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/xen/include/asm-arm/guest_access.h b/xen/include/asm-arm/guest_access.h
index 3b8d4ec322..64d01951a9 100644
--- a/xen/include/asm-arm/guest_access.h
+++ b/xen/include/asm-arm/guest_access.h
@@ -80,7 +80,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
     /* Check that the handle is not for a const type */ \
     void *__maybe_unused _t = (hnd).p;                  \
-    ((void)((hnd).p == (ptr)));                         \
+    (void)((hnd).p == _s);                              \
     raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));  \
 })
 
@@ -107,7 +107,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
 #define copy_field_to_guest(hnd, ptr, field) ({         \
     const typeof(&(ptr)->field) _s = &(ptr)->field;     \
     void *_d = &(hnd).p->field;                         \
-    ((void)(&(hnd).p->field == &(ptr)->field));         \
+    (void)(&(hnd).p->field == _s);                      \
     raw_copy_to_guest(_d, _s, sizeof(*_s));             \
 })
 
@@ -131,7 +131,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
     /* Check that the handle is not for a const type */ \
     void *__maybe_unused _t = (hnd).p;                  \
-    ((void)((hnd).p == (ptr)));                         \
+    (void)((hnd).p == _s);                              \
     __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\
 })
 
@@ -148,7 +148,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
 #define __copy_field_to_guest(hnd, ptr, field) ({       \
     const typeof(&(ptr)->field) _s = &(ptr)->field;     \
     void *_d = &(hnd).p->field;                         \
-    ((void)(&(hnd).p->field == &(ptr)->field));         \
+    (void)(&(hnd).p->field == _s);                      \
     __raw_copy_to_guest(_d, _s, sizeof(*_s));           \
 })
 
diff --git a/xen/include/asm-x86/guest_access.h b/xen/include/asm-x86/guest_access.h
index a22745ceb4..064527895f 100644
--- a/xen/include/asm-x86/guest_access.h
+++ b/xen/include/asm-x86/guest_access.h
@@ -89,7 +89,7 @@
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
     /* Check that the handle is not for a const type */ \
     void *__maybe_unused _t = (hnd).p;                  \
-    ((void)((hnd).p == (ptr)));                         \
+    (void)((hnd).p == _s);                              \
     raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));  \
 })
 
@@ -112,7 +112,7 @@
 #define copy_field_to_guest(hnd, ptr, field) ({         \
     const typeof(&(ptr)->field) _s = &(ptr)->field;     \
     void *_d = &(hnd).p->field;                         \
-    ((void)(&(hnd).p->field == &(ptr)->field));         \
+    (void)(&(hnd).p->field == _s);                      \
     raw_copy_to_guest(_d, _s, sizeof(*_s));             \
 })
 
@@ -141,7 +141,7 @@
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
     /* Check that the handle is not for a const type */ \
     void *__maybe_unused _t = (hnd).p;                  \
-    ((void)((hnd).p == (ptr)));                         \
+    (void)((hnd).p == _s);                              \
     __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\
 })
 
@@ -159,7 +159,7 @@
 #define __copy_field_to_guest(hnd, ptr, field) ({       \
     const typeof(&(ptr)->field) _s = &(ptr)->field;     \
     void *_d = &(hnd).p->field;                         \
-    ((void)(&(hnd).p->field == &(ptr)->field));         \
+    (void)(&(hnd).p->field == _s);                      \
     __raw_copy_to_guest(_d, _s, sizeof(*_s));           \
 })
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 07:44:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 07:44:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jSyRG-0002hd-Jf; Mon, 27 Apr 2020 07:44:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jSyRF-0002hU-Kj
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:25 +0000
X-Inumbo-ID: ea8cc738-885a-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ea8cc738-885a-11ea-b9cf-bc764e2007e4;
 Mon, 27 Apr 2020 07:44:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=bqvwzx6/BVzMv1w01OLyQV1RTcViTOlXQ5rpv1qnHqg=; b=NkvW5BgyevSi6JKEqu24UESxdl
 XqTLZMYkcK/fWlzyvCH2nCfGgPI3T84J4eQBavFv7TNcS/QwYxt/peT1aQ9gKtYWxgwJuadoQKVDz
 3ZFbQRnMPxcrzoAinYuvg5ky9CohBURH6Qrgo47yzjOmE3/uST/zBkCtZHafabkn8Gqc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSyRF-0008Vu-2o
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jSyRF-0001SO-1v
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 07:44:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/build: silence make warnings about missing
 auto.conf*
Message-Id: <E1jSyRF-0001SO-1v@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 07:44:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8d4c17a90b0a9b3d82628461090a54a2c7897154
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Mon Apr 27 09:31:13 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 09:31:13 2020 +0200

    xen/build: silence make warnings about missing auto.conf*
    
    In a clean tree, both files include/config/auto.conf{,.cmd} are
    missing and older version of GNU Make complain about it:
        Makefile:103: include/config/auto.conf: No such file or directory
        Makefile:106: include/config/auto.conf.cmd: No such file or directory
    
    Those warnings are harmless, make will create the files and start over. But
    to avoid confusion, we'll use "-include" to silence the warning.
    
    Those warning started to appear with commit 6c122d3984a5 ("xen/build:
    include include/config/auto.conf in main Makefile").
    
    Reported-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/Makefile b/xen/Makefile
index 07f8ef8087..2b1dacb497 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -150,10 +150,10 @@ config: FORCE
 else # !config-build
 
 ifeq ($(need-config),y)
-include include/config/auto.conf
+-include include/config/auto.conf
 # Read in dependencies to all Kconfig* files, make sure to run syncconfig if
 # changes are detected.
-include include/config/auto.conf.cmd
+-include include/config/auto.conf.cmd
 
 # Allow people to just run `make` as before and not force them to configure
 $(KCONFIG_CONFIG):
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:11:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:11:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3XV-0000mf-ET; Mon, 27 Apr 2020 13:11:13 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3XU-0000ma-Jo
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:12 +0000
X-Inumbo-ID: 9061c7e5-8888-11ea-9781-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9061c7e5-8888-11ea-9781-12813bfff9fa;
 Mon, 27 Apr 2020 13:11:11 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XUXf5ZGfclbNiugkf4/PnSZYTrQMnUfVsZh2XHqJwEM=; b=4nK83poRuPtBwgvn51AdjMcnJz
 oqFOvOZaGgMDZmToJsF/uWrADW5LUTjoGN8JjAm/ZAsLlRlNcfCiCpm9x1Xi6pDQQl2D9b6bPvo9i
 +Bg5r4wcHaSd+NK/z3o9S96QtUevYSSqH5Fc7JQsq9QoERFTyR8cb0RrQSncxd+1Wxr8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3XT-0007QI-15
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:11 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3XS-0003Vp-W8
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:10 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/EFI: also fill boot_tsc_stamp on the xen.efi
 boot path
Message-Id: <E1jT3XS-0003Vp-W8@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:11:10 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d297fdf3d8bb348988227d6dbb2930db53fddc11
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 14:53:41 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 14:53:41 2020 +0200

    x86/EFI: also fill boot_tsc_stamp on the xen.efi boot path
    
    Commit e3a379c35eff ("x86/time: always count s_time from Xen boot")
    introducing this missed adjusting this path as well.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0dbc112e727f6c17f306c864950bdf83dece5cd5
    master date: 2020-04-14 11:42:11 +0200
---
 xen/arch/x86/efi/efi-boot.h | 3 +++
 xen/include/asm-x86/setup.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 232972eedf..6ca1f76877 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -8,6 +8,7 @@
 #include <asm/edd.h>
 #include <asm/msr.h>
 #include <asm/processor.h>
+#include <asm/setup.h>
 
 static struct file __initdata ucode;
 static multiboot_info_t __initdata mbi = {
@@ -639,6 +640,8 @@ static void __init efi_arch_cpu(void)
     uint32_t eax = cpuid_eax(0x80000000);
     uint32_t *caps = boot_cpu_data.x86_capability;
 
+    boot_tsc_stamp = rdtsc();
+
     caps[cpufeat_word(X86_FEATURE_HYPERVISOR)] = cpuid_ecx(1);
 
     if ( (eax >> 16) == 0x8000 && eax > 0x80000000 )
diff --git a/xen/include/asm-x86/setup.h b/xen/include/asm-x86/setup.h
index 861d46d6ac..138a41ac1a 100644
--- a/xen/include/asm-x86/setup.h
+++ b/xen/include/asm-x86/setup.h
@@ -13,6 +13,7 @@ extern char __2M_init_start[], __2M_init_end[];
 extern char __2M_rwdata_start[], __2M_rwdata_end[];
 
 extern unsigned long xenheap_initial_phys_start;
+extern uint64_t boot_tsc_stamp;
 
 void early_cpu_init(void);
 void early_time_init(void);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:11:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:11:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3Xf-0000nh-Fz; Mon, 27 Apr 2020 13:11:23 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3Xe-0000nY-5T
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:22 +0000
X-Inumbo-ID: 969e0276-8888-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 969e0276-8888-11ea-b9cf-bc764e2007e4;
 Mon, 27 Apr 2020 13:11:21 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HLlgHfCN0RoDff8fZlXNHwurXT/uO2j1wGSq1HlwZwc=; b=jPT+MTdzvneZya8gZHXwXAfqyb
 39nhJ53GiUlxRMEIraskz5OGdlVha5NMpSLNSEiDTBMu1gott+byeQF+flpzgvxdJ1g8i3ejgHrsH
 sTGuG+Cvls7kKhm8xWSPOoPGkTmtx5tH9IvhClZHLY4x5IKCSrIqTX0LJdsJWMy+5oeo=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Xd-0007Qp-4q
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:21 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Xd-0003Wn-2n
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:21 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/boot: Fix early exception handling with
 CONFIG_PERF_COUNTERS
Message-Id: <E1jT3Xd-0003Wn-2n@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:11:21 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9729b7eb22ba16b284a8b6d2397e760fef00fa4d
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 14:56:01 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 14:56:01 2020 +0200

    x86/boot: Fix early exception handling with CONFIG_PERF_COUNTERS
    
    The PERFC_INCR() macro uses current->processor, but current is not valid
    during early boot.  This causes the following crash to occur if
    e.g. rdmsr_safe() has to recover from a #GP fault.
    
      (XEN) Early fatal page fault at e008:ffff82d0803b1a39 (cr2=0000000000000004, ec=0000)
      (XEN) ----[ Xen-4.14-unstable  x86_64  debug=y   Not tainted ]----
      (XEN) CPU:    0
      (XEN) RIP:    e008:[<ffff82d0803b1a39>] x86_64/entry.S#handle_exception_saved+0x64/0xb8
      ...
      (XEN) Xen call trace:
      (XEN)    [<ffff82d0803b1a39>] R x86_64/entry.S#handle_exception_saved+0x64/0xb8
      (XEN)    [<ffff82d0806394fe>] F __start_xen+0x2cd/0x2980
      (XEN)    [<ffff82d0802000ec>] F __high_start+0x4c/0x4e
    
    Furthermore, the PERFC_INCR() macro is wildly inefficient.  There has been a
    single caller for many releases now, so inline it and delete the macro
    completely.
    
    There is no need to reference current at all.  What is actually needed is the
    per_cpu_offset which can be obtained directly from the top-of-stack block.
    This simplifies the counter handling to 3 instructions and no spilling to the
    stack at all.
    
    The same breakage from above is now handled properly:
    
      (XEN) traps.c:1591: GPF (0000): ffff82d0806394fe [__start_xen+0x2cd/0x2980] -> ffff82d0803b3bfb
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Julien Grall <jgrall@amazon.com>
    master commit: 615bfe42c6d183a0e54a0525ef82b58580d01619
    master date: 2020-04-16 09:48:38 +0100
---
 xen/arch/x86/x86_64/asm-offsets.c |  1 +
 xen/arch/x86/x86_64/entry.S       |  6 +++++-
 xen/include/asm-x86/asm_defns.h   | 16 ----------------
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 33930ce97c..5df15e26f1 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -112,6 +112,7 @@ void __dummy__(void)
     OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
     OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
     OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
+    OFFSET(CPUINFO_per_cpu_offset, struct cpu_info, per_cpu_offset);
     OFFSET(CPUINFO_cr4, struct cpu_info, cr4);
     OFFSET(CPUINFO_xen_cr3, struct cpu_info, xen_cr3);
     OFFSET(CPUINFO_pv_cr3, struct cpu_info, pv_cr3);
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 11385857fa..c7cfcf9199 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -679,7 +679,11 @@ handle_exception_saved:
 1:      movq  %rsp,%rdi
         movzbl UREGS_entry_vector(%rsp),%eax
         leaq  exception_table(%rip),%rdx
-        PERFC_INCR(exceptions, %rax, %rbx)
+#ifdef CONFIG_PERF_COUNTERS
+        lea   per_cpu__perfcounters(%rip), %rcx
+        add   STACK_CPUINFO_FIELD(per_cpu_offset)(%r14), %rcx
+        incl  ASM_PERFC_exceptions * 4(%rcx, %rax, 4)
+#endif
         mov   (%rdx, %rax, 8), %rdx
         INDIRECT_CALL %rdx
         mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h
index 370f239c50..337c60a7a7 100644
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -346,22 +346,6 @@ static always_inline void stac(void)
 
 #endif
 
-#ifdef CONFIG_PERF_COUNTERS
-#define PERFC_INCR(_name,_idx,_cur)             \
-        pushq _cur;                             \
-        movslq VCPU_processor(_cur),_cur;       \
-        pushq %rdx;                             \
-        leaq __per_cpu_offset(%rip),%rdx;       \
-        movq (%rdx,_cur,8),_cur;                \
-        leaq per_cpu__perfcounters(%rip),%rdx;  \
-        addq %rdx,_cur;                         \
-        popq %rdx;                              \
-        incl ASM_PERFC_##_name*4(_cur,_idx,4);  \
-        popq _cur
-#else
-#define PERFC_INCR(_name,_idx,_cur)
-#endif
-
 /* Work around AMD erratum #88 */
 #define safe_swapgs                             \
         "mfence; swapgs;"
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:11:32 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:11:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3Xo-0000oe-HW; Mon, 27 Apr 2020 13:11:32 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3Xo-0000oX-25
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:32 +0000
X-Inumbo-ID: 9ca478d0-8888-11ea-9781-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 9ca478d0-8888-11ea-9781-12813bfff9fa;
 Mon, 27 Apr 2020 13:11:31 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=RsUz+HmJlAUYlWOTCG9of6l6kJrJjiT9NNY7MYw5Ebw=; b=eeEulHwmoPbXcS43IaOzSyoPW3
 gKhzOVN6Fa0XMO6zro+CnK9ZRwTDQHL7eNRmD9G+7iJs7fzIy6vvx0iiNCtvDTMqGIvAjVBmnvscu
 hr2O0cYXdmLYaPKqWiLi9NoZxjmJ9b7uWgzpyeKefS48eqoQnL3V0U0gg527BPeaPBqg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Xn-0007R1-7d
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:31 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Xn-0003Xo-6X
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:31 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] hvmloader: enable MMIO and I/O decode,
 after all resource allocation
Message-Id: <E1jT3Xn-0003Xo-6X@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:11:31 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a060e72626235df67f7e5cc7cce04229e3e81c20
Author:     Harsha Shamsundara Havanur <havanur@amazon.com>
AuthorDate: Mon Apr 27 14:57:39 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 14:57:39 2020 +0200

    hvmloader: enable MMIO and I/O decode, after all resource allocation
    
    It was observed that PCI MMIO and/or IO BARs were programmed with
    memory and I/O decodes (bits 0 and 1 of PCI COMMAND register) enabled,
    during PCI setup phase. This resulted in incorrect memory mapping as
    soon as the lower half of the 64 bit bar is programmed.
    This displaced any RAM mappings under 4G. After the
    upper half is programmed PCI memory mapping is restored to its
    intended high mem location, but the RAM displaced is not restored.
    The OS then continues to boot and function until it tries to access
    the displaced RAM at which point it suffers a page fault and crashes.
    
    This patch address the issue by deferring enablement of memory and
    I/O decode in command register until all the resources, like interrupts
    I/O and/or MMIO BARs for all the PCI device functions are programmed,
    in the descending order of memory requested.
    
    Signed-off-by: Harsha Shamsundara Havanur <havanur@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: a8e0c228c79f3a000e19183090eb41fca173b034
    master date: 2020-04-16 10:58:46 +0200
---
 tools/firmware/hvmloader/pci.c | 49 +++++++++++++++++++++++++++++++-----------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
index 0b708bf578..dcd097a866 100644
--- a/tools/firmware/hvmloader/pci.c
+++ b/tools/firmware/hvmloader/pci.c
@@ -84,6 +84,7 @@ void pci_setup(void)
     uint32_t vga_devfn = 256;
     uint16_t class, vendor_id, device_id;
     unsigned int bar, pin, link, isa_irq;
+    uint8_t pci_devfn_decode_type[256] = {};
 
     /* Resources assignable to PCI devices via BARs. */
     struct resource {
@@ -120,6 +121,13 @@ void pci_setup(void)
      */
     bool allow_memory_relocate = 1;
 
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_IO !=
+                 PCI_COMMAND_IO);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MEMORY !=
+                 PCI_COMMAND_MEMORY);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MASTER !=
+                 PCI_COMMAND_MASTER);
+
     s = xenstore_read(HVM_XS_ALLOW_MEMORY_RELOCATE, NULL);
     if ( s )
         allow_memory_relocate = strtoll(s, NULL, 0);
@@ -208,6 +216,20 @@ void pci_setup(void)
             break;
         }
 
+        /*
+         * It is recommended that BAR programming be done whilst decode
+         * bits are cleared to avoid incorrect mappings being created.
+         * When 64-bit memory BAR is programmed, first by writing the
+         * lower half and then the upper half, which maps to an address
+         * under 4G, as soon as lower half is wriiten, replacing any RAM
+         * mapped in that address, which is not restored back after the
+         * upper half is written and PCI memory is correctly mapped to
+         * its intended high mem address.
+         */
+        cmd = pci_readw(devfn, PCI_COMMAND);
+        cmd &= ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
+        pci_writew(devfn, PCI_COMMAND, cmd);
+
         /* Map the I/O memory and port resources. */
         for ( bar = 0; bar < 7; bar++ )
         {
@@ -289,10 +311,8 @@ void pci_setup(void)
                    devfn>>3, devfn&7, 'A'+pin-1, isa_irq);
         }
 
-        /* Enable bus mastering. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_MASTER;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+        /* Enable bus master for this function later */
+        pci_devfn_decode_type[devfn] = PCI_COMMAND_MASTER;
     }
 
     if ( mmio_hole_size )
@@ -497,16 +517,12 @@ void pci_setup(void)
                PRIllx_arg(bar_sz),
                bar_data_upper, bar_data);
 			
-
-        /* Now enable the memory or I/O mapping. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
         if ( (bar_reg == PCI_ROM_ADDRESS) ||
              ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
               PCI_BASE_ADDRESS_SPACE_MEMORY) )
-            cmd |= PCI_COMMAND_MEMORY;
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_MEMORY;
         else
-            cmd |= PCI_COMMAND_IO;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_IO;
     }
 
     if ( pci_hi_mem_start )
@@ -526,10 +542,17 @@ void pci_setup(void)
          * has IO enabled, even if there is no I/O BAR on that
          * particular device.
          */
-        cmd = pci_readw(vga_devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_IO;
-        pci_writew(vga_devfn, PCI_COMMAND, cmd);
+        pci_devfn_decode_type[vga_devfn] |= PCI_COMMAND_IO;
     }
+
+    /* Enable bus master, memory and I/O decode for all valid functions. */
+    for ( devfn = 0; devfn < 256; devfn++ )
+        if ( pci_devfn_decode_type[devfn] )
+        {
+            cmd = pci_readw(devfn, PCI_COMMAND);
+            cmd |= pci_devfn_decode_type[devfn];
+            pci_writew(devfn, PCI_COMMAND, cmd);
+        }
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:11:42 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:11:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3Xy-0000pj-JE; Mon, 27 Apr 2020 13:11:42 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3Xy-0000pc-4l
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:42 +0000
X-Inumbo-ID: a1faf48b-8888-11ea-9781-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a1faf48b-8888-11ea-9781-12813bfff9fa;
 Mon, 27 Apr 2020 13:11:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=I2TpFbPqHK8ARn8E72fBQlazJAi+Zy4grt+EZywdM80=; b=Z0R4L9ldKVUKzeV4s9DlwI+FLH
 kF4eeLJzuX40IycyrGt+JQ8T2UDzCZiOy1EXPDKSt6a5FOj3thLWbpPp+FQCea0I99Q3nCBmBoAnR
 VlsT31jPEthbFu2nBj8AD+dctJki+2CkuPHUqaQlv3W8wMbGtdV3TDsVWhFfNxs7Ex8s=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Xx-0007Sh-AS
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:41 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Xx-0003Yg-9M
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:41 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] sched/core: fix bug when moving a domain between
 cpupools
Message-Id: <E1jT3Xx-0003Yg-9M@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:11:41 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a319cbb3071919935d2424b0b116b22bcf028452
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Mon Apr 27 14:58:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 14:58:20 2020 +0200

    sched/core: fix bug when moving a domain between cpupools
    
    For each UNIT, sched_set_affinity is called before unit->priv is updated
    to the new cpupool private UNIT data structure. The issue is
    sched_set_affinity will call the adjust_affinity method of the cpupool.
    If defined, the new cpupool may use unit->priv (e.g. credit), which at
    this point still references the old cpupool private UNIT data structure.
    
    This change fixes the bug by moving the switch of unit->priv earler in
    the function.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: ee97008433f15e60478058c8ace514b939b6f862
    master date: 2020-04-17 09:27:21 +0200
---
 xen/common/schedule.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index 820bd5050c..e3bd9cdccd 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -683,6 +683,7 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
         unsigned int unit_p = new_p;
 
         unitdata = unit->priv;
+        unit->priv = unit_priv[unit_idx];
 
         for_each_sched_unit_vcpu ( unit, v )
         {
@@ -704,7 +705,6 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
          */
         spin_unlock_irq(lock);
 
-        unit->priv = unit_priv[unit_idx];
         if ( !d->is_dying )
             sched_move_irqs(unit);
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:11:52 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:11:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3Y8-0000qy-Kk; Mon, 27 Apr 2020 13:11:52 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3Y8-0000qo-06
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:52 +0000
X-Inumbo-ID: a8a9c86a-8888-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a8a9c86a-8888-11ea-9887-bc764e2007e4;
 Mon, 27 Apr 2020 13:11:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=FWdk8MoFbZyV05WirBQxYUbkDb54DwfCLlxOXhI/DtE=; b=MqFoczZFXiQ2WNb2vtW/q7y7RG
 KnIRjTnVpEyW9CnTZvCucPkxOcFz88ln7g88FiLaXM82n6yb8zEipbxPlVN1fawn7sASL7xDg95rN
 KQ5a/DA3ZFlOL6mgAnYLSxbAAETsECqNVJUmegNcZD9FpVu+/Wf6U8XSfs5ZpBClFIo0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Y7-0007Sq-DY
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:51 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Y7-0003ZX-CI
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:11:51 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] sched: fix scheduler_disable() with core scheduling
Message-Id: <E1jT3Y7-0003ZX-CI@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:11:51 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2169029b0e5c9a3d4dd19f9b10b10ef848881bb4
Author:     Sergey Dyasli <sergey.dyasli@citrix.com>
AuthorDate: Mon Apr 27 15:00:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:00:08 2020 +0200

    sched: fix scheduler_disable() with core scheduling
    
    In core-scheduling mode, Xen might crash when entering ACPI S5 state.
    This happens in sched_slave() during is_idle_unit(next) check because
    next->vcpu_list is stale and points to an already freed memory.
    
    This situation happens shortly after scheduler_disable() is called if
    some CPU is still inside sched_slave() softirq. Current logic simply
    returns prev->next_task from sched_wait_rendezvous_in() which causes
    the described crash because next_task->vcpu_list has become invalid.
    
    Fix the crash by returning NULL from sched_wait_rendezvous_in() in
    the case when scheduler_disable() has been called.
    
    Signed-off-by: Sergey Dyasli <sergey.dyasli@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: 82dd1a956d9b68f52e830d1dddfdfb4ab4d5a638
    master date: 2020-04-17 09:28:16 +0200
---
 xen/common/schedule.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index e3bd9cdccd..6d24a3a135 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -2297,19 +2297,15 @@ static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
 
         *lock = pcpu_schedule_lock_irq(cpu);
 
-        if ( unlikely(!scheduler_active) )
-        {
-            ASSERT(is_idle_unit(prev));
-            atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
-            prev->rendezvous_in_cnt = 0;
-        }
-
         /*
          * Check for scheduling resource switched. This happens when we are
          * moved away from our cpupool and cpus are subject of the idle
          * scheduler now.
+         *
+         * This is also a bail out case when scheduler_disable() has been
+         * called.
          */
-        if ( unlikely(sr != get_sched_res(cpu)) )
+        if ( unlikely(sr != get_sched_res(cpu) || !scheduler_active) )
         {
             ASSERT(is_idle_unit(prev));
             atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:12:03 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:12:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3YJ-0000s0-MW; Mon, 27 Apr 2020 13:12:03 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3YI-0000rs-Pr
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:02 +0000
X-Inumbo-ID: ade55f31-8888-11ea-9781-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id ade55f31-8888-11ea-9781-12813bfff9fa;
 Mon, 27 Apr 2020 13:12:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=yfgxM+juH7ZZQJXVIM4ZosfMd+z3cp7jd5AGkbUROUk=; b=p+ISxqgP23FusJRXRRwcLXbfVl
 07SItCHbYZB8W43gwm8bbr2b0bjvaxJ71cety4SdLdIj4c/TDSqawLQ4hPINn/thc41GT6Ym4ROYy
 dSKF6LHnJSHn+bia79Mmz5fi7OiPhT1D2pS3Zd00ihXGaeldBD+pgv3BkBM9XjkUe4C4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3YH-0007TC-QD
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3YH-0003aj-MG
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/vtd: relax EPT page table sharing check
Message-Id: <E1jT3YH-0003aj-MG@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:12:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c8986e990c91cdda89e57c71293ed0c424e4e474
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Mon Apr 27 15:02:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:02:08 2020 +0200

    x86/vtd: relax EPT page table sharing check
    
    The EPT page tables can be shared with the IOMMU as long as the page
    sizes supported by EPT are also supported by the IOMMU.
    
    Current code checks that both the IOMMU and EPT support the same page
    sizes, but this is not strictly required, the IOMMU supporting more
    page sizes than EPT is fine and shouldn't block page table sharing.
    
    This is likely not a common case (IOMMU supporting more page sizes
    than EPT), but should still be fixed for correctness.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    master commit: 3957e12c02670b97855ef0933b373f99993fa598
    master date: 2020-04-21 10:54:56 +0200
---
 xen/drivers/passthrough/vtd/iommu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 1a239447ac..26401c7e64 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1911,8 +1911,8 @@ static int __init vtd_ept_page_compatible(struct vtd_iommu *iommu)
     if ( rdmsr_safe(MSR_IA32_VMX_EPT_VPID_CAP, ept_cap) != 0 ) 
         return 0;
 
-    return (ept_has_2mb(ept_cap) && opt_hap_2mb) == cap_sps_2mb(vtd_cap) &&
-           (ept_has_1gb(ept_cap) && opt_hap_1gb) == cap_sps_1gb(vtd_cap);
+    return (ept_has_2mb(ept_cap) && opt_hap_2mb) <= cap_sps_2mb(vtd_cap) &&
+           (ept_has_1gb(ept_cap) && opt_hap_1gb) <= cap_sps_1gb(vtd_cap);
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:12:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:12:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3YT-0000tA-Pa; Mon, 27 Apr 2020 13:12:13 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3YS-0000t2-UA
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:12 +0000
X-Inumbo-ID: b4ee3da4-8888-11ea-9781-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b4ee3da4-8888-11ea-9781-12813bfff9fa;
 Mon, 27 Apr 2020 13:12:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HtpwrSxDtcmmZy9izAlc3aGpPKV7BNAf3S6A/t/ivlg=; b=sANnbYsyFM3X+AHpH3WMBs8OyE
 KGV3jcmzrxABE2BlRcDzARyeuGNMAW+DGcFZWpQxTbUo11fx6aEU1C9XKA4svfJQfl0Cjds2FS1Y5
 fQq20i7J2IfP3hOJN67UWIt91ja4/sZXdw1oOgibcmyMUB1PHedpQZSg80VtGo12WIsc=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3YS-0007TL-0J
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3YR-0003ba-VR
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:11 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86: Enumeration for Control-flow Enforcement
 Technology
Message-Id: <E1jT3YR-0003ba-VR@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:12:11 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 682d71ff8557dc2732888597d043d782a19c2809
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 15:02:55 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:02:55 2020 +0200

    x86: Enumeration for Control-flow Enforcement Technology
    
    The CET spec has been published and guest kernels are starting to get support.
    Introduce the CPUID and MSRs, and fully block the MSRs from guest use.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
    master commit: 4803a67114279a656a54a23cebed646da32efeb6
    master date: 2020-04-21 16:52:03 +0100
---
 tools/libxl/libxl_cpuid.c                   | 2 ++
 tools/misc/xen-cpuid.c                      | 3 ++-
 xen/arch/x86/msr.c                          | 6 ++++++
 xen/include/asm-x86/msr-index.h             | 8 ++++++++
 xen/include/public/arch-x86/cpufeatureset.h | 2 ++
 5 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/tools/libxl/libxl_cpuid.c b/tools/libxl/libxl_cpuid.c
index 953a3bbd8c..6cea4227ba 100644
--- a/tools/libxl/libxl_cpuid.c
+++ b/tools/libxl/libxl_cpuid.c
@@ -201,6 +201,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"pku",          0x00000007,  0, CPUID_REG_ECX,  3,  1},
         {"ospke",        0x00000007,  0, CPUID_REG_ECX,  4,  1},
         {"avx512-vbmi2", 0x00000007,  0, CPUID_REG_ECX,  6,  1},
+        {"cet-ss",       0x00000007,  0, CPUID_REG_ECX,  7,  1},
         {"gfni",         0x00000007,  0, CPUID_REG_ECX,  8,  1},
         {"vaes",         0x00000007,  0, CPUID_REG_ECX,  9,  1},
         {"vpclmulqdq",   0x00000007,  0, CPUID_REG_ECX, 10,  1},
@@ -213,6 +214,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"avx512-4vnniw",0x00000007,  0, CPUID_REG_EDX,  2,  1},
         {"avx512-4fmaps",0x00000007,  0, CPUID_REG_EDX,  3,  1},
         {"md-clear",     0x00000007,  0, CPUID_REG_EDX, 10,  1},
+        {"cet-ibt",      0x00000007,  0, CPUID_REG_EDX, 20,  1},
         {"ibrsb",        0x00000007,  0, CPUID_REG_EDX, 26,  1},
         {"stibp",        0x00000007,  0, CPUID_REG_EDX, 27,  1},
         {"l1d-flush",    0x00000007,  0, CPUID_REG_EDX, 28,  1},
diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c
index 866c556a0f..603e1d65fd 100644
--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -123,7 +123,7 @@ static const char *const str_7c0[32] =
     [ 0] = "prefetchwt1",      [ 1] = "avx512_vbmi",
     [ 2] = "umip",             [ 3] = "pku",
     [ 4] = "ospke",            [ 5] = "waitpkg",
-    [ 6] = "avx512_vbmi2",
+    [ 6] = "avx512_vbmi2",     [ 7] = "cet-ss",
     [ 8] = "gfni",             [ 9] = "vaes",
     [10] = "vpclmulqdq",       [11] = "avx512_vnni",
     [12] = "avx512_bitalg",
@@ -161,6 +161,7 @@ static const char *const str_7d0[32] =
     /* 12 */                [13] = "tsx-force-abort",
 
     [18] = "pconfig",
+    [20] = "cet-ibt",
 
     [26] = "ibrsb",         [27] = "stibp",
     [28] = "l1d_flush",     [29] = "arch_caps",
diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index e0ad08f144..4b12103482 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -134,6 +134,9 @@ int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val)
         /* Write-only */
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
     case MSR_AMD64_LWP_CFG:
     case MSR_AMD64_LWP_CBADDR:
         /* Not offered to guests. */
@@ -285,6 +288,9 @@ int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val)
         /* Read-only */
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
     case MSR_AMD64_LWP_CFG:
     case MSR_AMD64_LWP_CBADDR:
         /* Not offered to guests. */
diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h
index 3971b992d3..7693c4a71a 100644
--- a/xen/include/asm-x86/msr-index.h
+++ b/xen/include/asm-x86/msr-index.h
@@ -179,6 +179,14 @@
 #define MSR_IA32_VMX_TRUE_ENTRY_CTLS            0x490
 #define MSR_IA32_VMX_VMFUNC                     0x491
 
+#define MSR_U_CET                           0x000006a0
+#define MSR_S_CET                           0x000006a2
+#define MSR_PL0_SSP                         0x000006a4
+#define MSR_PL1_SSP                         0x000006a5
+#define MSR_PL2_SSP                         0x000006a6
+#define MSR_PL3_SSP                         0x000006a7
+#define MSR_INTERRUPT_SSP_TABLE             0x000006a8
+
 /* K7/K8 MSRs. Not complete. See the architecture manual for a more
    complete list. */
 #define MSR_K7_EVNTSEL0			0xc0010000
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 48d8d1f4e2..2835688f1c 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -229,6 +229,7 @@ XEN_CPUFEATURE(UMIP,          6*32+ 2) /*S  User Mode Instruction Prevention */
 XEN_CPUFEATURE(PKU,           6*32+ 3) /*H  Protection Keys for Userspace */
 XEN_CPUFEATURE(OSPKE,         6*32+ 4) /*!  OS Protection Keys Enable */
 XEN_CPUFEATURE(AVX512_VBMI2,  6*32+ 6) /*A  Additional AVX-512 Vector Byte Manipulation Instrs */
+XEN_CPUFEATURE(CET_SS,        6*32+ 7) /*   CET - Shadow Stacks */
 XEN_CPUFEATURE(GFNI,          6*32+ 8) /*A  Galois Field Instrs */
 XEN_CPUFEATURE(VAES,          6*32+ 9) /*A  Vector AES Instrs */
 XEN_CPUFEATURE(VPCLMULQDQ,    6*32+10) /*A  Vector Carry-less Multiplication Instrs */
@@ -253,6 +254,7 @@ XEN_CPUFEATURE(AVX512_4VNNIW, 9*32+ 2) /*A  AVX512 Neural Network Instructions *
 XEN_CPUFEATURE(AVX512_4FMAPS, 9*32+ 3) /*A  AVX512 Multiply Accumulation Single Precision */
 XEN_CPUFEATURE(MD_CLEAR,      9*32+10) /*A  VERW clears microarchitectural buffers */
 XEN_CPUFEATURE(TSX_FORCE_ABORT, 9*32+13) /* MSR_TSX_FORCE_ABORT.RTM_ABORT */
+XEN_CPUFEATURE(CET_IBT,       9*32+20) /*   CET - Indirect Branch Tracking */
 XEN_CPUFEATURE(IBRSB,         9*32+26) /*A  IBRS and IBPB support (used by Intel) */
 XEN_CPUFEATURE(STIBP,         9*32+27) /*A  STIBP */
 XEN_CPUFEATURE(L1D_FLUSH,     9*32+28) /*S  MSR_FLUSH_CMD and L1D flush. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:12:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:12:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3Yd-0000uv-RH; Mon, 27 Apr 2020 13:12:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3Yd-0000ul-2l
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:23 +0000
X-Inumbo-ID: baf32318-8888-11ea-9781-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id baf32318-8888-11ea-9781-12813bfff9fa;
 Mon, 27 Apr 2020 13:12:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Hl26fid+WBlhlnpAqo8l36EfRcXS0D9VQ3uf7V9j33o=; b=6sLILjER5Pb+K+bjyzhfyoTnxN
 zmxQPjUpepB5fyGM+EYGs7N3t0VcH9KyXAJnhRwzFoC4DI4ICQJT/JNX55gI+Z6WRVC4XWtHuU71y
 ylgJw4gmpXIeAfxMBeMULynr723eP/f8ANS91TOkvRcL5TDFDcDyJutHJbwHknQ7t/O4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Yc-0007U8-3K
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Yc-0003cK-2P
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86/HVM: expose VM assist hypercall
Message-Id: <E1jT3Yc-0003cK-2P@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:12:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2e8d8edc1fe12e0d513d4907b19b00bcc3dc015c
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:05:16 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:05:16 2020 +0200

    x86/HVM: expose VM assist hypercall
    
    In preparation for the addition of VMASST_TYPE_runstate_update_flag
    commit 72c538cca957 ("arm: add support for vm_assist hypercall") enabled
    the hypercall for Arm. I consider it not logical that it then isn't also
    exposed to x86 HVM guests (with the same single feature permitted to be
    enabled as Arm has); Linux actually tries to use it afaict.
    
    Rather than introducing yet another thin wrapper around vm_assist(),
    make that function the main handler, requiring a per-arch
    arch_vm_assist_valid_mask() definition instead.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: f13404d57f55a97838f1c16a366fbc3231ec21f1
    master date: 2020-04-22 12:58:25 +0200
---
 xen/arch/x86/domain.c        |  3 +++
 xen/arch/x86/hvm/hypercall.c |  1 +
 xen/arch/x86/pv/hypercall.c  |  2 +-
 xen/common/compat/kernel.c   |  5 -----
 xen/common/domain.c          | 13 ++++++++-----
 xen/common/kernel.c          |  7 -------
 xen/include/asm-arm/config.h |  2 --
 xen/include/asm-arm/domain.h |  2 ++
 xen/include/asm-x86/config.h | 11 -----------
 xen/include/asm-x86/domain.h | 19 +++++++++++++++++++
 xen/include/xen/hypercall.h  |  2 --
 xen/include/xen/lib.h        |  2 --
 12 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index d42a32c8a9..7040ff4af7 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -939,6 +939,9 @@ int arch_set_info_guest(
         v->arch.dr6 = c(debugreg[6]);
         v->arch.dr7 = c(debugreg[7]);
 
+        if ( v->vcpu_id == 0 )
+            d->vm_assist = c.nat->vm_assist;
+
         hvm_set_info_guest(v);
         goto out;
     }
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 33dd2d99d2..0d24550dcc 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -124,6 +124,7 @@ static const hypercall_table_t hvm_hypercall_table[] = {
 #ifdef CONFIG_GRANT_TABLE
     HVM_CALL(grant_table_op),
 #endif
+    HYPERCALL(vm_assist),
     COMPAT_CALL(vcpu_op),
     HVM_CALL(physdev_op),
     COMPAT_CALL(xen_version),
diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c
index 0c84c0b3a0..55a37d3698 100644
--- a/xen/arch/x86/pv/hypercall.c
+++ b/xen/arch/x86/pv/hypercall.c
@@ -56,7 +56,7 @@ const hypercall_table_t pv_hypercall_table[] = {
 #ifdef CONFIG_GRANT_TABLE
     COMPAT_CALL(grant_table_op),
 #endif
-    COMPAT_CALL(vm_assist),
+    HYPERCALL(vm_assist),
     COMPAT_CALL(update_va_mapping_otherdomain),
     COMPAT_CALL(iret),
     COMPAT_CALL(vcpu_op),
diff --git a/xen/common/compat/kernel.c b/xen/common/compat/kernel.c
index 5c6e7322f8..804b919bdc 100644
--- a/xen/common/compat/kernel.c
+++ b/xen/common/compat/kernel.c
@@ -37,11 +37,6 @@ CHECK_TYPE(capabilities_info);
 
 CHECK_TYPE(domain_handle);
 
-#ifdef COMPAT_VM_ASSIST_VALID
-#undef VM_ASSIST_VALID
-#define VM_ASSIST_VALID COMPAT_VM_ASSIST_VALID
-#endif
-
 #define DO(fn) int compat_##fn
 #define COMPAT
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 611116c7fc..0902a15e8d 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1601,20 +1601,23 @@ long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
-#ifdef VM_ASSIST_VALID
-long vm_assist(struct domain *p, unsigned int cmd, unsigned int type,
-               unsigned long valid)
+#ifdef arch_vm_assist_valid_mask
+long do_vm_assist(unsigned int cmd, unsigned int type)
 {
+    struct domain *currd = current->domain;
+    const unsigned long valid = arch_vm_assist_valid_mask(currd);
+
     if ( type >= BITS_PER_LONG || !test_bit(type, &valid) )
         return -EINVAL;
 
     switch ( cmd )
     {
     case VMASST_CMD_enable:
-        set_bit(type, &p->vm_assist);
+        set_bit(type, &currd->vm_assist);
         return 0;
+
     case VMASST_CMD_disable:
-        clear_bit(type, &p->vm_assist);
+        clear_bit(type, &currd->vm_assist);
         return 0;
     }
 
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 760917dab5..de2fd1e334 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -565,13 +565,6 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return -ENOSYS;
 }
 
-#ifdef VM_ASSIST_VALID
-DO(vm_assist)(unsigned int cmd, unsigned int type)
-{
-    return vm_assist(current->domain, cmd, type, VM_ASSIST_VALID);
-}
-#endif
-
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h
index bc89e84f4d..fbb4b23a69 100644
--- a/xen/include/asm-arm/config.h
+++ b/xen/include/asm-arm/config.h
@@ -195,8 +195,6 @@ extern unsigned long frametable_virt_end;
 #define watchdog_disable() ((void)0)
 #define watchdog_enable()  ((void)0)
 
-#define VM_ASSIST_VALID          (1UL << VMASST_TYPE_runstate_update_flag)
-
 #endif /* __ARM_CONFIG_H__ */
 /*
  * Local variables:
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index 16a7150a95..b405cd539e 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -269,6 +269,8 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
+#define arch_vm_assist_valid_mask(d) (1UL << VMASST_TYPE_runstate_update_flag)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index dab7d7bade..8d79a71398 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -308,17 +308,6 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
-#define NATIVE_VM_ASSIST_VALID   ((1UL << VMASST_TYPE_4gb_segments)        | \
-                                  (1UL << VMASST_TYPE_4gb_segments_notify) | \
-                                  (1UL << VMASST_TYPE_writable_pagetables) | \
-                                  (1UL << VMASST_TYPE_pae_extended_cr3)    | \
-                                  (1UL << VMASST_TYPE_architectural_iopl)  | \
-                                  (1UL << VMASST_TYPE_runstate_update_flag)| \
-                                  (1UL << VMASST_TYPE_m2p_strict))
-#define VM_ASSIST_VALID          NATIVE_VM_ASSIST_VALID
-#define COMPAT_VM_ASSIST_VALID   (NATIVE_VM_ASSIST_VALID & \
-                                  ((1UL << COMPAT_BITS_PER_LONG) - 1))
-
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 9dc7556980..81f32bb56d 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -694,6 +694,25 @@ static inline void pv_inject_sw_interrupt(unsigned int vector)
     pv_inject_event(&event);
 }
 
+#define PV32_VM_ASSIST_MASK ((1UL << VMASST_TYPE_4gb_segments)        | \
+                             (1UL << VMASST_TYPE_4gb_segments_notify) | \
+                             (1UL << VMASST_TYPE_writable_pagetables) | \
+                             (1UL << VMASST_TYPE_pae_extended_cr3)    | \
+                             (1UL << VMASST_TYPE_architectural_iopl)  | \
+                             (1UL << VMASST_TYPE_runstate_update_flag))
+/*
+ * Various of what PV32_VM_ASSIST_MASK has isn't really applicable to 64-bit,
+ * but we can't make such requests fail all of the sudden.
+ */
+#define PV64_VM_ASSIST_MASK (PV32_VM_ASSIST_MASK                      | \
+                             (1UL << VMASST_TYPE_m2p_strict))
+#define HVM_VM_ASSIST_MASK  (1UL << VMASST_TYPE_runstate_update_flag)
+
+#define arch_vm_assist_valid_mask(d) \
+    (is_hvm_domain(d) ? HVM_VM_ASSIST_MASK \
+                      : is_pv_32bit_domain(d) ? PV32_VM_ASSIST_MASK \
+                                              : PV64_VM_ASSIST_MASK)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index ad8ad27b23..d82a293377 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -192,8 +192,6 @@ extern int compat_xsm_op(
 
 extern int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg);
 
-extern int compat_vm_assist(unsigned int cmd, unsigned int type);
-
 DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t);
 extern int compat_multicall(
     XEN_GUEST_HANDLE_PARAM(multicall_entry_compat_t) call_list,
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 8fbe84032d..3c27ba902d 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -120,8 +120,6 @@ extern void guest_printk(const struct domain *d, const char *format, ...)
     __attribute__ ((format (printf, 2, 3)));
 extern void noreturn panic(const char *format, ...)
     __attribute__ ((format (printf, 1, 2)));
-extern long vm_assist(struct domain *, unsigned int cmd, unsigned int type,
-                      unsigned long valid);
 extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst);
 extern int printk_ratelimit(void);
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:12:33 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:12:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3Yn-0000vz-Sp; Mon, 27 Apr 2020 13:12:33 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3Ym-0000vr-V5
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:32 +0000
X-Inumbo-ID: c108ebc0-8888-11ea-9781-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c108ebc0-8888-11ea-9781-12813bfff9fa;
 Mon, 27 Apr 2020 13:12:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=UXLX4POd6GPWJxEXp/jH6KIamwA5qXv/V7dcOHWPf8s=; b=vy56KQm2UMd1DgVTx1tHdvxBkS
 BzMDpp+N+wx595epvIVfmNv9r/xce6PtgUzM2l2ZC6/Mq+OXdGjjC/ZEMjWZWcCjc4kAPMXMp5EYt
 4v5ScYUcjeaH529vRwV35Nom5ulByC3FGF5Z5uF6Q7TwnSvsWz6J7dnad7zQmh5yW5jg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Ym-0007UQ-A8
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Ym-0003dw-8J
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] x86: validate VM assist value in
 arch_set_info_guest()
Message-Id: <E1jT3Ym-0003dw-8J@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:12:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 85f86ab865e1175683f78d89dda702b4faa88329
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:06:56 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:06:56 2020 +0200

    x86: validate VM assist value in arch_set_info_guest()
    
    While I can't spot anything that would go wrong, just like the
    respective hypercall only permits applicable bits to be set, we should
    also do so when loading guest context.
    
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: a62c6fe05c4ae905b7d4cb0ca946508b7f96d522
    master date: 2020-04-22 13:01:10 +0200
---
 xen/arch/x86/domain.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 7040ff4af7..a905aec8e1 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -932,6 +932,9 @@ int arch_set_info_guest(
         }
     }
 
+    if ( v->vcpu_id == 0 && (c(vm_assist) & ~arch_vm_assist_valid_mask(d)) )
+        return -EINVAL;
+
     if ( is_hvm_domain(d) )
     {
         for ( i = 0; i < ARRAY_SIZE(v->arch.dr); ++i )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:12:44 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:12:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3Yy-0000x1-UN; Mon, 27 Apr 2020 13:12:44 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3Yx-0000wt-EP
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:43 +0000
X-Inumbo-ID: c6e8f649-8888-11ea-9781-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c6e8f649-8888-11ea-9781-12813bfff9fa;
 Mon, 27 Apr 2020 13:12:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Uied7+29BoiDzLoTMle54eahXLFCf31fJQyDg3xfi8M=; b=H/ipTQXQzcUNpefYNTQwWWcDsf
 Ag7KNO/Kz4Jz3eUwbTjyigl8xvCf4GPi2fCbltlTSDqBt/encJeBFV2Q+ScHkjYivF0L7Ru5M63Z7
 mIFPYQyDJipyw3VbiWqnXY3YHvkaTn9VVt2cymPOcV38/w37eyIVB2uKjpAnQ0xZJy8Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Yw-0007UZ-FC
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3Yw-0003ev-EI
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:12:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.13] build,xsm: fix multiple call
Message-Id: <E1jT3Yw-0003ev-EI@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:12:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 35b80b2a011416383466f21e32cb72cf73df491b
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Mon Apr 27 15:07:46 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:07:46 2020 +0200

    build,xsm: fix multiple call
    
    Both script mkflask.sh and mkaccess_vector.sh generates multiple
    files. Exploits the 'multi-target pattern rule' trick to call each
    scripts only once.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 52f3f319851e40892fbafeae53e512c7d61f03d0
    master date: 2020-04-23 09:59:05 +0200
---
 xen/xsm/flask/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index 7c3f381287..874fd362b9 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -21,10 +21,10 @@ ALL_H_FILES = $(FLASK_H_FILES) $(AV_H_FILES)
 
 $(obj-y) ss/built_in.o: $(ALL_H_FILES)
 
-$(FLASK_H_FILES): $(FLASK_H_DEPEND)
+$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkflask.sh $(AWK) include $(FLASK_H_DEPEND)
 
-$(AV_H_FILES): $(AV_H_DEPEND)
+$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkaccess_vector.sh $(AWK) $(AV_H_DEPEND)
 
 obj-bin-$(CONFIG_XSM_FLASK_POLICY) += flask-policy.o
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:33:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:33:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3sl-0003Ag-U3; Mon, 27 Apr 2020 13:33:11 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3sk-0003AW-HE
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:33:10 +0000
X-Inumbo-ID: a26a62fe-888b-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a26a62fe-888b-11ea-b9cf-bc764e2007e4;
 Mon, 27 Apr 2020 13:33:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8pCnkivn6QiiUwuWry77KCtUKlNWTBjPx4txAhzmyAk=; b=yf5YW3TQtCzd/KpklzdMmSoB1M
 CbSsjshWif1H9G89VslMt7XKS6azKfxD68kBhiBDxmLJ6caiDSTuFDbPHrYn/n8XOOCtpzo6PWpsQ
 X0xm1j6YRqIqHX+2Liiq6H8CDPTDeCPfliBcnjcIajUdA4eaanSvl1rTvelYzS5aW2UI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3sj-0007vn-BC
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:33:09 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3sj-0005PV-9g
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:33:09 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] tools: build golang tools if go compiler is present
Message-Id: <E1jT3sj-0005PV-9g@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:33:09 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 1e13ea98bbb8369d065af4666c45c26dab5240d5
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Thu Apr 23 23:05:40 2020 -0400
Commit:     Wei Liu <wl@xen.org>
CommitDate: Mon Apr 27 14:24:59 2020 +0100

    tools: build golang tools if go compiler is present
    
    By default, if the go compiler is found by the configure script, build
    the golang tools. If the compiler is not found, and --enable-golang was
    not explicitly set, do not build to the golang tools.
    
    The corresponding make variable is CONFIG_GOLANG. Remove CONFIG_GOLANG
    from tools/Rules.mk since the variable is now set by configure in
    config/Tools.mk.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Acked-by: Wei Liu <wl@xen.org>
    Acked-by: George Dunlap <george.dunlap@citrix.com>
---
 config/Tools.mk.in |   1 +
 m4/golang.m4       |   4 ++
 tools/Rules.mk     |   2 -
 tools/configure    | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tools/configure.ac |  12 +++++
 5 files changed, 155 insertions(+), 2 deletions(-)

diff --git a/config/Tools.mk.in b/config/Tools.mk.in
index 189fda1596..23df47af8d 100644
--- a/config/Tools.mk.in
+++ b/config/Tools.mk.in
@@ -55,6 +55,7 @@ CONFIG_QEMU_TRAD    := @qemu_traditional@
 CONFIG_QEMU_XEN     := @qemu_xen@
 CONFIG_QEMUU_EXTRA_ARGS:= @EXTRA_QEMUU_CONFIGURE_ARGS@
 CONFIG_LIBNL        := @libnl@
+CONFIG_GOLANG       := @golang@
 
 CONFIG_SYSTEMD      := @systemd@
 SYSTEMD_CFLAGS      := @SYSTEMD_CFLAGS@
diff --git a/m4/golang.m4 b/m4/golang.m4
new file mode 100644
index 0000000000..0b4bd54ce0
--- /dev/null
+++ b/m4/golang.m4
@@ -0,0 +1,4 @@
+AC_DEFUN([AC_PROG_GO], [
+    dnl Check for the go compiler
+    AC_CHECK_TOOL([GO],[go],[no])
+])
diff --git a/tools/Rules.mk b/tools/Rules.mk
index 9bac15c8d1..5b8cf748ad 100644
--- a/tools/Rules.mk
+++ b/tools/Rules.mk
@@ -35,8 +35,6 @@ XENSTORE_XENSTORED ?= y
 debug ?= y
 debug_symbols ?= $(debug)
 
-# Set CONFIG_GOLANG=y in .config (or in make) to build golang
-CONFIG_GOLANG ?= n
 XEN_GOPATH        = $(XEN_ROOT)/tools/golang
 XEN_GOCODE_URL    = golang.xenproject.org
 
diff --git a/tools/configure b/tools/configure
index 4fa5f7b937..375430df3f 100755
--- a/tools/configure
+++ b/tools/configure
@@ -664,6 +664,7 @@ pyconfig
 PYTHONPATH
 CHECKPOLICY
 XENSTORED
+GO
 OCAMLFIND
 OCAMLBUILD
 OCAMLDOC
@@ -705,6 +706,7 @@ LD86
 AS86
 qemu_traditional
 LINUX_BACKEND_MODULES
+golang
 seabios
 ovmf
 xsmpolicy
@@ -807,6 +809,7 @@ enable_ocamltools
 enable_xsmpolicy
 enable_ovmf
 enable_seabios
+enable_golang
 with_linux_backend_modules
 enable_qemu_traditional
 enable_rombios
@@ -1493,6 +1496,7 @@ Optional Features:
   --disable-xsmpolicy     Disable XSM policy compilation (default is ENABLED)
   --enable-ovmf           Enable OVMF (default is DISABLED)
   --disable-seabios       Disable SeaBIOS (default is ENABLED)
+  --disable-golang        Disable Go tools (default is ENABLED)
   --enable-qemu-traditional
                           Enable qemu traditional device model, (DEFAULT is on
                           for Linux or NetBSD x86, otherwise off)
@@ -3873,6 +3877,8 @@ esac
 
 
 
+
+
 test "x$prefix" = "xNONE" && prefix=$ac_default_prefix
 test "x$exec_prefix" = "xNONE" && exec_prefix=${prefix}
 
@@ -4200,6 +4206,29 @@ seabios=$ax_cv_seabios
 
 
 
+# Check whether --enable-golang was given.
+if test "${enable_golang+set}" = set; then :
+  enableval=$enable_golang;
+fi
+
+
+if test "x$enable_golang" = "xno"; then :
+
+    ax_cv_golang="n"
+
+elif test "x$enable_golang" = "xyes"; then :
+
+    ax_cv_golang="y"
+
+elif test -z $ax_cv_golang; then :
+
+    ax_cv_golang="y"
+
+fi
+golang=$ax_cv_golang
+
+
+
 
 # Check whether --with-linux-backend-modules was given.
 if test "${with_linux_backend_modules+set}" = set; then :
@@ -6694,6 +6723,115 @@ fi
 
 fi
 
+if test "x$golang" = "xy"; then :
+
+
+        if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}go", so it can be a program name with args.
+set dummy ${ac_tool_prefix}go; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GO"; then
+  ac_cv_prog_GO="$GO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GO="${ac_tool_prefix}go"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GO=$ac_cv_prog_GO
+if test -n "$GO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GO" >&5
+$as_echo "$GO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_GO"; then
+  ac_ct_GO=$GO
+  # Extract the first word of "go", so it can be a program name with args.
+set dummy go; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GO"; then
+  ac_cv_prog_ac_ct_GO="$ac_ct_GO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GO="go"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GO=$ac_cv_prog_ac_ct_GO
+if test -n "$ac_ct_GO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GO" >&5
+$as_echo "$ac_ct_GO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_GO" = x; then
+    GO="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    GO=$ac_ct_GO
+  fi
+else
+  GO="$ac_cv_prog_GO"
+fi
+
+
+    if test "x$GO" = "xno"; then :
+
+        if test "x$enable_golang" =  "xyes"; then :
+
+            as_fn_error $? "Go tools enabled, but missing go compiler" "$LINENO" 5
+
+fi
+        golang="n"
+
+fi
+
+fi
+
 
 
 
diff --git a/tools/configure.ac b/tools/configure.ac
index ea0272766f..b6f8882be4 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -73,6 +73,7 @@ m4_include([../m4/fetcher.m4])
 m4_include([../m4/ax_compare_version.m4])
 m4_include([../m4/paths.m4])
 m4_include([../m4/systemd.m4])
+m4_include([../m4/golang.m4])
 
 AX_XEN_EXPAND_CONFIG()
 
@@ -84,6 +85,7 @@ AX_ARG_DEFAULT_ENABLE([ocamltools], [Disable Ocaml tools])
 AX_ARG_DEFAULT_ENABLE([xsmpolicy], [Disable XSM policy compilation])
 AX_ARG_DEFAULT_DISABLE([ovmf], [Enable OVMF])
 AX_ARG_DEFAULT_ENABLE([seabios], [Disable SeaBIOS])
+AX_ARG_DEFAULT_ENABLE([golang], [Disable Go tools])
 
 AC_ARG_WITH([linux-backend-modules],
     AS_HELP_STRING([--with-linux-backend-modules="mod1 mod2"],
@@ -320,6 +322,16 @@ AS_IF([test "x$ocamltools" = "xy"], [
     ])
 ])
 
+AS_IF([test "x$golang" = "xy"], [
+    AC_PROG_GO
+    AS_IF([test "x$GO" = "xno"], [
+        AS_IF([test "x$enable_golang" =  "xyes"], [
+            AC_MSG_ERROR([Go tools enabled, but missing go compiler])
+        ])
+        golang="n"
+    ])
+])
+
 m4_include([../m4/xenstored.m4])
 AX_XENSTORE_OPTIONS
 AX_XENSTORE_SET
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 13:33:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 13:33:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT3t0-0003CD-18; Mon, 27 Apr 2020 13:33:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT3sy-0003C5-Qk
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:33:24 +0000
X-Inumbo-ID: a861d156-888b-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a861d156-888b-11ea-9887-bc764e2007e4;
 Mon, 27 Apr 2020 13:33:19 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5Cmf9aIZ4XdjHDndSO5yO3Z1BCHfSrN9+Fu5idW4GMY=; b=jbxlHyu/vuzaIQ4Yqqc9XAWoDQ
 Bzu8tkt/9sphcBtjYFIBstcbOQftGPY5qC6Xtz/RMhEzHN/woEZfqFrKpjzncVeKFjMMZXnDagKYA
 pf01Dl1kV6SHw5Thyv75SWU3uBbj/iHOOS0OVtwKzIgAssmMahptt+AnNfibrZLHDMr4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3st-0007wH-EQ
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:33:19 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT3st-0005QO-D4
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 13:33:19 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] golang/xenlight: stop tracking generated files
Message-Id: <E1jT3st-0005QO-D4@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 13:33:19 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit df669de074c395a3b2eeb975fddd3da4c148da13
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Thu Apr 23 23:05:41 2020 -0400
Commit:     Wei Liu <wl@xen.org>
CommitDate: Mon Apr 27 14:25:07 2020 +0100

    golang/xenlight: stop tracking generated files
    
    The generated go files were tracked temporarily while the initial
    implementation of gengotypes.py was in progress. They can now be removed
    and ignored by git and hg.
    
    While here, make sure generated files are removed by make clean.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Acked-by: Wei Liu <wl@xen.org>
---
 .gitignore                           |    3 +
 .hgignore                            |    2 +
 tools/golang/xenlight/Makefile       |    1 +
 tools/golang/xenlight/helpers.gen.go | 4722 ----------------------------------
 tools/golang/xenlight/types.gen.go   | 1225 ---------
 5 files changed, 6 insertions(+), 5947 deletions(-)

diff --git a/.gitignore b/.gitignore
index bfa53723b3..9c8a31f896 100644
--- a/.gitignore
+++ b/.gitignore
@@ -406,6 +406,9 @@ tools/xenstore/xenstore-watch
 tools/xl/_paths.h
 tools/xl/xl
 
+tools/golang/src
+tools/golang/*/*.gen.go
+
 docs/txt/misc/*.txt
 docs/txt/man/*.txt
 docs/figs/*.png
diff --git a/.hgignore b/.hgignore
index 2d41670632..2ec52982e1 100644
--- a/.hgignore
+++ b/.hgignore
@@ -282,6 +282,8 @@
 ^tools/ocaml/test/xtl$
 ^tools/ocaml/test/send_debug_keys$
 ^tools/ocaml/test/list_domains$
+^tools/golang/src$
+^tools/golang/.*/.*\.gen\.go$
 ^tools/autom4te\.cache$
 ^tools/config\.h$
 ^tools/config\.log$
diff --git a/tools/golang/xenlight/Makefile b/tools/golang/xenlight/Makefile
index 753132306a..144c133ced 100644
--- a/tools/golang/xenlight/Makefile
+++ b/tools/golang/xenlight/Makefile
@@ -49,6 +49,7 @@ install: build
 clean:
 	$(RM) -r $(XEN_GOPATH)$(GOXL_PKG_DIR)
 	$(RM) $(XEN_GOPATH)/pkg/*/$(XEN_GOCODE_URL)/xenlight.a
+	$(RM) *.gen.go
 
 .PHONY: distclean
 distclean: clean
diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/helpers.gen.go
deleted file mode 100644
index 16e26d27f5..0000000000
--- a/tools/golang/xenlight/helpers.gen.go
+++ /dev/null
@@ -1,4722 +0,0 @@
-// DO NOT EDIT.
-//
-// This file is generated by:
-// gengotypes.py ../../libxl/libxl_types.idl
-//
-package xenlight
-
-import (
-	"errors"
-	"fmt"
-	"unsafe"
-)
-
-/*
-#cgo LDFLAGS: -lxenlight
-#include <stdlib.h>
-#include <libxl.h>
-
-typedef typeof(((struct libxl_channelinfo *)NULL)->u.pty)libxl_channelinfo_connection_union_pty;
-typedef typeof(((struct libxl_domain_build_info *)NULL)->u.hvm)libxl_domain_build_info_type_union_hvm;
-typedef typeof(((struct libxl_domain_build_info *)NULL)->u.pv)libxl_domain_build_info_type_union_pv;
-typedef typeof(((struct libxl_domain_build_info *)NULL)->u.pvh)libxl_domain_build_info_type_union_pvh;
-typedef typeof(((struct libxl_device_usbdev *)NULL)->u.hostdev)libxl_device_usbdev_type_union_hostdev;
-typedef typeof(((struct libxl_device_channel *)NULL)->u.socket)libxl_device_channel_connection_union_socket;
-typedef typeof(((struct libxl_event *)NULL)->u.domain_shutdown)libxl_event_type_union_domain_shutdown;
-typedef typeof(((struct libxl_event *)NULL)->u.disk_eject)libxl_event_type_union_disk_eject;
-typedef typeof(((struct libxl_event *)NULL)->u.operation_complete)libxl_event_type_union_operation_complete;
-typedef typeof(((struct libxl_psr_hw_info *)NULL)->u.cat)libxl_psr_hw_info_type_union_cat;
-typedef typeof(((struct libxl_psr_hw_info *)NULL)->u.mba)libxl_psr_hw_info_type_union_mba;
-*/
-import "C"
-
-// NewIoportRange returns an instance of IoportRange initialized with defaults.
-func NewIoportRange() (*IoportRange, error) {
-	var (
-		x  IoportRange
-		xc C.libxl_ioport_range
-	)
-
-	C.libxl_ioport_range_init(&xc)
-	defer C.libxl_ioport_range_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *IoportRange) fromC(xc *C.libxl_ioport_range) error {
-	x.First = uint32(xc.first)
-	x.Number = uint32(xc.number)
-
-	return nil
-}
-
-func (x *IoportRange) toC(xc *C.libxl_ioport_range) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_ioport_range_dispose(xc)
-		}
-	}()
-
-	xc.first = C.uint32_t(x.First)
-	xc.number = C.uint32_t(x.Number)
-
-	return nil
-}
-
-// NewIomemRange returns an instance of IomemRange initialized with defaults.
-func NewIomemRange() (*IomemRange, error) {
-	var (
-		x  IomemRange
-		xc C.libxl_iomem_range
-	)
-
-	C.libxl_iomem_range_init(&xc)
-	defer C.libxl_iomem_range_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *IomemRange) fromC(xc *C.libxl_iomem_range) error {
-	x.Start = uint64(xc.start)
-	x.Number = uint64(xc.number)
-	x.Gfn = uint64(xc.gfn)
-
-	return nil
-}
-
-func (x *IomemRange) toC(xc *C.libxl_iomem_range) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_iomem_range_dispose(xc)
-		}
-	}()
-
-	xc.start = C.uint64_t(x.Start)
-	xc.number = C.uint64_t(x.Number)
-	xc.gfn = C.uint64_t(x.Gfn)
-
-	return nil
-}
-
-// NewVgaInterfaceInfo returns an instance of VgaInterfaceInfo initialized with defaults.
-func NewVgaInterfaceInfo() (*VgaInterfaceInfo, error) {
-	var (
-		x  VgaInterfaceInfo
-		xc C.libxl_vga_interface_info
-	)
-
-	C.libxl_vga_interface_info_init(&xc)
-	defer C.libxl_vga_interface_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VgaInterfaceInfo) fromC(xc *C.libxl_vga_interface_info) error {
-	x.Kind = VgaInterfaceType(xc.kind)
-
-	return nil
-}
-
-func (x *VgaInterfaceInfo) toC(xc *C.libxl_vga_interface_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vga_interface_info_dispose(xc)
-		}
-	}()
-
-	xc.kind = C.libxl_vga_interface_type(x.Kind)
-
-	return nil
-}
-
-// NewVncInfo returns an instance of VncInfo initialized with defaults.
-func NewVncInfo() (*VncInfo, error) {
-	var (
-		x  VncInfo
-		xc C.libxl_vnc_info
-	)
-
-	C.libxl_vnc_info_init(&xc)
-	defer C.libxl_vnc_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VncInfo) fromC(xc *C.libxl_vnc_info) error {
-	if err := x.Enable.fromC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	x.Listen = C.GoString(xc.listen)
-	x.Passwd = C.GoString(xc.passwd)
-	x.Display = int(xc.display)
-	if err := x.Findunused.fromC(&xc.findunused); err != nil {
-		return fmt.Errorf("converting field Findunused: %v", err)
-	}
-
-	return nil
-}
-
-func (x *VncInfo) toC(xc *C.libxl_vnc_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vnc_info_dispose(xc)
-		}
-	}()
-
-	if err := x.Enable.toC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	if x.Listen != "" {
-		xc.listen = C.CString(x.Listen)
-	}
-	if x.Passwd != "" {
-		xc.passwd = C.CString(x.Passwd)
-	}
-	xc.display = C.int(x.Display)
-	if err := x.Findunused.toC(&xc.findunused); err != nil {
-		return fmt.Errorf("converting field Findunused: %v", err)
-	}
-
-	return nil
-}
-
-// NewSpiceInfo returns an instance of SpiceInfo initialized with defaults.
-func NewSpiceInfo() (*SpiceInfo, error) {
-	var (
-		x  SpiceInfo
-		xc C.libxl_spice_info
-	)
-
-	C.libxl_spice_info_init(&xc)
-	defer C.libxl_spice_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *SpiceInfo) fromC(xc *C.libxl_spice_info) error {
-	if err := x.Enable.fromC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	x.Port = int(xc.port)
-	x.TlsPort = int(xc.tls_port)
-	x.Host = C.GoString(xc.host)
-	if err := x.DisableTicketing.fromC(&xc.disable_ticketing); err != nil {
-		return fmt.Errorf("converting field DisableTicketing: %v", err)
-	}
-	x.Passwd = C.GoString(xc.passwd)
-	if err := x.AgentMouse.fromC(&xc.agent_mouse); err != nil {
-		return fmt.Errorf("converting field AgentMouse: %v", err)
-	}
-	if err := x.Vdagent.fromC(&xc.vdagent); err != nil {
-		return fmt.Errorf("converting field Vdagent: %v", err)
-	}
-	if err := x.ClipboardSharing.fromC(&xc.clipboard_sharing); err != nil {
-		return fmt.Errorf("converting field ClipboardSharing: %v", err)
-	}
-	x.Usbredirection = int(xc.usbredirection)
-	x.ImageCompression = C.GoString(xc.image_compression)
-	x.StreamingVideo = C.GoString(xc.streaming_video)
-
-	return nil
-}
-
-func (x *SpiceInfo) toC(xc *C.libxl_spice_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_spice_info_dispose(xc)
-		}
-	}()
-
-	if err := x.Enable.toC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	xc.port = C.int(x.Port)
-	xc.tls_port = C.int(x.TlsPort)
-	if x.Host != "" {
-		xc.host = C.CString(x.Host)
-	}
-	if err := x.DisableTicketing.toC(&xc.disable_ticketing); err != nil {
-		return fmt.Errorf("converting field DisableTicketing: %v", err)
-	}
-	if x.Passwd != "" {
-		xc.passwd = C.CString(x.Passwd)
-	}
-	if err := x.AgentMouse.toC(&xc.agent_mouse); err != nil {
-		return fmt.Errorf("converting field AgentMouse: %v", err)
-	}
-	if err := x.Vdagent.toC(&xc.vdagent); err != nil {
-		return fmt.Errorf("converting field Vdagent: %v", err)
-	}
-	if err := x.ClipboardSharing.toC(&xc.clipboard_sharing); err != nil {
-		return fmt.Errorf("converting field ClipboardSharing: %v", err)
-	}
-	xc.usbredirection = C.int(x.Usbredirection)
-	if x.ImageCompression != "" {
-		xc.image_compression = C.CString(x.ImageCompression)
-	}
-	if x.StreamingVideo != "" {
-		xc.streaming_video = C.CString(x.StreamingVideo)
-	}
-
-	return nil
-}
-
-// NewSdlInfo returns an instance of SdlInfo initialized with defaults.
-func NewSdlInfo() (*SdlInfo, error) {
-	var (
-		x  SdlInfo
-		xc C.libxl_sdl_info
-	)
-
-	C.libxl_sdl_info_init(&xc)
-	defer C.libxl_sdl_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *SdlInfo) fromC(xc *C.libxl_sdl_info) error {
-	if err := x.Enable.fromC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	if err := x.Opengl.fromC(&xc.opengl); err != nil {
-		return fmt.Errorf("converting field Opengl: %v", err)
-	}
-	x.Display = C.GoString(xc.display)
-	x.Xauthority = C.GoString(xc.xauthority)
-
-	return nil
-}
-
-func (x *SdlInfo) toC(xc *C.libxl_sdl_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_sdl_info_dispose(xc)
-		}
-	}()
-
-	if err := x.Enable.toC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	if err := x.Opengl.toC(&xc.opengl); err != nil {
-		return fmt.Errorf("converting field Opengl: %v", err)
-	}
-	if x.Display != "" {
-		xc.display = C.CString(x.Display)
-	}
-	if x.Xauthority != "" {
-		xc.xauthority = C.CString(x.Xauthority)
-	}
-
-	return nil
-}
-
-// NewDominfo returns an instance of Dominfo initialized with defaults.
-func NewDominfo() (*Dominfo, error) {
-	var (
-		x  Dominfo
-		xc C.libxl_dominfo
-	)
-
-	C.libxl_dominfo_init(&xc)
-	defer C.libxl_dominfo_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *Dominfo) fromC(xc *C.libxl_dominfo) error {
-	if err := x.Uuid.fromC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	x.Domid = Domid(xc.domid)
-	x.Ssidref = uint32(xc.ssidref)
-	x.SsidLabel = C.GoString(xc.ssid_label)
-	x.Running = bool(xc.running)
-	x.Blocked = bool(xc.blocked)
-	x.Paused = bool(xc.paused)
-	x.Shutdown = bool(xc.shutdown)
-	x.Dying = bool(xc.dying)
-	x.NeverStop = bool(xc.never_stop)
-	x.ShutdownReason = ShutdownReason(xc.shutdown_reason)
-	x.OutstandingMemkb = uint64(xc.outstanding_memkb)
-	x.CurrentMemkb = uint64(xc.current_memkb)
-	x.SharedMemkb = uint64(xc.shared_memkb)
-	x.PagedMemkb = uint64(xc.paged_memkb)
-	x.MaxMemkb = uint64(xc.max_memkb)
-	x.CpuTime = uint64(xc.cpu_time)
-	x.VcpuMaxId = uint32(xc.vcpu_max_id)
-	x.VcpuOnline = uint32(xc.vcpu_online)
-	x.Cpupool = uint32(xc.cpupool)
-	x.DomainType = DomainType(xc.domain_type)
-
-	return nil
-}
-
-func (x *Dominfo) toC(xc *C.libxl_dominfo) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_dominfo_dispose(xc)
-		}
-	}()
-
-	if err := x.Uuid.toC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	xc.domid = C.libxl_domid(x.Domid)
-	xc.ssidref = C.uint32_t(x.Ssidref)
-	if x.SsidLabel != "" {
-		xc.ssid_label = C.CString(x.SsidLabel)
-	}
-	xc.running = C.bool(x.Running)
-	xc.blocked = C.bool(x.Blocked)
-	xc.paused = C.bool(x.Paused)
-	xc.shutdown = C.bool(x.Shutdown)
-	xc.dying = C.bool(x.Dying)
-	xc.never_stop = C.bool(x.NeverStop)
-	xc.shutdown_reason = C.libxl_shutdown_reason(x.ShutdownReason)
-	xc.outstanding_memkb = C.uint64_t(x.OutstandingMemkb)
-	xc.current_memkb = C.uint64_t(x.CurrentMemkb)
-	xc.shared_memkb = C.uint64_t(x.SharedMemkb)
-	xc.paged_memkb = C.uint64_t(x.PagedMemkb)
-	xc.max_memkb = C.uint64_t(x.MaxMemkb)
-	xc.cpu_time = C.uint64_t(x.CpuTime)
-	xc.vcpu_max_id = C.uint32_t(x.VcpuMaxId)
-	xc.vcpu_online = C.uint32_t(x.VcpuOnline)
-	xc.cpupool = C.uint32_t(x.Cpupool)
-	xc.domain_type = C.libxl_domain_type(x.DomainType)
-
-	return nil
-}
-
-// NewCpupoolinfo returns an instance of Cpupoolinfo initialized with defaults.
-func NewCpupoolinfo() (*Cpupoolinfo, error) {
-	var (
-		x  Cpupoolinfo
-		xc C.libxl_cpupoolinfo
-	)
-
-	C.libxl_cpupoolinfo_init(&xc)
-	defer C.libxl_cpupoolinfo_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *Cpupoolinfo) fromC(xc *C.libxl_cpupoolinfo) error {
-	x.Poolid = uint32(xc.poolid)
-	x.PoolName = C.GoString(xc.pool_name)
-	x.Sched = Scheduler(xc.sched)
-	x.NDom = uint32(xc.n_dom)
-	if err := x.Cpumap.fromC(&xc.cpumap); err != nil {
-		return fmt.Errorf("converting field Cpumap: %v", err)
-	}
-
-	return nil
-}
-
-func (x *Cpupoolinfo) toC(xc *C.libxl_cpupoolinfo) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_cpupoolinfo_dispose(xc)
-		}
-	}()
-
-	xc.poolid = C.uint32_t(x.Poolid)
-	if x.PoolName != "" {
-		xc.pool_name = C.CString(x.PoolName)
-	}
-	xc.sched = C.libxl_scheduler(x.Sched)
-	xc.n_dom = C.uint32_t(x.NDom)
-	if err := x.Cpumap.toC(&xc.cpumap); err != nil {
-		return fmt.Errorf("converting field Cpumap: %v", err)
-	}
-
-	return nil
-}
-
-// NewChannelinfo returns an instance of Channelinfo initialized with defaults.
-func NewChannelinfo(connection ChannelConnection) (*Channelinfo, error) {
-	var (
-		x  Channelinfo
-		xc C.libxl_channelinfo
-	)
-
-	C.libxl_channelinfo_init(&xc)
-	C.libxl_channelinfo_init_connection(&xc, C.libxl_channel_connection(connection))
-	defer C.libxl_channelinfo_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *Channelinfo) fromC(xc *C.libxl_channelinfo) error {
-	x.Backend = C.GoString(xc.backend)
-	x.BackendId = uint32(xc.backend_id)
-	x.Frontend = C.GoString(xc.frontend)
-	x.FrontendId = uint32(xc.frontend_id)
-	x.Devid = Devid(xc.devid)
-	x.State = int(xc.state)
-	x.Evtch = int(xc.evtch)
-	x.Rref = int(xc.rref)
-	x.Connection = ChannelConnection(xc.connection)
-	switch x.Connection {
-	case ChannelConnectionUnknown:
-		x.ConnectionUnion = nil
-	case ChannelConnectionPty:
-		var connectionPty ChannelinfoConnectionUnionPty
-		if err := connectionPty.fromC(xc); err != nil {
-			return fmt.Errorf("converting field connectionPty: %v", err)
-		}
-		x.ConnectionUnion = connectionPty
-	case ChannelConnectionSocket:
-		x.ConnectionUnion = nil
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Connection)
-	}
-
-	return nil
-}
-
-func (x *ChannelinfoConnectionUnionPty) fromC(xc *C.libxl_channelinfo) error {
-	if ChannelConnection(xc.connection) != ChannelConnectionPty {
-		return errors.New("expected union key ChannelConnectionPty")
-	}
-
-	tmp := (*C.libxl_channelinfo_connection_union_pty)(unsafe.Pointer(&xc.u[0]))
-	x.Path = C.GoString(tmp.path)
-	return nil
-}
-
-func (x *Channelinfo) toC(xc *C.libxl_channelinfo) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_channelinfo_dispose(xc)
-		}
-	}()
-
-	if x.Backend != "" {
-		xc.backend = C.CString(x.Backend)
-	}
-	xc.backend_id = C.uint32_t(x.BackendId)
-	if x.Frontend != "" {
-		xc.frontend = C.CString(x.Frontend)
-	}
-	xc.frontend_id = C.uint32_t(x.FrontendId)
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.state = C.int(x.State)
-	xc.evtch = C.int(x.Evtch)
-	xc.rref = C.int(x.Rref)
-	xc.connection = C.libxl_channel_connection(x.Connection)
-	switch x.Connection {
-	case ChannelConnectionUnknown:
-		break
-	case ChannelConnectionPty:
-		tmp, ok := x.ConnectionUnion.(ChannelinfoConnectionUnionPty)
-		if !ok {
-			return errors.New("wrong type for union key connection")
-		}
-		var pty C.libxl_channelinfo_connection_union_pty
-		if tmp.Path != "" {
-			pty.path = C.CString(tmp.Path)
-		}
-		ptyBytes := C.GoBytes(unsafe.Pointer(&pty), C.sizeof_libxl_channelinfo_connection_union_pty)
-		copy(xc.u[:], ptyBytes)
-	case ChannelConnectionSocket:
-		break
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Connection)
-	}
-
-	return nil
-}
-
-// NewVminfo returns an instance of Vminfo initialized with defaults.
-func NewVminfo() (*Vminfo, error) {
-	var (
-		x  Vminfo
-		xc C.libxl_vminfo
-	)
-
-	C.libxl_vminfo_init(&xc)
-	defer C.libxl_vminfo_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *Vminfo) fromC(xc *C.libxl_vminfo) error {
-	if err := x.Uuid.fromC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	x.Domid = Domid(xc.domid)
-
-	return nil
-}
-
-func (x *Vminfo) toC(xc *C.libxl_vminfo) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vminfo_dispose(xc)
-		}
-	}()
-
-	if err := x.Uuid.toC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	xc.domid = C.libxl_domid(x.Domid)
-
-	return nil
-}
-
-// NewVersionInfo returns an instance of VersionInfo initialized with defaults.
-func NewVersionInfo() (*VersionInfo, error) {
-	var (
-		x  VersionInfo
-		xc C.libxl_version_info
-	)
-
-	C.libxl_version_info_init(&xc)
-	defer C.libxl_version_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VersionInfo) fromC(xc *C.libxl_version_info) error {
-	x.XenVersionMajor = int(xc.xen_version_major)
-	x.XenVersionMinor = int(xc.xen_version_minor)
-	x.XenVersionExtra = C.GoString(xc.xen_version_extra)
-	x.Compiler = C.GoString(xc.compiler)
-	x.CompileBy = C.GoString(xc.compile_by)
-	x.CompileDomain = C.GoString(xc.compile_domain)
-	x.CompileDate = C.GoString(xc.compile_date)
-	x.Capabilities = C.GoString(xc.capabilities)
-	x.Changeset = C.GoString(xc.changeset)
-	x.VirtStart = uint64(xc.virt_start)
-	x.Pagesize = int(xc.pagesize)
-	x.Commandline = C.GoString(xc.commandline)
-	x.BuildId = C.GoString(xc.build_id)
-
-	return nil
-}
-
-func (x *VersionInfo) toC(xc *C.libxl_version_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_version_info_dispose(xc)
-		}
-	}()
-
-	xc.xen_version_major = C.int(x.XenVersionMajor)
-	xc.xen_version_minor = C.int(x.XenVersionMinor)
-	if x.XenVersionExtra != "" {
-		xc.xen_version_extra = C.CString(x.XenVersionExtra)
-	}
-	if x.Compiler != "" {
-		xc.compiler = C.CString(x.Compiler)
-	}
-	if x.CompileBy != "" {
-		xc.compile_by = C.CString(x.CompileBy)
-	}
-	if x.CompileDomain != "" {
-		xc.compile_domain = C.CString(x.CompileDomain)
-	}
-	if x.CompileDate != "" {
-		xc.compile_date = C.CString(x.CompileDate)
-	}
-	if x.Capabilities != "" {
-		xc.capabilities = C.CString(x.Capabilities)
-	}
-	if x.Changeset != "" {
-		xc.changeset = C.CString(x.Changeset)
-	}
-	xc.virt_start = C.uint64_t(x.VirtStart)
-	xc.pagesize = C.int(x.Pagesize)
-	if x.Commandline != "" {
-		xc.commandline = C.CString(x.Commandline)
-	}
-	if x.BuildId != "" {
-		xc.build_id = C.CString(x.BuildId)
-	}
-
-	return nil
-}
-
-// NewDomainCreateInfo returns an instance of DomainCreateInfo initialized with defaults.
-func NewDomainCreateInfo() (*DomainCreateInfo, error) {
-	var (
-		x  DomainCreateInfo
-		xc C.libxl_domain_create_info
-	)
-
-	C.libxl_domain_create_info_init(&xc)
-	defer C.libxl_domain_create_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DomainCreateInfo) fromC(xc *C.libxl_domain_create_info) error {
-	x.Type = DomainType(xc._type)
-	if err := x.Hap.fromC(&xc.hap); err != nil {
-		return fmt.Errorf("converting field Hap: %v", err)
-	}
-	if err := x.Oos.fromC(&xc.oos); err != nil {
-		return fmt.Errorf("converting field Oos: %v", err)
-	}
-	x.Ssidref = uint32(xc.ssidref)
-	x.SsidLabel = C.GoString(xc.ssid_label)
-	x.Name = C.GoString(xc.name)
-	x.Domid = Domid(xc.domid)
-	if err := x.Uuid.fromC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	if err := x.Xsdata.fromC(&xc.xsdata); err != nil {
-		return fmt.Errorf("converting field Xsdata: %v", err)
-	}
-	if err := x.Platformdata.fromC(&xc.platformdata); err != nil {
-		return fmt.Errorf("converting field Platformdata: %v", err)
-	}
-	x.Poolid = uint32(xc.poolid)
-	x.PoolName = C.GoString(xc.pool_name)
-	if err := x.RunHotplugScripts.fromC(&xc.run_hotplug_scripts); err != nil {
-		return fmt.Errorf("converting field RunHotplugScripts: %v", err)
-	}
-	if err := x.DriverDomain.fromC(&xc.driver_domain); err != nil {
-		return fmt.Errorf("converting field DriverDomain: %v", err)
-	}
-	x.Passthrough = Passthrough(xc.passthrough)
-
-	return nil
-}
-
-func (x *DomainCreateInfo) toC(xc *C.libxl_domain_create_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_domain_create_info_dispose(xc)
-		}
-	}()
-
-	xc._type = C.libxl_domain_type(x.Type)
-	if err := x.Hap.toC(&xc.hap); err != nil {
-		return fmt.Errorf("converting field Hap: %v", err)
-	}
-	if err := x.Oos.toC(&xc.oos); err != nil {
-		return fmt.Errorf("converting field Oos: %v", err)
-	}
-	xc.ssidref = C.uint32_t(x.Ssidref)
-	if x.SsidLabel != "" {
-		xc.ssid_label = C.CString(x.SsidLabel)
-	}
-	if x.Name != "" {
-		xc.name = C.CString(x.Name)
-	}
-	xc.domid = C.libxl_domid(x.Domid)
-	if err := x.Uuid.toC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	if err := x.Xsdata.toC(&xc.xsdata); err != nil {
-		return fmt.Errorf("converting field Xsdata: %v", err)
-	}
-	if err := x.Platformdata.toC(&xc.platformdata); err != nil {
-		return fmt.Errorf("converting field Platformdata: %v", err)
-	}
-	xc.poolid = C.uint32_t(x.Poolid)
-	if x.PoolName != "" {
-		xc.pool_name = C.CString(x.PoolName)
-	}
-	if err := x.RunHotplugScripts.toC(&xc.run_hotplug_scripts); err != nil {
-		return fmt.Errorf("converting field RunHotplugScripts: %v", err)
-	}
-	if err := x.DriverDomain.toC(&xc.driver_domain); err != nil {
-		return fmt.Errorf("converting field DriverDomain: %v", err)
-	}
-	xc.passthrough = C.libxl_passthrough(x.Passthrough)
-
-	return nil
-}
-
-// NewDomainRestoreParams returns an instance of DomainRestoreParams initialized with defaults.
-func NewDomainRestoreParams() (*DomainRestoreParams, error) {
-	var (
-		x  DomainRestoreParams
-		xc C.libxl_domain_restore_params
-	)
-
-	C.libxl_domain_restore_params_init(&xc)
-	defer C.libxl_domain_restore_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DomainRestoreParams) fromC(xc *C.libxl_domain_restore_params) error {
-	x.CheckpointedStream = int(xc.checkpointed_stream)
-	x.StreamVersion = uint32(xc.stream_version)
-	x.ColoProxyScript = C.GoString(xc.colo_proxy_script)
-	if err := x.UserspaceColoProxy.fromC(&xc.userspace_colo_proxy); err != nil {
-		return fmt.Errorf("converting field UserspaceColoProxy: %v", err)
-	}
-
-	return nil
-}
-
-func (x *DomainRestoreParams) toC(xc *C.libxl_domain_restore_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_domain_restore_params_dispose(xc)
-		}
-	}()
-
-	xc.checkpointed_stream = C.int(x.CheckpointedStream)
-	xc.stream_version = C.uint32_t(x.StreamVersion)
-	if x.ColoProxyScript != "" {
-		xc.colo_proxy_script = C.CString(x.ColoProxyScript)
-	}
-	if err := x.UserspaceColoProxy.toC(&xc.userspace_colo_proxy); err != nil {
-		return fmt.Errorf("converting field UserspaceColoProxy: %v", err)
-	}
-
-	return nil
-}
-
-// NewSchedParams returns an instance of SchedParams initialized with defaults.
-func NewSchedParams() (*SchedParams, error) {
-	var (
-		x  SchedParams
-		xc C.libxl_sched_params
-	)
-
-	C.libxl_sched_params_init(&xc)
-	defer C.libxl_sched_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *SchedParams) fromC(xc *C.libxl_sched_params) error {
-	x.Vcpuid = int(xc.vcpuid)
-	x.Weight = int(xc.weight)
-	x.Cap = int(xc.cap)
-	x.Period = int(xc.period)
-	x.Extratime = int(xc.extratime)
-	x.Budget = int(xc.budget)
-
-	return nil
-}
-
-func (x *SchedParams) toC(xc *C.libxl_sched_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_sched_params_dispose(xc)
-		}
-	}()
-
-	xc.vcpuid = C.int(x.Vcpuid)
-	xc.weight = C.int(x.Weight)
-	xc.cap = C.int(x.Cap)
-	xc.period = C.int(x.Period)
-	xc.extratime = C.int(x.Extratime)
-	xc.budget = C.int(x.Budget)
-
-	return nil
-}
-
-// NewVcpuSchedParams returns an instance of VcpuSchedParams initialized with defaults.
-func NewVcpuSchedParams() (*VcpuSchedParams, error) {
-	var (
-		x  VcpuSchedParams
-		xc C.libxl_vcpu_sched_params
-	)
-
-	C.libxl_vcpu_sched_params_init(&xc)
-	defer C.libxl_vcpu_sched_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VcpuSchedParams) fromC(xc *C.libxl_vcpu_sched_params) error {
-	x.Sched = Scheduler(xc.sched)
-	x.Vcpus = nil
-	if n := int(xc.num_vcpus); n > 0 {
-		cVcpus := (*[1 << 28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:n:n]
-		x.Vcpus = make([]SchedParams, n)
-		for i, v := range cVcpus {
-			if err := x.Vcpus[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field Vcpus: %v", err)
-			}
-		}
-	}
-
-	return nil
-}
-
-func (x *VcpuSchedParams) toC(xc *C.libxl_vcpu_sched_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vcpu_sched_params_dispose(xc)
-		}
-	}()
-
-	xc.sched = C.libxl_scheduler(x.Sched)
-	if numVcpus := len(x.Vcpus); numVcpus > 0 {
-		xc.vcpus = (*C.libxl_sched_params)(C.malloc(C.ulong(numVcpus) * C.sizeof_libxl_sched_params))
-		xc.num_vcpus = C.int(numVcpus)
-		cVcpus := (*[1 << 28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:numVcpus:numVcpus]
-		for i, v := range x.Vcpus {
-			if err := v.toC(&cVcpus[i]); err != nil {
-				return fmt.Errorf("converting field Vcpus: %v", err)
-			}
-		}
-	}
-
-	return nil
-}
-
-// NewDomainSchedParams returns an instance of DomainSchedParams initialized with defaults.
-func NewDomainSchedParams() (*DomainSchedParams, error) {
-	var (
-		x  DomainSchedParams
-		xc C.libxl_domain_sched_params
-	)
-
-	C.libxl_domain_sched_params_init(&xc)
-	defer C.libxl_domain_sched_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DomainSchedParams) fromC(xc *C.libxl_domain_sched_params) error {
-	x.Sched = Scheduler(xc.sched)
-	x.Weight = int(xc.weight)
-	x.Cap = int(xc.cap)
-	x.Period = int(xc.period)
-	x.Budget = int(xc.budget)
-	x.Extratime = int(xc.extratime)
-	x.Slice = int(xc.slice)
-	x.Latency = int(xc.latency)
-
-	return nil
-}
-
-func (x *DomainSchedParams) toC(xc *C.libxl_domain_sched_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_domain_sched_params_dispose(xc)
-		}
-	}()
-
-	xc.sched = C.libxl_scheduler(x.Sched)
-	xc.weight = C.int(x.Weight)
-	xc.cap = C.int(x.Cap)
-	xc.period = C.int(x.Period)
-	xc.budget = C.int(x.Budget)
-	xc.extratime = C.int(x.Extratime)
-	xc.slice = C.int(x.Slice)
-	xc.latency = C.int(x.Latency)
-
-	return nil
-}
-
-// NewVnodeInfo returns an instance of VnodeInfo initialized with defaults.
-func NewVnodeInfo() (*VnodeInfo, error) {
-	var (
-		x  VnodeInfo
-		xc C.libxl_vnode_info
-	)
-
-	C.libxl_vnode_info_init(&xc)
-	defer C.libxl_vnode_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VnodeInfo) fromC(xc *C.libxl_vnode_info) error {
-	x.Memkb = uint64(xc.memkb)
-	x.Distances = nil
-	if n := int(xc.num_distances); n > 0 {
-		cDistances := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.distances))[:n:n]
-		x.Distances = make([]uint32, n)
-		for i, v := range cDistances {
-			x.Distances[i] = uint32(v)
-		}
-	}
-	x.Pnode = uint32(xc.pnode)
-	if err := x.Vcpus.fromC(&xc.vcpus); err != nil {
-		return fmt.Errorf("converting field Vcpus: %v", err)
-	}
-
-	return nil
-}
-
-func (x *VnodeInfo) toC(xc *C.libxl_vnode_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vnode_info_dispose(xc)
-		}
-	}()
-
-	xc.memkb = C.uint64_t(x.Memkb)
-	if numDistances := len(x.Distances); numDistances > 0 {
-		xc.distances = (*C.uint32_t)(C.malloc(C.size_t(numDistances * numDistances)))
-		xc.num_distances = C.int(numDistances)
-		cDistances := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.distances))[:numDistances:numDistances]
-		for i, v := range x.Distances {
-			cDistances[i] = C.uint32_t(v)
-		}
-	}
-	xc.pnode = C.uint32_t(x.Pnode)
-	if err := x.Vcpus.toC(&xc.vcpus); err != nil {
-		return fmt.Errorf("converting field Vcpus: %v", err)
-	}
-
-	return nil
-}
-
-// NewRdmReserve returns an instance of RdmReserve initialized with defaults.
-func NewRdmReserve() (*RdmReserve, error) {
-	var (
-		x  RdmReserve
-		xc C.libxl_rdm_reserve
-	)
-
-	C.libxl_rdm_reserve_init(&xc)
-	defer C.libxl_rdm_reserve_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *RdmReserve) fromC(xc *C.libxl_rdm_reserve) error {
-	x.Strategy = RdmReserveStrategy(xc.strategy)
-	x.Policy = RdmReservePolicy(xc.policy)
-
-	return nil
-}
-
-func (x *RdmReserve) toC(xc *C.libxl_rdm_reserve) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_rdm_reserve_dispose(xc)
-		}
-	}()
-
-	xc.strategy = C.libxl_rdm_reserve_strategy(x.Strategy)
-	xc.policy = C.libxl_rdm_reserve_policy(x.Policy)
-
-	return nil
-}
-
-// NewDomainBuildInfo returns an instance of DomainBuildInfo initialized with defaults.
-func NewDomainBuildInfo(dtype DomainType) (*DomainBuildInfo, error) {
-	var (
-		x  DomainBuildInfo
-		xc C.libxl_domain_build_info
-	)
-
-	C.libxl_domain_build_info_init(&xc)
-	C.libxl_domain_build_info_init_type(&xc, C.libxl_domain_type(dtype))
-	defer C.libxl_domain_build_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
-	x.MaxVcpus = int(xc.max_vcpus)
-	if err := x.AvailVcpus.fromC(&xc.avail_vcpus); err != nil {
-		return fmt.Errorf("converting field AvailVcpus: %v", err)
-	}
-	if err := x.Cpumap.fromC(&xc.cpumap); err != nil {
-		return fmt.Errorf("converting field Cpumap: %v", err)
-	}
-	if err := x.Nodemap.fromC(&xc.nodemap); err != nil {
-		return fmt.Errorf("converting field Nodemap: %v", err)
-	}
-	x.VcpuHardAffinity = nil
-	if n := int(xc.num_vcpu_hard_affinity); n > 0 {
-		cVcpuHardAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:n:n]
-		x.VcpuHardAffinity = make([]Bitmap, n)
-		for i, v := range cVcpuHardAffinity {
-			if err := x.VcpuHardAffinity[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
-			}
-		}
-	}
-	x.VcpuSoftAffinity = nil
-	if n := int(xc.num_vcpu_soft_affinity); n > 0 {
-		cVcpuSoftAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:n:n]
-		x.VcpuSoftAffinity = make([]Bitmap, n)
-		for i, v := range cVcpuSoftAffinity {
-			if err := x.VcpuSoftAffinity[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
-			}
-		}
-	}
-	if err := x.NumaPlacement.fromC(&xc.numa_placement); err != nil {
-		return fmt.Errorf("converting field NumaPlacement: %v", err)
-	}
-	x.TscMode = TscMode(xc.tsc_mode)
-	x.MaxMemkb = uint64(xc.max_memkb)
-	x.TargetMemkb = uint64(xc.target_memkb)
-	x.VideoMemkb = uint64(xc.video_memkb)
-	x.ShadowMemkb = uint64(xc.shadow_memkb)
-	x.IommuMemkb = uint64(xc.iommu_memkb)
-	x.RtcTimeoffset = uint32(xc.rtc_timeoffset)
-	x.ExecSsidref = uint32(xc.exec_ssidref)
-	x.ExecSsidLabel = C.GoString(xc.exec_ssid_label)
-	if err := x.Localtime.fromC(&xc.localtime); err != nil {
-		return fmt.Errorf("converting field Localtime: %v", err)
-	}
-	if err := x.DisableMigrate.fromC(&xc.disable_migrate); err != nil {
-		return fmt.Errorf("converting field DisableMigrate: %v", err)
-	}
-	if err := x.Cpuid.fromC(&xc.cpuid); err != nil {
-		return fmt.Errorf("converting field Cpuid: %v", err)
-	}
-	x.BlkdevStart = C.GoString(xc.blkdev_start)
-	x.VnumaNodes = nil
-	if n := int(xc.num_vnuma_nodes); n > 0 {
-		cVnumaNodes := (*[1 << 28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:n:n]
-		x.VnumaNodes = make([]VnodeInfo, n)
-		for i, v := range cVnumaNodes {
-			if err := x.VnumaNodes[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field VnumaNodes: %v", err)
-			}
-		}
-	}
-	x.MaxGrantFrames = uint32(xc.max_grant_frames)
-	x.MaxMaptrackFrames = uint32(xc.max_maptrack_frames)
-	x.DeviceModelVersion = DeviceModelVersion(xc.device_model_version)
-	if err := x.DeviceModelStubdomain.fromC(&xc.device_model_stubdomain); err != nil {
-		return fmt.Errorf("converting field DeviceModelStubdomain: %v", err)
-	}
-	x.DeviceModel = C.GoString(xc.device_model)
-	x.DeviceModelSsidref = uint32(xc.device_model_ssidref)
-	x.DeviceModelSsidLabel = C.GoString(xc.device_model_ssid_label)
-	x.DeviceModelUser = C.GoString(xc.device_model_user)
-	if err := x.Extra.fromC(&xc.extra); err != nil {
-		return fmt.Errorf("converting field Extra: %v", err)
-	}
-	if err := x.ExtraPv.fromC(&xc.extra_pv); err != nil {
-		return fmt.Errorf("converting field ExtraPv: %v", err)
-	}
-	if err := x.ExtraHvm.fromC(&xc.extra_hvm); err != nil {
-		return fmt.Errorf("converting field ExtraHvm: %v", err)
-	}
-	if err := x.SchedParams.fromC(&xc.sched_params); err != nil {
-		return fmt.Errorf("converting field SchedParams: %v", err)
-	}
-	x.Ioports = nil
-	if n := int(xc.num_ioports); n > 0 {
-		cIoports := (*[1 << 28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:n:n]
-		x.Ioports = make([]IoportRange, n)
-		for i, v := range cIoports {
-			if err := x.Ioports[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field Ioports: %v", err)
-			}
-		}
-	}
-	x.Irqs = nil
-	if n := int(xc.num_irqs); n > 0 {
-		cIrqs := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:n:n]
-		x.Irqs = make([]uint32, n)
-		for i, v := range cIrqs {
-			x.Irqs[i] = uint32(v)
-		}
-	}
-	x.Iomem = nil
-	if n := int(xc.num_iomem); n > 0 {
-		cIomem := (*[1 << 28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:n:n]
-		x.Iomem = make([]IomemRange, n)
-		for i, v := range cIomem {
-			if err := x.Iomem[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field Iomem: %v", err)
-			}
-		}
-	}
-	if err := x.ClaimMode.fromC(&xc.claim_mode); err != nil {
-		return fmt.Errorf("converting field ClaimMode: %v", err)
-	}
-	x.EventChannels = uint32(xc.event_channels)
-	x.Kernel = C.GoString(xc.kernel)
-	x.Cmdline = C.GoString(xc.cmdline)
-	x.Ramdisk = C.GoString(xc.ramdisk)
-	x.DeviceTree = C.GoString(xc.device_tree)
-	if err := x.Acpi.fromC(&xc.acpi); err != nil {
-		return fmt.Errorf("converting field Acpi: %v", err)
-	}
-	x.Bootloader = C.GoString(xc.bootloader)
-	if err := x.BootloaderArgs.fromC(&xc.bootloader_args); err != nil {
-		return fmt.Errorf("converting field BootloaderArgs: %v", err)
-	}
-	x.TimerMode = TimerMode(xc.timer_mode)
-	if err := x.NestedHvm.fromC(&xc.nested_hvm); err != nil {
-		return fmt.Errorf("converting field NestedHvm: %v", err)
-	}
-	if err := x.Apic.fromC(&xc.apic); err != nil {
-		return fmt.Errorf("converting field Apic: %v", err)
-	}
-	if err := x.DmRestrict.fromC(&xc.dm_restrict); err != nil {
-		return fmt.Errorf("converting field DmRestrict: %v", err)
-	}
-	x.Tee = TeeType(xc.tee)
-	x.Type = DomainType(xc._type)
-	switch x.Type {
-	case DomainTypeHvm:
-		var typeHvm DomainBuildInfoTypeUnionHvm
-		if err := typeHvm.fromC(xc); err != nil {
-			return fmt.Errorf("converting field typeHvm: %v", err)
-		}
-		x.TypeUnion = typeHvm
-	case DomainTypePv:
-		var typePv DomainBuildInfoTypeUnionPv
-		if err := typePv.fromC(xc); err != nil {
-			return fmt.Errorf("converting field typePv: %v", err)
-		}
-		x.TypeUnion = typePv
-	case DomainTypePvh:
-		var typePvh DomainBuildInfoTypeUnionPvh
-		if err := typePvh.fromC(xc); err != nil {
-			return fmt.Errorf("converting field typePvh: %v", err)
-		}
-		x.TypeUnion = typePvh
-	case DomainTypeInvalid:
-		x.TypeUnion = nil
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Type)
-	}
-	x.ArchArm.GicVersion = GicVersion(xc.arch_arm.gic_version)
-	x.ArchArm.Vuart = VuartType(xc.arch_arm.vuart)
-	x.Altp2M = Altp2MMode(xc.altp2m)
-
-	return nil
-}
-
-func (x *DomainBuildInfoTypeUnionHvm) fromC(xc *C.libxl_domain_build_info) error {
-	if DomainType(xc._type) != DomainTypeHvm {
-		return errors.New("expected union key DomainTypeHvm")
-	}
-
-	tmp := (*C.libxl_domain_build_info_type_union_hvm)(unsafe.Pointer(&xc.u[0]))
-	x.Firmware = C.GoString(tmp.firmware)
-	x.Bios = BiosType(tmp.bios)
-	if err := x.Pae.fromC(&tmp.pae); err != nil {
-		return fmt.Errorf("converting field Pae: %v", err)
-	}
-	if err := x.Apic.fromC(&tmp.apic); err != nil {
-		return fmt.Errorf("converting field Apic: %v", err)
-	}
-	if err := x.Acpi.fromC(&tmp.acpi); err != nil {
-		return fmt.Errorf("converting field Acpi: %v", err)
-	}
-	if err := x.AcpiS3.fromC(&tmp.acpi_s3); err != nil {
-		return fmt.Errorf("converting field AcpiS3: %v", err)
-	}
-	if err := x.AcpiS4.fromC(&tmp.acpi_s4); err != nil {
-		return fmt.Errorf("converting field AcpiS4: %v", err)
-	}
-	if err := x.AcpiLaptopSlate.fromC(&tmp.acpi_laptop_slate); err != nil {
-		return fmt.Errorf("converting field AcpiLaptopSlate: %v", err)
-	}
-	if err := x.Nx.fromC(&tmp.nx); err != nil {
-		return fmt.Errorf("converting field Nx: %v", err)
-	}
-	if err := x.Viridian.fromC(&tmp.viridian); err != nil {
-		return fmt.Errorf("converting field Viridian: %v", err)
-	}
-	if err := x.ViridianEnable.fromC(&tmp.viridian_enable); err != nil {
-		return fmt.Errorf("converting field ViridianEnable: %v", err)
-	}
-	if err := x.ViridianDisable.fromC(&tmp.viridian_disable); err != nil {
-		return fmt.Errorf("converting field ViridianDisable: %v", err)
-	}
-	x.Timeoffset = C.GoString(tmp.timeoffset)
-	if err := x.Hpet.fromC(&tmp.hpet); err != nil {
-		return fmt.Errorf("converting field Hpet: %v", err)
-	}
-	if err := x.VptAlign.fromC(&tmp.vpt_align); err != nil {
-		return fmt.Errorf("converting field VptAlign: %v", err)
-	}
-	x.MmioHoleMemkb = uint64(tmp.mmio_hole_memkb)
-	x.TimerMode = TimerMode(tmp.timer_mode)
-	if err := x.NestedHvm.fromC(&tmp.nested_hvm); err != nil {
-		return fmt.Errorf("converting field NestedHvm: %v", err)
-	}
-	if err := x.Altp2M.fromC(&tmp.altp2m); err != nil {
-		return fmt.Errorf("converting field Altp2M: %v", err)
-	}
-	x.SystemFirmware = C.GoString(tmp.system_firmware)
-	x.SmbiosFirmware = C.GoString(tmp.smbios_firmware)
-	x.AcpiFirmware = C.GoString(tmp.acpi_firmware)
-	x.Hdtype = Hdtype(tmp.hdtype)
-	if err := x.Nographic.fromC(&tmp.nographic); err != nil {
-		return fmt.Errorf("converting field Nographic: %v", err)
-	}
-	if err := x.Vga.fromC(&tmp.vga); err != nil {
-		return fmt.Errorf("converting field Vga: %v", err)
-	}
-	if err := x.Vnc.fromC(&tmp.vnc); err != nil {
-		return fmt.Errorf("converting field Vnc: %v", err)
-	}
-	x.Keymap = C.GoString(tmp.keymap)
-	if err := x.Sdl.fromC(&tmp.sdl); err != nil {
-		return fmt.Errorf("converting field Sdl: %v", err)
-	}
-	if err := x.Spice.fromC(&tmp.spice); err != nil {
-		return fmt.Errorf("converting field Spice: %v", err)
-	}
-	if err := x.GfxPassthru.fromC(&tmp.gfx_passthru); err != nil {
-		return fmt.Errorf("converting field GfxPassthru: %v", err)
-	}
-	x.GfxPassthruKind = GfxPassthruKind(tmp.gfx_passthru_kind)
-	x.Serial = C.GoString(tmp.serial)
-	x.Boot = C.GoString(tmp.boot)
-	if err := x.Usb.fromC(&tmp.usb); err != nil {
-		return fmt.Errorf("converting field Usb: %v", err)
-	}
-	x.Usbversion = int(tmp.usbversion)
-	x.Usbdevice = C.GoString(tmp.usbdevice)
-	if err := x.VkbDevice.fromC(&tmp.vkb_device); err != nil {
-		return fmt.Errorf("converting field VkbDevice: %v", err)
-	}
-	x.Soundhw = C.GoString(tmp.soundhw)
-	if err := x.XenPlatformPci.fromC(&tmp.xen_platform_pci); err != nil {
-		return fmt.Errorf("converting field XenPlatformPci: %v", err)
-	}
-	if err := x.UsbdeviceList.fromC(&tmp.usbdevice_list); err != nil {
-		return fmt.Errorf("converting field UsbdeviceList: %v", err)
-	}
-	x.VendorDevice = VendorDevice(tmp.vendor_device)
-	if err := x.MsVmGenid.fromC(&tmp.ms_vm_genid); err != nil {
-		return fmt.Errorf("converting field MsVmGenid: %v", err)
-	}
-	if err := x.SerialList.fromC(&tmp.serial_list); err != nil {
-		return fmt.Errorf("converting field SerialList: %v", err)
-	}
-	if err := x.Rdm.fromC(&tmp.rdm); err != nil {
-		return fmt.Errorf("converting field Rdm: %v", err)
-	}
-	x.RdmMemBoundaryMemkb = uint64(tmp.rdm_mem_boundary_memkb)
-	x.McaCaps = uint64(tmp.mca_caps)
-	return nil
-}
-
-func (x *DomainBuildInfoTypeUnionPv) fromC(xc *C.libxl_domain_build_info) error {
-	if DomainType(xc._type) != DomainTypePv {
-		return errors.New("expected union key DomainTypePv")
-	}
-
-	tmp := (*C.libxl_domain_build_info_type_union_pv)(unsafe.Pointer(&xc.u[0]))
-	x.Kernel = C.GoString(tmp.kernel)
-	x.SlackMemkb = uint64(tmp.slack_memkb)
-	x.Bootloader = C.GoString(tmp.bootloader)
-	if err := x.BootloaderArgs.fromC(&tmp.bootloader_args); err != nil {
-		return fmt.Errorf("converting field BootloaderArgs: %v", err)
-	}
-	x.Cmdline = C.GoString(tmp.cmdline)
-	x.Ramdisk = C.GoString(tmp.ramdisk)
-	x.Features = C.GoString(tmp.features)
-	if err := x.E820Host.fromC(&tmp.e820_host); err != nil {
-		return fmt.Errorf("converting field E820Host: %v", err)
-	}
-	return nil
-}
-
-func (x *DomainBuildInfoTypeUnionPvh) fromC(xc *C.libxl_domain_build_info) error {
-	if DomainType(xc._type) != DomainTypePvh {
-		return errors.New("expected union key DomainTypePvh")
-	}
-
-	tmp := (*C.libxl_domain_build_info_type_union_pvh)(unsafe.Pointer(&xc.u[0]))
-	if err := x.Pvshim.fromC(&tmp.pvshim); err != nil {
-		return fmt.Errorf("converting field Pvshim: %v", err)
-	}
-	x.PvshimPath = C.GoString(tmp.pvshim_path)
-	x.PvshimCmdline = C.GoString(tmp.pvshim_cmdline)
-	x.PvshimExtra = C.GoString(tmp.pvshim_extra)
-	return nil
-}
-
-func (x *DomainBuildInfo) toC(xc *C.libxl_domain_build_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_domain_build_info_dispose(xc)
-		}
-	}()
-
-	xc.max_vcpus = C.int(x.MaxVcpus)
-	if err := x.AvailVcpus.toC(&xc.avail_vcpus); err != nil {
-		return fmt.Errorf("converting field AvailVcpus: %v", err)
-	}
-	if err := x.Cpumap.toC(&xc.cpumap); err != nil {
-		return fmt.Errorf("converting field Cpumap: %v", err)
-	}
-	if err := x.Nodemap.toC(&xc.nodemap); err != nil {
-		return fmt.Errorf("converting field Nodemap: %v", err)
-	}
-	if numVcpuHardAffinity := len(x.VcpuHardAffinity); numVcpuHardAffinity > 0 {
-		xc.vcpu_hard_affinity = (*C.libxl_bitmap)(C.malloc(C.ulong(numVcpuHardAffinity) * C.sizeof_libxl_bitmap))
-		xc.num_vcpu_hard_affinity = C.int(numVcpuHardAffinity)
-		cVcpuHardAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:numVcpuHardAffinity:numVcpuHardAffinity]
-		for i, v := range x.VcpuHardAffinity {
-			if err := v.toC(&cVcpuHardAffinity[i]); err != nil {
-				return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
-			}
-		}
-	}
-	if numVcpuSoftAffinity := len(x.VcpuSoftAffinity); numVcpuSoftAffinity > 0 {
-		xc.vcpu_soft_affinity = (*C.libxl_bitmap)(C.malloc(C.ulong(numVcpuSoftAffinity) * C.sizeof_libxl_bitmap))
-		xc.num_vcpu_soft_affinity = C.int(numVcpuSoftAffinity)
-		cVcpuSoftAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:numVcpuSoftAffinity:numVcpuSoftAffinity]
-		for i, v := range x.VcpuSoftAffinity {
-			if err := v.toC(&cVcpuSoftAffinity[i]); err != nil {
-				return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
-			}
-		}
-	}
-	if err := x.NumaPlacement.toC(&xc.numa_placement); err != nil {
-		return fmt.Errorf("converting field NumaPlacement: %v", err)
-	}
-	xc.tsc_mode = C.libxl_tsc_mode(x.TscMode)
-	xc.max_memkb = C.uint64_t(x.MaxMemkb)
-	xc.target_memkb = C.uint64_t(x.TargetMemkb)
-	xc.video_memkb = C.uint64_t(x.VideoMemkb)
-	xc.shadow_memkb = C.uint64_t(x.ShadowMemkb)
-	xc.iommu_memkb = C.uint64_t(x.IommuMemkb)
-	xc.rtc_timeoffset = C.uint32_t(x.RtcTimeoffset)
-	xc.exec_ssidref = C.uint32_t(x.ExecSsidref)
-	if x.ExecSsidLabel != "" {
-		xc.exec_ssid_label = C.CString(x.ExecSsidLabel)
-	}
-	if err := x.Localtime.toC(&xc.localtime); err != nil {
-		return fmt.Errorf("converting field Localtime: %v", err)
-	}
-	if err := x.DisableMigrate.toC(&xc.disable_migrate); err != nil {
-		return fmt.Errorf("converting field DisableMigrate: %v", err)
-	}
-	if err := x.Cpuid.toC(&xc.cpuid); err != nil {
-		return fmt.Errorf("converting field Cpuid: %v", err)
-	}
-	if x.BlkdevStart != "" {
-		xc.blkdev_start = C.CString(x.BlkdevStart)
-	}
-	if numVnumaNodes := len(x.VnumaNodes); numVnumaNodes > 0 {
-		xc.vnuma_nodes = (*C.libxl_vnode_info)(C.malloc(C.ulong(numVnumaNodes) * C.sizeof_libxl_vnode_info))
-		xc.num_vnuma_nodes = C.int(numVnumaNodes)
-		cVnumaNodes := (*[1 << 28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:numVnumaNodes:numVnumaNodes]
-		for i, v := range x.VnumaNodes {
-			if err := v.toC(&cVnumaNodes[i]); err != nil {
-				return fmt.Errorf("converting field VnumaNodes: %v", err)
-			}
-		}
-	}
-	xc.max_grant_frames = C.uint32_t(x.MaxGrantFrames)
-	xc.max_maptrack_frames = C.uint32_t(x.MaxMaptrackFrames)
-	xc.device_model_version = C.libxl_device_model_version(x.DeviceModelVersion)
-	if err := x.DeviceModelStubdomain.toC(&xc.device_model_stubdomain); err != nil {
-		return fmt.Errorf("converting field DeviceModelStubdomain: %v", err)
-	}
-	if x.DeviceModel != "" {
-		xc.device_model = C.CString(x.DeviceModel)
-	}
-	xc.device_model_ssidref = C.uint32_t(x.DeviceModelSsidref)
-	if x.DeviceModelSsidLabel != "" {
-		xc.device_model_ssid_label = C.CString(x.DeviceModelSsidLabel)
-	}
-	if x.DeviceModelUser != "" {
-		xc.device_model_user = C.CString(x.DeviceModelUser)
-	}
-	if err := x.Extra.toC(&xc.extra); err != nil {
-		return fmt.Errorf("converting field Extra: %v", err)
-	}
-	if err := x.ExtraPv.toC(&xc.extra_pv); err != nil {
-		return fmt.Errorf("converting field ExtraPv: %v", err)
-	}
-	if err := x.ExtraHvm.toC(&xc.extra_hvm); err != nil {
-		return fmt.Errorf("converting field ExtraHvm: %v", err)
-	}
-	if err := x.SchedParams.toC(&xc.sched_params); err != nil {
-		return fmt.Errorf("converting field SchedParams: %v", err)
-	}
-	if numIoports := len(x.Ioports); numIoports > 0 {
-		xc.ioports = (*C.libxl_ioport_range)(C.malloc(C.ulong(numIoports) * C.sizeof_libxl_ioport_range))
-		xc.num_ioports = C.int(numIoports)
-		cIoports := (*[1 << 28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:numIoports:numIoports]
-		for i, v := range x.Ioports {
-			if err := v.toC(&cIoports[i]); err != nil {
-				return fmt.Errorf("converting field Ioports: %v", err)
-			}
-		}
-	}
-	if numIrqs := len(x.Irqs); numIrqs > 0 {
-		xc.irqs = (*C.uint32_t)(C.malloc(C.size_t(numIrqs * numIrqs)))
-		xc.num_irqs = C.int(numIrqs)
-		cIrqs := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:numIrqs:numIrqs]
-		for i, v := range x.Irqs {
-			cIrqs[i] = C.uint32_t(v)
-		}
-	}
-	if numIomem := len(x.Iomem); numIomem > 0 {
-		xc.iomem = (*C.libxl_iomem_range)(C.malloc(C.ulong(numIomem) * C.sizeof_libxl_iomem_range))
-		xc.num_iomem = C.int(numIomem)
-		cIomem := (*[1 << 28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:numIomem:numIomem]
-		for i, v := range x.Iomem {
-			if err := v.toC(&cIomem[i]); err != nil {
-				return fmt.Errorf("converting field Iomem: %v", err)
-			}
-		}
-	}
-	if err := x.ClaimMode.toC(&xc.claim_mode); err != nil {
-		return fmt.Errorf("converting field ClaimMode: %v", err)
-	}
-	xc.event_channels = C.uint32_t(x.EventChannels)
-	if x.Kernel != "" {
-		xc.kernel = C.CString(x.Kernel)
-	}
-	if x.Cmdline != "" {
-		xc.cmdline = C.CString(x.Cmdline)
-	}
-	if x.Ramdisk != "" {
-		xc.ramdisk = C.CString(x.Ramdisk)
-	}
-	if x.DeviceTree != "" {
-		xc.device_tree = C.CString(x.DeviceTree)
-	}
-	if err := x.Acpi.toC(&xc.acpi); err != nil {
-		return fmt.Errorf("converting field Acpi: %v", err)
-	}
-	if x.Bootloader != "" {
-		xc.bootloader = C.CString(x.Bootloader)
-	}
-	if err := x.BootloaderArgs.toC(&xc.bootloader_args); err != nil {
-		return fmt.Errorf("converting field BootloaderArgs: %v", err)
-	}
-	xc.timer_mode = C.libxl_timer_mode(x.TimerMode)
-	if err := x.NestedHvm.toC(&xc.nested_hvm); err != nil {
-		return fmt.Errorf("converting field NestedHvm: %v", err)
-	}
-	if err := x.Apic.toC(&xc.apic); err != nil {
-		return fmt.Errorf("converting field Apic: %v", err)
-	}
-	if err := x.DmRestrict.toC(&xc.dm_restrict); err != nil {
-		return fmt.Errorf("converting field DmRestrict: %v", err)
-	}
-	xc.tee = C.libxl_tee_type(x.Tee)
-	xc._type = C.libxl_domain_type(x.Type)
-	switch x.Type {
-	case DomainTypeHvm:
-		tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionHvm)
-		if !ok {
-			return errors.New("wrong type for union key type")
-		}
-		var hvm C.libxl_domain_build_info_type_union_hvm
-		if tmp.Firmware != "" {
-			hvm.firmware = C.CString(tmp.Firmware)
-		}
-		hvm.bios = C.libxl_bios_type(tmp.Bios)
-		if err := tmp.Pae.toC(&hvm.pae); err != nil {
-			return fmt.Errorf("converting field Pae: %v", err)
-		}
-		if err := tmp.Apic.toC(&hvm.apic); err != nil {
-			return fmt.Errorf("converting field Apic: %v", err)
-		}
-		if err := tmp.Acpi.toC(&hvm.acpi); err != nil {
-			return fmt.Errorf("converting field Acpi: %v", err)
-		}
-		if err := tmp.AcpiS3.toC(&hvm.acpi_s3); err != nil {
-			return fmt.Errorf("converting field AcpiS3: %v", err)
-		}
-		if err := tmp.AcpiS4.toC(&hvm.acpi_s4); err != nil {
-			return fmt.Errorf("converting field AcpiS4: %v", err)
-		}
-		if err := tmp.AcpiLaptopSlate.toC(&hvm.acpi_laptop_slate); err != nil {
-			return fmt.Errorf("converting field AcpiLaptopSlate: %v", err)
-		}
-		if err := tmp.Nx.toC(&hvm.nx); err != nil {
-			return fmt.Errorf("converting field Nx: %v", err)
-		}
-		if err := tmp.Viridian.toC(&hvm.viridian); err != nil {
-			return fmt.Errorf("converting field Viridian: %v", err)
-		}
-		if err := tmp.ViridianEnable.toC(&hvm.viridian_enable); err != nil {
-			return fmt.Errorf("converting field ViridianEnable: %v", err)
-		}
-		if err := tmp.ViridianDisable.toC(&hvm.viridian_disable); err != nil {
-			return fmt.Errorf("converting field ViridianDisable: %v", err)
-		}
-		if tmp.Timeoffset != "" {
-			hvm.timeoffset = C.CString(tmp.Timeoffset)
-		}
-		if err := tmp.Hpet.toC(&hvm.hpet); err != nil {
-			return fmt.Errorf("converting field Hpet: %v", err)
-		}
-		if err := tmp.VptAlign.toC(&hvm.vpt_align); err != nil {
-			return fmt.Errorf("converting field VptAlign: %v", err)
-		}
-		hvm.mmio_hole_memkb = C.uint64_t(tmp.MmioHoleMemkb)
-		hvm.timer_mode = C.libxl_timer_mode(tmp.TimerMode)
-		if err := tmp.NestedHvm.toC(&hvm.nested_hvm); err != nil {
-			return fmt.Errorf("converting field NestedHvm: %v", err)
-		}
-		if err := tmp.Altp2M.toC(&hvm.altp2m); err != nil {
-			return fmt.Errorf("converting field Altp2M: %v", err)
-		}
-		if tmp.SystemFirmware != "" {
-			hvm.system_firmware = C.CString(tmp.SystemFirmware)
-		}
-		if tmp.SmbiosFirmware != "" {
-			hvm.smbios_firmware = C.CString(tmp.SmbiosFirmware)
-		}
-		if tmp.AcpiFirmware != "" {
-			hvm.acpi_firmware = C.CString(tmp.AcpiFirmware)
-		}
-		hvm.hdtype = C.libxl_hdtype(tmp.Hdtype)
-		if err := tmp.Nographic.toC(&hvm.nographic); err != nil {
-			return fmt.Errorf("converting field Nographic: %v", err)
-		}
-		if err := tmp.Vga.toC(&hvm.vga); err != nil {
-			return fmt.Errorf("converting field Vga: %v", err)
-		}
-		if err := tmp.Vnc.toC(&hvm.vnc); err != nil {
-			return fmt.Errorf("converting field Vnc: %v", err)
-		}
-		if tmp.Keymap != "" {
-			hvm.keymap = C.CString(tmp.Keymap)
-		}
-		if err := tmp.Sdl.toC(&hvm.sdl); err != nil {
-			return fmt.Errorf("converting field Sdl: %v", err)
-		}
-		if err := tmp.Spice.toC(&hvm.spice); err != nil {
-			return fmt.Errorf("converting field Spice: %v", err)
-		}
-		if err := tmp.GfxPassthru.toC(&hvm.gfx_passthru); err != nil {
-			return fmt.Errorf("converting field GfxPassthru: %v", err)
-		}
-		hvm.gfx_passthru_kind = C.libxl_gfx_passthru_kind(tmp.GfxPassthruKind)
-		if tmp.Serial != "" {
-			hvm.serial = C.CString(tmp.Serial)
-		}
-		if tmp.Boot != "" {
-			hvm.boot = C.CString(tmp.Boot)
-		}
-		if err := tmp.Usb.toC(&hvm.usb); err != nil {
-			return fmt.Errorf("converting field Usb: %v", err)
-		}
-		hvm.usbversion = C.int(tmp.Usbversion)
-		if tmp.Usbdevice != "" {
-			hvm.usbdevice = C.CString(tmp.Usbdevice)
-		}
-		if err := tmp.VkbDevice.toC(&hvm.vkb_device); err != nil {
-			return fmt.Errorf("converting field VkbDevice: %v", err)
-		}
-		if tmp.Soundhw != "" {
-			hvm.soundhw = C.CString(tmp.Soundhw)
-		}
-		if err := tmp.XenPlatformPci.toC(&hvm.xen_platform_pci); err != nil {
-			return fmt.Errorf("converting field XenPlatformPci: %v", err)
-		}
-		if err := tmp.UsbdeviceList.toC(&hvm.usbdevice_list); err != nil {
-			return fmt.Errorf("converting field UsbdeviceList: %v", err)
-		}
-		hvm.vendor_device = C.libxl_vendor_device(tmp.VendorDevice)
-		if err := tmp.MsVmGenid.toC(&hvm.ms_vm_genid); err != nil {
-			return fmt.Errorf("converting field MsVmGenid: %v", err)
-		}
-		if err := tmp.SerialList.toC(&hvm.serial_list); err != nil {
-			return fmt.Errorf("converting field SerialList: %v", err)
-		}
-		if err := tmp.Rdm.toC(&hvm.rdm); err != nil {
-			return fmt.Errorf("converting field Rdm: %v", err)
-		}
-		hvm.rdm_mem_boundary_memkb = C.uint64_t(tmp.RdmMemBoundaryMemkb)
-		hvm.mca_caps = C.uint64_t(tmp.McaCaps)
-		hvmBytes := C.GoBytes(unsafe.Pointer(&hvm), C.sizeof_libxl_domain_build_info_type_union_hvm)
-		copy(xc.u[:], hvmBytes)
-	case DomainTypePv:
-		tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionPv)
-		if !ok {
-			return errors.New("wrong type for union key type")
-		}
-		var pv C.libxl_domain_build_info_type_union_pv
-		if tmp.Kernel != "" {
-			pv.kernel = C.CString(tmp.Kernel)
-		}
-		pv.slack_memkb = C.uint64_t(tmp.SlackMemkb)
-		if tmp.Bootloader != "" {
-			pv.bootloader = C.CString(tmp.Bootloader)
-		}
-		if err := tmp.BootloaderArgs.toC(&pv.bootloader_args); err != nil {
-			return fmt.Errorf("converting field BootloaderArgs: %v", err)
-		}
-		if tmp.Cmdline != "" {
-			pv.cmdline = C.CString(tmp.Cmdline)
-		}
-		if tmp.Ramdisk != "" {
-			pv.ramdisk = C.CString(tmp.Ramdisk)
-		}
-		if tmp.Features != "" {
-			pv.features = C.CString(tmp.Features)
-		}
-		if err := tmp.E820Host.toC(&pv.e820_host); err != nil {
-			return fmt.Errorf("converting field E820Host: %v", err)
-		}
-		pvBytes := C.GoBytes(unsafe.Pointer(&pv), C.sizeof_libxl_domain_build_info_type_union_pv)
-		copy(xc.u[:], pvBytes)
-	case DomainTypePvh:
-		tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionPvh)
-		if !ok {
-			return errors.New("wrong type for union key type")
-		}
-		var pvh C.libxl_domain_build_info_type_union_pvh
-		if err := tmp.Pvshim.toC(&pvh.pvshim); err != nil {
-			return fmt.Errorf("converting field Pvshim: %v", err)
-		}
-		if tmp.PvshimPath != "" {
-			pvh.pvshim_path = C.CString(tmp.PvshimPath)
-		}
-		if tmp.PvshimCmdline != "" {
-			pvh.pvshim_cmdline = C.CString(tmp.PvshimCmdline)
-		}
-		if tmp.PvshimExtra != "" {
-			pvh.pvshim_extra = C.CString(tmp.PvshimExtra)
-		}
-		pvhBytes := C.GoBytes(unsafe.Pointer(&pvh), C.sizeof_libxl_domain_build_info_type_union_pvh)
-		copy(xc.u[:], pvhBytes)
-	case DomainTypeInvalid:
-		break
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Type)
-	}
-	xc.arch_arm.gic_version = C.libxl_gic_version(x.ArchArm.GicVersion)
-	xc.arch_arm.vuart = C.libxl_vuart_type(x.ArchArm.Vuart)
-	xc.altp2m = C.libxl_altp2m_mode(x.Altp2M)
-
-	return nil
-}
-
-// NewDeviceVfb returns an instance of DeviceVfb initialized with defaults.
-func NewDeviceVfb() (*DeviceVfb, error) {
-	var (
-		x  DeviceVfb
-		xc C.libxl_device_vfb
-	)
-
-	C.libxl_device_vfb_init(&xc)
-	defer C.libxl_device_vfb_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceVfb) fromC(xc *C.libxl_device_vfb) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	if err := x.Vnc.fromC(&xc.vnc); err != nil {
-		return fmt.Errorf("converting field Vnc: %v", err)
-	}
-	if err := x.Sdl.fromC(&xc.sdl); err != nil {
-		return fmt.Errorf("converting field Sdl: %v", err)
-	}
-	x.Keymap = C.GoString(xc.keymap)
-
-	return nil
-}
-
-func (x *DeviceVfb) toC(xc *C.libxl_device_vfb) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_vfb_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	if err := x.Vnc.toC(&xc.vnc); err != nil {
-		return fmt.Errorf("converting field Vnc: %v", err)
-	}
-	if err := x.Sdl.toC(&xc.sdl); err != nil {
-		return fmt.Errorf("converting field Sdl: %v", err)
-	}
-	if x.Keymap != "" {
-		xc.keymap = C.CString(x.Keymap)
-	}
-
-	return nil
-}
-
-// NewDeviceVkb returns an instance of DeviceVkb initialized with defaults.
-func NewDeviceVkb() (*DeviceVkb, error) {
-	var (
-		x  DeviceVkb
-		xc C.libxl_device_vkb
-	)
-
-	C.libxl_device_vkb_init(&xc)
-	defer C.libxl_device_vkb_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceVkb) fromC(xc *C.libxl_device_vkb) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	x.BackendType = VkbBackend(xc.backend_type)
-	x.UniqueId = C.GoString(xc.unique_id)
-	x.FeatureDisableKeyboard = bool(xc.feature_disable_keyboard)
-	x.FeatureDisablePointer = bool(xc.feature_disable_pointer)
-	x.FeatureAbsPointer = bool(xc.feature_abs_pointer)
-	x.FeatureRawPointer = bool(xc.feature_raw_pointer)
-	x.FeatureMultiTouch = bool(xc.feature_multi_touch)
-	x.Width = uint32(xc.width)
-	x.Height = uint32(xc.height)
-	x.MultiTouchWidth = uint32(xc.multi_touch_width)
-	x.MultiTouchHeight = uint32(xc.multi_touch_height)
-	x.MultiTouchNumContacts = uint32(xc.multi_touch_num_contacts)
-
-	return nil
-}
-
-func (x *DeviceVkb) toC(xc *C.libxl_device_vkb) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_vkb_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.backend_type = C.libxl_vkb_backend(x.BackendType)
-	if x.UniqueId != "" {
-		xc.unique_id = C.CString(x.UniqueId)
-	}
-	xc.feature_disable_keyboard = C.bool(x.FeatureDisableKeyboard)
-	xc.feature_disable_pointer = C.bool(x.FeatureDisablePointer)
-	xc.feature_abs_pointer = C.bool(x.FeatureAbsPointer)
-	xc.feature_raw_pointer = C.bool(x.FeatureRawPointer)
-	xc.feature_multi_touch = C.bool(x.FeatureMultiTouch)
-	xc.width = C.uint32_t(x.Width)
-	xc.height = C.uint32_t(x.Height)
-	xc.multi_touch_width = C.uint32_t(x.MultiTouchWidth)
-	xc.multi_touch_height = C.uint32_t(x.MultiTouchHeight)
-	xc.multi_touch_num_contacts = C.uint32_t(x.MultiTouchNumContacts)
-
-	return nil
-}
-
-// NewDeviceDisk returns an instance of DeviceDisk initialized with defaults.
-func NewDeviceDisk() (*DeviceDisk, error) {
-	var (
-		x  DeviceDisk
-		xc C.libxl_device_disk
-	)
-
-	C.libxl_device_disk_init(&xc)
-	defer C.libxl_device_disk_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceDisk) fromC(xc *C.libxl_device_disk) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.PdevPath = C.GoString(xc.pdev_path)
-	x.Vdev = C.GoString(xc.vdev)
-	x.Backend = DiskBackend(xc.backend)
-	x.Format = DiskFormat(xc.format)
-	x.Script = C.GoString(xc.script)
-	x.Removable = int(xc.removable)
-	x.Readwrite = int(xc.readwrite)
-	x.IsCdrom = int(xc.is_cdrom)
-	x.DirectIoSafe = bool(xc.direct_io_safe)
-	if err := x.DiscardEnable.fromC(&xc.discard_enable); err != nil {
-		return fmt.Errorf("converting field DiscardEnable: %v", err)
-	}
-	if err := x.ColoEnable.fromC(&xc.colo_enable); err != nil {
-		return fmt.Errorf("converting field ColoEnable: %v", err)
-	}
-	if err := x.ColoRestoreEnable.fromC(&xc.colo_restore_enable); err != nil {
-		return fmt.Errorf("converting field ColoRestoreEnable: %v", err)
-	}
-	x.ColoHost = C.GoString(xc.colo_host)
-	x.ColoPort = int(xc.colo_port)
-	x.ColoExport = C.GoString(xc.colo_export)
-	x.ActiveDisk = C.GoString(xc.active_disk)
-	x.HiddenDisk = C.GoString(xc.hidden_disk)
-
-	return nil
-}
-
-func (x *DeviceDisk) toC(xc *C.libxl_device_disk) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_disk_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	if x.PdevPath != "" {
-		xc.pdev_path = C.CString(x.PdevPath)
-	}
-	if x.Vdev != "" {
-		xc.vdev = C.CString(x.Vdev)
-	}
-	xc.backend = C.libxl_disk_backend(x.Backend)
-	xc.format = C.libxl_disk_format(x.Format)
-	if x.Script != "" {
-		xc.script = C.CString(x.Script)
-	}
-	xc.removable = C.int(x.Removable)
-	xc.readwrite = C.int(x.Readwrite)
-	xc.is_cdrom = C.int(x.IsCdrom)
-	xc.direct_io_safe = C.bool(x.DirectIoSafe)
-	if err := x.DiscardEnable.toC(&xc.discard_enable); err != nil {
-		return fmt.Errorf("converting field DiscardEnable: %v", err)
-	}
-	if err := x.ColoEnable.toC(&xc.colo_enable); err != nil {
-		return fmt.Errorf("converting field ColoEnable: %v", err)
-	}
-	if err := x.ColoRestoreEnable.toC(&xc.colo_restore_enable); err != nil {
-		return fmt.Errorf("converting field ColoRestoreEnable: %v", err)
-	}
-	if x.ColoHost != "" {
-		xc.colo_host = C.CString(x.ColoHost)
-	}
-	xc.colo_port = C.int(x.ColoPort)
-	if x.ColoExport != "" {
-		xc.colo_export = C.CString(x.ColoExport)
-	}
-	if x.ActiveDisk != "" {
-		xc.active_disk = C.CString(x.ActiveDisk)
-	}
-	if x.HiddenDisk != "" {
-		xc.hidden_disk = C.CString(x.HiddenDisk)
-	}
-
-	return nil
-}
-
-// NewDeviceNic returns an instance of DeviceNic initialized with defaults.
-func NewDeviceNic() (*DeviceNic, error) {
-	var (
-		x  DeviceNic
-		xc C.libxl_device_nic
-	)
-
-	C.libxl_device_nic_init(&xc)
-	defer C.libxl_device_nic_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceNic) fromC(xc *C.libxl_device_nic) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	x.Mtu = int(xc.mtu)
-	x.Model = C.GoString(xc.model)
-	if err := x.Mac.fromC(&xc.mac); err != nil {
-		return fmt.Errorf("converting field Mac: %v", err)
-	}
-	x.Ip = C.GoString(xc.ip)
-	x.Bridge = C.GoString(xc.bridge)
-	x.Ifname = C.GoString(xc.ifname)
-	x.Script = C.GoString(xc.script)
-	x.Nictype = NicType(xc.nictype)
-	x.RateBytesPerInterval = uint64(xc.rate_bytes_per_interval)
-	x.RateIntervalUsecs = uint32(xc.rate_interval_usecs)
-	x.Gatewaydev = C.GoString(xc.gatewaydev)
-	x.ColoftForwarddev = C.GoString(xc.coloft_forwarddev)
-	x.ColoSockMirrorId = C.GoString(xc.colo_sock_mirror_id)
-	x.ColoSockMirrorIp = C.GoString(xc.colo_sock_mirror_ip)
-	x.ColoSockMirrorPort = C.GoString(xc.colo_sock_mirror_port)
-	x.ColoSockComparePriInId = C.GoString(xc.colo_sock_compare_pri_in_id)
-	x.ColoSockComparePriInIp = C.GoString(xc.colo_sock_compare_pri_in_ip)
-	x.ColoSockComparePriInPort = C.GoString(xc.colo_sock_compare_pri_in_port)
-	x.ColoSockCompareSecInId = C.GoString(xc.colo_sock_compare_sec_in_id)
-	x.ColoSockCompareSecInIp = C.GoString(xc.colo_sock_compare_sec_in_ip)
-	x.ColoSockCompareSecInPort = C.GoString(xc.colo_sock_compare_sec_in_port)
-	x.ColoSockCompareNotifyId = C.GoString(xc.colo_sock_compare_notify_id)
-	x.ColoSockCompareNotifyIp = C.GoString(xc.colo_sock_compare_notify_ip)
-	x.ColoSockCompareNotifyPort = C.GoString(xc.colo_sock_compare_notify_port)
-	x.ColoSockRedirector0Id = C.GoString(xc.colo_sock_redirector0_id)
-	x.ColoSockRedirector0Ip = C.GoString(xc.colo_sock_redirector0_ip)
-	x.ColoSockRedirector0Port = C.GoString(xc.colo_sock_redirector0_port)
-	x.ColoSockRedirector1Id = C.GoString(xc.colo_sock_redirector1_id)
-	x.ColoSockRedirector1Ip = C.GoString(xc.colo_sock_redirector1_ip)
-	x.ColoSockRedirector1Port = C.GoString(xc.colo_sock_redirector1_port)
-	x.ColoSockRedirector2Id = C.GoString(xc.colo_sock_redirector2_id)
-	x.ColoSockRedirector2Ip = C.GoString(xc.colo_sock_redirector2_ip)
-	x.ColoSockRedirector2Port = C.GoString(xc.colo_sock_redirector2_port)
-	x.ColoFilterMirrorQueue = C.GoString(xc.colo_filter_mirror_queue)
-	x.ColoFilterMirrorOutdev = C.GoString(xc.colo_filter_mirror_outdev)
-	x.ColoFilterRedirector0Queue = C.GoString(xc.colo_filter_redirector0_queue)
-	x.ColoFilterRedirector0Indev = C.GoString(xc.colo_filter_redirector0_indev)
-	x.ColoFilterRedirector0Outdev = C.GoString(xc.colo_filter_redirector0_outdev)
-	x.ColoFilterRedirector1Queue = C.GoString(xc.colo_filter_redirector1_queue)
-	x.ColoFilterRedirector1Indev = C.GoString(xc.colo_filter_redirector1_indev)
-	x.ColoFilterRedirector1Outdev = C.GoString(xc.colo_filter_redirector1_outdev)
-	x.ColoComparePriIn = C.GoString(xc.colo_compare_pri_in)
-	x.ColoCompareSecIn = C.GoString(xc.colo_compare_sec_in)
-	x.ColoCompareOut = C.GoString(xc.colo_compare_out)
-	x.ColoCompareNotifyDev = C.GoString(xc.colo_compare_notify_dev)
-	x.ColoSockSecRedirector0Id = C.GoString(xc.colo_sock_sec_redirector0_id)
-	x.ColoSockSecRedirector0Ip = C.GoString(xc.colo_sock_sec_redirector0_ip)
-	x.ColoSockSecRedirector0Port = C.GoString(xc.colo_sock_sec_redirector0_port)
-	x.ColoSockSecRedirector1Id = C.GoString(xc.colo_sock_sec_redirector1_id)
-	x.ColoSockSecRedirector1Ip = C.GoString(xc.colo_sock_sec_redirector1_ip)
-	x.ColoSockSecRedirector1Port = C.GoString(xc.colo_sock_sec_redirector1_port)
-	x.ColoFilterSecRedirector0Queue = C.GoString(xc.colo_filter_sec_redirector0_queue)
-	x.ColoFilterSecRedirector0Indev = C.GoString(xc.colo_filter_sec_redirector0_indev)
-	x.ColoFilterSecRedirector0Outdev = C.GoString(xc.colo_filter_sec_redirector0_outdev)
-	x.ColoFilterSecRedirector1Queue = C.GoString(xc.colo_filter_sec_redirector1_queue)
-	x.ColoFilterSecRedirector1Indev = C.GoString(xc.colo_filter_sec_redirector1_indev)
-	x.ColoFilterSecRedirector1Outdev = C.GoString(xc.colo_filter_sec_redirector1_outdev)
-	x.ColoFilterSecRewriter0Queue = C.GoString(xc.colo_filter_sec_rewriter0_queue)
-	x.ColoCheckpointHost = C.GoString(xc.colo_checkpoint_host)
-	x.ColoCheckpointPort = C.GoString(xc.colo_checkpoint_port)
-
-	return nil
-}
-
-func (x *DeviceNic) toC(xc *C.libxl_device_nic) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_nic_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.mtu = C.int(x.Mtu)
-	if x.Model != "" {
-		xc.model = C.CString(x.Model)
-	}
-	if err := x.Mac.toC(&xc.mac); err != nil {
-		return fmt.Errorf("converting field Mac: %v", err)
-	}
-	if x.Ip != "" {
-		xc.ip = C.CString(x.Ip)
-	}
-	if x.Bridge != "" {
-		xc.bridge = C.CString(x.Bridge)
-	}
-	if x.Ifname != "" {
-		xc.ifname = C.CString(x.Ifname)
-	}
-	if x.Script != "" {
-		xc.script = C.CString(x.Script)
-	}
-	xc.nictype = C.libxl_nic_type(x.Nictype)
-	xc.rate_bytes_per_interval = C.uint64_t(x.RateBytesPerInterval)
-	xc.rate_interval_usecs = C.uint32_t(x.RateIntervalUsecs)
-	if x.Gatewaydev != "" {
-		xc.gatewaydev = C.CString(x.Gatewaydev)
-	}
-	if x.ColoftForwarddev != "" {
-		xc.coloft_forwarddev = C.CString(x.ColoftForwarddev)
-	}
-	if x.ColoSockMirrorId != "" {
-		xc.colo_sock_mirror_id = C.CString(x.ColoSockMirrorId)
-	}
-	if x.ColoSockMirrorIp != "" {
-		xc.colo_sock_mirror_ip = C.CString(x.ColoSockMirrorIp)
-	}
-	if x.ColoSockMirrorPort != "" {
-		xc.colo_sock_mirror_port = C.CString(x.ColoSockMirrorPort)
-	}
-	if x.ColoSockComparePriInId != "" {
-		xc.colo_sock_compare_pri_in_id = C.CString(x.ColoSockComparePriInId)
-	}
-	if x.ColoSockComparePriInIp != "" {
-		xc.colo_sock_compare_pri_in_ip = C.CString(x.ColoSockComparePriInIp)
-	}
-	if x.ColoSockComparePriInPort != "" {
-		xc.colo_sock_compare_pri_in_port = C.CString(x.ColoSockComparePriInPort)
-	}
-	if x.ColoSockCompareSecInId != "" {
-		xc.colo_sock_compare_sec_in_id = C.CString(x.ColoSockCompareSecInId)
-	}
-	if x.ColoSockCompareSecInIp != "" {
-		xc.colo_sock_compare_sec_in_ip = C.CString(x.ColoSockCompareSecInIp)
-	}
-	if x.ColoSockCompareSecInPort != "" {
-		xc.colo_sock_compare_sec_in_port = C.CString(x.ColoSockCompareSecInPort)
-	}
-	if x.ColoSockCompareNotifyId != "" {
-		xc.colo_sock_compare_notify_id = C.CString(x.ColoSockCompareNotifyId)
-	}
-	if x.ColoSockCompareNotifyIp != "" {
-		xc.colo_sock_compare_notify_ip = C.CString(x.ColoSockCompareNotifyIp)
-	}
-	if x.ColoSockCompareNotifyPort != "" {
-		xc.colo_sock_compare_notify_port = C.CString(x.ColoSockCompareNotifyPort)
-	}
-	if x.ColoSockRedirector0Id != "" {
-		xc.colo_sock_redirector0_id = C.CString(x.ColoSockRedirector0Id)
-	}
-	if x.ColoSockRedirector0Ip != "" {
-		xc.colo_sock_redirector0_ip = C.CString(x.ColoSockRedirector0Ip)
-	}
-	if x.ColoSockRedirector0Port != "" {
-		xc.colo_sock_redirector0_port = C.CString(x.ColoSockRedirector0Port)
-	}
-	if x.ColoSockRedirector1Id != "" {
-		xc.colo_sock_redirector1_id = C.CString(x.ColoSockRedirector1Id)
-	}
-	if x.ColoSockRedirector1Ip != "" {
-		xc.colo_sock_redirector1_ip = C.CString(x.ColoSockRedirector1Ip)
-	}
-	if x.ColoSockRedirector1Port != "" {
-		xc.colo_sock_redirector1_port = C.CString(x.ColoSockRedirector1Port)
-	}
-	if x.ColoSockRedirector2Id != "" {
-		xc.colo_sock_redirector2_id = C.CString(x.ColoSockRedirector2Id)
-	}
-	if x.ColoSockRedirector2Ip != "" {
-		xc.colo_sock_redirector2_ip = C.CString(x.ColoSockRedirector2Ip)
-	}
-	if x.ColoSockRedirector2Port != "" {
-		xc.colo_sock_redirector2_port = C.CString(x.ColoSockRedirector2Port)
-	}
-	if x.ColoFilterMirrorQueue != "" {
-		xc.colo_filter_mirror_queue = C.CString(x.ColoFilterMirrorQueue)
-	}
-	if x.ColoFilterMirrorOutdev != "" {
-		xc.colo_filter_mirror_outdev = C.CString(x.ColoFilterMirrorOutdev)
-	}
-	if x.ColoFilterRedirector0Queue != "" {
-		xc.colo_filter_redirector0_queue = C.CString(x.ColoFilterRedirector0Queue)
-	}
-	if x.ColoFilterRedirector0Indev != "" {
-		xc.colo_filter_redirector0_indev = C.CString(x.ColoFilterRedirector0Indev)
-	}
-	if x.ColoFilterRedirector0Outdev != "" {
-		xc.colo_filter_redirector0_outdev = C.CString(x.ColoFilterRedirector0Outdev)
-	}
-	if x.ColoFilterRedirector1Queue != "" {
-		xc.colo_filter_redirector1_queue = C.CString(x.ColoFilterRedirector1Queue)
-	}
-	if x.ColoFilterRedirector1Indev != "" {
-		xc.colo_filter_redirector1_indev = C.CString(x.ColoFilterRedirector1Indev)
-	}
-	if x.ColoFilterRedirector1Outdev != "" {
-		xc.colo_filter_redirector1_outdev = C.CString(x.ColoFilterRedirector1Outdev)
-	}
-	if x.ColoComparePriIn != "" {
-		xc.colo_compare_pri_in = C.CString(x.ColoComparePriIn)
-	}
-	if x.ColoCompareSecIn != "" {
-		xc.colo_compare_sec_in = C.CString(x.ColoCompareSecIn)
-	}
-	if x.ColoCompareOut != "" {
-		xc.colo_compare_out = C.CString(x.ColoCompareOut)
-	}
-	if x.ColoCompareNotifyDev != "" {
-		xc.colo_compare_notify_dev = C.CString(x.ColoCompareNotifyDev)
-	}
-	if x.ColoSockSecRedirector0Id != "" {
-		xc.colo_sock_sec_redirector0_id = C.CString(x.ColoSockSecRedirector0Id)
-	}
-	if x.ColoSockSecRedirector0Ip != "" {
-		xc.colo_sock_sec_redirector0_ip = C.CString(x.ColoSockSecRedirector0Ip)
-	}
-	if x.ColoSockSecRedirector0Port != "" {
-		xc.colo_sock_sec_redirector0_port = C.CString(x.ColoSockSecRedirector0Port)
-	}
-	if x.ColoSockSecRedirector1Id != "" {
-		xc.colo_sock_sec_redirector1_id = C.CString(x.ColoSockSecRedirector1Id)
-	}
-	if x.ColoSockSecRedirector1Ip != "" {
-		xc.colo_sock_sec_redirector1_ip = C.CString(x.ColoSockSecRedirector1Ip)
-	}
-	if x.ColoSockSecRedirector1Port != "" {
-		xc.colo_sock_sec_redirector1_port = C.CString(x.ColoSockSecRedirector1Port)
-	}
-	if x.ColoFilterSecRedirector0Queue != "" {
-		xc.colo_filter_sec_redirector0_queue = C.CString(x.ColoFilterSecRedirector0Queue)
-	}
-	if x.ColoFilterSecRedirector0Indev != "" {
-		xc.colo_filter_sec_redirector0_indev = C.CString(x.ColoFilterSecRedirector0Indev)
-	}
-	if x.ColoFilterSecRedirector0Outdev != "" {
-		xc.colo_filter_sec_redirector0_outdev = C.CString(x.ColoFilterSecRedirector0Outdev)
-	}
-	if x.ColoFilterSecRedirector1Queue != "" {
-		xc.colo_filter_sec_redirector1_queue = C.CString(x.ColoFilterSecRedirector1Queue)
-	}
-	if x.ColoFilterSecRedirector1Indev != "" {
-		xc.colo_filter_sec_redirector1_indev = C.CString(x.ColoFilterSecRedirector1Indev)
-	}
-	if x.ColoFilterSecRedirector1Outdev != "" {
-		xc.colo_filter_sec_redirector1_outdev = C.CString(x.ColoFilterSecRedirector1Outdev)
-	}
-	if x.ColoFilterSecRewriter0Queue != "" {
-		xc.colo_filter_sec_rewriter0_queue = C.CString(x.ColoFilterSecRewriter0Queue)
-	}
-	if x.ColoCheckpointHost != "" {
-		xc.colo_checkpoint_host = C.CString(x.ColoCheckpointHost)
-	}
-	if x.ColoCheckpointPort != "" {
-		xc.colo_checkpoint_port = C.CString(x.ColoCheckpointPort)
-	}
-
-	return nil
-}
-
-// NewDevicePci returns an instance of DevicePci initialized with defaults.
-func NewDevicePci() (*DevicePci, error) {
-	var (
-		x  DevicePci
-		xc C.libxl_device_pci
-	)
-
-	C.libxl_device_pci_init(&xc)
-	defer C.libxl_device_pci_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DevicePci) fromC(xc *C.libxl_device_pci) error {
-	x.Func = byte(xc._func)
-	x.Dev = byte(xc.dev)
-	x.Bus = byte(xc.bus)
-	x.Domain = int(xc.domain)
-	x.Vdevfn = uint32(xc.vdevfn)
-	x.VfuncMask = uint32(xc.vfunc_mask)
-	x.Msitranslate = bool(xc.msitranslate)
-	x.PowerMgmt = bool(xc.power_mgmt)
-	x.Permissive = bool(xc.permissive)
-	x.Seize = bool(xc.seize)
-	x.RdmPolicy = RdmReservePolicy(xc.rdm_policy)
-
-	return nil
-}
-
-func (x *DevicePci) toC(xc *C.libxl_device_pci) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_pci_dispose(xc)
-		}
-	}()
-
-	xc._func = C.uint8_t(x.Func)
-	xc.dev = C.uint8_t(x.Dev)
-	xc.bus = C.uint8_t(x.Bus)
-	xc.domain = C.int(x.Domain)
-	xc.vdevfn = C.uint32_t(x.Vdevfn)
-	xc.vfunc_mask = C.uint32_t(x.VfuncMask)
-	xc.msitranslate = C.bool(x.Msitranslate)
-	xc.power_mgmt = C.bool(x.PowerMgmt)
-	xc.permissive = C.bool(x.Permissive)
-	xc.seize = C.bool(x.Seize)
-	xc.rdm_policy = C.libxl_rdm_reserve_policy(x.RdmPolicy)
-
-	return nil
-}
-
-// NewDeviceRdm returns an instance of DeviceRdm initialized with defaults.
-func NewDeviceRdm() (*DeviceRdm, error) {
-	var (
-		x  DeviceRdm
-		xc C.libxl_device_rdm
-	)
-
-	C.libxl_device_rdm_init(&xc)
-	defer C.libxl_device_rdm_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceRdm) fromC(xc *C.libxl_device_rdm) error {
-	x.Start = uint64(xc.start)
-	x.Size = uint64(xc.size)
-	x.Policy = RdmReservePolicy(xc.policy)
-
-	return nil
-}
-
-func (x *DeviceRdm) toC(xc *C.libxl_device_rdm) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_rdm_dispose(xc)
-		}
-	}()
-
-	xc.start = C.uint64_t(x.Start)
-	xc.size = C.uint64_t(x.Size)
-	xc.policy = C.libxl_rdm_reserve_policy(x.Policy)
-
-	return nil
-}
-
-// NewDeviceUsbctrl returns an instance of DeviceUsbctrl initialized with defaults.
-func NewDeviceUsbctrl() (*DeviceUsbctrl, error) {
-	var (
-		x  DeviceUsbctrl
-		xc C.libxl_device_usbctrl
-	)
-
-	C.libxl_device_usbctrl_init(&xc)
-	defer C.libxl_device_usbctrl_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceUsbctrl) fromC(xc *C.libxl_device_usbctrl) error {
-	x.Type = UsbctrlType(xc._type)
-	x.Devid = Devid(xc.devid)
-	x.Version = int(xc.version)
-	x.Ports = int(xc.ports)
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-
-	return nil
-}
-
-func (x *DeviceUsbctrl) toC(xc *C.libxl_device_usbctrl) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_usbctrl_dispose(xc)
-		}
-	}()
-
-	xc._type = C.libxl_usbctrl_type(x.Type)
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.version = C.int(x.Version)
-	xc.ports = C.int(x.Ports)
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-
-	return nil
-}
-
-// NewDeviceUsbdev returns an instance of DeviceUsbdev initialized with defaults.
-func NewDeviceUsbdev(utype UsbdevType) (*DeviceUsbdev, error) {
-	var (
-		x  DeviceUsbdev
-		xc C.libxl_device_usbdev
-	)
-
-	C.libxl_device_usbdev_init(&xc)
-	C.libxl_device_usbdev_init_type(&xc, C.libxl_usbdev_type(utype))
-	defer C.libxl_device_usbdev_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceUsbdev) fromC(xc *C.libxl_device_usbdev) error {
-	x.Ctrl = Devid(xc.ctrl)
-	x.Port = int(xc.port)
-	x.Type = UsbdevType(xc._type)
-	switch x.Type {
-	case UsbdevTypeHostdev:
-		var typeHostdev DeviceUsbdevTypeUnionHostdev
-		if err := typeHostdev.fromC(xc); err != nil {
-			return fmt.Errorf("converting field typeHostdev: %v", err)
-		}
-		x.TypeUnion = typeHostdev
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Type)
-	}
-
-	return nil
-}
-
-func (x *DeviceUsbdevTypeUnionHostdev) fromC(xc *C.libxl_device_usbdev) error {
-	if UsbdevType(xc._type) != UsbdevTypeHostdev {
-		return errors.New("expected union key UsbdevTypeHostdev")
-	}
-
-	tmp := (*C.libxl_device_usbdev_type_union_hostdev)(unsafe.Pointer(&xc.u[0]))
-	x.Hostbus = byte(tmp.hostbus)
-	x.Hostaddr = byte(tmp.hostaddr)
-	return nil
-}
-
-func (x *DeviceUsbdev) toC(xc *C.libxl_device_usbdev) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_usbdev_dispose(xc)
-		}
-	}()
-
-	xc.ctrl = C.libxl_devid(x.Ctrl)
-	xc.port = C.int(x.Port)
-	xc._type = C.libxl_usbdev_type(x.Type)
-	switch x.Type {
-	case UsbdevTypeHostdev:
-		tmp, ok := x.TypeUnion.(DeviceUsbdevTypeUnionHostdev)
-		if !ok {
-			return errors.New("wrong type for union key type")
-		}
-		var hostdev C.libxl_device_usbdev_type_union_hostdev
-		hostdev.hostbus = C.uint8_t(tmp.Hostbus)
-		hostdev.hostaddr = C.uint8_t(tmp.Hostaddr)
-		hostdevBytes := C.GoBytes(unsafe.Pointer(&hostdev), C.sizeof_libxl_device_usbdev_type_union_hostdev)
-		copy(xc.u[:], hostdevBytes)
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Type)
-	}
-
-	return nil
-}
-
-// NewDeviceDtdev returns an instance of DeviceDtdev initialized with defaults.
-func NewDeviceDtdev() (*DeviceDtdev, error) {
-	var (
-		x  DeviceDtdev
-		xc C.libxl_device_dtdev
-	)
-
-	C.libxl_device_dtdev_init(&xc)
-	defer C.libxl_device_dtdev_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceDtdev) fromC(xc *C.libxl_device_dtdev) error {
-	x.Path = C.GoString(xc.path)
-
-	return nil
-}
-
-func (x *DeviceDtdev) toC(xc *C.libxl_device_dtdev) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_dtdev_dispose(xc)
-		}
-	}()
-
-	if x.Path != "" {
-		xc.path = C.CString(x.Path)
-	}
-
-	return nil
-}
-
-// NewDeviceVtpm returns an instance of DeviceVtpm initialized with defaults.
-func NewDeviceVtpm() (*DeviceVtpm, error) {
-	var (
-		x  DeviceVtpm
-		xc C.libxl_device_vtpm
-	)
-
-	C.libxl_device_vtpm_init(&xc)
-	defer C.libxl_device_vtpm_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceVtpm) fromC(xc *C.libxl_device_vtpm) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	if err := x.Uuid.fromC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-
-	return nil
-}
-
-func (x *DeviceVtpm) toC(xc *C.libxl_device_vtpm) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_vtpm_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	if err := x.Uuid.toC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-
-	return nil
-}
-
-// NewDeviceP9 returns an instance of DeviceP9 initialized with defaults.
-func NewDeviceP9() (*DeviceP9, error) {
-	var (
-		x  DeviceP9
-		xc C.libxl_device_p9
-	)
-
-	C.libxl_device_p9_init(&xc)
-	defer C.libxl_device_p9_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceP9) fromC(xc *C.libxl_device_p9) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Tag = C.GoString(xc.tag)
-	x.Path = C.GoString(xc.path)
-	x.SecurityModel = C.GoString(xc.security_model)
-	x.Devid = Devid(xc.devid)
-
-	return nil
-}
-
-func (x *DeviceP9) toC(xc *C.libxl_device_p9) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_p9_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	if x.Tag != "" {
-		xc.tag = C.CString(x.Tag)
-	}
-	if x.Path != "" {
-		xc.path = C.CString(x.Path)
-	}
-	if x.SecurityModel != "" {
-		xc.security_model = C.CString(x.SecurityModel)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-
-	return nil
-}
-
-// NewDevicePvcallsif returns an instance of DevicePvcallsif initialized with defaults.
-func NewDevicePvcallsif() (*DevicePvcallsif, error) {
-	var (
-		x  DevicePvcallsif
-		xc C.libxl_device_pvcallsif
-	)
-
-	C.libxl_device_pvcallsif_init(&xc)
-	defer C.libxl_device_pvcallsif_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DevicePvcallsif) fromC(xc *C.libxl_device_pvcallsif) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-
-	return nil
-}
-
-func (x *DevicePvcallsif) toC(xc *C.libxl_device_pvcallsif) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_pvcallsif_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-
-	return nil
-}
-
-// NewDeviceChannel returns an instance of DeviceChannel initialized with defaults.
-func NewDeviceChannel(connection ChannelConnection) (*DeviceChannel, error) {
-	var (
-		x  DeviceChannel
-		xc C.libxl_device_channel
-	)
-
-	C.libxl_device_channel_init(&xc)
-	C.libxl_device_channel_init_connection(&xc, C.libxl_channel_connection(connection))
-	defer C.libxl_device_channel_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceChannel) fromC(xc *C.libxl_device_channel) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	x.Name = C.GoString(xc.name)
-	x.Connection = ChannelConnection(xc.connection)
-	switch x.Connection {
-	case ChannelConnectionUnknown:
-		x.ConnectionUnion = nil
-	case ChannelConnectionPty:
-		x.ConnectionUnion = nil
-	case ChannelConnectionSocket:
-		var connectionSocket DeviceChannelConnectionUnionSocket
-		if err := connectionSocket.fromC(xc); err != nil {
-			return fmt.Errorf("converting field connectionSocket: %v", err)
-		}
-		x.ConnectionUnion = connectionSocket
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Connection)
-	}
-
-	return nil
-}
-
-func (x *DeviceChannelConnectionUnionSocket) fromC(xc *C.libxl_device_channel) error {
-	if ChannelConnection(xc.connection) != ChannelConnectionSocket {
-		return errors.New("expected union key ChannelConnectionSocket")
-	}
-
-	tmp := (*C.libxl_device_channel_connection_union_socket)(unsafe.Pointer(&xc.u[0]))
-	x.Path = C.GoString(tmp.path)
-	return nil
-}
-
-func (x *DeviceChannel) toC(xc *C.libxl_device_channel) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_channel_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	if x.Name != "" {
-		xc.name = C.CString(x.Name)
-	}
-	xc.connection = C.libxl_channel_connection(x.Connection)
-	switch x.Connection {
-	case ChannelConnectionUnknown:
-		break
-	case ChannelConnectionPty:
-		break
-	case ChannelConnectionSocket:
-		tmp, ok := x.ConnectionUnion.(DeviceChannelConnectionUnionSocket)
-		if !ok {
-			return errors.New("wrong type for union key connection")
-		}
-		var socket C.libxl_device_channel_connection_union_socket
-		if tmp.Path != "" {
-			socket.path = C.CString(tmp.Path)
-		}
-		socketBytes := C.GoBytes(unsafe.Pointer(&socket), C.sizeof_libxl_device_channel_connection_union_socket)
-		copy(xc.u[:], socketBytes)
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Connection)
-	}
-
-	return nil
-}
-
-// NewConnectorParam returns an instance of ConnectorParam initialized with defaults.
-func NewConnectorParam() (*ConnectorParam, error) {
-	var (
-		x  ConnectorParam
-		xc C.libxl_connector_param
-	)
-
-	C.libxl_connector_param_init(&xc)
-	defer C.libxl_connector_param_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *ConnectorParam) fromC(xc *C.libxl_connector_param) error {
-	x.UniqueId = C.GoString(xc.unique_id)
-	x.Width = uint32(xc.width)
-	x.Height = uint32(xc.height)
-
-	return nil
-}
-
-func (x *ConnectorParam) toC(xc *C.libxl_connector_param) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_connector_param_dispose(xc)
-		}
-	}()
-
-	if x.UniqueId != "" {
-		xc.unique_id = C.CString(x.UniqueId)
-	}
-	xc.width = C.uint32_t(x.Width)
-	xc.height = C.uint32_t(x.Height)
-
-	return nil
-}
-
-// NewDeviceVdispl returns an instance of DeviceVdispl initialized with defaults.
-func NewDeviceVdispl() (*DeviceVdispl, error) {
-	var (
-		x  DeviceVdispl
-		xc C.libxl_device_vdispl
-	)
-
-	C.libxl_device_vdispl_init(&xc)
-	defer C.libxl_device_vdispl_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceVdispl) fromC(xc *C.libxl_device_vdispl) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	x.BeAlloc = bool(xc.be_alloc)
-	x.Connectors = nil
-	if n := int(xc.num_connectors); n > 0 {
-		cConnectors := (*[1 << 28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:n:n]
-		x.Connectors = make([]ConnectorParam, n)
-		for i, v := range cConnectors {
-			if err := x.Connectors[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field Connectors: %v", err)
-			}
-		}
-	}
-
-	return nil
-}
-
-func (x *DeviceVdispl) toC(xc *C.libxl_device_vdispl) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_vdispl_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.be_alloc = C.bool(x.BeAlloc)
-	if numConnectors := len(x.Connectors); numConnectors > 0 {
-		xc.connectors = (*C.libxl_connector_param)(C.malloc(C.ulong(numConnectors) * C.sizeof_libxl_connector_param))
-		xc.num_connectors = C.int(numConnectors)
-		cConnectors := (*[1 << 28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:numConnectors:numConnectors]
-		for i, v := range x.Connectors {
-			if err := v.toC(&cConnectors[i]); err != nil {
-				return fmt.Errorf("converting field Connectors: %v", err)
-			}
-		}
-	}
-
-	return nil
-}
-
-// NewVsndParams returns an instance of VsndParams initialized with defaults.
-func NewVsndParams() (*VsndParams, error) {
-	var (
-		x  VsndParams
-		xc C.libxl_vsnd_params
-	)
-
-	C.libxl_vsnd_params_init(&xc)
-	defer C.libxl_vsnd_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VsndParams) fromC(xc *C.libxl_vsnd_params) error {
-	x.SampleRates = nil
-	if n := int(xc.num_sample_rates); n > 0 {
-		cSampleRates := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:n:n]
-		x.SampleRates = make([]uint32, n)
-		for i, v := range cSampleRates {
-			x.SampleRates[i] = uint32(v)
-		}
-	}
-	x.SampleFormats = nil
-	if n := int(xc.num_sample_formats); n > 0 {
-		cSampleFormats := (*[1 << 28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:n:n]
-		x.SampleFormats = make([]VsndPcmFormat, n)
-		for i, v := range cSampleFormats {
-			x.SampleFormats[i] = VsndPcmFormat(v)
-		}
-	}
-	x.ChannelsMin = uint32(xc.channels_min)
-	x.ChannelsMax = uint32(xc.channels_max)
-	x.BufferSize = uint32(xc.buffer_size)
-
-	return nil
-}
-
-func (x *VsndParams) toC(xc *C.libxl_vsnd_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vsnd_params_dispose(xc)
-		}
-	}()
-
-	if numSampleRates := len(x.SampleRates); numSampleRates > 0 {
-		xc.sample_rates = (*C.uint32_t)(C.malloc(C.size_t(numSampleRates * numSampleRates)))
-		xc.num_sample_rates = C.int(numSampleRates)
-		cSampleRates := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:numSampleRates:numSampleRates]
-		for i, v := range x.SampleRates {
-			cSampleRates[i] = C.uint32_t(v)
-		}
-	}
-	if numSampleFormats := len(x.SampleFormats); numSampleFormats > 0 {
-		xc.sample_formats = (*C.libxl_vsnd_pcm_format)(C.malloc(C.size_t(numSampleFormats * numSampleFormats)))
-		xc.num_sample_formats = C.int(numSampleFormats)
-		cSampleFormats := (*[1 << 28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:numSampleFormats:numSampleFormats]
-		for i, v := range x.SampleFormats {
-			cSampleFormats[i] = C.libxl_vsnd_pcm_format(v)
-		}
-	}
-	xc.channels_min = C.uint32_t(x.ChannelsMin)
-	xc.channels_max = C.uint32_t(x.ChannelsMax)
-	xc.buffer_size = C.uint32_t(x.BufferSize)
-
-	return nil
-}
-
-// NewVsndStream returns an instance of VsndStream initialized with defaults.
-func NewVsndStream() (*VsndStream, error) {
-	var (
-		x  VsndStream
-		xc C.libxl_vsnd_stream


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 14:00:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 14:00:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT4It-0005yy-Fn; Mon, 27 Apr 2020 14:00:11 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT4Is-0005ys-CX
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:10 +0000
X-Inumbo-ID: 67fc4dd7-888f-11ea-9797-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 67fc4dd7-888f-11ea-9797-12813bfff9fa;
 Mon, 27 Apr 2020 14:00:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=C7lUIUUpzJ0WnPAjXj7fxriEuTiGp61wJYy5jyyRV+E=; b=NyjTFI6vqw176ysOtk7QpszPLR
 4PA78J9tftn6uTjK8Cf17jKEWZAkivCg9DaoSWfYFNOsMTxbS3wmIbXcbioYGvCE/4OLiHHhGLlaR
 zDGL7IynUN6mgP3W2qDx2454tbz9uzpBLncU8taCXqVI789PvtBzP0AQFgOU7bxC5O9M=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4Ir-00008I-BJ
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:09 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4Ir-00081w-9Q
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:09 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/EFI: also fill boot_tsc_stamp on the xen.efi
 boot path
Message-Id: <E1jT4Ir-00081w-9Q@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 14:00:09 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 499a2944d7651acacfb81ac9ec9ef720ca05883b
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:49:38 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:49:38 2020 +0200

    x86/EFI: also fill boot_tsc_stamp on the xen.efi boot path
    
    Commit e3a379c35eff ("x86/time: always count s_time from Xen boot")
    introducing this missed adjusting this path as well.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0dbc112e727f6c17f306c864950bdf83dece5cd5
    master date: 2020-04-14 11:42:11 +0200
---
 xen/arch/x86/efi/efi-boot.h | 3 +++
 xen/include/asm-x86/setup.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index dee65b7177..a0be818ee4 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -8,6 +8,7 @@
 #include <asm/edd.h>
 #include <asm/msr.h>
 #include <asm/processor.h>
+#include <asm/setup.h>
 
 static struct file __initdata ucode;
 static multiboot_info_t __initdata mbi = {
@@ -638,6 +639,8 @@ static void __init efi_arch_cpu(void)
 {
     uint32_t eax = cpuid_eax(0x80000000);
 
+    boot_tsc_stamp = rdtsc();
+
     if ( (eax >> 16) == 0x8000 && eax > 0x80000000 )
     {
         cpuid_ext_features = cpuid_edx(0x80000001);
diff --git a/xen/include/asm-x86/setup.h b/xen/include/asm-x86/setup.h
index bb4c38567c..562c4b54d7 100644
--- a/xen/include/asm-x86/setup.h
+++ b/xen/include/asm-x86/setup.h
@@ -13,6 +13,7 @@ extern char __2M_init_start[], __2M_init_end[];
 extern char __2M_rwdata_start[], __2M_rwdata_end[];
 
 extern unsigned long xenheap_initial_phys_start;
+extern uint64_t boot_tsc_stamp;
 
 void early_cpu_init(void);
 void early_time_init(void);
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 14:00:21 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 14:00:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT4J3-00060D-HV; Mon, 27 Apr 2020 14:00:21 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT4J2-000607-OQ
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:20 +0000
X-Inumbo-ID: 6d62e7bd-888f-11ea-9797-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6d62e7bd-888f-11ea-9797-12813bfff9fa;
 Mon, 27 Apr 2020 14:00:19 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2W57cglwVRtDo99FDku95d5unpfNWQFYFiVNuscmdzM=; b=blTF90uPuBXOus1ADxeM7sVL5q
 6HdSegQOzHSokJadhU/5QdAhrLG8cWgGNhctlZfbZJY7D3PYSAS1081Bv/5TLKFRKrFSOiyB9jxMT
 cFwQslfp6rbfIc6Io13jPMhwKWiNDahj1TPx/pqxkuA6LUlywIl27myuZRj6qn5sqgk4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4J1-000096-ED
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:19 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4J1-00083E-Cz
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:19 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/boot: Fix early exception handling with
 CONFIG_PERF_COUNTERS
Message-Id: <E1jT4J1-00083E-Cz@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 14:00:19 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e8032787d44ff9dfe157bda9e7f47e1c58faa973
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 15:51:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:51:14 2020 +0200

    x86/boot: Fix early exception handling with CONFIG_PERF_COUNTERS
    
    The PERFC_INCR() macro uses current->processor, but current is not valid
    during early boot.  This causes the following crash to occur if
    e.g. rdmsr_safe() has to recover from a #GP fault.
    
      (XEN) Early fatal page fault at e008:ffff82d0803b1a39 (cr2=0000000000000004, ec=0000)
      (XEN) ----[ Xen-4.14-unstable  x86_64  debug=y   Not tainted ]----
      (XEN) CPU:    0
      (XEN) RIP:    e008:[<ffff82d0803b1a39>] x86_64/entry.S#handle_exception_saved+0x64/0xb8
      ...
      (XEN) Xen call trace:
      (XEN)    [<ffff82d0803b1a39>] R x86_64/entry.S#handle_exception_saved+0x64/0xb8
      (XEN)    [<ffff82d0806394fe>] F __start_xen+0x2cd/0x2980
      (XEN)    [<ffff82d0802000ec>] F __high_start+0x4c/0x4e
    
    Furthermore, the PERFC_INCR() macro is wildly inefficient.  There has been a
    single caller for many releases now, so inline it and delete the macro
    completely.
    
    There is no need to reference current at all.  What is actually needed is the
    per_cpu_offset which can be obtained directly from the top-of-stack block.
    This simplifies the counter handling to 3 instructions and no spilling to the
    stack at all.
    
    The same breakage from above is now handled properly:
    
      (XEN) traps.c:1591: GPF (0000): ffff82d0806394fe [__start_xen+0x2cd/0x2980] -> ffff82d0803b3bfb
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Julien Grall <jgrall@amazon.com>
    master commit: 615bfe42c6d183a0e54a0525ef82b58580d01619
    master date: 2020-04-16 09:48:38 +0100
---
 xen/arch/x86/x86_64/asm-offsets.c |  1 +
 xen/arch/x86/x86_64/entry.S       |  6 +++++-
 xen/include/asm-x86/asm_defns.h   | 16 ----------------
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 33930ce97c..5df15e26f1 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -112,6 +112,7 @@ void __dummy__(void)
     OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
     OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
     OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
+    OFFSET(CPUINFO_per_cpu_offset, struct cpu_info, per_cpu_offset);
     OFFSET(CPUINFO_cr4, struct cpu_info, cr4);
     OFFSET(CPUINFO_xen_cr3, struct cpu_info, xen_cr3);
     OFFSET(CPUINFO_pv_cr3, struct cpu_info, pv_cr3);
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index e8eae3b08d..94d9a51a17 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -682,7 +682,11 @@ handle_exception_saved:
 1:      movq  %rsp,%rdi
         movzbl UREGS_entry_vector(%rsp),%eax
         leaq  exception_table(%rip),%rdx
-        PERFC_INCR(exceptions, %rax, %rbx)
+#ifdef CONFIG_PERF_COUNTERS
+        lea   per_cpu__perfcounters(%rip), %rcx
+        add   STACK_CPUINFO_FIELD(per_cpu_offset)(%r14), %rcx
+        incl  ASM_PERFC_exceptions * 4(%rcx, %rax, 4)
+#endif
         mov   (%rdx, %rax, 8), %rdx
         INDIRECT_CALL %rdx
         mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h
index e688cf1c16..1364a14b98 100644
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -334,22 +334,6 @@ static always_inline void stac(void)
 
 #endif
 
-#ifdef CONFIG_PERF_COUNTERS
-#define PERFC_INCR(_name,_idx,_cur)             \
-        pushq _cur;                             \
-        movslq VCPU_processor(_cur),_cur;       \
-        pushq %rdx;                             \
-        leaq __per_cpu_offset(%rip),%rdx;       \
-        movq (%rdx,_cur,8),_cur;                \
-        leaq per_cpu__perfcounters(%rip),%rdx;  \
-        addq %rdx,_cur;                         \
-        popq %rdx;                              \
-        incl ASM_PERFC_##_name*4(_cur,_idx,4);  \
-        popq _cur
-#else
-#define PERFC_INCR(_name,_idx,_cur)
-#endif
-
 /* Work around AMD erratum #88 */
 #define safe_swapgs                             \
         "mfence; swapgs;"
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 14:00:31 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 14:00:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT4JD-00061O-JN; Mon, 27 Apr 2020 14:00:31 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT4JC-00061F-Pz
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:30 +0000
X-Inumbo-ID: 7400493e-888f-11ea-9797-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7400493e-888f-11ea-9797-12813bfff9fa;
 Mon, 27 Apr 2020 14:00:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=TBr2vAJB/uZEEgS4G4JgX0IkIwTcNUAqVezpjpKegxM=; b=ASuWuE9fmvwOomg50uzl/k7HGA
 Y3lUhMM4piG1bcA3sluWhWGtCmDhgs+Lv10LgF58HwUX0oayGTPVe+SdBtDebiRnJ987fIbTfURCk
 117IK6HzSSzsihCOgn3vLH83lPfe5/bZYfcfwXTlhZkwoqdKJcdXDBu2Ib/r+j7Wfj94=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4JB-00009J-H6
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:29 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4JB-000841-Ft
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:29 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] hvmloader: enable MMIO and I/O decode,
 after all resource allocation
Message-Id: <E1jT4JB-000841-Ft@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 14:00:29 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6bf8bdd5c66148c991b9e046491956b84fdb0fb5
Author:     Harsha Shamsundara Havanur <havanur@amazon.com>
AuthorDate: Mon Apr 27 15:52:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:52:45 2020 +0200

    hvmloader: enable MMIO and I/O decode, after all resource allocation
    
    It was observed that PCI MMIO and/or IO BARs were programmed with
    memory and I/O decodes (bits 0 and 1 of PCI COMMAND register) enabled,
    during PCI setup phase. This resulted in incorrect memory mapping as
    soon as the lower half of the 64 bit bar is programmed.
    This displaced any RAM mappings under 4G. After the
    upper half is programmed PCI memory mapping is restored to its
    intended high mem location, but the RAM displaced is not restored.
    The OS then continues to boot and function until it tries to access
    the displaced RAM at which point it suffers a page fault and crashes.
    
    This patch address the issue by deferring enablement of memory and
    I/O decode in command register until all the resources, like interrupts
    I/O and/or MMIO BARs for all the PCI device functions are programmed,
    in the descending order of memory requested.
    
    Signed-off-by: Harsha Shamsundara Havanur <havanur@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: a8e0c228c79f3a000e19183090eb41fca173b034
    master date: 2020-04-16 10:58:46 +0200
---
 tools/firmware/hvmloader/pci.c | 49 +++++++++++++++++++++++++++++++-----------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
index 0b708bf578..dcd097a866 100644
--- a/tools/firmware/hvmloader/pci.c
+++ b/tools/firmware/hvmloader/pci.c
@@ -84,6 +84,7 @@ void pci_setup(void)
     uint32_t vga_devfn = 256;
     uint16_t class, vendor_id, device_id;
     unsigned int bar, pin, link, isa_irq;
+    uint8_t pci_devfn_decode_type[256] = {};
 
     /* Resources assignable to PCI devices via BARs. */
     struct resource {
@@ -120,6 +121,13 @@ void pci_setup(void)
      */
     bool allow_memory_relocate = 1;
 
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_IO !=
+                 PCI_COMMAND_IO);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MEMORY !=
+                 PCI_COMMAND_MEMORY);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MASTER !=
+                 PCI_COMMAND_MASTER);
+
     s = xenstore_read(HVM_XS_ALLOW_MEMORY_RELOCATE, NULL);
     if ( s )
         allow_memory_relocate = strtoll(s, NULL, 0);
@@ -208,6 +216,20 @@ void pci_setup(void)
             break;
         }
 
+        /*
+         * It is recommended that BAR programming be done whilst decode
+         * bits are cleared to avoid incorrect mappings being created.
+         * When 64-bit memory BAR is programmed, first by writing the
+         * lower half and then the upper half, which maps to an address
+         * under 4G, as soon as lower half is wriiten, replacing any RAM
+         * mapped in that address, which is not restored back after the
+         * upper half is written and PCI memory is correctly mapped to
+         * its intended high mem address.
+         */
+        cmd = pci_readw(devfn, PCI_COMMAND);
+        cmd &= ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
+        pci_writew(devfn, PCI_COMMAND, cmd);
+
         /* Map the I/O memory and port resources. */
         for ( bar = 0; bar < 7; bar++ )
         {
@@ -289,10 +311,8 @@ void pci_setup(void)
                    devfn>>3, devfn&7, 'A'+pin-1, isa_irq);
         }
 
-        /* Enable bus mastering. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_MASTER;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+        /* Enable bus master for this function later */
+        pci_devfn_decode_type[devfn] = PCI_COMMAND_MASTER;
     }
 
     if ( mmio_hole_size )
@@ -497,16 +517,12 @@ void pci_setup(void)
                PRIllx_arg(bar_sz),
                bar_data_upper, bar_data);
 			
-
-        /* Now enable the memory or I/O mapping. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
         if ( (bar_reg == PCI_ROM_ADDRESS) ||
              ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
               PCI_BASE_ADDRESS_SPACE_MEMORY) )
-            cmd |= PCI_COMMAND_MEMORY;
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_MEMORY;
         else
-            cmd |= PCI_COMMAND_IO;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_IO;
     }
 
     if ( pci_hi_mem_start )
@@ -526,10 +542,17 @@ void pci_setup(void)
          * has IO enabled, even if there is no I/O BAR on that
          * particular device.
          */
-        cmd = pci_readw(vga_devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_IO;
-        pci_writew(vga_devfn, PCI_COMMAND, cmd);
+        pci_devfn_decode_type[vga_devfn] |= PCI_COMMAND_IO;
     }
+
+    /* Enable bus master, memory and I/O decode for all valid functions. */
+    for ( devfn = 0; devfn < 256; devfn++ )
+        if ( pci_devfn_decode_type[devfn] )
+        {
+            cmd = pci_readw(devfn, PCI_COMMAND);
+            cmd |= pci_devfn_decode_type[devfn];
+            pci_writew(devfn, PCI_COMMAND, cmd);
+        }
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 14:00:41 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 14:00:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT4JN-00062Z-L1; Mon, 27 Apr 2020 14:00:41 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT4JM-00062O-JY
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:40 +0000
X-Inumbo-ID: 7a00c82c-888f-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 7a00c82c-888f-11ea-ae69-bc764e2007e4;
 Mon, 27 Apr 2020 14:00:39 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=mGFAHx4qrQBjydJp6dtqGVuer2K/XCKSOoDgtnpccOk=; b=Kfs8b7P1iKQRBGLrBPX1Ml5iu8
 vPdMU2dO0HzP06Um6ts29ZIufk7wOEhIWKrZpQBhsGkVKF94KnaEeAMw9UZo+dc6oUkZ4IkiiRyt0
 2YZX0uKLVRvHeFsLqkIuks5hNRfKWFOKrmtBj6RsWgDz9ZfoBBMhpf82Tb4D1lHfmzc4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4JL-00009S-K4
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:39 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4JL-000857-Iw
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:39 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/vtd: relax EPT page table sharing check
Message-Id: <E1jT4JL-000857-Iw@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 14:00:39 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 55d65346d70b779f082b7764480e745cb51e675f
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Mon Apr 27 15:53:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:53:26 2020 +0200

    x86/vtd: relax EPT page table sharing check
    
    The EPT page tables can be shared with the IOMMU as long as the page
    sizes supported by EPT are also supported by the IOMMU.
    
    Current code checks that both the IOMMU and EPT support the same page
    sizes, but this is not strictly required, the IOMMU supporting more
    page sizes than EPT is fine and shouldn't block page table sharing.
    
    This is likely not a common case (IOMMU supporting more page sizes
    than EPT), but should still be fixed for correctness.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    master commit: 3957e12c02670b97855ef0933b373f99993fa598
    master date: 2020-04-21 10:54:56 +0200
---
 xen/drivers/passthrough/vtd/iommu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 77ba8e14a6..ed50d34c91 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1957,8 +1957,8 @@ static int __init vtd_ept_page_compatible(struct iommu *iommu)
     if ( rdmsr_safe(MSR_IA32_VMX_EPT_VPID_CAP, ept_cap) != 0 ) 
         return 0;
 
-    return (ept_has_2mb(ept_cap) && opt_hap_2mb) == cap_sps_2mb(vtd_cap) &&
-           (ept_has_1gb(ept_cap) && opt_hap_1gb) == cap_sps_1gb(vtd_cap);
+    return (ept_has_2mb(ept_cap) && opt_hap_2mb) <= cap_sps_2mb(vtd_cap) &&
+           (ept_has_1gb(ept_cap) && opt_hap_1gb) <= cap_sps_1gb(vtd_cap);
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 14:00:52 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 14:00:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT4JY-00063j-Mj; Mon, 27 Apr 2020 14:00:52 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT4JX-00063a-9Q
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:51 +0000
X-Inumbo-ID: 803472ca-888f-11ea-9797-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 803472ca-888f-11ea-9797-12813bfff9fa;
 Mon, 27 Apr 2020 14:00:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=rLCaKViUtbWL0B46zJJi1GgXKLIVh9FbVtrYRztvYz0=; b=v24wAUpHKbOzmY+A6sWmrmDukq
 qJwtBsw9b2IvDzn3OHgCKbE23/EAWALLzQ4F+Y8GKX0fNM/H8Nx6IGeUD0OspsnOj31eh4lfeIZk/
 jrRa40u9ao6dSsQ0anB2orK80A7OcdTu41Gf3vgaCthcAb4GcZkh5PNkzTSmZhWhcmSs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4JW-00009b-09
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:50 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4JV-00086a-T1
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:00:49 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86: Enumeration for Control-flow Enforcement
 Technology
Message-Id: <E1jT4JV-00086a-T1@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 14:00:49 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a6366e0f884db4302354ce7372ece93aeb95207f
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 15:54:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:54:14 2020 +0200

    x86: Enumeration for Control-flow Enforcement Technology
    
    The CET spec has been published and guest kernels are starting to get support.
    Introduce the CPUID and MSRs, and fully block the MSRs from guest use.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
    master commit: 4803a67114279a656a54a23cebed646da32efeb6
    master date: 2020-04-21 16:52:03 +0100
---
 tools/libxl/libxl_cpuid.c                   | 2 ++
 tools/misc/xen-cpuid.c                      | 3 ++-
 xen/arch/x86/msr.c                          | 6 ++++++
 xen/include/asm-x86/msr-index.h             | 8 ++++++++
 xen/include/public/arch-x86/cpufeatureset.h | 2 ++
 5 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/tools/libxl/libxl_cpuid.c b/tools/libxl/libxl_cpuid.c
index 5a1702d703..4cf0f0738d 100644
--- a/tools/libxl/libxl_cpuid.c
+++ b/tools/libxl/libxl_cpuid.c
@@ -199,10 +199,12 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"umip",         0x00000007,  0, CPUID_REG_ECX,  2,  1},
         {"pku",          0x00000007,  0, CPUID_REG_ECX,  3,  1},
         {"ospke",        0x00000007,  0, CPUID_REG_ECX,  4,  1},
+        {"cet-ss",       0x00000007,  0, CPUID_REG_ECX,  7,  1},
 
         {"avx512-4vnniw",0x00000007,  0, CPUID_REG_EDX,  2,  1},
         {"avx512-4fmaps",0x00000007,  0, CPUID_REG_EDX,  3,  1},
         {"md-clear",     0x00000007,  0, CPUID_REG_EDX, 10,  1},
+        {"cet-ibt",      0x00000007,  0, CPUID_REG_EDX, 20,  1},
         {"ibrsb",        0x00000007,  0, CPUID_REG_EDX, 26,  1},
         {"stibp",        0x00000007,  0, CPUID_REG_EDX, 27,  1},
         {"l1d-flush",    0x00000007,  0, CPUID_REG_EDX, 28,  1},
diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c
index 40b739d20d..2a00697643 100644
--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -123,7 +123,7 @@ static const char *str_7c0[32] =
     [ 0] = "prefetchwt1",      [ 1] = "avx512_vbmi",
     [ 2] = "umip",             [ 3] = "pku",
     [ 4] = "ospke",            [ 5] = "waitpkg",
-    [ 6] = "avx512_vbmi2",
+    [ 6] = "avx512_vbmi2",     [ 7] = "cet-ss",
     [ 8] = "gfni",             [ 9] = "vaes",
     [10] = "vpclmulqdq",       [11] = "avx512_vnni",
     [12] = "avx512_bitalg",
@@ -158,6 +158,7 @@ static const char *str_7d0[32] =
     /* 12 */                [13] = "tsx-force-abort",
 
     [18] = "pconfig",
+    [20] = "cet-ibt",
 
     [26] = "ibrsb",         [27] = "stibp",
     [28] = "l1d_flush",     [29] = "arch_caps",
diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index 1e8a3b536a..4888fff16c 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -133,6 +133,9 @@ int guest_rdmsr(const struct vcpu *v, uint32_t msr, uint64_t *val)
         /* Write-only */
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
         /* Not offered to guests. */
         goto gp_fault;
 
@@ -270,6 +273,9 @@ int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val)
         /* Read-only */
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
         /* Not offered to guests. */
         goto gp_fault;
 
diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h
index 3971b992d3..7693c4a71a 100644
--- a/xen/include/asm-x86/msr-index.h
+++ b/xen/include/asm-x86/msr-index.h
@@ -179,6 +179,14 @@
 #define MSR_IA32_VMX_TRUE_ENTRY_CTLS            0x490
 #define MSR_IA32_VMX_VMFUNC                     0x491
 
+#define MSR_U_CET                           0x000006a0
+#define MSR_S_CET                           0x000006a2
+#define MSR_PL0_SSP                         0x000006a4
+#define MSR_PL1_SSP                         0x000006a5
+#define MSR_PL2_SSP                         0x000006a6
+#define MSR_PL3_SSP                         0x000006a7
+#define MSR_INTERRUPT_SSP_TABLE             0x000006a8
+
 /* K7/K8 MSRs. Not complete. See the architecture manual for a more
    complete list. */
 #define MSR_K7_EVNTSEL0			0xc0010000
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 55231d4b3b..865a435d2c 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -228,6 +228,7 @@ XEN_CPUFEATURE(AVX512VBMI,    6*32+ 1) /*A  AVX-512 Vector Byte Manipulation Ins
 XEN_CPUFEATURE(UMIP,          6*32+ 2) /*S  User Mode Instruction Prevention */
 XEN_CPUFEATURE(PKU,           6*32+ 3) /*H  Protection Keys for Userspace */
 XEN_CPUFEATURE(OSPKE,         6*32+ 4) /*!  OS Protection Keys Enable */
+XEN_CPUFEATURE(CET_SS,        6*32+ 7) /*   CET - Shadow Stacks */
 XEN_CPUFEATURE(AVX512_VPOPCNTDQ, 6*32+14) /*A  POPCNT for vectors of DW/QW */
 XEN_CPUFEATURE(RDPID,         6*32+22) /*A  RDPID instruction */
 
@@ -244,6 +245,7 @@ XEN_CPUFEATURE(AVX512_4VNNIW, 9*32+ 2) /*A  AVX512 Neural Network Instructions *
 XEN_CPUFEATURE(AVX512_4FMAPS, 9*32+ 3) /*A  AVX512 Multiply Accumulation Single Precision */
 XEN_CPUFEATURE(MD_CLEAR,      9*32+10) /*A  VERW clears microarchitectural buffers */
 XEN_CPUFEATURE(TSX_FORCE_ABORT, 9*32+13) /* MSR_TSX_FORCE_ABORT.RTM_ABORT */
+XEN_CPUFEATURE(CET_IBT,       9*32+20) /*   CET - Indirect Branch Tracking */
 XEN_CPUFEATURE(IBRSB,         9*32+26) /*A  IBRS and IBPB support (used by Intel) */
 XEN_CPUFEATURE(STIBP,         9*32+27) /*A  STIBP */
 XEN_CPUFEATURE(L1D_FLUSH,     9*32+28) /*S  MSR_FLUSH_CMD and L1D flush. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 14:01:01 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 14:01:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT4Jh-00064o-Pc; Mon, 27 Apr 2020 14:01:01 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT4Jh-00064h-54
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:01 +0000
X-Inumbo-ID: 86449bf4-888f-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 86449bf4-888f-11ea-b9cf-bc764e2007e4;
 Mon, 27 Apr 2020 14:01:00 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=+3VxFN/xvwmNzGWizRhVPy5Z84kRzwZYquJf6rIxLl4=; b=15d/Sk9RDOTiurx166kozMr3Bb
 eHDOLu28h93tyUysdCfaxQxOpUgeB195yWERTbXnRhM5PGJ+ek1NIi0yCvpTtz7b27D+fg0DTwIpp
 7UdhvwyqlOFI7v6LQ6aW+zU5nS+vjTMcV5NFrx6NbieQ6BJ4DOz6t2/eo5mKCuuLQOyg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4Jg-00009k-5m
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:00 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4Jg-00087L-4k
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:00 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86/HVM: expose VM assist hypercall
Message-Id: <E1jT4Jg-00087L-4k@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 14:01:00 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8d2ea0f4c830a3a6a7e7a19aa4f7d8a9fd854521
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:55:51 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:55:51 2020 +0200

    x86/HVM: expose VM assist hypercall
    
    In preparation for the addition of VMASST_TYPE_runstate_update_flag
    commit 72c538cca957 ("arm: add support for vm_assist hypercall") enabled
    the hypercall for Arm. I consider it not logical that it then isn't also
    exposed to x86 HVM guests (with the same single feature permitted to be
    enabled as Arm has); Linux actually tries to use it afaict.
    
    Rather than introducing yet another thin wrapper around vm_assist(),
    make that function the main handler, requiring a per-arch
    arch_vm_assist_valid_mask() definition instead.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: f13404d57f55a97838f1c16a366fbc3231ec21f1
    master date: 2020-04-22 12:58:25 +0200
---
 xen/arch/x86/domain.c        |  3 +++
 xen/arch/x86/hvm/hypercall.c |  1 +
 xen/arch/x86/pv/hypercall.c  |  2 +-
 xen/common/compat/kernel.c   |  5 -----
 xen/common/domain.c          | 13 ++++++++-----
 xen/common/kernel.c          |  7 -------
 xen/include/asm-arm/config.h |  2 --
 xen/include/asm-arm/domain.h |  2 ++
 xen/include/asm-x86/config.h | 11 -----------
 xen/include/asm-x86/domain.h | 19 +++++++++++++++++++
 xen/include/xen/hypercall.h  |  2 --
 xen/include/xen/lib.h        |  2 --
 12 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 019fc8ce02..745da387f6 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -875,6 +875,9 @@ int arch_set_info_guest(
         v->arch.dr6 = c(debugreg[6]);
         v->arch.dr7 = c(debugreg[7]);
 
+        if ( v->vcpu_id == 0 )
+            d->vm_assist = c.nat->vm_assist;
+
         hvm_set_info_guest(v);
         goto out;
     }
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 5bb1750595..7fcfc92b39 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -120,6 +120,7 @@ static long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
 static const hypercall_table_t hvm_hypercall_table[] = {
     HVM_CALL(memory_op),
     HVM_CALL(grant_table_op),
+    HYPERCALL(vm_assist),
     COMPAT_CALL(vcpu_op),
     HVM_CALL(physdev_op),
     COMPAT_CALL(xen_version),
diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c
index f452dd5c04..8bcd43dda3 100644
--- a/xen/arch/x86/pv/hypercall.c
+++ b/xen/arch/x86/pv/hypercall.c
@@ -54,7 +54,7 @@ const hypercall_table_t pv_hypercall_table[] = {
     HYPERCALL(console_io),
     COMPAT_CALL(physdev_op_compat),
     COMPAT_CALL(grant_table_op),
-    COMPAT_CALL(vm_assist),
+    HYPERCALL(vm_assist),
     COMPAT_CALL(update_va_mapping_otherdomain),
     COMPAT_CALL(iret),
     COMPAT_CALL(vcpu_op),
diff --git a/xen/common/compat/kernel.c b/xen/common/compat/kernel.c
index 64232669d2..78ff6f9e77 100644
--- a/xen/common/compat/kernel.c
+++ b/xen/common/compat/kernel.c
@@ -37,11 +37,6 @@ CHECK_TYPE(capabilities_info);
 
 CHECK_TYPE(domain_handle);
 
-#ifdef COMPAT_VM_ASSIST_VALID
-#undef VM_ASSIST_VALID
-#define VM_ASSIST_VALID COMPAT_VM_ASSIST_VALID
-#endif
-
 #define DO(fn) int compat_##fn
 #define COMPAT
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 111a6680b7..7f8fc43cbe 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1556,20 +1556,23 @@ long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
-#ifdef VM_ASSIST_VALID
-long vm_assist(struct domain *p, unsigned int cmd, unsigned int type,
-               unsigned long valid)
+#ifdef arch_vm_assist_valid_mask
+long do_vm_assist(unsigned int cmd, unsigned int type)
 {
+    struct domain *currd = current->domain;
+    const unsigned long valid = arch_vm_assist_valid_mask(currd);
+
     if ( type >= BITS_PER_LONG || !test_bit(type, &valid) )
         return -EINVAL;
 
     switch ( cmd )
     {
     case VMASST_CMD_enable:
-        set_bit(type, &p->vm_assist);
+        set_bit(type, &currd->vm_assist);
         return 0;
+
     case VMASST_CMD_disable:
-        clear_bit(type, &p->vm_assist);
+        clear_bit(type, &currd->vm_assist);
         return 0;
     }
 
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 612575430f..9cf8c0467a 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -570,13 +570,6 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return -ENOSYS;
 }
 
-#ifdef VM_ASSIST_VALID
-DO(vm_assist)(unsigned int cmd, unsigned int type)
-{
-    return vm_assist(current->domain, cmd, type, VM_ASSIST_VALID);
-}
-#endif
-
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h
index bc89e84f4d..fbb4b23a69 100644
--- a/xen/include/asm-arm/config.h
+++ b/xen/include/asm-arm/config.h
@@ -195,8 +195,6 @@ extern unsigned long frametable_virt_end;
 #define watchdog_disable() ((void)0)
 #define watchdog_enable()  ((void)0)
 
-#define VM_ASSIST_VALID          (1UL << VMASST_TYPE_runstate_update_flag)
-
 #endif /* __ARM_CONFIG_H__ */
 /*
  * Local variables:
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index 5b49509e80..927f859cbc 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -265,6 +265,8 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
+#define arch_vm_assist_valid_mask(d) (1UL << VMASST_TYPE_runstate_update_flag)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 9ef9d03ca7..feeb456bee 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -310,17 +310,6 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
-#define NATIVE_VM_ASSIST_VALID   ((1UL << VMASST_TYPE_4gb_segments)        | \
-                                  (1UL << VMASST_TYPE_4gb_segments_notify) | \
-                                  (1UL << VMASST_TYPE_writable_pagetables) | \
-                                  (1UL << VMASST_TYPE_pae_extended_cr3)    | \
-                                  (1UL << VMASST_TYPE_architectural_iopl)  | \
-                                  (1UL << VMASST_TYPE_runstate_update_flag)| \
-                                  (1UL << VMASST_TYPE_m2p_strict))
-#define VM_ASSIST_VALID          NATIVE_VM_ASSIST_VALID
-#define COMPAT_VM_ASSIST_VALID   (NATIVE_VM_ASSIST_VALID & \
-                                  ((1UL << COMPAT_BITS_PER_LONG) - 1))
-
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 2cfce7b36b..86d6e2b226 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -703,6 +703,25 @@ static inline void pv_inject_sw_interrupt(unsigned int vector)
     pv_inject_event(&event);
 }
 
+#define PV32_VM_ASSIST_MASK ((1UL << VMASST_TYPE_4gb_segments)        | \
+                             (1UL << VMASST_TYPE_4gb_segments_notify) | \
+                             (1UL << VMASST_TYPE_writable_pagetables) | \
+                             (1UL << VMASST_TYPE_pae_extended_cr3)    | \
+                             (1UL << VMASST_TYPE_architectural_iopl)  | \
+                             (1UL << VMASST_TYPE_runstate_update_flag))
+/*
+ * Various of what PV32_VM_ASSIST_MASK has isn't really applicable to 64-bit,
+ * but we can't make such requests fail all of the sudden.
+ */
+#define PV64_VM_ASSIST_MASK (PV32_VM_ASSIST_MASK                      | \
+                             (1UL << VMASST_TYPE_m2p_strict))
+#define HVM_VM_ASSIST_MASK  (1UL << VMASST_TYPE_runstate_update_flag)
+
+#define arch_vm_assist_valid_mask(d) \
+    (is_hvm_domain(d) ? HVM_VM_ASSIST_MASK \
+                      : is_pv_32bit_domain(d) ? PV32_VM_ASSIST_MASK \
+                                              : PV64_VM_ASSIST_MASK)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index 6154c48cb8..5fb29eb003 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -199,8 +199,6 @@ extern int compat_xsm_op(
 
 extern int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg);
 
-extern int compat_vm_assist(unsigned int cmd, unsigned int type);
-
 DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t);
 extern int compat_multicall(
     XEN_GUEST_HANDLE_PARAM(multicall_entry_compat_t) call_list,
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 6529f12dae..11bf8407a2 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -106,8 +106,6 @@ extern void guest_printk(const struct domain *d, const char *format, ...)
     __attribute__ ((format (printf, 2, 3)));
 extern void noreturn panic(const char *format, ...)
     __attribute__ ((format (printf, 1, 2)));
-extern long vm_assist(struct domain *, unsigned int cmd, unsigned int type,
-                      unsigned long valid);
 extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst);
 extern int printk_ratelimit(void);
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 14:01:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 14:01:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT4Ju-0006AT-RW; Mon, 27 Apr 2020 14:01:14 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT4Jt-00067l-Jg
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:13 +0000
X-Inumbo-ID: 8bd6d62d-888f-11ea-9797-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 8bd6d62d-888f-11ea-9797-12813bfff9fa;
 Mon, 27 Apr 2020 14:01:10 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=M1I/bZAlCxbTaKQALY01YmWFQ4evh7tbUa/Vyqno/iE=; b=MhVQcRpb6s6hXOOEYLphHvrkRQ
 O6xOJdurkdUXFh3OtBcQh+S5xvCIhxjPOG4hAMqcsBs4lHSBFEXlqKVQzATYIZdHIRLdkj4kIp6DD
 MKDOXPoQVpcCMDNfB8WYoC3wvwBXaBQEvlve1LkKgl0NTKpzmkZNaC3lie4nkKp7Wz8w=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4Jq-0000AC-8o
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:10 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4Jq-00089J-7n
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:10 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] x86: validate VM assist value in
 arch_set_info_guest()
Message-Id: <E1jT4Jq-00089J-7n@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 14:01:10 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d32cbbc141837600aa74f331c31a06df3777a2fb
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:57:13 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:57:13 2020 +0200

    x86: validate VM assist value in arch_set_info_guest()
    
    While I can't spot anything that would go wrong, just like the
    respective hypercall only permits applicable bits to be set, we should
    also do so when loading guest context.
    
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: a62c6fe05c4ae905b7d4cb0ca946508b7f96d522
    master date: 2020-04-22 13:01:10 +0200
---
 xen/arch/x86/domain.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 745da387f6..6b0cb689a1 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -868,6 +868,9 @@ int arch_set_info_guest(
         }
     }
 
+    if ( v->vcpu_id == 0 && (c(vm_assist) & ~arch_vm_assist_valid_mask(d)) )
+        return -EINVAL;
+
     if ( is_hvm_domain(d) )
     {
         for ( i = 0; i < ARRAY_SIZE(v->arch.dr); ++i )
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 14:01:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 14:01:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jT4K2-0006Bj-TY; Mon, 27 Apr 2020 14:01:22 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jT4K1-0006Bb-Ee
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:21 +0000
X-Inumbo-ID: 91c84af3-888f-11ea-9797-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 91c84af3-888f-11ea-9797-12813bfff9fa;
 Mon, 27 Apr 2020 14:01:20 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=MHcQgW7YZ7FS9fmcFiHCGAlWw5rlM0VXFx51YAatbpw=; b=csgznCh1u7jwTICNV7Wpl3t4z+
 saNS01KQJ9lDum0zrrHTQdwcy9ZCzBhvARcuxGOyjPkwyxAurvvyRJ8+95hmStj+E5OqpmGSY4I9L
 H+uJ4vSTGZbBqS8AzP25shS9KRUQsH72/FUnax2X1HiGeaD7zszIw/Gx36FO3/wzW0l8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4K0-0000An-BZ
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:20 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jT4K0-0008AC-AT
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 14:01:20 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging-4.12] build,xsm: fix multiple call
Message-Id: <E1jT4K0-0008AC-AT@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 14:01:20 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e6a2681148382e9227f54b70a5df8e895914c877
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Mon Apr 27 15:58:42 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:58:42 2020 +0200

    build,xsm: fix multiple call
    
    Both script mkflask.sh and mkaccess_vector.sh generates multiple
    files. Exploits the 'multi-target pattern rule' trick to call each
    scripts only once.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 52f3f319851e40892fbafeae53e512c7d61f03d0
    master date: 2020-04-23 09:59:05 +0200
---
 xen/xsm/flask/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index f5ffab1226..f5b378f3ac 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -21,10 +21,10 @@ ALL_H_FILES = $(FLASK_H_FILES) $(AV_H_FILES)
 
 $(obj-y) ss/built_in.o: $(ALL_H_FILES)
 
-$(FLASK_H_FILES): $(FLASK_H_DEPEND)
+$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkflask.sh $(AWK) include $(FLASK_H_DEPEND)
 
-$(AV_H_FILES): $(AV_H_DEPEND)
+$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkaccess_vector.sh $(AWK) $(AV_H_DEPEND)
 
 obj-$(CONFIG_XSM_FLASK_POLICY) += policy.o
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.12


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 20:55:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 20:55:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTAmT-0004Cf-8t; Mon, 27 Apr 2020 20:55:09 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTAmS-0004Ca-1T
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 20:55:08 +0000
X-Inumbo-ID: 5f04a810-88c9-11ea-97da-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5f04a810-88c9-11ea-97da-12813bfff9fa;
 Mon, 27 Apr 2020 20:55:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=6CEFB1Trnd/PE5goYl/RTPXUAVmsP3SvQL6Nb4xo1W0=; b=hs7mGhgIiTWj/+8SePs0cWEiP9
 /iGTmTR6hR0AJIpespJc9xmN+9OAqS/fiv/Ph1kOfV1PXylqQXfr/kHD/OFwwjCEloBx/wvUziMoo
 obxTKUuJzvf+gr/AvvzMK93SmT7TXy1V/Efui546vwHUMjhJzzlKH3wicYlkaJli+q5M=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTAmP-0000vS-3w
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 20:55:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTAmP-0006se-2M
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 20:55:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/S3: Use percpu_traps_init() rather than opencoding
 SYSCALL/SYSENTER restoration
Message-Id: <E1jTAmP-0006se-2M@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 20:55:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d059260755fdec1614136b39fc65ddc48f5fd729
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 20 14:54:30 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Mon Apr 27 21:30:58 2020 +0100

    x86/S3: Use percpu_traps_init() rather than opencoding SYSCALL/SYSENTER restoration
    
    This make the S3 BSP path consistent with AP paths, and reduces the amount of
    state needing stashing specially.  Also, it takes care of re-setting up Xen's
    LBR configuration if requested, which was missing previously.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/acpi/power.c   |  3 +++
 xen/arch/x86/acpi/suspend.c | 24 ------------------------
 2 files changed, 3 insertions(+), 24 deletions(-)

diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c
index 3ad7dfc9a3..6dfd4c7891 100644
--- a/xen/arch/x86/acpi/power.c
+++ b/xen/arch/x86/acpi/power.c
@@ -297,6 +297,9 @@ static int enter_state(u32 state)
     ci->spec_ctrl_flags |= (default_spec_ctrl_flags & SCF_ist_wrmsr);
     spec_ctrl_exit_idle(ci);
 
+    /* (re)initialise SYSCALL/SYSENTER state, amongst other things. */
+    percpu_traps_init();
+
  done:
     spin_debug_enable();
     local_irq_restore(flags);
diff --git a/xen/arch/x86/acpi/suspend.c b/xen/arch/x86/acpi/suspend.c
index 32d0f71ffd..3c1a3cbb34 100644
--- a/xen/arch/x86/acpi/suspend.c
+++ b/xen/arch/x86/acpi/suspend.c
@@ -15,8 +15,6 @@
 #include <asm/xstate.h>
 #include <xen/hypercall.h>
 
-static unsigned long saved_lstar, saved_cstar;
-static unsigned long saved_sysenter_esp, saved_sysenter_eip;
 static unsigned long saved_fs_base, saved_gs_base, saved_kernel_gs_base;
 static uint64_t saved_xcr0;
 
@@ -25,14 +23,6 @@ void save_rest_processor_state(void)
     saved_fs_base = rdfsbase();
     saved_gs_base = rdgsbase();
     rdmsrl(MSR_SHADOW_GS_BASE, saved_kernel_gs_base);
-    rdmsrl(MSR_CSTAR, saved_cstar);
-    rdmsrl(MSR_LSTAR, saved_lstar);
-
-    if ( cpu_has_sep )
-    {
-        rdmsrl(MSR_IA32_SYSENTER_ESP, saved_sysenter_esp);
-        rdmsrl(MSR_IA32_SYSENTER_EIP, saved_sysenter_eip);
-    }
 
     if ( cpu_has_xsave )
         saved_xcr0 = get_xcr0();
@@ -46,24 +36,10 @@ void restore_rest_processor_state(void)
     /* Restore full CR4 (inc MCE) now that the IDT is in place. */
     write_cr4(mmu_cr4_features);
 
-    /* Recover syscall MSRs */
-    wrmsrl(MSR_LSTAR, saved_lstar);
-    wrmsrl(MSR_CSTAR, saved_cstar);
-    wrmsrl(MSR_STAR, XEN_MSR_STAR);
-    wrmsrl(MSR_SYSCALL_MASK, XEN_SYSCALL_MASK);
-
     wrfsbase(saved_fs_base);
     wrgsbase(saved_gs_base);
     wrmsrl(MSR_SHADOW_GS_BASE, saved_kernel_gs_base);
 
-    if ( cpu_has_sep )
-    {
-        /* Recover sysenter MSRs */
-        wrmsrl(MSR_IA32_SYSENTER_ESP, saved_sysenter_esp);
-        wrmsrl(MSR_IA32_SYSENTER_EIP, saved_sysenter_eip);
-        wrmsr(MSR_IA32_SYSENTER_CS, __HYPERVISOR_CS, 0);
-    }
-
     if ( cpu_has_xsave && !set_xcr0(saved_xcr0) )
         BUG();
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 20:55:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 20:55:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTAmb-0004D4-Ao; Mon, 27 Apr 2020 20:55:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTAma-0004Cy-Ak
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 20:55:16 +0000
X-Inumbo-ID: 6505b29a-88c9-11ea-97da-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6505b29a-88c9-11ea-97da-12813bfff9fa;
 Mon, 27 Apr 2020 20:55:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=qOt0XEqXFk56QRcktG0/GbWG/c2RzhCL7GELoYa660c=; b=uNcJEr6jUK7XXeZSQK9WXk768W
 dbNrM6n/brglxeY6Fob1FcOga8JsQW7mckFOCdG8lwsYSprHD6dgoWpwXAfzxAfh5u977x7jMb399
 hAvZJAZFk7MIpc1K6eWDA5lMTIgYD2j0ImrxexXtLoF6f8wRf6aOYuJxgnMbtCHvE1to=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTAmZ-0000vV-7K
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 20:55:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTAmZ-0006tX-5q
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 20:55:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/pvh: Override opt_console_xen earlier
Message-Id: <E1jTAmZ-0006tX-5q@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 20:55:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit dd0882f912005b56653013025ebd160862e360ad
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 13:19:15 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Mon Apr 27 21:31:48 2020 +0100

    x86/pvh: Override opt_console_xen earlier
    
    This allows printk() to work from the start of day, and backtraces from as
    early as the IDT is set up.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/boot/head.S | 3 +++
 xen/arch/x86/setup.c     | 5 -----
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 153a53f250..150f7f90a2 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -402,6 +402,9 @@ __pvh_start:
 
         mov     %ebx, sym_esi(pvh_start_info_pa)
 
+        /* Force xen console.  Will revert to user choice in init code. */
+        movb    $-1, sym_esi(opt_console_xen)
+
         /* Prepare gdt and segments */
         add     %esi, sym_esi(gdt_boot_base)
         lgdt    sym_esi(gdt_boot_descr)
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 885919d5c3..eb56d78c2f 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -728,11 +728,6 @@ void __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( pvh_boot )
     {
-        /*
-         * Force xen console to be enabled. We will reset it later in console
-         * initialisation code.
-         */
-        opt_console_xen = -1;
         ASSERT(mbi_p == 0);
         pvh_init(&mbi, &mod);
     }
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:22:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:22:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD4e-0001KW-Dp; Mon, 27 Apr 2020 23:22:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD4d-0001KQ-Cz
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:03 +0000
X-Inumbo-ID: e67d310e-88dd-11ea-97e8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e67d310e-88dd-11ea-97e8-12813bfff9fa;
 Mon, 27 Apr 2020 23:22:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Z8Q3EunASjEzC4lLGXCF6Fzcy6Lee8mbd94ZZ+nc0Fg=; b=5HJJQOgtWbk0HyjugdmdZqP0P8
 x7zfS7SnpMyy2seb5iW5Pj54t4lry8kC1GKQB608BHsADHY+zvviTdxAMwdoSIld0y5SdfE1eI3f+
 At6VrhaD9WM/FygxyLdNUxGsb70pijgldCReaiQmFa5Q+A3ST1kpY3i69Q8gwKwj7G7Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD4c-0003uY-BO
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD4c-0002RR-8s
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/EFI: also fill boot_tsc_stamp on the xen.efi
 boot path
Message-Id: <E1jTD4c-0002RR-8s@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:22:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d297fdf3d8bb348988227d6dbb2930db53fddc11
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 14:53:41 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 14:53:41 2020 +0200

    x86/EFI: also fill boot_tsc_stamp on the xen.efi boot path
    
    Commit e3a379c35eff ("x86/time: always count s_time from Xen boot")
    introducing this missed adjusting this path as well.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0dbc112e727f6c17f306c864950bdf83dece5cd5
    master date: 2020-04-14 11:42:11 +0200
---
 xen/arch/x86/efi/efi-boot.h | 3 +++
 xen/include/asm-x86/setup.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 232972eedf..6ca1f76877 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -8,6 +8,7 @@
 #include <asm/edd.h>
 #include <asm/msr.h>
 #include <asm/processor.h>
+#include <asm/setup.h>
 
 static struct file __initdata ucode;
 static multiboot_info_t __initdata mbi = {
@@ -639,6 +640,8 @@ static void __init efi_arch_cpu(void)
     uint32_t eax = cpuid_eax(0x80000000);
     uint32_t *caps = boot_cpu_data.x86_capability;
 
+    boot_tsc_stamp = rdtsc();
+
     caps[cpufeat_word(X86_FEATURE_HYPERVISOR)] = cpuid_ecx(1);
 
     if ( (eax >> 16) == 0x8000 && eax > 0x80000000 )
diff --git a/xen/include/asm-x86/setup.h b/xen/include/asm-x86/setup.h
index 861d46d6ac..138a41ac1a 100644
--- a/xen/include/asm-x86/setup.h
+++ b/xen/include/asm-x86/setup.h
@@ -13,6 +13,7 @@ extern char __2M_init_start[], __2M_init_end[];
 extern char __2M_rwdata_start[], __2M_rwdata_end[];
 
 extern unsigned long xenheap_initial_phys_start;
+extern uint64_t boot_tsc_stamp;
 
 void early_cpu_init(void);
 void early_time_init(void);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:22:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:22:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD4o-0001M2-H6; Mon, 27 Apr 2020 23:22:14 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD4n-0001Lq-JJ
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:13 +0000
X-Inumbo-ID: ec7fd1e2-88dd-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ec7fd1e2-88dd-11ea-9887-bc764e2007e4;
 Mon, 27 Apr 2020 23:22:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GAs5SsMUF9bIhIK0Fj7GlLEKL/cYb9jxgDWkoGZxoYc=; b=n6wTbrWF+2VK4U8ddyDtG6glHI
 S2r7ZuW5t9qzDP7eJlO7+n3whJa2XGJhlxSOjtfMz16W43DvKRh4GiTAcbILpamdPBOHa2oYEpWra
 HZz006ehfv2S1vlSsuiUBrWV2Jn0aVMBbXlDL2d7xhYTb2vg83t9am/4K4gkqTs+XZa4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD4m-0003ue-EO
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD4m-0002SJ-D4
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/boot: Fix early exception handling with
 CONFIG_PERF_COUNTERS
Message-Id: <E1jTD4m-0002SJ-D4@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:22:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9729b7eb22ba16b284a8b6d2397e760fef00fa4d
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 14:56:01 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 14:56:01 2020 +0200

    x86/boot: Fix early exception handling with CONFIG_PERF_COUNTERS
    
    The PERFC_INCR() macro uses current->processor, but current is not valid
    during early boot.  This causes the following crash to occur if
    e.g. rdmsr_safe() has to recover from a #GP fault.
    
      (XEN) Early fatal page fault at e008:ffff82d0803b1a39 (cr2=0000000000000004, ec=0000)
      (XEN) ----[ Xen-4.14-unstable  x86_64  debug=y   Not tainted ]----
      (XEN) CPU:    0
      (XEN) RIP:    e008:[<ffff82d0803b1a39>] x86_64/entry.S#handle_exception_saved+0x64/0xb8
      ...
      (XEN) Xen call trace:
      (XEN)    [<ffff82d0803b1a39>] R x86_64/entry.S#handle_exception_saved+0x64/0xb8
      (XEN)    [<ffff82d0806394fe>] F __start_xen+0x2cd/0x2980
      (XEN)    [<ffff82d0802000ec>] F __high_start+0x4c/0x4e
    
    Furthermore, the PERFC_INCR() macro is wildly inefficient.  There has been a
    single caller for many releases now, so inline it and delete the macro
    completely.
    
    There is no need to reference current at all.  What is actually needed is the
    per_cpu_offset which can be obtained directly from the top-of-stack block.
    This simplifies the counter handling to 3 instructions and no spilling to the
    stack at all.
    
    The same breakage from above is now handled properly:
    
      (XEN) traps.c:1591: GPF (0000): ffff82d0806394fe [__start_xen+0x2cd/0x2980] -> ffff82d0803b3bfb
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Julien Grall <jgrall@amazon.com>
    master commit: 615bfe42c6d183a0e54a0525ef82b58580d01619
    master date: 2020-04-16 09:48:38 +0100
---
 xen/arch/x86/x86_64/asm-offsets.c |  1 +
 xen/arch/x86/x86_64/entry.S       |  6 +++++-
 xen/include/asm-x86/asm_defns.h   | 16 ----------------
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 33930ce97c..5df15e26f1 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -112,6 +112,7 @@ void __dummy__(void)
     OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
     OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
     OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
+    OFFSET(CPUINFO_per_cpu_offset, struct cpu_info, per_cpu_offset);
     OFFSET(CPUINFO_cr4, struct cpu_info, cr4);
     OFFSET(CPUINFO_xen_cr3, struct cpu_info, xen_cr3);
     OFFSET(CPUINFO_pv_cr3, struct cpu_info, pv_cr3);
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 11385857fa..c7cfcf9199 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -679,7 +679,11 @@ handle_exception_saved:
 1:      movq  %rsp,%rdi
         movzbl UREGS_entry_vector(%rsp),%eax
         leaq  exception_table(%rip),%rdx
-        PERFC_INCR(exceptions, %rax, %rbx)
+#ifdef CONFIG_PERF_COUNTERS
+        lea   per_cpu__perfcounters(%rip), %rcx
+        add   STACK_CPUINFO_FIELD(per_cpu_offset)(%r14), %rcx
+        incl  ASM_PERFC_exceptions * 4(%rcx, %rax, 4)
+#endif
         mov   (%rdx, %rax, 8), %rdx
         INDIRECT_CALL %rdx
         mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h
index 370f239c50..337c60a7a7 100644
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -346,22 +346,6 @@ static always_inline void stac(void)
 
 #endif
 
-#ifdef CONFIG_PERF_COUNTERS
-#define PERFC_INCR(_name,_idx,_cur)             \
-        pushq _cur;                             \
-        movslq VCPU_processor(_cur),_cur;       \
-        pushq %rdx;                             \
-        leaq __per_cpu_offset(%rip),%rdx;       \
-        movq (%rdx,_cur,8),_cur;                \
-        leaq per_cpu__perfcounters(%rip),%rdx;  \
-        addq %rdx,_cur;                         \
-        popq %rdx;                              \
-        incl ASM_PERFC_##_name*4(_cur,_idx,4);  \
-        popq _cur
-#else
-#define PERFC_INCR(_name,_idx,_cur)
-#endif
-
 /* Work around AMD erratum #88 */
 #define safe_swapgs                             \
         "mfence; swapgs;"
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:22:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:22:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD4y-0001Ni-Ip; Mon, 27 Apr 2020 23:22:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD4x-0001NV-Mj
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:23 +0000
X-Inumbo-ID: f2aac338-88dd-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f2aac338-88dd-11ea-9887-bc764e2007e4;
 Mon, 27 Apr 2020 23:22:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=UO/kBU1KDgLIG0uqS/i6MrgwUqudrSnNFFxy1g0xJIc=; b=ytx3m/QleAZBWH9biY+IvL6JTP
 QRmXjYsZPOcFK0BMhVoPZyViNFvXM/zXgqgy3JelyBWdk1QkkOPt0wz8idkCeH9L0UeAw3LMl57pT
 01QRO2+gDOzbTGbgjRUg1ZN9ZLghhl7L3w/vyol4PDshTuAcqfnoJYek+PaXCfwoa3y4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD4w-0003un-PL
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD4w-0002TC-Me
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] hvmloader: enable MMIO and I/O decode,
 after all resource allocation
Message-Id: <E1jTD4w-0002TC-Me@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:22:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a060e72626235df67f7e5cc7cce04229e3e81c20
Author:     Harsha Shamsundara Havanur <havanur@amazon.com>
AuthorDate: Mon Apr 27 14:57:39 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 14:57:39 2020 +0200

    hvmloader: enable MMIO and I/O decode, after all resource allocation
    
    It was observed that PCI MMIO and/or IO BARs were programmed with
    memory and I/O decodes (bits 0 and 1 of PCI COMMAND register) enabled,
    during PCI setup phase. This resulted in incorrect memory mapping as
    soon as the lower half of the 64 bit bar is programmed.
    This displaced any RAM mappings under 4G. After the
    upper half is programmed PCI memory mapping is restored to its
    intended high mem location, but the RAM displaced is not restored.
    The OS then continues to boot and function until it tries to access
    the displaced RAM at which point it suffers a page fault and crashes.
    
    This patch address the issue by deferring enablement of memory and
    I/O decode in command register until all the resources, like interrupts
    I/O and/or MMIO BARs for all the PCI device functions are programmed,
    in the descending order of memory requested.
    
    Signed-off-by: Harsha Shamsundara Havanur <havanur@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: a8e0c228c79f3a000e19183090eb41fca173b034
    master date: 2020-04-16 10:58:46 +0200
---
 tools/firmware/hvmloader/pci.c | 49 +++++++++++++++++++++++++++++++-----------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
index 0b708bf578..dcd097a866 100644
--- a/tools/firmware/hvmloader/pci.c
+++ b/tools/firmware/hvmloader/pci.c
@@ -84,6 +84,7 @@ void pci_setup(void)
     uint32_t vga_devfn = 256;
     uint16_t class, vendor_id, device_id;
     unsigned int bar, pin, link, isa_irq;
+    uint8_t pci_devfn_decode_type[256] = {};
 
     /* Resources assignable to PCI devices via BARs. */
     struct resource {
@@ -120,6 +121,13 @@ void pci_setup(void)
      */
     bool allow_memory_relocate = 1;
 
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_IO !=
+                 PCI_COMMAND_IO);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MEMORY !=
+                 PCI_COMMAND_MEMORY);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MASTER !=
+                 PCI_COMMAND_MASTER);
+
     s = xenstore_read(HVM_XS_ALLOW_MEMORY_RELOCATE, NULL);
     if ( s )
         allow_memory_relocate = strtoll(s, NULL, 0);
@@ -208,6 +216,20 @@ void pci_setup(void)
             break;
         }
 
+        /*
+         * It is recommended that BAR programming be done whilst decode
+         * bits are cleared to avoid incorrect mappings being created.
+         * When 64-bit memory BAR is programmed, first by writing the
+         * lower half and then the upper half, which maps to an address
+         * under 4G, as soon as lower half is wriiten, replacing any RAM
+         * mapped in that address, which is not restored back after the
+         * upper half is written and PCI memory is correctly mapped to
+         * its intended high mem address.
+         */
+        cmd = pci_readw(devfn, PCI_COMMAND);
+        cmd &= ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
+        pci_writew(devfn, PCI_COMMAND, cmd);
+
         /* Map the I/O memory and port resources. */
         for ( bar = 0; bar < 7; bar++ )
         {
@@ -289,10 +311,8 @@ void pci_setup(void)
                    devfn>>3, devfn&7, 'A'+pin-1, isa_irq);
         }
 
-        /* Enable bus mastering. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_MASTER;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+        /* Enable bus master for this function later */
+        pci_devfn_decode_type[devfn] = PCI_COMMAND_MASTER;
     }
 
     if ( mmio_hole_size )
@@ -497,16 +517,12 @@ void pci_setup(void)
                PRIllx_arg(bar_sz),
                bar_data_upper, bar_data);
 			
-
-        /* Now enable the memory or I/O mapping. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
         if ( (bar_reg == PCI_ROM_ADDRESS) ||
              ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
               PCI_BASE_ADDRESS_SPACE_MEMORY) )
-            cmd |= PCI_COMMAND_MEMORY;
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_MEMORY;
         else
-            cmd |= PCI_COMMAND_IO;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_IO;
     }
 
     if ( pci_hi_mem_start )
@@ -526,10 +542,17 @@ void pci_setup(void)
          * has IO enabled, even if there is no I/O BAR on that
          * particular device.
          */
-        cmd = pci_readw(vga_devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_IO;
-        pci_writew(vga_devfn, PCI_COMMAND, cmd);
+        pci_devfn_decode_type[vga_devfn] |= PCI_COMMAND_IO;
     }
+
+    /* Enable bus master, memory and I/O decode for all valid functions. */
+    for ( devfn = 0; devfn < 256; devfn++ )
+        if ( pci_devfn_decode_type[devfn] )
+        {
+            cmd = pci_readw(devfn, PCI_COMMAND);
+            cmd |= pci_devfn_decode_type[devfn];
+            pci_writew(devfn, PCI_COMMAND, cmd);
+        }
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:22:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:22:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD59-0001Pz-KT; Mon, 27 Apr 2020 23:22:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD58-0001Pi-12
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:34 +0000
X-Inumbo-ID: f8e8b296-88dd-11ea-97e8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f8e8b296-88dd-11ea-97e8-12813bfff9fa;
 Mon, 27 Apr 2020 23:22:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0BWhOrBsR+Mv3jDVZALv0RvtSE95KbhChsu1T5rxaTU=; b=iko8ux+gHNgHhGolFstJ5KPciK
 Qlks7ZzUnOAO/5THGvf9cuibUlm+ivblb09LPC9C4zhGTsu4v5SMwqmOUuinLy/3eKe1TsFIsx+ki
 IHLtP2bt9F54XV8D6YCyvqJjqcVJ33AjoCKuvoIp3FBZiPQTCZaAAEIhw4C1sVG/lyio=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD57-0003vd-8x
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD57-0002Uo-5u
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] sched/core: fix bug when moving a domain between
 cpupools
Message-Id: <E1jTD57-0002Uo-5u@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:22:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a319cbb3071919935d2424b0b116b22bcf028452
Author:     Jeff Kubascik <jeff.kubascik@dornerworks.com>
AuthorDate: Mon Apr 27 14:58:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 14:58:20 2020 +0200

    sched/core: fix bug when moving a domain between cpupools
    
    For each UNIT, sched_set_affinity is called before unit->priv is updated
    to the new cpupool private UNIT data structure. The issue is
    sched_set_affinity will call the adjust_affinity method of the cpupool.
    If defined, the new cpupool may use unit->priv (e.g. credit), which at
    this point still references the old cpupool private UNIT data structure.
    
    This change fixes the bug by moving the switch of unit->priv earler in
    the function.
    
    Signed-off-by: Jeff Kubascik <jeff.kubascik@dornerworks.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: ee97008433f15e60478058c8ace514b939b6f862
    master date: 2020-04-17 09:27:21 +0200
---
 xen/common/schedule.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index 820bd5050c..e3bd9cdccd 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -683,6 +683,7 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
         unsigned int unit_p = new_p;
 
         unitdata = unit->priv;
+        unit->priv = unit_priv[unit_idx];
 
         for_each_sched_unit_vcpu ( unit, v )
         {
@@ -704,7 +705,6 @@ int sched_move_domain(struct domain *d, struct cpupool *c)
          */
         spin_unlock_irq(lock);
 
-        unit->priv = unit_priv[unit_idx];
         if ( !d->is_dying )
             sched_move_irqs(unit);
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:22:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:22:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD5J-0001RW-M7; Mon, 27 Apr 2020 23:22:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD5I-0001RH-2r
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:44 +0000
X-Inumbo-ID: fefd43ea-88dd-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fefd43ea-88dd-11ea-ae69-bc764e2007e4;
 Mon, 27 Apr 2020 23:22:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Ot/ta5K0t7Dh4xu83ZCcMlSWiS/sFtUzynRPKx8vxR4=; b=R6NyKjfAF+7ouyPeK2/aPodHTS
 0DM/c87X6LSux/RLWFYyg/q1FHCuSDrwqLynrCwkY2DCSIZa7y768PJ0m04WwaZOwPB31pYT/OGJ8
 3Bul/xUJis5rdNbJ54Kkm9V0quS6Vn7N6ZpezZKZ5LnRKyamr19nKJv7naKlzKuYBXiA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5H-0003vm-FR
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5H-0002Vp-EB
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] sched: fix scheduler_disable() with core scheduling
Message-Id: <E1jTD5H-0002Vp-EB@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:22:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2169029b0e5c9a3d4dd19f9b10b10ef848881bb4
Author:     Sergey Dyasli <sergey.dyasli@citrix.com>
AuthorDate: Mon Apr 27 15:00:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:00:08 2020 +0200

    sched: fix scheduler_disable() with core scheduling
    
    In core-scheduling mode, Xen might crash when entering ACPI S5 state.
    This happens in sched_slave() during is_idle_unit(next) check because
    next->vcpu_list is stale and points to an already freed memory.
    
    This situation happens shortly after scheduler_disable() is called if
    some CPU is still inside sched_slave() softirq. Current logic simply
    returns prev->next_task from sched_wait_rendezvous_in() which causes
    the described crash because next_task->vcpu_list has become invalid.
    
    Fix the crash by returning NULL from sched_wait_rendezvous_in() in
    the case when scheduler_disable() has been called.
    
    Signed-off-by: Sergey Dyasli <sergey.dyasli@citrix.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Dario Faggioli <dfaggioli@suse.com>
    master commit: 82dd1a956d9b68f52e830d1dddfdfb4ab4d5a638
    master date: 2020-04-17 09:28:16 +0200
---
 xen/common/schedule.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/xen/common/schedule.c b/xen/common/schedule.c
index e3bd9cdccd..6d24a3a135 100644
--- a/xen/common/schedule.c
+++ b/xen/common/schedule.c
@@ -2297,19 +2297,15 @@ static struct sched_unit *sched_wait_rendezvous_in(struct sched_unit *prev,
 
         *lock = pcpu_schedule_lock_irq(cpu);
 
-        if ( unlikely(!scheduler_active) )
-        {
-            ASSERT(is_idle_unit(prev));
-            atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
-            prev->rendezvous_in_cnt = 0;
-        }
-
         /*
          * Check for scheduling resource switched. This happens when we are
          * moved away from our cpupool and cpus are subject of the idle
          * scheduler now.
+         *
+         * This is also a bail out case when scheduler_disable() has been
+         * called.
          */
-        if ( unlikely(sr != get_sched_res(cpu)) )
+        if ( unlikely(sr != get_sched_res(cpu) || !scheduler_active) )
         {
             ASSERT(is_idle_unit(prev));
             atomic_set(&prev->next_task->rendezvous_out_cnt, 0);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:22:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:22:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD5T-0001Sf-Nb; Mon, 27 Apr 2020 23:22:55 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD5S-0001SU-4T
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:54 +0000
X-Inumbo-ID: 04fedfa6-88de-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 04fedfa6-88de-11ea-9887-bc764e2007e4;
 Mon, 27 Apr 2020 23:22:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZNKQpE6AVKrdfwweEIxzTA9cHvvkPT3pV3Vm/E+QMAs=; b=6ELLotPdWJ4PDuaENcnhtBoxOV
 p2y0gcgzopG0cAZDw3WP6F4Qh/6MvNBJDrmZ7Olm1hbtuxlbPuI/o4SYbi4pduhmAHG6Sch3DGwS2
 6mv11oc/nUc6H/jq30f0Bf7P50e4IF1chsTL8YGo7lRwIW6a7xeFSTFJovSHa3rNI+p4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5R-0003vy-IF
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5R-0002WU-HC
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:22:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/vtd: relax EPT page table sharing check
Message-Id: <E1jTD5R-0002WU-HC@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:22:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c8986e990c91cdda89e57c71293ed0c424e4e474
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Mon Apr 27 15:02:08 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:02:08 2020 +0200

    x86/vtd: relax EPT page table sharing check
    
    The EPT page tables can be shared with the IOMMU as long as the page
    sizes supported by EPT are also supported by the IOMMU.
    
    Current code checks that both the IOMMU and EPT support the same page
    sizes, but this is not strictly required, the IOMMU supporting more
    page sizes than EPT is fine and shouldn't block page table sharing.
    
    This is likely not a common case (IOMMU supporting more page sizes
    than EPT), but should still be fixed for correctness.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    master commit: 3957e12c02670b97855ef0933b373f99993fa598
    master date: 2020-04-21 10:54:56 +0200
---
 xen/drivers/passthrough/vtd/iommu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 1a239447ac..26401c7e64 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1911,8 +1911,8 @@ static int __init vtd_ept_page_compatible(struct vtd_iommu *iommu)
     if ( rdmsr_safe(MSR_IA32_VMX_EPT_VPID_CAP, ept_cap) != 0 ) 
         return 0;
 
-    return (ept_has_2mb(ept_cap) && opt_hap_2mb) == cap_sps_2mb(vtd_cap) &&
-           (ept_has_1gb(ept_cap) && opt_hap_1gb) == cap_sps_1gb(vtd_cap);
+    return (ept_has_2mb(ept_cap) && opt_hap_2mb) <= cap_sps_2mb(vtd_cap) &&
+           (ept_has_1gb(ept_cap) && opt_hap_1gb) <= cap_sps_1gb(vtd_cap);
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:23:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:23:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD5d-0001VR-P7; Mon, 27 Apr 2020 23:23:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD5c-0001VF-NI
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:04 +0000
X-Inumbo-ID: 0b2fec44-88de-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 0b2fec44-88de-11ea-b9cf-bc764e2007e4;
 Mon, 27 Apr 2020 23:23:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Wtd0Rg9IRszT6VnMTZ2iqPGlTYH3w7h+lsAj331aDhM=; b=J7KQeY+9HjIu8DuFRjmrMRX6Qa
 kLjFXZUPvpzhcbsYOWtjTBCdYOVGyqM0MFcl8yjlbIgq9a4/kT+aaMd9kvxLupRF6SPLhtCJGYjEO
 6isZMjpgctWGdM4KThpFeSFBqR3WRp6nXsLISZ0Jk2YyyUa6nxbfkk/OJ6bwLTFFPnK8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5b-0003wP-UV
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5b-0002XP-RG
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86: Enumeration for Control-flow Enforcement
 Technology
Message-Id: <E1jTD5b-0002XP-RG@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:23:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 682d71ff8557dc2732888597d043d782a19c2809
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 15:02:55 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:02:55 2020 +0200

    x86: Enumeration for Control-flow Enforcement Technology
    
    The CET spec has been published and guest kernels are starting to get support.
    Introduce the CPUID and MSRs, and fully block the MSRs from guest use.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
    master commit: 4803a67114279a656a54a23cebed646da32efeb6
    master date: 2020-04-21 16:52:03 +0100
---
 tools/libxl/libxl_cpuid.c                   | 2 ++
 tools/misc/xen-cpuid.c                      | 3 ++-
 xen/arch/x86/msr.c                          | 6 ++++++
 xen/include/asm-x86/msr-index.h             | 8 ++++++++
 xen/include/public/arch-x86/cpufeatureset.h | 2 ++
 5 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/tools/libxl/libxl_cpuid.c b/tools/libxl/libxl_cpuid.c
index 953a3bbd8c..6cea4227ba 100644
--- a/tools/libxl/libxl_cpuid.c
+++ b/tools/libxl/libxl_cpuid.c
@@ -201,6 +201,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"pku",          0x00000007,  0, CPUID_REG_ECX,  3,  1},
         {"ospke",        0x00000007,  0, CPUID_REG_ECX,  4,  1},
         {"avx512-vbmi2", 0x00000007,  0, CPUID_REG_ECX,  6,  1},
+        {"cet-ss",       0x00000007,  0, CPUID_REG_ECX,  7,  1},
         {"gfni",         0x00000007,  0, CPUID_REG_ECX,  8,  1},
         {"vaes",         0x00000007,  0, CPUID_REG_ECX,  9,  1},
         {"vpclmulqdq",   0x00000007,  0, CPUID_REG_ECX, 10,  1},
@@ -213,6 +214,7 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"avx512-4vnniw",0x00000007,  0, CPUID_REG_EDX,  2,  1},
         {"avx512-4fmaps",0x00000007,  0, CPUID_REG_EDX,  3,  1},
         {"md-clear",     0x00000007,  0, CPUID_REG_EDX, 10,  1},
+        {"cet-ibt",      0x00000007,  0, CPUID_REG_EDX, 20,  1},
         {"ibrsb",        0x00000007,  0, CPUID_REG_EDX, 26,  1},
         {"stibp",        0x00000007,  0, CPUID_REG_EDX, 27,  1},
         {"l1d-flush",    0x00000007,  0, CPUID_REG_EDX, 28,  1},
diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c
index 866c556a0f..603e1d65fd 100644
--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -123,7 +123,7 @@ static const char *const str_7c0[32] =
     [ 0] = "prefetchwt1",      [ 1] = "avx512_vbmi",
     [ 2] = "umip",             [ 3] = "pku",
     [ 4] = "ospke",            [ 5] = "waitpkg",
-    [ 6] = "avx512_vbmi2",
+    [ 6] = "avx512_vbmi2",     [ 7] = "cet-ss",
     [ 8] = "gfni",             [ 9] = "vaes",
     [10] = "vpclmulqdq",       [11] = "avx512_vnni",
     [12] = "avx512_bitalg",
@@ -161,6 +161,7 @@ static const char *const str_7d0[32] =
     /* 12 */                [13] = "tsx-force-abort",
 
     [18] = "pconfig",
+    [20] = "cet-ibt",
 
     [26] = "ibrsb",         [27] = "stibp",
     [28] = "l1d_flush",     [29] = "arch_caps",
diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index e0ad08f144..4b12103482 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -134,6 +134,9 @@ int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val)
         /* Write-only */
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
     case MSR_AMD64_LWP_CFG:
     case MSR_AMD64_LWP_CBADDR:
         /* Not offered to guests. */
@@ -285,6 +288,9 @@ int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val)
         /* Read-only */
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
     case MSR_AMD64_LWP_CFG:
     case MSR_AMD64_LWP_CBADDR:
         /* Not offered to guests. */
diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h
index 3971b992d3..7693c4a71a 100644
--- a/xen/include/asm-x86/msr-index.h
+++ b/xen/include/asm-x86/msr-index.h
@@ -179,6 +179,14 @@
 #define MSR_IA32_VMX_TRUE_ENTRY_CTLS            0x490
 #define MSR_IA32_VMX_VMFUNC                     0x491
 
+#define MSR_U_CET                           0x000006a0
+#define MSR_S_CET                           0x000006a2
+#define MSR_PL0_SSP                         0x000006a4
+#define MSR_PL1_SSP                         0x000006a5
+#define MSR_PL2_SSP                         0x000006a6
+#define MSR_PL3_SSP                         0x000006a7
+#define MSR_INTERRUPT_SSP_TABLE             0x000006a8
+
 /* K7/K8 MSRs. Not complete. See the architecture manual for a more
    complete list. */
 #define MSR_K7_EVNTSEL0			0xc0010000
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 48d8d1f4e2..2835688f1c 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -229,6 +229,7 @@ XEN_CPUFEATURE(UMIP,          6*32+ 2) /*S  User Mode Instruction Prevention */
 XEN_CPUFEATURE(PKU,           6*32+ 3) /*H  Protection Keys for Userspace */
 XEN_CPUFEATURE(OSPKE,         6*32+ 4) /*!  OS Protection Keys Enable */
 XEN_CPUFEATURE(AVX512_VBMI2,  6*32+ 6) /*A  Additional AVX-512 Vector Byte Manipulation Instrs */
+XEN_CPUFEATURE(CET_SS,        6*32+ 7) /*   CET - Shadow Stacks */
 XEN_CPUFEATURE(GFNI,          6*32+ 8) /*A  Galois Field Instrs */
 XEN_CPUFEATURE(VAES,          6*32+ 9) /*A  Vector AES Instrs */
 XEN_CPUFEATURE(VPCLMULQDQ,    6*32+10) /*A  Vector Carry-less Multiplication Instrs */
@@ -253,6 +254,7 @@ XEN_CPUFEATURE(AVX512_4VNNIW, 9*32+ 2) /*A  AVX512 Neural Network Instructions *
 XEN_CPUFEATURE(AVX512_4FMAPS, 9*32+ 3) /*A  AVX512 Multiply Accumulation Single Precision */
 XEN_CPUFEATURE(MD_CLEAR,      9*32+10) /*A  VERW clears microarchitectural buffers */
 XEN_CPUFEATURE(TSX_FORCE_ABORT, 9*32+13) /* MSR_TSX_FORCE_ABORT.RTM_ABORT */
+XEN_CPUFEATURE(CET_IBT,       9*32+20) /*   CET - Indirect Branch Tracking */
 XEN_CPUFEATURE(IBRSB,         9*32+26) /*A  IBRS and IBPB support (used by Intel) */
 XEN_CPUFEATURE(STIBP,         9*32+27) /*A  STIBP */
 XEN_CPUFEATURE(L1D_FLUSH,     9*32+28) /*S  MSR_FLUSH_CMD and L1D flush. */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:23:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:23:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD5o-0001Wq-SS; Mon, 27 Apr 2020 23:23:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD5n-0001Wi-Ih
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:15 +0000
X-Inumbo-ID: 1145a312-88de-11ea-97e8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1145a312-88de-11ea-97e8-12813bfff9fa;
 Mon, 27 Apr 2020 23:23:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5vV95N5LSXyOOQWlyRRPCAh7Kmc+MmNvbIOxDWJvhUQ=; b=NcYR3frqHFwwxTpatZgGXWSRx8
 UKEqnbvYf5dksQfyZqMPyeOtI1H6tg+NvfHX+CaCqIMmiV65wK05p8NKqxYimVj7a/Ol6FiVU9cxA
 2qb0C1ZUS0qSHtGt9uHzzrUqT1lAzWHv1ZL+b/xiZ3Ok7z0lzggi+7qhC4xpUsZEHyNU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5m-0003wb-4N
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5m-0002YI-3G
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86/HVM: expose VM assist hypercall
Message-Id: <E1jTD5m-0002YI-3G@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:23:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2e8d8edc1fe12e0d513d4907b19b00bcc3dc015c
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:05:16 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:05:16 2020 +0200

    x86/HVM: expose VM assist hypercall
    
    In preparation for the addition of VMASST_TYPE_runstate_update_flag
    commit 72c538cca957 ("arm: add support for vm_assist hypercall") enabled
    the hypercall for Arm. I consider it not logical that it then isn't also
    exposed to x86 HVM guests (with the same single feature permitted to be
    enabled as Arm has); Linux actually tries to use it afaict.
    
    Rather than introducing yet another thin wrapper around vm_assist(),
    make that function the main handler, requiring a per-arch
    arch_vm_assist_valid_mask() definition instead.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: f13404d57f55a97838f1c16a366fbc3231ec21f1
    master date: 2020-04-22 12:58:25 +0200
---
 xen/arch/x86/domain.c        |  3 +++
 xen/arch/x86/hvm/hypercall.c |  1 +
 xen/arch/x86/pv/hypercall.c  |  2 +-
 xen/common/compat/kernel.c   |  5 -----
 xen/common/domain.c          | 13 ++++++++-----
 xen/common/kernel.c          |  7 -------
 xen/include/asm-arm/config.h |  2 --
 xen/include/asm-arm/domain.h |  2 ++
 xen/include/asm-x86/config.h | 11 -----------
 xen/include/asm-x86/domain.h | 19 +++++++++++++++++++
 xen/include/xen/hypercall.h  |  2 --
 xen/include/xen/lib.h        |  2 --
 12 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index d42a32c8a9..7040ff4af7 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -939,6 +939,9 @@ int arch_set_info_guest(
         v->arch.dr6 = c(debugreg[6]);
         v->arch.dr7 = c(debugreg[7]);
 
+        if ( v->vcpu_id == 0 )
+            d->vm_assist = c.nat->vm_assist;
+
         hvm_set_info_guest(v);
         goto out;
     }
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 33dd2d99d2..0d24550dcc 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -124,6 +124,7 @@ static const hypercall_table_t hvm_hypercall_table[] = {
 #ifdef CONFIG_GRANT_TABLE
     HVM_CALL(grant_table_op),
 #endif
+    HYPERCALL(vm_assist),
     COMPAT_CALL(vcpu_op),
     HVM_CALL(physdev_op),
     COMPAT_CALL(xen_version),
diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c
index 0c84c0b3a0..55a37d3698 100644
--- a/xen/arch/x86/pv/hypercall.c
+++ b/xen/arch/x86/pv/hypercall.c
@@ -56,7 +56,7 @@ const hypercall_table_t pv_hypercall_table[] = {
 #ifdef CONFIG_GRANT_TABLE
     COMPAT_CALL(grant_table_op),
 #endif
-    COMPAT_CALL(vm_assist),
+    HYPERCALL(vm_assist),
     COMPAT_CALL(update_va_mapping_otherdomain),
     COMPAT_CALL(iret),
     COMPAT_CALL(vcpu_op),
diff --git a/xen/common/compat/kernel.c b/xen/common/compat/kernel.c
index 5c6e7322f8..804b919bdc 100644
--- a/xen/common/compat/kernel.c
+++ b/xen/common/compat/kernel.c
@@ -37,11 +37,6 @@ CHECK_TYPE(capabilities_info);
 
 CHECK_TYPE(domain_handle);
 
-#ifdef COMPAT_VM_ASSIST_VALID
-#undef VM_ASSIST_VALID
-#define VM_ASSIST_VALID COMPAT_VM_ASSIST_VALID
-#endif
-
 #define DO(fn) int compat_##fn
 #define COMPAT
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 611116c7fc..0902a15e8d 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1601,20 +1601,23 @@ long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
-#ifdef VM_ASSIST_VALID
-long vm_assist(struct domain *p, unsigned int cmd, unsigned int type,
-               unsigned long valid)
+#ifdef arch_vm_assist_valid_mask
+long do_vm_assist(unsigned int cmd, unsigned int type)
 {
+    struct domain *currd = current->domain;
+    const unsigned long valid = arch_vm_assist_valid_mask(currd);
+
     if ( type >= BITS_PER_LONG || !test_bit(type, &valid) )
         return -EINVAL;
 
     switch ( cmd )
     {
     case VMASST_CMD_enable:
-        set_bit(type, &p->vm_assist);
+        set_bit(type, &currd->vm_assist);
         return 0;
+
     case VMASST_CMD_disable:
-        clear_bit(type, &p->vm_assist);
+        clear_bit(type, &currd->vm_assist);
         return 0;
     }
 
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 760917dab5..de2fd1e334 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -565,13 +565,6 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return -ENOSYS;
 }
 
-#ifdef VM_ASSIST_VALID
-DO(vm_assist)(unsigned int cmd, unsigned int type)
-{
-    return vm_assist(current->domain, cmd, type, VM_ASSIST_VALID);
-}
-#endif
-
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h
index bc89e84f4d..fbb4b23a69 100644
--- a/xen/include/asm-arm/config.h
+++ b/xen/include/asm-arm/config.h
@@ -195,8 +195,6 @@ extern unsigned long frametable_virt_end;
 #define watchdog_disable() ((void)0)
 #define watchdog_enable()  ((void)0)
 
-#define VM_ASSIST_VALID          (1UL << VMASST_TYPE_runstate_update_flag)
-
 #endif /* __ARM_CONFIG_H__ */
 /*
  * Local variables:
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index 16a7150a95..b405cd539e 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -269,6 +269,8 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
+#define arch_vm_assist_valid_mask(d) (1UL << VMASST_TYPE_runstate_update_flag)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index dab7d7bade..8d79a71398 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -308,17 +308,6 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
-#define NATIVE_VM_ASSIST_VALID   ((1UL << VMASST_TYPE_4gb_segments)        | \
-                                  (1UL << VMASST_TYPE_4gb_segments_notify) | \
-                                  (1UL << VMASST_TYPE_writable_pagetables) | \
-                                  (1UL << VMASST_TYPE_pae_extended_cr3)    | \
-                                  (1UL << VMASST_TYPE_architectural_iopl)  | \
-                                  (1UL << VMASST_TYPE_runstate_update_flag)| \
-                                  (1UL << VMASST_TYPE_m2p_strict))
-#define VM_ASSIST_VALID          NATIVE_VM_ASSIST_VALID
-#define COMPAT_VM_ASSIST_VALID   (NATIVE_VM_ASSIST_VALID & \
-                                  ((1UL << COMPAT_BITS_PER_LONG) - 1))
-
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 9dc7556980..81f32bb56d 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -694,6 +694,25 @@ static inline void pv_inject_sw_interrupt(unsigned int vector)
     pv_inject_event(&event);
 }
 
+#define PV32_VM_ASSIST_MASK ((1UL << VMASST_TYPE_4gb_segments)        | \
+                             (1UL << VMASST_TYPE_4gb_segments_notify) | \
+                             (1UL << VMASST_TYPE_writable_pagetables) | \
+                             (1UL << VMASST_TYPE_pae_extended_cr3)    | \
+                             (1UL << VMASST_TYPE_architectural_iopl)  | \
+                             (1UL << VMASST_TYPE_runstate_update_flag))
+/*
+ * Various of what PV32_VM_ASSIST_MASK has isn't really applicable to 64-bit,
+ * but we can't make such requests fail all of the sudden.
+ */
+#define PV64_VM_ASSIST_MASK (PV32_VM_ASSIST_MASK                      | \
+                             (1UL << VMASST_TYPE_m2p_strict))
+#define HVM_VM_ASSIST_MASK  (1UL << VMASST_TYPE_runstate_update_flag)
+
+#define arch_vm_assist_valid_mask(d) \
+    (is_hvm_domain(d) ? HVM_VM_ASSIST_MASK \
+                      : is_pv_32bit_domain(d) ? PV32_VM_ASSIST_MASK \
+                                              : PV64_VM_ASSIST_MASK)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index ad8ad27b23..d82a293377 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -192,8 +192,6 @@ extern int compat_xsm_op(
 
 extern int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg);
 
-extern int compat_vm_assist(unsigned int cmd, unsigned int type);
-
 DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t);
 extern int compat_multicall(
     XEN_GUEST_HANDLE_PARAM(multicall_entry_compat_t) call_list,
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 8fbe84032d..3c27ba902d 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -120,8 +120,6 @@ extern void guest_printk(const struct domain *d, const char *format, ...)
     __attribute__ ((format (printf, 2, 3)));
 extern void noreturn panic(const char *format, ...)
     __attribute__ ((format (printf, 1, 2)));
-extern long vm_assist(struct domain *, unsigned int cmd, unsigned int type,
-                      unsigned long valid);
 extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst);
 extern int printk_ratelimit(void);
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:23:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:23:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD5x-0001Xu-Tw; Mon, 27 Apr 2020 23:23:25 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD5x-0001Xl-1H
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:25 +0000
X-Inumbo-ID: 176f10f2-88de-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 176f10f2-88de-11ea-ae69-bc764e2007e4;
 Mon, 27 Apr 2020 23:23:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/QkMWfpCQ3mflabt+aPtkC7FItiEqG82dO5wQRVSck4=; b=KthYGzbubUN3g9P2BBWeZpej/W
 dBZcESR2SGz5xSNSGEglw6mayAusDYgfdmkaRHbVf/71jyLGn8/yzF+xmq9gsFD+czlkGf0CB7adf
 Wwj7/cDH5Lgol4wIzHmbS9LqN5t/xq7l29vXxcORMZ/NerqDC1SeG3vW4HPBg+PiPHDg=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5w-0003wq-Fv
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD5w-0002Z6-Cz
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] x86: validate VM assist value in
 arch_set_info_guest()
Message-Id: <E1jTD5w-0002Z6-Cz@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:23:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 85f86ab865e1175683f78d89dda702b4faa88329
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:06:56 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:06:56 2020 +0200

    x86: validate VM assist value in arch_set_info_guest()
    
    While I can't spot anything that would go wrong, just like the
    respective hypercall only permits applicable bits to be set, we should
    also do so when loading guest context.
    
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: a62c6fe05c4ae905b7d4cb0ca946508b7f96d522
    master date: 2020-04-22 13:01:10 +0200
---
 xen/arch/x86/domain.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 7040ff4af7..a905aec8e1 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -932,6 +932,9 @@ int arch_set_info_guest(
         }
     }
 
+    if ( v->vcpu_id == 0 && (c(vm_assist) & ~arch_vm_assist_valid_mask(d)) )
+        return -EINVAL;
+
     if ( is_hvm_domain(d) )
     {
         for ( i = 0; i < ARRAY_SIZE(v->arch.dr); ++i )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Mon Apr 27 23:23:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 27 Apr 2020 23:23:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTD68-0001Zf-VW; Mon, 27 Apr 2020 23:23:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Mjvt=6L=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTD67-0001ZV-Ho
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:35 +0000
X-Inumbo-ID: 1dac568c-88de-11ea-97e8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1dac568c-88de-11ea-97e8-12813bfff9fa;
 Mon, 27 Apr 2020 23:23:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hu3RcOsgKoFZ7/oo4Qhc2VvaQfM8OZhKrxFAOl8zzWc=; b=245CHxVMQHmiF+8/3dbySOGgqC
 qitVeWeqRnHG2TMf2wgusJ/gcNoPW7iVLZuP3GyPxZZ8WujxGjsRkaK3mZhrO9CUeG0iynd2gWNOk
 q9JEC3/e31QYsHU1IO+8L5MuJfWKo+LAMFxPrJ077oGbUIi0AbtYnwzvjTQfqWNB7+bU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD66-0003xY-Ut
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTD66-0002Zs-Ra
 for xen-changelog@lists.xenproject.org; Mon, 27 Apr 2020 23:23:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.13] build,xsm: fix multiple call
Message-Id: <E1jTD66-0002Zs-Ra@xenbits.xenproject.org>
Date: Mon, 27 Apr 2020 23:23:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 35b80b2a011416383466f21e32cb72cf73df491b
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Mon Apr 27 15:07:46 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:07:46 2020 +0200

    build,xsm: fix multiple call
    
    Both script mkflask.sh and mkaccess_vector.sh generates multiple
    files. Exploits the 'multi-target pattern rule' trick to call each
    scripts only once.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 52f3f319851e40892fbafeae53e512c7d61f03d0
    master date: 2020-04-23 09:59:05 +0200
---
 xen/xsm/flask/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index 7c3f381287..874fd362b9 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -21,10 +21,10 @@ ALL_H_FILES = $(FLASK_H_FILES) $(AV_H_FILES)
 
 $(obj-y) ss/built_in.o: $(ALL_H_FILES)
 
-$(FLASK_H_FILES): $(FLASK_H_DEPEND)
+$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkflask.sh $(AWK) include $(FLASK_H_DEPEND)
 
-$(AV_H_FILES): $(AV_H_DEPEND)
+$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkaccess_vector.sh $(AWK) $(AV_H_DEPEND)
 
 obj-bin-$(CONFIG_XSM_FLASK_POLICY) += flask-policy.o
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.13


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 11:22:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 11:22:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTOJQ-0004F1-9G; Tue, 28 Apr 2020 11:22:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTOJP-0004Ew-9i
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 11:22:03 +0000
X-Inumbo-ID: 7b79611a-8942-11ea-984c-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 7b79611a-8942-11ea-984c-12813bfff9fa;
 Tue, 28 Apr 2020 11:22:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=e/mqIcZ5JiZOrR1YhMkdKr80Ojzdfrryig/1bIfRs/o=; b=WI8JF9K1xqv9Y44GynoZVd/zUP
 vPGGjZnVo4tnEiEBC18piXNhYq651MUbZ/OkplKRu8RvgfJ31dQni4ez6sn3kZBqdYV0ZVDt4+nYW
 lF5BReb6on5OogZMcZYaNS53ibzFmuGaDGZF2y//GoLDgrnA3r+9Hb3niS++l81I4fZU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTOJN-0001fj-Vo
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 11:22:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTOJN-0002LP-UO
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 11:22:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [mini-os master] mini-os: Avoid segfaults in tc{g,s}etattr
Message-Id: <E1jTOJN-0002LP-UO@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 11:22:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f82b8134cbcbcca91ff325aaf4200ee55b7e2d7a
Author:     Jason Andryuk <jandryuk@gmail.com>
AuthorDate: Sun Apr 26 23:40:19 2020 -0400
Commit:     Wei Liu <wl@xen.org>
CommitDate: Tue Apr 28 12:18:14 2020 +0100

    mini-os: Avoid segfaults in tc{g,s}etattr
    
    Commit c96c22f1d94 "mini-os: minimal implementations of some termios
    functions" introduced implementations of tcgetattr and tcsetattr.
    However, they do not check if files[fildes].cons.dev is non-NULL before
    dereferencing.  This is not a problem for FDs allocated through
    alloc_fd, but the files array pre-allocates FDs 0-2 for stdio.  Those
    entries have a NULL .dev, so tc{g,s}etattr on them segfault.
    
    ioemu-stubdom segfaults when term_init() calls tcgetattr on FD 0.
    
    Restore tcgetattr and tcsetattr behavior when .dev is NULL equivalent to
    unsupported_function as it was before c96c22f1d94.
    
    Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
---
 lib/sys.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/sys.c b/lib/sys.c
index da434fc..c6a7b9f 100644
--- a/lib/sys.c
+++ b/lib/sys.c
@@ -1472,6 +1472,11 @@ int tcsetattr(int fildes, int action, const struct termios *tios)
             return -1;
     }
 
+    if (files[fildes].cons.dev == NULL) {
+        errno = ENOSYS;
+        return -1;
+    }
+
     if (tios->c_oflag & OPOST)
         files[fildes].cons.dev->is_raw = false;
     else
@@ -1492,6 +1497,11 @@ int tcgetattr(int fildes, struct termios *tios)
         return -1;
     }
 
+    if (files[fildes].cons.dev == NULL) {
+        errno = ENOSYS;
+        return 0;
+    }
+
     if (tios == NULL) {
         errno = EINVAL;
         return -1;
--
generated by git-patchbot for /home/xen/git/mini-os.git#master


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 11:44:12 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 11:44:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTOen-0006nd-02; Tue, 28 Apr 2020 11:44:09 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTOem-0006nY-Ca
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 11:44:08 +0000
X-Inumbo-ID: 91a0d862-8945-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 91a0d862-8945-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 11:44:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kNOs58kTKlFEtbiTsoccK/FgDwSIrQOijn8mFt56GY0=; b=zQH34IjtTsRvD5PmiFdjdTcTem
 XeiI78tOiC49x39PoMSuWpoDOEHvndYvFLfM/q2UsVRTJNdd/YQEQ4/+uPpekLbq/d8SdMX4Ad5qR
 jsRRC/sISexE8d5K/AfVU5iog3jyn6VZj1lTRLVzyKJmO32kulY+ORwzpsvvF2WxwKS4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTOel-00028d-KE
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 11:44:07 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTOel-0004RS-Hz
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 11:44:07 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] MAINTAINERS: list myself as mini-os reviewer
Message-Id: <E1jTOel-0004RS-Hz@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 11:44:07 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2add344e6a4ef690871157b87b0e7d52bc6db9e4
Author:     Wei Liu <wl@xen.org>
AuthorDate: Tue Apr 28 12:23:46 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Tue Apr 28 12:34:33 2020 +0100

    MAINTAINERS: list myself as mini-os reviewer
    
    I probably don't have much time to actually review patches, but I do
    want to be CC'ed such that I can commit patches in a timely manner.
    
    Signed-off-by: Wei Liu <wl@xen.org>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 MAINTAINERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 8a4c869704..e374816755 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -374,6 +374,7 @@ F:	xen/test/livepatch/*
 
 MINI-OS
 M:	Samuel Thibault <samuel.thibault@ens-lyon.org>
+R:	Wei Liu <wl@xen.org>
 S:	Supported
 L:	minios-devel@lists.xenproject.org
 T:	git https://xenbits.xenproject.org/git-http/mini-os.git
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 15:44:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 15:44:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTSP1-00073i-Ov; Tue, 28 Apr 2020 15:44:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTSP0-00073d-JQ
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:44:06 +0000
X-Inumbo-ID: 16a19c1a-8967-11ea-9888-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 16a19c1a-8967-11ea-9888-12813bfff9fa;
 Tue, 28 Apr 2020 15:44:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=CAJA4sZHFviB91KVCA/AZA7EaB30YY8Mt07bnu+djWs=; b=jGPdXg6ez/uJHTltpxyCIGptNk
 r+dNO7R/UY6h4pFYj5eV71zc8QOmMX9GDQXxa0T7webAs+myW14Ej1GQKKxIinC9WM5sFAVNxOU5M
 IcGJBBSyN8C8DJgFzNV5/VbMjxJWQl4y26dDzptSC137p52MiaGzzgUq6HH60vDT2PWE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSOy-0007RO-23
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:44:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSOy-000686-0p
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:44:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] tools/xenstore: simplify socket initialization
Message-Id: <E1jTSOy-000686-0p@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 15:44:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 44420fb223c24305642ae3189e2c6c99c565ed12
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Tue Apr 28 16:58:37 2020 +0200
Commit:     Wei Liu <wl@xen.org>
CommitDate: Tue Apr 28 16:38:18 2020 +0100

    tools/xenstore: simplify socket initialization
    
    The setup of file descriptors for the Xenstore sockets is needlessly
    complicated: the space is allocated dynamically, while two static
    variables really would do the job.
    
    For tearing down the sockets it is easier to widen the scope of the
    file descriptors from function to file.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 tools/xenstore/xenstored_core.c | 69 ++++++++++++++++-------------------------
 1 file changed, 27 insertions(+), 42 deletions(-)

diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index 551fe38f57..7bd959f28b 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -70,6 +70,9 @@ static struct pollfd *fds;
 static unsigned int current_array_size;
 static unsigned int nr_fds;
 
+static int sock = -1;
+static int ro_sock = -1;
+
 #define ROUNDUP(_x, _w) (((unsigned long)(_x)+(1UL<<(_w))-1) & ~((1UL<<(_w))-1))
 
 static bool verbose = false;
@@ -310,8 +313,7 @@ fail:
 	return -1;
 }
 
-static void initialize_fds(int sock, int *p_sock_pollfd_idx,
-			   int ro_sock, int *p_ro_sock_pollfd_idx,
+static void initialize_fds(int *p_sock_pollfd_idx, int *p_ro_sock_pollfd_idx,
 			   int *ptimeout)
 {
 	struct connection *conn;
@@ -1789,43 +1791,29 @@ void corrupt(struct connection *conn, const char *fmt, ...)
 	check_store();
 }
 
-
-#ifdef NO_SOCKETS
-static void init_sockets(int **psock, int **pro_sock)
-{
-	static int minus_one = -1;
-	*psock = *pro_sock = &minus_one;
-}
-#else
-static int destroy_fd(void *_fd)
+#ifndef NO_SOCKETS
+static void destroy_fds(void)
 {
-	int *fd = _fd;
-	close(*fd);
-	return 0;
+	if (sock >= 0)
+		close(sock);
+	if (ro_sock >= 0)
+		close(ro_sock);
 }
 
-static void init_sockets(int **psock, int **pro_sock)
+static void init_sockets(void)
 {
 	struct sockaddr_un addr;
-	int *sock, *ro_sock;
 	const char *soc_str = xs_daemon_socket();
 	const char *soc_str_ro = xs_daemon_socket_ro();
 
 	/* Create sockets for them to listen to. */
-	*psock = sock = talloc(talloc_autofree_context(), int);
-	if (!sock)
-		barf_perror("No memory when creating sockets");
-	*sock = socket(PF_UNIX, SOCK_STREAM, 0);
-	if (*sock < 0)
+	atexit(destroy_fds);
+	sock = socket(PF_UNIX, SOCK_STREAM, 0);
+	if (sock < 0)
 		barf_perror("Could not create socket");
-	*pro_sock = ro_sock = talloc(talloc_autofree_context(), int);
-	if (!ro_sock)
-		barf_perror("No memory when creating sockets");
-	*ro_sock = socket(PF_UNIX, SOCK_STREAM, 0);
-	if (*ro_sock < 0)
+	ro_sock = socket(PF_UNIX, SOCK_STREAM, 0);
+	if (ro_sock < 0)
 		barf_perror("Could not create socket");
-	talloc_set_destructor(sock, destroy_fd);
-	talloc_set_destructor(ro_sock, destroy_fd);
 
 	/* FIXME: Be more sophisticated, don't mug running daemon. */
 	unlink(soc_str);
@@ -1836,24 +1824,21 @@ static void init_sockets(int **psock, int **pro_sock)
 	if(strlen(soc_str) >= sizeof(addr.sun_path))
 		barf_perror("socket string '%s' too long", soc_str);
 	strcpy(addr.sun_path, soc_str);
-	if (bind(*sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
+	if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
 		barf_perror("Could not bind socket to %s", soc_str);
 
 	if(strlen(soc_str_ro) >= sizeof(addr.sun_path))
 		barf_perror("socket string '%s' too long", soc_str_ro);
 	strcpy(addr.sun_path, soc_str_ro);
-	if (bind(*ro_sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
+	if (bind(ro_sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
 		barf_perror("Could not bind socket to %s", soc_str_ro);
 
 	if (chmod(soc_str, 0600) != 0
 	    || chmod(soc_str_ro, 0660) != 0)
 		barf_perror("Could not chmod sockets");
 
-	if (listen(*sock, 1) != 0
-	    || listen(*ro_sock, 1) != 0)
+	if (listen(sock, 1) != 0 || listen(ro_sock, 1) != 0)
 		barf_perror("Could not listen on sockets");
-
-
 }
 #endif
 
@@ -1909,7 +1894,7 @@ int priv_domid = 0;
 
 int main(int argc, char *argv[])
 {
-	int opt, *sock = NULL, *ro_sock = NULL;
+	int opt;
 	int sock_pollfd_idx = -1, ro_sock_pollfd_idx = -1;
 	bool dofork = true;
 	bool outputpid = false;
@@ -1997,7 +1982,9 @@ int main(int argc, char *argv[])
 
 	talloc_enable_null_tracking();
 
-	init_sockets(&sock, &ro_sock);
+#ifndef NO_SOCKETS
+	init_sockets();
+#endif
 
 	init_pipe(reopen_log_pipe);
 
@@ -2025,8 +2012,7 @@ int main(int argc, char *argv[])
 		tracefile = talloc_strdup(NULL, tracefile);
 
 	/* Get ready to listen to the tools. */
-	initialize_fds(*sock, &sock_pollfd_idx, *ro_sock, &ro_sock_pollfd_idx,
-		       &timeout);
+	initialize_fds(&sock_pollfd_idx, &ro_sock_pollfd_idx, &timeout);
 
 	/* Tell the kernel we're up and running. */
 	xenbus_notify_running();
@@ -2067,7 +2053,7 @@ int main(int argc, char *argv[])
 				barf_perror("sock poll failed");
 				break;
 			} else if (fds[sock_pollfd_idx].revents & POLLIN) {
-				accept_connection(*sock, true);
+				accept_connection(sock, true);
 				sock_pollfd_idx = -1;
 			}
 		}
@@ -2077,7 +2063,7 @@ int main(int argc, char *argv[])
 				barf_perror("ro sock poll failed");
 				break;
 			} else if (fds[ro_sock_pollfd_idx].revents & POLLIN) {
-				accept_connection(*ro_sock, false);
+				accept_connection(ro_sock, false);
 				ro_sock_pollfd_idx = -1;
 			}
 		}
@@ -2144,8 +2130,7 @@ int main(int argc, char *argv[])
 			}
 		}
 
-		initialize_fds(*sock, &sock_pollfd_idx, *ro_sock,
-			       &ro_sock_pollfd_idx, &timeout);
+		initialize_fds(&sock_pollfd_idx, &ro_sock_pollfd_idx, &timeout);
 	}
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 15:55:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 15:55:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTSZg-0008Ci-8g; Tue, 28 Apr 2020 15:55:08 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTSZe-0008CT-Cp
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:06 +0000
X-Inumbo-ID: a09e2afe-8968-11ea-b07b-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a09e2afe-8968-11ea-b07b-bc764e2007e4;
 Tue, 28 Apr 2020 15:55:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=L8a+bT15JQb3/MmXKNr/Lm/o5DhYs452jdijmyZKY+0=; b=gojViyuJHWXqUS6OhcVy3OUAFu
 czGfYEcKkwwrqmKSmX8+URcfmNdhYFRWO96Ll0WrIjvx+cRE9mzG65tz3eypgrCiTHwNMlc2v6XUe
 98PWTLMZmoBHxA/3Gzp8ScG4RE/LtetBjJKu7AG/bct7LBM5cDwSe6ZBbhnxmxjtLN0Q=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSZd-0007fs-6N
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSZd-0006ua-4k
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86_64/mm: map and unmap page tables in
 cleanup_frame_table
Message-Id: <E1jTSZd-0006ua-4k@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 15:55:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 93414e42c75a37b67a4c347f55b2d21d939b576c
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:46:29 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:46:29 2020 +0200

    x86_64/mm: map and unmap page tables in cleanup_frame_table
    
    Also fix a weird indentation and use PAGE_{MASK,SIZE} there.
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index e85ef449f3..cc7bd12d63 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -737,8 +737,8 @@ static void cleanup_frame_table(struct mem_hotadd_info *info)
 
     while (sva < eva)
     {
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(sva)])[
-          l3_table_offset(sva)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(sva)],
+                           l3_table_offset(sva));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) ||
              (l3e_get_flags(l3e) & _PAGE_PSE) )
         {
@@ -747,7 +747,7 @@ static void cleanup_frame_table(struct mem_hotadd_info *info)
             continue;
         }
 
-        l2e = l3e_to_l2e(l3e)[l2_table_offset(sva)];
+        l2e = l2e_from_l3e(l3e, l2_table_offset(sva));
         ASSERT(l2e_get_flags(l2e) & _PAGE_PRESENT);
 
         if ( (l2e_get_flags(l2e) & (_PAGE_PRESENT | _PAGE_PSE)) ==
@@ -763,10 +763,10 @@ static void cleanup_frame_table(struct mem_hotadd_info *info)
             continue;
         }
 
-        ASSERT(l1e_get_flags(l2e_to_l1e(l2e)[l1_table_offset(sva)]) &
-                _PAGE_PRESENT);
-         sva = (sva & ~((1UL << PAGE_SHIFT) - 1)) +
-                    (1UL << PAGE_SHIFT);
+        ASSERT(l1e_get_flags(l1e_from_l2e(l2e, l1_table_offset(sva))) &
+               _PAGE_PRESENT);
+
+        sva = (sva & PAGE_MASK) + PAGE_SIZE;
     }
 
     /* Brute-Force flush all TLB */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 15:55:18 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 15:55:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTSZq-0008Da-AZ; Tue, 28 Apr 2020 15:55:18 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTSZo-0008DP-Pb
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:16 +0000
X-Inumbo-ID: a6a28170-8968-11ea-988f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id a6a28170-8968-11ea-988f-12813bfff9fa;
 Tue, 28 Apr 2020 15:55:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GGpXMhvCIbf+M35lGHf8U0K4jO2OYpHQyp9rjEswXgc=; b=tM66vzkVjLmsMzxt0zzcu9ra56
 kW5WCz10OZ9qmNc/oYhgSMC16Z3bNtt+mHt/3l6YzoC0sAK/Pq3E2h0MqrFVGSMS9iVU/FqpdY5zQ
 Rtujj/R6jTCQ0KtY7kPf38a2/ZBnAihlfaPjVbpRO3YLIJsAKDRXB91f69qR/Bi9JT4I=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSZn-0007fy-9G
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:15 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSZn-0006v9-86
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:15 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86_64/mm: map and unmap page tables in
 subarch_init_memory
Message-Id: <E1jTSZn-0006v9-86@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 15:55:15 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a4dcb4b47dd99b0ea49c3dd5acd408c7bc42ce3c
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:47:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:47:20 2020 +0200

    x86_64/mm: map and unmap page tables in subarch_init_memory
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index cc7bd12d63..e1c7fd34d3 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -852,14 +852,14 @@ void __init subarch_init_memory(void)
           v += n << PAGE_SHIFT )
     {
         n = L2_PAGETABLE_ENTRIES * L1_PAGETABLE_ENTRIES;
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-            l3_table_offset(v)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                           l3_table_offset(v));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
             continue;
         if ( !(l3e_get_flags(l3e) & _PAGE_PSE) )
         {
             n = L1_PAGETABLE_ENTRIES;
-            l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+            l2e = l2e_from_l3e(l3e, l2_table_offset(v));
             if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
                 continue;
             m2p_start_mfn = l2e_get_pfn(l2e);
@@ -878,11 +878,11 @@ void __init subarch_init_memory(void)
           v != RDWR_COMPAT_MPT_VIRT_END;
           v += 1 << L2_PAGETABLE_SHIFT )
     {
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-            l3_table_offset(v)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                           l3_table_offset(v));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
             continue;
-        l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+        l2e = l2e_from_l3e(l3e, l2_table_offset(v));
         if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
             continue;
         m2p_start_mfn = l2e_get_pfn(l2e);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 15:55:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 15:55:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTSZz-0008Er-CH; Tue, 28 Apr 2020 15:55:27 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTSZy-0008Eh-2s
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:26 +0000
X-Inumbo-ID: acac73d2-8968-11ea-988f-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id acac73d2-8968-11ea-988f-12813bfff9fa;
 Tue, 28 Apr 2020 15:55:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=fCsOGuIP338qYoSY/ipgenRhn3HrkEqr8+ZrllOC66g=; b=as45uH6byEaM/KBic4d9FzxbtF
 DYfxw3YeAh9oiSDmX1DC43XAAOEAeXWA+kzHRmt+3BRuOa+Xpd3ja9fpTx2p4BGka9DoyLxOaHR2e
 8HceXc0r+aKlAIMW2NJ9yHrLhQglReFwiqDKNR93neWcfpzEMFZfeBiboRq87Rxdkyh4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSZx-0007gC-CM
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSZx-0006vk-B7
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86_64/mm: map and unmap page tables in
 subarch_memory_op
Message-Id: <E1jTSZx-0006vk-B7@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 15:55:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 72476526071bf5ff89ee24404358430b0f3f0b20
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:48:02 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:48:02 2020 +0200

    x86_64/mm: map and unmap page tables in subarch_memory_op
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index e1c7fd34d3..747941d48e 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -932,13 +932,13 @@ long subarch_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
               (v < (unsigned long)(machine_to_phys_mapping + max_page));
               i++, v += 1UL << L2_PAGETABLE_SHIFT )
         {
-            l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-                l3_table_offset(v)];
+            l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                               l3_table_offset(v));
             if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
                 mfn = last_mfn;
             else if ( !(l3e_get_flags(l3e) & _PAGE_PSE) )
             {
-                l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+                l2e = l2e_from_l3e(l3e, l2_table_offset(v));
                 if ( l2e_get_flags(l2e) & _PAGE_PRESENT )
                     mfn = l2e_get_pfn(l2e);
                 else
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 15:55:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 15:55:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTSa9-0008G8-Dq; Tue, 28 Apr 2020 15:55:37 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTSa8-0008Fw-4X
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:36 +0000
X-Inumbo-ID: b2abe81c-8968-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b2abe81c-8968-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 15:55:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/jIDubNTwUYbwuuNrIsMFx6DG6T7hZF97XmbtYJloBk=; b=1CBkdFHw/CwD+ezNHjeeV6whSI
 reBckwyY213+SNTBeeXgQZTJu9RPhGhH03GIj/t/sbZFn6us0QWjLVWeUviqIFwZv2M9bTyhb52U6
 XdGIBIaV7AeTjZrcauULZyoSW5pKUlUYwPmu3JaZqpca0FpAzOCklkzZFPWUYfTQuVho=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSa7-0007gN-FD
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSa7-0006wP-E4
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/smpboot: map and unmap page tables in
 cleanup_cpu_root_pgt
Message-Id: <E1jTSa7-0006wP-E4@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 15:55:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9749f78fc897427fd682008ccb1b715c15ecfbba
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:48:36 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:48:36 2020 +0200

    x86/smpboot: map and unmap page tables in cleanup_cpu_root_pgt
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/smpboot.c | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index 09264b02d1..275ce7661d 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -858,23 +858,27 @@ static void cleanup_cpu_root_pgt(unsigned int cpu)
           r < root_table_offset(HYPERVISOR_VIRT_END); ++r )
     {
         l3_pgentry_t *l3t;
+        mfn_t l3mfn;
         unsigned int i3;
 
         if ( !(root_get_flags(rpt[r]) & _PAGE_PRESENT) )
             continue;
 
-        l3t = l4e_to_l3e(rpt[r]);
+        l3mfn = l4e_get_mfn(rpt[r]);
+        l3t = map_domain_page(l3mfn);
 
         for ( i3 = 0; i3 < L3_PAGETABLE_ENTRIES; ++i3 )
         {
             l2_pgentry_t *l2t;
+            mfn_t l2mfn;
             unsigned int i2;
 
             if ( !(l3e_get_flags(l3t[i3]) & _PAGE_PRESENT) )
                 continue;
 
             ASSERT(!(l3e_get_flags(l3t[i3]) & _PAGE_PSE));
-            l2t = l3e_to_l2e(l3t[i3]);
+            l2mfn = l3e_get_mfn(l3t[i3]);
+            l2t = map_domain_page(l2mfn);
 
             for ( i2 = 0; i2 < L2_PAGETABLE_ENTRIES; ++i2 )
             {
@@ -882,13 +886,15 @@ static void cleanup_cpu_root_pgt(unsigned int cpu)
                     continue;
 
                 ASSERT(!(l2e_get_flags(l2t[i2]) & _PAGE_PSE));
-                free_xen_pagetable(l2e_to_l1e(l2t[i2]));
+                free_xen_pagetable_new(l2e_get_mfn(l2t[i2]));
             }
 
-            free_xen_pagetable(l2t);
+            unmap_domain_page(l2t);
+            free_xen_pagetable_new(l2mfn);
         }
 
-        free_xen_pagetable(l3t);
+        unmap_domain_page(l3t);
+        free_xen_pagetable_new(l3mfn);
     }
 
     free_xen_pagetable(rpt);
@@ -896,11 +902,14 @@ static void cleanup_cpu_root_pgt(unsigned int cpu)
     /* Also zap the stub mapping for this CPU. */
     if ( stub_linear )
     {
-        l3_pgentry_t *l3t = l4e_to_l3e(common_pgt);
-        l2_pgentry_t *l2t = l3e_to_l2e(l3t[l3_table_offset(stub_linear)]);
-        l1_pgentry_t *l1t = l2e_to_l1e(l2t[l2_table_offset(stub_linear)]);
+        l3_pgentry_t l3e = l3e_from_l4e(common_pgt,
+                                        l3_table_offset(stub_linear));
+        l2_pgentry_t l2e = l2e_from_l3e(l3e, l2_table_offset(stub_linear));
+        l1_pgentry_t *l1t = map_l1t_from_l2e(l2e);
 
         l1t[l1_table_offset(stub_linear)] = l1e_empty();
+
+        unmap_domain_page(l1t);
     }
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 15:55:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 15:55:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTSaI-0008Hf-Ng; Tue, 28 Apr 2020 15:55:46 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTSaI-0008HT-3i
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:46 +0000
X-Inumbo-ID: b8acc3ee-8968-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id b8acc3ee-8968-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 15:55:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=AQKjKFq4gFAQmGpvCwBx1gYht/39Jg+W3uedH4Govg0=; b=TB5Z9N0UAmV3Y5RbqbnnDvClKi
 F7UDiquwMNj2ksyxZQB01cD/yyiLN9TOonp4nzk8x308FFXsU2pDzB4uJbJfJ7n3ovRXhnXYCjccR
 Cr+6mNNqH6jr2YiGaOCO3O51d4DBDj9W7MpMn45Dc2zeCCAJKMF3FF0vS+8FhGu2YeiI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSaH-0007gc-I4
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSaH-0006x5-H0
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/pv: map and unmap page table in dom0_construct_pv
Message-Id: <E1jTSaH-0006x5-H0@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 15:55:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e55884368563eb0d905b08d8bab501b53d612b68
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:49:17 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:49:17 2020 +0200

    x86/pv: map and unmap page table in dom0_construct_pv
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/pv/dom0_build.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 5678da782d..abfbe5f436 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -669,6 +669,8 @@ int __init dom0_construct_pv(struct domain *d,
 
     if ( is_pv_32bit_domain(d) )
     {
+        l2_pgentry_t *l2t;
+
         /* Ensure the first four L3 entries are all populated. */
         for ( i = 0, l3tab = l3start; i < 4; ++i, ++l3tab )
         {
@@ -683,7 +685,9 @@ int __init dom0_construct_pv(struct domain *d,
                 l3e_get_page(*l3tab)->u.inuse.type_info |= PGT_pae_xen_l2;
         }
 
-        init_xen_pae_l2_slots(l3e_to_l2e(l3start[3]), d);
+        l2t = map_l2t_from_l3e(l3start[3]);
+        init_xen_pae_l2_slots(l2t, d);
+        unmap_domain_page(l2t);
     }
 
     /* Pages that are part of page tables must be read only. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 15:55:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 15:55:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTSaS-0008Ji-QX; Tue, 28 Apr 2020 15:55:56 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTSaS-0008JZ-Fv
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:56 +0000
X-Inumbo-ID: beda8dbe-8968-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id beda8dbe-8968-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 15:55:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kQVsYzBxSld04ncqi0bAcoFPu+vq+PBXehWJYIqID9g=; b=sOWec9BXDFLKJZAH3OJyjjuyKi
 C72ZlRlkNzHb0tMyvNIKAHFPlN2tnbVOIKpt7H/YOpyityH3myENrkYnsmxaRaPwUmuMEvciIZZ+p
 zYb1Toef9YtqusGGUrjWvhpkanQALl5NyXOdpBe9H3XsXAlf+8EUqho6Nf3iy2bkBR68=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSaR-0007gn-Th
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTSaR-0006y6-Qm
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 15:55:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] PCI: drop a redundant variable from pci_add_device()
Message-Id: <E1jTSaR-0006y6-Qm@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 15:55:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4ec07971f1c5a236a0d8c528d806efb6bfd3d1a6
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 28 17:49:55 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:49:55 2020 +0200

    PCI: drop a redundant variable from pci_add_device()
    
    Surrounding code already uses the available alternative, after all.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
---
 xen/drivers/passthrough/pci.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 5660f7e1c2..15114e7cbc 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -760,7 +760,6 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
             {
                 unsigned int idx = pos + PCI_SRIOV_BAR + i * 4;
                 uint32_t bar = pci_conf_read32(pdev->sbdf, idx);
-                pci_sbdf_t sbdf = PCI_SBDF3(seg, bus, devfn);
 
                 if ( (bar & PCI_BASE_ADDRESS_SPACE) ==
                      PCI_BASE_ADDRESS_SPACE_IO )
@@ -771,7 +770,8 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
                            seg, bus, slot, func, i);
                     continue;
                 }
-                ret = pci_size_mem_bar(sbdf, idx, NULL, &pdev->vf_rlen[i],
+                ret = pci_size_mem_bar(pdev->sbdf, idx, NULL,
+                                       &pdev->vf_rlen[i],
                                        PCI_BAR_VF |
                                        ((i == PCI_SRIOV_NUM_BARS - 1) ?
                                         PCI_BAR_LAST : 0));
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:33:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:33:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTAO-0004ZV-3q; Tue, 28 Apr 2020 16:33:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTAN-0004ZO-6R
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:03 +0000
X-Inumbo-ID: edf7f528-896d-11ea-989a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id edf7f528-896d-11ea-989a-12813bfff9fa;
 Tue, 28 Apr 2020 16:33:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=G5Njqm29Td+WFbDA2sS1xYJsdh6EVlNLChmpGnd3IhY=; b=7MHHMLQIokf11GD7ll/pDFUqYu
 oIIcG3RefttlqbMS8Ur/yyVpS+SsjfZyHZ3fcaI22aVyT2UlcZgPj3hpvp6+N/0G/70QxFAxMu5Ub
 uolq8dSRqU5evhtGkd9Q9OcwvasYsT5+posfHkpXTjBxNJcQSnzBGOXgrcMp24kNioPs=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTAM-0000bs-Ee
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTAM-0001a8-DR
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] guest_access: harden *copy_to_guest_offset() to prevent
 const dest operand
Message-Id: <E1jTTAM-0001a8-DR@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:33:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4bdf6b5a7fec876e9bbd70ebe605828ad0fb12a4
Author:     Julien Grall <jgrall@amazon.com>
AuthorDate: Mon Apr 27 09:28:21 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 09:28:21 2020 +0200

    guest_access: harden *copy_to_guest_offset() to prevent const dest operand
    
    At the moment, *copy_to_guest_offset() will allow the hypervisor to copy
    data to guest handle marked const.
    
    Thankfully, no users of the helper will do that. Rather than hoping this
    can be caught during review, harden copy_to_guest_offset() so the build
    will fail if such users are introduced.
    
    There is no easy way to check whether a const is NULL in C99. The
    approach used is to introduce an unused variable that is non-const and
    assign the handle. If the handle were const, this would fail at build
    because without an explicit cast, it is not possible to assign a const
    variable to a non-const variable.
    
    Suggested-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>
---
 xen/include/asm-arm/guest_access.h | 4 ++++
 xen/include/asm-x86/guest_access.h | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/xen/include/asm-arm/guest_access.h b/xen/include/asm-arm/guest_access.h
index 8997a1cbfe..3b8d4ec322 100644
--- a/xen/include/asm-arm/guest_access.h
+++ b/xen/include/asm-arm/guest_access.h
@@ -78,6 +78,8 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
 #define copy_to_guest_offset(hnd, off, ptr, nr) ({      \
     const typeof(*(ptr)) *_s = (ptr);                   \
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
+    /* Check that the handle is not for a const type */ \
+    void *__maybe_unused _t = (hnd).p;                  \
     ((void)((hnd).p == (ptr)));                         \
     raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));  \
 })
@@ -127,6 +129,8 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
 #define __copy_to_guest_offset(hnd, off, ptr, nr) ({    \
     const typeof(*(ptr)) *_s = (ptr);                   \
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
+    /* Check that the handle is not for a const type */ \
+    void *__maybe_unused _t = (hnd).p;                  \
     ((void)((hnd).p == (ptr)));                         \
     __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\
 })
diff --git a/xen/include/asm-x86/guest_access.h b/xen/include/asm-x86/guest_access.h
index ca700c959a..a22745ceb4 100644
--- a/xen/include/asm-x86/guest_access.h
+++ b/xen/include/asm-x86/guest_access.h
@@ -87,6 +87,8 @@
 #define copy_to_guest_offset(hnd, off, ptr, nr) ({      \
     const typeof(*(ptr)) *_s = (ptr);                   \
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
+    /* Check that the handle is not for a const type */ \
+    void *__maybe_unused _t = (hnd).p;                  \
     ((void)((hnd).p == (ptr)));                         \
     raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));  \
 })
@@ -137,6 +139,8 @@
 #define __copy_to_guest_offset(hnd, off, ptr, nr) ({    \
     const typeof(*(ptr)) *_s = (ptr);                   \
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
+    /* Check that the handle is not for a const type */ \
+    void *__maybe_unused _t = (hnd).p;                  \
     ((void)((hnd).p == (ptr)));                         \
     __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\
 })
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:33:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:33:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTAZ-0004aQ-5S; Tue, 28 Apr 2020 16:33:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTAX-0004a9-Fw
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:13 +0000
X-Inumbo-ID: f4004588-896d-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f4004588-896d-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 16:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nz3Rp0d6t0TjgFNU60qCFOLDqqfPVw9XRxgUJulnN3Y=; b=5GUZcE+GaQ7/f7m9tfFZ3tzHAi
 1JMFMYA6Xq2I/cki4+OCxyzzOsGuSJYKvrnc+0l0GncWuFFStMT4xpUB6oGIVkfhvxZMowHb1rOXx
 65yFO+xbjgLLQROm7e1u/9iwaLrLe0F/pYpjFNb+gE4F0F1HLa6YZGIx+kHeUvGm0pvY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTAW-0000c4-IT
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTAW-0001b4-HB
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] guestcopy: evaluate {, __}copy{,
 _field}_to_guest*() ptr argument just once
Message-Id: <E1jTTAW-0001b4-HB@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:33:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d0ee8e9ca4d4163e42dcd5f1cf13e4fae30a4190
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 09:30:16 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 09:30:16 2020 +0200

    guestcopy: evaluate {,__}copy{,_field}_to_guest*() ptr argument just once
    
    There's nothing wrong with having e.g.
    
        copy_to_guest(uarg, ptr++, 1);
    
    yet until now this would increment "ptr" twice.
    
    Also drop a pair of unneeded parentheses from every instance at this
    occasion.
    
    Fixes: b7954cc59831 ("Enhance guest memory accessor macros so that source operands can be")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
---
 xen/include/asm-arm/guest_access.h | 8 ++++----
 xen/include/asm-x86/guest_access.h | 8 ++++----
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/xen/include/asm-arm/guest_access.h b/xen/include/asm-arm/guest_access.h
index 3b8d4ec322..64d01951a9 100644
--- a/xen/include/asm-arm/guest_access.h
+++ b/xen/include/asm-arm/guest_access.h
@@ -80,7 +80,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
     /* Check that the handle is not for a const type */ \
     void *__maybe_unused _t = (hnd).p;                  \
-    ((void)((hnd).p == (ptr)));                         \
+    (void)((hnd).p == _s);                              \
     raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));  \
 })
 
@@ -107,7 +107,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
 #define copy_field_to_guest(hnd, ptr, field) ({         \
     const typeof(&(ptr)->field) _s = &(ptr)->field;     \
     void *_d = &(hnd).p->field;                         \
-    ((void)(&(hnd).p->field == &(ptr)->field));         \
+    (void)(&(hnd).p->field == _s);                      \
     raw_copy_to_guest(_d, _s, sizeof(*_s));             \
 })
 
@@ -131,7 +131,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
     /* Check that the handle is not for a const type */ \
     void *__maybe_unused _t = (hnd).p;                  \
-    ((void)((hnd).p == (ptr)));                         \
+    (void)((hnd).p == _s);                              \
     __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\
 })
 
@@ -148,7 +148,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf,
 #define __copy_field_to_guest(hnd, ptr, field) ({       \
     const typeof(&(ptr)->field) _s = &(ptr)->field;     \
     void *_d = &(hnd).p->field;                         \
-    ((void)(&(hnd).p->field == &(ptr)->field));         \
+    (void)(&(hnd).p->field == _s);                      \
     __raw_copy_to_guest(_d, _s, sizeof(*_s));           \
 })
 
diff --git a/xen/include/asm-x86/guest_access.h b/xen/include/asm-x86/guest_access.h
index a22745ceb4..064527895f 100644
--- a/xen/include/asm-x86/guest_access.h
+++ b/xen/include/asm-x86/guest_access.h
@@ -89,7 +89,7 @@
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
     /* Check that the handle is not for a const type */ \
     void *__maybe_unused _t = (hnd).p;                  \
-    ((void)((hnd).p == (ptr)));                         \
+    (void)((hnd).p == _s);                              \
     raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));  \
 })
 
@@ -112,7 +112,7 @@
 #define copy_field_to_guest(hnd, ptr, field) ({         \
     const typeof(&(ptr)->field) _s = &(ptr)->field;     \
     void *_d = &(hnd).p->field;                         \
-    ((void)(&(hnd).p->field == &(ptr)->field));         \
+    (void)(&(hnd).p->field == _s);                      \
     raw_copy_to_guest(_d, _s, sizeof(*_s));             \
 })
 
@@ -141,7 +141,7 @@
     char (*_d)[sizeof(*_s)] = (void *)(hnd).p;          \
     /* Check that the handle is not for a const type */ \
     void *__maybe_unused _t = (hnd).p;                  \
-    ((void)((hnd).p == (ptr)));                         \
+    (void)((hnd).p == _s);                              \
     __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\
 })
 
@@ -159,7 +159,7 @@
 #define __copy_field_to_guest(hnd, ptr, field) ({       \
     const typeof(&(ptr)->field) _s = &(ptr)->field;     \
     void *_d = &(hnd).p->field;                         \
-    ((void)(&(hnd).p->field == &(ptr)->field));         \
+    (void)(&(hnd).p->field == _s);                      \
     __raw_copy_to_guest(_d, _s, sizeof(*_s));           \
 })
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:33:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:33:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTAi-0004bd-7C; Tue, 28 Apr 2020 16:33:24 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTAh-0004bT-6F
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:23 +0000
X-Inumbo-ID: fa01f9ea-896d-11ea-b07b-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fa01f9ea-896d-11ea-b07b-bc764e2007e4;
 Tue, 28 Apr 2020 16:33:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=1poZYJtA2ntYSR74S2/RJvPcS/T2yzcPnOT5MljAKI8=; b=B/8jYx1bGk5JODGfa+y8S5Q9BA
 hFT67Oqya+Rz7XEH0bVMDuV8ZJL0MR6tHSyjDGLtsMhrQUHxDG7NI65b0vnb4EevCiYRYxuFi8STN
 iz2BJzY4bOt+FfrPRSuYl48sPnPvIdv9nfy0DA9unan8rmZCQRLmMry8sSW+VA/baxXE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTAg-0000cG-LE
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTAg-0001c0-KH
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/build: silence make warnings about missing auto.conf*
Message-Id: <E1jTTAg-0001c0-KH@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:33:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8d4c17a90b0a9b3d82628461090a54a2c7897154
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Mon Apr 27 09:31:13 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 09:31:13 2020 +0200

    xen/build: silence make warnings about missing auto.conf*
    
    In a clean tree, both files include/config/auto.conf{,.cmd} are
    missing and older version of GNU Make complain about it:
        Makefile:103: include/config/auto.conf: No such file or directory
        Makefile:106: include/config/auto.conf.cmd: No such file or directory
    
    Those warnings are harmless, make will create the files and start over. But
    to avoid confusion, we'll use "-include" to silence the warning.
    
    Those warning started to appear with commit 6c122d3984a5 ("xen/build:
    include include/config/auto.conf in main Makefile").
    
    Reported-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/Makefile b/xen/Makefile
index 07f8ef8087..2b1dacb497 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -150,10 +150,10 @@ config: FORCE
 else # !config-build
 
 ifeq ($(need-config),y)
-include include/config/auto.conf
+-include include/config/auto.conf
 # Read in dependencies to all Kconfig* files, make sure to run syncconfig if
 # changes are detected.
-include include/config/auto.conf.cmd
+-include include/config/auto.conf.cmd
 
 # Allow people to just run `make` as before and not force them to configure
 $(KCONFIG_CONFIG):
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:33:38 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:33:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTAw-0004cw-96; Tue, 28 Apr 2020 16:33:38 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTAu-0004cp-Os
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:36 +0000
X-Inumbo-ID: 00086d4c-896e-11ea-989a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 00086d4c-896e-11ea-989a-12813bfff9fa;
 Tue, 28 Apr 2020 16:33:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Ny+VeIayJViaAzdKAPZeGyL93RaIJS3QqPZ6OBX4YJE=; b=34mExlNBBE0ttGR4Cg29ePt51n
 qFz0kNAP9Wukgb0UBWXcRJ4onTxON2nsyIHdrlk+1ztJO4PjEmyohB+QU9P/xrOmbGrhsCMtYAFHO
 kk8aD2Iyu9oX52BiKF7ngcSUIXoZPCLlSR+50fo+JxcGk+ynP5SwpWoKeY3BrGPaVChM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTAq-0000cQ-OZ
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTAq-0001co-NP
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] tools: build golang tools if go compiler is present
Message-Id: <E1jTTAq-0001co-NP@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:33:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 1e13ea98bbb8369d065af4666c45c26dab5240d5
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Thu Apr 23 23:05:40 2020 -0400
Commit:     Wei Liu <wl@xen.org>
CommitDate: Mon Apr 27 14:24:59 2020 +0100

    tools: build golang tools if go compiler is present
    
    By default, if the go compiler is found by the configure script, build
    the golang tools. If the compiler is not found, and --enable-golang was
    not explicitly set, do not build to the golang tools.
    
    The corresponding make variable is CONFIG_GOLANG. Remove CONFIG_GOLANG
    from tools/Rules.mk since the variable is now set by configure in
    config/Tools.mk.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Acked-by: Wei Liu <wl@xen.org>
    Acked-by: George Dunlap <george.dunlap@citrix.com>
---
 config/Tools.mk.in |   1 +
 m4/golang.m4       |   4 ++
 tools/Rules.mk     |   2 -
 tools/configure    | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tools/configure.ac |  12 +++++
 5 files changed, 155 insertions(+), 2 deletions(-)

diff --git a/config/Tools.mk.in b/config/Tools.mk.in
index 189fda1596..23df47af8d 100644
--- a/config/Tools.mk.in
+++ b/config/Tools.mk.in
@@ -55,6 +55,7 @@ CONFIG_QEMU_TRAD    := @qemu_traditional@
 CONFIG_QEMU_XEN     := @qemu_xen@
 CONFIG_QEMUU_EXTRA_ARGS:= @EXTRA_QEMUU_CONFIGURE_ARGS@
 CONFIG_LIBNL        := @libnl@
+CONFIG_GOLANG       := @golang@
 
 CONFIG_SYSTEMD      := @systemd@
 SYSTEMD_CFLAGS      := @SYSTEMD_CFLAGS@
diff --git a/m4/golang.m4 b/m4/golang.m4
new file mode 100644
index 0000000000..0b4bd54ce0
--- /dev/null
+++ b/m4/golang.m4
@@ -0,0 +1,4 @@
+AC_DEFUN([AC_PROG_GO], [
+    dnl Check for the go compiler
+    AC_CHECK_TOOL([GO],[go],[no])
+])
diff --git a/tools/Rules.mk b/tools/Rules.mk
index 9bac15c8d1..5b8cf748ad 100644
--- a/tools/Rules.mk
+++ b/tools/Rules.mk
@@ -35,8 +35,6 @@ XENSTORE_XENSTORED ?= y
 debug ?= y
 debug_symbols ?= $(debug)
 
-# Set CONFIG_GOLANG=y in .config (or in make) to build golang
-CONFIG_GOLANG ?= n
 XEN_GOPATH        = $(XEN_ROOT)/tools/golang
 XEN_GOCODE_URL    = golang.xenproject.org
 
diff --git a/tools/configure b/tools/configure
index 4fa5f7b937..375430df3f 100755
--- a/tools/configure
+++ b/tools/configure
@@ -664,6 +664,7 @@ pyconfig
 PYTHONPATH
 CHECKPOLICY
 XENSTORED
+GO
 OCAMLFIND
 OCAMLBUILD
 OCAMLDOC
@@ -705,6 +706,7 @@ LD86
 AS86
 qemu_traditional
 LINUX_BACKEND_MODULES
+golang
 seabios
 ovmf
 xsmpolicy
@@ -807,6 +809,7 @@ enable_ocamltools
 enable_xsmpolicy
 enable_ovmf
 enable_seabios
+enable_golang
 with_linux_backend_modules
 enable_qemu_traditional
 enable_rombios
@@ -1493,6 +1496,7 @@ Optional Features:
   --disable-xsmpolicy     Disable XSM policy compilation (default is ENABLED)
   --enable-ovmf           Enable OVMF (default is DISABLED)
   --disable-seabios       Disable SeaBIOS (default is ENABLED)
+  --disable-golang        Disable Go tools (default is ENABLED)
   --enable-qemu-traditional
                           Enable qemu traditional device model, (DEFAULT is on
                           for Linux or NetBSD x86, otherwise off)
@@ -3873,6 +3877,8 @@ esac
 
 
 
+
+
 test "x$prefix" = "xNONE" && prefix=$ac_default_prefix
 test "x$exec_prefix" = "xNONE" && exec_prefix=${prefix}
 
@@ -4200,6 +4206,29 @@ seabios=$ax_cv_seabios
 
 
 
+# Check whether --enable-golang was given.
+if test "${enable_golang+set}" = set; then :
+  enableval=$enable_golang;
+fi
+
+
+if test "x$enable_golang" = "xno"; then :
+
+    ax_cv_golang="n"
+
+elif test "x$enable_golang" = "xyes"; then :
+
+    ax_cv_golang="y"
+
+elif test -z $ax_cv_golang; then :
+
+    ax_cv_golang="y"
+
+fi
+golang=$ax_cv_golang
+
+
+
 
 # Check whether --with-linux-backend-modules was given.
 if test "${with_linux_backend_modules+set}" = set; then :
@@ -6694,6 +6723,115 @@ fi
 
 fi
 
+if test "x$golang" = "xy"; then :
+
+
+        if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}go", so it can be a program name with args.
+set dummy ${ac_tool_prefix}go; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_GO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GO"; then
+  ac_cv_prog_GO="$GO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GO="${ac_tool_prefix}go"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+GO=$ac_cv_prog_GO
+if test -n "$GO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GO" >&5
+$as_echo "$GO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_GO"; then
+  ac_ct_GO=$GO
+  # Extract the first word of "go", so it can be a program name with args.
+set dummy go; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_GO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GO"; then
+  ac_cv_prog_ac_ct_GO="$ac_ct_GO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_GO="go"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_GO=$ac_cv_prog_ac_ct_GO
+if test -n "$ac_ct_GO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GO" >&5
+$as_echo "$ac_ct_GO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_GO" = x; then
+    GO="no"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    GO=$ac_ct_GO
+  fi
+else
+  GO="$ac_cv_prog_GO"
+fi
+
+
+    if test "x$GO" = "xno"; then :
+
+        if test "x$enable_golang" =  "xyes"; then :
+
+            as_fn_error $? "Go tools enabled, but missing go compiler" "$LINENO" 5
+
+fi
+        golang="n"
+
+fi
+
+fi
+
 
 
 
diff --git a/tools/configure.ac b/tools/configure.ac
index ea0272766f..b6f8882be4 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -73,6 +73,7 @@ m4_include([../m4/fetcher.m4])
 m4_include([../m4/ax_compare_version.m4])
 m4_include([../m4/paths.m4])
 m4_include([../m4/systemd.m4])
+m4_include([../m4/golang.m4])
 
 AX_XEN_EXPAND_CONFIG()
 
@@ -84,6 +85,7 @@ AX_ARG_DEFAULT_ENABLE([ocamltools], [Disable Ocaml tools])
 AX_ARG_DEFAULT_ENABLE([xsmpolicy], [Disable XSM policy compilation])
 AX_ARG_DEFAULT_DISABLE([ovmf], [Enable OVMF])
 AX_ARG_DEFAULT_ENABLE([seabios], [Disable SeaBIOS])
+AX_ARG_DEFAULT_ENABLE([golang], [Disable Go tools])
 
 AC_ARG_WITH([linux-backend-modules],
     AS_HELP_STRING([--with-linux-backend-modules="mod1 mod2"],
@@ -320,6 +322,16 @@ AS_IF([test "x$ocamltools" = "xy"], [
     ])
 ])
 
+AS_IF([test "x$golang" = "xy"], [
+    AC_PROG_GO
+    AS_IF([test "x$GO" = "xno"], [
+        AS_IF([test "x$enable_golang" =  "xyes"], [
+            AC_MSG_ERROR([Go tools enabled, but missing go compiler])
+        ])
+        golang="n"
+    ])
+])
+
 m4_include([../m4/xenstored.m4])
 AX_XENSTORE_OPTIONS
 AX_XENSTORE_SET
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:33:49 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:33:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTB7-0004dy-CB; Tue, 28 Apr 2020 16:33:49 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTB6-0004ds-7r
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:48 +0000
X-Inumbo-ID: 060b4b92-896e-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 060b4b92-896e-11ea-ae69-bc764e2007e4;
 Tue, 28 Apr 2020 16:33:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5Cmf9aIZ4XdjHDndSO5yO3Z1BCHfSrN9+Fu5idW4GMY=; b=g/zY3UHwGRe/nAtDWVyt2Vv0jt
 L4cixXTAgcOgdWTGdij1PNxL6sv9gw6YLMfB308qybd/HSI0rvfqlazX56GADnjfUToq3HXu+6onw
 UPiMkY5T+y1nYDtE47q4BgvliPqZwdVBYiY9zzPHrOvMcEPwesxeXucwFdc+THYrwZCY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTB0-0000cT-RI
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:42 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTB0-0001dl-QL
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:33:42 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] golang/xenlight: stop tracking generated files
Message-Id: <E1jTTB0-0001dl-QL@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:33:42 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit df669de074c395a3b2eeb975fddd3da4c148da13
Author:     Nick Rosbrook <rosbrookn@gmail.com>
AuthorDate: Thu Apr 23 23:05:41 2020 -0400
Commit:     Wei Liu <wl@xen.org>
CommitDate: Mon Apr 27 14:25:07 2020 +0100

    golang/xenlight: stop tracking generated files
    
    The generated go files were tracked temporarily while the initial
    implementation of gengotypes.py was in progress. They can now be removed
    and ignored by git and hg.
    
    While here, make sure generated files are removed by make clean.
    
    Signed-off-by: Nick Rosbrook <rosbrookn@ainfosec.com>
    Acked-by: Wei Liu <wl@xen.org>
---
 .gitignore                           |    3 +
 .hgignore                            |    2 +
 tools/golang/xenlight/Makefile       |    1 +
 tools/golang/xenlight/helpers.gen.go | 4722 ----------------------------------
 tools/golang/xenlight/types.gen.go   | 1225 ---------
 5 files changed, 6 insertions(+), 5947 deletions(-)

diff --git a/.gitignore b/.gitignore
index bfa53723b3..9c8a31f896 100644
--- a/.gitignore
+++ b/.gitignore
@@ -406,6 +406,9 @@ tools/xenstore/xenstore-watch
 tools/xl/_paths.h
 tools/xl/xl
 
+tools/golang/src
+tools/golang/*/*.gen.go
+
 docs/txt/misc/*.txt
 docs/txt/man/*.txt
 docs/figs/*.png
diff --git a/.hgignore b/.hgignore
index 2d41670632..2ec52982e1 100644
--- a/.hgignore
+++ b/.hgignore
@@ -282,6 +282,8 @@
 ^tools/ocaml/test/xtl$
 ^tools/ocaml/test/send_debug_keys$
 ^tools/ocaml/test/list_domains$
+^tools/golang/src$
+^tools/golang/.*/.*\.gen\.go$
 ^tools/autom4te\.cache$
 ^tools/config\.h$
 ^tools/config\.log$
diff --git a/tools/golang/xenlight/Makefile b/tools/golang/xenlight/Makefile
index 753132306a..144c133ced 100644
--- a/tools/golang/xenlight/Makefile
+++ b/tools/golang/xenlight/Makefile
@@ -49,6 +49,7 @@ install: build
 clean:
 	$(RM) -r $(XEN_GOPATH)$(GOXL_PKG_DIR)
 	$(RM) $(XEN_GOPATH)/pkg/*/$(XEN_GOCODE_URL)/xenlight.a
+	$(RM) *.gen.go
 
 .PHONY: distclean
 distclean: clean
diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/helpers.gen.go
deleted file mode 100644
index 16e26d27f5..0000000000
--- a/tools/golang/xenlight/helpers.gen.go
+++ /dev/null
@@ -1,4722 +0,0 @@
-// DO NOT EDIT.
-//
-// This file is generated by:
-// gengotypes.py ../../libxl/libxl_types.idl
-//
-package xenlight
-
-import (
-	"errors"
-	"fmt"
-	"unsafe"
-)
-
-/*
-#cgo LDFLAGS: -lxenlight
-#include <stdlib.h>
-#include <libxl.h>
-
-typedef typeof(((struct libxl_channelinfo *)NULL)->u.pty)libxl_channelinfo_connection_union_pty;
-typedef typeof(((struct libxl_domain_build_info *)NULL)->u.hvm)libxl_domain_build_info_type_union_hvm;
-typedef typeof(((struct libxl_domain_build_info *)NULL)->u.pv)libxl_domain_build_info_type_union_pv;
-typedef typeof(((struct libxl_domain_build_info *)NULL)->u.pvh)libxl_domain_build_info_type_union_pvh;
-typedef typeof(((struct libxl_device_usbdev *)NULL)->u.hostdev)libxl_device_usbdev_type_union_hostdev;
-typedef typeof(((struct libxl_device_channel *)NULL)->u.socket)libxl_device_channel_connection_union_socket;
-typedef typeof(((struct libxl_event *)NULL)->u.domain_shutdown)libxl_event_type_union_domain_shutdown;
-typedef typeof(((struct libxl_event *)NULL)->u.disk_eject)libxl_event_type_union_disk_eject;
-typedef typeof(((struct libxl_event *)NULL)->u.operation_complete)libxl_event_type_union_operation_complete;
-typedef typeof(((struct libxl_psr_hw_info *)NULL)->u.cat)libxl_psr_hw_info_type_union_cat;
-typedef typeof(((struct libxl_psr_hw_info *)NULL)->u.mba)libxl_psr_hw_info_type_union_mba;
-*/
-import "C"
-
-// NewIoportRange returns an instance of IoportRange initialized with defaults.
-func NewIoportRange() (*IoportRange, error) {
-	var (
-		x  IoportRange
-		xc C.libxl_ioport_range
-	)
-
-	C.libxl_ioport_range_init(&xc)
-	defer C.libxl_ioport_range_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *IoportRange) fromC(xc *C.libxl_ioport_range) error {
-	x.First = uint32(xc.first)
-	x.Number = uint32(xc.number)
-
-	return nil
-}
-
-func (x *IoportRange) toC(xc *C.libxl_ioport_range) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_ioport_range_dispose(xc)
-		}
-	}()
-
-	xc.first = C.uint32_t(x.First)
-	xc.number = C.uint32_t(x.Number)
-
-	return nil
-}
-
-// NewIomemRange returns an instance of IomemRange initialized with defaults.
-func NewIomemRange() (*IomemRange, error) {
-	var (
-		x  IomemRange
-		xc C.libxl_iomem_range
-	)
-
-	C.libxl_iomem_range_init(&xc)
-	defer C.libxl_iomem_range_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *IomemRange) fromC(xc *C.libxl_iomem_range) error {
-	x.Start = uint64(xc.start)
-	x.Number = uint64(xc.number)
-	x.Gfn = uint64(xc.gfn)
-
-	return nil
-}
-
-func (x *IomemRange) toC(xc *C.libxl_iomem_range) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_iomem_range_dispose(xc)
-		}
-	}()
-
-	xc.start = C.uint64_t(x.Start)
-	xc.number = C.uint64_t(x.Number)
-	xc.gfn = C.uint64_t(x.Gfn)
-
-	return nil
-}
-
-// NewVgaInterfaceInfo returns an instance of VgaInterfaceInfo initialized with defaults.
-func NewVgaInterfaceInfo() (*VgaInterfaceInfo, error) {
-	var (
-		x  VgaInterfaceInfo
-		xc C.libxl_vga_interface_info
-	)
-
-	C.libxl_vga_interface_info_init(&xc)
-	defer C.libxl_vga_interface_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VgaInterfaceInfo) fromC(xc *C.libxl_vga_interface_info) error {
-	x.Kind = VgaInterfaceType(xc.kind)
-
-	return nil
-}
-
-func (x *VgaInterfaceInfo) toC(xc *C.libxl_vga_interface_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vga_interface_info_dispose(xc)
-		}
-	}()
-
-	xc.kind = C.libxl_vga_interface_type(x.Kind)
-
-	return nil
-}
-
-// NewVncInfo returns an instance of VncInfo initialized with defaults.
-func NewVncInfo() (*VncInfo, error) {
-	var (
-		x  VncInfo
-		xc C.libxl_vnc_info
-	)
-
-	C.libxl_vnc_info_init(&xc)
-	defer C.libxl_vnc_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VncInfo) fromC(xc *C.libxl_vnc_info) error {
-	if err := x.Enable.fromC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	x.Listen = C.GoString(xc.listen)
-	x.Passwd = C.GoString(xc.passwd)
-	x.Display = int(xc.display)
-	if err := x.Findunused.fromC(&xc.findunused); err != nil {
-		return fmt.Errorf("converting field Findunused: %v", err)
-	}
-
-	return nil
-}
-
-func (x *VncInfo) toC(xc *C.libxl_vnc_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vnc_info_dispose(xc)
-		}
-	}()
-
-	if err := x.Enable.toC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	if x.Listen != "" {
-		xc.listen = C.CString(x.Listen)
-	}
-	if x.Passwd != "" {
-		xc.passwd = C.CString(x.Passwd)
-	}
-	xc.display = C.int(x.Display)
-	if err := x.Findunused.toC(&xc.findunused); err != nil {
-		return fmt.Errorf("converting field Findunused: %v", err)
-	}
-
-	return nil
-}
-
-// NewSpiceInfo returns an instance of SpiceInfo initialized with defaults.
-func NewSpiceInfo() (*SpiceInfo, error) {
-	var (
-		x  SpiceInfo
-		xc C.libxl_spice_info
-	)
-
-	C.libxl_spice_info_init(&xc)
-	defer C.libxl_spice_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *SpiceInfo) fromC(xc *C.libxl_spice_info) error {
-	if err := x.Enable.fromC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	x.Port = int(xc.port)
-	x.TlsPort = int(xc.tls_port)
-	x.Host = C.GoString(xc.host)
-	if err := x.DisableTicketing.fromC(&xc.disable_ticketing); err != nil {
-		return fmt.Errorf("converting field DisableTicketing: %v", err)
-	}
-	x.Passwd = C.GoString(xc.passwd)
-	if err := x.AgentMouse.fromC(&xc.agent_mouse); err != nil {
-		return fmt.Errorf("converting field AgentMouse: %v", err)
-	}
-	if err := x.Vdagent.fromC(&xc.vdagent); err != nil {
-		return fmt.Errorf("converting field Vdagent: %v", err)
-	}
-	if err := x.ClipboardSharing.fromC(&xc.clipboard_sharing); err != nil {
-		return fmt.Errorf("converting field ClipboardSharing: %v", err)
-	}
-	x.Usbredirection = int(xc.usbredirection)
-	x.ImageCompression = C.GoString(xc.image_compression)
-	x.StreamingVideo = C.GoString(xc.streaming_video)
-
-	return nil
-}
-
-func (x *SpiceInfo) toC(xc *C.libxl_spice_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_spice_info_dispose(xc)
-		}
-	}()
-
-	if err := x.Enable.toC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	xc.port = C.int(x.Port)
-	xc.tls_port = C.int(x.TlsPort)
-	if x.Host != "" {
-		xc.host = C.CString(x.Host)
-	}
-	if err := x.DisableTicketing.toC(&xc.disable_ticketing); err != nil {
-		return fmt.Errorf("converting field DisableTicketing: %v", err)
-	}
-	if x.Passwd != "" {
-		xc.passwd = C.CString(x.Passwd)
-	}
-	if err := x.AgentMouse.toC(&xc.agent_mouse); err != nil {
-		return fmt.Errorf("converting field AgentMouse: %v", err)
-	}
-	if err := x.Vdagent.toC(&xc.vdagent); err != nil {
-		return fmt.Errorf("converting field Vdagent: %v", err)
-	}
-	if err := x.ClipboardSharing.toC(&xc.clipboard_sharing); err != nil {
-		return fmt.Errorf("converting field ClipboardSharing: %v", err)
-	}
-	xc.usbredirection = C.int(x.Usbredirection)
-	if x.ImageCompression != "" {
-		xc.image_compression = C.CString(x.ImageCompression)
-	}
-	if x.StreamingVideo != "" {
-		xc.streaming_video = C.CString(x.StreamingVideo)
-	}
-
-	return nil
-}
-
-// NewSdlInfo returns an instance of SdlInfo initialized with defaults.
-func NewSdlInfo() (*SdlInfo, error) {
-	var (
-		x  SdlInfo
-		xc C.libxl_sdl_info
-	)
-
-	C.libxl_sdl_info_init(&xc)
-	defer C.libxl_sdl_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *SdlInfo) fromC(xc *C.libxl_sdl_info) error {
-	if err := x.Enable.fromC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	if err := x.Opengl.fromC(&xc.opengl); err != nil {
-		return fmt.Errorf("converting field Opengl: %v", err)
-	}
-	x.Display = C.GoString(xc.display)
-	x.Xauthority = C.GoString(xc.xauthority)
-
-	return nil
-}
-
-func (x *SdlInfo) toC(xc *C.libxl_sdl_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_sdl_info_dispose(xc)
-		}
-	}()
-
-	if err := x.Enable.toC(&xc.enable); err != nil {
-		return fmt.Errorf("converting field Enable: %v", err)
-	}
-	if err := x.Opengl.toC(&xc.opengl); err != nil {
-		return fmt.Errorf("converting field Opengl: %v", err)
-	}
-	if x.Display != "" {
-		xc.display = C.CString(x.Display)
-	}
-	if x.Xauthority != "" {
-		xc.xauthority = C.CString(x.Xauthority)
-	}
-
-	return nil
-}
-
-// NewDominfo returns an instance of Dominfo initialized with defaults.
-func NewDominfo() (*Dominfo, error) {
-	var (
-		x  Dominfo
-		xc C.libxl_dominfo
-	)
-
-	C.libxl_dominfo_init(&xc)
-	defer C.libxl_dominfo_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *Dominfo) fromC(xc *C.libxl_dominfo) error {
-	if err := x.Uuid.fromC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	x.Domid = Domid(xc.domid)
-	x.Ssidref = uint32(xc.ssidref)
-	x.SsidLabel = C.GoString(xc.ssid_label)
-	x.Running = bool(xc.running)
-	x.Blocked = bool(xc.blocked)
-	x.Paused = bool(xc.paused)
-	x.Shutdown = bool(xc.shutdown)
-	x.Dying = bool(xc.dying)
-	x.NeverStop = bool(xc.never_stop)
-	x.ShutdownReason = ShutdownReason(xc.shutdown_reason)
-	x.OutstandingMemkb = uint64(xc.outstanding_memkb)
-	x.CurrentMemkb = uint64(xc.current_memkb)
-	x.SharedMemkb = uint64(xc.shared_memkb)
-	x.PagedMemkb = uint64(xc.paged_memkb)
-	x.MaxMemkb = uint64(xc.max_memkb)
-	x.CpuTime = uint64(xc.cpu_time)
-	x.VcpuMaxId = uint32(xc.vcpu_max_id)
-	x.VcpuOnline = uint32(xc.vcpu_online)
-	x.Cpupool = uint32(xc.cpupool)
-	x.DomainType = DomainType(xc.domain_type)
-
-	return nil
-}
-
-func (x *Dominfo) toC(xc *C.libxl_dominfo) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_dominfo_dispose(xc)
-		}
-	}()
-
-	if err := x.Uuid.toC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	xc.domid = C.libxl_domid(x.Domid)
-	xc.ssidref = C.uint32_t(x.Ssidref)
-	if x.SsidLabel != "" {
-		xc.ssid_label = C.CString(x.SsidLabel)
-	}
-	xc.running = C.bool(x.Running)
-	xc.blocked = C.bool(x.Blocked)
-	xc.paused = C.bool(x.Paused)
-	xc.shutdown = C.bool(x.Shutdown)
-	xc.dying = C.bool(x.Dying)
-	xc.never_stop = C.bool(x.NeverStop)
-	xc.shutdown_reason = C.libxl_shutdown_reason(x.ShutdownReason)
-	xc.outstanding_memkb = C.uint64_t(x.OutstandingMemkb)
-	xc.current_memkb = C.uint64_t(x.CurrentMemkb)
-	xc.shared_memkb = C.uint64_t(x.SharedMemkb)
-	xc.paged_memkb = C.uint64_t(x.PagedMemkb)
-	xc.max_memkb = C.uint64_t(x.MaxMemkb)
-	xc.cpu_time = C.uint64_t(x.CpuTime)
-	xc.vcpu_max_id = C.uint32_t(x.VcpuMaxId)
-	xc.vcpu_online = C.uint32_t(x.VcpuOnline)
-	xc.cpupool = C.uint32_t(x.Cpupool)
-	xc.domain_type = C.libxl_domain_type(x.DomainType)
-
-	return nil
-}
-
-// NewCpupoolinfo returns an instance of Cpupoolinfo initialized with defaults.
-func NewCpupoolinfo() (*Cpupoolinfo, error) {
-	var (
-		x  Cpupoolinfo
-		xc C.libxl_cpupoolinfo
-	)
-
-	C.libxl_cpupoolinfo_init(&xc)
-	defer C.libxl_cpupoolinfo_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *Cpupoolinfo) fromC(xc *C.libxl_cpupoolinfo) error {
-	x.Poolid = uint32(xc.poolid)
-	x.PoolName = C.GoString(xc.pool_name)
-	x.Sched = Scheduler(xc.sched)
-	x.NDom = uint32(xc.n_dom)
-	if err := x.Cpumap.fromC(&xc.cpumap); err != nil {
-		return fmt.Errorf("converting field Cpumap: %v", err)
-	}
-
-	return nil
-}
-
-func (x *Cpupoolinfo) toC(xc *C.libxl_cpupoolinfo) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_cpupoolinfo_dispose(xc)
-		}
-	}()
-
-	xc.poolid = C.uint32_t(x.Poolid)
-	if x.PoolName != "" {
-		xc.pool_name = C.CString(x.PoolName)
-	}
-	xc.sched = C.libxl_scheduler(x.Sched)
-	xc.n_dom = C.uint32_t(x.NDom)
-	if err := x.Cpumap.toC(&xc.cpumap); err != nil {
-		return fmt.Errorf("converting field Cpumap: %v", err)
-	}
-
-	return nil
-}
-
-// NewChannelinfo returns an instance of Channelinfo initialized with defaults.
-func NewChannelinfo(connection ChannelConnection) (*Channelinfo, error) {
-	var (
-		x  Channelinfo
-		xc C.libxl_channelinfo
-	)
-
-	C.libxl_channelinfo_init(&xc)
-	C.libxl_channelinfo_init_connection(&xc, C.libxl_channel_connection(connection))
-	defer C.libxl_channelinfo_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *Channelinfo) fromC(xc *C.libxl_channelinfo) error {
-	x.Backend = C.GoString(xc.backend)
-	x.BackendId = uint32(xc.backend_id)
-	x.Frontend = C.GoString(xc.frontend)
-	x.FrontendId = uint32(xc.frontend_id)
-	x.Devid = Devid(xc.devid)
-	x.State = int(xc.state)
-	x.Evtch = int(xc.evtch)
-	x.Rref = int(xc.rref)
-	x.Connection = ChannelConnection(xc.connection)
-	switch x.Connection {
-	case ChannelConnectionUnknown:
-		x.ConnectionUnion = nil
-	case ChannelConnectionPty:
-		var connectionPty ChannelinfoConnectionUnionPty
-		if err := connectionPty.fromC(xc); err != nil {
-			return fmt.Errorf("converting field connectionPty: %v", err)
-		}
-		x.ConnectionUnion = connectionPty
-	case ChannelConnectionSocket:
-		x.ConnectionUnion = nil
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Connection)
-	}
-
-	return nil
-}
-
-func (x *ChannelinfoConnectionUnionPty) fromC(xc *C.libxl_channelinfo) error {
-	if ChannelConnection(xc.connection) != ChannelConnectionPty {
-		return errors.New("expected union key ChannelConnectionPty")
-	}
-
-	tmp := (*C.libxl_channelinfo_connection_union_pty)(unsafe.Pointer(&xc.u[0]))
-	x.Path = C.GoString(tmp.path)
-	return nil
-}
-
-func (x *Channelinfo) toC(xc *C.libxl_channelinfo) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_channelinfo_dispose(xc)
-		}
-	}()
-
-	if x.Backend != "" {
-		xc.backend = C.CString(x.Backend)
-	}
-	xc.backend_id = C.uint32_t(x.BackendId)
-	if x.Frontend != "" {
-		xc.frontend = C.CString(x.Frontend)
-	}
-	xc.frontend_id = C.uint32_t(x.FrontendId)
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.state = C.int(x.State)
-	xc.evtch = C.int(x.Evtch)
-	xc.rref = C.int(x.Rref)
-	xc.connection = C.libxl_channel_connection(x.Connection)
-	switch x.Connection {
-	case ChannelConnectionUnknown:
-		break
-	case ChannelConnectionPty:
-		tmp, ok := x.ConnectionUnion.(ChannelinfoConnectionUnionPty)
-		if !ok {
-			return errors.New("wrong type for union key connection")
-		}
-		var pty C.libxl_channelinfo_connection_union_pty
-		if tmp.Path != "" {
-			pty.path = C.CString(tmp.Path)
-		}
-		ptyBytes := C.GoBytes(unsafe.Pointer(&pty), C.sizeof_libxl_channelinfo_connection_union_pty)
-		copy(xc.u[:], ptyBytes)
-	case ChannelConnectionSocket:
-		break
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Connection)
-	}
-
-	return nil
-}
-
-// NewVminfo returns an instance of Vminfo initialized with defaults.
-func NewVminfo() (*Vminfo, error) {
-	var (
-		x  Vminfo
-		xc C.libxl_vminfo
-	)
-
-	C.libxl_vminfo_init(&xc)
-	defer C.libxl_vminfo_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *Vminfo) fromC(xc *C.libxl_vminfo) error {
-	if err := x.Uuid.fromC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	x.Domid = Domid(xc.domid)
-
-	return nil
-}
-
-func (x *Vminfo) toC(xc *C.libxl_vminfo) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vminfo_dispose(xc)
-		}
-	}()
-
-	if err := x.Uuid.toC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	xc.domid = C.libxl_domid(x.Domid)
-
-	return nil
-}
-
-// NewVersionInfo returns an instance of VersionInfo initialized with defaults.
-func NewVersionInfo() (*VersionInfo, error) {
-	var (
-		x  VersionInfo
-		xc C.libxl_version_info
-	)
-
-	C.libxl_version_info_init(&xc)
-	defer C.libxl_version_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VersionInfo) fromC(xc *C.libxl_version_info) error {
-	x.XenVersionMajor = int(xc.xen_version_major)
-	x.XenVersionMinor = int(xc.xen_version_minor)
-	x.XenVersionExtra = C.GoString(xc.xen_version_extra)
-	x.Compiler = C.GoString(xc.compiler)
-	x.CompileBy = C.GoString(xc.compile_by)
-	x.CompileDomain = C.GoString(xc.compile_domain)
-	x.CompileDate = C.GoString(xc.compile_date)
-	x.Capabilities = C.GoString(xc.capabilities)
-	x.Changeset = C.GoString(xc.changeset)
-	x.VirtStart = uint64(xc.virt_start)
-	x.Pagesize = int(xc.pagesize)
-	x.Commandline = C.GoString(xc.commandline)
-	x.BuildId = C.GoString(xc.build_id)
-
-	return nil
-}
-
-func (x *VersionInfo) toC(xc *C.libxl_version_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_version_info_dispose(xc)
-		}
-	}()
-
-	xc.xen_version_major = C.int(x.XenVersionMajor)
-	xc.xen_version_minor = C.int(x.XenVersionMinor)
-	if x.XenVersionExtra != "" {
-		xc.xen_version_extra = C.CString(x.XenVersionExtra)
-	}
-	if x.Compiler != "" {
-		xc.compiler = C.CString(x.Compiler)
-	}
-	if x.CompileBy != "" {
-		xc.compile_by = C.CString(x.CompileBy)
-	}
-	if x.CompileDomain != "" {
-		xc.compile_domain = C.CString(x.CompileDomain)
-	}
-	if x.CompileDate != "" {
-		xc.compile_date = C.CString(x.CompileDate)
-	}
-	if x.Capabilities != "" {
-		xc.capabilities = C.CString(x.Capabilities)
-	}
-	if x.Changeset != "" {
-		xc.changeset = C.CString(x.Changeset)
-	}
-	xc.virt_start = C.uint64_t(x.VirtStart)
-	xc.pagesize = C.int(x.Pagesize)
-	if x.Commandline != "" {
-		xc.commandline = C.CString(x.Commandline)
-	}
-	if x.BuildId != "" {
-		xc.build_id = C.CString(x.BuildId)
-	}
-
-	return nil
-}
-
-// NewDomainCreateInfo returns an instance of DomainCreateInfo initialized with defaults.
-func NewDomainCreateInfo() (*DomainCreateInfo, error) {
-	var (
-		x  DomainCreateInfo
-		xc C.libxl_domain_create_info
-	)
-
-	C.libxl_domain_create_info_init(&xc)
-	defer C.libxl_domain_create_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DomainCreateInfo) fromC(xc *C.libxl_domain_create_info) error {
-	x.Type = DomainType(xc._type)
-	if err := x.Hap.fromC(&xc.hap); err != nil {
-		return fmt.Errorf("converting field Hap: %v", err)
-	}
-	if err := x.Oos.fromC(&xc.oos); err != nil {
-		return fmt.Errorf("converting field Oos: %v", err)
-	}
-	x.Ssidref = uint32(xc.ssidref)
-	x.SsidLabel = C.GoString(xc.ssid_label)
-	x.Name = C.GoString(xc.name)
-	x.Domid = Domid(xc.domid)
-	if err := x.Uuid.fromC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	if err := x.Xsdata.fromC(&xc.xsdata); err != nil {
-		return fmt.Errorf("converting field Xsdata: %v", err)
-	}
-	if err := x.Platformdata.fromC(&xc.platformdata); err != nil {
-		return fmt.Errorf("converting field Platformdata: %v", err)
-	}
-	x.Poolid = uint32(xc.poolid)
-	x.PoolName = C.GoString(xc.pool_name)
-	if err := x.RunHotplugScripts.fromC(&xc.run_hotplug_scripts); err != nil {
-		return fmt.Errorf("converting field RunHotplugScripts: %v", err)
-	}
-	if err := x.DriverDomain.fromC(&xc.driver_domain); err != nil {
-		return fmt.Errorf("converting field DriverDomain: %v", err)
-	}
-	x.Passthrough = Passthrough(xc.passthrough)
-
-	return nil
-}
-
-func (x *DomainCreateInfo) toC(xc *C.libxl_domain_create_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_domain_create_info_dispose(xc)
-		}
-	}()
-
-	xc._type = C.libxl_domain_type(x.Type)
-	if err := x.Hap.toC(&xc.hap); err != nil {
-		return fmt.Errorf("converting field Hap: %v", err)
-	}
-	if err := x.Oos.toC(&xc.oos); err != nil {
-		return fmt.Errorf("converting field Oos: %v", err)
-	}
-	xc.ssidref = C.uint32_t(x.Ssidref)
-	if x.SsidLabel != "" {
-		xc.ssid_label = C.CString(x.SsidLabel)
-	}
-	if x.Name != "" {
-		xc.name = C.CString(x.Name)
-	}
-	xc.domid = C.libxl_domid(x.Domid)
-	if err := x.Uuid.toC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-	if err := x.Xsdata.toC(&xc.xsdata); err != nil {
-		return fmt.Errorf("converting field Xsdata: %v", err)
-	}
-	if err := x.Platformdata.toC(&xc.platformdata); err != nil {
-		return fmt.Errorf("converting field Platformdata: %v", err)
-	}
-	xc.poolid = C.uint32_t(x.Poolid)
-	if x.PoolName != "" {
-		xc.pool_name = C.CString(x.PoolName)
-	}
-	if err := x.RunHotplugScripts.toC(&xc.run_hotplug_scripts); err != nil {
-		return fmt.Errorf("converting field RunHotplugScripts: %v", err)
-	}
-	if err := x.DriverDomain.toC(&xc.driver_domain); err != nil {
-		return fmt.Errorf("converting field DriverDomain: %v", err)
-	}
-	xc.passthrough = C.libxl_passthrough(x.Passthrough)
-
-	return nil
-}
-
-// NewDomainRestoreParams returns an instance of DomainRestoreParams initialized with defaults.
-func NewDomainRestoreParams() (*DomainRestoreParams, error) {
-	var (
-		x  DomainRestoreParams
-		xc C.libxl_domain_restore_params
-	)
-
-	C.libxl_domain_restore_params_init(&xc)
-	defer C.libxl_domain_restore_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DomainRestoreParams) fromC(xc *C.libxl_domain_restore_params) error {
-	x.CheckpointedStream = int(xc.checkpointed_stream)
-	x.StreamVersion = uint32(xc.stream_version)
-	x.ColoProxyScript = C.GoString(xc.colo_proxy_script)
-	if err := x.UserspaceColoProxy.fromC(&xc.userspace_colo_proxy); err != nil {
-		return fmt.Errorf("converting field UserspaceColoProxy: %v", err)
-	}
-
-	return nil
-}
-
-func (x *DomainRestoreParams) toC(xc *C.libxl_domain_restore_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_domain_restore_params_dispose(xc)
-		}
-	}()
-
-	xc.checkpointed_stream = C.int(x.CheckpointedStream)
-	xc.stream_version = C.uint32_t(x.StreamVersion)
-	if x.ColoProxyScript != "" {
-		xc.colo_proxy_script = C.CString(x.ColoProxyScript)
-	}
-	if err := x.UserspaceColoProxy.toC(&xc.userspace_colo_proxy); err != nil {
-		return fmt.Errorf("converting field UserspaceColoProxy: %v", err)
-	}
-
-	return nil
-}
-
-// NewSchedParams returns an instance of SchedParams initialized with defaults.
-func NewSchedParams() (*SchedParams, error) {
-	var (
-		x  SchedParams
-		xc C.libxl_sched_params
-	)
-
-	C.libxl_sched_params_init(&xc)
-	defer C.libxl_sched_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *SchedParams) fromC(xc *C.libxl_sched_params) error {
-	x.Vcpuid = int(xc.vcpuid)
-	x.Weight = int(xc.weight)
-	x.Cap = int(xc.cap)
-	x.Period = int(xc.period)
-	x.Extratime = int(xc.extratime)
-	x.Budget = int(xc.budget)
-
-	return nil
-}
-
-func (x *SchedParams) toC(xc *C.libxl_sched_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_sched_params_dispose(xc)
-		}
-	}()
-
-	xc.vcpuid = C.int(x.Vcpuid)
-	xc.weight = C.int(x.Weight)
-	xc.cap = C.int(x.Cap)
-	xc.period = C.int(x.Period)
-	xc.extratime = C.int(x.Extratime)
-	xc.budget = C.int(x.Budget)
-
-	return nil
-}
-
-// NewVcpuSchedParams returns an instance of VcpuSchedParams initialized with defaults.
-func NewVcpuSchedParams() (*VcpuSchedParams, error) {
-	var (
-		x  VcpuSchedParams
-		xc C.libxl_vcpu_sched_params
-	)
-
-	C.libxl_vcpu_sched_params_init(&xc)
-	defer C.libxl_vcpu_sched_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VcpuSchedParams) fromC(xc *C.libxl_vcpu_sched_params) error {
-	x.Sched = Scheduler(xc.sched)
-	x.Vcpus = nil
-	if n := int(xc.num_vcpus); n > 0 {
-		cVcpus := (*[1 << 28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:n:n]
-		x.Vcpus = make([]SchedParams, n)
-		for i, v := range cVcpus {
-			if err := x.Vcpus[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field Vcpus: %v", err)
-			}
-		}
-	}
-
-	return nil
-}
-
-func (x *VcpuSchedParams) toC(xc *C.libxl_vcpu_sched_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vcpu_sched_params_dispose(xc)
-		}
-	}()
-
-	xc.sched = C.libxl_scheduler(x.Sched)
-	if numVcpus := len(x.Vcpus); numVcpus > 0 {
-		xc.vcpus = (*C.libxl_sched_params)(C.malloc(C.ulong(numVcpus) * C.sizeof_libxl_sched_params))
-		xc.num_vcpus = C.int(numVcpus)
-		cVcpus := (*[1 << 28]C.libxl_sched_params)(unsafe.Pointer(xc.vcpus))[:numVcpus:numVcpus]
-		for i, v := range x.Vcpus {
-			if err := v.toC(&cVcpus[i]); err != nil {
-				return fmt.Errorf("converting field Vcpus: %v", err)
-			}
-		}
-	}
-
-	return nil
-}
-
-// NewDomainSchedParams returns an instance of DomainSchedParams initialized with defaults.
-func NewDomainSchedParams() (*DomainSchedParams, error) {
-	var (
-		x  DomainSchedParams
-		xc C.libxl_domain_sched_params
-	)
-
-	C.libxl_domain_sched_params_init(&xc)
-	defer C.libxl_domain_sched_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DomainSchedParams) fromC(xc *C.libxl_domain_sched_params) error {
-	x.Sched = Scheduler(xc.sched)
-	x.Weight = int(xc.weight)
-	x.Cap = int(xc.cap)
-	x.Period = int(xc.period)
-	x.Budget = int(xc.budget)
-	x.Extratime = int(xc.extratime)
-	x.Slice = int(xc.slice)
-	x.Latency = int(xc.latency)
-
-	return nil
-}
-
-func (x *DomainSchedParams) toC(xc *C.libxl_domain_sched_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_domain_sched_params_dispose(xc)
-		}
-	}()
-
-	xc.sched = C.libxl_scheduler(x.Sched)
-	xc.weight = C.int(x.Weight)
-	xc.cap = C.int(x.Cap)
-	xc.period = C.int(x.Period)
-	xc.budget = C.int(x.Budget)
-	xc.extratime = C.int(x.Extratime)
-	xc.slice = C.int(x.Slice)
-	xc.latency = C.int(x.Latency)
-
-	return nil
-}
-
-// NewVnodeInfo returns an instance of VnodeInfo initialized with defaults.
-func NewVnodeInfo() (*VnodeInfo, error) {
-	var (
-		x  VnodeInfo
-		xc C.libxl_vnode_info
-	)
-
-	C.libxl_vnode_info_init(&xc)
-	defer C.libxl_vnode_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VnodeInfo) fromC(xc *C.libxl_vnode_info) error {
-	x.Memkb = uint64(xc.memkb)
-	x.Distances = nil
-	if n := int(xc.num_distances); n > 0 {
-		cDistances := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.distances))[:n:n]
-		x.Distances = make([]uint32, n)
-		for i, v := range cDistances {
-			x.Distances[i] = uint32(v)
-		}
-	}
-	x.Pnode = uint32(xc.pnode)
-	if err := x.Vcpus.fromC(&xc.vcpus); err != nil {
-		return fmt.Errorf("converting field Vcpus: %v", err)
-	}
-
-	return nil
-}
-
-func (x *VnodeInfo) toC(xc *C.libxl_vnode_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vnode_info_dispose(xc)
-		}
-	}()
-
-	xc.memkb = C.uint64_t(x.Memkb)
-	if numDistances := len(x.Distances); numDistances > 0 {
-		xc.distances = (*C.uint32_t)(C.malloc(C.size_t(numDistances * numDistances)))
-		xc.num_distances = C.int(numDistances)
-		cDistances := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.distances))[:numDistances:numDistances]
-		for i, v := range x.Distances {
-			cDistances[i] = C.uint32_t(v)
-		}
-	}
-	xc.pnode = C.uint32_t(x.Pnode)
-	if err := x.Vcpus.toC(&xc.vcpus); err != nil {
-		return fmt.Errorf("converting field Vcpus: %v", err)
-	}
-
-	return nil
-}
-
-// NewRdmReserve returns an instance of RdmReserve initialized with defaults.
-func NewRdmReserve() (*RdmReserve, error) {
-	var (
-		x  RdmReserve
-		xc C.libxl_rdm_reserve
-	)
-
-	C.libxl_rdm_reserve_init(&xc)
-	defer C.libxl_rdm_reserve_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *RdmReserve) fromC(xc *C.libxl_rdm_reserve) error {
-	x.Strategy = RdmReserveStrategy(xc.strategy)
-	x.Policy = RdmReservePolicy(xc.policy)
-
-	return nil
-}
-
-func (x *RdmReserve) toC(xc *C.libxl_rdm_reserve) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_rdm_reserve_dispose(xc)
-		}
-	}()
-
-	xc.strategy = C.libxl_rdm_reserve_strategy(x.Strategy)
-	xc.policy = C.libxl_rdm_reserve_policy(x.Policy)
-
-	return nil
-}
-
-// NewDomainBuildInfo returns an instance of DomainBuildInfo initialized with defaults.
-func NewDomainBuildInfo(dtype DomainType) (*DomainBuildInfo, error) {
-	var (
-		x  DomainBuildInfo
-		xc C.libxl_domain_build_info
-	)
-
-	C.libxl_domain_build_info_init(&xc)
-	C.libxl_domain_build_info_init_type(&xc, C.libxl_domain_type(dtype))
-	defer C.libxl_domain_build_info_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DomainBuildInfo) fromC(xc *C.libxl_domain_build_info) error {
-	x.MaxVcpus = int(xc.max_vcpus)
-	if err := x.AvailVcpus.fromC(&xc.avail_vcpus); err != nil {
-		return fmt.Errorf("converting field AvailVcpus: %v", err)
-	}
-	if err := x.Cpumap.fromC(&xc.cpumap); err != nil {
-		return fmt.Errorf("converting field Cpumap: %v", err)
-	}
-	if err := x.Nodemap.fromC(&xc.nodemap); err != nil {
-		return fmt.Errorf("converting field Nodemap: %v", err)
-	}
-	x.VcpuHardAffinity = nil
-	if n := int(xc.num_vcpu_hard_affinity); n > 0 {
-		cVcpuHardAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:n:n]
-		x.VcpuHardAffinity = make([]Bitmap, n)
-		for i, v := range cVcpuHardAffinity {
-			if err := x.VcpuHardAffinity[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
-			}
-		}
-	}
-	x.VcpuSoftAffinity = nil
-	if n := int(xc.num_vcpu_soft_affinity); n > 0 {
-		cVcpuSoftAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:n:n]
-		x.VcpuSoftAffinity = make([]Bitmap, n)
-		for i, v := range cVcpuSoftAffinity {
-			if err := x.VcpuSoftAffinity[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
-			}
-		}
-	}
-	if err := x.NumaPlacement.fromC(&xc.numa_placement); err != nil {
-		return fmt.Errorf("converting field NumaPlacement: %v", err)
-	}
-	x.TscMode = TscMode(xc.tsc_mode)
-	x.MaxMemkb = uint64(xc.max_memkb)
-	x.TargetMemkb = uint64(xc.target_memkb)
-	x.VideoMemkb = uint64(xc.video_memkb)
-	x.ShadowMemkb = uint64(xc.shadow_memkb)
-	x.IommuMemkb = uint64(xc.iommu_memkb)
-	x.RtcTimeoffset = uint32(xc.rtc_timeoffset)
-	x.ExecSsidref = uint32(xc.exec_ssidref)
-	x.ExecSsidLabel = C.GoString(xc.exec_ssid_label)
-	if err := x.Localtime.fromC(&xc.localtime); err != nil {
-		return fmt.Errorf("converting field Localtime: %v", err)
-	}
-	if err := x.DisableMigrate.fromC(&xc.disable_migrate); err != nil {
-		return fmt.Errorf("converting field DisableMigrate: %v", err)
-	}
-	if err := x.Cpuid.fromC(&xc.cpuid); err != nil {
-		return fmt.Errorf("converting field Cpuid: %v", err)
-	}
-	x.BlkdevStart = C.GoString(xc.blkdev_start)
-	x.VnumaNodes = nil
-	if n := int(xc.num_vnuma_nodes); n > 0 {
-		cVnumaNodes := (*[1 << 28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:n:n]
-		x.VnumaNodes = make([]VnodeInfo, n)
-		for i, v := range cVnumaNodes {
-			if err := x.VnumaNodes[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field VnumaNodes: %v", err)
-			}
-		}
-	}
-	x.MaxGrantFrames = uint32(xc.max_grant_frames)
-	x.MaxMaptrackFrames = uint32(xc.max_maptrack_frames)
-	x.DeviceModelVersion = DeviceModelVersion(xc.device_model_version)
-	if err := x.DeviceModelStubdomain.fromC(&xc.device_model_stubdomain); err != nil {
-		return fmt.Errorf("converting field DeviceModelStubdomain: %v", err)
-	}
-	x.DeviceModel = C.GoString(xc.device_model)
-	x.DeviceModelSsidref = uint32(xc.device_model_ssidref)
-	x.DeviceModelSsidLabel = C.GoString(xc.device_model_ssid_label)
-	x.DeviceModelUser = C.GoString(xc.device_model_user)
-	if err := x.Extra.fromC(&xc.extra); err != nil {
-		return fmt.Errorf("converting field Extra: %v", err)
-	}
-	if err := x.ExtraPv.fromC(&xc.extra_pv); err != nil {
-		return fmt.Errorf("converting field ExtraPv: %v", err)
-	}
-	if err := x.ExtraHvm.fromC(&xc.extra_hvm); err != nil {
-		return fmt.Errorf("converting field ExtraHvm: %v", err)
-	}
-	if err := x.SchedParams.fromC(&xc.sched_params); err != nil {
-		return fmt.Errorf("converting field SchedParams: %v", err)
-	}
-	x.Ioports = nil
-	if n := int(xc.num_ioports); n > 0 {
-		cIoports := (*[1 << 28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:n:n]
-		x.Ioports = make([]IoportRange, n)
-		for i, v := range cIoports {
-			if err := x.Ioports[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field Ioports: %v", err)
-			}
-		}
-	}
-	x.Irqs = nil
-	if n := int(xc.num_irqs); n > 0 {
-		cIrqs := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:n:n]
-		x.Irqs = make([]uint32, n)
-		for i, v := range cIrqs {
-			x.Irqs[i] = uint32(v)
-		}
-	}
-	x.Iomem = nil
-	if n := int(xc.num_iomem); n > 0 {
-		cIomem := (*[1 << 28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:n:n]
-		x.Iomem = make([]IomemRange, n)
-		for i, v := range cIomem {
-			if err := x.Iomem[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field Iomem: %v", err)
-			}
-		}
-	}
-	if err := x.ClaimMode.fromC(&xc.claim_mode); err != nil {
-		return fmt.Errorf("converting field ClaimMode: %v", err)
-	}
-	x.EventChannels = uint32(xc.event_channels)
-	x.Kernel = C.GoString(xc.kernel)
-	x.Cmdline = C.GoString(xc.cmdline)
-	x.Ramdisk = C.GoString(xc.ramdisk)
-	x.DeviceTree = C.GoString(xc.device_tree)
-	if err := x.Acpi.fromC(&xc.acpi); err != nil {
-		return fmt.Errorf("converting field Acpi: %v", err)
-	}
-	x.Bootloader = C.GoString(xc.bootloader)
-	if err := x.BootloaderArgs.fromC(&xc.bootloader_args); err != nil {
-		return fmt.Errorf("converting field BootloaderArgs: %v", err)
-	}
-	x.TimerMode = TimerMode(xc.timer_mode)
-	if err := x.NestedHvm.fromC(&xc.nested_hvm); err != nil {
-		return fmt.Errorf("converting field NestedHvm: %v", err)
-	}
-	if err := x.Apic.fromC(&xc.apic); err != nil {
-		return fmt.Errorf("converting field Apic: %v", err)
-	}
-	if err := x.DmRestrict.fromC(&xc.dm_restrict); err != nil {
-		return fmt.Errorf("converting field DmRestrict: %v", err)
-	}
-	x.Tee = TeeType(xc.tee)
-	x.Type = DomainType(xc._type)
-	switch x.Type {
-	case DomainTypeHvm:
-		var typeHvm DomainBuildInfoTypeUnionHvm
-		if err := typeHvm.fromC(xc); err != nil {
-			return fmt.Errorf("converting field typeHvm: %v", err)
-		}
-		x.TypeUnion = typeHvm
-	case DomainTypePv:
-		var typePv DomainBuildInfoTypeUnionPv
-		if err := typePv.fromC(xc); err != nil {
-			return fmt.Errorf("converting field typePv: %v", err)
-		}
-		x.TypeUnion = typePv
-	case DomainTypePvh:
-		var typePvh DomainBuildInfoTypeUnionPvh
-		if err := typePvh.fromC(xc); err != nil {
-			return fmt.Errorf("converting field typePvh: %v", err)
-		}
-		x.TypeUnion = typePvh
-	case DomainTypeInvalid:
-		x.TypeUnion = nil
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Type)
-	}
-	x.ArchArm.GicVersion = GicVersion(xc.arch_arm.gic_version)
-	x.ArchArm.Vuart = VuartType(xc.arch_arm.vuart)
-	x.Altp2M = Altp2MMode(xc.altp2m)
-
-	return nil
-}
-
-func (x *DomainBuildInfoTypeUnionHvm) fromC(xc *C.libxl_domain_build_info) error {
-	if DomainType(xc._type) != DomainTypeHvm {
-		return errors.New("expected union key DomainTypeHvm")
-	}
-
-	tmp := (*C.libxl_domain_build_info_type_union_hvm)(unsafe.Pointer(&xc.u[0]))
-	x.Firmware = C.GoString(tmp.firmware)
-	x.Bios = BiosType(tmp.bios)
-	if err := x.Pae.fromC(&tmp.pae); err != nil {
-		return fmt.Errorf("converting field Pae: %v", err)
-	}
-	if err := x.Apic.fromC(&tmp.apic); err != nil {
-		return fmt.Errorf("converting field Apic: %v", err)
-	}
-	if err := x.Acpi.fromC(&tmp.acpi); err != nil {
-		return fmt.Errorf("converting field Acpi: %v", err)
-	}
-	if err := x.AcpiS3.fromC(&tmp.acpi_s3); err != nil {
-		return fmt.Errorf("converting field AcpiS3: %v", err)
-	}
-	if err := x.AcpiS4.fromC(&tmp.acpi_s4); err != nil {
-		return fmt.Errorf("converting field AcpiS4: %v", err)
-	}
-	if err := x.AcpiLaptopSlate.fromC(&tmp.acpi_laptop_slate); err != nil {
-		return fmt.Errorf("converting field AcpiLaptopSlate: %v", err)
-	}
-	if err := x.Nx.fromC(&tmp.nx); err != nil {
-		return fmt.Errorf("converting field Nx: %v", err)
-	}
-	if err := x.Viridian.fromC(&tmp.viridian); err != nil {
-		return fmt.Errorf("converting field Viridian: %v", err)
-	}
-	if err := x.ViridianEnable.fromC(&tmp.viridian_enable); err != nil {
-		return fmt.Errorf("converting field ViridianEnable: %v", err)
-	}
-	if err := x.ViridianDisable.fromC(&tmp.viridian_disable); err != nil {
-		return fmt.Errorf("converting field ViridianDisable: %v", err)
-	}
-	x.Timeoffset = C.GoString(tmp.timeoffset)
-	if err := x.Hpet.fromC(&tmp.hpet); err != nil {
-		return fmt.Errorf("converting field Hpet: %v", err)
-	}
-	if err := x.VptAlign.fromC(&tmp.vpt_align); err != nil {
-		return fmt.Errorf("converting field VptAlign: %v", err)
-	}
-	x.MmioHoleMemkb = uint64(tmp.mmio_hole_memkb)
-	x.TimerMode = TimerMode(tmp.timer_mode)
-	if err := x.NestedHvm.fromC(&tmp.nested_hvm); err != nil {
-		return fmt.Errorf("converting field NestedHvm: %v", err)
-	}
-	if err := x.Altp2M.fromC(&tmp.altp2m); err != nil {
-		return fmt.Errorf("converting field Altp2M: %v", err)
-	}
-	x.SystemFirmware = C.GoString(tmp.system_firmware)
-	x.SmbiosFirmware = C.GoString(tmp.smbios_firmware)
-	x.AcpiFirmware = C.GoString(tmp.acpi_firmware)
-	x.Hdtype = Hdtype(tmp.hdtype)
-	if err := x.Nographic.fromC(&tmp.nographic); err != nil {
-		return fmt.Errorf("converting field Nographic: %v", err)
-	}
-	if err := x.Vga.fromC(&tmp.vga); err != nil {
-		return fmt.Errorf("converting field Vga: %v", err)
-	}
-	if err := x.Vnc.fromC(&tmp.vnc); err != nil {
-		return fmt.Errorf("converting field Vnc: %v", err)
-	}
-	x.Keymap = C.GoString(tmp.keymap)
-	if err := x.Sdl.fromC(&tmp.sdl); err != nil {
-		return fmt.Errorf("converting field Sdl: %v", err)
-	}
-	if err := x.Spice.fromC(&tmp.spice); err != nil {
-		return fmt.Errorf("converting field Spice: %v", err)
-	}
-	if err := x.GfxPassthru.fromC(&tmp.gfx_passthru); err != nil {
-		return fmt.Errorf("converting field GfxPassthru: %v", err)
-	}
-	x.GfxPassthruKind = GfxPassthruKind(tmp.gfx_passthru_kind)
-	x.Serial = C.GoString(tmp.serial)
-	x.Boot = C.GoString(tmp.boot)
-	if err := x.Usb.fromC(&tmp.usb); err != nil {
-		return fmt.Errorf("converting field Usb: %v", err)
-	}
-	x.Usbversion = int(tmp.usbversion)
-	x.Usbdevice = C.GoString(tmp.usbdevice)
-	if err := x.VkbDevice.fromC(&tmp.vkb_device); err != nil {
-		return fmt.Errorf("converting field VkbDevice: %v", err)
-	}
-	x.Soundhw = C.GoString(tmp.soundhw)
-	if err := x.XenPlatformPci.fromC(&tmp.xen_platform_pci); err != nil {
-		return fmt.Errorf("converting field XenPlatformPci: %v", err)
-	}
-	if err := x.UsbdeviceList.fromC(&tmp.usbdevice_list); err != nil {
-		return fmt.Errorf("converting field UsbdeviceList: %v", err)
-	}
-	x.VendorDevice = VendorDevice(tmp.vendor_device)
-	if err := x.MsVmGenid.fromC(&tmp.ms_vm_genid); err != nil {
-		return fmt.Errorf("converting field MsVmGenid: %v", err)
-	}
-	if err := x.SerialList.fromC(&tmp.serial_list); err != nil {
-		return fmt.Errorf("converting field SerialList: %v", err)
-	}
-	if err := x.Rdm.fromC(&tmp.rdm); err != nil {
-		return fmt.Errorf("converting field Rdm: %v", err)
-	}
-	x.RdmMemBoundaryMemkb = uint64(tmp.rdm_mem_boundary_memkb)
-	x.McaCaps = uint64(tmp.mca_caps)
-	return nil
-}
-
-func (x *DomainBuildInfoTypeUnionPv) fromC(xc *C.libxl_domain_build_info) error {
-	if DomainType(xc._type) != DomainTypePv {
-		return errors.New("expected union key DomainTypePv")
-	}
-
-	tmp := (*C.libxl_domain_build_info_type_union_pv)(unsafe.Pointer(&xc.u[0]))
-	x.Kernel = C.GoString(tmp.kernel)
-	x.SlackMemkb = uint64(tmp.slack_memkb)
-	x.Bootloader = C.GoString(tmp.bootloader)
-	if err := x.BootloaderArgs.fromC(&tmp.bootloader_args); err != nil {
-		return fmt.Errorf("converting field BootloaderArgs: %v", err)
-	}
-	x.Cmdline = C.GoString(tmp.cmdline)
-	x.Ramdisk = C.GoString(tmp.ramdisk)
-	x.Features = C.GoString(tmp.features)
-	if err := x.E820Host.fromC(&tmp.e820_host); err != nil {
-		return fmt.Errorf("converting field E820Host: %v", err)
-	}
-	return nil
-}
-
-func (x *DomainBuildInfoTypeUnionPvh) fromC(xc *C.libxl_domain_build_info) error {
-	if DomainType(xc._type) != DomainTypePvh {
-		return errors.New("expected union key DomainTypePvh")
-	}
-
-	tmp := (*C.libxl_domain_build_info_type_union_pvh)(unsafe.Pointer(&xc.u[0]))
-	if err := x.Pvshim.fromC(&tmp.pvshim); err != nil {
-		return fmt.Errorf("converting field Pvshim: %v", err)
-	}
-	x.PvshimPath = C.GoString(tmp.pvshim_path)
-	x.PvshimCmdline = C.GoString(tmp.pvshim_cmdline)
-	x.PvshimExtra = C.GoString(tmp.pvshim_extra)
-	return nil
-}
-
-func (x *DomainBuildInfo) toC(xc *C.libxl_domain_build_info) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_domain_build_info_dispose(xc)
-		}
-	}()
-
-	xc.max_vcpus = C.int(x.MaxVcpus)
-	if err := x.AvailVcpus.toC(&xc.avail_vcpus); err != nil {
-		return fmt.Errorf("converting field AvailVcpus: %v", err)
-	}
-	if err := x.Cpumap.toC(&xc.cpumap); err != nil {
-		return fmt.Errorf("converting field Cpumap: %v", err)
-	}
-	if err := x.Nodemap.toC(&xc.nodemap); err != nil {
-		return fmt.Errorf("converting field Nodemap: %v", err)
-	}
-	if numVcpuHardAffinity := len(x.VcpuHardAffinity); numVcpuHardAffinity > 0 {
-		xc.vcpu_hard_affinity = (*C.libxl_bitmap)(C.malloc(C.ulong(numVcpuHardAffinity) * C.sizeof_libxl_bitmap))
-		xc.num_vcpu_hard_affinity = C.int(numVcpuHardAffinity)
-		cVcpuHardAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_hard_affinity))[:numVcpuHardAffinity:numVcpuHardAffinity]
-		for i, v := range x.VcpuHardAffinity {
-			if err := v.toC(&cVcpuHardAffinity[i]); err != nil {
-				return fmt.Errorf("converting field VcpuHardAffinity: %v", err)
-			}
-		}
-	}
-	if numVcpuSoftAffinity := len(x.VcpuSoftAffinity); numVcpuSoftAffinity > 0 {
-		xc.vcpu_soft_affinity = (*C.libxl_bitmap)(C.malloc(C.ulong(numVcpuSoftAffinity) * C.sizeof_libxl_bitmap))
-		xc.num_vcpu_soft_affinity = C.int(numVcpuSoftAffinity)
-		cVcpuSoftAffinity := (*[1 << 28]C.libxl_bitmap)(unsafe.Pointer(xc.vcpu_soft_affinity))[:numVcpuSoftAffinity:numVcpuSoftAffinity]
-		for i, v := range x.VcpuSoftAffinity {
-			if err := v.toC(&cVcpuSoftAffinity[i]); err != nil {
-				return fmt.Errorf("converting field VcpuSoftAffinity: %v", err)
-			}
-		}
-	}
-	if err := x.NumaPlacement.toC(&xc.numa_placement); err != nil {
-		return fmt.Errorf("converting field NumaPlacement: %v", err)
-	}
-	xc.tsc_mode = C.libxl_tsc_mode(x.TscMode)
-	xc.max_memkb = C.uint64_t(x.MaxMemkb)
-	xc.target_memkb = C.uint64_t(x.TargetMemkb)
-	xc.video_memkb = C.uint64_t(x.VideoMemkb)
-	xc.shadow_memkb = C.uint64_t(x.ShadowMemkb)
-	xc.iommu_memkb = C.uint64_t(x.IommuMemkb)
-	xc.rtc_timeoffset = C.uint32_t(x.RtcTimeoffset)
-	xc.exec_ssidref = C.uint32_t(x.ExecSsidref)
-	if x.ExecSsidLabel != "" {
-		xc.exec_ssid_label = C.CString(x.ExecSsidLabel)
-	}
-	if err := x.Localtime.toC(&xc.localtime); err != nil {
-		return fmt.Errorf("converting field Localtime: %v", err)
-	}
-	if err := x.DisableMigrate.toC(&xc.disable_migrate); err != nil {
-		return fmt.Errorf("converting field DisableMigrate: %v", err)
-	}
-	if err := x.Cpuid.toC(&xc.cpuid); err != nil {
-		return fmt.Errorf("converting field Cpuid: %v", err)
-	}
-	if x.BlkdevStart != "" {
-		xc.blkdev_start = C.CString(x.BlkdevStart)
-	}
-	if numVnumaNodes := len(x.VnumaNodes); numVnumaNodes > 0 {
-		xc.vnuma_nodes = (*C.libxl_vnode_info)(C.malloc(C.ulong(numVnumaNodes) * C.sizeof_libxl_vnode_info))
-		xc.num_vnuma_nodes = C.int(numVnumaNodes)
-		cVnumaNodes := (*[1 << 28]C.libxl_vnode_info)(unsafe.Pointer(xc.vnuma_nodes))[:numVnumaNodes:numVnumaNodes]
-		for i, v := range x.VnumaNodes {
-			if err := v.toC(&cVnumaNodes[i]); err != nil {
-				return fmt.Errorf("converting field VnumaNodes: %v", err)
-			}
-		}
-	}
-	xc.max_grant_frames = C.uint32_t(x.MaxGrantFrames)
-	xc.max_maptrack_frames = C.uint32_t(x.MaxMaptrackFrames)
-	xc.device_model_version = C.libxl_device_model_version(x.DeviceModelVersion)
-	if err := x.DeviceModelStubdomain.toC(&xc.device_model_stubdomain); err != nil {
-		return fmt.Errorf("converting field DeviceModelStubdomain: %v", err)
-	}
-	if x.DeviceModel != "" {
-		xc.device_model = C.CString(x.DeviceModel)
-	}
-	xc.device_model_ssidref = C.uint32_t(x.DeviceModelSsidref)
-	if x.DeviceModelSsidLabel != "" {
-		xc.device_model_ssid_label = C.CString(x.DeviceModelSsidLabel)
-	}
-	if x.DeviceModelUser != "" {
-		xc.device_model_user = C.CString(x.DeviceModelUser)
-	}
-	if err := x.Extra.toC(&xc.extra); err != nil {
-		return fmt.Errorf("converting field Extra: %v", err)
-	}
-	if err := x.ExtraPv.toC(&xc.extra_pv); err != nil {
-		return fmt.Errorf("converting field ExtraPv: %v", err)
-	}
-	if err := x.ExtraHvm.toC(&xc.extra_hvm); err != nil {
-		return fmt.Errorf("converting field ExtraHvm: %v", err)
-	}
-	if err := x.SchedParams.toC(&xc.sched_params); err != nil {
-		return fmt.Errorf("converting field SchedParams: %v", err)
-	}
-	if numIoports := len(x.Ioports); numIoports > 0 {
-		xc.ioports = (*C.libxl_ioport_range)(C.malloc(C.ulong(numIoports) * C.sizeof_libxl_ioport_range))
-		xc.num_ioports = C.int(numIoports)
-		cIoports := (*[1 << 28]C.libxl_ioport_range)(unsafe.Pointer(xc.ioports))[:numIoports:numIoports]
-		for i, v := range x.Ioports {
-			if err := v.toC(&cIoports[i]); err != nil {
-				return fmt.Errorf("converting field Ioports: %v", err)
-			}
-		}
-	}
-	if numIrqs := len(x.Irqs); numIrqs > 0 {
-		xc.irqs = (*C.uint32_t)(C.malloc(C.size_t(numIrqs * numIrqs)))
-		xc.num_irqs = C.int(numIrqs)
-		cIrqs := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.irqs))[:numIrqs:numIrqs]
-		for i, v := range x.Irqs {
-			cIrqs[i] = C.uint32_t(v)
-		}
-	}
-	if numIomem := len(x.Iomem); numIomem > 0 {
-		xc.iomem = (*C.libxl_iomem_range)(C.malloc(C.ulong(numIomem) * C.sizeof_libxl_iomem_range))
-		xc.num_iomem = C.int(numIomem)
-		cIomem := (*[1 << 28]C.libxl_iomem_range)(unsafe.Pointer(xc.iomem))[:numIomem:numIomem]
-		for i, v := range x.Iomem {
-			if err := v.toC(&cIomem[i]); err != nil {
-				return fmt.Errorf("converting field Iomem: %v", err)
-			}
-		}
-	}
-	if err := x.ClaimMode.toC(&xc.claim_mode); err != nil {
-		return fmt.Errorf("converting field ClaimMode: %v", err)
-	}
-	xc.event_channels = C.uint32_t(x.EventChannels)
-	if x.Kernel != "" {
-		xc.kernel = C.CString(x.Kernel)
-	}
-	if x.Cmdline != "" {
-		xc.cmdline = C.CString(x.Cmdline)
-	}
-	if x.Ramdisk != "" {
-		xc.ramdisk = C.CString(x.Ramdisk)
-	}
-	if x.DeviceTree != "" {
-		xc.device_tree = C.CString(x.DeviceTree)
-	}
-	if err := x.Acpi.toC(&xc.acpi); err != nil {
-		return fmt.Errorf("converting field Acpi: %v", err)
-	}
-	if x.Bootloader != "" {
-		xc.bootloader = C.CString(x.Bootloader)
-	}
-	if err := x.BootloaderArgs.toC(&xc.bootloader_args); err != nil {
-		return fmt.Errorf("converting field BootloaderArgs: %v", err)
-	}
-	xc.timer_mode = C.libxl_timer_mode(x.TimerMode)
-	if err := x.NestedHvm.toC(&xc.nested_hvm); err != nil {
-		return fmt.Errorf("converting field NestedHvm: %v", err)
-	}
-	if err := x.Apic.toC(&xc.apic); err != nil {
-		return fmt.Errorf("converting field Apic: %v", err)
-	}
-	if err := x.DmRestrict.toC(&xc.dm_restrict); err != nil {
-		return fmt.Errorf("converting field DmRestrict: %v", err)
-	}
-	xc.tee = C.libxl_tee_type(x.Tee)
-	xc._type = C.libxl_domain_type(x.Type)
-	switch x.Type {
-	case DomainTypeHvm:
-		tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionHvm)
-		if !ok {
-			return errors.New("wrong type for union key type")
-		}
-		var hvm C.libxl_domain_build_info_type_union_hvm
-		if tmp.Firmware != "" {
-			hvm.firmware = C.CString(tmp.Firmware)
-		}
-		hvm.bios = C.libxl_bios_type(tmp.Bios)
-		if err := tmp.Pae.toC(&hvm.pae); err != nil {
-			return fmt.Errorf("converting field Pae: %v", err)
-		}
-		if err := tmp.Apic.toC(&hvm.apic); err != nil {
-			return fmt.Errorf("converting field Apic: %v", err)
-		}
-		if err := tmp.Acpi.toC(&hvm.acpi); err != nil {
-			return fmt.Errorf("converting field Acpi: %v", err)
-		}
-		if err := tmp.AcpiS3.toC(&hvm.acpi_s3); err != nil {
-			return fmt.Errorf("converting field AcpiS3: %v", err)
-		}
-		if err := tmp.AcpiS4.toC(&hvm.acpi_s4); err != nil {
-			return fmt.Errorf("converting field AcpiS4: %v", err)
-		}
-		if err := tmp.AcpiLaptopSlate.toC(&hvm.acpi_laptop_slate); err != nil {
-			return fmt.Errorf("converting field AcpiLaptopSlate: %v", err)
-		}
-		if err := tmp.Nx.toC(&hvm.nx); err != nil {
-			return fmt.Errorf("converting field Nx: %v", err)
-		}
-		if err := tmp.Viridian.toC(&hvm.viridian); err != nil {
-			return fmt.Errorf("converting field Viridian: %v", err)
-		}
-		if err := tmp.ViridianEnable.toC(&hvm.viridian_enable); err != nil {
-			return fmt.Errorf("converting field ViridianEnable: %v", err)
-		}
-		if err := tmp.ViridianDisable.toC(&hvm.viridian_disable); err != nil {
-			return fmt.Errorf("converting field ViridianDisable: %v", err)
-		}
-		if tmp.Timeoffset != "" {
-			hvm.timeoffset = C.CString(tmp.Timeoffset)
-		}
-		if err := tmp.Hpet.toC(&hvm.hpet); err != nil {
-			return fmt.Errorf("converting field Hpet: %v", err)
-		}
-		if err := tmp.VptAlign.toC(&hvm.vpt_align); err != nil {
-			return fmt.Errorf("converting field VptAlign: %v", err)
-		}
-		hvm.mmio_hole_memkb = C.uint64_t(tmp.MmioHoleMemkb)
-		hvm.timer_mode = C.libxl_timer_mode(tmp.TimerMode)
-		if err := tmp.NestedHvm.toC(&hvm.nested_hvm); err != nil {
-			return fmt.Errorf("converting field NestedHvm: %v", err)
-		}
-		if err := tmp.Altp2M.toC(&hvm.altp2m); err != nil {
-			return fmt.Errorf("converting field Altp2M: %v", err)
-		}
-		if tmp.SystemFirmware != "" {
-			hvm.system_firmware = C.CString(tmp.SystemFirmware)
-		}
-		if tmp.SmbiosFirmware != "" {
-			hvm.smbios_firmware = C.CString(tmp.SmbiosFirmware)
-		}
-		if tmp.AcpiFirmware != "" {
-			hvm.acpi_firmware = C.CString(tmp.AcpiFirmware)
-		}
-		hvm.hdtype = C.libxl_hdtype(tmp.Hdtype)
-		if err := tmp.Nographic.toC(&hvm.nographic); err != nil {
-			return fmt.Errorf("converting field Nographic: %v", err)
-		}
-		if err := tmp.Vga.toC(&hvm.vga); err != nil {
-			return fmt.Errorf("converting field Vga: %v", err)
-		}
-		if err := tmp.Vnc.toC(&hvm.vnc); err != nil {
-			return fmt.Errorf("converting field Vnc: %v", err)
-		}
-		if tmp.Keymap != "" {
-			hvm.keymap = C.CString(tmp.Keymap)
-		}
-		if err := tmp.Sdl.toC(&hvm.sdl); err != nil {
-			return fmt.Errorf("converting field Sdl: %v", err)
-		}
-		if err := tmp.Spice.toC(&hvm.spice); err != nil {
-			return fmt.Errorf("converting field Spice: %v", err)
-		}
-		if err := tmp.GfxPassthru.toC(&hvm.gfx_passthru); err != nil {
-			return fmt.Errorf("converting field GfxPassthru: %v", err)
-		}
-		hvm.gfx_passthru_kind = C.libxl_gfx_passthru_kind(tmp.GfxPassthruKind)
-		if tmp.Serial != "" {
-			hvm.serial = C.CString(tmp.Serial)
-		}
-		if tmp.Boot != "" {
-			hvm.boot = C.CString(tmp.Boot)
-		}
-		if err := tmp.Usb.toC(&hvm.usb); err != nil {
-			return fmt.Errorf("converting field Usb: %v", err)
-		}
-		hvm.usbversion = C.int(tmp.Usbversion)
-		if tmp.Usbdevice != "" {
-			hvm.usbdevice = C.CString(tmp.Usbdevice)
-		}
-		if err := tmp.VkbDevice.toC(&hvm.vkb_device); err != nil {
-			return fmt.Errorf("converting field VkbDevice: %v", err)
-		}
-		if tmp.Soundhw != "" {
-			hvm.soundhw = C.CString(tmp.Soundhw)
-		}
-		if err := tmp.XenPlatformPci.toC(&hvm.xen_platform_pci); err != nil {
-			return fmt.Errorf("converting field XenPlatformPci: %v", err)
-		}
-		if err := tmp.UsbdeviceList.toC(&hvm.usbdevice_list); err != nil {
-			return fmt.Errorf("converting field UsbdeviceList: %v", err)
-		}
-		hvm.vendor_device = C.libxl_vendor_device(tmp.VendorDevice)
-		if err := tmp.MsVmGenid.toC(&hvm.ms_vm_genid); err != nil {
-			return fmt.Errorf("converting field MsVmGenid: %v", err)
-		}
-		if err := tmp.SerialList.toC(&hvm.serial_list); err != nil {
-			return fmt.Errorf("converting field SerialList: %v", err)
-		}
-		if err := tmp.Rdm.toC(&hvm.rdm); err != nil {
-			return fmt.Errorf("converting field Rdm: %v", err)
-		}
-		hvm.rdm_mem_boundary_memkb = C.uint64_t(tmp.RdmMemBoundaryMemkb)
-		hvm.mca_caps = C.uint64_t(tmp.McaCaps)
-		hvmBytes := C.GoBytes(unsafe.Pointer(&hvm), C.sizeof_libxl_domain_build_info_type_union_hvm)
-		copy(xc.u[:], hvmBytes)
-	case DomainTypePv:
-		tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionPv)
-		if !ok {
-			return errors.New("wrong type for union key type")
-		}
-		var pv C.libxl_domain_build_info_type_union_pv
-		if tmp.Kernel != "" {
-			pv.kernel = C.CString(tmp.Kernel)
-		}
-		pv.slack_memkb = C.uint64_t(tmp.SlackMemkb)
-		if tmp.Bootloader != "" {
-			pv.bootloader = C.CString(tmp.Bootloader)
-		}
-		if err := tmp.BootloaderArgs.toC(&pv.bootloader_args); err != nil {
-			return fmt.Errorf("converting field BootloaderArgs: %v", err)
-		}
-		if tmp.Cmdline != "" {
-			pv.cmdline = C.CString(tmp.Cmdline)
-		}
-		if tmp.Ramdisk != "" {
-			pv.ramdisk = C.CString(tmp.Ramdisk)
-		}
-		if tmp.Features != "" {
-			pv.features = C.CString(tmp.Features)
-		}
-		if err := tmp.E820Host.toC(&pv.e820_host); err != nil {
-			return fmt.Errorf("converting field E820Host: %v", err)
-		}
-		pvBytes := C.GoBytes(unsafe.Pointer(&pv), C.sizeof_libxl_domain_build_info_type_union_pv)
-		copy(xc.u[:], pvBytes)
-	case DomainTypePvh:
-		tmp, ok := x.TypeUnion.(DomainBuildInfoTypeUnionPvh)
-		if !ok {
-			return errors.New("wrong type for union key type")
-		}
-		var pvh C.libxl_domain_build_info_type_union_pvh
-		if err := tmp.Pvshim.toC(&pvh.pvshim); err != nil {
-			return fmt.Errorf("converting field Pvshim: %v", err)
-		}
-		if tmp.PvshimPath != "" {
-			pvh.pvshim_path = C.CString(tmp.PvshimPath)
-		}
-		if tmp.PvshimCmdline != "" {
-			pvh.pvshim_cmdline = C.CString(tmp.PvshimCmdline)
-		}
-		if tmp.PvshimExtra != "" {
-			pvh.pvshim_extra = C.CString(tmp.PvshimExtra)
-		}
-		pvhBytes := C.GoBytes(unsafe.Pointer(&pvh), C.sizeof_libxl_domain_build_info_type_union_pvh)
-		copy(xc.u[:], pvhBytes)
-	case DomainTypeInvalid:
-		break
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Type)
-	}
-	xc.arch_arm.gic_version = C.libxl_gic_version(x.ArchArm.GicVersion)
-	xc.arch_arm.vuart = C.libxl_vuart_type(x.ArchArm.Vuart)
-	xc.altp2m = C.libxl_altp2m_mode(x.Altp2M)
-
-	return nil
-}
-
-// NewDeviceVfb returns an instance of DeviceVfb initialized with defaults.
-func NewDeviceVfb() (*DeviceVfb, error) {
-	var (
-		x  DeviceVfb
-		xc C.libxl_device_vfb
-	)
-
-	C.libxl_device_vfb_init(&xc)
-	defer C.libxl_device_vfb_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceVfb) fromC(xc *C.libxl_device_vfb) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	if err := x.Vnc.fromC(&xc.vnc); err != nil {
-		return fmt.Errorf("converting field Vnc: %v", err)
-	}
-	if err := x.Sdl.fromC(&xc.sdl); err != nil {
-		return fmt.Errorf("converting field Sdl: %v", err)
-	}
-	x.Keymap = C.GoString(xc.keymap)
-
-	return nil
-}
-
-func (x *DeviceVfb) toC(xc *C.libxl_device_vfb) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_vfb_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	if err := x.Vnc.toC(&xc.vnc); err != nil {
-		return fmt.Errorf("converting field Vnc: %v", err)
-	}
-	if err := x.Sdl.toC(&xc.sdl); err != nil {
-		return fmt.Errorf("converting field Sdl: %v", err)
-	}
-	if x.Keymap != "" {
-		xc.keymap = C.CString(x.Keymap)
-	}
-
-	return nil
-}
-
-// NewDeviceVkb returns an instance of DeviceVkb initialized with defaults.
-func NewDeviceVkb() (*DeviceVkb, error) {
-	var (
-		x  DeviceVkb
-		xc C.libxl_device_vkb
-	)
-
-	C.libxl_device_vkb_init(&xc)
-	defer C.libxl_device_vkb_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceVkb) fromC(xc *C.libxl_device_vkb) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	x.BackendType = VkbBackend(xc.backend_type)
-	x.UniqueId = C.GoString(xc.unique_id)
-	x.FeatureDisableKeyboard = bool(xc.feature_disable_keyboard)
-	x.FeatureDisablePointer = bool(xc.feature_disable_pointer)
-	x.FeatureAbsPointer = bool(xc.feature_abs_pointer)
-	x.FeatureRawPointer = bool(xc.feature_raw_pointer)
-	x.FeatureMultiTouch = bool(xc.feature_multi_touch)
-	x.Width = uint32(xc.width)
-	x.Height = uint32(xc.height)
-	x.MultiTouchWidth = uint32(xc.multi_touch_width)
-	x.MultiTouchHeight = uint32(xc.multi_touch_height)
-	x.MultiTouchNumContacts = uint32(xc.multi_touch_num_contacts)
-
-	return nil
-}
-
-func (x *DeviceVkb) toC(xc *C.libxl_device_vkb) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_vkb_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.backend_type = C.libxl_vkb_backend(x.BackendType)
-	if x.UniqueId != "" {
-		xc.unique_id = C.CString(x.UniqueId)
-	}
-	xc.feature_disable_keyboard = C.bool(x.FeatureDisableKeyboard)
-	xc.feature_disable_pointer = C.bool(x.FeatureDisablePointer)
-	xc.feature_abs_pointer = C.bool(x.FeatureAbsPointer)
-	xc.feature_raw_pointer = C.bool(x.FeatureRawPointer)
-	xc.feature_multi_touch = C.bool(x.FeatureMultiTouch)
-	xc.width = C.uint32_t(x.Width)
-	xc.height = C.uint32_t(x.Height)
-	xc.multi_touch_width = C.uint32_t(x.MultiTouchWidth)
-	xc.multi_touch_height = C.uint32_t(x.MultiTouchHeight)
-	xc.multi_touch_num_contacts = C.uint32_t(x.MultiTouchNumContacts)
-
-	return nil
-}
-
-// NewDeviceDisk returns an instance of DeviceDisk initialized with defaults.
-func NewDeviceDisk() (*DeviceDisk, error) {
-	var (
-		x  DeviceDisk
-		xc C.libxl_device_disk
-	)
-
-	C.libxl_device_disk_init(&xc)
-	defer C.libxl_device_disk_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceDisk) fromC(xc *C.libxl_device_disk) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.PdevPath = C.GoString(xc.pdev_path)
-	x.Vdev = C.GoString(xc.vdev)
-	x.Backend = DiskBackend(xc.backend)
-	x.Format = DiskFormat(xc.format)
-	x.Script = C.GoString(xc.script)
-	x.Removable = int(xc.removable)
-	x.Readwrite = int(xc.readwrite)
-	x.IsCdrom = int(xc.is_cdrom)
-	x.DirectIoSafe = bool(xc.direct_io_safe)
-	if err := x.DiscardEnable.fromC(&xc.discard_enable); err != nil {
-		return fmt.Errorf("converting field DiscardEnable: %v", err)
-	}
-	if err := x.ColoEnable.fromC(&xc.colo_enable); err != nil {
-		return fmt.Errorf("converting field ColoEnable: %v", err)
-	}
-	if err := x.ColoRestoreEnable.fromC(&xc.colo_restore_enable); err != nil {
-		return fmt.Errorf("converting field ColoRestoreEnable: %v", err)
-	}
-	x.ColoHost = C.GoString(xc.colo_host)
-	x.ColoPort = int(xc.colo_port)
-	x.ColoExport = C.GoString(xc.colo_export)
-	x.ActiveDisk = C.GoString(xc.active_disk)
-	x.HiddenDisk = C.GoString(xc.hidden_disk)
-
-	return nil
-}
-
-func (x *DeviceDisk) toC(xc *C.libxl_device_disk) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_disk_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	if x.PdevPath != "" {
-		xc.pdev_path = C.CString(x.PdevPath)
-	}
-	if x.Vdev != "" {
-		xc.vdev = C.CString(x.Vdev)
-	}
-	xc.backend = C.libxl_disk_backend(x.Backend)
-	xc.format = C.libxl_disk_format(x.Format)
-	if x.Script != "" {
-		xc.script = C.CString(x.Script)
-	}
-	xc.removable = C.int(x.Removable)
-	xc.readwrite = C.int(x.Readwrite)
-	xc.is_cdrom = C.int(x.IsCdrom)
-	xc.direct_io_safe = C.bool(x.DirectIoSafe)
-	if err := x.DiscardEnable.toC(&xc.discard_enable); err != nil {
-		return fmt.Errorf("converting field DiscardEnable: %v", err)
-	}
-	if err := x.ColoEnable.toC(&xc.colo_enable); err != nil {
-		return fmt.Errorf("converting field ColoEnable: %v", err)
-	}
-	if err := x.ColoRestoreEnable.toC(&xc.colo_restore_enable); err != nil {
-		return fmt.Errorf("converting field ColoRestoreEnable: %v", err)
-	}
-	if x.ColoHost != "" {
-		xc.colo_host = C.CString(x.ColoHost)
-	}
-	xc.colo_port = C.int(x.ColoPort)
-	if x.ColoExport != "" {
-		xc.colo_export = C.CString(x.ColoExport)
-	}
-	if x.ActiveDisk != "" {
-		xc.active_disk = C.CString(x.ActiveDisk)
-	}
-	if x.HiddenDisk != "" {
-		xc.hidden_disk = C.CString(x.HiddenDisk)
-	}
-
-	return nil
-}
-
-// NewDeviceNic returns an instance of DeviceNic initialized with defaults.
-func NewDeviceNic() (*DeviceNic, error) {
-	var (
-		x  DeviceNic
-		xc C.libxl_device_nic
-	)
-
-	C.libxl_device_nic_init(&xc)
-	defer C.libxl_device_nic_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceNic) fromC(xc *C.libxl_device_nic) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	x.Mtu = int(xc.mtu)
-	x.Model = C.GoString(xc.model)
-	if err := x.Mac.fromC(&xc.mac); err != nil {
-		return fmt.Errorf("converting field Mac: %v", err)
-	}
-	x.Ip = C.GoString(xc.ip)
-	x.Bridge = C.GoString(xc.bridge)
-	x.Ifname = C.GoString(xc.ifname)
-	x.Script = C.GoString(xc.script)
-	x.Nictype = NicType(xc.nictype)
-	x.RateBytesPerInterval = uint64(xc.rate_bytes_per_interval)
-	x.RateIntervalUsecs = uint32(xc.rate_interval_usecs)
-	x.Gatewaydev = C.GoString(xc.gatewaydev)
-	x.ColoftForwarddev = C.GoString(xc.coloft_forwarddev)
-	x.ColoSockMirrorId = C.GoString(xc.colo_sock_mirror_id)
-	x.ColoSockMirrorIp = C.GoString(xc.colo_sock_mirror_ip)
-	x.ColoSockMirrorPort = C.GoString(xc.colo_sock_mirror_port)
-	x.ColoSockComparePriInId = C.GoString(xc.colo_sock_compare_pri_in_id)
-	x.ColoSockComparePriInIp = C.GoString(xc.colo_sock_compare_pri_in_ip)
-	x.ColoSockComparePriInPort = C.GoString(xc.colo_sock_compare_pri_in_port)
-	x.ColoSockCompareSecInId = C.GoString(xc.colo_sock_compare_sec_in_id)
-	x.ColoSockCompareSecInIp = C.GoString(xc.colo_sock_compare_sec_in_ip)
-	x.ColoSockCompareSecInPort = C.GoString(xc.colo_sock_compare_sec_in_port)
-	x.ColoSockCompareNotifyId = C.GoString(xc.colo_sock_compare_notify_id)
-	x.ColoSockCompareNotifyIp = C.GoString(xc.colo_sock_compare_notify_ip)
-	x.ColoSockCompareNotifyPort = C.GoString(xc.colo_sock_compare_notify_port)
-	x.ColoSockRedirector0Id = C.GoString(xc.colo_sock_redirector0_id)
-	x.ColoSockRedirector0Ip = C.GoString(xc.colo_sock_redirector0_ip)
-	x.ColoSockRedirector0Port = C.GoString(xc.colo_sock_redirector0_port)
-	x.ColoSockRedirector1Id = C.GoString(xc.colo_sock_redirector1_id)
-	x.ColoSockRedirector1Ip = C.GoString(xc.colo_sock_redirector1_ip)
-	x.ColoSockRedirector1Port = C.GoString(xc.colo_sock_redirector1_port)
-	x.ColoSockRedirector2Id = C.GoString(xc.colo_sock_redirector2_id)
-	x.ColoSockRedirector2Ip = C.GoString(xc.colo_sock_redirector2_ip)
-	x.ColoSockRedirector2Port = C.GoString(xc.colo_sock_redirector2_port)
-	x.ColoFilterMirrorQueue = C.GoString(xc.colo_filter_mirror_queue)
-	x.ColoFilterMirrorOutdev = C.GoString(xc.colo_filter_mirror_outdev)
-	x.ColoFilterRedirector0Queue = C.GoString(xc.colo_filter_redirector0_queue)
-	x.ColoFilterRedirector0Indev = C.GoString(xc.colo_filter_redirector0_indev)
-	x.ColoFilterRedirector0Outdev = C.GoString(xc.colo_filter_redirector0_outdev)
-	x.ColoFilterRedirector1Queue = C.GoString(xc.colo_filter_redirector1_queue)
-	x.ColoFilterRedirector1Indev = C.GoString(xc.colo_filter_redirector1_indev)
-	x.ColoFilterRedirector1Outdev = C.GoString(xc.colo_filter_redirector1_outdev)
-	x.ColoComparePriIn = C.GoString(xc.colo_compare_pri_in)
-	x.ColoCompareSecIn = C.GoString(xc.colo_compare_sec_in)
-	x.ColoCompareOut = C.GoString(xc.colo_compare_out)
-	x.ColoCompareNotifyDev = C.GoString(xc.colo_compare_notify_dev)
-	x.ColoSockSecRedirector0Id = C.GoString(xc.colo_sock_sec_redirector0_id)
-	x.ColoSockSecRedirector0Ip = C.GoString(xc.colo_sock_sec_redirector0_ip)
-	x.ColoSockSecRedirector0Port = C.GoString(xc.colo_sock_sec_redirector0_port)
-	x.ColoSockSecRedirector1Id = C.GoString(xc.colo_sock_sec_redirector1_id)
-	x.ColoSockSecRedirector1Ip = C.GoString(xc.colo_sock_sec_redirector1_ip)
-	x.ColoSockSecRedirector1Port = C.GoString(xc.colo_sock_sec_redirector1_port)
-	x.ColoFilterSecRedirector0Queue = C.GoString(xc.colo_filter_sec_redirector0_queue)
-	x.ColoFilterSecRedirector0Indev = C.GoString(xc.colo_filter_sec_redirector0_indev)
-	x.ColoFilterSecRedirector0Outdev = C.GoString(xc.colo_filter_sec_redirector0_outdev)
-	x.ColoFilterSecRedirector1Queue = C.GoString(xc.colo_filter_sec_redirector1_queue)
-	x.ColoFilterSecRedirector1Indev = C.GoString(xc.colo_filter_sec_redirector1_indev)
-	x.ColoFilterSecRedirector1Outdev = C.GoString(xc.colo_filter_sec_redirector1_outdev)
-	x.ColoFilterSecRewriter0Queue = C.GoString(xc.colo_filter_sec_rewriter0_queue)
-	x.ColoCheckpointHost = C.GoString(xc.colo_checkpoint_host)
-	x.ColoCheckpointPort = C.GoString(xc.colo_checkpoint_port)
-
-	return nil
-}
-
-func (x *DeviceNic) toC(xc *C.libxl_device_nic) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_nic_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.mtu = C.int(x.Mtu)
-	if x.Model != "" {
-		xc.model = C.CString(x.Model)
-	}
-	if err := x.Mac.toC(&xc.mac); err != nil {
-		return fmt.Errorf("converting field Mac: %v", err)
-	}
-	if x.Ip != "" {
-		xc.ip = C.CString(x.Ip)
-	}
-	if x.Bridge != "" {
-		xc.bridge = C.CString(x.Bridge)
-	}
-	if x.Ifname != "" {
-		xc.ifname = C.CString(x.Ifname)
-	}
-	if x.Script != "" {
-		xc.script = C.CString(x.Script)
-	}
-	xc.nictype = C.libxl_nic_type(x.Nictype)
-	xc.rate_bytes_per_interval = C.uint64_t(x.RateBytesPerInterval)
-	xc.rate_interval_usecs = C.uint32_t(x.RateIntervalUsecs)
-	if x.Gatewaydev != "" {
-		xc.gatewaydev = C.CString(x.Gatewaydev)
-	}
-	if x.ColoftForwarddev != "" {
-		xc.coloft_forwarddev = C.CString(x.ColoftForwarddev)
-	}
-	if x.ColoSockMirrorId != "" {
-		xc.colo_sock_mirror_id = C.CString(x.ColoSockMirrorId)
-	}
-	if x.ColoSockMirrorIp != "" {
-		xc.colo_sock_mirror_ip = C.CString(x.ColoSockMirrorIp)
-	}
-	if x.ColoSockMirrorPort != "" {
-		xc.colo_sock_mirror_port = C.CString(x.ColoSockMirrorPort)
-	}
-	if x.ColoSockComparePriInId != "" {
-		xc.colo_sock_compare_pri_in_id = C.CString(x.ColoSockComparePriInId)
-	}
-	if x.ColoSockComparePriInIp != "" {
-		xc.colo_sock_compare_pri_in_ip = C.CString(x.ColoSockComparePriInIp)
-	}
-	if x.ColoSockComparePriInPort != "" {
-		xc.colo_sock_compare_pri_in_port = C.CString(x.ColoSockComparePriInPort)
-	}
-	if x.ColoSockCompareSecInId != "" {
-		xc.colo_sock_compare_sec_in_id = C.CString(x.ColoSockCompareSecInId)
-	}
-	if x.ColoSockCompareSecInIp != "" {
-		xc.colo_sock_compare_sec_in_ip = C.CString(x.ColoSockCompareSecInIp)
-	}
-	if x.ColoSockCompareSecInPort != "" {
-		xc.colo_sock_compare_sec_in_port = C.CString(x.ColoSockCompareSecInPort)
-	}
-	if x.ColoSockCompareNotifyId != "" {
-		xc.colo_sock_compare_notify_id = C.CString(x.ColoSockCompareNotifyId)
-	}
-	if x.ColoSockCompareNotifyIp != "" {
-		xc.colo_sock_compare_notify_ip = C.CString(x.ColoSockCompareNotifyIp)
-	}
-	if x.ColoSockCompareNotifyPort != "" {
-		xc.colo_sock_compare_notify_port = C.CString(x.ColoSockCompareNotifyPort)
-	}
-	if x.ColoSockRedirector0Id != "" {
-		xc.colo_sock_redirector0_id = C.CString(x.ColoSockRedirector0Id)
-	}
-	if x.ColoSockRedirector0Ip != "" {
-		xc.colo_sock_redirector0_ip = C.CString(x.ColoSockRedirector0Ip)
-	}
-	if x.ColoSockRedirector0Port != "" {
-		xc.colo_sock_redirector0_port = C.CString(x.ColoSockRedirector0Port)
-	}
-	if x.ColoSockRedirector1Id != "" {
-		xc.colo_sock_redirector1_id = C.CString(x.ColoSockRedirector1Id)
-	}
-	if x.ColoSockRedirector1Ip != "" {
-		xc.colo_sock_redirector1_ip = C.CString(x.ColoSockRedirector1Ip)
-	}
-	if x.ColoSockRedirector1Port != "" {
-		xc.colo_sock_redirector1_port = C.CString(x.ColoSockRedirector1Port)
-	}
-	if x.ColoSockRedirector2Id != "" {
-		xc.colo_sock_redirector2_id = C.CString(x.ColoSockRedirector2Id)
-	}
-	if x.ColoSockRedirector2Ip != "" {
-		xc.colo_sock_redirector2_ip = C.CString(x.ColoSockRedirector2Ip)
-	}
-	if x.ColoSockRedirector2Port != "" {
-		xc.colo_sock_redirector2_port = C.CString(x.ColoSockRedirector2Port)
-	}
-	if x.ColoFilterMirrorQueue != "" {
-		xc.colo_filter_mirror_queue = C.CString(x.ColoFilterMirrorQueue)
-	}
-	if x.ColoFilterMirrorOutdev != "" {
-		xc.colo_filter_mirror_outdev = C.CString(x.ColoFilterMirrorOutdev)
-	}
-	if x.ColoFilterRedirector0Queue != "" {
-		xc.colo_filter_redirector0_queue = C.CString(x.ColoFilterRedirector0Queue)
-	}
-	if x.ColoFilterRedirector0Indev != "" {
-		xc.colo_filter_redirector0_indev = C.CString(x.ColoFilterRedirector0Indev)
-	}
-	if x.ColoFilterRedirector0Outdev != "" {
-		xc.colo_filter_redirector0_outdev = C.CString(x.ColoFilterRedirector0Outdev)
-	}
-	if x.ColoFilterRedirector1Queue != "" {
-		xc.colo_filter_redirector1_queue = C.CString(x.ColoFilterRedirector1Queue)
-	}
-	if x.ColoFilterRedirector1Indev != "" {
-		xc.colo_filter_redirector1_indev = C.CString(x.ColoFilterRedirector1Indev)
-	}
-	if x.ColoFilterRedirector1Outdev != "" {
-		xc.colo_filter_redirector1_outdev = C.CString(x.ColoFilterRedirector1Outdev)
-	}
-	if x.ColoComparePriIn != "" {
-		xc.colo_compare_pri_in = C.CString(x.ColoComparePriIn)
-	}
-	if x.ColoCompareSecIn != "" {
-		xc.colo_compare_sec_in = C.CString(x.ColoCompareSecIn)
-	}
-	if x.ColoCompareOut != "" {
-		xc.colo_compare_out = C.CString(x.ColoCompareOut)
-	}
-	if x.ColoCompareNotifyDev != "" {
-		xc.colo_compare_notify_dev = C.CString(x.ColoCompareNotifyDev)
-	}
-	if x.ColoSockSecRedirector0Id != "" {
-		xc.colo_sock_sec_redirector0_id = C.CString(x.ColoSockSecRedirector0Id)
-	}
-	if x.ColoSockSecRedirector0Ip != "" {
-		xc.colo_sock_sec_redirector0_ip = C.CString(x.ColoSockSecRedirector0Ip)
-	}
-	if x.ColoSockSecRedirector0Port != "" {
-		xc.colo_sock_sec_redirector0_port = C.CString(x.ColoSockSecRedirector0Port)
-	}
-	if x.ColoSockSecRedirector1Id != "" {
-		xc.colo_sock_sec_redirector1_id = C.CString(x.ColoSockSecRedirector1Id)
-	}
-	if x.ColoSockSecRedirector1Ip != "" {
-		xc.colo_sock_sec_redirector1_ip = C.CString(x.ColoSockSecRedirector1Ip)
-	}
-	if x.ColoSockSecRedirector1Port != "" {
-		xc.colo_sock_sec_redirector1_port = C.CString(x.ColoSockSecRedirector1Port)
-	}
-	if x.ColoFilterSecRedirector0Queue != "" {
-		xc.colo_filter_sec_redirector0_queue = C.CString(x.ColoFilterSecRedirector0Queue)
-	}
-	if x.ColoFilterSecRedirector0Indev != "" {
-		xc.colo_filter_sec_redirector0_indev = C.CString(x.ColoFilterSecRedirector0Indev)
-	}
-	if x.ColoFilterSecRedirector0Outdev != "" {
-		xc.colo_filter_sec_redirector0_outdev = C.CString(x.ColoFilterSecRedirector0Outdev)
-	}
-	if x.ColoFilterSecRedirector1Queue != "" {
-		xc.colo_filter_sec_redirector1_queue = C.CString(x.ColoFilterSecRedirector1Queue)
-	}
-	if x.ColoFilterSecRedirector1Indev != "" {
-		xc.colo_filter_sec_redirector1_indev = C.CString(x.ColoFilterSecRedirector1Indev)
-	}
-	if x.ColoFilterSecRedirector1Outdev != "" {
-		xc.colo_filter_sec_redirector1_outdev = C.CString(x.ColoFilterSecRedirector1Outdev)
-	}
-	if x.ColoFilterSecRewriter0Queue != "" {
-		xc.colo_filter_sec_rewriter0_queue = C.CString(x.ColoFilterSecRewriter0Queue)
-	}
-	if x.ColoCheckpointHost != "" {
-		xc.colo_checkpoint_host = C.CString(x.ColoCheckpointHost)
-	}
-	if x.ColoCheckpointPort != "" {
-		xc.colo_checkpoint_port = C.CString(x.ColoCheckpointPort)
-	}
-
-	return nil
-}
-
-// NewDevicePci returns an instance of DevicePci initialized with defaults.
-func NewDevicePci() (*DevicePci, error) {
-	var (
-		x  DevicePci
-		xc C.libxl_device_pci
-	)
-
-	C.libxl_device_pci_init(&xc)
-	defer C.libxl_device_pci_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DevicePci) fromC(xc *C.libxl_device_pci) error {
-	x.Func = byte(xc._func)
-	x.Dev = byte(xc.dev)
-	x.Bus = byte(xc.bus)
-	x.Domain = int(xc.domain)
-	x.Vdevfn = uint32(xc.vdevfn)
-	x.VfuncMask = uint32(xc.vfunc_mask)
-	x.Msitranslate = bool(xc.msitranslate)
-	x.PowerMgmt = bool(xc.power_mgmt)
-	x.Permissive = bool(xc.permissive)
-	x.Seize = bool(xc.seize)
-	x.RdmPolicy = RdmReservePolicy(xc.rdm_policy)
-
-	return nil
-}
-
-func (x *DevicePci) toC(xc *C.libxl_device_pci) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_pci_dispose(xc)
-		}
-	}()
-
-	xc._func = C.uint8_t(x.Func)
-	xc.dev = C.uint8_t(x.Dev)
-	xc.bus = C.uint8_t(x.Bus)
-	xc.domain = C.int(x.Domain)
-	xc.vdevfn = C.uint32_t(x.Vdevfn)
-	xc.vfunc_mask = C.uint32_t(x.VfuncMask)
-	xc.msitranslate = C.bool(x.Msitranslate)
-	xc.power_mgmt = C.bool(x.PowerMgmt)
-	xc.permissive = C.bool(x.Permissive)
-	xc.seize = C.bool(x.Seize)
-	xc.rdm_policy = C.libxl_rdm_reserve_policy(x.RdmPolicy)
-
-	return nil
-}
-
-// NewDeviceRdm returns an instance of DeviceRdm initialized with defaults.
-func NewDeviceRdm() (*DeviceRdm, error) {
-	var (
-		x  DeviceRdm
-		xc C.libxl_device_rdm
-	)
-
-	C.libxl_device_rdm_init(&xc)
-	defer C.libxl_device_rdm_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceRdm) fromC(xc *C.libxl_device_rdm) error {
-	x.Start = uint64(xc.start)
-	x.Size = uint64(xc.size)
-	x.Policy = RdmReservePolicy(xc.policy)
-
-	return nil
-}
-
-func (x *DeviceRdm) toC(xc *C.libxl_device_rdm) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_rdm_dispose(xc)
-		}
-	}()
-
-	xc.start = C.uint64_t(x.Start)
-	xc.size = C.uint64_t(x.Size)
-	xc.policy = C.libxl_rdm_reserve_policy(x.Policy)
-
-	return nil
-}
-
-// NewDeviceUsbctrl returns an instance of DeviceUsbctrl initialized with defaults.
-func NewDeviceUsbctrl() (*DeviceUsbctrl, error) {
-	var (
-		x  DeviceUsbctrl
-		xc C.libxl_device_usbctrl
-	)
-
-	C.libxl_device_usbctrl_init(&xc)
-	defer C.libxl_device_usbctrl_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceUsbctrl) fromC(xc *C.libxl_device_usbctrl) error {
-	x.Type = UsbctrlType(xc._type)
-	x.Devid = Devid(xc.devid)
-	x.Version = int(xc.version)
-	x.Ports = int(xc.ports)
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-
-	return nil
-}
-
-func (x *DeviceUsbctrl) toC(xc *C.libxl_device_usbctrl) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_usbctrl_dispose(xc)
-		}
-	}()
-
-	xc._type = C.libxl_usbctrl_type(x.Type)
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.version = C.int(x.Version)
-	xc.ports = C.int(x.Ports)
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-
-	return nil
-}
-
-// NewDeviceUsbdev returns an instance of DeviceUsbdev initialized with defaults.
-func NewDeviceUsbdev(utype UsbdevType) (*DeviceUsbdev, error) {
-	var (
-		x  DeviceUsbdev
-		xc C.libxl_device_usbdev
-	)
-
-	C.libxl_device_usbdev_init(&xc)
-	C.libxl_device_usbdev_init_type(&xc, C.libxl_usbdev_type(utype))
-	defer C.libxl_device_usbdev_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceUsbdev) fromC(xc *C.libxl_device_usbdev) error {
-	x.Ctrl = Devid(xc.ctrl)
-	x.Port = int(xc.port)
-	x.Type = UsbdevType(xc._type)
-	switch x.Type {
-	case UsbdevTypeHostdev:
-		var typeHostdev DeviceUsbdevTypeUnionHostdev
-		if err := typeHostdev.fromC(xc); err != nil {
-			return fmt.Errorf("converting field typeHostdev: %v", err)
-		}
-		x.TypeUnion = typeHostdev
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Type)
-	}
-
-	return nil
-}
-
-func (x *DeviceUsbdevTypeUnionHostdev) fromC(xc *C.libxl_device_usbdev) error {
-	if UsbdevType(xc._type) != UsbdevTypeHostdev {
-		return errors.New("expected union key UsbdevTypeHostdev")
-	}
-
-	tmp := (*C.libxl_device_usbdev_type_union_hostdev)(unsafe.Pointer(&xc.u[0]))
-	x.Hostbus = byte(tmp.hostbus)
-	x.Hostaddr = byte(tmp.hostaddr)
-	return nil
-}
-
-func (x *DeviceUsbdev) toC(xc *C.libxl_device_usbdev) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_usbdev_dispose(xc)
-		}
-	}()
-
-	xc.ctrl = C.libxl_devid(x.Ctrl)
-	xc.port = C.int(x.Port)
-	xc._type = C.libxl_usbdev_type(x.Type)
-	switch x.Type {
-	case UsbdevTypeHostdev:
-		tmp, ok := x.TypeUnion.(DeviceUsbdevTypeUnionHostdev)
-		if !ok {
-			return errors.New("wrong type for union key type")
-		}
-		var hostdev C.libxl_device_usbdev_type_union_hostdev
-		hostdev.hostbus = C.uint8_t(tmp.Hostbus)
-		hostdev.hostaddr = C.uint8_t(tmp.Hostaddr)
-		hostdevBytes := C.GoBytes(unsafe.Pointer(&hostdev), C.sizeof_libxl_device_usbdev_type_union_hostdev)
-		copy(xc.u[:], hostdevBytes)
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Type)
-	}
-
-	return nil
-}
-
-// NewDeviceDtdev returns an instance of DeviceDtdev initialized with defaults.
-func NewDeviceDtdev() (*DeviceDtdev, error) {
-	var (
-		x  DeviceDtdev
-		xc C.libxl_device_dtdev
-	)
-
-	C.libxl_device_dtdev_init(&xc)
-	defer C.libxl_device_dtdev_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceDtdev) fromC(xc *C.libxl_device_dtdev) error {
-	x.Path = C.GoString(xc.path)
-
-	return nil
-}
-
-func (x *DeviceDtdev) toC(xc *C.libxl_device_dtdev) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_dtdev_dispose(xc)
-		}
-	}()
-
-	if x.Path != "" {
-		xc.path = C.CString(x.Path)
-	}
-
-	return nil
-}
-
-// NewDeviceVtpm returns an instance of DeviceVtpm initialized with defaults.
-func NewDeviceVtpm() (*DeviceVtpm, error) {
-	var (
-		x  DeviceVtpm
-		xc C.libxl_device_vtpm
-	)
-
-	C.libxl_device_vtpm_init(&xc)
-	defer C.libxl_device_vtpm_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceVtpm) fromC(xc *C.libxl_device_vtpm) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	if err := x.Uuid.fromC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-
-	return nil
-}
-
-func (x *DeviceVtpm) toC(xc *C.libxl_device_vtpm) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_vtpm_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	if err := x.Uuid.toC(&xc.uuid); err != nil {
-		return fmt.Errorf("converting field Uuid: %v", err)
-	}
-
-	return nil
-}
-
-// NewDeviceP9 returns an instance of DeviceP9 initialized with defaults.
-func NewDeviceP9() (*DeviceP9, error) {
-	var (
-		x  DeviceP9
-		xc C.libxl_device_p9
-	)
-
-	C.libxl_device_p9_init(&xc)
-	defer C.libxl_device_p9_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceP9) fromC(xc *C.libxl_device_p9) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Tag = C.GoString(xc.tag)
-	x.Path = C.GoString(xc.path)
-	x.SecurityModel = C.GoString(xc.security_model)
-	x.Devid = Devid(xc.devid)
-
-	return nil
-}
-
-func (x *DeviceP9) toC(xc *C.libxl_device_p9) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_p9_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	if x.Tag != "" {
-		xc.tag = C.CString(x.Tag)
-	}
-	if x.Path != "" {
-		xc.path = C.CString(x.Path)
-	}
-	if x.SecurityModel != "" {
-		xc.security_model = C.CString(x.SecurityModel)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-
-	return nil
-}
-
-// NewDevicePvcallsif returns an instance of DevicePvcallsif initialized with defaults.
-func NewDevicePvcallsif() (*DevicePvcallsif, error) {
-	var (
-		x  DevicePvcallsif
-		xc C.libxl_device_pvcallsif
-	)
-
-	C.libxl_device_pvcallsif_init(&xc)
-	defer C.libxl_device_pvcallsif_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DevicePvcallsif) fromC(xc *C.libxl_device_pvcallsif) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-
-	return nil
-}
-
-func (x *DevicePvcallsif) toC(xc *C.libxl_device_pvcallsif) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_pvcallsif_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-
-	return nil
-}
-
-// NewDeviceChannel returns an instance of DeviceChannel initialized with defaults.
-func NewDeviceChannel(connection ChannelConnection) (*DeviceChannel, error) {
-	var (
-		x  DeviceChannel
-		xc C.libxl_device_channel
-	)
-
-	C.libxl_device_channel_init(&xc)
-	C.libxl_device_channel_init_connection(&xc, C.libxl_channel_connection(connection))
-	defer C.libxl_device_channel_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceChannel) fromC(xc *C.libxl_device_channel) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	x.Name = C.GoString(xc.name)
-	x.Connection = ChannelConnection(xc.connection)
-	switch x.Connection {
-	case ChannelConnectionUnknown:
-		x.ConnectionUnion = nil
-	case ChannelConnectionPty:
-		x.ConnectionUnion = nil
-	case ChannelConnectionSocket:
-		var connectionSocket DeviceChannelConnectionUnionSocket
-		if err := connectionSocket.fromC(xc); err != nil {
-			return fmt.Errorf("converting field connectionSocket: %v", err)
-		}
-		x.ConnectionUnion = connectionSocket
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Connection)
-	}
-
-	return nil
-}
-
-func (x *DeviceChannelConnectionUnionSocket) fromC(xc *C.libxl_device_channel) error {
-	if ChannelConnection(xc.connection) != ChannelConnectionSocket {
-		return errors.New("expected union key ChannelConnectionSocket")
-	}
-
-	tmp := (*C.libxl_device_channel_connection_union_socket)(unsafe.Pointer(&xc.u[0]))
-	x.Path = C.GoString(tmp.path)
-	return nil
-}
-
-func (x *DeviceChannel) toC(xc *C.libxl_device_channel) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_channel_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	if x.Name != "" {
-		xc.name = C.CString(x.Name)
-	}
-	xc.connection = C.libxl_channel_connection(x.Connection)
-	switch x.Connection {
-	case ChannelConnectionUnknown:
-		break
-	case ChannelConnectionPty:
-		break
-	case ChannelConnectionSocket:
-		tmp, ok := x.ConnectionUnion.(DeviceChannelConnectionUnionSocket)
-		if !ok {
-			return errors.New("wrong type for union key connection")
-		}
-		var socket C.libxl_device_channel_connection_union_socket
-		if tmp.Path != "" {
-			socket.path = C.CString(tmp.Path)
-		}
-		socketBytes := C.GoBytes(unsafe.Pointer(&socket), C.sizeof_libxl_device_channel_connection_union_socket)
-		copy(xc.u[:], socketBytes)
-	default:
-		return fmt.Errorf("invalid union key '%v'", x.Connection)
-	}
-
-	return nil
-}
-
-// NewConnectorParam returns an instance of ConnectorParam initialized with defaults.
-func NewConnectorParam() (*ConnectorParam, error) {
-	var (
-		x  ConnectorParam
-		xc C.libxl_connector_param
-	)
-
-	C.libxl_connector_param_init(&xc)
-	defer C.libxl_connector_param_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *ConnectorParam) fromC(xc *C.libxl_connector_param) error {
-	x.UniqueId = C.GoString(xc.unique_id)
-	x.Width = uint32(xc.width)
-	x.Height = uint32(xc.height)
-
-	return nil
-}
-
-func (x *ConnectorParam) toC(xc *C.libxl_connector_param) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_connector_param_dispose(xc)
-		}
-	}()
-
-	if x.UniqueId != "" {
-		xc.unique_id = C.CString(x.UniqueId)
-	}
-	xc.width = C.uint32_t(x.Width)
-	xc.height = C.uint32_t(x.Height)
-
-	return nil
-}
-
-// NewDeviceVdispl returns an instance of DeviceVdispl initialized with defaults.
-func NewDeviceVdispl() (*DeviceVdispl, error) {
-	var (
-		x  DeviceVdispl
-		xc C.libxl_device_vdispl
-	)
-
-	C.libxl_device_vdispl_init(&xc)
-	defer C.libxl_device_vdispl_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *DeviceVdispl) fromC(xc *C.libxl_device_vdispl) error {
-	x.BackendDomid = Domid(xc.backend_domid)
-	x.BackendDomname = C.GoString(xc.backend_domname)
-	x.Devid = Devid(xc.devid)
-	x.BeAlloc = bool(xc.be_alloc)
-	x.Connectors = nil
-	if n := int(xc.num_connectors); n > 0 {
-		cConnectors := (*[1 << 28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:n:n]
-		x.Connectors = make([]ConnectorParam, n)
-		for i, v := range cConnectors {
-			if err := x.Connectors[i].fromC(&v); err != nil {
-				return fmt.Errorf("converting field Connectors: %v", err)
-			}
-		}
-	}
-
-	return nil
-}
-
-func (x *DeviceVdispl) toC(xc *C.libxl_device_vdispl) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_device_vdispl_dispose(xc)
-		}
-	}()
-
-	xc.backend_domid = C.libxl_domid(x.BackendDomid)
-	if x.BackendDomname != "" {
-		xc.backend_domname = C.CString(x.BackendDomname)
-	}
-	xc.devid = C.libxl_devid(x.Devid)
-	xc.be_alloc = C.bool(x.BeAlloc)
-	if numConnectors := len(x.Connectors); numConnectors > 0 {
-		xc.connectors = (*C.libxl_connector_param)(C.malloc(C.ulong(numConnectors) * C.sizeof_libxl_connector_param))
-		xc.num_connectors = C.int(numConnectors)
-		cConnectors := (*[1 << 28]C.libxl_connector_param)(unsafe.Pointer(xc.connectors))[:numConnectors:numConnectors]
-		for i, v := range x.Connectors {
-			if err := v.toC(&cConnectors[i]); err != nil {
-				return fmt.Errorf("converting field Connectors: %v", err)
-			}
-		}
-	}
-
-	return nil
-}
-
-// NewVsndParams returns an instance of VsndParams initialized with defaults.
-func NewVsndParams() (*VsndParams, error) {
-	var (
-		x  VsndParams
-		xc C.libxl_vsnd_params
-	)
-
-	C.libxl_vsnd_params_init(&xc)
-	defer C.libxl_vsnd_params_dispose(&xc)
-
-	if err := x.fromC(&xc); err != nil {
-		return nil, err
-	}
-
-	return &x, nil
-}
-
-func (x *VsndParams) fromC(xc *C.libxl_vsnd_params) error {
-	x.SampleRates = nil
-	if n := int(xc.num_sample_rates); n > 0 {
-		cSampleRates := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:n:n]
-		x.SampleRates = make([]uint32, n)
-		for i, v := range cSampleRates {
-			x.SampleRates[i] = uint32(v)
-		}
-	}
-	x.SampleFormats = nil
-	if n := int(xc.num_sample_formats); n > 0 {
-		cSampleFormats := (*[1 << 28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:n:n]
-		x.SampleFormats = make([]VsndPcmFormat, n)
-		for i, v := range cSampleFormats {
-			x.SampleFormats[i] = VsndPcmFormat(v)
-		}
-	}
-	x.ChannelsMin = uint32(xc.channels_min)
-	x.ChannelsMax = uint32(xc.channels_max)
-	x.BufferSize = uint32(xc.buffer_size)
-
-	return nil
-}
-
-func (x *VsndParams) toC(xc *C.libxl_vsnd_params) (err error) {
-	defer func() {
-		if err != nil {
-			C.libxl_vsnd_params_dispose(xc)
-		}
-	}()
-
-	if numSampleRates := len(x.SampleRates); numSampleRates > 0 {
-		xc.sample_rates = (*C.uint32_t)(C.malloc(C.size_t(numSampleRates * numSampleRates)))
-		xc.num_sample_rates = C.int(numSampleRates)
-		cSampleRates := (*[1 << 28]C.uint32_t)(unsafe.Pointer(xc.sample_rates))[:numSampleRates:numSampleRates]
-		for i, v := range x.SampleRates {
-			cSampleRates[i] = C.uint32_t(v)
-		}
-	}
-	if numSampleFormats := len(x.SampleFormats); numSampleFormats > 0 {
-		xc.sample_formats = (*C.libxl_vsnd_pcm_format)(C.malloc(C.size_t(numSampleFormats * numSampleFormats)))
-		xc.num_sample_formats = C.int(numSampleFormats)
-		cSampleFormats := (*[1 << 28]C.libxl_vsnd_pcm_format)(unsafe.Pointer(xc.sample_formats))[:numSampleFormats:numSampleFormats]
-		for i, v := range x.SampleFormats {
-			cSampleFormats[i] = C.libxl_vsnd_pcm_format(v)
-		}
-	}
-	xc.channels_min = C.uint32_t(x.ChannelsMin)
-	xc.channels_max = C.uint32_t(x.ChannelsMax)
-	xc.buffer_size = C.uint32_t(x.BufferSize)
-
-	return nil
-}
-
-// NewVsndStream returns an instance of VsndStream initialized with defaults.
-func NewVsndStream() (*VsndStream, error) {
-	var (
-		x  VsndStream
-		xc C.libxl_vsnd_stream


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:55:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:55:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTVk-0006c4-Bt; Tue, 28 Apr 2020 16:55:08 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTVj-0006bz-Qy
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:07 +0000
X-Inumbo-ID: 00f37b18-8971-11ea-98a1-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 00f37b18-8971-11ea-98a1-12813bfff9fa;
 Tue, 28 Apr 2020 16:55:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=nKxd7arK0My4VHKv75HvOdzPeFJBXhGOlY6vNOscqss=; b=jO3ay9KAA4hnh+/Jx2OVBr9TTB
 Yib30AjWPjZBb0XadV14tfdR0C6UQYL1aW8dP2lHOSzjZWpdV6EqmzvUgtUTUl/da2MYoiRkuwbNs
 iIgtpLiKtRDYM5aF8kgFpu1yFUAdT1vlsWnYbgp6Ojd+rpUwGB6hqwGu61hoyN/vMVFk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTVe-00012w-Nf
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTVe-0003ua-MW
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/EFI: also fill boot_tsc_stamp on the xen.efi
 boot path
Message-Id: <E1jTTVe-0003ua-MW@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:55:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 499a2944d7651acacfb81ac9ec9ef720ca05883b
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:49:38 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:49:38 2020 +0200

    x86/EFI: also fill boot_tsc_stamp on the xen.efi boot path
    
    Commit e3a379c35eff ("x86/time: always count s_time from Xen boot")
    introducing this missed adjusting this path as well.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    master commit: 0dbc112e727f6c17f306c864950bdf83dece5cd5
    master date: 2020-04-14 11:42:11 +0200
---
 xen/arch/x86/efi/efi-boot.h | 3 +++
 xen/include/asm-x86/setup.h | 1 +
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index dee65b7177..a0be818ee4 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -8,6 +8,7 @@
 #include <asm/edd.h>
 #include <asm/msr.h>
 #include <asm/processor.h>
+#include <asm/setup.h>
 
 static struct file __initdata ucode;
 static multiboot_info_t __initdata mbi = {
@@ -638,6 +639,8 @@ static void __init efi_arch_cpu(void)
 {
     uint32_t eax = cpuid_eax(0x80000000);
 
+    boot_tsc_stamp = rdtsc();
+
     if ( (eax >> 16) == 0x8000 && eax > 0x80000000 )
     {
         cpuid_ext_features = cpuid_edx(0x80000001);
diff --git a/xen/include/asm-x86/setup.h b/xen/include/asm-x86/setup.h
index bb4c38567c..562c4b54d7 100644
--- a/xen/include/asm-x86/setup.h
+++ b/xen/include/asm-x86/setup.h
@@ -13,6 +13,7 @@ extern char __2M_init_start[], __2M_init_end[];
 extern char __2M_rwdata_start[], __2M_rwdata_end[];
 
 extern unsigned long xenheap_initial_phys_start;
+extern uint64_t boot_tsc_stamp;
 
 void early_cpu_init(void);
 void early_time_init(void);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:55:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:55:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTVt-0006cg-DW; Tue, 28 Apr 2020 16:55:17 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTVs-0006cY-2Y
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:16 +0000
X-Inumbo-ID: 06ef9de4-8971-11ea-98a1-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 06ef9de4-8971-11ea-98a1-12813bfff9fa;
 Tue, 28 Apr 2020 16:55:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kMPi1tFvtunyWx9agWAp54YilKMZiOmoTMS14vapEoY=; b=w/XGISJssayQTPOCjEeF/tiNL7
 kljwm9DodCxD42rQPNl491olJDmXDt3L/z1zncHsCDJSJP6RFmSZOHGDoxmfVNOMNZ2YcNFs4OdOo
 Oqfe4X5NzPfq0P8q8PSAObDi7LmjG5giykS334pe8aGjNq2j88xBV8mg3QZHq83zia2c=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTVo-000132-Qg
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTVo-0003vc-PS
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/boot: Fix early exception handling with
 CONFIG_PERF_COUNTERS
Message-Id: <E1jTTVo-0003vc-PS@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:55:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e8032787d44ff9dfe157bda9e7f47e1c58faa973
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 15:51:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:51:14 2020 +0200

    x86/boot: Fix early exception handling with CONFIG_PERF_COUNTERS
    
    The PERFC_INCR() macro uses current->processor, but current is not valid
    during early boot.  This causes the following crash to occur if
    e.g. rdmsr_safe() has to recover from a #GP fault.
    
      (XEN) Early fatal page fault at e008:ffff82d0803b1a39 (cr2=0000000000000004, ec=0000)
      (XEN) ----[ Xen-4.14-unstable  x86_64  debug=y   Not tainted ]----
      (XEN) CPU:    0
      (XEN) RIP:    e008:[<ffff82d0803b1a39>] x86_64/entry.S#handle_exception_saved+0x64/0xb8
      ...
      (XEN) Xen call trace:
      (XEN)    [<ffff82d0803b1a39>] R x86_64/entry.S#handle_exception_saved+0x64/0xb8
      (XEN)    [<ffff82d0806394fe>] F __start_xen+0x2cd/0x2980
      (XEN)    [<ffff82d0802000ec>] F __high_start+0x4c/0x4e
    
    Furthermore, the PERFC_INCR() macro is wildly inefficient.  There has been a
    single caller for many releases now, so inline it and delete the macro
    completely.
    
    There is no need to reference current at all.  What is actually needed is the
    per_cpu_offset which can be obtained directly from the top-of-stack block.
    This simplifies the counter handling to 3 instructions and no spilling to the
    stack at all.
    
    The same breakage from above is now handled properly:
    
      (XEN) traps.c:1591: GPF (0000): ffff82d0806394fe [__start_xen+0x2cd/0x2980] -> ffff82d0803b3bfb
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Julien Grall <jgrall@amazon.com>
    master commit: 615bfe42c6d183a0e54a0525ef82b58580d01619
    master date: 2020-04-16 09:48:38 +0100
---
 xen/arch/x86/x86_64/asm-offsets.c |  1 +
 xen/arch/x86/x86_64/entry.S       |  6 +++++-
 xen/include/asm-x86/asm_defns.h   | 16 ----------------
 3 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 33930ce97c..5df15e26f1 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -112,6 +112,7 @@ void __dummy__(void)
     OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
     OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
     OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
+    OFFSET(CPUINFO_per_cpu_offset, struct cpu_info, per_cpu_offset);
     OFFSET(CPUINFO_cr4, struct cpu_info, cr4);
     OFFSET(CPUINFO_xen_cr3, struct cpu_info, xen_cr3);
     OFFSET(CPUINFO_pv_cr3, struct cpu_info, pv_cr3);
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index e8eae3b08d..94d9a51a17 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -682,7 +682,11 @@ handle_exception_saved:
 1:      movq  %rsp,%rdi
         movzbl UREGS_entry_vector(%rsp),%eax
         leaq  exception_table(%rip),%rdx
-        PERFC_INCR(exceptions, %rax, %rbx)
+#ifdef CONFIG_PERF_COUNTERS
+        lea   per_cpu__perfcounters(%rip), %rcx
+        add   STACK_CPUINFO_FIELD(per_cpu_offset)(%r14), %rcx
+        incl  ASM_PERFC_exceptions * 4(%rcx, %rax, 4)
+#endif
         mov   (%rdx, %rax, 8), %rdx
         INDIRECT_CALL %rdx
         mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
diff --git a/xen/include/asm-x86/asm_defns.h b/xen/include/asm-x86/asm_defns.h
index e688cf1c16..1364a14b98 100644
--- a/xen/include/asm-x86/asm_defns.h
+++ b/xen/include/asm-x86/asm_defns.h
@@ -334,22 +334,6 @@ static always_inline void stac(void)
 
 #endif
 
-#ifdef CONFIG_PERF_COUNTERS
-#define PERFC_INCR(_name,_idx,_cur)             \
-        pushq _cur;                             \
-        movslq VCPU_processor(_cur),_cur;       \
-        pushq %rdx;                             \
-        leaq __per_cpu_offset(%rip),%rdx;       \
-        movq (%rdx,_cur,8),_cur;                \
-        leaq per_cpu__perfcounters(%rip),%rdx;  \
-        addq %rdx,_cur;                         \
-        popq %rdx;                              \
-        incl ASM_PERFC_##_name*4(_cur,_idx,4);  \
-        popq _cur
-#else
-#define PERFC_INCR(_name,_idx,_cur)
-#endif
-
 /* Work around AMD erratum #88 */
 #define safe_swapgs                             \
         "mfence; swapgs;"
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:55:24 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:55:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTW0-0006ds-F6; Tue, 28 Apr 2020 16:55:24 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTVz-0006dj-Q8
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:23 +0000
X-Inumbo-ID: 0cf4753e-8971-11ea-98a1-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 0cf4753e-8971-11ea-98a1-12813bfff9fa;
 Tue, 28 Apr 2020 16:55:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kIJwvVHcuKfo9v8iev7kT6rnYsYl8pD9Y1i4zywzgYI=; b=3ouI7182PCoYczobr/0A2CZ+GT
 wKKQG0Mbfq/mc70lFXhtILg+tgjEatlCjZodx1SdObYZZsiRLYUu1Q4sHCTqEAAlolBixF9LD9OIg
 FVeYmdVEkB5vLsAhoxn143lfATw2gQoTkEK6O9O/xfZHER9JqJXHB4URmRIb8tHyt8VA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTVy-00013F-Tt
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTVy-0003wl-Se
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] hvmloader: enable MMIO and I/O decode,
 after all resource allocation
Message-Id: <E1jTTVy-0003wl-Se@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:55:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 6bf8bdd5c66148c991b9e046491956b84fdb0fb5
Author:     Harsha Shamsundara Havanur <havanur@amazon.com>
AuthorDate: Mon Apr 27 15:52:45 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:52:45 2020 +0200

    hvmloader: enable MMIO and I/O decode, after all resource allocation
    
    It was observed that PCI MMIO and/or IO BARs were programmed with
    memory and I/O decodes (bits 0 and 1 of PCI COMMAND register) enabled,
    during PCI setup phase. This resulted in incorrect memory mapping as
    soon as the lower half of the 64 bit bar is programmed.
    This displaced any RAM mappings under 4G. After the
    upper half is programmed PCI memory mapping is restored to its
    intended high mem location, but the RAM displaced is not restored.
    The OS then continues to boot and function until it tries to access
    the displaced RAM at which point it suffers a page fault and crashes.
    
    This patch address the issue by deferring enablement of memory and
    I/O decode in command register until all the resources, like interrupts
    I/O and/or MMIO BARs for all the PCI device functions are programmed,
    in the descending order of memory requested.
    
    Signed-off-by: Harsha Shamsundara Havanur <havanur@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: a8e0c228c79f3a000e19183090eb41fca173b034
    master date: 2020-04-16 10:58:46 +0200
---
 tools/firmware/hvmloader/pci.c | 49 +++++++++++++++++++++++++++++++-----------
 1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/tools/firmware/hvmloader/pci.c b/tools/firmware/hvmloader/pci.c
index 0b708bf578..dcd097a866 100644
--- a/tools/firmware/hvmloader/pci.c
+++ b/tools/firmware/hvmloader/pci.c
@@ -84,6 +84,7 @@ void pci_setup(void)
     uint32_t vga_devfn = 256;
     uint16_t class, vendor_id, device_id;
     unsigned int bar, pin, link, isa_irq;
+    uint8_t pci_devfn_decode_type[256] = {};
 
     /* Resources assignable to PCI devices via BARs. */
     struct resource {
@@ -120,6 +121,13 @@ void pci_setup(void)
      */
     bool allow_memory_relocate = 1;
 
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_IO !=
+                 PCI_COMMAND_IO);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MEMORY !=
+                 PCI_COMMAND_MEMORY);
+    BUILD_BUG_ON((typeof(*pci_devfn_decode_type))PCI_COMMAND_MASTER !=
+                 PCI_COMMAND_MASTER);
+
     s = xenstore_read(HVM_XS_ALLOW_MEMORY_RELOCATE, NULL);
     if ( s )
         allow_memory_relocate = strtoll(s, NULL, 0);
@@ -208,6 +216,20 @@ void pci_setup(void)
             break;
         }
 
+        /*
+         * It is recommended that BAR programming be done whilst decode
+         * bits are cleared to avoid incorrect mappings being created.
+         * When 64-bit memory BAR is programmed, first by writing the
+         * lower half and then the upper half, which maps to an address
+         * under 4G, as soon as lower half is wriiten, replacing any RAM
+         * mapped in that address, which is not restored back after the
+         * upper half is written and PCI memory is correctly mapped to
+         * its intended high mem address.
+         */
+        cmd = pci_readw(devfn, PCI_COMMAND);
+        cmd &= ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
+        pci_writew(devfn, PCI_COMMAND, cmd);
+
         /* Map the I/O memory and port resources. */
         for ( bar = 0; bar < 7; bar++ )
         {
@@ -289,10 +311,8 @@ void pci_setup(void)
                    devfn>>3, devfn&7, 'A'+pin-1, isa_irq);
         }
 
-        /* Enable bus mastering. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_MASTER;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+        /* Enable bus master for this function later */
+        pci_devfn_decode_type[devfn] = PCI_COMMAND_MASTER;
     }
 
     if ( mmio_hole_size )
@@ -497,16 +517,12 @@ void pci_setup(void)
                PRIllx_arg(bar_sz),
                bar_data_upper, bar_data);
 			
-
-        /* Now enable the memory or I/O mapping. */
-        cmd = pci_readw(devfn, PCI_COMMAND);
         if ( (bar_reg == PCI_ROM_ADDRESS) ||
              ((bar_data & PCI_BASE_ADDRESS_SPACE) ==
               PCI_BASE_ADDRESS_SPACE_MEMORY) )
-            cmd |= PCI_COMMAND_MEMORY;
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_MEMORY;
         else
-            cmd |= PCI_COMMAND_IO;
-        pci_writew(devfn, PCI_COMMAND, cmd);
+            pci_devfn_decode_type[devfn] |= PCI_COMMAND_IO;
     }
 
     if ( pci_hi_mem_start )
@@ -526,10 +542,17 @@ void pci_setup(void)
          * has IO enabled, even if there is no I/O BAR on that
          * particular device.
          */
-        cmd = pci_readw(vga_devfn, PCI_COMMAND);
-        cmd |= PCI_COMMAND_IO;
-        pci_writew(vga_devfn, PCI_COMMAND, cmd);
+        pci_devfn_decode_type[vga_devfn] |= PCI_COMMAND_IO;
     }
+
+    /* Enable bus master, memory and I/O decode for all valid functions. */
+    for ( devfn = 0; devfn < 256; devfn++ )
+        if ( pci_devfn_decode_type[devfn] )
+        {
+            cmd = pci_readw(devfn, PCI_COMMAND);
+            cmd |= pci_devfn_decode_type[devfn];
+            pci_writew(devfn, PCI_COMMAND, cmd);
+        }
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:55:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:55:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTWB-0006fK-Ge; Tue, 28 Apr 2020 16:55:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTWA-0006fD-MJ
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:34 +0000
X-Inumbo-ID: 12aa34d4-8971-11ea-98a1-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 12aa34d4-8971-11ea-98a1-12813bfff9fa;
 Tue, 28 Apr 2020 16:55:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=SyUmHPVxhYGzPHEVtwKrfzfzo+Zmo4kxhq63e7dnvpA=; b=wvy6sF3SpbwOSODGux6tOx/5Sr
 Vs9QhWnkWiS1knvGtlwt2PSCwg93ZAVbeZeeV4aB5i/cCPjwynT/5trESk3+Q4t/GG9PxW1tS7aR9
 bwWXliQrQg/pG9Kk/6r1T5eQoOtSifaRGTLo4CIFLX2tN/gDEIm1Hu7V2PlyYHKREDM8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTW9-00013R-0a
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTW8-0003xY-Vk
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/vtd: relax EPT page table sharing check
Message-Id: <E1jTTW8-0003xY-Vk@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:55:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 55d65346d70b779f082b7764480e745cb51e675f
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Mon Apr 27 15:53:26 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:53:26 2020 +0200

    x86/vtd: relax EPT page table sharing check
    
    The EPT page tables can be shared with the IOMMU as long as the page
    sizes supported by EPT are also supported by the IOMMU.
    
    Current code checks that both the IOMMU and EPT support the same page
    sizes, but this is not strictly required, the IOMMU supporting more
    page sizes than EPT is fine and shouldn't block page table sharing.
    
    This is likely not a common case (IOMMU supporting more page sizes
    than EPT), but should still be fixed for correctness.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
    master commit: 3957e12c02670b97855ef0933b373f99993fa598
    master date: 2020-04-21 10:54:56 +0200
---
 xen/drivers/passthrough/vtd/iommu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 77ba8e14a6..ed50d34c91 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1957,8 +1957,8 @@ static int __init vtd_ept_page_compatible(struct iommu *iommu)
     if ( rdmsr_safe(MSR_IA32_VMX_EPT_VPID_CAP, ept_cap) != 0 ) 
         return 0;
 
-    return (ept_has_2mb(ept_cap) && opt_hap_2mb) == cap_sps_2mb(vtd_cap) &&
-           (ept_has_1gb(ept_cap) && opt_hap_1gb) == cap_sps_1gb(vtd_cap);
+    return (ept_has_2mb(ept_cap) && opt_hap_2mb) <= cap_sps_2mb(vtd_cap) &&
+           (ept_has_1gb(ept_cap) && opt_hap_1gb) <= cap_sps_1gb(vtd_cap);
 }
 
 /*
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:55:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:55:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTWL-0006gL-IA; Tue, 28 Apr 2020 16:55:45 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTWK-0006gA-Eq
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:44 +0000
X-Inumbo-ID: 18fc7890-8971-11ea-98a1-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 18fc7890-8971-11ea-98a1-12813bfff9fa;
 Tue, 28 Apr 2020 16:55:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=7KSc/Km7NNRrgkD3SW5EDB/HYOAb93Fs2JTdVSJGvcw=; b=Qqq4XZIRmMTDedYjOkPh4PqArV
 y7asRCFS1Z9aqllka+5rqNN6Oww1CbvXV4AAFJux7s/WPu2sQKEYPBQISyqwLxVqi88t/NPD9Q3Uj
 ASA7oZrzfG7ZbpezHnlQActbkpwzjwzIjw6ncHuSmewdEgHLGSWumC3yY7wvyAyOzdDM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTWJ-00013a-3e
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTWJ-0003yJ-2T
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86: Enumeration for Control-flow Enforcement
 Technology
Message-Id: <E1jTTWJ-0003yJ-2T@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:55:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a6366e0f884db4302354ce7372ece93aeb95207f
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 15:54:14 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:54:14 2020 +0200

    x86: Enumeration for Control-flow Enforcement Technology
    
    The CET spec has been published and guest kernels are starting to get support.
    Introduce the CPUID and MSRs, and fully block the MSRs from guest use.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Wei Liu <wl@xen.org>
    master commit: 4803a67114279a656a54a23cebed646da32efeb6
    master date: 2020-04-21 16:52:03 +0100
---
 tools/libxl/libxl_cpuid.c                   | 2 ++
 tools/misc/xen-cpuid.c                      | 3 ++-
 xen/arch/x86/msr.c                          | 6 ++++++
 xen/include/asm-x86/msr-index.h             | 8 ++++++++
 xen/include/public/arch-x86/cpufeatureset.h | 2 ++
 5 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/tools/libxl/libxl_cpuid.c b/tools/libxl/libxl_cpuid.c
index 5a1702d703..4cf0f0738d 100644
--- a/tools/libxl/libxl_cpuid.c
+++ b/tools/libxl/libxl_cpuid.c
@@ -199,10 +199,12 @@ int libxl_cpuid_parse_config(libxl_cpuid_policy_list *cpuid, const char* str)
         {"umip",         0x00000007,  0, CPUID_REG_ECX,  2,  1},
         {"pku",          0x00000007,  0, CPUID_REG_ECX,  3,  1},
         {"ospke",        0x00000007,  0, CPUID_REG_ECX,  4,  1},
+        {"cet-ss",       0x00000007,  0, CPUID_REG_ECX,  7,  1},
 
         {"avx512-4vnniw",0x00000007,  0, CPUID_REG_EDX,  2,  1},
         {"avx512-4fmaps",0x00000007,  0, CPUID_REG_EDX,  3,  1},
         {"md-clear",     0x00000007,  0, CPUID_REG_EDX, 10,  1},
+        {"cet-ibt",      0x00000007,  0, CPUID_REG_EDX, 20,  1},
         {"ibrsb",        0x00000007,  0, CPUID_REG_EDX, 26,  1},
         {"stibp",        0x00000007,  0, CPUID_REG_EDX, 27,  1},
         {"l1d-flush",    0x00000007,  0, CPUID_REG_EDX, 28,  1},
diff --git a/tools/misc/xen-cpuid.c b/tools/misc/xen-cpuid.c
index 40b739d20d..2a00697643 100644
--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -123,7 +123,7 @@ static const char *str_7c0[32] =
     [ 0] = "prefetchwt1",      [ 1] = "avx512_vbmi",
     [ 2] = "umip",             [ 3] = "pku",
     [ 4] = "ospke",            [ 5] = "waitpkg",
-    [ 6] = "avx512_vbmi2",
+    [ 6] = "avx512_vbmi2",     [ 7] = "cet-ss",
     [ 8] = "gfni",             [ 9] = "vaes",
     [10] = "vpclmulqdq",       [11] = "avx512_vnni",
     [12] = "avx512_bitalg",
@@ -158,6 +158,7 @@ static const char *str_7d0[32] =
     /* 12 */                [13] = "tsx-force-abort",
 
     [18] = "pconfig",
+    [20] = "cet-ibt",
 
     [26] = "ibrsb",         [27] = "stibp",
     [28] = "l1d_flush",     [29] = "arch_caps",
diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index 1e8a3b536a..4888fff16c 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -133,6 +133,9 @@ int guest_rdmsr(const struct vcpu *v, uint32_t msr, uint64_t *val)
         /* Write-only */
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
         /* Not offered to guests. */
         goto gp_fault;
 
@@ -270,6 +273,9 @@ int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val)
         /* Read-only */
     case MSR_TSX_FORCE_ABORT:
     case MSR_TSX_CTRL:
+    case MSR_U_CET:
+    case MSR_S_CET:
+    case MSR_PL0_SSP ... MSR_INTERRUPT_SSP_TABLE:
         /* Not offered to guests. */
         goto gp_fault;
 
diff --git a/xen/include/asm-x86/msr-index.h b/xen/include/asm-x86/msr-index.h
index 3971b992d3..7693c4a71a 100644
--- a/xen/include/asm-x86/msr-index.h
+++ b/xen/include/asm-x86/msr-index.h
@@ -179,6 +179,14 @@
 #define MSR_IA32_VMX_TRUE_ENTRY_CTLS            0x490
 #define MSR_IA32_VMX_VMFUNC                     0x491
 
+#define MSR_U_CET                           0x000006a0
+#define MSR_S_CET                           0x000006a2
+#define MSR_PL0_SSP                         0x000006a4
+#define MSR_PL1_SSP                         0x000006a5
+#define MSR_PL2_SSP                         0x000006a6
+#define MSR_PL3_SSP                         0x000006a7
+#define MSR_INTERRUPT_SSP_TABLE             0x000006a8
+
 /* K7/K8 MSRs. Not complete. See the architecture manual for a more
    complete list. */
 #define MSR_K7_EVNTSEL0			0xc0010000
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 55231d4b3b..865a435d2c 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -228,6 +228,7 @@ XEN_CPUFEATURE(AVX512VBMI,    6*32+ 1) /*A  AVX-512 Vector Byte Manipulation Ins
 XEN_CPUFEATURE(UMIP,          6*32+ 2) /*S  User Mode Instruction Prevention */
 XEN_CPUFEATURE(PKU,           6*32+ 3) /*H  Protection Keys for Userspace */
 XEN_CPUFEATURE(OSPKE,         6*32+ 4) /*!  OS Protection Keys Enable */
+XEN_CPUFEATURE(CET_SS,        6*32+ 7) /*   CET - Shadow Stacks */
 XEN_CPUFEATURE(AVX512_VPOPCNTDQ, 6*32+14) /*A  POPCNT for vectors of DW/QW */
 XEN_CPUFEATURE(RDPID,         6*32+22) /*A  RDPID instruction */
 
@@ -244,6 +245,7 @@ XEN_CPUFEATURE(AVX512_4VNNIW, 9*32+ 2) /*A  AVX512 Neural Network Instructions *
 XEN_CPUFEATURE(AVX512_4FMAPS, 9*32+ 3) /*A  AVX512 Multiply Accumulation Single Precision */
 XEN_CPUFEATURE(MD_CLEAR,      9*32+10) /*A  VERW clears microarchitectural buffers */
 XEN_CPUFEATURE(TSX_FORCE_ABORT, 9*32+13) /* MSR_TSX_FORCE_ABORT.RTM_ABORT */
+XEN_CPUFEATURE(CET_IBT,       9*32+20) /*   CET - Indirect Branch Tracking */
 XEN_CPUFEATURE(IBRSB,         9*32+26) /*A  IBRS and IBPB support (used by Intel) */
 XEN_CPUFEATURE(STIBP,         9*32+27) /*A  STIBP */
 XEN_CPUFEATURE(L1D_FLUSH,     9*32+28) /*S  MSR_FLUSH_CMD and L1D flush. */
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:55:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:55:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTWV-0006hj-LF; Tue, 28 Apr 2020 16:55:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTWU-0006hb-G6
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:54 +0000
X-Inumbo-ID: 1eff5794-8971-11ea-98a1-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1eff5794-8971-11ea-98a1-12813bfff9fa;
 Tue, 28 Apr 2020 16:55:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8X4n4ndFmEJfZ+k90pD9tBTJJJ2Uf3wC8Gf0SYxTSXc=; b=0IJv7k8L6nGODpROBdj5wjNeDA
 abuMPKmwNLydvXFzTGS6nmcerBb0F8yLoIV3FvZWci1E02pFnC/76Gnez44dz9ow+beoj7wMp5m14
 lBPQyi4tQgSqx2yAW2rDfP5VrAIY3Jg2Y9KoilznjQKne3UaRE/KXb5kOIEQveTnFNZA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTWT-00013j-6W
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTWT-0003ys-5f
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:55:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86/HVM: expose VM assist hypercall
Message-Id: <E1jTTWT-0003ys-5f@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:55:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8d2ea0f4c830a3a6a7e7a19aa4f7d8a9fd854521
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:55:51 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:55:51 2020 +0200

    x86/HVM: expose VM assist hypercall
    
    In preparation for the addition of VMASST_TYPE_runstate_update_flag
    commit 72c538cca957 ("arm: add support for vm_assist hypercall") enabled
    the hypercall for Arm. I consider it not logical that it then isn't also
    exposed to x86 HVM guests (with the same single feature permitted to be
    enabled as Arm has); Linux actually tries to use it afaict.
    
    Rather than introducing yet another thin wrapper around vm_assist(),
    make that function the main handler, requiring a per-arch
    arch_vm_assist_valid_mask() definition instead.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    master commit: f13404d57f55a97838f1c16a366fbc3231ec21f1
    master date: 2020-04-22 12:58:25 +0200
---
 xen/arch/x86/domain.c        |  3 +++
 xen/arch/x86/hvm/hypercall.c |  1 +
 xen/arch/x86/pv/hypercall.c  |  2 +-
 xen/common/compat/kernel.c   |  5 -----
 xen/common/domain.c          | 13 ++++++++-----
 xen/common/kernel.c          |  7 -------
 xen/include/asm-arm/config.h |  2 --
 xen/include/asm-arm/domain.h |  2 ++
 xen/include/asm-x86/config.h | 11 -----------
 xen/include/asm-x86/domain.h | 19 +++++++++++++++++++
 xen/include/xen/hypercall.h  |  2 --
 xen/include/xen/lib.h        |  2 --
 12 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 019fc8ce02..745da387f6 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -875,6 +875,9 @@ int arch_set_info_guest(
         v->arch.dr6 = c(debugreg[6]);
         v->arch.dr7 = c(debugreg[7]);
 
+        if ( v->vcpu_id == 0 )
+            d->vm_assist = c.nat->vm_assist;
+
         hvm_set_info_guest(v);
         goto out;
     }
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 5bb1750595..7fcfc92b39 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -120,6 +120,7 @@ static long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
 static const hypercall_table_t hvm_hypercall_table[] = {
     HVM_CALL(memory_op),
     HVM_CALL(grant_table_op),
+    HYPERCALL(vm_assist),
     COMPAT_CALL(vcpu_op),
     HVM_CALL(physdev_op),
     COMPAT_CALL(xen_version),
diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c
index f452dd5c04..8bcd43dda3 100644
--- a/xen/arch/x86/pv/hypercall.c
+++ b/xen/arch/x86/pv/hypercall.c
@@ -54,7 +54,7 @@ const hypercall_table_t pv_hypercall_table[] = {
     HYPERCALL(console_io),
     COMPAT_CALL(physdev_op_compat),
     COMPAT_CALL(grant_table_op),
-    COMPAT_CALL(vm_assist),
+    HYPERCALL(vm_assist),
     COMPAT_CALL(update_va_mapping_otherdomain),
     COMPAT_CALL(iret),
     COMPAT_CALL(vcpu_op),
diff --git a/xen/common/compat/kernel.c b/xen/common/compat/kernel.c
index 64232669d2..78ff6f9e77 100644
--- a/xen/common/compat/kernel.c
+++ b/xen/common/compat/kernel.c
@@ -37,11 +37,6 @@ CHECK_TYPE(capabilities_info);
 
 CHECK_TYPE(domain_handle);
 
-#ifdef COMPAT_VM_ASSIST_VALID
-#undef VM_ASSIST_VALID
-#define VM_ASSIST_VALID COMPAT_VM_ASSIST_VALID
-#endif
-
 #define DO(fn) int compat_##fn
 #define COMPAT
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 111a6680b7..7f8fc43cbe 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -1556,20 +1556,23 @@ long do_vcpu_op(int cmd, unsigned int vcpuid, XEN_GUEST_HANDLE_PARAM(void) arg)
     return rc;
 }
 
-#ifdef VM_ASSIST_VALID
-long vm_assist(struct domain *p, unsigned int cmd, unsigned int type,
-               unsigned long valid)
+#ifdef arch_vm_assist_valid_mask
+long do_vm_assist(unsigned int cmd, unsigned int type)
 {
+    struct domain *currd = current->domain;
+    const unsigned long valid = arch_vm_assist_valid_mask(currd);
+
     if ( type >= BITS_PER_LONG || !test_bit(type, &valid) )
         return -EINVAL;
 
     switch ( cmd )
     {
     case VMASST_CMD_enable:
-        set_bit(type, &p->vm_assist);
+        set_bit(type, &currd->vm_assist);
         return 0;
+
     case VMASST_CMD_disable:
-        clear_bit(type, &p->vm_assist);
+        clear_bit(type, &currd->vm_assist);
         return 0;
     }
 
diff --git a/xen/common/kernel.c b/xen/common/kernel.c
index 612575430f..9cf8c0467a 100644
--- a/xen/common/kernel.c
+++ b/xen/common/kernel.c
@@ -570,13 +570,6 @@ DO(xen_version)(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     return -ENOSYS;
 }
 
-#ifdef VM_ASSIST_VALID
-DO(vm_assist)(unsigned int cmd, unsigned int type)
-{
-    return vm_assist(current->domain, cmd, type, VM_ASSIST_VALID);
-}
-#endif
-
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/asm-arm/config.h b/xen/include/asm-arm/config.h
index bc89e84f4d..fbb4b23a69 100644
--- a/xen/include/asm-arm/config.h
+++ b/xen/include/asm-arm/config.h
@@ -195,8 +195,6 @@ extern unsigned long frametable_virt_end;
 #define watchdog_disable() ((void)0)
 #define watchdog_enable()  ((void)0)
 
-#define VM_ASSIST_VALID          (1UL << VMASST_TYPE_runstate_update_flag)
-
 #endif /* __ARM_CONFIG_H__ */
 /*
  * Local variables:
diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
index 5b49509e80..927f859cbc 100644
--- a/xen/include/asm-arm/domain.h
+++ b/xen/include/asm-arm/domain.h
@@ -265,6 +265,8 @@ static inline void free_vcpu_guest_context(struct vcpu_guest_context *vgc)
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
+#define arch_vm_assist_valid_mask(d) (1UL << VMASST_TYPE_runstate_update_flag)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 9ef9d03ca7..feeb456bee 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -310,17 +310,6 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
-#define NATIVE_VM_ASSIST_VALID   ((1UL << VMASST_TYPE_4gb_segments)        | \
-                                  (1UL << VMASST_TYPE_4gb_segments_notify) | \
-                                  (1UL << VMASST_TYPE_writable_pagetables) | \
-                                  (1UL << VMASST_TYPE_pae_extended_cr3)    | \
-                                  (1UL << VMASST_TYPE_architectural_iopl)  | \
-                                  (1UL << VMASST_TYPE_runstate_update_flag)| \
-                                  (1UL << VMASST_TYPE_m2p_strict))
-#define VM_ASSIST_VALID          NATIVE_VM_ASSIST_VALID
-#define COMPAT_VM_ASSIST_VALID   (NATIVE_VM_ASSIST_VALID & \
-                                  ((1UL << COMPAT_BITS_PER_LONG) - 1))
-
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index 2cfce7b36b..86d6e2b226 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -703,6 +703,25 @@ static inline void pv_inject_sw_interrupt(unsigned int vector)
     pv_inject_event(&event);
 }
 
+#define PV32_VM_ASSIST_MASK ((1UL << VMASST_TYPE_4gb_segments)        | \
+                             (1UL << VMASST_TYPE_4gb_segments_notify) | \
+                             (1UL << VMASST_TYPE_writable_pagetables) | \
+                             (1UL << VMASST_TYPE_pae_extended_cr3)    | \
+                             (1UL << VMASST_TYPE_architectural_iopl)  | \
+                             (1UL << VMASST_TYPE_runstate_update_flag))
+/*
+ * Various of what PV32_VM_ASSIST_MASK has isn't really applicable to 64-bit,
+ * but we can't make such requests fail all of the sudden.
+ */
+#define PV64_VM_ASSIST_MASK (PV32_VM_ASSIST_MASK                      | \
+                             (1UL << VMASST_TYPE_m2p_strict))
+#define HVM_VM_ASSIST_MASK  (1UL << VMASST_TYPE_runstate_update_flag)
+
+#define arch_vm_assist_valid_mask(d) \
+    (is_hvm_domain(d) ? HVM_VM_ASSIST_MASK \
+                      : is_pv_32bit_domain(d) ? PV32_VM_ASSIST_MASK \
+                                              : PV64_VM_ASSIST_MASK)
+
 #endif /* __ASM_DOMAIN_H__ */
 
 /*
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index 6154c48cb8..5fb29eb003 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -199,8 +199,6 @@ extern int compat_xsm_op(
 
 extern int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg);
 
-extern int compat_vm_assist(unsigned int cmd, unsigned int type);
-
 DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t);
 extern int compat_multicall(
     XEN_GUEST_HANDLE_PARAM(multicall_entry_compat_t) call_list,
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 6529f12dae..11bf8407a2 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -106,8 +106,6 @@ extern void guest_printk(const struct domain *d, const char *format, ...)
     __attribute__ ((format (printf, 2, 3)));
 extern void noreturn panic(const char *format, ...)
     __attribute__ ((format (printf, 1, 2)));
-extern long vm_assist(struct domain *, unsigned int cmd, unsigned int type,
-                      unsigned long valid);
 extern int __printk_ratelimit(int ratelimit_ms, int ratelimit_burst);
 extern int printk_ratelimit(void);
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:56:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:56:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTWf-0006j4-Ms; Tue, 28 Apr 2020 16:56:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTWe-0006iv-9W
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:56:04 +0000
X-Inumbo-ID: 252b2e54-8971-11ea-b07b-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 252b2e54-8971-11ea-b07b-bc764e2007e4;
 Tue, 28 Apr 2020 16:56:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=pbm4NcKe35J2TqH0IFXuIw64reJ6X28GyST0N/urt4I=; b=TSiZl0aonZ72MXI5/6lQaKF5tW
 DMpjcX8V1mKLrsGbBfudZhQW6Z4Y0ZbS9bTmGbIPFTUZbJgasGkhZ5mkUkhmz+NFsBeXfxyyszqQS
 aiThuhm8eg5vpIQpRvPbauIQdixdLqGCxMVNeJZrdQJW1+v0xkSNztsiS0tJXN4FSosM=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTWd-00014W-HM
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:56:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTWd-0003zr-En
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:56:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] x86: validate VM assist value in
 arch_set_info_guest()
Message-Id: <E1jTTWd-0003zr-En@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:56:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d32cbbc141837600aa74f331c31a06df3777a2fb
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Mon Apr 27 15:57:13 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:57:13 2020 +0200

    x86: validate VM assist value in arch_set_info_guest()
    
    While I can't spot anything that would go wrong, just like the
    respective hypercall only permits applicable bits to be set, we should
    also do so when loading guest context.
    
    Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    master commit: a62c6fe05c4ae905b7d4cb0ca946508b7f96d522
    master date: 2020-04-22 13:01:10 +0200
---
 xen/arch/x86/domain.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 745da387f6..6b0cb689a1 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -868,6 +868,9 @@ int arch_set_info_guest(
         }
     }
 
+    if ( v->vcpu_id == 0 && (c(vm_assist) & ~arch_vm_assist_valid_mask(d)) )
+        return -EINVAL;
+
     if ( is_hvm_domain(d) )
     {
         for ( i = 0; i < ARRAY_SIZE(v->arch.dr); ++i )
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Tue Apr 28 16:56:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 28 Apr 2020 16:56:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTTWp-0006kB-OQ; Tue, 28 Apr 2020 16:56:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vexr=6M=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTTWo-0006k4-Tl
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:56:14 +0000
X-Inumbo-ID: 2b3b658e-8971-11ea-98a1-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2b3b658e-8971-11ea-98a1-12813bfff9fa;
 Tue, 28 Apr 2020 16:56:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=8l71dnAsDWsj9Ypyu0+yTH8Q6zNvG/cZn2RS/Q554EQ=; b=YdD6408m6t7FAn/2NuANyuhfLU
 Uwwd4LNRlLZTzJFEmzJMMM1ahF9kTNnm5Ie8AMaeO2fFteRHhOf6msgJrX/nZOFgW4y/YvKcqrA4h
 4Um0Rqc0Zccqu+ta9fqeAx4kFDZE3IMj7JkZp1MAqjO67RbT2SFVFdPk4b9uZFMbtYC8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTWn-00014i-NQ
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:56:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTTWn-00041A-Ln
 for xen-changelog@lists.xenproject.org; Tue, 28 Apr 2020 16:56:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen stable-4.12] build,xsm: fix multiple call
Message-Id: <E1jTTWn-00041A-Ln@xenbits.xenproject.org>
Date: Tue, 28 Apr 2020 16:56:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e6a2681148382e9227f54b70a5df8e895914c877
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Mon Apr 27 15:58:42 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Mon Apr 27 15:58:42 2020 +0200

    build,xsm: fix multiple call
    
    Both script mkflask.sh and mkaccess_vector.sh generates multiple
    files. Exploits the 'multi-target pattern rule' trick to call each
    scripts only once.
    
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    master commit: 52f3f319851e40892fbafeae53e512c7d61f03d0
    master date: 2020-04-23 09:59:05 +0200
---
 xen/xsm/flask/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/xsm/flask/Makefile b/xen/xsm/flask/Makefile
index f5ffab1226..f5b378f3ac 100644
--- a/xen/xsm/flask/Makefile
+++ b/xen/xsm/flask/Makefile
@@ -21,10 +21,10 @@ ALL_H_FILES = $(FLASK_H_FILES) $(AV_H_FILES)
 
 $(obj-y) ss/built_in.o: $(ALL_H_FILES)
 
-$(FLASK_H_FILES): $(FLASK_H_DEPEND)
+$(subst include/,%/,$(FLASK_H_FILES)): $(FLASK_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkflask.sh $(AWK) include $(FLASK_H_DEPEND)
 
-$(AV_H_FILES): $(AV_H_DEPEND)
+$(subst include/,%/,$(AV_H_FILES)): $(AV_H_DEPEND)
 	$(CONFIG_SHELL) policy/mkaccess_vector.sh $(AWK) $(AV_H_DEPEND)
 
 obj-$(CONFIG_XSM_FLASK_POLICY) += policy.o
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.12


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 05:11:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 05:11:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTezx-00088e-TM; Wed, 29 Apr 2020 05:11:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTezw-00088Z-If
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:04 +0000
X-Inumbo-ID: d29a0f04-89d7-11ea-b07b-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d29a0f04-89d7-11ea-b07b-bc764e2007e4;
 Wed, 29 Apr 2020 05:11:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=HgHwnTN63wAU1ClUc2YytQaA/zag4phPtU14KiERgnc=; b=6dz0dSNhzsllQR0cgdUIkMtoOf
 +pT1vKkvjygOVHmRHy+ceY6yZtB7IuDO2oqMB1H+3ixTfRSld0SiH11SHwrhgUp/cA3eMV+Jbl6Cq
 9yD1E6OclzqbFfSVynrP+9V5ORt/q8urkMUSg7z6z8x8Ow8HRBSddyyRgjinKJt4rLRY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTezv-0000LZ-5O
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTezv-0002Fq-1i
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/S3: Use percpu_traps_init() rather than opencoding
 SYSCALL/SYSENTER restoration
Message-Id: <E1jTezv-0002Fq-1i@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 05:11:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d059260755fdec1614136b39fc65ddc48f5fd729
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 20 14:54:30 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Mon Apr 27 21:30:58 2020 +0100

    x86/S3: Use percpu_traps_init() rather than opencoding SYSCALL/SYSENTER restoration
    
    This make the S3 BSP path consistent with AP paths, and reduces the amount of
    state needing stashing specially.  Also, it takes care of re-setting up Xen's
    LBR configuration if requested, which was missing previously.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/acpi/power.c   |  3 +++
 xen/arch/x86/acpi/suspend.c | 24 ------------------------
 2 files changed, 3 insertions(+), 24 deletions(-)

diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c
index 3ad7dfc9a3..6dfd4c7891 100644
--- a/xen/arch/x86/acpi/power.c
+++ b/xen/arch/x86/acpi/power.c
@@ -297,6 +297,9 @@ static int enter_state(u32 state)
     ci->spec_ctrl_flags |= (default_spec_ctrl_flags & SCF_ist_wrmsr);
     spec_ctrl_exit_idle(ci);
 
+    /* (re)initialise SYSCALL/SYSENTER state, amongst other things. */
+    percpu_traps_init();
+
  done:
     spin_debug_enable();
     local_irq_restore(flags);
diff --git a/xen/arch/x86/acpi/suspend.c b/xen/arch/x86/acpi/suspend.c
index 32d0f71ffd..3c1a3cbb34 100644
--- a/xen/arch/x86/acpi/suspend.c
+++ b/xen/arch/x86/acpi/suspend.c
@@ -15,8 +15,6 @@
 #include <asm/xstate.h>
 #include <xen/hypercall.h>
 
-static unsigned long saved_lstar, saved_cstar;
-static unsigned long saved_sysenter_esp, saved_sysenter_eip;
 static unsigned long saved_fs_base, saved_gs_base, saved_kernel_gs_base;
 static uint64_t saved_xcr0;
 
@@ -25,14 +23,6 @@ void save_rest_processor_state(void)
     saved_fs_base = rdfsbase();
     saved_gs_base = rdgsbase();
     rdmsrl(MSR_SHADOW_GS_BASE, saved_kernel_gs_base);
-    rdmsrl(MSR_CSTAR, saved_cstar);
-    rdmsrl(MSR_LSTAR, saved_lstar);
-
-    if ( cpu_has_sep )
-    {
-        rdmsrl(MSR_IA32_SYSENTER_ESP, saved_sysenter_esp);
-        rdmsrl(MSR_IA32_SYSENTER_EIP, saved_sysenter_eip);
-    }
 
     if ( cpu_has_xsave )
         saved_xcr0 = get_xcr0();
@@ -46,24 +36,10 @@ void restore_rest_processor_state(void)
     /* Restore full CR4 (inc MCE) now that the IDT is in place. */
     write_cr4(mmu_cr4_features);
 
-    /* Recover syscall MSRs */
-    wrmsrl(MSR_LSTAR, saved_lstar);
-    wrmsrl(MSR_CSTAR, saved_cstar);
-    wrmsrl(MSR_STAR, XEN_MSR_STAR);
-    wrmsrl(MSR_SYSCALL_MASK, XEN_SYSCALL_MASK);
-
     wrfsbase(saved_fs_base);
     wrgsbase(saved_gs_base);
     wrmsrl(MSR_SHADOW_GS_BASE, saved_kernel_gs_base);
 
-    if ( cpu_has_sep )
-    {
-        /* Recover sysenter MSRs */
-        wrmsrl(MSR_IA32_SYSENTER_ESP, saved_sysenter_esp);
-        wrmsrl(MSR_IA32_SYSENTER_EIP, saved_sysenter_eip);
-        wrmsr(MSR_IA32_SYSENTER_CS, __HYPERVISOR_CS, 0);
-    }
-
     if ( cpu_has_xsave && !set_xcr0(saved_xcr0) )
         BUG();
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 05:11:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 05:11:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTf07-0008GI-V3; Wed, 29 Apr 2020 05:11:15 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTf06-0008GA-6q
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:14 +0000
X-Inumbo-ID: d8d5deb6-89d7-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id d8d5deb6-89d7-11ea-9887-bc764e2007e4;
 Wed, 29 Apr 2020 05:11:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=IZkH8DLIY8WkSCaqF1JWgZufTYNrr9zMIkNhBJ81JoI=; b=lv5SP2S9wk8k7yHRASUI23Lw0d
 dX0g4uJN0Y8SeHM7FBDg2SxfEs8goJWvmUxVVIVoIypQHiCCICP+bLa4XIbq9sDy9eAU9cXoQ9M2Z
 RtqYq7yoQaKy5mT95oRhCH/sjs1PLxuUz7FX3YOHf4gp70S23MquBRvnwYRstmQtbM6Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTf05-0000Lf-Io
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:13 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTf05-0002H7-Fo
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:13 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/pvh: Override opt_console_xen earlier
Message-Id: <E1jTf05-0002H7-Fo@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 05:11:13 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit dd0882f912005b56653013025ebd160862e360ad
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 27 13:19:15 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Mon Apr 27 21:31:48 2020 +0100

    x86/pvh: Override opt_console_xen earlier
    
    This allows printk() to work from the start of day, and backtraces from as
    early as the IDT is set up.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/boot/head.S | 3 +++
 xen/arch/x86/setup.c     | 5 -----
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 153a53f250..150f7f90a2 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -402,6 +402,9 @@ __pvh_start:
 
         mov     %ebx, sym_esi(pvh_start_info_pa)
 
+        /* Force xen console.  Will revert to user choice in init code. */
+        movb    $-1, sym_esi(opt_console_xen)
+
         /* Prepare gdt and segments */
         add     %esi, sym_esi(gdt_boot_base)
         lgdt    sym_esi(gdt_boot_descr)
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 885919d5c3..eb56d78c2f 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -728,11 +728,6 @@ void __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( pvh_boot )
     {
-        /*
-         * Force xen console to be enabled. We will reset it later in console
-         * initialisation code.
-         */
-        opt_console_xen = -1;
         ASSERT(mbi_p == 0);
         pvh_init(&mbi, &mod);
     }
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 05:11:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 05:11:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTf0I-0008I3-0U; Wed, 29 Apr 2020 05:11:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTf0G-0008Hq-8D
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:24 +0000
X-Inumbo-ID: ded690ee-89d7-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id ded690ee-89d7-11ea-b9cf-bc764e2007e4;
 Wed, 29 Apr 2020 05:11:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=NEJehXqNGG7v9/s/b35Wl8CtUbasSi/haW9++IY8lIc=; b=t3y9U6eGLRvq4zEGO5WSFMKx2e
 kWEgWYgQ7l15nvxPwOI968eAP2919lU6G9XTFaLoXISg3aQ2hNMG7FxUS2GOYwKCDNUMjmzXxhT3d
 p/Rvl3GBX7Q+48nlTd9D/rFQCCUppK/jO3U0nN8q4qqjyYBMxzwSil1UbWREmVsTO7JE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTf0F-0000MY-NF
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTf0F-0002I9-M3
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 05:11:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] MAINTAINERS: list myself as mini-os reviewer
Message-Id: <E1jTf0F-0002I9-M3@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 05:11:23 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 2add344e6a4ef690871157b87b0e7d52bc6db9e4
Author:     Wei Liu <wl@xen.org>
AuthorDate: Tue Apr 28 12:23:46 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Tue Apr 28 12:34:33 2020 +0100

    MAINTAINERS: list myself as mini-os reviewer
    
    I probably don't have much time to actually review patches, but I do
    want to be CC'ed such that I can commit patches in a timely manner.
    
    Signed-off-by: Wei Liu <wl@xen.org>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 MAINTAINERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 8a4c869704..e374816755 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -374,6 +374,7 @@ F:	xen/test/livepatch/*
 
 MINI-OS
 M:	Samuel Thibault <samuel.thibault@ens-lyon.org>
+R:	Wei Liu <wl@xen.org>
 S:	Supported
 L:	minios-devel@lists.xenproject.org
 T:	git https://xenbits.xenproject.org/git-http/mini-os.git
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 07:11:14 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 07:11:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTgs9-00030u-Mr; Wed, 29 Apr 2020 07:11:09 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTgs8-0002vE-6R
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:08 +0000
X-Inumbo-ID: 986a931a-89e8-11ea-9916-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 986a931a-89e8-11ea-9916-12813bfff9fa;
 Wed, 29 Apr 2020 07:11:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=hN3zmXUSk+4S4/8+gn0h621r46dOhk5GghgIwDZarck=; b=ey+od+z/xk7smPihWHKHDNPwfE
 6UtkJs6boQGf1DD47N3trt0uf5fCl58s1ikZNVQm3p6b1ApcvvbzXy7lB0I0Mjxi4Sj0FZXll00ao
 49P1wa5Wb7ctvyAXhGpv0w4TVTSqhgp/LqhUtnpJ79WD//ATV3ws0HcDm3jywjh5UwQ8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTgs6-0002cm-Va
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:06 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTgs6-0005Nq-Sy
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:06 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/tlb: introduce a flush HVM ASIDs flag
Message-Id: <E1jTgs6-0005Nq-Sy@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 07:11:06 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3174835ba825427ab49177ef710657a226fdab01
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Wed Apr 29 09:04:40 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 29 09:04:40 2020 +0200

    x86/tlb: introduce a flush HVM ASIDs flag
    
    Introduce a specific flag to request a HVM guest linear TLB flush,
    which is an ASID/VPID tickle that forces a guest linear to guest
    physical TLB flush for all HVM guests.
    
    This was previously unconditionally done in each pre_flush call, but
    that's not required: HVM guests not using shadow don't require linear
    TLB flushes as Xen doesn't modify the pages tables the guest runs on
    in that case (ie: when using HAP). Note that shadow paging code
    already takes care of issuing the necessary flushes when the shadow
    page tables are modified.
    
    In order to keep the previous behavior modify all shadow code TLB
    flushes to also flush the guest linear to physical TLB if the guest is
    HVM. I haven't looked at each specific shadow code TLB flush in order
    to figure out whether it actually requires a guest TLB flush or not,
    so there might be room for improvement in that regard.
    
    Also perform ASID/VPID flushes when modifying the p2m tables as it's a
    requirement for AMD hardware. Finally keep the flush in
    switch_cr3_cr4, as it's not clear whether code could rely on
    switch_cr3_cr4 also performing a guest linear TLB flush. A following
    patch can remove the ASID/VPID tickle from switch_cr3_cr4 if found to
    not be necessary.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/flushtlb.c          | 23 +++++++++++++++++++++--
 xen/arch/x86/mm/hap/hap.c        |  8 ++++----
 xen/arch/x86/mm/hap/nested_hap.c |  2 +-
 xen/arch/x86/mm/p2m-pt.c         |  5 +++--
 xen/arch/x86/mm/paging.c         |  2 +-
 xen/arch/x86/mm/shadow/common.c  | 18 +++++++++---------
 xen/arch/x86/mm/shadow/hvm.c     |  2 +-
 xen/arch/x86/mm/shadow/multi.c   | 22 ++++++++++++++--------
 xen/include/asm-x86/flushtlb.h   |  9 +++++++++
 9 files changed, 63 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/flushtlb.c b/xen/arch/x86/flushtlb.c
index 03f92c23dc..0c40b5d273 100644
--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2003-2006, K A Fraser
  */
 
+#include <xen/paging.h>
 #include <xen/sched.h>
 #include <xen/smp.h>
 #include <xen/softirq.h>
@@ -59,8 +60,6 @@ static u32 pre_flush(void)
         raise_softirq(NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ);
 
  skip_clocktick:
-    hvm_flush_guest_tlbs();
-
     return t2;
 }
 
@@ -118,6 +117,7 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
     local_irq_save(flags);
 
     t = pre_flush();
+    hvm_flush_guest_tlbs();
 
     old_cr4 = read_cr4();
     ASSERT(!(old_cr4 & X86_CR4_PCIDE) || !(old_cr4 & X86_CR4_PGE));
@@ -221,6 +221,9 @@ unsigned int flush_area_local(const void *va, unsigned int flags)
             do_tlb_flush();
     }
 
+    if ( flags & FLUSH_HVM_ASID_CORE )
+        hvm_flush_guest_tlbs();
+
     if ( flags & FLUSH_CACHE )
     {
         const struct cpuinfo_x86 *c = &current_cpu_data;
@@ -254,3 +257,19 @@ unsigned int flush_area_local(const void *va, unsigned int flags)
 
     return flags;
 }
+
+unsigned int guest_flush_tlb_flags(const struct domain *d)
+{
+    bool shadow = paging_mode_shadow(d);
+    bool asid = is_hvm_domain(d) && (cpu_has_svm || shadow);
+
+    return (shadow ? FLUSH_TLB : 0) | (asid ? FLUSH_HVM_ASID_CORE : 0);
+}
+
+void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask)
+{
+    unsigned int flags = guest_flush_tlb_flags(d);
+
+    if ( flags )
+        flush_mask(mask, flags);
+}
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 11829e7aad..580d1c2164 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -118,7 +118,7 @@ int hap_track_dirty_vram(struct domain *d,
             p2m_change_type_range(d, begin_pfn, begin_pfn + nr,
                                   p2m_ram_rw, p2m_ram_logdirty);
 
-            flush_tlb_mask(d->dirty_cpumask);
+            guest_flush_tlb_mask(d, d->dirty_cpumask);
 
             memset(dirty_bitmap, 0xff, size); /* consider all pages dirty */
         }
@@ -205,7 +205,7 @@ static int hap_enable_log_dirty(struct domain *d, bool_t log_global)
          * to be read-only, or via hardware-assisted log-dirty.
          */
         p2m_change_entry_type_global(d, p2m_ram_rw, p2m_ram_logdirty);
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     }
     return 0;
 }
@@ -234,7 +234,7 @@ static void hap_clean_dirty_bitmap(struct domain *d)
      * be read-only, or via hardware-assisted log-dirty.
      */
     p2m_change_entry_type_global(d, p2m_ram_rw, p2m_ram_logdirty);
-    flush_tlb_mask(d->dirty_cpumask);
+    guest_flush_tlb_mask(d, d->dirty_cpumask);
 }
 
 /************************************************/
@@ -812,7 +812,7 @@ hap_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn, l1_pgentry_t *p,
 
     safe_write_pte(p, new);
     if ( old_flags & _PAGE_PRESENT )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     paging_unlock(d);
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index abe5958a52..f92ddc5206 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -84,7 +84,7 @@ nestedp2m_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn,
     safe_write_pte(p, new);
 
     if (old_flags & _PAGE_PRESENT)
-        flush_tlb_mask(p2m->dirty_cpumask);
+        guest_flush_tlb_mask(d, p2m->dirty_cpumask);
 
     paging_unlock(d);
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index eb66077496..5c0501794e 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -866,11 +866,12 @@ static void p2m_pt_change_entry_type_global(struct p2m_domain *p2m,
     l1_pgentry_t *tab;
     unsigned long gfn = 0;
     unsigned int i, changed;
+    const struct domain *d = p2m->domain;
 
     if ( pagetable_get_pfn(p2m_get_pagetable(p2m)) == 0 )
         return;
 
-    ASSERT(hap_enabled(p2m->domain));
+    ASSERT(hap_enabled(d));
 
     tab = map_domain_page(pagetable_get_mfn(p2m_get_pagetable(p2m)));
     for ( changed = i = 0; i < (1 << PAGETABLE_ORDER); ++i )
@@ -896,7 +897,7 @@ static void p2m_pt_change_entry_type_global(struct p2m_domain *p2m,
     unmap_domain_page(tab);
 
     if ( changed )
-         flush_tlb_mask(p2m->domain->dirty_cpumask);
+         guest_flush_tlb_mask(d, d->dirty_cpumask);
 }
 
 static int p2m_pt_change_entry_type_range(struct p2m_domain *p2m,
diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c
index f5ff5d67a0..7c265fb5f3 100644
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -613,7 +613,7 @@ void paging_log_dirty_range(struct domain *d,
 
     p2m_unlock(p2m);
 
-    flush_tlb_mask(d->dirty_cpumask);
+    guest_flush_tlb_mask(d, d->dirty_cpumask);
 }
 
 /*
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 3746dd6fb0..7ed8e7b71b 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -368,7 +368,7 @@ static int oos_remove_write_access(struct vcpu *v, mfn_t gmfn,
     }
 
     if ( ftlb )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     return 0;
 }
@@ -946,7 +946,7 @@ static void _shadow_prealloc(struct domain *d, unsigned int pages)
                 /* See if that freed up enough space */
                 if ( d->arch.paging.shadow.free_pages >= pages )
                 {
-                    flush_tlb_mask(d->dirty_cpumask);
+                    guest_flush_tlb_mask(d, d->dirty_cpumask);
                     return;
                 }
             }
@@ -1000,7 +1000,7 @@ static void shadow_blow_tables(struct domain *d)
                                pagetable_get_mfn(v->arch.shadow_table[i]), 0);
 
     /* Make sure everyone sees the unshadowings */
-    flush_tlb_mask(d->dirty_cpumask);
+    guest_flush_tlb_mask(d, d->dirty_cpumask);
 }
 
 void shadow_blow_tables_per_domain(struct domain *d)
@@ -1103,7 +1103,7 @@ mfn_t shadow_alloc(struct domain *d,
         if ( unlikely(!cpumask_empty(&mask)) )
         {
             perfc_incr(shadow_alloc_tlbflush);
-            flush_tlb_mask(&mask);
+            guest_flush_tlb_mask(d, &mask);
         }
         /* Now safe to clear the page for reuse */
         clear_domain_page(page_to_mfn(sp));
@@ -2296,7 +2296,7 @@ void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all)
 
     /* Need to flush TLBs now, so that linear maps are safe next time we
      * take a fault. */
-    flush_tlb_mask(d->dirty_cpumask);
+    guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     paging_unlock(d);
 }
@@ -3013,7 +3013,7 @@ static void sh_unshadow_for_p2m_change(struct domain *d, unsigned long gfn,
         {
             sh_remove_all_shadows_and_parents(d, mfn);
             if ( sh_remove_all_mappings(d, mfn, _gfn(gfn)) )
-                flush_tlb_mask(d->dirty_cpumask);
+                guest_flush_tlb_mask(d, d->dirty_cpumask);
         }
     }
 
@@ -3053,7 +3053,7 @@ static void sh_unshadow_for_p2m_change(struct domain *d, unsigned long gfn,
                 }
                 omfn = mfn_add(omfn, 1);
             }
-            flush_tlb_mask(&flushmask);
+            guest_flush_tlb_mask(d, &flushmask);
 
             if ( npte )
                 unmap_domain_page(npte);
@@ -3340,7 +3340,7 @@ int shadow_track_dirty_vram(struct domain *d,
         }
     }
     if ( flush_tlb )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     goto out;
 
 out_sl1ma:
@@ -3410,7 +3410,7 @@ bool shadow_flush_tlb(bool (*flush_vcpu)(void *ctxt, struct vcpu *v),
     }
 
     /* Flush TLBs on all CPUs with dirty vcpu state. */
-    flush_tlb_mask(mask);
+    guest_flush_tlb_mask(d, mask);
 
     /* Done. */
     for_each_vcpu ( d, v )
diff --git a/xen/arch/x86/mm/shadow/hvm.c b/xen/arch/x86/mm/shadow/hvm.c
index 1e6024c71f..608360daec 100644
--- a/xen/arch/x86/mm/shadow/hvm.c
+++ b/xen/arch/x86/mm/shadow/hvm.c
@@ -591,7 +591,7 @@ static void validate_guest_pt_write(struct vcpu *v, mfn_t gmfn,
 
     if ( rc & SHADOW_SET_FLUSH )
         /* Need to flush TLBs to pick up shadow PT changes */
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     if ( rc & SHADOW_SET_ERROR )
     {
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 5368adf474..7d16d1c1a9 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -85,6 +85,12 @@ const char *const fetch_type_names[] = {
 };
 #endif
 
+/* Helper to perform a local TLB flush. */
+static void sh_flush_local(const struct domain *d)
+{
+    flush_local(guest_flush_tlb_flags(d));
+}
+
 /**************************************************************************/
 /* Hash table mapping from guest pagetables to shadows
  *
@@ -3075,7 +3081,7 @@ static int sh_page_fault(struct vcpu *v,
         perfc_incr(shadow_rm_write_flush_tlb);
         smp_wmb();
         atomic_inc(&d->arch.paging.shadow.gtable_dirty_version);
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     }
 
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
@@ -3584,7 +3590,7 @@ static bool sh_invlpg(struct vcpu *v, unsigned long linear)
     if ( mfn_to_page(sl1mfn)->u.sh.type
          == SH_type_fl1_shadow )
     {
-        flush_tlb_local();
+        sh_flush_local(v->domain);
         return false;
     }
 
@@ -3798,7 +3804,7 @@ sh_update_linear_entries(struct vcpu *v)
      * linear pagetable to read a top-level shadow page table entry. But,
      * without this change, it would fetch the wrong value due to a stale TLB.
      */
-    flush_tlb_local();
+    sh_flush_local(d);
 }
 
 
@@ -3998,7 +4004,7 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
      * (old) shadow linear maps in the writeable mapping heuristics. */
 #if GUEST_PAGING_LEVELS == 2
     if ( sh_remove_write_access(d, gmfn, 2, 0) != 0 )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     sh_set_toplevel_shadow(v, 0, gmfn, SH_type_l2_shadow);
 #elif GUEST_PAGING_LEVELS == 3
     /* PAE guests have four shadow_table entries, based on the
@@ -4022,7 +4028,7 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
             }
         }
         if ( flush )
-            flush_tlb_mask(d->dirty_cpumask);
+            guest_flush_tlb_mask(d, d->dirty_cpumask);
         /* Now install the new shadows. */
         for ( i = 0; i < 4; i++ )
         {
@@ -4043,7 +4049,7 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
     }
 #elif GUEST_PAGING_LEVELS == 4
     if ( sh_remove_write_access(d, gmfn, 4, 0) != 0 )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     sh_set_toplevel_shadow(v, 0, gmfn, SH_type_l4_shadow);
     if ( !shadow_mode_external(d) && !is_pv_32bit_domain(d) )
     {
@@ -4494,7 +4500,7 @@ static void sh_pagetable_dying(paddr_t gpa)
         }
     }
     if ( flush )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     /* Remember that we've seen the guest use this interface, so we
      * can rely on it using it in future, instead of guessing at
@@ -4531,7 +4537,7 @@ static void sh_pagetable_dying(paddr_t gpa)
         mfn_to_page(gmfn)->pagetable_dying = true;
         shadow_unhook_mappings(d, smfn, 1/* user pages only */);
         /* Now flush the TLB: we removed toplevel mappings. */
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     }
 
     /* Remember that we've seen the guest use this interface, so we
diff --git a/xen/include/asm-x86/flushtlb.h b/xen/include/asm-x86/flushtlb.h
index 2cfe4e6e97..798049b6ad 100644
--- a/xen/include/asm-x86/flushtlb.h
+++ b/xen/include/asm-x86/flushtlb.h
@@ -105,6 +105,12 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4);
 #define FLUSH_VCPU_STATE 0x1000
  /* Flush the per-cpu root page table */
 #define FLUSH_ROOT_PGTBL 0x2000
+#if CONFIG_HVM
+ /* Flush all HVM guests linear TLB (using ASID/VPID) */
+#define FLUSH_HVM_ASID_CORE 0x4000
+#else
+#define FLUSH_HVM_ASID_CORE 0
+#endif
 
 /* Flush local TLBs/caches. */
 unsigned int flush_area_local(const void *va, unsigned int flags);
@@ -159,4 +165,7 @@ static inline int clean_dcache_va_range(const void *p, unsigned long size)
     return clean_and_invalidate_dcache_va_range(p, size);
 }
 
+unsigned int guest_flush_tlb_flags(const struct domain *d);
+void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask);
+
 #endif /* __FLUSHTLB_H__ */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 07:11:19 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 07:11:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTgsJ-00031O-Of; Wed, 29 Apr 2020 07:11:19 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTgsI-00031I-D2
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:18 +0000
X-Inumbo-ID: 9e7f76da-89e8-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 9e7f76da-89e8-11ea-b9cf-bc764e2007e4;
 Wed, 29 Apr 2020 07:11:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GudGk2h0K00JgatGh5ZHQ0G3qAPgR5Pr/Z/7H55UUSc=; b=UrmzTUjFyErB9+TNMEurYGyrUF
 9obus0K11+v64YotGYxiGqY8unkYRvlMa2AK9Jx8CiPGsQK3gUUsizjWaQ1ax61xrZODpfwisM1dE
 CPwbY0H2PbjXbJs3Q4j4n98fo5H6gNB56woDNmqvpz4HoSlyk6FcPShcqnrLESyho84U=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTgsH-0002cp-67
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:17 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTgsH-0005Oz-4i
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:17 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/tlb: allow disabling the TLB clock
Message-Id: <E1jTgsH-0005Oz-4i@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 07:11:17 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c2b4e23fdda41e7e8da316e02c94f063752e04cc
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Wed Apr 29 09:07:32 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 29 09:07:32 2020 +0200

    x86/tlb: allow disabling the TLB clock
    
    The TLB clock is helpful when running Xen on bare metal because when
    doing a TLB flush each CPU is IPI'ed and can keep a timestamp of the
    last flush.
    
    This is not the case however when Xen is running virtualized, and the
    underlying hypervisor provides mechanism to assist in performing TLB
    flushes: Xen itself for example offers a HVMOP_flush_tlbs hypercall in
    order to perform a TLB flush without having to IPI each CPU. When
    using such mechanisms it's no longer possible to keep a timestamp of
    the flushes on each CPU, as they are performed by the underlying
    hypervisor.
    
    Offer a boolean in order to signal Xen that the timestamped TLB
    shouldn't be used. This avoids keeping the timestamps of the flushes,
    and also forces NEED_FLUSH to always return true.
    
    No functional change intended, as this change doesn't introduce any
    user that disables the timestamped TLB.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/flushtlb.c        | 19 +++++++++++++------
 xen/include/asm-x86/flushtlb.h | 17 ++++++++++++++++-
 2 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/flushtlb.c b/xen/arch/x86/flushtlb.c
index 0c40b5d273..25798df50f 100644
--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -33,6 +33,9 @@
 u32 tlbflush_clock = 1U;
 DEFINE_PER_CPU(u32, tlbflush_time);
 
+/* Signals whether the TLB flush clock is in use. */
+bool __read_mostly tlb_clk_enabled = true;
+
 /*
  * pre_flush(): Increment the virtual TLB-flush clock. Returns new clock value.
  * 
@@ -83,12 +86,13 @@ static void post_flush(u32 t)
 static void do_tlb_flush(void)
 {
     unsigned long flags, cr4;
-    u32 t;
+    u32 t = 0;
 
     /* This non-reentrant function is sometimes called in interrupt context. */
     local_irq_save(flags);
 
-    t = pre_flush();
+    if ( tlb_clk_enabled )
+        t = pre_flush();
 
     if ( use_invpcid )
         invpcid_flush_all();
@@ -100,7 +104,8 @@ static void do_tlb_flush(void)
     else
         write_cr3(read_cr3());
 
-    post_flush(t);
+    if ( tlb_clk_enabled )
+        post_flush(t);
 
     local_irq_restore(flags);
 }
@@ -108,7 +113,7 @@ static void do_tlb_flush(void)
 void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
 {
     unsigned long flags, old_cr4;
-    u32 t;
+    u32 t = 0;
 
     /* Throughout this function we make this assumption: */
     ASSERT(!(cr4 & X86_CR4_PCIDE) || !(cr4 & X86_CR4_PGE));
@@ -116,7 +121,8 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
     /* This non-reentrant function is sometimes called in interrupt context. */
     local_irq_save(flags);
 
-    t = pre_flush();
+    if ( tlb_clk_enabled )
+        t = pre_flush();
     hvm_flush_guest_tlbs();
 
     old_cr4 = read_cr4();
@@ -169,7 +175,8 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
     if ( cr4 & X86_CR4_PCIDE )
         invpcid_flush_all_nonglobals();
 
-    post_flush(t);
+    if ( tlb_clk_enabled )
+        post_flush(t);
 
     local_irq_restore(flags);
 }
diff --git a/xen/include/asm-x86/flushtlb.h b/xen/include/asm-x86/flushtlb.h
index 798049b6ad..8639427cce 100644
--- a/xen/include/asm-x86/flushtlb.h
+++ b/xen/include/asm-x86/flushtlb.h
@@ -21,10 +21,21 @@ extern u32 tlbflush_clock;
 /* Time at which each CPU's TLB was last flushed. */
 DECLARE_PER_CPU(u32, tlbflush_time);
 
-#define tlbflush_current_time() tlbflush_clock
+/* TLB clock is in use. */
+extern bool tlb_clk_enabled;
+
+static inline uint32_t tlbflush_current_time(void)
+{
+    /* Returning 0 from tlbflush_current_time will always force a flush. */
+    return tlb_clk_enabled ? tlbflush_clock : 0;
+}
 
 static inline void page_set_tlbflush_timestamp(struct page_info *page)
 {
+    /* Avoid the write if the TLB clock is disabled. */
+    if ( !tlb_clk_enabled )
+        return;
+
     /*
      * Prevent storing a stale time stamp, which could happen if an update
      * to tlbflush_clock plus a subsequent flush IPI happen between the
@@ -67,6 +78,10 @@ static inline void tlbflush_filter(cpumask_t *mask, uint32_t page_timestamp)
 {
     unsigned int cpu;
 
+    /* Short-circuit: there's no need to iterate if the clock is disabled. */
+    if ( !tlb_clk_enabled )
+        return;
+
     for_each_cpu ( cpu, mask )
         if ( !NEED_FLUSH(per_cpu(tlbflush_time, cpu), page_timestamp) )
             __cpumask_clear_cpu(cpu, mask);
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 07:11:29 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 07:11:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTgsT-000332-QI; Wed, 29 Apr 2020 07:11:29 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTgsS-00032q-5B
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:28 +0000
X-Inumbo-ID: a47ead80-89e8-11ea-b07b-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id a47ead80-89e8-11ea-b07b-bc764e2007e4;
 Wed, 29 Apr 2020 07:11:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=oX+EqraOYhW/0CnHahn+EU/YvaoXcmlOq0wjxUsE7LA=; b=pZkMGTLEd8hCz7pahS/Ils+HVQ
 CwG31PV5ZIC9/+HBb9i9bagpv/LDJhbcRr6bxTSF0447Ap7qSk7j2gGOGNlDl9OcCMKEVX1x+i2s2
 6zKfMbcyQGZh9dKLEU7PBQOZw4OFmnLcn6VxPF2H+kCaT6u8cFLWUKha3n//+5Tv/+hI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTgsR-0002df-96
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:27 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTgsR-0005QB-7y
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 07:11:27 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/tlb: use Xen L0 assisted TLB flush when available
Message-Id: <E1jTgsR-0005QB-7y@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 07:11:27 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e9aca9470ed86966f9c0fd0db85132ff28d652c4
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Wed Apr 29 09:10:19 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 29 09:10:19 2020 +0200

    x86/tlb: use Xen L0 assisted TLB flush when available
    
    Use Xen's L0 HVMOP_flush_tlbs hypercall in order to perform flushes.
    This greatly increases the performance of TLB flushes when running
    with a high amount of vCPUs as a Xen guest, and is specially important
    when running in shim mode.
    
    The following figures are from a PV guest running `make -j32 xen` in
    shim mode with 32 vCPUs and HAP.
    
    Using x2APIC and ALLBUT shorthand:
    real    4m35.973s
    user    4m35.110s
    sys     36m24.117s
    
    Using L0 assisted flush:
    real    1m2.596s
    user    4m34.818s
    sys     5m16.374s
    
    The implementation adds a new hook to hypervisor_ops so other
    enlightenments can also implement such assisted flush just by filling
    the hook.
    
    Note that the Xen implementation completely ignores the dirty CPU mask
    and the linear address passed in, and always performs a global TLB
    flush on all vCPUs. This is a limitation of the hypercall provided by
    Xen. Also note that local TLB flushes are not performed using the
    assisted TLB flush, only remote ones.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/guest/hypervisor.c        | 14 ++++++++++++++
 xen/arch/x86/guest/xen/xen.c           |  6 ++++++
 xen/arch/x86/smp.c                     |  7 +++++++
 xen/include/asm-x86/guest/hypervisor.h | 17 +++++++++++++++++
 4 files changed, 44 insertions(+)

diff --git a/xen/arch/x86/guest/hypervisor.c b/xen/arch/x86/guest/hypervisor.c
index 647cdb1367..e46de42ded 100644
--- a/xen/arch/x86/guest/hypervisor.c
+++ b/xen/arch/x86/guest/hypervisor.c
@@ -18,6 +18,7 @@
  *
  * Copyright (c) 2019 Microsoft.
  */
+#include <xen/cpumask.h>
 #include <xen/init.h>
 #include <xen/types.h>
 
@@ -51,6 +52,10 @@ void __init hypervisor_setup(void)
 {
     if ( ops.setup )
         ops.setup();
+
+    /* Check if assisted flush is available and disable the TLB clock if so. */
+    if ( !hypervisor_flush_tlb(cpumask_of(smp_processor_id()), NULL, 0) )
+        tlb_clk_enabled = false;
 }
 
 int hypervisor_ap_setup(void)
@@ -73,6 +78,15 @@ void __init hypervisor_e820_fixup(struct e820map *e820)
         ops.e820_fixup(e820);
 }
 
+int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
+                         unsigned int order)
+{
+    if ( ops.flush_tlb )
+        return alternative_call(ops.flush_tlb, mask, va, order);
+
+    return -EOPNOTSUPP;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/guest/xen/xen.c b/xen/arch/x86/guest/xen/xen.c
index e74fd1e995..3bc01c8723 100644
--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -324,12 +324,18 @@ static void __init e820_fixup(struct e820map *e820)
         pv_shim_fixup_e820(e820);
 }
 
+static int flush_tlb(const cpumask_t *mask, const void *va, unsigned int order)
+{
+    return xen_hypercall_hvm_op(HVMOP_flush_tlbs, NULL);
+}
+
 static const struct hypervisor_ops __initconstrel ops = {
     .name = "Xen",
     .setup = setup,
     .ap_setup = ap_setup,
     .resume = resume,
     .e820_fixup = e820_fixup,
+    .flush_tlb = flush_tlb,
 };
 
 const struct hypervisor_ops *__init xg_probe(void)
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index bcead5d01b..1d9fec65de 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -15,6 +15,7 @@
 #include <xen/perfc.h>
 #include <xen/spinlock.h>
 #include <asm/current.h>
+#include <asm/guest.h>
 #include <asm/smp.h>
 #include <asm/mc146818rtc.h>
 #include <asm/flushtlb.h>
@@ -268,6 +269,12 @@ void flush_area_mask(const cpumask_t *mask, const void *va, unsigned int flags)
     if ( (flags & ~FLUSH_ORDER_MASK) &&
          !cpumask_subset(mask, cpumask_of(cpu)) )
     {
+        if ( cpu_has_hypervisor &&
+             !(flags & ~(FLUSH_TLB | FLUSH_TLB_GLOBAL | FLUSH_VA_VALID |
+                         FLUSH_ORDER_MASK)) &&
+             !hypervisor_flush_tlb(mask, va, (flags - 1) & FLUSH_ORDER_MASK) )
+            return;
+
         spin_lock(&flush_lock);
         cpumask_and(&flush_cpumask, mask, &cpu_online_map);
         cpumask_clear_cpu(cpu, &flush_cpumask);
diff --git a/xen/include/asm-x86/guest/hypervisor.h b/xen/include/asm-x86/guest/hypervisor.h
index ade10e74ea..77a1d21824 100644
--- a/xen/include/asm-x86/guest/hypervisor.h
+++ b/xen/include/asm-x86/guest/hypervisor.h
@@ -19,6 +19,8 @@
 #ifndef __X86_HYPERVISOR_H__
 #define __X86_HYPERVISOR_H__
 
+#include <xen/cpumask.h>
+
 #include <asm/e820.h>
 
 struct hypervisor_ops {
@@ -32,6 +34,8 @@ struct hypervisor_ops {
     void (*resume)(void);
     /* Fix up e820 map */
     void (*e820_fixup)(struct e820map *e820);
+    /* L0 assisted TLB flush */
+    int (*flush_tlb)(const cpumask_t *mask, const void *va, unsigned int order);
 };
 
 #ifdef CONFIG_GUEST
@@ -41,6 +45,14 @@ void hypervisor_setup(void);
 int hypervisor_ap_setup(void);
 void hypervisor_resume(void);
 void hypervisor_e820_fixup(struct e820map *e820);
+/*
+ * L0 assisted TLB flush.
+ * mask: cpumask of the dirty vCPUs that should be flushed.
+ * va: linear address to flush, or NULL for global flushes.
+ * order: order of the linear address pointed by va.
+ */
+int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
+                         unsigned int order);
 
 #else
 
@@ -52,6 +64,11 @@ static inline void hypervisor_setup(void) { ASSERT_UNREACHABLE(); }
 static inline int hypervisor_ap_setup(void) { return 0; }
 static inline void hypervisor_resume(void) { ASSERT_UNREACHABLE(); }
 static inline void hypervisor_e820_fixup(struct e820map *e820) {}
+static inline int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
+                                       unsigned int order)
+{
+    return -EOPNOTSUPP;
+}
 
 #endif  /* CONFIG_GUEST */
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 09:44:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 09:44:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTjGA-0002Gw-FP; Wed, 29 Apr 2020 09:44:06 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTjG9-0002Gr-D9
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:05 +0000
X-Inumbo-ID: f6706fd8-89fd-11ea-b07b-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id f6706fd8-89fd-11ea-b07b-bc764e2007e4;
 Wed, 29 Apr 2020 09:44:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Q4qTCNYD+6YxEWBNO5OFjAA6d1YuMEWWgfD+Wn/Bqic=; b=mT8xhErWmHID1m12bp72+mAGkt
 ECs7WJKZDwJTBNtZRGR5wISKWBTiLIhiAFtg+VwsB/zbJFswep2tGJ8kFlZZPz3NNzGjXp9LkYtkd
 wmtA/cFO8hkCYba4J4c0pIwPtR55ymp3LCKLnkynLYAvjuFJMGjYltN0JVlbKxiW854c=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTjG8-0005yb-6G
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTjG8-0001PW-4t
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/hypervisor: pass flags to hypervisor_flush_tlb
Message-Id: <E1jTjG8-0001PW-4t@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 09:44:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3d2a0c7d58f729ed4f1920e5d41403e8a93301ff
Author:     Wei Liu <wl@xen.org>
AuthorDate: Thu Apr 9 18:41:02 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Wed Apr 29 10:32:18 2020 +0100

    x86/hypervisor: pass flags to hypervisor_flush_tlb
    
    Hyper-V's L0 assisted flush has fine-grained control over what gets
    flushed. We need all the flags available to make the best decisions
    possible.
    
    No functional change because Xen's implementation doesn't care about
    what is passed to it.
    
    Signed-off-by: Wei Liu <liuwe@microsoft.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Paul Durrant <pdurrant@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/guest/hypervisor.c        |  4 ++--
 xen/arch/x86/guest/xen/xen.c           |  2 +-
 xen/arch/x86/smp.c                     |  2 +-
 xen/include/asm-x86/guest/hypervisor.h | 10 +++++-----
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/guest/hypervisor.c b/xen/arch/x86/guest/hypervisor.c
index e46de42ded..366af1d650 100644
--- a/xen/arch/x86/guest/hypervisor.c
+++ b/xen/arch/x86/guest/hypervisor.c
@@ -79,10 +79,10 @@ void __init hypervisor_e820_fixup(struct e820map *e820)
 }
 
 int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
-                         unsigned int order)
+                         unsigned int flags)
 {
     if ( ops.flush_tlb )
-        return alternative_call(ops.flush_tlb, mask, va, order);
+        return alternative_call(ops.flush_tlb, mask, va, flags);
 
     return -EOPNOTSUPP;
 }
diff --git a/xen/arch/x86/guest/xen/xen.c b/xen/arch/x86/guest/xen/xen.c
index 3bc01c8723..2ff63d370a 100644
--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -324,7 +324,7 @@ static void __init e820_fixup(struct e820map *e820)
         pv_shim_fixup_e820(e820);
 }
 
-static int flush_tlb(const cpumask_t *mask, const void *va, unsigned int order)
+static int flush_tlb(const cpumask_t *mask, const void *va, unsigned int flags)
 {
     return xen_hypercall_hvm_op(HVMOP_flush_tlbs, NULL);
 }
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index 1d9fec65de..6f1aaa2106 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -272,7 +272,7 @@ void flush_area_mask(const cpumask_t *mask, const void *va, unsigned int flags)
         if ( cpu_has_hypervisor &&
              !(flags & ~(FLUSH_TLB | FLUSH_TLB_GLOBAL | FLUSH_VA_VALID |
                          FLUSH_ORDER_MASK)) &&
-             !hypervisor_flush_tlb(mask, va, (flags - 1) & FLUSH_ORDER_MASK) )
+             !hypervisor_flush_tlb(mask, va, flags) )
             return;
 
         spin_lock(&flush_lock);
diff --git a/xen/include/asm-x86/guest/hypervisor.h b/xen/include/asm-x86/guest/hypervisor.h
index 77a1d21824..0a6c3b47ab 100644
--- a/xen/include/asm-x86/guest/hypervisor.h
+++ b/xen/include/asm-x86/guest/hypervisor.h
@@ -35,7 +35,7 @@ struct hypervisor_ops {
     /* Fix up e820 map */
     void (*e820_fixup)(struct e820map *e820);
     /* L0 assisted TLB flush */
-    int (*flush_tlb)(const cpumask_t *mask, const void *va, unsigned int order);
+    int (*flush_tlb)(const cpumask_t *mask, const void *va, unsigned int flags);
 };
 
 #ifdef CONFIG_GUEST
@@ -48,11 +48,11 @@ void hypervisor_e820_fixup(struct e820map *e820);
 /*
  * L0 assisted TLB flush.
  * mask: cpumask of the dirty vCPUs that should be flushed.
- * va: linear address to flush, or NULL for global flushes.
- * order: order of the linear address pointed by va.
+ * va: linear address to flush, or NULL for entire address space.
+ * flags: flags for flushing, including the order of va.
  */
 int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
-                         unsigned int order);
+                         unsigned int flags);
 
 #else
 
@@ -65,7 +65,7 @@ static inline int hypervisor_ap_setup(void) { return 0; }
 static inline void hypervisor_resume(void) { ASSERT_UNREACHABLE(); }
 static inline void hypervisor_e820_fixup(struct e820map *e820) {}
 static inline int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
-                                       unsigned int order)
+                                       unsigned int flags)
 {
     return -EOPNOTSUPP;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 09:44:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 09:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTjGK-0002HY-Gy; Wed, 29 Apr 2020 09:44:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTjGJ-0002HO-2T
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:15 +0000
X-Inumbo-ID: fc7c944c-89fd-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id fc7c944c-89fd-11ea-ae69-bc764e2007e4;
 Wed, 29 Apr 2020 09:44:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=+Ihd0EoE2l4/sy1HkJU25JmZJRWZM0R+0av2R2K8WkI=; b=ZWB3+SVMDydylrvSb0cWxq97ko
 3C1g0pLv3oZIrYAiVZTxiS2bUWc6BI1VwSJ//z6s0bu4EqBuR8oeBJuRMljdQXnzSnolza1D1RyoZ
 7QsZId6LaKCiaurIvS+ofPKS48v98ePXTrpsPaVVp+od6Tjmtdl3Lu5Q43z7BhSekCxQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTjGI-0005yh-9G
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTjGI-0001QI-7v
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/hyperv: skeleton for L0 assisted TLB flush
Message-Id: <E1jTjGI-0001QI-7v@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 09:44:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 75550b5fa5a8fa068e35e819d8ba25e0240b20a0
Author:     Wei Liu <wl@xen.org>
AuthorDate: Thu Apr 9 18:41:03 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Wed Apr 29 10:32:29 2020 +0100

    x86/hyperv: skeleton for L0 assisted TLB flush
    
    Implement a basic hook for L0 assisted TLB flush. The hook needs to
    check if prerequisites are met. If they are not met, it returns an error
    number to fall back to native flushes.
    
    Introduce a new variable to indicate if hypercall page is ready.
    
    Signed-off-by: Wei Liu <liuwe@microsoft.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Paul Durrant <pdurrant@amazon.com>
---
 xen/arch/x86/guest/hyperv/Makefile  |  1 +
 xen/arch/x86/guest/hyperv/hyperv.c  | 17 +++++++++++++++
 xen/arch/x86/guest/hyperv/private.h |  4 ++++
 xen/arch/x86/guest/hyperv/tlb.c     | 41 +++++++++++++++++++++++++++++++++++++
 4 files changed, 63 insertions(+)

diff --git a/xen/arch/x86/guest/hyperv/Makefile b/xen/arch/x86/guest/hyperv/Makefile
index 68170109a9..18902c33e9 100644
--- a/xen/arch/x86/guest/hyperv/Makefile
+++ b/xen/arch/x86/guest/hyperv/Makefile
@@ -1 +1,2 @@
 obj-y += hyperv.o
+obj-y += tlb.o
diff --git a/xen/arch/x86/guest/hyperv/hyperv.c b/xen/arch/x86/guest/hyperv/hyperv.c
index 5ad16cf0fe..91a6782cd9 100644
--- a/xen/arch/x86/guest/hyperv/hyperv.c
+++ b/xen/arch/x86/guest/hyperv/hyperv.c
@@ -33,6 +33,8 @@ DEFINE_PER_CPU_READ_MOSTLY(void *, hv_input_page);
 DEFINE_PER_CPU_READ_MOSTLY(void *, hv_vp_assist);
 DEFINE_PER_CPU_READ_MOSTLY(unsigned int, hv_vp_index);
 
+static bool __read_mostly hcall_page_ready;
+
 static uint64_t generate_guest_id(void)
 {
     union hv_guest_os_id id = {};
@@ -119,6 +121,8 @@ static void __init setup_hypercall_page(void)
     BUG_ON(!hypercall_msr.enable);
 
     set_fixmap_x(FIX_X_HYPERV_HCALL, mfn << PAGE_SHIFT);
+
+    hcall_page_ready = true;
 }
 
 static int setup_hypercall_pcpu_arg(void)
@@ -199,11 +203,24 @@ static void __init e820_fixup(struct e820map *e820)
         panic("Unable to reserve Hyper-V hypercall range\n");
 }
 
+static int flush_tlb(const cpumask_t *mask, const void *va,
+                     unsigned int flags)
+{
+    if ( !(ms_hyperv.hints & HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED) )
+        return -EOPNOTSUPP;
+
+    if ( !hcall_page_ready || !this_cpu(hv_input_page) )
+        return -ENXIO;
+
+    return hyperv_flush_tlb(mask, va, flags);
+}
+
 static const struct hypervisor_ops __initconstrel ops = {
     .name = "Hyper-V",
     .setup = setup,
     .ap_setup = ap_setup,
     .e820_fixup = e820_fixup,
+    .flush_tlb = flush_tlb,
 };
 
 /*
diff --git a/xen/arch/x86/guest/hyperv/private.h b/xen/arch/x86/guest/hyperv/private.h
index 956eff831f..509bedaafa 100644
--- a/xen/arch/x86/guest/hyperv/private.h
+++ b/xen/arch/x86/guest/hyperv/private.h
@@ -22,10 +22,14 @@
 #ifndef __XEN_HYPERV_PRIVIATE_H__
 #define __XEN_HYPERV_PRIVIATE_H__
 
+#include <xen/cpumask.h>
 #include <xen/percpu.h>
 
 DECLARE_PER_CPU(void *, hv_input_page);
 DECLARE_PER_CPU(void *, hv_vp_assist);
 DECLARE_PER_CPU(unsigned int, hv_vp_index);
 
+int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
+                     unsigned int flags);
+
 #endif /* __XEN_HYPERV_PRIVIATE_H__  */
diff --git a/xen/arch/x86/guest/hyperv/tlb.c b/xen/arch/x86/guest/hyperv/tlb.c
new file mode 100644
index 0000000000..48f527229e
--- /dev/null
+++ b/xen/arch/x86/guest/hyperv/tlb.c
@@ -0,0 +1,41 @@
+/******************************************************************************
+ * arch/x86/guest/hyperv/tlb.c
+ *
+ * Support for TLB management using hypercalls
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (c) 2020 Microsoft.
+ */
+
+#include <xen/cpumask.h>
+#include <xen/errno.h>
+
+#include "private.h"
+
+int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
+                     unsigned int flags)
+{
+    return -EOPNOTSUPP;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 09:44:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 09:44:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTjGU-0002Ig-Im; Wed, 29 Apr 2020 09:44:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTjGT-0002IY-FG
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:25 +0000
X-Inumbo-ID: 027a7152-89fe-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 027a7152-89fe-11ea-ae69-bc764e2007e4;
 Wed, 29 Apr 2020 09:44:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Osq4JAhjg7KjlRrlojJzaFfhKXK+RjqnJFPEEdZb36s=; b=iZ/SHZNTwyaXLvtOhzJO9wBgXL
 gDhiKbP9Fvnqc/lKVfONIljp2gsWzPEtFbAKcZYs7EjF0Mlq3Y3z5ykNJOsof6QJ7oFWZh5akL/dp
 4NgfOv9RZWmpxXsDiat0RF0Ukgw+msFModYxEe4fGHP36w192dy4njtfaVigAkC+Pkks=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTjGS-0005yv-C9
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTjGS-0001Qu-B3
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 09:44:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/hyperv: L0 assisted TLB flush
Message-Id: <E1jTjGS-0001Qu-B3@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 09:44:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f9bf746258eb53011f863571c7073037202b6743
Author:     Wei Liu <wl@xen.org>
AuthorDate: Thu Apr 9 18:41:04 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Wed Apr 29 10:36:38 2020 +0100

    x86/hyperv: L0 assisted TLB flush
    
    Implement L0 assisted TLB flush for Xen on Hyper-V. It takes advantage
    of several hypercalls:
    
     * HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST
     * HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST_EX
     * HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE
     * HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX
    
    Pick the most efficient hypercall available.
    
    Signed-off-by: Wei Liu <liuwe@microsoft.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Paul Durrant <pdurrant@amazon.com>
---
 xen/arch/x86/guest/hyperv/Makefile  |   1 +
 xen/arch/x86/guest/hyperv/private.h |   8 ++
 xen/arch/x86/guest/hyperv/tlb.c     | 175 +++++++++++++++++++++++++++++++++++-
 xen/arch/x86/guest/hyperv/util.c    |  75 ++++++++++++++++
 4 files changed, 258 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/guest/hyperv/Makefile b/xen/arch/x86/guest/hyperv/Makefile
index 18902c33e9..0e39410968 100644
--- a/xen/arch/x86/guest/hyperv/Makefile
+++ b/xen/arch/x86/guest/hyperv/Makefile
@@ -1,2 +1,3 @@
 obj-y += hyperv.o
 obj-y += tlb.o
+obj-y += util.o
diff --git a/xen/arch/x86/guest/hyperv/private.h b/xen/arch/x86/guest/hyperv/private.h
index 509bedaafa..354fc7f685 100644
--- a/xen/arch/x86/guest/hyperv/private.h
+++ b/xen/arch/x86/guest/hyperv/private.h
@@ -29,7 +29,15 @@ DECLARE_PER_CPU(void *, hv_input_page);
 DECLARE_PER_CPU(void *, hv_vp_assist);
 DECLARE_PER_CPU(unsigned int, hv_vp_index);
 
+static inline unsigned int hv_vp_index(unsigned int cpu)
+{
+    return per_cpu(hv_vp_index, cpu);
+}
+
 int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
                      unsigned int flags);
 
+/* Returns number of banks, -ev if error */
+int cpumask_to_vpset(struct hv_vpset *vpset, const cpumask_t *mask);
+
 #endif /* __XEN_HYPERV_PRIVIATE_H__  */
diff --git a/xen/arch/x86/guest/hyperv/tlb.c b/xen/arch/x86/guest/hyperv/tlb.c
index 48f527229e..1d723d6ee6 100644
--- a/xen/arch/x86/guest/hyperv/tlb.c
+++ b/xen/arch/x86/guest/hyperv/tlb.c
@@ -19,17 +19,190 @@
  * Copyright (c) 2020 Microsoft.
  */
 
+#include <xen/cpu.h>
 #include <xen/cpumask.h>
 #include <xen/errno.h>
 
+#include <asm/guest/hyperv.h>
+#include <asm/guest/hyperv-hcall.h>
+#include <asm/guest/hyperv-tlfs.h>
+
 #include "private.h"
 
+/*
+ * It is possible to encode up to 4096 pages using the lower 12 bits
+ * in an element of gva_list
+ */
+#define HV_TLB_FLUSH_UNIT (4096 * PAGE_SIZE)
+
+static unsigned int fill_gva_list(uint64_t *gva_list, const void *va,
+                                  unsigned int order)
+{
+    unsigned long cur = (unsigned long)va;
+    /* end is 1 past the range to be flushed */
+    unsigned long end = cur + (PAGE_SIZE << order);
+    unsigned int n = 0;
+
+    do {
+        unsigned long diff = end - cur;
+
+        gva_list[n] = cur & PAGE_MASK;
+
+        /*
+         * Use lower 12 bits to encode the number of additional pages
+         * to flush
+         */
+        if ( diff >= HV_TLB_FLUSH_UNIT )
+        {
+            gva_list[n] |= ~PAGE_MASK;
+            cur += HV_TLB_FLUSH_UNIT;
+        }
+        else
+        {
+            gva_list[n] |= (diff - 1) >> PAGE_SHIFT;
+            cur = end;
+        }
+
+        n++;
+    } while ( cur < end );
+
+    return n;
+}
+
+static uint64_t flush_tlb_ex(const cpumask_t *mask, const void *va,
+                             unsigned int flags)
+{
+    struct hv_tlb_flush_ex *flush = this_cpu(hv_input_page);
+    int nr_banks;
+    unsigned int max_gvas, order = (flags - 1) & FLUSH_ORDER_MASK;
+    uint64_t *gva_list;
+
+    if ( !flush || local_irq_is_enabled() )
+    {
+        ASSERT_UNREACHABLE();
+        return ~0ULL;
+    }
+
+    if ( !(ms_hyperv.hints & HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED) )
+        return ~0ULL;
+
+    flush->address_space = 0;
+    flush->flags = HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES;
+    if ( !(flags & FLUSH_TLB_GLOBAL) )
+        flush->flags |= HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY;
+
+    nr_banks = cpumask_to_vpset(&flush->hv_vp_set, mask);
+    if ( nr_banks < 0 )
+        return ~0ULL;
+
+    max_gvas =
+        (PAGE_SIZE - sizeof(*flush) - nr_banks *
+         sizeof(flush->hv_vp_set.bank_contents[0])) /
+        sizeof(uint64_t);       /* gva is represented as uint64_t */
+
+    /*
+     * Flush the entire address space if va is NULL or if there is not
+     * enough space for gva_list.
+     */
+    if ( !va || (PAGE_SIZE << order) / HV_TLB_FLUSH_UNIT > max_gvas )
+        return hv_do_rep_hypercall(HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX, 0,
+                                   nr_banks, virt_to_maddr(flush), 0);
+
+    /*
+     * The calculation of gva_list address requires the structure to
+     * be 64 bits aligned.
+     */
+    BUILD_BUG_ON(sizeof(*flush) % sizeof(uint64_t));
+    gva_list = (uint64_t *)flush + sizeof(*flush) / sizeof(uint64_t) + nr_banks;
+
+    return hv_do_rep_hypercall(HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST_EX,
+                               fill_gva_list(gva_list, va, order),
+                               nr_banks, virt_to_maddr(flush), 0);
+}
+
+/* Maximum number of gvas for hv_tlb_flush */
+#define MAX_GVAS ((PAGE_SIZE - sizeof(struct hv_tlb_flush)) / sizeof(uint64_t))
+
 int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
                      unsigned int flags)
 {
-    return -EOPNOTSUPP;
+    unsigned long irq_flags;
+    struct hv_tlb_flush *flush = this_cpu(hv_input_page);
+    unsigned int order = (flags - 1) & FLUSH_ORDER_MASK;
+    uint64_t ret;
+
+    if ( !flush || cpumask_empty(mask) )
+    {
+        ASSERT_UNREACHABLE();
+        return -EINVAL;
+    }
+
+    /* TODO: may need to check if in #NMI or #MC and fallback to native path */
+
+    local_irq_save(irq_flags);
+
+    flush->address_space = 0;
+    flush->flags = HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES;
+    flush->processor_mask = 0;
+    if ( !(flags & FLUSH_TLB_GLOBAL) )
+        flush->flags |= HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY;
+
+    if ( cpumask_equal(mask, &cpu_online_map) )
+        flush->flags |= HV_FLUSH_ALL_PROCESSORS;
+    else
+    {
+        unsigned int cpu;
+
+        /*
+         * Normally VP indices are in ascending order and match Xen's
+         * idea of CPU ids. Check the last index to see if VP index is
+         * >= 64. If so, we can skip setting up parameters for
+         * non-applicable hypercalls without looking further.
+         */
+        if ( hv_vp_index(cpumask_last(mask)) >= 64 )
+            goto do_ex_hypercall;
+
+        for_each_cpu ( cpu, mask )
+        {
+            unsigned int vpid = hv_vp_index(cpu);
+
+            if ( vpid >= ms_hyperv.max_vp_index )
+            {
+                local_irq_restore(irq_flags);
+                return -ENXIO;
+            }
+
+            if ( vpid >= 64 )
+                goto do_ex_hypercall;
+
+            __set_bit(vpid, &flush->processor_mask);
+        }
+    }
+
+    /*
+     * Flush the entire address space if va is NULL or if there is not
+     * enough space for gva_list.
+     */
+    if ( !va || (PAGE_SIZE << order) / HV_TLB_FLUSH_UNIT > MAX_GVAS )
+        ret = hv_do_hypercall(HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE,
+                              virt_to_maddr(flush), 0);
+    else
+        ret = hv_do_rep_hypercall(HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST,
+                                  fill_gva_list(flush->gva_list, va, order),
+                                  0, virt_to_maddr(flush), 0);
+    goto done;
+
+ do_ex_hypercall:
+    ret = flush_tlb_ex(mask, va, flags);
+
+ done:
+    local_irq_restore(irq_flags);
+
+    return ret & HV_HYPERCALL_RESULT_MASK ? -ENXIO : 0;
 }
 
+#undef MAX_GVAS
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/guest/hyperv/util.c b/xen/arch/x86/guest/hyperv/util.c
new file mode 100644
index 0000000000..bec61c2afd
--- /dev/null
+++ b/xen/arch/x86/guest/hyperv/util.c
@@ -0,0 +1,75 @@
+/******************************************************************************
+ * arch/x86/guest/hyperv/util.c
+ *
+ * Hyper-V utility functions
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (c) 2020 Microsoft.
+ */
+
+#include <xen/cpu.h>
+#include <xen/cpumask.h>
+#include <xen/errno.h>
+
+#include <asm/guest/hyperv.h>
+#include <asm/guest/hyperv-tlfs.h>
+
+#include "private.h"
+
+int cpumask_to_vpset(struct hv_vpset *vpset,
+                     const cpumask_t *mask)
+{
+    int nr = 1;
+    unsigned int cpu, vcpu_bank, vcpu_offset;
+    unsigned int max_banks = ms_hyperv.max_vp_index / 64;
+
+    /* Up to 64 banks can be represented by valid_bank_mask */
+    if ( max_banks > 64 )
+        return -E2BIG;
+
+    /* Clear all banks to avoid flushing unwanted CPUs */
+    for ( vcpu_bank = 0; vcpu_bank < max_banks; vcpu_bank++ )
+        vpset->bank_contents[vcpu_bank] = 0;
+
+    vpset->format = HV_GENERIC_SET_SPARSE_4K;
+
+    for_each_cpu ( cpu, mask )
+    {
+        unsigned int vcpu = hv_vp_index(cpu);
+
+        vcpu_bank = vcpu / 64;
+        vcpu_offset = vcpu % 64;
+
+        __set_bit(vcpu_offset, &vpset->bank_contents[vcpu_bank]);
+
+        if ( vcpu_bank >= nr )
+            nr = vcpu_bank + 1;
+    }
+
+    /* Some banks may be empty but that's ok */
+    vpset->valid_bank_mask = ~0ULL >> (64 - nr);
+
+    return nr;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 12:13:07 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 12:13:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTlaJ-0000aN-9x; Wed, 29 Apr 2020 12:13:03 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTlaI-0000aI-2f
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:13:02 +0000
X-Inumbo-ID: c4cb9363-8a12-11ea-993d-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id c4cb9363-8a12-11ea-993d-12813bfff9fa;
 Wed, 29 Apr 2020 12:13:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Hu4QxO8bn+zvWbkoFtNMebjwz8YyVqAfHa53EYKGe5Q=; b=YK1K+Clwah9kijo1C0OvORxS6A
 3cSFbY3TKPmNapTDTTE4P5JRojxnKraBnveyAxXd9AiDMbkBp4yeE6xvD7eL5FrTF46fs0fA2t/AM
 ffw3Y0D/WxyhJqEjeWuPNAQ0Uv26TU9jVz7gUQXcsAJm3ASgohtbdC81Hut/UeNaCnAU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTlaG-0000QT-KR
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:13:00 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTlaG-00025V-J9
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:13:00 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging] xen-bus/block: explicitly assign event channels to
 an AioContext
Message-Id: <E1jTlaG-00025V-J9@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 12:13:00 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 63cb54f1fe78f2c2365e46d4dccbf30831077049
Author:     Paul Durrant <pdurrant@amazon.com>
AuthorDate: Mon Dec 16 14:34:51 2019 +0000
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Fri Feb 28 14:52:52 2020 +0000

    xen-bus/block: explicitly assign event channels to an AioContext
    
    It is not safe to close an event channel from the QEMU main thread when
    that channel's poller is running in IOThread context.
    
    This patch adds a new xen_device_set_event_channel_context() function
    to explicitly assign the channel AioContext, and modifies
    xen_device_bind_event_channel() to initially assign the channel's poller
    to the QEMU main thread context. The code in xen-block's dataplane is
    then modified to assign the channel to IOThread context during
    xen_block_dataplane_start() and de-assign it during in
    xen_block_dataplane_stop(), such that the channel is always assigned
    back to main thread context before it is closed. aio_set_fd_handler()
    already deals with all the necessary synchronization when moving an fd
    between AioContext-s so no extra code is needed to manage this.
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Paul Durrant <pdurrant@amazon.com>
    Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
    Message-Id: <20191216143451.19024-1-pdurrant@amazon.com>
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    (cherry picked from commit 32d0b7be68216f130dc962533c6fc2f9ad848a8b)
---
 hw/block/dataplane/xen-block.c | 20 ++++++++++++++++++--
 hw/xen/xen-bus.c               | 27 +++++++++++++++++++++++----
 include/hw/xen/xen-bus.h       |  5 ++++-
 3 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.c
index 0f200c5fb0..18ba4ac897 100644
--- a/hw/block/dataplane/xen-block.c
+++ b/hw/block/dataplane/xen-block.c
@@ -685,12 +685,24 @@ void xen_block_dataplane_stop(XenBlockDataPlane *dataplane)
         return;
     }
 
+    xendev = dataplane->xendev;
+
     aio_context_acquire(dataplane->ctx);
+    if (dataplane->event_channel) {
+        /* Only reason for failure is a NULL channel */
+        xen_device_set_event_channel_context(xendev, dataplane->event_channel,
+                                             qemu_get_aio_context(),
+                                             &error_abort);
+    }
     /* Xen doesn't have multiple users for nodes, so this can't fail */
     blk_set_aio_context(dataplane->blk, qemu_get_aio_context(), &error_abort);
     aio_context_release(dataplane->ctx);
 
-    xendev = dataplane->xendev;
+    /*
+     * Now that the context has been moved onto the main thread, cancel
+     * further processing.
+     */
+    qemu_bh_cancel(dataplane->bh);
 
     if (dataplane->event_channel) {
         Error *local_err = NULL;
@@ -807,7 +819,7 @@ void xen_block_dataplane_start(XenBlockDataPlane *dataplane,
     }
 
     dataplane->event_channel =
-        xen_device_bind_event_channel(xendev, dataplane->ctx, event_channel,
+        xen_device_bind_event_channel(xendev, event_channel,
                                       xen_block_dataplane_event, dataplane,
                                       &local_err);
     if (local_err) {
@@ -818,7 +830,11 @@ void xen_block_dataplane_start(XenBlockDataPlane *dataplane,
     aio_context_acquire(dataplane->ctx);
     /* If other users keep the BlockBackend in the iothread, that's ok */
     blk_set_aio_context(dataplane->blk, dataplane->ctx, NULL);
+    /* Only reason for failure is a NULL channel */
+    xen_device_set_event_channel_context(xendev, dataplane->event_channel,
+                                         dataplane->ctx, &error_abort);
     aio_context_release(dataplane->ctx);
+
     return;
 
 stop:
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 63469e0cf9..cf79c5e3a8 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -1089,8 +1089,26 @@ static void xen_device_event(void *opaque)
     }
 }
 
+void xen_device_set_event_channel_context(XenDevice *xendev,
+                                          XenEventChannel *channel,
+                                          AioContext *ctx,
+                                          Error **errp)
+{
+    if (!channel) {
+        error_setg(errp, "bad channel");
+        return;
+    }
+
+    if (channel->ctx)
+        aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
+                           NULL, NULL, NULL, NULL);
+
+    channel->ctx = ctx;
+    aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
+                       xen_device_event, NULL, xen_device_poll, channel);
+}
+
 XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
-                                               AioContext *ctx,
                                                unsigned int port,
                                                XenEventHandler handler,
                                                void *opaque, Error **errp)
@@ -1116,9 +1134,10 @@ XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
     channel->handler = handler;
     channel->opaque = opaque;
 
-    channel->ctx = ctx;
-    aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
-                       xen_device_event, NULL, xen_device_poll, channel);
+    /* Only reason for failure is a NULL channel */
+    xen_device_set_event_channel_context(xendev, channel,
+                                         qemu_get_aio_context(),
+                                         &error_abort);
 
     QLIST_INSERT_HEAD(&xendev->event_channels, channel, list);
 
diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h
index 3d5532258d..c18c1372af 100644
--- a/include/hw/xen/xen-bus.h
+++ b/include/hw/xen/xen-bus.h
@@ -128,10 +128,13 @@ void xen_device_copy_grant_refs(XenDevice *xendev, bool to_domain,
 typedef bool (*XenEventHandler)(void *opaque);
 
 XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
-                                               AioContext *ctx,
                                                unsigned int port,
                                                XenEventHandler handler,
                                                void *opaque, Error **errp);
+void xen_device_set_event_channel_context(XenDevice *xendev,
+                                          XenEventChannel *channel,
+                                          AioContext *ctx,
+                                          Error **errp);
 void xen_device_notify_event_channel(XenDevice *xendev,
                                      XenEventChannel *channel,
                                      Error **errp);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 12:25:00 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 12:25:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTllo-0001XM-7a; Wed, 29 Apr 2020 12:24:56 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTlln-0001XH-86
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:24:55 +0000
X-Inumbo-ID: 6bd963cc-8a14-11ea-993d-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6bd963cc-8a14-11ea-993d-12813bfff9fa;
 Wed, 29 Apr 2020 12:24:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=v7POKKKrtk8SUmj82DcmkLFMleLM8FVaCPEul9IqGY0=; b=eTrjkVUB3fE9o2WYqx0GiHLJWH
 3fCTKBdJZh30HLE3jYQS5aPN+huBBIbwUNT8rj3/HzPp9b7wUJK7XZXtk/ThgLd8lmM90iBYGGBhz
 bsOMLiguIutBeH9D0O3EfOEdg4SijCHvjCuwzx7HHXqIbPaQ3/dQvY8zTGzEh65i2RoY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTlli-0000dm-04
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:24:50 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTllh-00070J-Us
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:24:49 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging] Merge tag 'v5.0.0' into 'staging'
Message-Id: <E1jTllh-00070J-Us@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 12:24:49 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

=== This changeset includes merge from high-traffic branch ===
Commits on that branch are not reported individually.

commit 221c94e964772cb6cb36b641b9ee993e77182dca
Merge: fdd76fecdde1ad444ff4deb7f1c4f7e4a1ef97d6 63cb54f1fe78f2c2365e46d4dccbf30831077049
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Wed Apr 29 10:19:37 2020 +0100
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Wed Apr 29 10:19:37 2020 +0100

    Merge tag 'v5.0.0' into 'staging'
 .cirrus.yml                                        |   17 +-
 .github/lockdown.yml                               |   34 +
 .gitignore                                         |    9 +-
 .gitlab-ci-edk2.yml                                |   49 +
 .gitlab-ci-opensbi.yml                             |   63 +
 .gitlab-ci.d/edk2/Dockerfile                       |   27 +
 .gitlab-ci.d/opensbi/Dockerfile                    |   33 +
 .gitlab-ci.yml                                     |   68 +-
 .gitmodules                                        |    6 +-
 .mailmap                                           |  141 +-
 .readthedocs.yml                                   |   20 +
 .shippable.yml                                     |    4 +-
 .travis.yml                                        |  459 +-
 CODING_STYLE                                       |  216 -
 CODING_STYLE.rst                                   |  641 ++
 HACKING                                            |  245 -
 Kconfig.host                                       |    6 +
 LICENSE                                            |    5 +-
 MAINTAINERS                                        |  477 +-
 Makefile                                           |  353 +-
 Makefile.objs                                      |   53 +-
 Makefile.target                                    |   33 +-
 README                                             |  139 -
 README.rst                                         |  150 +
 VERSION                                            |    2 +-
 accel/Makefile.objs                                |    2 +-
 accel/accel.c                                      |   72 +-
 accel/kvm/kvm-all.c                                |  449 +-
 accel/stubs/kvm-stub.c                             |   12 +
 accel/stubs/tcg-stub.c                             |    2 -
 accel/tcg/Makefile.objs                            |    1 +
 accel/tcg/atomic_common.inc.c                      |   54 +
 accel/tcg/atomic_template.h                        |  101 +-
 accel/tcg/cpu-exec.c                               |   34 +-
 accel/tcg/cputlb.c                                 | 1260 ++-
 accel/tcg/plugin-gen.c                             |  932 +++
 accel/tcg/plugin-helpers.h                         |    5 +
 accel/tcg/tcg-all.c                                |  150 +-
 accel/tcg/tcg-runtime-gvec.c                       |  300 +-
 accel/tcg/tcg-runtime.c                            |    1 +
 accel/tcg/translate-all.c                          |  191 +-
 accel/tcg/translate-all.h                          |    8 +-
 accel/tcg/translator.c                             |   25 +-
 accel/tcg/user-exec-stub.c                         |    2 +-
 accel/tcg/user-exec.c                              |  273 +-
 arch_init.c                                        |   17 +-
 audio/Makefile.objs                                |    1 -
 audio/alsaaudio.c                                  |  405 +-
 audio/audio.c                                      |  867 +-
 audio/audio.h                                      |   47 +-
 audio/audio_int.h                                  |  113 +-
 audio/audio_pt_int.c                               |  173 -
 audio/audio_pt_int.h                               |   22 -
 audio/audio_template.h                             |  130 +-
 audio/coreaudio.c                                  |  131 +-
 audio/dsound_template.h                            |   54 +-
 audio/dsoundaudio.c                                |  378 +-
 audio/mixeng.c                                     |   70 +
 audio/mixeng.h                                     |   14 +-
 audio/mixeng_template.h                            |   22 +-
 audio/noaudio.c                                    |   92 +-
 audio/ossaudio.c                                   |  389 +-
 audio/paaudio.c                                    |  916 +--
 audio/rate_template.h                              |    2 +-
 audio/sdlaudio.c                                   |  141 +-
 audio/spiceaudio.c                                 |  265 +-
 audio/wavaudio.c                                   |   83 +-
 audio/wavcapture.c                                 |    7 +-
 authz/listfile.c                                   |    2 +-
 backends/Makefile.objs                             |    6 +-
 backends/cryptodev-builtin.c                       |    1 -
 backends/cryptodev-vhost-user.c                    |    8 +-
 backends/cryptodev.c                               |   12 +-
 backends/dbus-vmstate.c                            |  511 ++
 backends/hostmem-file.c                            |   30 -
 backends/hostmem-memfd.c                           |    1 -
 backends/hostmem-ram.c                             |    2 -
 backends/hostmem.c                                 |   57 +-
 backends/rng-builtin.c                             |   77 +
 backends/trace-events                              |    7 +
 backends/vhost-user.c                              |    3 +-
 balloon.c                                          |    1 -
 block.c                                            |  686 +-
 block/Makefile.objs                                |   13 +-
 block/accounting.c                                 |    6 +
 block/aio_task.c                                   |  124 +
 block/backup-top.c                                 |  285 +
 block/backup-top.h                                 |   41 +
 block/backup.c                                     |  521 +-
 block/blkdebug.c                                   |   93 +-
 block/blkreplay.c                                  |    8 +
 block/blkverify.c                                  |   20 +-
 block/block-backend.c                              |  277 +-
 block/block-copy.c                                 |  578 ++
 block/bochs.c                                      |    4 +-
 block/cloop.c                                      |    4 +-
 block/commit.c                                     |   45 +-
 block/copy-on-read.c                               |   17 -
 block/create.c                                     |    7 +-
 block/crypto.c                                     |  119 +-
 block/curl.c                                       |  165 +-
 block/dirty-bitmap.c                               |  382 +-
 block/dmg.c                                        |    4 +-
 block/file-posix.c                                 |  491 +-
 block/file-win32.c                                 |    8 +-
 block/filter-compress.c                            |  159 +
 block/gluster.c                                    |    8 +-
 block/io.c                                         |  875 ++-
 block/io_uring.c                                   |  433 +
 block/iscsi.c                                      |   99 +-
 block/linux-aio.c                                  |    4 +-
 block/mirror.c                                     |  282 +-
 block/monitor/Makefile.objs                        |    1 +
 block/monitor/block-hmp-cmds.c                     | 1013 +++
 block/nbd.c                                        |  612 +-
 block/nfs.c                                        |   22 +-
 block/null.c                                       |    4 +-
 block/nvme.c                                       |  165 +-
 block/parallels.c                                  |   25 +-
 block/qapi-sysemu.c                                |  590 ++
 block/qapi.c                                       |   33 +-
 block/qcow.c                                       |   12 +-
 block/qcow2-bitmap.c                               |  309 +-
 block/qcow2-cache.c                                |    2 +-
 block/qcow2-cluster.c                              |  118 +-
 block/qcow2-refcount.c                             |    7 +-
 block/qcow2-snapshot.c                             |  326 +-
 block/qcow2-threads.c                              |   79 +-
 block/qcow2.c                                      | 1081 ++-
 block/qcow2.h                                      |   53 +-
 block/qed.c                                        |   13 +-
 block/quorum.c                                     |   70 +-
 block/raw-format.c                                 |   15 +-
 block/rbd.c                                        |   54 +-
 block/replication.c                                |   49 +-
 block/sheepdog.c                                   |   13 +-
 block/snapshot.c                                   |   30 +-
 block/ssh.c                                        |    8 +-
 block/stream.c                                     |   28 +-
 block/throttle-groups.c                            |    5 +-
 block/throttle.c                                   |    8 -
 block/trace-events                                 |   30 +-
 block/vdi.c                                        |   22 +-
 block/vhdx-log.c                                   |    4 +-
 block/vhdx.c                                       |  158 +-
 block/vmdk.c                                       |   81 +-
 block/vpc.c                                        |   15 +-
 block/vvfat.c                                      |   15 +-
 block/vxhs.c                                       |    5 +-
 blockdev-nbd.c                                     |   58 +-
 blockdev.c                                         | 1551 ++--
 blockjob.c                                         |   53 +-
 bootdevice.c                                       |  147 +-
 bsd-user/main.c                                    |    4 +-
 bsd-user/qemu.h                                    |    2 +-
 bsd-user/syscall.c                                 |   30 +-
 bt-host.c                                          |  198 -
 bt-vhci.c                                          |  167 -
 chardev/baum.c                                     |    1 +
 chardev/char-mux.c                                 |    8 +-
 chardev/char-pipe.c                                |    3 +-
 chardev/char-socket.c                              |   18 +-
 chardev/char-win-stdio.c                           |    1 +
 chardev/char-win.c                                 |    3 +-
 chardev/char.c                                     |   49 +-
 chardev/spice.c                                    |    4 +-
 configure                                          | 1071 ++-
 contrib/gitdm/aliases                              |   20 +-
 contrib/gitdm/domain-map                           |    2 +
 contrib/gitdm/filetypes.txt                        |    2 +-
 contrib/gitdm/group-map-individuals                |    5 +-
 contrib/gitdm/group-map-redhat                     |    1 +
 contrib/ivshmem-server/ivshmem-server.c            |    6 +
 contrib/ivshmem-server/main.c                      |    5 +-
 contrib/libvhost-user/libvhost-user-glib.c         |   17 +-
 contrib/libvhost-user/libvhost-user-glib.h         |    1 +
 contrib/libvhost-user/libvhost-user.c              |  217 +-
 contrib/libvhost-user/libvhost-user.h              |   22 +-
 contrib/rdmacm-mux/main.c                          |    2 +-
 contrib/vhost-user-blk/vhost-user-blk.c            |  110 +-
 contrib/vhost-user-gpu/50-qemu-gpu.json.in         |    2 +-
 contrib/vhost-user-gpu/Makefile.objs               |    6 +-
 contrib/vhost-user-gpu/main.c                      | 1191 ---
 contrib/vhost-user-gpu/vhost-user-gpu.c            | 1191 +++
 contrib/vhost-user-gpu/virgl.c                     |    2 +-
 contrib/vhost-user-gpu/vugbm.c                     |    2 +-
 contrib/vhost-user-input/main.c                    |   10 +-
 contrib/vhost-user-scsi/vhost-user-scsi.c          |    2 +-
 cpus-common.c                                      |   14 +-
 cpus.c                                             |  170 +-
 crypto/Makefile.objs                               |   15 +-
 crypto/afsplit.c                                   |   28 +-
 crypto/block-luks.c                                | 1091 +--
 crypto/block.c                                     |   51 +-
 crypto/cipher-gcrypt.c                             |   97 +-
 crypto/cipher-nettle.c                             |   18 +
 crypto/hmac-glib.c                                 |    5 -
 crypto/pbkdf.c                                     |    5 +-
 crypto/secret.c                                    |   39 +-
 crypto/tlscredsanon.c                              |   16 +-
 crypto/tlscredspsk.c                               |    5 +-
 crypto/tlscredsx509.c                              |   18 +-
 default-configs/arm-softmmu.mak                    |    2 +
 default-configs/i386-softmmu.mak                   |    7 +-
 default-configs/m68k-softmmu.mak                   |    2 +
 default-configs/ppc-softmmu.mak                    |    1 -
 default-configs/ppc64-softmmu.mak                  |    1 +
 default-configs/rx-softmmu.mak                     |    2 +
 default-configs/xtensa-softmmu.mak                 |    1 +
 device-hotplug.c                                   |   92 -
 device_tree.c                                      |    7 +-
 disas.c                                            |  110 +
 disas/cris.c                                       |   59 +-
 disas/libvixl/Makefile.objs                        |   11 +-
 disas/mips.c                                       |   10 +
 disas/ppc.c                                        |    5 +
 dma-helpers.c                                      |   17 +-
 docs/COLO-FT.txt                                   |  224 +-
 docs/barrier.txt                                   |  370 +
 docs/block-replication.txt                         |   28 +-
 docs/can.txt                                       |    2 +-
 docs/conf.py                                       |   51 +-
 docs/defs.rst.inc                                  |   15 +
 docs/devel/atomics.rst                             |  507 ++
 docs/devel/atomics.txt                             |  403 -
 docs/devel/bitops.rst                              |    8 +
 docs/devel/decodetree.rst                          |    8 +-
 docs/devel/fuzzing.txt                             |  116 +
 docs/devel/index.rst                               |    5 +
 docs/devel/kconfig.rst                             |    2 +-
 docs/devel/loads-stores.rst                        |  215 +-
 docs/devel/memory.rst                              |    5 +
 docs/devel/migration.rst                           |    5 +-
 docs/devel/multi-thread-tcg.txt                    |    8 +-
 docs/devel/qapi-code-gen.txt                       | 1147 +--
 docs/devel/rcu.txt                                 |   20 +-
 docs/devel/replay.txt                              |   46 +
 docs/devel/reset.rst                               |  289 +
 docs/devel/s390-dasd-ipl.rst                       |  138 +
 docs/devel/s390-dasd-ipl.txt                       |  133 -
 docs/devel/stable-process.rst                      |    6 +-
 docs/devel/tcg-plugins.rst                         |  136 +
 docs/devel/tcg.rst                                 |    2 +-
 docs/devel/testing.rst                             |  123 +-
 docs/devel/tracing.txt                             |   17 +-
 docs/hyperv.txt                                    |   13 +
 docs/index.html.in                                 |   19 +
 docs/index.rst                                     |    6 +-
 docs/interop/conf.py                               |    7 +
 docs/interop/dbus-vmstate.rst                      |   74 +
 docs/interop/dbus.rst                              |  110 +
 docs/interop/firmware.json                         |    5 +-
 docs/interop/index.rst                             |    3 +
 docs/interop/nbd.txt                               |    2 +
 docs/interop/pr-helper.rst                         |    2 +-
 docs/interop/qcow2.txt                             |   67 +-
 docs/interop/qemu-ga.rst                           |  134 +
 docs/interop/vhost-user.json                       |   35 +-
 docs/interop/vhost-user.rst                        |  156 +-
 docs/microvm.rst                                   |  129 +
 docs/nvdimm.txt                                    |   31 +
 docs/qemu-block-drivers.texi                       |  887 ---
 docs/qemu-cpu-models.texi                          |  675 --
 docs/qemu-option-trace.rst.inc                     |   26 +
 docs/replay.txt                                    |   15 +-
 docs/security.texi                                 |  167 -
 docs/specs/acpi_cpu_hotplug.txt                    |   91 +-
 docs/specs/acpi_hw_reduced_hotplug.rst             |   70 +
 docs/specs/fw_cfg.txt                              |    2 +-
 docs/specs/index.rst                               |    2 +
 docs/specs/ivshmem-spec.txt                        |    4 +-
 docs/specs/ppc-spapr-hotplug.txt                   |    2 +-
 docs/specs/ppc-spapr-uv-hcalls.txt                 |   76 +
 docs/specs/ppc-xive.rst                            |    2 +-
 docs/specs/pvpanic.txt                             |   18 +-
 docs/specs/tpm.rst                                 |  526 ++
 docs/specs/tpm.txt                                 |  427 -
 docs/sphinx/hxtool.py                              |  192 +
 docs/sphinx/kerneldoc.py                           |  173 +
 docs/sphinx/kernellog.py                           |   28 +
 docs/system/arm/cpu-features.rst                   |  346 +
 docs/system/arm/integratorcp.rst                   |   16 +
 docs/system/arm/musicpal.rst                       |   19 +
 docs/system/arm/nseries.rst                        |   33 +
 docs/system/arm/orangepi.rst                       |  253 +
 docs/system/arm/palm.rst                           |   23 +
 docs/system/arm/realview.rst                       |   34 +
 docs/system/arm/stellaris.rst                      |   26 +
 docs/system/arm/sx1.rst                            |   18 +
 docs/system/arm/versatile.rst                      |   29 +
 docs/system/arm/xscale.rst                         |   29 +
 docs/system/build-platforms.rst                    |   79 +
 docs/system/conf.py                                |   28 +
 docs/system/cpu-models-mips.rst.inc                |  105 +
 docs/system/cpu-models-x86.rst.inc                 |  418 +
 docs/system/deprecated.rst                         |  509 ++
 docs/system/device-url-syntax.rst.inc              |  228 +
 docs/system/gdb.rst                                |   89 +
 docs/system/images.rst                             |   85 +
 docs/system/index.rst                              |   35 +
 docs/system/invocation.rst                         |   18 +
 docs/system/ivshmem.rst                            |   64 +
 docs/system/keys.rst                               |    6 +
 docs/system/keys.rst.inc                           |   35 +
 docs/system/license.rst                            |   11 +
 docs/system/linuxboot.rst                          |   30 +
 docs/system/managed-startup.rst                    |   35 +
 docs/system/monitor.rst                            |   31 +
 docs/system/mux-chardev.rst                        |    6 +
 docs/system/mux-chardev.rst.inc                    |   27 +
 docs/system/net.rst                                |  100 +
 docs/system/qemu-block-drivers.rst                 |   20 +
 docs/system/qemu-block-drivers.rst.inc             |  954 +++
 docs/system/qemu-cpu-models.rst                    |   20 +
 docs/system/qemu-manpage.rst                       |   45 +
 docs/system/quickstart.rst                         |   13 +
 docs/system/s390x/vfio-ap.rst                      |  916 +++
 docs/system/security.rst                           |  173 +
 docs/system/target-arm.rst                         |   88 +
 docs/system/target-i386-desc.rst.inc               |   62 +
 docs/system/target-i386.rst                        |   23 +
 docs/system/target-m68k.rst                        |   21 +
 docs/system/target-mips.rst                        |  120 +
 docs/system/target-ppc.rst                         |   47 +
 docs/system/target-s390x.rst                       |   26 +
 docs/system/target-sparc.rst                       |   62 +
 docs/system/target-sparc64.rst                     |   37 +
 docs/system/target-xtensa.rst                      |   27 +
 docs/system/targets.rst                            |   20 +
 docs/system/tls.rst                                |  328 +
 docs/system/usb.rst                                |  137 +
 docs/system/vnc-security.rst                       |  202 +
 docs/tools/conf.py                                 |   33 +
 docs/tools/index.rst                               |   17 +
 docs/tools/qemu-img.rst                            |  832 ++
 docs/tools/qemu-nbd.rst                            |  256 +
 docs/tools/qemu-trace-stap.rst                     |  124 +
 docs/tools/virtfs-proxy-helper.rst                 |   72 +
 docs/tools/virtiofsd.rst                           |  120 +
 docs/user/conf.py                                  |   15 +
 docs/user/index.rst                                |   16 +
 docs/user/main.rst                                 |  295 +
 docs/vfio-ap.txt                                   |  876 ---
 docs/virtio-net-failover.rst                       |   68 +
 docs/virtio-pmem.rst                               |   76 +
 docs/xbzrle.txt                                    |    7 +-
 dump/dump-hmp-cmds.c                               |    4 +-
 dump/dump.c                                        |    5 +-
 dump/win_dump.c                                    |    5 +-
 exec-vary.c                                        |  108 +
 exec.c                                             |  835 +-
 fpu/softfloat-specialize.h                         | 1083 ---
 fpu/softfloat-specialize.inc.c                     | 1083 +++
 fpu/softfloat.c                                    |  286 +-
 fsdev/9p-marshal.h                                 |    6 +-
 fsdev/Makefile.objs                                |    2 +-
 fsdev/file-op-9p.h                                 |    5 +
 fsdev/qemu-fsdev-opts.c                            |    7 +-
 fsdev/qemu-fsdev-throttle.c                        |    5 +-
 fsdev/qemu-fsdev-throttle.h                        |    3 +-
 fsdev/qemu-fsdev.c                                 |    1 +
 fsdev/virtfs-proxy-helper.c                        |  106 +-
 fsdev/virtfs-proxy-helper.texi                     |   63 -
 gdb-xml/riscv-32bit-virtual.xml                    |   11 +
 gdb-xml/riscv-64bit-virtual.xml                    |   11 +
 gdb-xml/rx-core.xml                                |   70 +
 gdbstub.c                                          |  949 ++-
 hmp-commands-info.hx                               |  610 +-
 hmp-commands.hx                                    | 1492 ++--
 hw/9pfs/9p-local.c                                 |   46 +-
 hw/9pfs/9p-proxy.c                                 |   10 +-
 hw/9pfs/9p-synth.c                                 |   19 +
 hw/9pfs/9p-synth.h                                 |    5 +
 hw/9pfs/9p.c                                       |  604 +-
 hw/9pfs/9p.h                                       |   73 +-
 hw/9pfs/Kconfig                                    |    5 +
 hw/9pfs/codir.c                                    |    1 +
 hw/9pfs/cofile.c                                   |    1 +
 hw/9pfs/cofs.c                                     |    1 +
 hw/9pfs/coth.c                                     |    1 +
 hw/9pfs/coth.h                                     |    1 -
 hw/9pfs/coxattr.c                                  |    1 +
 hw/9pfs/trace-events                               |   14 +-
 hw/9pfs/virtio-9p-device.c                         |   15 +-
 hw/9pfs/xen-9p-backend.c                           |   15 +-
 hw/Kconfig                                         |    7 +-
 hw/Makefile.objs                                   |    3 +-
 hw/acpi/Kconfig                                    |    7 +
 hw/acpi/Makefile.objs                              |    5 +-
 hw/acpi/acpi-x86-stub.c                            |    7 +
 hw/acpi/aml-build.c                                |   50 +-
 hw/acpi/core.c                                     |    4 +-
 hw/acpi/cpu.c                                      |   19 +
 hw/acpi/cpu_hotplug.c                              |   24 +-
 hw/acpi/generic_event_device.c                     |  311 +
 hw/acpi/hmat.c                                     |  268 +
 hw/acpi/hmat.h                                     |   42 +
 hw/acpi/ich9.c                                     |  108 +-
 hw/acpi/ipmi-stub.c                                |    2 +-
 hw/acpi/ipmi.c                                     |   13 +-
 hw/acpi/memory_hotplug.c                           |   44 +-
 hw/acpi/nvdimm.c                                   |   34 +-
 hw/acpi/pcihp.c                                    |   14 +-
 hw/acpi/piix4.c                                    |   70 +-
 hw/acpi/tco.c                                      |    2 +
 hw/acpi/trace-events                               |    1 +
 hw/acpi/vmgenid.c                                  |    6 +-
 hw/adc/Makefile.objs                               |    2 +-
 hw/adc/stm32f2xx_adc.c                             |    2 +-
 hw/alpha/alpha_sys.h                               |    7 +-
 hw/alpha/dp264.c                                   |   26 +-
 hw/alpha/pci.c                                     |    1 -
 hw/alpha/typhoon.c                                 |   12 +-
 hw/arm/Kconfig                                     |   46 +
 hw/arm/Makefile.objs                               |    5 +-
 hw/arm/allwinner-a10.c                             |  106 +-
 hw/arm/allwinner-h3.c                              |  465 ++
 hw/arm/armsse.c                                    |    4 +-
 hw/arm/armv7m.c                                    |    8 +-
 hw/arm/aspeed.c                                    |  349 +-
 hw/arm/aspeed_ast2600.c                            |  587 ++
 hw/arm/aspeed_soc.c                                |  306 +-
 hw/arm/bcm2835_peripherals.c                       |   69 +-
 hw/arm/bcm2836.c                                   |   49 +-
 hw/arm/boot.c                                      |   46 +-
 hw/arm/collie.c                                    |   54 +-
 hw/arm/cubieboard.c                                |   71 +-
 hw/arm/digic.c                                     |    4 +-
 hw/arm/digic_boards.c                              |   45 +-
 hw/arm/exynos4210.c                                |   97 +-
 hw/arm/exynos4_boards.c                            |   13 +-
 hw/arm/fsl-imx25.c                                 |   83 +-
 hw/arm/fsl-imx31.c                                 |   12 +-
 hw/arm/fsl-imx6.c                                  |   67 +-
 hw/arm/fsl-imx6ul.c                                |   60 +-
 hw/arm/gumstix.c                                   |   17 +-
 hw/arm/highbank.c                                  |   23 +-
 hw/arm/imx25_pdk.c                                 |   40 +-
 hw/arm/integratorcp.c                              |   24 +-
 hw/arm/kzm.c                                       |   24 +-
 hw/arm/mainstone.c                                 |   28 +-
 hw/arm/mcimx6ul-evk.c                              |   29 +-
 hw/arm/mcimx7d-sabre.c                             |   30 +-
 hw/arm/microbit.c                                  |    1 +
 hw/arm/mps2-tz.c                                   |   31 +-
 hw/arm/mps2.c                                      |   16 +-
 hw/arm/msf2-soc.c                                  |   12 +-
 hw/arm/msf2-som.c                                  |    1 +
 hw/arm/musca.c                                     |   11 +-
 hw/arm/musicpal.c                                  |   59 +-
 hw/arm/netduino2.c                                 |    1 +
 hw/arm/netduinoplus2.c                             |   52 +
 hw/arm/nrf51_soc.c                                 |    6 +-
 hw/arm/nseries.c                                   |   54 +-
 hw/arm/omap1.c                                     |   26 +-
 hw/arm/omap2.c                                     |   44 +-
 hw/arm/omap_sx1.c                                  |   41 +-
 hw/arm/orangepi.c                                  |  130 +
 hw/arm/palm.c                                      |   33 +-
 hw/arm/pxa2xx.c                                    |   29 +-
 hw/arm/pxa2xx_gpio.c                               |    5 +-
 hw/arm/pxa2xx_pic.c                                |    2 +-
 hw/arm/raspi.c                                     |  225 +-
 hw/arm/realview.c                                  |    6 +-
 hw/arm/sabrelite.c                                 |   27 +-
 hw/arm/sbsa-ref.c                                  |  109 +-
 hw/arm/smmu-common.c                               |   28 +-
 hw/arm/smmuv3-internal.h                           |    7 +-
 hw/arm/smmuv3.c                                    |   78 +-
 hw/arm/spitz.c                                     |   23 +-
 hw/arm/stellaris.c                                 |   15 +-
 hw/arm/stm32f205_soc.c                             |   15 +-
 hw/arm/stm32f405_soc.c                             |  300 +
 hw/arm/strongarm.c                                 |   32 +-
 hw/arm/strongarm.h                                 |    4 +-
 hw/arm/sysbus-fdt.c                                |   34 +-
 hw/arm/tosa.c                                      |   15 +-
 hw/arm/versatilepb.c                               |   14 +-
 hw/arm/vexpress.c                                  |   19 +-
 hw/arm/virt-acpi-build.c                           |  109 +-
 hw/arm/virt.c                                      |  519 +-
 hw/arm/xilinx_zynq.c                               |   36 +-
 hw/arm/xlnx-versal-virt.c                          |   44 +-
 hw/arm/xlnx-versal.c                               |   31 +-
 hw/arm/xlnx-zcu102.c                               |   12 +-
 hw/arm/xlnx-zynqmp.c                               |   49 +-
 hw/arm/z2.c                                        |   26 +-
 hw/audio/ac97.c                                    |   25 +-
 hw/audio/adlib.c                                   |    9 +-
 hw/audio/cs4231.c                                  |    3 +-
 hw/audio/cs4231a.c                                 |   12 +-
 hw/audio/es1370.c                                  |   15 +-
 hw/audio/fmopl.c                                   |    8 +-
 hw/audio/gus.c                                     |   13 +-
 hw/audio/hda-codec.c                               |   30 +-
 hw/audio/intel-hda.c                               |   33 +-
 hw/audio/intel-hda.h                               |    2 +-
 hw/audio/lm4549.c                                  |    1 +
 hw/audio/lm4549.h                                  |    1 +
 hw/audio/marvell_88w8618.c                         |    4 +-
 hw/audio/milkymist-ac97.c                          |   17 +-
 hw/audio/pcspk.c                                   |    7 +-
 hw/audio/pl041.c                                   |    6 +-
 hw/audio/sb16.c                                    |   10 +-
 hw/audio/wm8750.c                                  |   11 +-
 hw/block/Kconfig                                   |    3 +
 hw/block/Makefile.objs                             |    3 +-
 hw/block/dataplane/virtio-blk.c                    |    6 +-
 hw/block/dataplane/xen-block.c                     |   50 +-
 hw/block/ecc.c                                     |    2 +-
 hw/block/fdc.c                                     |   74 +-
 hw/block/hd-geometry.c                             |    7 +-
 hw/block/m25p80.c                                  |   64 +-
 hw/block/nand.c                                    |    5 +-
 hw/block/nvme.c                                    |    5 +-
 hw/block/onenand.c                                 |    6 +-
 hw/block/pflash_cfi01.c                            |   15 +-
 hw/block/pflash_cfi02.c                            |   14 +-
 hw/block/swim.c                                    |  489 ++
 hw/block/tc58128.c                                 |    1 -
 hw/block/trace-events                              |   26 +-
 hw/block/vhost-user-blk.c                          |   54 +-
 hw/block/virtio-blk.c                              |   69 +-
 hw/block/xen-block.c                               |   26 +-
 hw/bt/Kconfig                                      |    2 -
 hw/bt/Makefile.objs                                |    3 -
 hw/bt/core.c                                       |  143 -
 hw/bt/hci-csr.c                                    |  512 --
 hw/bt/hci.c                                        | 2263 ------
 hw/bt/hid.c                                        |  553 --
 hw/bt/l2cap.c                                      | 1367 ----
 hw/bt/sdp.c                                        |  989 ---
 hw/char/Makefile.objs                              |   16 +-
 hw/char/bcm2835_aux.c                              |   10 +-
 hw/char/cadence_uart.c                             |    6 +-
 hw/char/cmsdk-apb-uart.c                           |    4 +-
 hw/char/debugcon.c                                 |    4 +-
 hw/char/digic-uart.c                               |    7 +-
 hw/char/escc.c                                     |   38 +-
 hw/char/etraxfs_ser.c                              |    6 +-
 hw/char/exynos4210_uart.c                          |  254 +-
 hw/char/grlib_apbuart.c                            |    6 +-
 hw/char/imx_serial.c                               |    8 +-
 hw/char/ipoctal232.c                               |    7 +-
 hw/char/lm32_juart.c                               |    7 +-
 hw/char/lm32_uart.c                                |    8 +-
 hw/char/mcf_uart.c                                 |    7 +-
 hw/char/milkymist-uart.c                           |    8 +-
 hw/char/nrf51_uart.c                               |    7 +-
 hw/char/omap_uart.c                                |    3 +-
 hw/char/parallel-isa.c                             |    2 +
 hw/char/parallel.c                                 |    7 +-
 hw/char/pl011.c                                    |    6 +-
 hw/char/sclpconsole-lm.c                           |    7 +-
 hw/char/sclpconsole.c                              |    7 +-
 hw/char/serial-isa.c                               |   17 +-
 hw/char/serial-pci-multi.c                         |   62 +-
 hw/char/serial-pci.c                               |   23 +-
 hw/char/serial.c                                   |  203 +-
 hw/char/sh_serial.c                                |    5 +-
 hw/char/spapr_vty.c                                |   37 +-
 hw/char/stm32f2xx_usart.c                          |    4 +-
 hw/char/terminal3270.c                             |   10 +-
 hw/char/trace-events                               |   20 +
 hw/char/virtio-console.c                           |   10 +-
 hw/char/virtio-serial-bus.c                        |   19 +-
 hw/char/xen_console.c                              |    2 +-
 hw/char/xilinx_uartlite.c                          |    7 +-
 hw/core/Kconfig                                    |   13 +
 hw/core/Makefile.objs                              |   38 +-
 hw/core/bus.c                                      |  104 +-
 hw/core/cpu.c                                      |  456 ++
 hw/core/empty_slot.c                               |    1 -
 hw/core/generic-loader.c                           |    8 +-
 hw/core/irq.c                                      |   14 -
 hw/core/loader-fit.c                               |   16 +-
 hw/core/loader.c                                   |  106 +-
 hw/core/machine-hmp-cmds.c                         |   19 +-
 hw/core/machine-qmp-cmds.c                         |   16 +
 hw/core/machine.c                                  |  302 +-
 hw/core/null-machine.c                             |   11 +-
 hw/core/numa.c                                     |  482 +-
 hw/core/or-irq.c                                   |    7 +-
 hw/core/platform-bus.c                             |    7 +-
 hw/core/ptimer.c                                   |  108 +-
 hw/core/qdev-fw.c                                  |    2 +-
 hw/core/qdev-properties-system.c                   |   59 +-
 hw/core/qdev-properties.c                          |   75 +-
 hw/core/qdev.c                                     |  433 +-
 hw/core/register.c                                 |    1 -
 hw/core/resettable.c                               |  301 +
 hw/core/split-irq.c                                |    4 +-
 hw/core/sysbus.c                                   |   32 -
 hw/core/trace-events                               |   29 +
 hw/core/vm-change-state-handler.c                  |    3 +-
 hw/core/vmstate-if.c                               |   23 +
 hw/cpu/a15mpcore.c                                 |    4 +-
 hw/cpu/a9mpcore.c                                  |   10 +-
 hw/cpu/arm11mpcore.c                               |    9 +-
 hw/cpu/cluster.c                                   |    5 +-
 hw/cpu/realview_mpcore.c                           |    4 +-
 hw/cris/axis_dev88.c                               |   14 +-
 hw/cris/boot.c                                     |    4 +-
 hw/display/Kconfig                                 |    9 +
 hw/display/Makefile.objs                           |   23 +-
 hw/display/ads7846.c                               |    4 +-
 hw/display/artist.c                                | 1443 ++++
 hw/display/ati.c                                   |  129 +-
 hw/display/ati_2d.c                                |   37 +-
 hw/display/ati_dbg.c                               |   10 +
 hw/display/ati_int.h                               |    5 +
 hw/display/ati_regs.h                              |   17 +
 hw/display/bcm2835_fb.c                            |    9 +-
 hw/display/bochs-display.c                         |   11 +-
 hw/display/cg3.c                                   |   10 +-
 hw/display/cirrus_vga.c                            |    6 +-
 hw/display/cirrus_vga_isa.c                        |    4 +-
 hw/display/dpcd.c                                  |    1 +
 hw/display/edid-generate.c                         |    4 +-
 hw/display/edid-region.c                           |    1 +
 hw/display/exynos4210_fimd.c                       |    7 +-
 hw/display/framebuffer.c                           |    1 -
 hw/display/g364fb.c                                |    8 +-
 hw/display/i2c-ddc.c                               |    4 +-
 hw/display/jazz_led.c                              |  124 +-
 hw/display/macfb.c                                 |  477 ++
 hw/display/milkymist-tmu2.c                        |   11 +-
 hw/display/milkymist-vgafb.c                       |    4 +-
 hw/display/next-fb.c                               |  146 +
 hw/display/omap_dss.c                              |    4 +-
 hw/display/omap_lcdc.c                             |   13 +-
 hw/display/pl110.c                                 |    2 +
 hw/display/pxa2xx_lcd.c                            |    3 +-
 hw/display/qxl-render.c                            |   10 +-
 hw/display/qxl.c                                   |   21 +-
 hw/display/qxl.h                                   |    3 +-
 hw/display/ramfb-standalone.c                      |    4 +-
 hw/display/ramfb.c                                 |    5 +-
 hw/display/sii9022.c                               |    1 +
 hw/display/sm501.c                                 |   39 +-
 hw/display/ssd0303.c                               |    1 +
 hw/display/ssd0323.c                               |    1 +
 hw/display/tc6393xb.c                              |    4 +-
 hw/display/tcx.c                                   |   11 +-
 hw/display/trace-events                            |    9 +
 hw/display/vga-access.h                            |   49 +
 hw/display/vga-helpers.h                           |   26 -
 hw/display/vga-isa-mm.c                            |    9 +-
 hw/display/vga-isa.c                               |    8 +-
 hw/display/vga-pci.c                               |   20 +-
 hw/display/vga.c                                   |   19 +-
 hw/display/vga_int.h                               |    3 -
 hw/display/vhost-user-gpu.c                        |    3 +-
 hw/display/virtio-gpu-pci.c                        |    3 +-
 hw/display/virtio-gpu.c                            |    5 +-
 hw/display/virtio-vga.c                            |    4 +-
 hw/display/vmware_vga.c                            |   10 +-
 hw/display/xenfb.c                                 |    1 -
 hw/display/xlnx_dp.c                               |   11 +-
 hw/dma/Kconfig                                     |    1 +
 hw/dma/Makefile.objs                               |    7 +-
 hw/dma/bcm2835_dma.c                               |   24 +-
 hw/dma/etraxfs_dma.c                               |   30 +-
 hw/dma/i82374.c                                    |    4 +-
 hw/dma/i8257.c                                     |   27 +-
 hw/dma/omap_dma.c                                  |    2 +-
 hw/dma/pl080.c                                     |    6 +-
 hw/dma/pl330.c                                     |   93 +-
 hw/dma/puv3_dma.c                                  |    1 -
 hw/dma/pxa2xx_dma.c                                |    5 +-
 hw/dma/rc4030.c                                    |   27 +-
 hw/dma/soc_dma.c                                   |    2 +-
 hw/dma/sparc32_dma.c                               |    6 +-
 hw/dma/trace-events                                |   24 +
 hw/dma/xilinx_axidma.c                             |   30 +-
 hw/dma/xlnx-zdma.c                                 |   72 +-
 hw/dma/xlnx-zynq-devcfg.c                          |    3 +-
 hw/dma/xlnx_dpdma.c                                |    2 +
 hw/gpio/Makefile.objs                              |    9 +-
 hw/gpio/aspeed_gpio.c                              | 1015 +++
 hw/gpio/bcm2835_gpio.c                             |    2 +
 hw/gpio/gpio_key.c                                 |    2 +
 hw/gpio/imx_gpio.c                                 |    5 +-
 hw/gpio/max7310.c                                  |    4 +
 hw/gpio/mpc8xxx.c                                  |    2 +
 hw/gpio/nrf51_gpio.c                               |    2 +
 hw/gpio/omap_gpio.c                                |   49 +-
 hw/gpio/pl061.c                                    |    2 +
 hw/gpio/puv3_gpio.c                                |    1 -
 hw/gpio/zaurus.c                                   |    3 +-
 hw/hppa/Kconfig                                    |    4 +
 hw/hppa/Makefile.objs                              |    2 +-
 hw/hppa/dino.c                                     |  105 +-
 hw/hppa/hppa_hardware.h                            |    1 +
 hw/hppa/hppa_sys.h                                 |    7 +-
 hw/hppa/lasi.c                                     |  368 +
 hw/hppa/machine.c                                  |   61 +-
 hw/hppa/pci.c                                      |    1 -
 hw/hppa/trace-events                               |   10 +
 hw/hyperv/hyperv.c                                 |   24 +-
 hw/hyperv/hyperv_testdev.c                         |    1 -
 hw/i2c/Makefile.objs                               |    4 +-
 hw/i2c/aspeed_i2c.c                                |  547 +-
 hw/i2c/bitbang_i2c.c                               |    2 +-
 hw/i2c/core.c                                      |    6 +-
 hw/i2c/exynos4210_i2c.c                            |    2 +
 hw/i2c/imx_i2c.c                                   |    2 +
 hw/i2c/microbit_i2c.c                              |    1 +
 hw/i2c/mpc_i2c.c                                   |    2 +
 hw/i2c/omap_i2c.c                                  |   24 +-
 hw/i2c/pm_smbus.c                                  |    3 +-
 hw/i2c/ppc4xx_i2c.c                                |    3 +-
 hw/i2c/smbus_eeprom.c                              |   21 +-
 hw/i2c/smbus_ich9.c                                |    4 +-
 hw/i2c/smbus_master.c                              |    1 -
 hw/i2c/smbus_slave.c                               |    2 +-
 hw/i2c/trace-events                                |    9 +
 hw/i386/Kconfig                                    |   25 +-
 hw/i386/Makefile.objs                              |   14 +-
 hw/i386/acpi-build.c                               |  211 +-
 hw/i386/amd_iommu.c                                |   38 +-
 hw/i386/amd_iommu.h                                |    1 -
 hw/i386/e820_memory_layout.c                       |   59 +
 hw/i386/e820_memory_layout.h                       |   42 +
 hw/i386/fw_cfg.c                                   |  143 +
 hw/i386/fw_cfg.h                                   |    9 +
 hw/i386/intel_iommu.c                              |  233 +-
 hw/i386/intel_iommu_internal.h                     |   19 +-
 hw/i386/kvm/Makefile.objs                          |    6 +-
 hw/i386/kvm/clock.c                                |   21 +-
 hw/i386/kvm/i8254.c                                |    5 +-
 hw/i386/kvm/i8259.c                                |    2 +
 hw/i386/kvm/ioapic.c                               |   18 +-
 hw/i386/kvmvapic.c                                 |    2 +
 hw/i386/microvm.c                                  |  572 ++
 hw/i386/multiboot.c                                |    3 +-
 hw/i386/pc.c                                       | 1396 +---
 hw/i386/pc_piix.c                                  |  259 +-
 hw/i386/pc_q35.c                                   |  109 +-
 hw/i386/pc_sysfw.c                                 |   63 +-
 hw/i386/port92.c                                   |  126 +
 hw/i386/trace-events                               |    8 +
 hw/i386/vmmouse.c                                  |   22 +-
 hw/i386/vmport.c                                   |    2 -
 hw/i386/x86-iommu-stub.c                           |   43 +
 hw/i386/x86-iommu.c                                |    3 +-
 hw/i386/x86.c                                      | 1021 +++
 hw/i386/xen/xen-hvm.c                              |   38 +-
 hw/i386/xen/xen-mapcache.c                         |    1 +
 hw/i386/xen/xen_platform.c                         |    2 +-
 hw/i386/xen/xen_pvdevice.c                         |    5 +-
 hw/ide/ahci-allwinner.c                            |    2 +-
 hw/ide/ahci.c                                      |   11 +-
 hw/ide/ahci_internal.h                             |    2 +
 hw/ide/atapi.c                                     |   80 +-
 hw/ide/cmd646.c                                    |   36 +-
 hw/ide/core.c                                      |   63 +-
 hw/ide/ich.c                                       |    2 +-
 hw/ide/ioport.c                                    |    2 -
 hw/ide/isa.c                                       |    7 +-
 hw/ide/macio.c                                     |    7 +-
 hw/ide/microdrive.c                                |   10 +-
 hw/ide/mmio.c                                      |    5 +-
 hw/ide/pci.c                                       |   15 +-
 hw/ide/piix.c                                      |   44 +-
 hw/ide/qdev.c                                      |   23 +-
 hw/ide/sii3112.c                                   |   14 +-
 hw/ide/via.c                                       |   40 +-
 hw/input/Kconfig                                   |    4 +-
 hw/input/Makefile.objs                             |    7 +-
 hw/input/adb-kbd.c                                 |    2 +-
 hw/input/adb-mouse.c                               |    1 +
 hw/input/adb.c                                     |    4 +-
 hw/input/hid.c                                     |    3 +-
 hw/input/lasips2.c                                 |  291 +
 hw/input/lm832x.c                                  |   14 +-
 hw/input/milkymist-softusb.c                       |    6 +-
 hw/input/pckbd.c                                   |   16 +-
 hw/input/pl050.c                                   |    2 +
 hw/input/ps2.c                                     |   21 +-
 hw/input/pxa2xx_keypad.c                           |    2 +
 hw/input/stellaris_input.c                         |    7 +-
 hw/input/trace-events                              |    5 +
 hw/input/tsc2005.c                                 |    4 +-
 hw/input/tsc210x.c                                 |    3 +
 hw/input/vhost-user-input.c                        |    1 -
 hw/input/virtio-input-hid.c                        |    8 +-
 hw/input/virtio-input-host.c                       |    4 +-
 hw/input/virtio-input.c                            |    8 +-
 hw/intc/Kconfig                                    |    3 +
 hw/intc/Makefile.objs                              |    2 +-
 hw/intc/allwinner-a10-pic.c                        |    3 +-
 hw/intc/apic.c                                     |    4 +-
 hw/intc/apic_common.c                              |   60 +-
 hw/intc/arm_gic.c                                  |   36 +-
 hw/intc/arm_gic_common.c                           |    5 +-
 hw/intc/arm_gic_kvm.c                              |   16 +-
 hw/intc/arm_gicv2m.c                               |    4 +-
 hw/intc/arm_gicv3_common.c                         |    6 +-
 hw/intc/arm_gicv3_cpuif.c                          |    4 +
 hw/intc/arm_gicv3_its_common.c                     |    1 +
 hw/intc/arm_gicv3_its_kvm.c                        |    5 +-
 hw/intc/arm_gicv3_kvm.c                            |   13 +-
 hw/intc/armv7m_nvic.c                              |   76 +-
 hw/intc/aspeed_vic.c                               |    2 +
 hw/intc/bcm2835_ic.c                               |    6 +-
 hw/intc/bcm2836_control.c                          |   13 +-
 hw/intc/etraxfs_pic.c                              |   29 +-
 hw/intc/exynos4210_combiner.c                      |    6 +-
 hw/intc/exynos4210_gic.c                           |   15 +-
 hw/intc/grlib_irqmp.c                              |   36 +-
 hw/intc/heathrow_pic.c                             |    3 +-
 hw/intc/i8259.c                                    |    5 +-
 hw/intc/i8259_common.c                             |    7 +-
 hw/intc/imx_avic.c                                 |    2 +
 hw/intc/imx_gpcv2.c                                |    1 +
 hw/intc/ioapic.c                                   |   10 +-
 hw/intc/ioapic_common.c                            |    1 +
 hw/intc/lm32_pic.c                                 |    3 +-
 hw/intc/mips_gic.c                                 |    7 +-
 hw/intc/nios2_iic.c                                |    1 +
 hw/intc/omap_intc.c                                |   24 +-
 hw/intc/ompic.c                                    |    6 +-
 hw/intc/openpic.c                                  |    6 +-
 hw/intc/openpic_kvm.c                              |    4 +-
 hw/intc/pl190.c                                    |    2 +
 hw/intc/pnv_xive.c                                 |  432 +-
 hw/intc/puv3_intc.c                                |    1 +
 hw/intc/realview_gic.c                             |    2 +
 hw/intc/s390_flic.c                                |    5 +-
 hw/intc/s390_flic_kvm.c                            |   43 +-
 hw/intc/sh_intc.c                                  |    2 +-
 hw/intc/slavio_intctl.c                            |    2 +
 hw/intc/spapr_xive.c                               |  445 +-
 hw/intc/spapr_xive_kvm.c                           |  114 +-
 hw/intc/trace-events                               |   11 +-
 hw/intc/xics.c                                     |  314 +-
 hw/intc/xics_kvm.c                                 |   40 +-
 hw/intc/xics_pnv.c                                 |    1 -
 hw/intc/xics_spapr.c                               |  177 +-
 hw/intc/xilinx_intc.c                              |    5 +-
 hw/intc/xive.c                                     |  646 +-
 hw/intc/xlnx-pmu-iomod-intc.c                      |    5 +-
 hw/intc/xlnx-zynqmp-ipi.c                          |    2 +
 hw/ipack/ipack.c                                   |    5 +-
 hw/ipack/tpci200.c                                 |    2 +
 hw/ipmi/Kconfig                                    |   15 +
 hw/ipmi/Makefile.objs                              |    5 +-
 hw/ipmi/ipmi.c                                     |   12 +-
 hw/ipmi/ipmi_bmc_extern.c                          |   20 +-
 hw/ipmi/ipmi_bmc_sim.c                             |   84 +-
 hw/ipmi/ipmi_bt.c                                  |  437 ++
 hw/ipmi/ipmi_kcs.c                                 |  423 +
 hw/ipmi/isa_ipmi_bt.c                              |  454 +-
 hw/ipmi/isa_ipmi_kcs.c                             |  430 +-
 hw/ipmi/pci_ipmi_bt.c                              |  148 +
 hw/ipmi/pci_ipmi_kcs.c                             |  148 +
 hw/ipmi/smbus_ipmi.c                               |  384 +
 hw/isa/Kconfig                                     |   15 +-
 hw/isa/Makefile.objs                               |    3 +-
 hw/isa/apm.c                                       |    2 +-
 hw/isa/i82378.c                                    |    4 +-
 hw/isa/isa-bus.c                                   |   11 +-
 hw/isa/isa-superio.c                               |    3 +-
 hw/isa/lpc_ich9.c                                  |   39 +-
 hw/isa/pc87312.c                                   |    4 +-
 hw/isa/piix3.c                                     |  399 +
 hw/isa/piix4.c                                     |  150 +-
 hw/isa/smc37c669-superio.c                         |    2 +-
 hw/isa/vt82c686.c                                  |   39 +-
 hw/lm32/lm32.h                                     |    1 +
 hw/lm32/lm32_boards.c                              |   49 +-
 hw/lm32/milkymist-hw.h                             |    2 +-
 hw/lm32/milkymist.c                                |   28 +-
 hw/m68k/Kconfig                                    |   15 +
 hw/m68k/Makefile.objs                              |    2 +
 hw/m68k/an5206.c                                   |    8 +-
 hw/m68k/bootinfo.h                                 |  114 +
 hw/m68k/mcf5206.c                                  |   16 +-
 hw/m68k/mcf5208.c                                  |   21 +-
 hw/m68k/mcf_intc.c                                 |    1 +
 hw/m68k/next-cube.c                                |  984 +++
 hw/m68k/next-kbd.c                                 |  291 +
 hw/m68k/q800.c                                     |  455 ++
 hw/mem/Kconfig                                     |    2 +-
 hw/mem/Makefile.objs                               |    2 +-
 hw/mem/memory-device.c                             |   10 +-
 hw/mem/nvdimm.c                                    |   44 +-
 hw/mem/pc-dimm.c                                   |    8 +-
 hw/microblaze/Kconfig                              |    1 +
 hw/microblaze/boot.c                               |    6 +-
 hw/microblaze/boot.h                               |    1 -
 hw/microblaze/petalogix_ml605_mmu.c                |    3 +-
 hw/microblaze/petalogix_s3adsp1800_mmu.c           |    3 +-
 hw/microblaze/xlnx-zynqmp-pmu.c                    |    1 -
 hw/mips/Kconfig                                    |    1 +
 hw/mips/addr.c                                     |    1 -
 hw/mips/boston.c                                   |   18 +-
 hw/mips/cps.c                                      |   12 +-
 hw/mips/gt64xxx_pci.c                              |   26 +-
 hw/mips/mips_fulong2e.c                            |  130 +-
 hw/mips/mips_int.c                                 |    8 +-
 hw/mips/mips_jazz.c                                |  108 +-
 hw/mips/mips_malta.c                               |  443 +-
 hw/mips/mips_mipssim.c                             |   50 +-
 hw/mips/mips_r4k.c                                 |   80 +-
 hw/mips/trace-events                               |    4 +-
 hw/misc/Kconfig                                    |   14 +
 hw/misc/Makefile.objs                              |  102 +-
 hw/misc/a9scu.c                                    |    4 +-
 hw/misc/allwinner-cpucfg.c                         |  282 +
 hw/misc/allwinner-h3-ccu.c                         |  242 +
 hw/misc/allwinner-h3-dramc.c                       |  358 +
 hw/misc/allwinner-h3-sysctrl.c                     |  140 +
 hw/misc/allwinner-sid.c                            |  168 +
 hw/misc/applesmc.c                                 |    4 +-
 hw/misc/arm11scu.c                                 |    3 +-
 hw/misc/arm_integrator_debug.c                     |    1 -
 hw/misc/arm_l2x0.c                                 |    4 +-
 hw/misc/arm_sysctl.c                               |    8 +-
 hw/misc/armsse-cpuid.c                             |    4 +-
 hw/misc/armsse-mhu.c                               |    3 +-
 hw/misc/aspeed_scu.c                               |  395 +-
 hw/misc/aspeed_sdmc.c                              |  320 +-
 hw/misc/aspeed_xdma.c                              |    2 +
 hw/misc/bcm2835_mbox.c                             |   20 +-
 hw/misc/bcm2835_property.c                         |   29 +-
 hw/misc/bcm2835_rng.c                              |    1 +
 hw/misc/bcm2835_thermal.c                          |  135 +
 hw/misc/cbus.c                                     |    2 +-
 hw/misc/debugexit.c                                |    4 +-
 hw/misc/eccmemctl.c                                |    5 +-
 hw/misc/edu.c                                      |   14 +-
 hw/misc/exynos4210_clk.c                           |    1 +
 hw/misc/exynos4210_pmu.c                           |    3 +-
 hw/misc/exynos4210_rng.c                           |    1 +
 hw/misc/grlib_ahb_apb_pnp.c                        |   12 +
 hw/misc/imx25_ccm.c                                |    1 +
 hw/misc/imx2_wdt.c                                 |    2 +-
 hw/misc/imx31_ccm.c                                |    1 +
 hw/misc/imx6_ccm.c                                 |    1 +
 hw/misc/imx6_src.c                                 |    5 +-
 hw/misc/imx6ul_ccm.c                               |    1 +
 hw/misc/imx7_ccm.c                                 |    1 +
 hw/misc/imx7_gpr.c                                 |    1 -
 hw/misc/imx7_snvs.c                                |    2 +-
 hw/misc/imx_rngc.c                                 |  278 +
 hw/misc/iotkit-secctl.c                            |    4 +-
 hw/misc/iotkit-sysctl.c                            |    6 +-
 hw/misc/iotkit-sysinfo.c                           |    4 +-
 hw/misc/ivshmem.c                                  |   49 +-
 hw/misc/mac_via.c                                  | 1140 +++
 hw/misc/macio/cuda.c                               |    7 +-
 hw/misc/macio/gpio.c                               |    3 +-
 hw/misc/macio/mac_dbdma.c                          |    3 +-
 hw/misc/macio/macio.c                              |    8 +-
 hw/misc/macio/pmu.c                                |    8 +-
 hw/misc/max111x.c                                  |    5 +-
 hw/misc/milkymist-hpdmc.c                          |    2 +-
 hw/misc/milkymist-pfpu.c                           |    3 +-
 hw/misc/mips_cmgcr.c                               |    6 +-
 hw/misc/mips_cpc.c                                 |    4 +-
 hw/misc/mips_itu.c                                 |    3 +-
 hw/misc/mos6522.c                                  |   96 +-
 hw/misc/mps2-fpgaio.c                              |    4 +-
 hw/misc/mps2-scc.c                                 |    4 +-
 hw/misc/msf2-sysreg.c                              |    4 +-
 hw/misc/mst_fpga.c                                 |    3 +-
 hw/misc/nrf51_rng.c                                |    5 +-
 hw/misc/omap_clk.c                                 |    2 +
 hw/misc/omap_gpmc.c                                |    3 +-
 hw/misc/omap_l4.c                                  |    3 +-
 hw/misc/omap_sdrc.c                                |    1 -
 hw/misc/pc-testdev.c                               |    5 +-
 hw/misc/pca9552.c                                  |   92 +-
 hw/misc/pci-testdev.c                              |    4 +-
 hw/misc/puv3_pm.c                                  |    1 -
 hw/misc/pvpanic.c                                  |   16 +-
 hw/misc/sga.c                                      |    1 -
 hw/misc/slavio_misc.c                              |    4 +-
 hw/misc/stm32f4xx_exti.c                           |  188 +
 hw/misc/stm32f4xx_syscfg.c                         |  171 +
 hw/misc/tmp105.c                                   |    3 +-
 hw/misc/tmp421.c                                   |    6 +-
 hw/misc/trace-events                               |   65 +-
 hw/misc/tz-mpc.c                                   |    5 +-
 hw/misc/tz-msc.c                                   |    5 +-
 hw/misc/tz-ppc.c                                   |    5 +-
 hw/misc/unimp.c                                    |    3 +-
 hw/misc/vmcoreinfo.c                               |    6 +
 hw/misc/zynq-xadc.c                                |    4 +-
 hw/misc/zynq_slcr.c                                |  476 +-
 hw/moxie/moxiesim.c                                |    7 +-
 hw/net/Kconfig                                     |   17 +
 hw/net/Makefile.objs                               |   10 +-
 hw/net/allwinner-sun8i-emac.c                      |  867 ++
 hw/net/allwinner_emac.c                            |    7 +-
 hw/net/cadence_gem.c                               |   54 +-
 hw/net/can/can_kvaser_pci.c                        |    4 +-
 hw/net/can/can_mioe3680_pci.c                      |    4 +-
 hw/net/can/can_pcm3680_pci.c                       |    4 +-
 hw/net/can/can_sja1000.c                           |   16 +-
 hw/net/can/can_sja1000.h                           |    3 +-
 hw/net/dp8393x.c                                   |  364 +-
 hw/net/e1000.c                                     |   15 +-
 hw/net/e1000e.c                                    |    9 +-
 hw/net/e1000e_core.c                               |   26 +-
 hw/net/e1000e_core.h                               |    2 +-
 hw/net/e1000x_common.c                             |    1 -
 hw/net/eepro100.c                                  |   11 +-
 hw/net/etraxfs_eth.c                               |   46 +-
 hw/net/fsl_etsec/etsec.c                           |   13 +-
 hw/net/fsl_etsec/etsec.h                           |    2 -
 hw/net/ftgmac100.c                                 |  185 +-
 hw/net/i82596.c                                    |  755 ++
 hw/net/i82596.h                                    |   55 +
 hw/net/imx_fec.c                                   |   24 +-
 hw/net/lan9118.c                                   |   17 +-
 hw/net/lance.c                                     |    9 +-
 hw/net/lasi_i82596.c                               |  189 +
 hw/net/mcf_fec.c                                   |    4 +-
 hw/net/milkymist-minimac2.c                        |    6 +-
 hw/net/mipsnet.c                                   |   46 +-
 hw/net/ne2000-isa.c                                |    4 +-
 hw/net/ne2000-pci.c                                |    6 +-
 hw/net/ne2000.c                                    |    4 +-
 hw/net/ne2000.h                                    |    1 -
 hw/net/net_rx_pkt.c                                |   44 +-
 hw/net/net_rx_pkt.h                                |    6 +-
 hw/net/opencores_eth.c                             |   11 +-
 hw/net/pcnet-pci.c                                 |    7 +-
 hw/net/pcnet.c                                     |    5 +-
 hw/net/pcnet.h                                     |    3 +-
 hw/net/rocker/rocker.c                             |   20 +-
 hw/net/rocker/rocker_desc.c                        |    1 -
 hw/net/rtl8139.c                                   |   27 +-
 hw/net/smc91c111.c                                 |   15 +-
 hw/net/spapr_llan.c                                |   12 +-
 hw/net/stellaris_enet.c                            |    5 +-
 hw/net/sungem.c                                    |   10 +-
 hw/net/sunhme.c                                    |    9 +-
 hw/net/trace-events                                |   41 +
 hw/net/tulip.c                                     | 1047 +++
 hw/net/tulip.h                                     |  267 +
 hw/net/vhost_net.c                                 |    4 +-
 hw/net/virtio-net.c                                |  384 +-
 hw/net/vmxnet3.c                                   |   59 +-
 hw/net/xen_nic.c                                   |    1 -
 hw/net/xgmac.c                                     |    5 +-
 hw/net/xilinx_axienet.c                            |   23 +-
 hw/net/xilinx_ethlite.c                            |    7 +-
 hw/nios2/10m50_devboard.c                          |    4 +-
 hw/nios2/boot.c                                    |    6 +-
 hw/nios2/boot.h                                    |    1 -
 hw/nios2/cpu_pic.c                                 |    1 +
 hw/nios2/generic_nommu.c                           |    2 -
 hw/nubus/Kconfig                                   |    2 +
 hw/nubus/Makefile.objs                             |    4 +
 hw/nubus/mac-nubus-bridge.c                        |   45 +
 hw/nubus/nubus-bridge.c                            |   34 +
 hw/nubus/nubus-bus.c                               |  111 +
 hw/nubus/nubus-device.c                            |  215 +
 hw/nvram/Kconfig                                   |    8 +
 hw/nvram/Makefile.objs                             |    6 +-
 hw/nvram/chrp_nvram.c                              |    1 -
 hw/nvram/ds1225y.c                                 |    4 +-
 hw/nvram/eeprom93xx.c                              |    9 +-
 hw/nvram/eeprom_at24c.c                            |    4 +-
 hw/nvram/fw_cfg.c                                  |  150 +-
 hw/nvram/mac_nvram.c                               |    5 +-
 hw/nvram/nrf51_nvm.c                               |    4 +-
 hw/nvram/spapr_nvram.c                             |   10 +-
 hw/openrisc/cputimer.c                             |    2 +-
 hw/openrisc/openrisc_sim.c                         |    8 +-
 hw/openrisc/pic_cpu.c                              |    2 +-
 hw/pci-bridge/gen_pcie_root_port.c                 |    4 +-
 hw/pci-bridge/i82801b11.c                          |    1 +
 hw/pci-bridge/ioh3420.c                            |    1 +
 hw/pci-bridge/pci_bridge_dev.c                     |    3 +-
 hw/pci-bridge/pci_expander_bridge.c                |   14 +-
 hw/pci-bridge/pcie_pci_bridge.c                    |    3 +-
 hw/pci-bridge/pcie_root_port.c                     |    5 +-
 hw/pci-bridge/xio3130_downstream.c                 |    6 +-
 hw/pci-bridge/xio3130_upstream.c                   |    1 +
 hw/pci-host/Kconfig                                |   11 +-
 hw/pci-host/Makefile.objs                          |    5 +-
 hw/pci-host/bonito.c                               |   67 +-
 hw/pci-host/designware.c                           |    5 +-
 hw/pci-host/gpex.c                                 |    4 +-
 hw/pci-host/grackle.c                              |    4 +-
 hw/pci-host/i440fx.c                               |  419 +
 hw/pci-host/pam.c                                  |    1 -
 hw/pci-host/piix.c                                 |  939 ---
 hw/pci-host/pnv_phb3.c                             | 1197 +++
 hw/pci-host/pnv_phb3_msi.c                         |  349 +
 hw/pci-host/pnv_phb3_pbcq.c                        |  359 +
 hw/pci-host/pnv_phb4.c                             | 1439 ++++
 hw/pci-host/pnv_phb4_pec.c                         |  595 ++
 hw/pci-host/ppce500.c                              |    6 +-
 hw/pci-host/prep.c                                 |   16 +-
 hw/pci-host/q35.c                                  |  106 +-
 hw/pci-host/sabre.c                                |    6 +-
 hw/pci-host/uninorth.c                             |    5 +-
 hw/pci-host/versatile.c                            |    5 +-
 hw/pci-host/xen_igd_pt.c                           |  120 +
 hw/pci-host/xilinx-pcie.c                          |    4 +-
 hw/pci/msix.c                                      |    3 +-
 hw/pci/pci-stub.c                                  |   27 +
 hw/pci/pci.c                                       |   96 +-
 hw/pci/pci_bridge.c                                |    2 +-
 hw/pci/pci_host.c                                  |   25 +-
 hw/pci/pcie.c                                      |   17 +-
 hw/pci/pcie_aer.c                                  |    1 +
 hw/pci/pcie_host.c                                 |    1 -
 hw/pci/pcie_port.c                                 |    6 +-
 hw/pci/shpc.c                                      |    1 +
 hw/pcmcia/Makefile.objs                            |    2 +-
 hw/pcmcia/pcmcia.c                                 |    1 -
 hw/pcmcia/pxa2xx.c                                 |    2 +-
 hw/ppc/Kconfig                                     |   22 +
 hw/ppc/Makefile.objs                               |   11 +-
 hw/ppc/e500.c                                      |   34 +-
 hw/ppc/e500plat.c                                  |    2 +-
 hw/ppc/mac.h                                       |    1 -
 hw/ppc/mac_newworld.c                              |   19 +-
 hw/ppc/mac_oldworld.c                              |   19 +-
 hw/ppc/mpc8544_guts.c                              |    3 +-
 hw/ppc/mpc8544ds.c                                 |    2 +-
 hw/ppc/pnv.c                                       |  988 ++-
 hw/ppc/pnv_bmc.c                                   |  170 +-
 hw/ppc/pnv_core.c                                  |   72 +-
 hw/ppc/pnv_homer.c                                 |  382 +
 hw/ppc/pnv_lpc.c                                   |   92 +-
 hw/ppc/pnv_occ.c                                   |   98 +-
 hw/ppc/pnv_pnor.c                                  |  141 +
 hw/ppc/pnv_psi.c                                   |  122 +-
 hw/ppc/pnv_xscom.c                                 |   74 +-
 hw/ppc/ppc.c                                       |  113 +-
 hw/ppc/ppc405_boards.c                             |   65 +-
 hw/ppc/ppc405_uc.c                                 |    5 +-
 hw/ppc/ppc440_bamboo.c                             |   24 +-
 hw/ppc/ppc440_pcix.c                               |    2 +-
 hw/ppc/ppc440_uc.c                                 |   14 +-
 hw/ppc/ppc4xx_devs.c                               |   71 +-
 hw/ppc/ppc4xx_pci.c                                |    4 +-
 hw/ppc/ppc_booke.c                                 |    5 +-
 hw/ppc/ppce500_spin.c                              |    1 -
 hw/ppc/prep.c                                      |  393 +-
 hw/ppc/prep_systemio.c                             |    7 +-
 hw/ppc/rs6000_mc.c                                 |   19 +-
 hw/ppc/sam460ex.c                                  |   12 +-
 hw/ppc/spapr.c                                     | 1511 ++--
 hw/ppc/spapr_caps.c                                |   90 +-
 hw/ppc/spapr_cpu_core.c                            |   82 +-
 hw/ppc/spapr_drc.c                                 |   84 +-
 hw/ppc/spapr_events.c                              |  329 +-
 hw/ppc/spapr_hcall.c                               |  299 +-
 hw/ppc/spapr_iommu.c                               |   17 +-
 hw/ppc/spapr_irq.c                                 |  912 +--
 hw/ppc/spapr_nvdimm.c                              |  478 ++
 hw/ppc/spapr_ovec.c                                |   35 +-
 hw/ppc/spapr_pci.c                                 |  150 +-
 hw/ppc/spapr_pci_nvlink2.c                         |   50 +-
 hw/ppc/spapr_rng.c                                 |    5 +-
 hw/ppc/spapr_rtas.c                                |  209 +-
 hw/ppc/spapr_rtc.c                                 |    1 +
 hw/ppc/spapr_tpm_proxy.c                           |  178 +
 hw/ppc/spapr_vio.c                                 |   19 +-
 hw/ppc/trace-events                                |    8 +-
 hw/ppc/virtex_ml507.c                              |   25 +-
 hw/rdma/rdma_backend.c                             |   58 +-
 hw/rdma/rdma_backend.h                             |    2 +-
 hw/rdma/rdma_rm.c                                  |   10 +-
 hw/rdma/vmw/pvrdma_cmd.c                           |    1 -
 hw/rdma/vmw/pvrdma_dev_ring.c                      |    5 +-
 hw/rdma/vmw/pvrdma_main.c                          |   14 +-
 hw/rdma/vmw/pvrdma_qp_ops.c                        |    4 +-
 hw/riscv/Kconfig                                   |    4 +
 hw/riscv/Makefile.objs                             |    4 +-
 hw/riscv/boot.c                                    |   42 +-
 hw/riscv/riscv_hart.c                              |   38 +-
 hw/riscv/riscv_htif.c                              |    2 +-
 hw/riscv/sifive_clint.c                            |    9 +-
 hw/riscv/sifive_e.c                                |   42 +-
 hw/riscv/sifive_e_prci.c                           |  124 +
 hw/riscv/sifive_gpio.c                             |    2 +
 hw/riscv/sifive_plic.c                             |   15 +-
 hw/riscv/sifive_prci.c                             |  123 -
 hw/riscv/sifive_test.c                             |   11 +-
 hw/riscv/sifive_u.c                                |  362 +-
 hw/riscv/sifive_u_otp.c                            |  191 +
 hw/riscv/sifive_u_prci.c                           |  169 +
 hw/riscv/sifive_uart.c                             |   14 +-
 hw/riscv/spike.c                                   |   22 +-
 hw/riscv/virt.c                                    |  220 +-
 hw/rtc/Kconfig                                     |   27 +
 hw/rtc/Makefile.objs                               |   15 +
 hw/rtc/allwinner-rtc.c                             |  411 +
 hw/rtc/aspeed_rtc.c                                |  181 +
 hw/rtc/ds1338.c                                    |  241 +
 hw/rtc/exynos4210_rtc.c                            |  608 ++
 hw/rtc/goldfish_rtc.c                              |  285 +
 hw/rtc/m41t80.c                                    |  119 +
 hw/rtc/m48t59-internal.h                           |   75 +
 hw/rtc/m48t59-isa.c                                |  184 +
 hw/rtc/m48t59.c                                    |  722 ++
 hw/rtc/mc146818rtc.c                               | 1033 +++
 hw/rtc/pl031.c                                     |  340 +
 hw/rtc/sun4v-rtc.c                                 |   95 +
 hw/rtc/trace-events                                |   33 +
 hw/rtc/twl92230.c                                  |  897 +++
 hw/rtc/xlnx-zynqmp-rtc.c                           |  275 +
 hw/s390x/3270-ccw.c                                |    4 +-
 hw/s390x/ap-device.c                               |    1 -
 hw/s390x/ccw-device.c                              |    3 +-
 hw/s390x/css-bridge.c                              |    3 +-
 hw/s390x/css.c                                     |   14 +-
 hw/s390x/event-facility.c                          |   46 +-
 hw/s390x/ipl.c                                     |   51 +-
 hw/s390x/ipl.h                                     |   20 +-
 hw/s390x/s390-ccw.c                                |    1 +
 hw/s390x/s390-pci-bus.c                            |   12 +-
 hw/s390x/s390-pci-inst.c                           |   71 +-
 hw/s390x/s390-skeys.c                              |    7 +-
 hw/s390x/s390-stattrib-kvm.c                       |    4 +-
 hw/s390x/s390-stattrib.c                           |    6 +-
 hw/s390x/s390-virtio-ccw.c                         |  107 +-
 hw/s390x/sclp.c                                    |   70 +-
 hw/s390x/sclpcpu.c                                 |    1 -
 hw/s390x/sclpquiesce.c                             |    4 +-
 hw/s390x/tod-kvm.c                                 |    2 +-
 hw/s390x/tod.c                                     |    3 +-
 hw/s390x/vhost-vsock-ccw.c                         |    3 +-
 hw/s390x/virtio-ccw-9p.c                           |    3 +-
 hw/s390x/virtio-ccw-balloon.c                      |    3 +-
 hw/s390x/virtio-ccw-blk.c                          |    3 +-
 hw/s390x/virtio-ccw-crypto.c                       |    3 +-
 hw/s390x/virtio-ccw-gpu.c                          |    3 +-
 hw/s390x/virtio-ccw-input.c                        |    3 +-
 hw/s390x/virtio-ccw-net.c                          |    3 +-
 hw/s390x/virtio-ccw-rng.c                          |    3 +-
 hw/s390x/virtio-ccw-scsi.c                         |    5 +-
 hw/s390x/virtio-ccw-serial.c                       |    3 +-
 hw/s390x/virtio-ccw.c                              |   11 +-
 hw/scsi/Kconfig                                    |    1 +
 hw/scsi/esp-pci.c                                  |    2 +
 hw/scsi/esp.c                                      |  338 +-
 hw/scsi/lsi53c895a.c                               |   44 +-
 hw/scsi/megasas.c                                  |    5 +-
 hw/scsi/mptconfig.c                                |    1 -
 hw/scsi/mptendian.c                                |    1 -
 hw/scsi/mptsas.c                                   |    7 +-
 hw/scsi/scsi-bus.c                                 |   37 +-
 hw/scsi/scsi-disk.c                                |   63 +-
 hw/scsi/scsi-generic.c                             |    4 +-
 hw/scsi/spapr_vscsi.c                              |   78 +-
 hw/scsi/trace-events                               |    3 +-
 hw/scsi/vhost-scsi.c                               |    7 +-
 hw/scsi/vhost-user-scsi.c                          |   30 +-
 hw/scsi/viosrp.h                                   |    3 +-
 hw/scsi/virtio-scsi.c                              |   34 +-
 hw/scsi/vmw_pvscsi.c                               |   20 +-
 hw/sd/Makefile.objs                                |   10 +-
 hw/sd/allwinner-sdhost.c                           |  854 ++
 hw/sd/aspeed_sdhci.c                               |  205 +
 hw/sd/bcm2835_sdhost.c                             |    2 +
 hw/sd/milkymist-memcard.c                          |    4 +-
 hw/sd/omap_mmc.c                                   |    5 +-
 hw/sd/pl181.c                                      |    4 +-
 hw/sd/pxa2xx_mmci.c                                |    4 +-
 hw/sd/sd.c                                         |    6 +-
 hw/sd/sdhci-pci.c                                  |    4 +-
 hw/sd/sdhci.c                                      |   91 +-
 hw/sd/ssi-sd.c                                     |   18 +-
 hw/sd/trace-events                                 |    9 +-
 hw/semihosting/config.c                            |    1 +
 hw/semihosting/console.c                           |   79 +
 hw/sh4/r2d.c                                       |    7 +-
 hw/sh4/sh7750.c                                    |    3 +-
 hw/sh4/sh7750_regnames.c                           |    1 -
 hw/sh4/sh_pci.c                                    |   12 +-
 hw/sh4/shix.c                                      |    6 +-
 hw/smbios/smbios.c                                 |    2 -
 hw/smbios/smbios_type_38.c                         |    3 +
 hw/sparc/Kconfig                                   |    1 +
 hw/sparc/leon3.c                                   |   31 +-
 hw/sparc/sun4m.c                                   |   90 +-
 hw/sparc/sun4m_iommu.c                             |    5 +-
 hw/sparc64/Kconfig                                 |    2 +
 hw/sparc64/niagara.c                               |   37 +-
 hw/sparc64/sparc64.c                               |    1 +
 hw/sparc64/sun4u.c                                 |   26 +-
 hw/ssi/Makefile.objs                               |    4 +-
 hw/ssi/aspeed_smc.c                                |  644 +-
 hw/ssi/imx_spi.c                                   |    3 +-
 hw/ssi/mss-spi.c                                   |    2 +
 hw/ssi/omap_spi.c                                  |    2 +
 hw/ssi/pl022.c                                     |    2 +
 hw/ssi/ssi.c                                       |    1 +
 hw/ssi/stm32f2xx_spi.c                             |    1 +
 hw/ssi/trace-events                                |   11 +
 hw/ssi/xilinx_spi.c                                |    6 +-
 hw/ssi/xilinx_spips.c                              |   32 +-
 hw/timer/Kconfig                                   |   28 +-
 hw/timer/Makefile.objs                             |   36 +-
 hw/timer/a9gtimer.c                                |    8 +-
 hw/timer/allwinner-a10-pit.c                       |   17 +-
 hw/timer/altera_timer.c                            |   17 +-
 hw/timer/arm_mptimer.c                             |   22 +-
 hw/timer/arm_timer.c                               |   24 +-
 hw/timer/armv7m_systick.c                          |    8 +
 hw/timer/aspeed_rtc.c                              |  180 -
 hw/timer/aspeed_timer.c                            |  254 +-
 hw/timer/bcm2835_systmr.c                          |  163 +
 hw/timer/cadence_ttc.c                             |   18 +-
 hw/timer/cmsdk-apb-dualtimer.c                     |   19 +-
 hw/timer/cmsdk-apb-timer.c                         |   19 +-
 hw/timer/digic-timer.c                             |   17 +-
 hw/timer/ds1338.c                                  |  240 -
 hw/timer/etraxfs_timer.c                           |   26 +-
 hw/timer/exynos4210_mct.c                          |  113 +-
 hw/timer/exynos4210_pwm.c                          |   19 +-
 hw/timer/exynos4210_rtc.c                          |  597 --
 hw/timer/grlib_gptimer.c                           |   32 +-
 hw/timer/hpet.c                                    |   10 +-
 hw/timer/i8254.c                                   |    4 +-
 hw/timer/i8254_common.c                            |   41 +-
 hw/timer/imx_epit.c                                |   34 +-
 hw/timer/imx_gpt.c                                 |   23 +-
 hw/timer/lm32_timer.c                              |   21 +-
 hw/timer/m41t80.c                                  |  119 -
 hw/timer/m48t59-internal.h                         |   80 -
 hw/timer/m48t59-isa.c                              |  183 -
 hw/timer/m48t59.c                                  |  720 --
 hw/timer/mc146818rtc.c                             | 1078 ---
 hw/timer/milkymist-sysctl.c                        |   34 +-
 hw/timer/mips_gictimer.c                           |    1 -
 hw/timer/mss-timer.c                               |   16 +-
 hw/timer/nrf51_timer.c                             |    2 +
 hw/timer/omap_gptimer.c                            |    3 +-
 hw/timer/omap_synctimer.c                          |    1 -
 hw/timer/pl031.c                                   |  341 -
 hw/timer/puv3_ost.c                                |   10 +-
 hw/timer/pxa2xx_timer.c                            |   10 +-
 hw/timer/sh_timer.c                                |   14 +-
 hw/timer/slavio_timer.c                            |   37 +-
 hw/timer/stm32f2xx_timer.c                         |   10 +-
 hw/timer/sun4v-rtc.c                               |   96 -
 hw/timer/trace-events                              |   21 +-
 hw/timer/twl92230.c                                |  896 ---
 hw/timer/xilinx_timer.c                            |   17 +-
 hw/timer/xlnx-zynqmp-rtc.c                         |  274 -
 hw/tpm/Kconfig                                     |   18 +-
 hw/tpm/Makefile.objs                               |    5 +-
 hw/tpm/tpm_crb.c                                   |    4 +-
 hw/tpm/tpm_emulator.c                              |   13 +-
 hw/tpm/tpm_passthrough.c                           |    1 -
 hw/tpm/tpm_ppi.c                                   |    4 +-
 hw/tpm/tpm_spapr.c                                 |  429 +
 hw/tpm/tpm_tis.c                                   | 1048 ---
 hw/tpm/tpm_tis.h                                   |   91 +
 hw/tpm/tpm_tis_common.c                            |  872 +++
 hw/tpm/tpm_tis_isa.c                               |  170 +
 hw/tpm/tpm_tis_sysbus.c                            |  159 +
 hw/tpm/tpm_util.c                                  |   27 +-
 hw/tpm/tpm_util.h                                  |    3 +
 hw/tpm/trace-events                                |   20 +-
 hw/tricore/tricore_testboard.c                     |    5 +-
 hw/unicore32/puv3.c                                |    3 +-
 hw/usb/Kconfig                                     |    6 +-
 hw/usb/Makefile.objs                               |    9 +-
 hw/usb/bus.c                                       |    6 +-
 hw/usb/ccid-card-emulated.c                        |    3 +-
 hw/usb/ccid-card-passthru.c                        |   11 +-
 hw/usb/ccid.h                                      |    2 +-
 hw/usb/dev-audio.c                                 |  465 +-
 hw/usb/dev-bluetooth.c                             |  580 --
 hw/usb/dev-hid.c                                   |    9 +-
 hw/usb/dev-hub.c                                   |    4 +-
 hw/usb/dev-mtp.c                                   |   42 +-
 hw/usb/dev-network.c                               |    8 +-
 hw/usb/dev-serial.c                                |  113 +-
 hw/usb/dev-smartcard-reader.c                      |   10 +-
 hw/usb/dev-storage.c                               |    6 +-
 hw/usb/dev-uas.c                                   |    7 +-
 hw/usb/dev-wacom.c                                 |    2 +-
 hw/usb/hcd-ehci-pci.c                              |    4 +-
 hw/usb/hcd-ehci-sysbus.c                           |   28 +-
 hw/usb/hcd-ehci.c                                  |   10 +-
 hw/usb/hcd-ehci.h                                  |    3 +-
 hw/usb/hcd-ohci-pci.c                              |    5 +-
 hw/usb/hcd-ohci.c                                  |   21 +-
 hw/usb/hcd-ohci.h                                  |   16 +
 hw/usb/hcd-uhci.c                                  |    7 +-
 hw/usb/hcd-xhci-nec.c                              |    4 +-
 hw/usb/hcd-xhci.c                                  |   26 +-
 hw/usb/host-libusb.c                               |   56 +-
 hw/usb/imx-usb-phy.c                               |  225 +
 hw/usb/libhw.c                                     |    1 -
 hw/usb/quirks.c                                    |    4 +-
 hw/usb/quirks.h                                    |   22 +-
 hw/usb/redirect.c                                  |  116 +-
 hw/usb/trace-events                                |    1 +
 hw/usb/tusb6010.c                                  |    1 +
 hw/usb/xen-usb.c                                   |   11 +-
 hw/vfio/Kconfig                                    |    6 +
 hw/vfio/Makefile.objs                              |    1 +
 hw/vfio/amd-xgbe.c                                 |    1 +
 hw/vfio/ap.c                                       |   15 +-
 hw/vfio/calxeda-xgmac.c                            |    1 +
 hw/vfio/ccw.c                                      |    6 +-
 hw/vfio/common.c                                   |   58 +-
 hw/vfio/display.c                                  |    2 +-
 hw/vfio/igd.c                                      |  616 ++
 hw/vfio/pci-quirks.c                               |  623 +-
 hw/vfio/pci.c                                      |  108 +-
 hw/vfio/pci.h                                      |   19 +
 hw/vfio/platform.c                                 |    7 +-
 hw/vfio/spapr.c                                    |   17 +-
 hw/virtio/Kconfig                                  |    8 +
 hw/virtio/Makefile.objs                            |    8 +-
 hw/virtio/trace-events                             |   20 +
 hw/virtio/vhost-backend.c                          |    1 +
 hw/virtio/vhost-scsi-pci.c                         |    3 +-
 hw/virtio/vhost-user-blk-pci.c                     |    3 +-
 hw/virtio/vhost-user-fs-pci.c                      |   86 +
 hw/virtio/vhost-user-fs.c                          |  310 +
 hw/virtio/vhost-user-scsi-pci.c                    |    3 +-
 hw/virtio/vhost-user.c                             |   21 +-
 hw/virtio/vhost-vsock-pci.c                        |    3 +-
 hw/virtio/vhost-vsock.c                            |   23 +-
 hw/virtio/vhost.c                                  |   83 +-
 hw/virtio/virtio-9p-pci.c                          |    3 +-
 hw/virtio/virtio-balloon-pci.c                     |    3 +-
 hw/virtio/virtio-balloon.c                         |   10 +-
 hw/virtio/virtio-blk-pci.c                         |    3 +-
 hw/virtio/virtio-bus.c                             |    6 +-
 hw/virtio/virtio-crypto-pci.c                      |    3 +-
 hw/virtio/virtio-crypto.c                          |    8 +-
 hw/virtio/virtio-input-pci.c                       |    3 +-
 hw/virtio/virtio-iommu-pci.c                       |  104 +
 hw/virtio/virtio-iommu.c                           |  893 +++
 hw/virtio/virtio-mmio.c                            |  380 +-
 hw/virtio/virtio-net-pci.c                         |    3 +-
 hw/virtio/virtio-pci.c                             |   45 +-
 hw/virtio/virtio-pci.h                             |    4 +
 hw/virtio/virtio-pmem.c                            |    6 +-
 hw/virtio/virtio-rng.c                             |   26 +-
 hw/virtio/virtio-scsi-pci.c                        |    3 +-
 hw/virtio/virtio-serial-pci.c                      |    3 +-
 hw/virtio/virtio.c                                 | 1327 +++-
 hw/watchdog/cmsdk-apb-watchdog.c                   |   18 +-
 hw/watchdog/watchdog.c                             |    2 +-
 hw/watchdog/wdt_aspeed.c                           |  186 +-
 hw/watchdog/wdt_diag288.c                          |    2 +
 hw/watchdog/wdt_i6300esb.c                         |    2 +-
 hw/watchdog/wdt_ib700.c                            |    2 +-
 hw/xen/xen-bus-helper.c                            |    1 -
 hw/xen/xen-bus.c                                   |    4 +-
 hw/xen/xen-common.c                                |   26 +
 hw/xen/xen-legacy-backend.c                        |    7 +-
 hw/xen/xen_devconfig.c                             |    1 +
 hw/xen/xen_pt.c                                    |    5 +-
 hw/xen/xen_pt.h                                    |    2 +-
 hw/xen/xen_pt_graphics.c                           |    2 +-
 hw/xen/xen_pt_load_rom.c                           |    6 -
 hw/xen/xen_pvdev.c                                 |    1 +
 hw/xenpv/xen_machine_pv.c                          |    4 +-
 hw/xtensa/Kconfig                                  |    6 +
 hw/xtensa/Makefile.objs                            |    1 +
 hw/xtensa/mx_pic.c                                 |    2 +-
 hw/xtensa/pic_cpu.c                                |    2 +-
 hw/xtensa/sim.c                                    |   42 +-
 hw/xtensa/virt.c                                   |  135 +
 hw/xtensa/xtensa_memory.c                          |    2 -
 hw/xtensa/xtensa_memory.h                          |    1 -
 hw/xtensa/xtensa_sim.h                             |   34 +
 hw/xtensa/xtfpga.c                                 |    7 +-
 include/authz/listfile.h                           |    1 -
 include/block/accounting.h                         |    2 +
 include/block/aio-wait.h                           |   22 +
 include/block/aio.h                                |  142 +-
 include/block/aio_task.h                           |   54 +
 include/block/block-copy.h                         |   47 +
 include/block/block-hmp-cmds.h                     |   54 +
 include/block/block.h                              |   45 +-
 include/block/block_int.h                          |  123 +-
 include/block/blockjob_int.h                       |   19 -
 include/block/dirty-bitmap.h                       |   51 +-
 include/block/nbd.h                                |   23 +-
 include/block/nvme.h                               |   21 +-
 include/block/qapi.h                               |    4 +-
 include/block/raw-aio.h                            |   14 +
 include/block/snapshot.h                           |    2 +-
 include/block/write-threshold.h                    |    2 +
 include/chardev/char-fe.h                          |    3 +-
 include/chardev/char-io.h                          |    1 +
 include/chardev/char-mux.h                         |    2 +-
 include/chardev/char.h                             |    6 +-
 include/crypto/block.h                             |   24 +
 include/crypto/cipher.h                            |    2 +
 include/crypto/hmac.h                              |    2 +
 include/crypto/ivgen.h                             |    2 +
 include/crypto/tlssession.h                        |    4 +-
 include/disas/dis-asm.h                            |    8 +
 include/disas/disas.h                              |    3 +
 include/elf.h                                      |    1 +
 include/exec/cpu-all.h                             |   64 +-
 include/exec/cpu-common.h                          |   15 +-
 include/exec/cpu-defs.h                            |    6 +-
 include/exec/cpu_ldst.h                            |  430 +-
 include/exec/cpu_ldst_template.h                   |  210 -
 include/exec/cpu_ldst_useronly_template.h          |  157 -
 include/exec/cputlb.h                              |    3 +
 include/exec/exec-all.h                            |  104 +-
 include/exec/gdbstub.h                             |   80 +-
 include/exec/gen-icount.h                          |   44 +-
 include/exec/helper-gen.h                          |   14 +
 include/exec/helper-head.h                         |    2 +
 include/exec/helper-proto.h                        |    7 +
 include/exec/helper-tcg.h                          |    8 +
 include/exec/ioport.h                              |    2 +
 include/exec/log.h                                 |   36 +-
 include/exec/memattrs.h                            |    2 +
 include/exec/memop.h                               |  134 +
 include/exec/memory-internal.h                     |   67 +-
 include/exec/memory.h                              |  355 +-
 include/exec/plugin-gen.h                          |   71 +
 include/exec/poison.h                              |    2 +
 include/exec/ram_addr.h                            |  195 +-
 include/exec/ramblock.h                            |   64 +
 include/exec/softmmu-semi.h                        |    2 +
 include/exec/tb-hash.h                             |    2 +
 include/exec/translator.h                          |   40 +-
 include/exec/user/thunk.h                          |    2 +
 include/fpu/softfloat-helpers.h                    |  132 +
 include/fpu/softfloat-macros.h                     |    8 +-
 include/fpu/softfloat.h                            |   65 +-
 include/glib-compat.h                              |   42 +-
 include/hw/acpi/acpi-defs.h                        |   16 +-
 include/hw/acpi/acpi.h                             |    2 -
 include/hw/acpi/acpi_dev_interface.h               |    3 +
 include/hw/acpi/aml-build.h                        |   21 +-
 include/hw/acpi/generic_event_device.h             |  103 +
 include/hw/acpi/ipmi.h                             |    2 +-
 include/hw/acpi/memory_hotplug.h                   |    9 +-
 include/hw/acpi/pci.h                              |    3 +
 include/hw/acpi/piix4.h                            |    6 -
 include/hw/acpi/tco.h                              |    2 +
 include/hw/acpi/vmgenid.h                          |    2 +-
 include/hw/adc/stm32f2xx_adc.h                     |    2 +
 include/hw/arm/allwinner-a10.h                     |   20 +-
 include/hw/arm/allwinner-h3.h                      |  161 +
 include/hw/arm/aspeed.h                            |   25 +-
 include/hw/arm/aspeed_soc.h                        |   45 +-
 include/hw/arm/bcm2835_peripherals.h               |   21 +-
 include/hw/arm/bcm2836.h                           |    8 +-
 include/hw/arm/boot.h                              |   13 +-
 include/hw/arm/exynos4210.h                        |    7 +-
 include/hw/arm/fsl-imx25.h                         |   24 +
 include/hw/arm/fsl-imx31.h                         |    1 +
 include/hw/arm/fsl-imx6.h                          |    9 +
 include/hw/arm/fsl-imx6ul.h                        |   16 +-
 include/hw/arm/fsl-imx7.h                          |    1 -
 include/hw/arm/omap.h                              |   63 +-
 include/hw/arm/raspi_platform.h                    |   25 +-
 include/hw/arm/sharpsl.h                           |    3 +
 include/hw/arm/smmu-common.h                       |    2 +-
 include/hw/arm/soc_dma.h                           |    3 +-
 include/hw/arm/stm32f405_soc.h                     |   73 +
 include/hw/arm/virt.h                              |   23 +-
 include/hw/arm/xlnx-versal.h                       |    9 +
 include/hw/arm/xlnx-zynqmp.h                       |    4 +-
 include/hw/audio/pcspk.h                           |    2 +-
 include/hw/audio/wm8750.h                          |    1 -
 include/hw/block/block.h                           |   22 +-
 include/hw/block/fdc.h                             |    1 +
 include/hw/block/flash.h                           |    2 +-
 include/hw/block/swim.h                            |   76 +
 include/hw/boards.h                                |  103 +-
 include/hw/bt.h                                    | 2178 ------
 include/hw/char/bcm2835_aux.h                      |    3 +-
 include/hw/char/cadence_uart.h                     |    1 +
 include/hw/char/cmsdk-apb-uart.h                   |    1 +
 include/hw/char/escc.h                             |    2 +
 include/hw/char/lm32_juart.h                       |    2 +-
 include/hw/char/parallel.h                         |    1 -
 include/hw/char/pl011.h                            |    1 +
 include/hw/char/serial.h                           |   45 +-
 include/hw/char/stm32f2xx_usart.h                  |    1 -
 include/hw/char/xilinx_uartlite.h                  |    3 +
 include/hw/core/cpu.h                              | 1157 +++
 include/hw/core/generic-loader.h                   |    1 +
 include/hw/core/split-irq.h                        |    1 -
 include/hw/cpu/cluster.h                           |    2 +-
 include/hw/cpu/core.h                              |    2 +-
 include/hw/cris/etraxfs.h                          |   22 +-
 include/hw/cris/etraxfs_dma.h                      |    2 +
 include/hw/display/bcm2835_fb.h                    |    3 +-
 include/hw/display/blizzard.h                      |    1 -
 include/hw/display/edid.h                          |    2 +-
 include/hw/display/i2c-ddc.h                       |    1 +
 include/hw/display/macfb.h                         |   64 +
 include/hw/display/milkymist_tmu2.h                |    3 +-
 include/hw/display/tc6393xb.h                      |    3 -
 include/hw/display/vga.h                           |    2 +-
 include/hw/dma/bcm2835_dma.h                       |    4 +-
 include/hw/dma/i8257.h                             |    1 -
 include/hw/elf_ops.h                               |  130 +-
 include/hw/empty_slot.h                            |    2 +
 include/hw/gpio/aspeed_gpio.h                      |  100 +
 include/hw/gpio/bcm2835_gpio.h                     |    1 +
 include/hw/hw.h                                    |    9 -
 include/hw/i2c/aspeed_i2c.h                        |   38 +-
 include/hw/i2c/i2c.h                               |    2 +-
 include/hw/i2c/pm_smbus.h                          |    1 +
 include/hw/i2c/smbus_eeprom.h                      |    1 +
 include/hw/i386/apic_internal.h                    |    1 +
 include/hw/i386/ich9.h                             |    2 -
 include/hw/i386/intel_iommu.h                      |    9 +-
 include/hw/i386/ioapic_internal.h                  |    1 -
 include/hw/i386/microvm.h                          |   71 +
 include/hw/i386/pc.h                               |  130 +-
 include/hw/i386/topology.h                         |  215 +-
 include/hw/i386/x86.h                              |  136 +
 include/hw/ide.h                                   |    9 -
 include/hw/ide/internal.h                          |    9 +-
 include/hw/ide/pci.h                               |    3 +-
 include/hw/input/adb.h                             |    2 +-
 include/hw/input/gamepad.h                         |    1 -
 include/hw/input/hid.h                             |    1 -
 include/hw/input/i8042.h                           |    5 +-
 include/hw/input/lasips2.h                         |   16 +
 include/hw/input/ps2.h                             |    1 +
 include/hw/input/tsc2xxx.h                         |    1 -
 include/hw/intc/allwinner-a10-pic.h                |    2 +
 include/hw/intc/arm_gic.h                          |    2 +
 include/hw/intc/arm_gic_common.h                   |    1 +
 include/hw/intc/bcm2835_ic.h                       |    4 +-
 include/hw/intc/bcm2836_control.h                  |    3 +-
 include/hw/intc/heathrow_pic.h                     |    2 +
 include/hw/intc/i8259.h                            |   12 +
 include/hw/intc/mips_gic.h                         |    1 +
 include/hw/ipack/ipack.h                           |    2 +-
 include/hw/ipmi/ipmi.h                             |   51 +-
 include/hw/ipmi/ipmi_bt.h                          |   73 +
 include/hw/ipmi/ipmi_kcs.h                         |   76 +
 include/hw/irq.h                                   |    9 -
 include/hw/isa/apm.h                               |    1 -
 include/hw/isa/i8259_internal.h                    |    3 +-
 include/hw/isa/isa.h                               |   13 +-
 include/hw/isa/superio.h                           |    2 +-
 include/hw/isa/vt82c686.h                          |    1 +
 include/hw/loader.h                                |   27 +-
 include/hw/m68k/next-cube.h                        |   47 +
 include/hw/mem/memory-device.h                     |    3 +-
 include/hw/mem/nvdimm.h                            |    7 +
 include/hw/mem/pc-dimm.h                           |    4 +-
 include/hw/mips/cps.h                              |    1 +
 include/hw/mips/mips.h                             |    1 -
 include/hw/misc/allwinner-cpucfg.h                 |   52 +
 include/hw/misc/allwinner-h3-ccu.h                 |   66 +
 include/hw/misc/allwinner-h3-dramc.h               |  106 +
 include/hw/misc/allwinner-h3-sysctrl.h             |   67 +
 include/hw/misc/allwinner-sid.h                    |   60 +
 include/hw/misc/aspeed_scu.h                       |   28 +-
 include/hw/misc/aspeed_sdmc.h                      |   21 +-
 include/hw/misc/auxbus.h                           |    3 +-
 include/hw/misc/bcm2835_mbox.h                     |    4 +-
 include/hw/misc/bcm2835_mbox_defs.h                |    4 +-
 include/hw/misc/bcm2835_property.h                 |    4 +-
 include/hw/misc/bcm2835_thermal.h                  |   27 +
 include/hw/misc/cbus.h                             |    1 -
 include/hw/misc/imx_rngc.h                         |   35 +
 include/hw/misc/mac_via.h                          |  118 +
 include/hw/misc/macio/cuda.h                       |    2 +
 include/hw/misc/macio/gpio.h                       |    3 +
 include/hw/misc/macio/macio.h                      |    3 +
 include/hw/misc/macio/pmu.h                        |    3 +
 include/hw/misc/mips_cmgcr.h                       |    2 +
 include/hw/misc/mips_cpc.h                         |    2 +
 include/hw/misc/mos6522.h                          |    2 -
 include/hw/misc/pvpanic.h                          |    3 +
 include/hw/misc/stm32f2xx_syscfg.h                 |    1 -
 include/hw/misc/stm32f4xx_exti.h                   |   60 +
 include/hw/misc/stm32f4xx_syscfg.h                 |   61 +
 include/hw/misc/unimp.h                            |    1 +
 include/hw/misc/vmcoreinfo.h                       |    2 +-
 include/hw/net/allwinner-sun8i-emac.h              |   99 +
 include/hw/net/allwinner_emac.h                    |    1 +
 include/hw/net/ftgmac100.h                         |   17 +
 include/hw/net/lan9118.h                           |    1 -
 include/hw/net/lance.h                             |    1 +
 include/hw/net/lasi_82596.h                        |   29 +
 include/hw/net/ne2000-isa.h                        |    3 +-
 include/hw/net/smc91c111.h                         |    1 -
 include/hw/nmi.h                                   |    2 +-
 include/hw/nubus/mac-nubus-bridge.h                |   24 +
 include/hw/nubus/nubus.h                           |   69 +
 include/hw/nvram/chrp_nvram.h                      |    2 +
 include/hw/nvram/fw_cfg.h                          |   48 +
 include/hw/or-irq.h                                |    3 +-
 include/hw/pci-host/designware.h                   |    1 -
 include/hw/pci-host/gpex.h                         |    1 -
 include/hw/pci-host/i440fx.h                       |   51 +
 include/hw/pci-host/pnv_phb3.h                     |  164 +
 include/hw/pci-host/pnv_phb3_regs.h                |  450 ++
 include/hw/pci-host/pnv_phb4.h                     |  230 +
 include/hw/pci-host/pnv_phb4_regs.h                |  553 ++
 include/hw/pci-host/q35.h                          |   19 +-
 include/hw/pci-host/sabre.h                        |    2 +
 include/hw/pci-host/spapr.h                        |   35 +-
 include/hw/pci-host/uninorth.h                     |    3 +-
 include/hw/pci-host/xilinx-pcie.h                  |    1 -
 include/hw/pci/pci.h                               |    9 +-
 include/hw/pci/pci_bridge.h                        |    2 +-
 include/hw/pci/pci_host.h                          |    4 +-
 include/hw/pci/pci_ids.h                           |    1 +
 include/hw/pci/pcie.h                              |    3 +-
 include/hw/pci/pcie_aer.h                          |    2 +-
 include/hw/pci/pcie_port.h                         |    4 +
 include/hw/pci/shpc.h                              |    1 +
 include/hw/pcmcia.h                                |    2 +-
 include/hw/ppc/openpic.h                           |    3 +-
 include/hw/ppc/pnv.h                               |  128 +-
 include/hw/ppc/pnv_core.h                          |    5 +
 include/hw/ppc/pnv_homer.h                         |   56 +
 include/hw/ppc/pnv_lpc.h                           |    6 +-
 include/hw/ppc/pnv_occ.h                           |    7 +
 include/hw/ppc/pnv_pnor.h                          |   30 +
 include/hw/ppc/pnv_psi.h                           |    5 +-
 include/hw/ppc/pnv_xive.h                          |   13 +-
 include/hw/ppc/pnv_xscom.h                         |   78 +-
 include/hw/ppc/ppc.h                               |    8 +-
 include/hw/ppc/ppc4xx.h                            |   12 +-
 include/hw/ppc/spapr.h                             |   83 +-
 include/hw/ppc/spapr_cpu_core.h                    |    7 +-
 include/hw/ppc/spapr_drc.h                         |   18 +-
 include/hw/ppc/spapr_irq.h                         |   96 +-
 include/hw/ppc/spapr_nvdimm.h                      |   37 +
 include/hw/ppc/spapr_ovec.h                        |    9 +-
 include/hw/ppc/spapr_tpm_proxy.h                   |   31 +
 include/hw/ppc/spapr_vio.h                         |   13 +-
 include/hw/ppc/spapr_xive.h                        |   22 +-
 include/hw/ppc/xics.h                              |   40 +-
 include/hw/ppc/xics_spapr.h                        |   11 +-
 include/hw/ppc/xive.h                              |   93 +-
 include/hw/ppc/xive_regs.h                         |   64 +-
 include/hw/ptimer.h                                |   91 +-
 include/hw/qdev-core.h                             |  114 +-
 include/hw/qdev-properties.h                       |   43 +-
 include/hw/qdev.h                                  |    8 -
 include/hw/registerfields.h                        |   30 +
 include/hw/resettable.h                            |  247 +
 include/hw/riscv/boot.h                            |    6 +-
 include/hw/riscv/riscv_hart.h                      |    4 +
 include/hw/riscv/riscv_htif.h                      |    2 -
 include/hw/riscv/sifive_clint.h                    |    5 +-
 include/hw/riscv/sifive_cpu.h                      |   31 +
 include/hw/riscv/sifive_e.h                        |    8 +-
 include/hw/riscv/sifive_e_prci.h                   |   71 +
 include/hw/riscv/sifive_plic.h                     |    5 +-
 include/hw/riscv/sifive_prci.h                     |   69 -
 include/hw/riscv/sifive_test.h                     |    5 +-
 include/hw/riscv/sifive_u.h                        |   44 +-
 include/hw/riscv/sifive_u_otp.h                    |   80 +
 include/hw/riscv/sifive_u_prci.h                   |   91 +
 include/hw/riscv/sifive_uart.h                     |    3 +
 include/hw/riscv/spike.h                           |    7 +-
 include/hw/riscv/virt.h                            |   19 +-
 include/hw/rtc/allwinner-rtc.h                     |  134 +
 include/hw/rtc/aspeed_rtc.h                        |   27 +
 include/hw/rtc/goldfish_rtc.h                      |   46 +
 include/hw/rtc/m48t59.h                            |   57 +
 include/hw/rtc/mc146818rtc.h                       |   56 +
 include/hw/rtc/mc146818rtc_regs.h                  |   89 +
 include/hw/rtc/pl031.h                             |   47 +
 include/hw/rtc/sun4v-rtc.h                         |   19 +
 include/hw/rtc/xlnx-zynqmp-rtc.h                   |   92 +
 include/hw/s390x/ap-device.h                       |    3 +
 include/hw/s390x/css-bridge.h                      |    3 +-
 include/hw/s390x/css.h                             |    1 +
 include/hw/s390x/event-facility.h                  |    4 +-
 include/hw/s390x/sclp.h                            |    9 +-
 include/hw/s390x/storage-attributes.h              |    2 +-
 include/hw/s390x/storage-keys.h                    |    2 +-
 include/hw/s390x/tod.h                             |    4 +-
 include/hw/scsi/esp.h                              |   15 +
 include/hw/scsi/scsi.h                             |    5 +-
 include/hw/sd/allwinner-sdhost.h                   |  135 +
 include/hw/sd/aspeed_sdhci.h                       |   35 +
 include/hw/sd/sd.h                                 |    2 +-
 include/hw/sd/sdhci.h                              |    2 +
 include/hw/semihosting/console.h                   |   18 +
 include/hw/semihosting/semihost.h                  |    4 +
 include/hw/sh4/sh_intc.h                           |    2 +-
 include/hw/southbridge/piix.h                      |   73 +
 include/hw/sparc/grlib.h                           |    1 -
 include/hw/sparc/sparc64.h                         |    2 +
 include/hw/ssi/aspeed_smc.h                        |   13 +
 include/hw/ssi/ssi.h                               |    2 +-
 include/hw/ssi/stm32f2xx_spi.h                     |    1 -
 include/hw/ssi/xilinx_spips.h                      |    1 +
 include/hw/sysbus.h                                |   15 +-
 include/hw/timer/allwinner-a10-pit.h               |    1 +
 include/hw/timer/aspeed_rtc.h                      |   31 -
 include/hw/timer/aspeed_timer.h                    |   18 +
 include/hw/timer/bcm2835_systmr.h                  |   33 +
 include/hw/timer/cmsdk-apb-timer.h                 |    1 +
 include/hw/timer/i8254.h                           |    3 +-
 include/hw/timer/i8254_internal.h                  |    2 +-
 include/hw/timer/m48t59.h                          |   31 -
 include/hw/timer/mc146818rtc.h                     |   14 -
 include/hw/timer/mc146818rtc_regs.h                |   88 -
 include/hw/timer/mss-timer.h                       |    1 -
 include/hw/timer/pl031.h                           |   46 -
 include/hw/timer/stm32f2xx_timer.h                 |    1 -
 include/hw/timer/sun4v-rtc.h                       |    1 -
 include/hw/timer/xlnx-zynqmp-rtc.h                 |   91 -
 include/hw/tricore/tricore.h                       |    1 -
 include/hw/usb.h                                   |    3 +-
 include/hw/usb/imx-usb-phy.h                       |   53 +
 include/hw/vfio/vfio-common.h                      |    2 +-
 include/hw/vfio/vfio-platform.h                    |    1 -
 include/hw/virtio/vhost-scsi-common.h              |    1 -
 include/hw/virtio/vhost-scsi.h                     |    1 -
 include/hw/virtio/vhost-user-blk.h                 |    5 +-
 include/hw/virtio/vhost-user-fs.h                  |   46 +
 include/hw/virtio/vhost-user-scsi.h                |    1 -
 include/hw/virtio/vhost-vsock.h                    |    2 +
 include/hw/virtio/vhost.h                          |    1 -
 include/hw/virtio/virtio-access.h                  |    1 +
 include/hw/virtio/virtio-blk.h                     |    2 +
 include/hw/virtio/virtio-bus.h                     |    3 +-
 include/hw/virtio/virtio-gpu-bswap.h               |    1 +
 include/hw/virtio/virtio-iommu.h                   |   61 +
 include/hw/virtio/virtio-mmio.h                    |   73 +
 include/hw/virtio/virtio-net.h                     |   14 +
 include/hw/virtio/virtio-pmem.h                    |    2 +-
 include/hw/virtio/virtio-rng.h                     |    3 +-
 include/hw/virtio/virtio-scsi.h                    |    1 +
 include/hw/virtio/virtio-serial.h                  |    1 -
 include/hw/virtio/virtio.h                         |   54 +-
 include/hw/vmstate-if.h                            |   40 +
 include/hw/watchdog/wdt_aspeed.h                   |   21 +-
 include/hw/watchdog/wdt_diag288.h                  |    2 +-
 include/hw/xen/interface/io/blkif.h                |    2 +-
 include/hw/xen/interface/io/ring.h                 |   13 +-
 include/hw/xen/xen-legacy-backend.h                |    1 -
 include/hw/xen/xen.h                               |    1 -
 include/hw/xen/xen_common.h                        |    2 -
 include/hw/xtensa/mx_pic.h                         |    1 -
 include/io/channel-socket.h                        |    4 +
 include/io/net-listener.h                          |    2 +
 include/io/task.h                                  |    2 +-
 include/libdecnumber/decNumberLocal.h              |    1 +
 include/migration/cpu.h                            |    5 +
 include/migration/global_state.h                   |    1 -
 include/migration/misc.h                           |    2 +-
 include/migration/qemu-file-types.h                |    4 +
 include/migration/register.h                       |    9 +-
 include/migration/vmstate.h                        |   76 +-
 include/monitor/hmp-target.h                       |    2 +
 include/monitor/hmp.h                              |   26 +-
 include/monitor/monitor.h                          |    9 +-
 include/monitor/qdev.h                             |    2 -
 include/net/can_emu.h                              |    3 +-
 include/net/filter.h                               |    3 +
 include/net/net.h                                  |    5 +-
 include/qapi/error.h                               |    8 +-
 include/qapi/qmp/dispatch.h                        |    9 +-
 include/qapi/qmp/qstring.h                         |    1 +
 include/qapi/visitor.h                             |    8 +-
 include/qemu-common.h                              |    9 +-
 include/qemu/atomic.h                              |    6 +
 include/qemu/atomic128.h                           |    2 +
 include/qemu/bitops.h                              |   91 +-
 include/qemu/co-shared-resource.h                  |   71 +
 include/qemu/compiler.h                            |   33 +
 include/qemu/coroutine.h                           |   38 +-
 include/qemu/cpuid.h                               |    3 +
 include/qemu/cutils.h                              |    3 +
 include/qemu/dbus.h                                |   19 +
 include/qemu/error-report.h                        |    3 +-
 include/qemu/fifo8.h                               |    1 -
 include/qemu/hbitmap.h                             |  102 +-
 include/qemu/id.h                                  |    1 +
 include/qemu/iov.h                                 |   10 +-
 include/qemu/job.h                                 |   26 +-
 include/qemu/lockable.h                            |   86 +-
 include/qemu/log.h                                 |   51 +-
 include/qemu/main-loop.h                           |    8 +
 include/qemu/memfd.h                               |    4 +
 include/qemu/module.h                              |    8 +-
 include/qemu/nvdimm-utils.h                        |    7 +
 include/qemu/osdep.h                               |   32 +-
 include/qemu/plugin-memory.h                       |   40 +
 include/qemu/plugin.h                              |  255 +
 include/qemu/progress_meter.h                      |   58 +
 include/qemu/qemu-plugin.h                         |  412 +
 include/qemu/queue.h                               |   93 +-
 include/qemu/range.h                               |    2 -
 include/qemu/ratelimit.h                           |    2 +
 include/qemu/rcu.h                                 |   25 +
 include/qemu/rcu_queue.h                           |   47 +
 include/qemu/selfmap.h                             |   44 +
 include/qemu/seqlock.h                             |    4 +-
 include/qemu/sockets.h                             |    2 +-
 include/qemu/thread-win32.h                        |    2 +-
 include/qemu/thread.h                              |   29 +-
 include/qemu/timer.h                               |   48 +-
 include/qemu/typedefs.h                            |   38 +-
 include/qom/cpu.h                                  | 1129 ---
 include/qom/object.h                               |  184 +-
 include/qom/object_interfaces.h                    |   19 +
 include/standard-headers/asm-x86/bootparam.h       |    9 +-
 include/standard-headers/asm-x86/kvm_para.h        |    3 +
 .../infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h      |   15 +-
 include/standard-headers/drm/drm_fourcc.h          |   52 +-
 include/standard-headers/linux/ethtool.h           |   41 +
 include/standard-headers/linux/fuse.h              |  891 +++
 include/standard-headers/linux/input-event-codes.h |   77 +
 include/standard-headers/linux/input.h             |    1 +
 include/standard-headers/linux/pci_regs.h          |   23 +-
 include/standard-headers/linux/virtio_fs.h         |   19 +
 include/standard-headers/linux/virtio_ids.h        |    2 +
 include/standard-headers/linux/virtio_iommu.h      |  165 +
 include/standard-headers/linux/virtio_pmem.h       |    6 +-
 include/standard-headers/linux/virtio_ring.h       |    2 +-
 include/standard-headers/rdma/vmw_pvrdma-abi.h     |    5 +
 include/sysemu/accel.h                             |    7 +-
 include/sysemu/arch_init.h                         |    4 +-
 include/sysemu/balloon.h                           |    1 +
 include/sysemu/block-backend.h                     |   12 +-
 include/sysemu/blockdev.h                          |    4 -
 include/sysemu/bt.h                                |   20 -
 include/sysemu/cpus.h                              |    2 -
 include/sysemu/cryptodev-vhost-user.h              |    3 +
 include/sysemu/cryptodev.h                         |    3 +-
 include/sysemu/dma.h                               |    1 -
 include/sysemu/hax.h                               |    1 -
 include/sysemu/hostmem.h                           |   21 +-
 include/sysemu/hvf.h                               |    2 +-
 include/sysemu/hw_accel.h                          |    2 +-
 include/sysemu/iothread.h                          |    1 +
 include/sysemu/kvm.h                               |   20 +-
 include/sysemu/kvm_int.h                           |    3 +-
 include/sysemu/memory_mapping.h                    |    1 +
 include/sysemu/numa.h                              |   97 +-
 include/sysemu/os-win32.h                          |    2 -
 include/sysemu/qtest.h                             |    6 +-
 include/sysemu/replay.h                            |   19 +-
 include/sysemu/rng.h                               |    3 +
 include/sysemu/runstate.h                          |   69 +
 include/sysemu/sysemu.h                            |   87 +-
 include/sysemu/tpm.h                               |   10 +-
 include/sysemu/whpx.h                              |    7 +
 include/sysemu/xen-mapcache.h                      |    2 +
 include/tcg/tcg-gvec-desc.h                        |   54 +
 include/tcg/tcg-mo.h                               |   48 +
 include/tcg/tcg-op-gvec.h                          |  387 +
 include/tcg/tcg-op.h                               | 1328 ++++
 include/tcg/tcg-opc.h                              |  276 +
 include/tcg/tcg.h                                  | 1430 ++++
 include/ui/console.h                               |    3 +
 include/ui/egl-helpers.h                           |    4 +-
 include/ui/gtk.h                                   |    2 +
 include/ui/input.h                                 |    1 +
 include/ui/qemu-pixman.h                           |    2 +
 include/ui/spice-display.h                         |    2 +-
 include/user/syscall-trace.h                       |   42 +
 io/channel-socket.c                                |   35 +-
 io/channel-websock.c                               |   36 +-
 io/net-listener.c                                  |    3 +-
 io/task.c                                          |    1 +
 io/trace-events                                    |    4 +-
 job-qmp.c                                          |   13 +-
 job.c                                              |   68 +-
 linux-headers/asm-arm/kvm.h                        |   19 +-
 linux-headers/asm-arm/unistd-common.h              |    4 +
 linux-headers/asm-arm64/kvm.h                      |   38 +-
 linux-headers/asm-arm64/unistd.h                   |    1 +
 linux-headers/asm-generic/mman-common.h            |   20 +-
 linux-headers/asm-generic/mman.h                   |   10 +-
 linux-headers/asm-generic/unistd.h                 |   15 +-
 linux-headers/asm-mips/mman.h                      |    3 +
 linux-headers/asm-mips/unistd_n32.h                |    4 +
 linux-headers/asm-mips/unistd_n64.h                |    4 +
 linux-headers/asm-mips/unistd_o32.h                |    4 +
 linux-headers/asm-powerpc/kvm.h                    |    3 +
 linux-headers/asm-powerpc/mman.h                   |    6 +-
 linux-headers/asm-powerpc/unistd_32.h              |    4 +
 linux-headers/asm-powerpc/unistd_64.h              |    4 +
 linux-headers/asm-s390/kvm.h                       |    6 +
 linux-headers/asm-s390/unistd_32.h                 |    4 +
 linux-headers/asm-s390/unistd_64.h                 |    4 +
 linux-headers/asm-x86/kvm.h                        |   28 +-
 linux-headers/asm-x86/unistd.h                     |    2 +-
 linux-headers/asm-x86/unistd_32.h                  |    4 +
 linux-headers/asm-x86/unistd_64.h                  |    4 +
 linux-headers/asm-x86/unistd_x32.h                 |    4 +
 linux-headers/linux/kvm.h                          |   33 +-
 linux-headers/linux/psp-sev.h                      |    8 +-
 linux-headers/linux/vfio.h                         |   71 +-
 linux-user/Makefile.objs                           |   19 +-
 linux-user/aarch64/cpu_loop.c                      |    2 +
 linux-user/aarch64/syscall_nr.h                    |   34 +-
 linux-user/aarch64/target_cpu.h                    |    7 +-
 linux-user/alpha/Makefile.objs                     |    5 +
 linux-user/alpha/syscall.tbl                       |  479 ++
 linux-user/alpha/syscall_nr.h                      |  457 --
 linux-user/alpha/syscallhdr.sh                     |   32 +
 linux-user/alpha/target_cpu.h                      |   16 +-
 linux-user/arm/Makefile.objs                       |    8 +
 linux-user/arm/cpu_loop.c                          |   10 +-
 linux-user/arm/semihost.c                          |   27 +
 linux-user/arm/signal.c                            |    4 +-
 linux-user/arm/syscall.tbl                         |  453 ++
 linux-user/arm/syscall_nr.h                        |  403 -
 linux-user/arm/syscallhdr.sh                       |   31 +
 linux-user/arm/target_cpu.h                        |   31 +-
 linux-user/arm/target_syscall.h                    |    3 -
 linux-user/cris/target_cpu.h                       |    7 +-
 linux-user/elfload.c                               |  149 +-
 linux-user/exit.c                                  |    5 +-
 linux-user/fd-trans.c                              |  106 +-
 linux-user/flatload.c                              |    2 +-
 linux-user/hppa/Makefile.objs                      |    5 +
 linux-user/hppa/syscall.tbl                        |  437 ++
 linux-user/hppa/syscall_nr.h                       |  358 -
 linux-user/hppa/syscallhdr.sh                      |   32 +
 linux-user/hppa/target_cpu.h                       |    7 +-
 linux-user/hppa/target_signal.h                    |    1 +
 linux-user/i386/Makefile.objs                      |    5 +
 linux-user/i386/cpu_loop.c                         |  201 +-
 linux-user/i386/syscall_32.tbl                     |  444 ++
 linux-user/i386/syscall_nr.h                       |  387 -
 linux-user/i386/syscallhdr.sh                      |   28 +
 linux-user/i386/target_cpu.h                       |   11 +-
 linux-user/ioctls.h                                |   75 +
 linux-user/m68k/Makefile.objs                      |    5 +
 linux-user/m68k/syscall.tbl                        |  439 ++
 linux-user/m68k/syscall_nr.h                       |  386 -
 linux-user/m68k/syscallhdr.sh                      |   32 +
 linux-user/m68k/target_cpu.h                       |    7 +-
 linux-user/main.c                                  |  131 +-
 linux-user/microblaze/Makefile.objs                |    5 +
 linux-user/microblaze/syscall.tbl                  |  445 ++
 linux-user/microblaze/syscall_nr.h                 |  397 -
 linux-user/microblaze/syscallhdr.sh                |   32 +
 linux-user/microblaze/target_cpu.h                 |    7 +-
 linux-user/mips/Makefile.objs                      |    5 +
 linux-user/mips/cpu_loop.c                         |  376 +-
 linux-user/mips/syscall-args-o32.c.inc             |  436 ++
 linux-user/mips/syscall_nr.h                       |  380 -
 linux-user/mips/syscall_o32.tbl                    |  427 +
 linux-user/mips/syscallhdr.sh                      |   36 +
 linux-user/mips/target_cpu.h                       |    7 +-
 linux-user/mips64/Makefile.objs                    |   12 +
 linux-user/mips64/syscall_n32.tbl                  |  378 +
 linux-user/mips64/syscall_n64.tbl                  |  354 +
 linux-user/mips64/syscall_nr.h                     |  679 --
 linux-user/mips64/syscallhdr.sh                    |   33 +
 linux-user/mmap.c                                  |   60 +-
 linux-user/nios2/syscall_nr.h                      |  650 +-
 linux-user/nios2/target_cpu.h                      |    7 +-
 linux-user/openrisc/syscall_nr.h                   |  309 +-
 linux-user/openrisc/target_cpu.h                   |    8 +-
 linux-user/openrisc/target_elf.h                   |    2 +-
 linux-user/ppc/Makefile.objs                       |    6 +
 linux-user/ppc/cpu_loop.c                          |    5 +
 linux-user/ppc/signal.c                            |   81 +-
 linux-user/ppc/syscall.tbl                         |  521 ++
 linux-user/ppc/syscall_nr.h                        |  402 -
 linux-user/ppc/syscallhdr.sh                       |   34 +
 linux-user/ppc/target_cpu.h                        |    7 +-
 linux-user/qemu.h                                  |    4 +-
 linux-user/riscv/cpu_loop.c                        |    3 +-
 linux-user/riscv/syscall32_nr.h                    |  295 +
 linux-user/riscv/syscall64_nr.h                    |  301 +
 linux-user/riscv/syscall_nr.h                      |  294 +-
 linux-user/riscv/target_cpu.h                      |    7 +-
 linux-user/s390x/Makefile.objs                     |    5 +
 linux-user/s390x/syscall.tbl                       |  442 ++
 linux-user/s390x/syscall_nr.h                      |  398 -
 linux-user/s390x/syscallhdr.sh                     |   32 +
 linux-user/s390x/target_cpu.h                      |    7 +-
 linux-user/sh4/Makefile.objs                       |    5 +
 linux-user/sh4/syscall.tbl                         |  442 ++
 linux-user/sh4/syscall_nr.h                        |  393 -
 linux-user/sh4/syscallhdr.sh                       |   32 +
 linux-user/sh4/target_cpu.h                        |    7 +-
 linux-user/signal.c                                |  138 +-
 linux-user/sparc/Makefile.objs                     |    5 +
 linux-user/sparc/signal.c                          |  102 +-
 linux-user/sparc/syscall.tbl                       |  485 ++
 linux-user/sparc/syscall_nr.h                      |  363 -
 linux-user/sparc/syscallhdr.sh                     |   32 +
 linux-user/sparc/target_cpu.h                      |   60 +-
 linux-user/sparc64/Makefile.objs                   |    5 +
 linux-user/sparc64/syscall.tbl                     |  485 ++
 linux-user/sparc64/syscall_nr.h                    |  366 -
 linux-user/sparc64/syscallhdr.sh                   |   32 +
 linux-user/strace.c                                |  585 +-
 linux-user/strace.list                             |   57 +-
 linux-user/syscall.c                               |  707 +-
 linux-user/syscall_defs.h                          |  199 +-
 linux-user/syscall_types.h                         |  103 +
 linux-user/tilegx/target_cpu.h                     |    7 +-
 linux-user/trace-events                            |    9 +
 linux-user/vm86.c                                  |    3 +-
 linux-user/x86_64/Makefile.objs                    |    5 +
 linux-user/x86_64/syscall_64.tbl                   |  404 +
 linux-user/x86_64/syscall_nr.h                     |  332 -
 linux-user/x86_64/syscallhdr.sh                    |   28 +
 linux-user/xtensa/Makefile.objs                    |    5 +
 linux-user/xtensa/signal.c                         |   25 +-
 linux-user/xtensa/syscall.tbl                      |  410 +
 linux-user/xtensa/syscall_nr.h                     |  437 --
 linux-user/xtensa/syscallhdr.sh                    |   32 +
 linux-user/xtensa/target_cpu.h                     |    8 +-
 memory.c                                           |  312 +-
 memory_ldst.inc.c                                  |   81 +-
 migration/Makefile.objs                            |    3 +
 migration/block-dirty-bitmap.c                     |   17 +-
 migration/block.c                                  |   53 +-
 migration/colo.c                                   |  267 +-
 migration/global_state.c                           |    1 +
 migration/migration.c                              |  424 +-
 migration/migration.h                              |   16 +-
 migration/multifd-zlib.c                           |  325 +
 migration/multifd-zstd.c                           |  339 +
 migration/multifd.c                                | 1074 +++
 migration/multifd.h                                |  170 +
 migration/postcopy-ram.c                           |  163 +-
 migration/postcopy-ram.h                           |   22 +-
 migration/qemu-file-channel.c                      |   31 +-
 migration/qemu-file.c                              |  154 +-
 migration/qemu-file.h                              |   21 +-
 migration/qjson.h                                  |    2 +
 migration/ram.c                                    | 1765 +----
 migration/ram.h                                    |    8 +-
 migration/rdma.c                                   |  126 +-
 migration/savevm.c                                 |  293 +-
 migration/savevm.h                                 |    1 +
 migration/socket.c                                 |    7 +-
 migration/trace-events                             |   22 +-
 migration/vmstate-types.c                          |  227 +-
 migration/vmstate.c                                |    1 -
 monitor/Makefile.objs                              |    5 +-
 monitor/hmp-cmds.c                                 |  951 +--
 monitor/hmp.c                                      |   16 +-
 monitor/misc.c                                     |  200 +-
 monitor/monitor-internal.h                         |    7 +-
 monitor/monitor.c                                  |   69 +
 monitor/qmp-cmds-control.c                         |  169 +
 monitor/qmp-cmds.c                                 |   21 +-
 monitor/qmp.c                                      |   58 +-
 nbd/client.c                                       |  121 +-
 nbd/common.c                                       |    5 +
 nbd/nbd-internal.h                                 |    2 -
 nbd/server.c                                       |  450 +-
 nbd/trace-events                                   |    6 +-
 net/can/can_socketcan.c                            |   10 +-
 net/colo-compare.c                                 |  101 +-
 net/filter-buffer.c                                |    2 +-
 net/filter-mirror.c                                |    2 +-
 net/filter.c                                       |   92 +-
 net/hub.c                                          |   29 +-
 net/hub.h                                          |    2 -
 net/net.c                                          |   60 +-
 net/netmap.c                                       |    1 +
 net/queue.c                                        |    2 +-
 net/slirp.c                                        |   50 +-
 net/tap-bsd.c                                      |    1 -
 net/tap-linux.c                                    |    1 -
 net/tap-solaris.c                                  |    1 -
 net/tap-win32.c                                    |    2 +-
 net/tap.c                                          |    1 +
 net/trace-events                                   |    6 +-
 net/vhost-user.c                                   |   13 +-
 os-posix.c                                         |   43 +-
 os-win32.c                                         |   24 +-
 pc-bios/README                                     |    5 +-
 pc-bios/bios-256k.bin                              |  Bin 262144 -> 262144 bytes
 pc-bios/bios-microvm.bin                           |  Bin 0 -> 65536 bytes
 pc-bios/bios.bin                                   |  Bin 131072 -> 131072 bytes
 pc-bios/hppa-firmware.img                          |  Bin 783724 -> 766136 bytes
 pc-bios/openbios-ppc                               |  Bin 767256 -> 696912 bytes
 pc-bios/openbios-sparc32                           |  Bin 382048 -> 382048 bytes
 pc-bios/openbios-sparc64                           |  Bin 1593408 -> 1593408 bytes
 pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin       |  Bin 0 -> 49472 bytes
 pc-bios/opensbi-riscv32-virt-fw_jump.bin           |  Bin 36888 -> 41280 bytes
 pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin       |  Bin 40968 -> 53760 bytes
 pc-bios/opensbi-riscv64-virt-fw_jump.bin           |  Bin 40968 -> 49664 bytes
 pc-bios/optionrom/pvh_main.c                       |    2 +-
 pc-bios/ppc_rom.bin                                |  Bin 1048576 -> 0 bytes
 pc-bios/s390-ccw.img                               |  Bin 42608 -> 42608 bytes
 pc-bios/s390-ccw/bootmap.h                         |    2 +-
 pc-bios/s390-ccw/jump2ipl.c                        |   13 +-
 pc-bios/s390-ccw/main.c                            |   10 +-
 pc-bios/s390-ccw/netmain.c                         |    2 +
 pc-bios/s390-ccw/s390-arch.h                       |   10 +-
 pc-bios/s390-ccw/s390-ccw.h                        |    1 +
 pc-bios/s390-ccw/sclp.c                            |    2 +-
 pc-bios/s390-ccw/sclp.h                            |    2 +-
 pc-bios/s390-netboot.img                           |  Bin 67232 -> 67232 bytes
 pc-bios/skiboot.lid                                |  Bin 1591384 -> 1667280 bytes
 pc-bios/slof.bin                                   |  Bin 926432 -> 965112 bytes
 pc-bios/spapr-rtas.bin                             |  Bin 20 -> 0 bytes
 pc-bios/spapr-rtas/Makefile                        |   27 -
 pc-bios/spapr-rtas/spapr-rtas.S                    |   37 -
 pc-bios/vgabios-ati.bin                            |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios-bochs-display.bin                  |  Bin 27648 -> 28672 bytes
 pc-bios/vgabios-cirrus.bin                         |  Bin 38400 -> 38912 bytes
 pc-bios/vgabios-qxl.bin                            |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios-ramfb.bin                          |  Bin 28160 -> 28672 bytes
 pc-bios/vgabios-stdvga.bin                         |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios-virtio.bin                         |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios-vmware.bin                         |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios.bin                                |  Bin 38400 -> 38912 bytes
 plugins/.gitignore                                 |    2 +
 plugins/Makefile.objs                              |   21 +
 plugins/api.c                                      |  342 +
 plugins/core.c                                     |  502 ++
 plugins/loader.c                                   |  398 +
 plugins/plugin.h                                   |   99 +
 plugins/qemu-plugins.symbols                       |   40 +
 po/bg.po                                           |   10 +-
 po/zh_CN.po                                        |    2 +-
 python/qemu/__init__.py                            |   24 -
 python/qemu/accel.py                               |   78 +
 python/qemu/machine.py                             |  104 +-
 python/qemu/qmp.py                                 |  104 +-
 python/qemu/qtest.py                               |   11 +-
 qapi/Makefile.objs                                 |   12 +-
 qapi/audio.json                                    |   28 +-
 qapi/block-core.json                               | 2206 +++---
 qapi/block.json                                    |  526 +-
 qapi/char.json                                     |   11 +-
 qapi/common.json                                   |   49 -
 qapi/control.json                                  |  258 +
 qapi/dump.json                                     |    4 +-
 qapi/error.json                                    |   29 +
 qapi/introspect.json                               |   32 +-
 qapi/job.json                                      |   32 +-
 qapi/machine-target.json                           |   24 +-
 qapi/machine.json                                  |  275 +-
 qapi/migration.json                                |  365 +-
 qapi/misc-target.json                              |    8 +-
 qapi/misc.json                                     |  369 +-
 qapi/net.json                                      |   55 +-
 qapi/opts-visitor.c                                |   26 +-
 qapi/pragma.json                                   |   24 +
 qapi/qapi-dealloc-visitor.c                        |    1 -
 qapi/qapi-schema.json                              |   27 +-
 qapi/qdev.json                                     |   10 +-
 qapi/qmp-dispatch.c                                |  141 +-
 qapi/qmp-registry.c                                |    6 +-
 qapi/qom.json                                      |   23 +-
 qapi/rocker.json                                   |   12 +-
 qapi/run-state.json                                |   58 +-
 qapi/sockets.json                                  |   14 +-
 qapi/string-output-visitor.c                       |    2 +-
 qapi/tpm.json                                      |   10 +-
 qapi/trace.json                                    |   15 +-
 qapi/transaction.json                              |    8 +-
 qapi/ui.json                                       |  123 +-
 qdev-monitor.c                                     |  119 +-
 qemu-bridge-helper.c                               |    6 +-
 qemu-deprecated.texi                               |  333 -
 qemu-doc.texi                                      | 3009 -------
 qemu-ga.texi                                       |  137 -
 qemu-img-cmds.hx                                   |  103 +-
 qemu-img.c                                         |  171 +-
 qemu-img.texi                                      |  795 --
 qemu-io-cmds.c                                     |  110 +-
 qemu-io.c                                          |   34 +-
 qemu-nbd.c                                         |  174 +-
 qemu-nbd.texi                                      |  214 -
 qemu-option-trace.texi                             |   24 -
 qemu-options.hx                                    | 7616 +++++++++---------
 qemu-storage-daemon.c                              |  340 +
 qemu-tech.texi                                     |  195 -
 qemu.nsi                                           |   26 +-
 qga/Makefile.objs                                  |    1 +
 qga/channel-posix.c                                |    2 +-
 qga/channel-win32.c                                |    7 +-
 qga/commands-common.h                              |   21 +
 qga/commands-posix.c                               |   56 +-
 qga/commands-win32.c                               |   51 +-
 qga/commands.c                                     |   56 +-
 qga/installer/qemu-ga.wxs                          |    2 +-
 qga/main.c                                         |   12 +-
 qga/qapi-schema.json                               |  162 +-
 qga/vss-win32/Makefile.objs                        |    4 +-
 qga/vss-win32/install.cpp                          |   11 +
 qobject/json-parser.c                              |    2 +-
 qobject/json-streamer.c                            |    2 +-
 qobject/qstring.c                                  |   27 +-
 qom/Makefile.objs                                  |    2 +-
 qom/cpu.c                                          |  459 --
 qom/object.c                                       |  534 +-
 qom/object_interfaces.c                            |   78 +
 qom/qom-hmp-cmds.c                                 |    4 +-
 qom/qom-qmp-cmds.c                                 |  107 +-
 qtest.c                                            |  109 +-
 replay/Makefile.objs                               |    3 +-
 replay/replay-audio.c                              |   17 +-
 replay/replay-char.c                               |    1 -
 replay/replay-events.c                             |   18 +-
 replay/replay-internal.c                           |   13 +-
 replay/replay-internal.h                           |   13 +-
 replay/replay-net.c                                |    1 -
 replay/replay-random.c                             |   44 +
 replay/replay-snapshot.c                           |   14 +-
 replay/replay-time.c                               |   36 +-
 replay/replay.c                                    |   36 +-
 roms/Makefile                                      |   22 +-
 roms/Makefile.edk2                                 |    7 +-
 roms/SLOF                                          |    2 +-
 roms/config.seabios-128k                           |    1 +
 roms/edk2-build.sh                                 |    4 +-
 roms/edk2-funcs.sh                                 |   20 +
 roms/openbios                                      |    2 +-
 roms/openhackware                                  |    1 -
 roms/opensbi                                       |    2 +-
 roms/qboot                                         |    1 +
 roms/seabios                                       |    2 +-
 roms/seabios-hppa                                  |    2 +-
 roms/skiboot                                       |    2 +-
 rules.mak                                          |   43 +-
 scripts/analyse-9p-simpletrace.py                  |    3 +-
 scripts/analyse-locks-simpletrace.py               |    3 +-
 scripts/analyze-migration.py                       |   39 +-
 scripts/checkpatch.pl                              |   48 +-
 scripts/coccinelle/cpu-reset.cocci                 |   47 +
 scripts/coccinelle/error-use-after-free.cocci      |   52 +
 scripts/coccinelle/exec_rw_const.cocci             |  111 +
 .../coccinelle/memory-region-housekeeping.cocci    |  159 +
 scripts/coccinelle/memory-region-init-ram.cocci    |   38 -
 scripts/coverity-scan/coverity-scan.docker         |  131 +
 scripts/coverity-scan/run-coverity-scan            |  401 +
 scripts/decodetree.py                              |   77 +-
 scripts/device-crash-test                          |    3 +-
 scripts/dump-guest-memory.py                       |    3 +-
 scripts/gensyscalls.sh                             |  102 +
 scripts/get_maintainer.pl                          |    5 +-
 scripts/git-submodule.sh                           |   12 +-
 scripts/git.orderfile                              |   11 +-
 scripts/hxtool                                     |   47 +-
 scripts/hxtool-conv.pl                             |  137 +
 scripts/kernel-doc                                 | 2250 ++++++
 scripts/kvm/kvm_flightrecorder                     |    3 +-
 scripts/kvm/vmxcap                                 |   23 +-
 scripts/make-release                               |    8 +
 scripts/minikconf.py                               |    8 +-
 scripts/modules/module_block.py                    |    1 -
 scripts/qapi-gen.py                                |   13 +-
 scripts/qapi/commands.py                           |   33 +-
 scripts/qapi/common.py                             | 2389 +-----
 scripts/qapi/doc.py                                |  100 +-
 scripts/qapi/error.py                              |   43 +
 scripts/qapi/events.py                             |   23 +-
 scripts/qapi/expr.py                               |  360 +
 scripts/qapi/gen.py                                |  295 +
 scripts/qapi/introspect.py                         |  108 +-
 scripts/qapi/parser.py                             |  579 ++
 scripts/qapi/schema.py                             | 1138 +++
 scripts/qapi/source.py                             |   67 +
 scripts/qapi/types.py                              |   78 +-
 scripts/qapi/visit.py                              |   22 +-
 scripts/qemu-binfmt-conf.sh                        |    8 +-
 scripts/qemu-trace-stap                            |    8 +-
 scripts/qemu-trace-stap.texi                       |  140 -
 scripts/qmp/qemu-ga-client                         |    3 +-
 scripts/qmp/qmp                                    |    3 +-
 scripts/qmp/qmp-shell                              |    3 +-
 scripts/qmp/qom-fuse                               |    2 +-
 scripts/qmp/qom-get                                |    1 -
 scripts/qmp/qom-list                               |    1 -
 scripts/qmp/qom-set                                |    1 -
 scripts/qmp/qom-tree                               |    1 -
 scripts/render_block_graph.py                      |    2 +-
 scripts/replay-dump.py                             |    3 +-
 scripts/signrom.py                                 |   13 +-
 scripts/simplebench/bench-example.py               |   80 +
 scripts/simplebench/bench_block_job.py             |  119 +
 scripts/simplebench/simplebench.py                 |  128 +
 scripts/simpletrace.py                             |    3 +-
 scripts/texi2pod.pl                                |   36 +-
 scripts/tracetool.py                               |    2 +-
 scripts/tracetool/__init__.py                      |    8 +-
 scripts/tracetool/backend/__init__.py              |    1 -
 scripts/tracetool/backend/dtrace.py                |    1 -
 scripts/tracetool/backend/ftrace.py                |    1 -
 scripts/tracetool/backend/log.py                   |    1 -
 scripts/tracetool/backend/simple.py                |    1 -
 scripts/tracetool/backend/syslog.py                |    1 -
 scripts/tracetool/backend/ust.py                   |    1 -
 scripts/tracetool/format/__init__.py               |    1 -
 scripts/tracetool/format/c.py                      |    2 +-
 scripts/tracetool/format/d.py                      |    1 -
 scripts/tracetool/format/h.py                      |    8 +-
 scripts/tracetool/format/log_stap.py               |    4 -
 scripts/tracetool/format/simpletrace_stap.py       |    1 -
 scripts/tracetool/format/stap.py                   |    1 -
 scripts/tracetool/format/tcg_h.py                  |    1 -
 scripts/tracetool/format/tcg_helper_c.py           |    1 -
 scripts/tracetool/format/tcg_helper_h.py           |    1 -
 scripts/tracetool/format/tcg_helper_wrapper_h.py   |    1 -
 scripts/tracetool/format/ust_events_c.py           |    1 -
 scripts/tracetool/format/ust_events_h.py           |    1 -
 scripts/tracetool/transform.py                     |    2 +-
 scripts/tracetool/vcpu.py                          |    1 -
 scripts/update-linux-headers.sh                    |    1 +
 scripts/update-mips-syscall-args.sh                |   57 +
 scripts/update-syscalltbl.sh                       |   49 +
 scripts/vmstate-static-checker.py                  |    9 +-
 scsi/pr-manager.c                                  |    1 -
 scsi/qemu-pr-helper.c                              |   38 +-
 slirp                                              |    2 +-
 softmmu/Makefile.objs                              |    3 +
 softmmu/main.c                                     |   53 +
 softmmu/vl.c                                       | 4517 +++++++++++
 storage-daemon/Makefile.objs                       |    1 +
 storage-daemon/qapi/Makefile.objs                  |    1 +
 storage-daemon/qapi/qapi-schema.json               |   26 +
 stubs/Makefile.objs                                |    5 +-
 stubs/arch_type.c                                  |    4 +
 stubs/change-state-handler.c                       |    2 +-
 stubs/io_uring.c                                   |   32 +
 stubs/monitor-core.c                               |   21 +
 stubs/monitor.c                                    |   17 +-
 stubs/pc_madt_cpu_entry.c                          |    7 -
 stubs/pci-host-piix.c                              |    3 +-
 stubs/replay-user.c                                |    9 +
 stubs/replay.c                                     |   10 +-
 stubs/runstate-check.c                             |    2 +-
 stubs/semihost.c                                   |    5 +
 stubs/vm-stop.c                                    |    2 +-
 stubs/vmstate.c                                    |    6 +-
 target/alpha/cpu-qom.h                             |    4 +-
 target/alpha/cpu.h                                 |    8 +-
 target/alpha/fpu_helper.c                          |   15 +-
 target/alpha/gdbstub.c                             |    2 +-
 target/alpha/helper.c                              |   70 +-
 target/alpha/machine.c                             |    2 -
 target/alpha/sys_helper.c                          |    1 +
 target/alpha/translate.c                           |    8 +-
 target/arm/Makefile.objs                           |   24 +
 target/arm/a32-uncond.decode                       |   74 +
 target/arm/a32.decode                              |  534 ++
 target/arm/arch_dump.c                             |  133 +-
 target/arm/arm-powerctl.c                          |    6 +
 target/arm/arm-semi.c                              |  718 +-
 target/arm/arm_ldst.h                              |   15 +-
 target/arm/cpu-param.h                             |    2 +-
 target/arm/cpu-qom.h                               |    5 +-
 target/arm/cpu.c                                   |  587 +-
 target/arm/cpu.h                                   |  924 ++-
 target/arm/cpu64.c                                 |  447 +-
 target/arm/debug_helper.c                          |   56 +-
 target/arm/gdbstub.c                               |  181 +-
 target/arm/gdbstub64.c                             |    2 +-
 target/arm/helper-a64.c                            |  127 +-
 target/arm/helper-a64.h                            |    1 +
 target/arm/helper-sve.h                            |    2 +
 target/arm/helper.c                                | 3522 ++++++---
 target/arm/helper.h                                |   31 +-
 target/arm/internals.h                             |  218 +-
 target/arm/kvm.c                                   |  196 +-
 target/arm/kvm32.c                                 |   55 +-
 target/arm/kvm64.c                                 |  423 +-
 target/arm/kvm_arm.h                               |  156 +-
 target/arm/m_helper.c                              |  160 +-
 target/arm/machine.c                               |   15 +-
 target/arm/monitor.c                               |  157 +
 target/arm/neon_helper.c                           |  117 -
 target/arm/op_helper.c                             |  155 +-
 target/arm/pauth_helper.c                          |   21 +-
 target/arm/psci.c                                  |    4 +-
 target/arm/sve_helper.c                            |    1 +
 target/arm/t16.decode                              |  281 +
 target/arm/t32.decode                              |  631 ++
 target/arm/tlb_helper.c                            |    2 +-
 target/arm/translate-a64.c                         |  511 +-
 target/arm/translate-a64.h                         |    4 +-
 target/arm/translate-sve.c                         |    8 +-
 target/arm/translate-vfp.inc.c                     |  535 +-
 target/arm/translate.c                             | 8241 +++++++++-----------
 target/arm/translate.h                             |   51 +-
 target/arm/vec_helper.c                            |  211 +
 target/arm/vfp-uncond.decode                       |   12 +-
 target/arm/vfp.decode                              |  171 +-
 target/arm/vfp_helper.c                            |   31 +-
 target/cris/cpu-qom.h                              |    4 +-
 target/cris/cpu.c                                  |   17 +-
 target/cris/cpu.h                                  |    9 +-
 target/cris/gdbstub.c                              |    4 +-
 target/cris/machine.c                              |    1 -
 target/cris/translate.c                            |    8 +-
 target/cris/translate_v10.inc.c                    |    3 +-
 target/hppa/cpu-qom.h                              |    4 +-
 target/hppa/cpu.h                                  |    7 +-
 target/hppa/gdbstub.c                              |    2 +-
 target/hppa/helper.h                               |    2 +
 target/hppa/int_helper.c                           |    2 +-
 target/hppa/machine.c                              |    2 -
 target/hppa/mem_helper.c                           |    2 +-
 target/hppa/op_helper.c                            |   13 +-
 target/hppa/translate.c                            |   47 +-
 target/i386/cpu-qom.h                              |    4 +-
 target/i386/cpu.c                                  | 1950 ++++-
 target/i386/cpu.h                                  |  372 +-
 target/i386/excp_helper.c                          |    2 +-
 target/i386/fpu_helper.c                           |   66 +-
 target/i386/gdbstub.c                              |   33 +-
 target/i386/hax-all.c                              |    9 +-
 target/i386/hax-posix.c                            |   33 +-
 target/i386/hax-windows.c                          |   33 +-
 target/i386/helper.c                               |    7 +-
 target/i386/hvf/hvf.c                              |   69 +-
 target/i386/hvf/vmx.h                              |   28 +-
 target/i386/hvf/x86_cpuid.c                        |    2 +-
 target/i386/hvf/x86_decode.c                       |   64 +-
 target/i386/hvf/x86_decode.h                       |   20 +-
 target/i386/hvf/x86_emu.c                          |    7 +-
 target/i386/hvf/x86_mmu.c                          |   12 +-
 target/i386/hvf/x86_task.c                         |    2 -
 target/i386/hvf/x86hvf.c                           |   18 +-
 target/i386/hyperv-proto.h                         |    1 +
 target/i386/kvm.c                                  |  744 +-
 target/i386/kvm_i386.h                             |   21 +-
 target/i386/machine.c                              |   76 +-
 target/i386/mem_helper.c                           |    2 +-
 target/i386/misc_helper.c                          |    4 +
 target/i386/monitor.c                              |    2 +-
 target/i386/ops_sse.h                              |   88 +-
 target/i386/seg_helper.c                           |   62 +-
 target/i386/sev.c                                  |  107 +-
 target/i386/sev_i386.h                             |    2 +-
 target/i386/translate.c                            |  173 +-
 target/i386/whp-dispatch.h                         |   13 +
 target/i386/whpx-all.c                             |  254 +-
 target/lm32/cpu-qom.h                              |    4 +-
 target/lm32/cpu.c                                  |    9 +-
 target/lm32/cpu.h                                  |    4 +-
 target/lm32/gdbstub.c                              |    2 +-
 target/lm32/helper.c                               |    1 -
 target/lm32/machine.c                              |    2 -
 target/lm32/op_helper.c                            |    3 +-
 target/lm32/translate.c                            |   15 +-
 target/m68k/cpu-qom.h                              |    4 +-
 target/m68k/cpu.c                                  |   37 +-
 target/m68k/cpu.h                                  |    9 +-
 target/m68k/fpu_helper.c                           |    8 +-
 target/m68k/gdbstub.c                              |    2 +-
 target/m68k/helper.c                               |   45 +-
 target/m68k/m68k-semi.c                            |    1 -
 target/m68k/op_helper.c                            |   77 +-
 target/m68k/softfloat.c                            |   98 +-
 target/m68k/translate.c                            |   48 +-
 target/microblaze/cpu-qom.h                        |    4 +-
 target/microblaze/cpu.c                            |   13 +-
 target/microblaze/cpu.h                            |    5 +-
 target/microblaze/gdbstub.c                        |    2 +-
 target/microblaze/translate.c                      |   89 +-
 target/mips/Makefile.objs                          |    5 +-
 target/mips/cp0_helper.c                           | 1678 ++++
 target/mips/cp0_timer.c                            |   43 +-
 target/mips/cpu-qom.h                              |    4 +-
 target/mips/cpu.c                                  |   28 +-
 target/mips/cpu.h                                  |  131 +-
 target/mips/fpu_helper.c                           | 1911 +++++
 target/mips/gdbstub.c                              |    5 +-
 target/mips/helper.c                               |  141 +-
 target/mips/helper.h                               |  304 +-
 target/mips/internal.h                             |   80 +-
 target/mips/kvm.c                                  |    5 +-
 target/mips/kvm_mips.h                             |    2 +-
 target/mips/machine.c                              |   11 +-
 target/mips/mips-defs.h                            |   58 +-
 target/mips/mips-semi.c                            |   15 +-
 target/mips/msa_helper.c                           | 5385 +++++++++----
 target/mips/op_helper.c                            | 4234 ++--------
 target/mips/translate.c                            | 3308 +++++---
 target/moxie/cpu.c                                 |    8 +-
 target/moxie/cpu.h                                 |    4 +-
 target/moxie/machine.c                             |    2 -
 target/moxie/translate.c                           |    2 +-
 target/nios2/cpu.c                                 |   13 +-
 target/nios2/cpu.h                                 |    6 +-
 target/nios2/nios2-semi.c                          |    1 -
 target/nios2/translate.c                           |   10 +-
 target/openrisc/cpu.c                              |   39 +-
 target/openrisc/cpu.h                              |   32 +-
 target/openrisc/disas.c                            |   81 +
 target/openrisc/fpu_helper.c                       |   49 +-
 target/openrisc/gdbstub.c                          |    2 +-
 target/openrisc/helper.h                           |    6 +
 target/openrisc/insns.decode                       |   45 +
 target/openrisc/machine.c                          |   13 +-
 target/openrisc/sys_helper.c                       |   36 +-
 target/openrisc/translate.c                        |  718 +-
 target/ppc/compat.c                                |   21 +-
 target/ppc/cpu-models.c                            |    3 +
 target/ppc/cpu-models.h                            |    3 +
 target/ppc/cpu-qom.h                               |    9 +-
 target/ppc/cpu.h                                   |  236 +-
 target/ppc/dfp_helper.c                            |  394 +-
 target/ppc/excp_helper.c                           |  160 +-
 target/ppc/fpu_helper.c                            |  206 +-
 target/ppc/gdbstub.c                               |   48 +-
 target/ppc/helper.h                                |   19 +-
 target/ppc/helper_regs.h                           |    5 +
 target/ppc/int_helper.c                            |  409 +-
 target/ppc/internal.h                              |    3 +
 target/ppc/kvm.c                                   |  192 +-
 target/ppc/kvm_ppc.h                               |   31 +-
 target/ppc/machine.c                               |    3 +-
 target/ppc/mem_helper.c                            |  212 +-
 target/ppc/misc_helper.c                           |   65 +
 target/ppc/mmu-hash64.c                            |  392 +-
 target/ppc/mmu-radix64.c                           |    6 +
 target/ppc/mmu_helper.c                            |    8 +-
 target/ppc/timebase_helper.c                       |   60 +-
 target/ppc/trace-events                            |    1 +
 target/ppc/translate.c                             |  139 +-
 target/ppc/translate/fp-impl.inc.c                 |  125 +-
 target/ppc/translate/fp-ops.inc.c                  |   10 +-
 target/ppc/translate/vmx-impl.inc.c                |  417 +-
 target/ppc/translate/vsx-impl.inc.c                |    2 +-
 target/ppc/translate_init.inc.c                    |  532 +-
 target/riscv/Makefile.objs                         |    7 +-
 target/riscv/cpu.c                                 |   94 +-
 target/riscv/cpu.h                                 |   88 +-
 target/riscv/cpu_bits.h                            |  144 +-
 target/riscv/cpu_helper.c                          |  583 +-
 target/riscv/csr.c                                 |  477 +-
 target/riscv/fpu_helper.c                          |    1 +
 target/riscv/gdbstub.c                             |   83 +-
 target/riscv/insn32.decode                         |   22 +-
 target/riscv/insn_trans/trans_privileged.inc.c     |   45 +-
 target/riscv/insn_trans/trans_rva.inc.c            |    8 +-
 target/riscv/insn_trans/trans_rvd.inc.c            |    1 -
 target/riscv/insn_trans/trans_rvf.inc.c            |    1 -
 target/riscv/insn_trans/trans_rvi.inc.c            |    5 +-
 target/riscv/instmap.h                             |    8 +-
 target/riscv/monitor.c                             |  229 +
 target/riscv/op_helper.c                           |   75 +-
 target/riscv/pmp.c                                 |   48 +-
 target/riscv/trace-events                          |    6 +
 target/riscv/translate.c                           |  100 +-
 target/rx/Makefile.objs                            |   11 +
 target/rx/cpu-param.h                              |   30 +
 target/rx/cpu-qom.h                                |   53 +
 target/rx/cpu.c                                    |  225 +
 target/rx/cpu.h                                    |  180 +
 target/rx/disas.c                                  | 1446 ++++
 target/rx/gdbstub.c                                |  112 +
 target/rx/helper.c                                 |  149 +
 target/rx/helper.h                                 |   31 +
 target/rx/insns.decode                             |  621 ++
 target/rx/op_helper.c                              |  470 ++
 target/rx/translate.c                              | 2440 ++++++
 target/s390x/cc_helper.c                           |    4 +-
 target/s390x/cpu-qom.h                             |   13 +-
 target/s390x/cpu.c                                 |  145 +-
 target/s390x/cpu.h                                 |  127 +-
 target/s390x/cpu_models.c                          |  105 +-
 target/s390x/cpu_models.h                          |    2 +-
 target/s390x/crypto_helper.c                       |    7 +-
 target/s390x/diag.c                                |   62 +-
 target/s390x/excp_helper.c                         |   67 +-
 target/s390x/fpu_helper.c                          |    6 +-
 target/s390x/gdbstub.c                             |   30 +-
 target/s390x/gen-features.c                        |   11 +-
 target/s390x/helper.c                              |   22 +-
 target/s390x/helper.h                              |    7 +-
 target/s390x/insn-data.def                         |   10 +-
 target/s390x/int_helper.c                          |   15 +-
 target/s390x/internal.h                            |    8 +-
 target/s390x/interrupt.c                           |    9 +-
 target/s390x/ioinst.c                              |   42 +-
 target/s390x/kvm-stub.c                            |   10 +-
 target/s390x/kvm.c                                 |  112 +-
 target/s390x/kvm_s390x.h                           |    4 +-
 target/s390x/machine.c                             |    2 +-
 target/s390x/mem_helper.c                          |  895 ++-
 target/s390x/misc_helper.c                         |   37 +-
 target/s390x/mmu_helper.c                          |  557 +-
 target/s390x/sigp.c                                |   10 +-
 target/s390x/tcg-stub.c                            |    4 +-
 target/s390x/tcg_s390x.h                           |    4 +-
 target/s390x/translate.c                           | 1039 +--
 target/s390x/translate_vx.inc.c                    |  691 +-
 target/s390x/vec_int_helper.c                      |   18 +-
 target/sh4/cpu-qom.h                               |    4 +-
 target/sh4/cpu.c                                   |   12 +-
 target/sh4/cpu.h                                   |    6 +-
 target/sh4/gdbstub.c                               |    8 +-
 target/sh4/helper.c                                |    3 +-
 target/sh4/translate.c                             |    6 +-
 target/sparc/TODO                                  |   88 -
 target/sparc/cpu-qom.h                             |    4 +-
 target/sparc/cpu.c                                 |   13 +-
 target/sparc/cpu.h                                 |   49 +-
 target/sparc/gdbstub.c                             |    2 +-
 target/sparc/helper.c                              |    1 -
 target/sparc/int32_helper.c                        |    2 +-
 target/sparc/ldst_helper.c                         |  319 +-
 target/sparc/machine.c                             |    2 -
 target/sparc/mmu_helper.c                          |   97 +-
 target/sparc/translate.c                           |   34 +-
 target/tilegx/cpu.c                                |    9 +-
 target/tilegx/cpu.h                                |    4 +-
 target/tilegx/translate.c                          |   18 +-
 target/tricore/cpu-qom.h                           |    4 +-
 target/tricore/cpu.c                               |    8 +-
 target/tricore/helper.c                            |    2 +-
 target/tricore/helper.h                            |    1 +
 target/tricore/op_helper.c                         |    7 +
 target/tricore/translate.c                         |  587 +-
 target/unicore32/cpu-qom.h                         |    2 +-
 target/unicore32/cpu.c                             |    1 -
 target/unicore32/cpu.h                             |    2 -
 target/unicore32/translate.c                       |    7 +-
 target/xtensa/core-test_mmuhifi_c3.c               |    3 +-
 target/xtensa/core-test_mmuhifi_c3/core-isa.h      |  116 +-
 .../xtensa/core-test_mmuhifi_c3/gdb-config.inc.c   |  114 +-
 .../core-test_mmuhifi_c3/xtensa-modules.inc.c      | 6384 ++++++++-------
 target/xtensa/cpu-qom.h                            |    4 +-
 target/xtensa/cpu.c                                |   33 +-
 target/xtensa/cpu.h                                |   24 +-
 target/xtensa/gdbstub.c                            |    8 +-
 target/xtensa/helper.c                             |    1 +
 target/xtensa/import_core.sh                       |    6 +-
 target/xtensa/mmu_helper.c                         |    5 +-
 target/xtensa/overlay_tool.h                       |   15 +-
 target/xtensa/translate.c                          |   40 +-
 target/xtensa/xtensa-semi.c                        |    1 -
 tcg/LICENSE                                        |    3 -
 tcg/README                                         |    4 +-
 tcg/aarch64/tcg-target.inc.c                       |   30 +-
 tcg/aarch64/tcg-target.opc.h                       |   15 +-
 tcg/arm/tcg-target.inc.c                           |   59 +-
 tcg/i386/tcg-target.h                              |    2 +-
 tcg/i386/tcg-target.inc.c                          |   49 +-
 tcg/i386/tcg-target.opc.h                          |   28 +-
 tcg/mips/tcg-target.inc.c                          |   28 +-
 tcg/optimize.c                                     |    5 +-
 tcg/ppc/tcg-target.h                               |   51 +-
 tcg/ppc/tcg-target.inc.c                           | 1130 ++-
 tcg/ppc/tcg-target.opc.h                           |   33 +
 tcg/riscv/tcg-target.inc.c                         |   24 +-
 tcg/s390/tcg-target.inc.c                          |   18 +-
 tcg/sparc/tcg-target.inc.c                         |    8 +-
 tcg/tcg-common.c                                   |    3 +-
 tcg/tcg-gvec-desc.h                                |   54 -
 tcg/tcg-mo.h                                       |   48 -
 tcg/tcg-op-gvec.c                                  |   41 +-
 tcg/tcg-op-gvec.h                                  |  380 -
 tcg/tcg-op-vec.c                                   |    6 +-
 tcg/tcg-op.c                                       |  101 +-
 tcg/tcg-op.h                                       | 1312 ----
 tcg/tcg-opc.h                                      |  273 -
 tcg/tcg.c                                          |   57 +-
 tcg/tcg.h                                          | 1517 ----
 tcg/tci.c                                          |   17 +-
 tests/.gitignore                                   |    2 +
 tests/Makefile.include                             |  496 +-
 tests/ac97-test.c                                  |   57 -
 tests/acceptance/avocado_qemu/__init__.py          |  131 +-
 tests/acceptance/boot_linux.py                     |  222 +
 tests/acceptance/boot_linux_console.py             |  680 +-
 tests/acceptance/cpu_queries.py                    |    5 +-
 tests/acceptance/empty_cpu_model.py                |   12 +-
 tests/acceptance/linux_initrd.py                   |   20 +-
 tests/acceptance/linux_ssh_mips_malta.py           |  256 +-
 tests/acceptance/machine_arm_integratorcp.py       |   99 +
 tests/acceptance/machine_arm_n8x0.py               |   49 +
 tests/acceptance/machine_m68k_nextcube.py          |  110 +
 tests/acceptance/machine_mips_malta.py             |  118 +
 tests/acceptance/machine_sparc_leon3.py            |   37 +
 tests/acceptance/migration.py                      |   56 +-
 tests/acceptance/pc_cpu_hotplug_props.py           |   35 +
 tests/acceptance/ppc_prep_40p.py                   |   80 +
 tests/acceptance/version.py                        |    1 +
 tests/acceptance/virtio_check_params.py            |  144 +
 tests/acceptance/vnc.py                            |    4 +-
 tests/acceptance/x86_cpu_model_versions.py         |  160 +-
 tests/acpi-utils.c                                 |  147 -
 tests/acpi-utils.h                                 |   56 -
 tests/ahci-test.c                                  | 1955 -----
 tests/benchmark-crypto-cipher.c                    |   39 +-
 tests/benchmark-crypto-hash.c                      |   17 +-
 tests/bios-tables-test-allowed-diff.h              |    1 -
 tests/bios-tables-test.c                           |  924 ---
 tests/boot-order-test.c                            |  205 -
 tests/boot-sector.c                                |  168 -
 tests/boot-sector.h                                |   28 -
 tests/boot-serial-test.c                           |  241 -
 tests/cdrom-test.c                                 |  228 -
 tests/check-block.sh                               |   49 +-
 tests/check-qjson.c                                |    2 +-
 tests/cpu-plug-test.c                              |  266 -
 tests/data/acpi/pc/APIC.acpihmat                   |  Bin 0 -> 128 bytes
 tests/data/acpi/pc/DSDT.acpihmat                   |  Bin 0 -> 6455 bytes
 tests/data/acpi/pc/HMAT.acpihmat                   |  Bin 0 -> 280 bytes
 tests/data/acpi/pc/SRAT.acpihmat                   |  Bin 0 -> 280 bytes
 tests/data/acpi/q35/APIC.acpihmat                  |  Bin 0 -> 128 bytes
 tests/data/acpi/q35/DSDT                           |  Bin 7841 -> 7869 bytes
 tests/data/acpi/q35/DSDT.acpihmat                  |  Bin 0 -> 9193 bytes
 tests/data/acpi/q35/DSDT.bridge                    |  Bin 7858 -> 7886 bytes
 tests/data/acpi/q35/DSDT.cphp                      |  Bin 8304 -> 8332 bytes
 tests/data/acpi/q35/DSDT.dimmpxm                   |  Bin 9494 -> 9522 bytes
 tests/data/acpi/q35/DSDT.ipmibt                    |  Bin 7916 -> 7944 bytes
 tests/data/acpi/q35/DSDT.memhp                     |  Bin 9200 -> 9228 bytes
 tests/data/acpi/q35/DSDT.mmio64                    |  Bin 8971 -> 8999 bytes
 tests/data/acpi/q35/DSDT.numamem                   |  Bin 7847 -> 7875 bytes
 tests/data/acpi/q35/HMAT.acpihmat                  |  Bin 0 -> 280 bytes
 tests/data/acpi/q35/SRAT.acpihmat                  |  Bin 0 -> 280 bytes
 tests/data/acpi/rebuild-expected-aml.sh            |   13 +-
 tests/data/acpi/virt/APIC.memhp                    |  Bin 0 -> 168 bytes
 tests/data/acpi/virt/APIC.numamem                  |  Bin 0 -> 168 bytes
 tests/data/acpi/virt/DSDT                          |  Bin 18476 -> 5307 bytes
 tests/data/acpi/virt/DSDT.memhp                    |  Bin 0 -> 6644 bytes
 tests/data/acpi/virt/DSDT.numamem                  |  Bin 0 -> 5307 bytes
 tests/data/acpi/virt/FACP.memhp                    |  Bin 0 -> 268 bytes
 tests/data/acpi/virt/FACP.numamem                  |  Bin 0 -> 268 bytes
 tests/data/acpi/virt/GTDT.memhp                    |  Bin 0 -> 96 bytes
 tests/data/acpi/virt/GTDT.numamem                  |  Bin 0 -> 96 bytes
 tests/data/acpi/virt/MCFG.memhp                    |  Bin 0 -> 60 bytes
 tests/data/acpi/virt/MCFG.numamem                  |  Bin 0 -> 60 bytes
 tests/data/acpi/virt/SLIT.memhp                    |  Bin 0 -> 48 bytes
 tests/data/acpi/virt/SPCR.memhp                    |  Bin 0 -> 80 bytes
 tests/data/acpi/virt/SPCR.numamem                  |  Bin 0 -> 80 bytes
 tests/data/acpi/virt/SRAT.memhp                    |  Bin 0 -> 186 bytes
 tests/data/acpi/virt/SRAT.numamem                  |  Bin 0 -> 106 bytes
 tests/dbus-vmstate-daemon.sh                       |   95 +
 tests/decode/err_field6.decode                     |    5 +
 tests/decode/succ_function.decode                  |    6 +
 tests/device-introspect-test.c                     |  323 -
 tests/device-plug-test.c                           |  178 -
 tests/display-vga-test.c                           |   69 -
 tests/docker/Makefile.include                      |   98 +-
 tests/docker/common.rc                             |   11 +-
 tests/docker/docker.py                             |  161 +-
 tests/docker/dockerfiles/centos7.docker            |    6 +-
 tests/docker/dockerfiles/centos8.docker            |   32 +
 tests/docker/dockerfiles/debian-alpha-cross.docker |    7 +-
 tests/docker/dockerfiles/debian-amd64-cross.docker |   22 +
 tests/docker/dockerfiles/debian-amd64.docker       |   10 +-
 tests/docker/dockerfiles/debian-arm64-cross.docker |    7 +-
 tests/docker/dockerfiles/debian-armel-cross.docker |    5 +-
 tests/docker/dockerfiles/debian-armhf-cross.docker |    5 +-
 .../dockerfiles/debian-buster-arm64-cross.docker   |   16 -
 tests/docker/dockerfiles/debian-hppa-cross.docker  |    5 +-
 tests/docker/dockerfiles/debian-m68k-cross.docker  |    5 +-
 tests/docker/dockerfiles/debian-mips-cross.docker  |    7 +-
 .../docker/dockerfiles/debian-mips64-cross.docker  |    5 +-
 .../dockerfiles/debian-mips64el-cross.docker       |    5 +-
 .../docker/dockerfiles/debian-mipsel-cross.docker  |    4 +-
 tests/docker/dockerfiles/debian-ports.docker       |   36 -
 .../docker/dockerfiles/debian-powerpc-cross.docker |    8 +-
 .../dockerfiles/debian-powerpc-user-cross.docker   |   15 -
 tests/docker/dockerfiles/debian-ppc64-cross.docker |    7 +-
 .../docker/dockerfiles/debian-ppc64el-cross.docker |    5 +-
 .../docker/dockerfiles/debian-riscv64-cross.docker |    5 +-
 tests/docker/dockerfiles/debian-s390x-cross.docker |    5 +-
 tests/docker/dockerfiles/debian-sh4-cross.docker   |    5 +-
 tests/docker/dockerfiles/debian-sid.docker         |   41 -
 .../docker/dockerfiles/debian-sparc64-cross.docker |    5 +-
 tests/docker/dockerfiles/debian-win32-cross.docker |    2 +-
 .../docker/dockerfiles/debian-xtensa-cross.docker  |    2 +-
 tests/docker/dockerfiles/debian10.docker           |    8 +-
 tests/docker/dockerfiles/debian8.docker            |   34 -
 tests/docker/dockerfiles/debian9-mxe.docker        |    3 +-
 tests/docker/dockerfiles/debian9.docker            |    7 +-
 tests/docker/dockerfiles/fedora-i386-cross.docker  |    3 +-
 tests/docker/dockerfiles/fedora.docker             |   12 +-
 tests/docker/dockerfiles/travis.docker             |   10 +-
 tests/docker/dockerfiles/ubuntu.docker             |    8 +-
 tests/docker/dockerfiles/ubuntu1804.docker         |   10 +-
 tests/docker/run                                   |    4 +-
 tests/docker/test-build                            |    1 -
 tests/docker/test-clang                            |    6 +-
 tests/docker/test-debug                            |    1 +
 tests/docker/test-mingw                            |    1 -
 tests/docker/test-misc                             |    2 +
 tests/docker/test-quick                            |    1 -
 tests/docker/travis.py                             |    3 +-
 tests/drive_del-test.c                             |  153 -
 tests/ds1338-test.c                                |   58 -
 tests/e1000-test.c                                 |   68 -
 tests/e1000e-test.c                                |  279 -
 tests/eepro100-test.c                              |   77 -
 tests/endianness-test.c                            |  306 -
 tests/es1370-test.c                                |   58 -
 tests/fdc-test.c                                   |  587 --
 tests/fp/Makefile                                  |   14 +-
 tests/fw_cfg-test.c                                |  239 -
 tests/guest-debug/run-test.py                      |   57 +
 tests/guest-debug/test-gdbstub.py                  |    1 -
 tests/hd-geo-test.c                                |  427 -
 tests/hexloader-test.c                             |   45 -
 tests/i440fx-test.c                                |  413 -
 tests/i82801b11-test.c                             |   31 -
 tests/ide-test.c                                   | 1092 ---
 tests/image-fuzzer/qcow2/__init__.py               |    1 -
 tests/image-fuzzer/qcow2/fuzz.py                   |   54 +-
 tests/image-fuzzer/qcow2/layout.py                 |   57 +-
 tests/image-fuzzer/runner.py                       |   16 +-
 tests/intel-hda-test.c                             |   39 -
 tests/ioh3420-test.c                               |   32 -
 tests/iothread.c                                   |   40 +-
 tests/ipmi-bt-test.c                               |  423 -
 tests/ipmi-kcs-test.c                              |  286 -
 tests/ipoctal232-test.c                            |   49 -
 tests/ivshmem-test.c                               |  503 --
 tests/libqos/aarch64-xlnx-zcu102-machine.c         |   95 -
 tests/libqos/ahci.c                                | 1242 ---
 tests/libqos/ahci.h                                |  651 --
 tests/libqos/arm-imx25-pdk-machine.c               |   92 -
 tests/libqos/arm-n800-machine.c                    |   92 -
 tests/libqos/arm-raspi2-machine.c                  |   92 -
 tests/libqos/arm-sabrelite-machine.c               |   92 -
 tests/libqos/arm-smdkc210-machine.c                |   92 -
 tests/libqos/arm-virt-machine.c                    |   91 -
 tests/libqos/arm-xilinx-zynq-a9-machine.c          |   95 -
 tests/libqos/e1000e.c                              |  260 -
 tests/libqos/e1000e.h                              |   53 -
 tests/libqos/fw_cfg.c                              |  164 -
 tests/libqos/fw_cfg.h                              |   52 -
 tests/libqos/i2c-imx.c                             |  216 -
 tests/libqos/i2c-omap.c                            |  196 -
 tests/libqos/i2c.c                                 |   85 -
 tests/libqos/i2c.h                                 |   82 -
 tests/libqos/libqos-pc.c                           |   35 -
 tests/libqos/libqos-pc.h                           |   10 -
 tests/libqos/libqos-spapr.c                        |   33 -
 tests/libqos/libqos-spapr.h                        |   10 -
 tests/libqos/libqos.c                              |  239 -
 tests/libqos/libqos.h                              |   45 -
 tests/libqos/malloc-pc.c                           |   33 -
 tests/libqos/malloc-pc.h                           |   20 -
 tests/libqos/malloc-spapr.c                        |   23 -
 tests/libqos/malloc-spapr.h                        |   15 -
 tests/libqos/malloc.c                              |  347 -
 tests/libqos/malloc.h                              |   50 -
 tests/libqos/pci-pc.c                              |  200 -
 tests/libqos/pci-pc.h                              |   49 -
 tests/libqos/pci-spapr.c                           |  232 -
 tests/libqos/pci-spapr.h                           |   41 -
 tests/libqos/pci.c                                 |  439 --
 tests/libqos/pci.h                                 |  129 -
 tests/libqos/ppc64_pseries-machine.c               |  112 -
 tests/libqos/qgraph.c                              |  759 --
 tests/libqos/qgraph.h                              |  574 --
 tests/libqos/qgraph_internal.h                     |  257 -
 tests/libqos/rtas.c                                |  120 -
 tests/libqos/rtas.h                                |   17 -
 tests/libqos/sdhci.c                               |  164 -
 tests/libqos/sdhci.h                               |   70 -
 tests/libqos/tpci200.c                             |   66 -
 tests/libqos/usb.c                                 |   57 -
 tests/libqos/usb.h                                 |   18 -
 tests/libqos/virtio-9p.c                           |  174 -
 tests/libqos/virtio-9p.h                           |   47 -
 tests/libqos/virtio-balloon.c                      |  114 -
 tests/libqos/virtio-balloon.h                      |   44 -
 tests/libqos/virtio-blk.c                          |  125 -
 tests/libqos/virtio-blk.h                          |   45 -
 tests/libqos/virtio-mmio.c                         |  232 -
 tests/libqos/virtio-mmio.h                         |   50 -
 tests/libqos/virtio-net.c                          |  196 -
 tests/libqos/virtio-net.h                          |   46 -
 tests/libqos/virtio-pci.c                          |  400 -
 tests/libqos/virtio-pci.h                          |   56 -
 tests/libqos/virtio-rng.c                          |  111 -
 tests/libqos/virtio-rng.h                          |   44 -
 tests/libqos/virtio-scsi.c                         |  118 -
 tests/libqos/virtio-scsi.h                         |   44 -


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 12:33:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 12:33:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTltj-0002c7-GA; Wed, 29 Apr 2020 12:33:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTlti-0002c2-0u
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:33:06 +0000
X-Inumbo-ID: 92d94356-8a15-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 92d94356-8a15-11ea-ae69-bc764e2007e4;
 Wed, 29 Apr 2020 12:33:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=PLtEfwO9x1AGp7rKta2u/phRFrK6/OdHbNPumXcPzpA=; b=1EhQfslZGGX6XK/FmB9VcD0LB4
 trQsHeHqge6hugTY/Mga/6uOXtNjpGeajzjANYHFY1Uf1lmXuPJApV47eVkVA02xyoCzP7p8l73Tq
 CMreF+sDuZuA7uMkH0gWj6kWgoBkvfF/D2W3YZoWzEAlkT+VRFN3gFXVn6Czxzz6EuIU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTlth-0000nx-1D
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:33:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTltg-0007Za-WB
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 12:33:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen staging] main loop: Big hammer to fix logfile disk DoS in
 Xen setups
Message-Id: <E1jTltg-0007Za-WB@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 12:33:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 410cc30fdc590417ae730d635bbc70257adf6750
Author:     Ian Jackson <ian.jackson@eu.citrix.com>
AuthorDate: Thu May 26 16:21:56 2016 +0100
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Wed Apr 29 10:20:16 2020 +0100

    main loop: Big hammer to fix logfile disk DoS in Xen setups
    
    Each time round the main loop, we now fstat stderr.  If it is too big,
    we dup2 /dev/null onto it.  This is not a very pretty patch but it is
    very simple, easy to see that it's correct, and has a low risk of
    collateral damage.
    
    There is no limit by default but can be adjusted by setting a new
    environment variable.
    
    This fixes CVE-2014-3672.
    
    Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
    Tested-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
    
    Set the default to 0 so that it won't affect non-xen installation. The
    limit will be set by Xen toolstack.
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
    Acked-by: Anthony PERARD <anthony.perard@citrix.com>
    (cherry picked from commit 44a072f0de0d57c95c2212bbce02888832b7b74f)
    (cherry picked from commit 269381bb635692856aa8789a3f322e543e0c648d)
---
 util/main-loop.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/util/main-loop.c b/util/main-loop.c
index eda63fe4e0..74912ad244 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -175,6 +175,50 @@ int qemu_init_main_loop(Error **errp)
     return 0;
 }
 
+static void check_cve_2014_3672_xen(void)
+{
+    static unsigned long limit = ~0UL;
+    const int fd = 2;
+    struct stat stab;
+
+    if (limit == ~0UL) {
+        const char *s = getenv("XEN_QEMU_CONSOLE_LIMIT");
+        /* XEN_QEMU_CONSOLE_LIMIT=0 means no limit */
+        limit = s ? strtoul(s,0,0) : 0;
+    }
+    if (limit == 0)
+        return;
+
+    int r = fstat(fd, &stab);
+    if (r) {
+        perror("fstat stderr (for CVE-2014-3672 check)");
+        exit(-1);
+    }
+    if (!S_ISREG(stab.st_mode))
+        return;
+    if (stab.st_size <= limit)
+        return;
+
+    /* oh dear */
+    fprintf(stderr,"\r\n"
+            "Closing stderr due to CVE-2014-3672 limit. "
+            " Set XEN_QEMU_CONSOLE_LIMIT to number of bytes to override,"
+            " or 0 for no limit.\n");
+    fflush(stderr);
+
+    int nfd = open("/dev/null", O_WRONLY);
+    if (nfd < 0) {
+        perror("open /dev/null (for CVE-2014-3672 check)");
+        exit(-1);
+    }
+    r = dup2(nfd, fd);
+    if (r != fd) {
+        perror("dup2 /dev/null (for CVE-2014-3672 check)");
+        exit(-1);
+    }
+    close(nfd);
+}
+
 static int max_priority;
 
 #ifndef _WIN32
@@ -229,6 +273,8 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     g_main_context_acquire(context);
 
+    check_cve_2014_3672_xen();
+
     glib_pollfds_fill(&timeout);
 
     qemu_mutex_unlock_iothread();
@@ -401,6 +447,8 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     g_main_context_acquire(context);
 
+    check_cve_2014_3672_xen();
+
     /* XXX: need to suppress polling by better using win32 events */
     ret = 0;
     for (pe = first_polling_entry; pe != NULL; pe = pe->next) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 13:22:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 13:22:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTmf9-0007sN-4D; Wed, 29 Apr 2020 13:22:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTmf8-0007sI-0V
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 13:22:06 +0000
X-Inumbo-ID: 6ab73b60-8a1c-11ea-9949-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6ab73b60-8a1c-11ea-9949-12813bfff9fa;
 Wed, 29 Apr 2020 13:22:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=I8SY8cebhFhHmyRhCFYldpyL9ipDkLe27h9qURuzaMI=; b=4A43I5gwn19g4TRfI1XLeYwh55
 0rL5H+zvkDfE+rGiIFabRWNUJ4DCCFSTCBN0pSAEuhXO0yagpVvh2FGYMqbQF37M/2kVwaki3rtjU
 g2zRij0KtB+sonrrfmd6JIZYDA9jev9henGo4e3y48pepGLTrCpIOZGkwwqtA/yDDSi0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTmf6-0001k1-4y
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 13:22:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTmf6-0002mx-3B
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 13:22:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] xen/grants: fix hypercall continuation for
 GNTTABOP_cache_flush
Message-Id: <E1jTmf6-0002mx-3B@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 13:22:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 46d8f69d466a05863737fb81d8c9ef39c3be8b45
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Wed Apr 22 15:07:53 2020 +0200
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Wed Apr 29 14:12:50 2020 +0100

    xen/grants: fix hypercall continuation for GNTTABOP_cache_flush
    
    The GNTTABOP_cache_flush hypercall has a wrong test for hypercall
    continuation, the test today is:
    
        if ( rc > 0 || opaque_out != 0 )
    
    Unfortunately this will be true even in case of an error (rc < 0),
    possibly leading to very long lasting hypercalls (times of more
    than an hour have been observed in a test case).
    
    Correct the test condition to result in false with rc < 0 and set
    opaque_out only if no error occurred, to be on the safe side.
    
    Partially-suggested-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
 xen/common/grant_table.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 96080b3dec..5ef7ff940d 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3626,12 +3626,12 @@ do_grant_table_op(
         if ( unlikely(!guest_handle_okay(cflush, count)) )
             goto out;
         rc = gnttab_cache_flush(cflush, &opaque_in, count);
-        if ( rc > 0 )
+        if ( rc >= 0 )
         {
             guest_handle_add_offset(cflush, rc);
             uop = guest_handle_cast(cflush, void);
+            opaque_out = opaque_in;
         }
-        opaque_out = opaque_in;
         break;
     }
 
@@ -3641,7 +3641,7 @@ do_grant_table_op(
     }
 
   out:
-    if ( rc > 0 || opaque_out != 0 )
+    if ( rc > 0 || (opaque_out != 0 && rc == 0) )
     {
         /* Adjust rc, see gnttab_copy() for why this is needed. */
         if ( cmd == GNTTABOP_copy )
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 14:11:31 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 14:11:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTnQu-0005sg-QR; Wed, 29 Apr 2020 14:11:28 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTnQu-0005sS-7E
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 14:11:28 +0000
X-Inumbo-ID: 50d6c5a6-8a23-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 50d6c5a6-8a23-11ea-9887-bc764e2007e4;
 Wed, 29 Apr 2020 14:11:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZKlsUEOtAC2mgNqo29A4qpeL3bFUkEk9T0+lTBiWLOo=; b=kLUmUgcr0DVFED0/nbh1c5Zo2R
 9rxYgniGOWQE42JTJu4KGanlRc3/EMmHNCuGqkiEXlUDw5EPoU0d4NHkz1BZYaWQMyTEt95BNspz8
 Ip8Oj4I4t21A2uTIHVTMrPPHx44mXrvp5/OPFKvgV8tpM0luDWD3FE0M/rSyTmuVNQbQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTnQt-0002oP-5e
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 14:11:27 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTnQs-000718-VC
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 14:11:26 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/S3: Drop {save,
 restore}_rest_processor_state() completely
Message-Id: <E1jTnQs-000718-VC@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 14:11:26 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4304ff420e51b973ec9eb9dafd64a917dd9c0fb1
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Wed Dec 11 20:59:19 2019 +0000
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 14:47:28 2020 +0100

    x86/S3: Drop {save,restore}_rest_processor_state() completely
    
    There is no need to save/restore FS/GS/XCR0 state.  It will be handled
    suitably on the context switch away from the idle.
    
    The CR4 restoration in restore_rest_processor_state() was actually fighting
    later code in enter_state() which tried to keep CR4.MCE clear until everything
    was set up.  Delete the intermediate restoration, and defer final restoration
    until after MCE is reconfigured.
    
    Restoring PAT can be done earlier, and ideally before paging is enabled.  By
    moving it into the trampoline during the setup for 64bit, the call can be
    dropped from cpu_init().  The EFI path boot path doesn't disable paging, so
    make the adjustment when switching onto Xen's pagetables.
    
    The only remaing piece of restoration is load_system_tables(), so suspend.c
    can be deleted in its entirety.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/acpi/Makefile      |  2 +-
 xen/arch/x86/acpi/power.c       |  9 ++++----
 xen/arch/x86/acpi/suspend.c     | 49 -----------------------------------------
 xen/arch/x86/acpi/wakeup_prot.S |  4 +---
 xen/arch/x86/boot/trampoline.S  |  5 +++++
 xen/arch/x86/cpu/common.c       |  2 --
 xen/arch/x86/efi/efi-boot.h     |  1 +
 7 files changed, 12 insertions(+), 60 deletions(-)

diff --git a/xen/arch/x86/acpi/Makefile b/xen/arch/x86/acpi/Makefile
index 1b9e625713..041377e2bb 100644
--- a/xen/arch/x86/acpi/Makefile
+++ b/xen/arch/x86/acpi/Makefile
@@ -1,4 +1,4 @@
 obj-y += cpufreq/
 
-obj-y += lib.o power.o suspend.o cpu_idle.o cpuidle_menu.o
+obj-y += lib.o power.o cpu_idle.o cpuidle_menu.o
 obj-bin-y += boot.init.o wakeup_prot.o
diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c
index 6dfd4c7891..0cda362045 100644
--- a/xen/arch/x86/acpi/power.c
+++ b/xen/arch/x86/acpi/power.c
@@ -195,7 +195,6 @@ static int enter_state(u32 state)
     unsigned long flags;
     int error;
     struct cpu_info *ci;
-    unsigned long cr4;
 
     if ( (state <= ACPI_STATE_S0) || (state > ACPI_S_STATES_MAX) )
         return -EINVAL;
@@ -270,15 +269,15 @@ static int enter_state(u32 state)
 
     system_state = SYS_STATE_resume;
 
-    /* Restore CR4 and EFER from cached values. */
-    cr4 = read_cr4();
-    write_cr4(cr4 & ~X86_CR4_MCE);
+    /* Restore EFER from cached value. */
     write_efer(read_efer());
 
     device_power_up(SAVED_ALL);
 
     mcheck_init(&boot_cpu_data, false);
-    write_cr4(cr4);
+
+    /* Restore CR4 from cached value, now MCE is set up. */
+    write_cr4(read_cr4());
 
     printk(XENLOG_INFO "Finishing wakeup from ACPI S%d state.\n", state);
 
diff --git a/xen/arch/x86/acpi/suspend.c b/xen/arch/x86/acpi/suspend.c
deleted file mode 100644
index 3c1a3cbb34..0000000000
--- a/xen/arch/x86/acpi/suspend.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Portions are:
- *  Copyright (c) 2002 Pavel Machek <pavel@suse.cz>
- *  Copyright (c) 2001 Patrick Mochel <mochel@osdl.org>
- */
-
-#include <xen/acpi.h>
-#include <xen/smp.h>
-#include <asm/processor.h>
-#include <asm/msr.h>
-#include <asm/debugreg.h>
-#include <asm/hvm/hvm.h>
-#include <asm/hvm/support.h>
-#include <asm/i387.h>
-#include <asm/xstate.h>
-#include <xen/hypercall.h>
-
-static unsigned long saved_fs_base, saved_gs_base, saved_kernel_gs_base;
-static uint64_t saved_xcr0;
-
-void save_rest_processor_state(void)
-{
-    saved_fs_base = rdfsbase();
-    saved_gs_base = rdgsbase();
-    rdmsrl(MSR_SHADOW_GS_BASE, saved_kernel_gs_base);
-
-    if ( cpu_has_xsave )
-        saved_xcr0 = get_xcr0();
-}
-
-
-void restore_rest_processor_state(void)
-{
-    load_system_tables();
-
-    /* Restore full CR4 (inc MCE) now that the IDT is in place. */
-    write_cr4(mmu_cr4_features);
-
-    wrfsbase(saved_fs_base);
-    wrgsbase(saved_gs_base);
-    wrmsrl(MSR_SHADOW_GS_BASE, saved_kernel_gs_base);
-
-    if ( cpu_has_xsave && !set_xcr0(saved_xcr0) )
-        BUG();
-
-    wrmsrl(MSR_IA32_CR_PAT, XEN_MSR_PAT);
-
-    mtrr_bp_restore();
-}
diff --git a/xen/arch/x86/acpi/wakeup_prot.S b/xen/arch/x86/acpi/wakeup_prot.S
index 0ce96e26a9..4dba6020a7 100644
--- a/xen/arch/x86/acpi/wakeup_prot.S
+++ b/xen/arch/x86/acpi/wakeup_prot.S
@@ -15,8 +15,6 @@ ENTRY(do_suspend_lowlevel)
         mov     %cr0, %rax
         mov     %rax, saved_cr0(%rip)
 
-        call    save_rest_processor_state
-
         /* enter sleep state physically */
         mov     $3, %edi
         call    acpi_enter_sleep_state
@@ -51,7 +49,7 @@ ENTRY(s3_resume)
         lretq
 1:
 
-        call restore_rest_processor_state
+        call    load_system_tables
 
 .Lsuspend_err:
         pop     %r15
diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 18c6638924..662e6bdd3c 100644
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -91,6 +91,11 @@ trampoline_protmode_entry:
         and     %edi,%edx
         wrmsr
 1:
+        /* Set up PAT before enabling paging. */
+        mov     $XEN_MSR_PAT & 0xffffffff, %eax
+        mov     $XEN_MSR_PAT >> 32, %edx
+        mov     $MSR_IA32_CR_PAT, %ecx
+        wrmsr
 
         /* Set up EFER (Extended Feature Enable Register). */
         movl    $MSR_EFER,%ecx
diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
index 1b33f1ed71..2e9631f6b2 100644
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -790,8 +790,6 @@ void cpu_init(void)
 	if (opt_cpu_info)
 		printk("Initializing CPU#%d\n", cpu);
 
-	wrmsrl(MSR_IA32_CR_PAT, XEN_MSR_PAT);
-
 	/* Install correct page table. */
 	write_ptbase(current);
 
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index a13304201f..176df20c9c 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -242,6 +242,7 @@ static void __init noreturn efi_arch_post_exit_boot(void)
     if ( cpu_has_nx )
         efer |= EFER_NX;
     wrmsrl(MSR_EFER, efer);
+    wrmsrl(MSR_IA32_CR_PAT, XEN_MSR_PAT);
     write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
               X86_CR0_AM | X86_CR0_PG);
     asm volatile ( "mov    %[cr4], %%cr4\n\t"
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 16:33:10 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 16:33:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTpdw-0004JW-Pg; Wed, 29 Apr 2020 16:33:04 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTpdv-0004JR-QJ
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:03 +0000
X-Inumbo-ID: 183bdd80-8a37-11ea-9972-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 183bdd80-8a37-11ea-9972-12813bfff9fa;
 Wed, 29 Apr 2020 16:33:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ZIjKkDjUzYby5kix+L/hfxUeLteM8amf+TWWFVqEpiY=; b=qNGJ092uDBRWPdY9EAy4fnCFE8
 3y3SB3SJndmkb58yPYL9mDEilo2CizYGcT97JqPg0wgjajxBOmpa6irp2U/2Bo9CoPLbdm6tfsYDE
 Y+5EcbYYoVrFuocIdozsaIyjrXC4VfbzgVkBdeTf4DEFLFs+FrCILye5lakbCpFb5Zrw=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpdu-0005zc-5x
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpdu-00014E-4p
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] tools/xenstore: simplify socket initialization
Message-Id: <E1jTpdu-00014E-4p@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 16:33:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 44420fb223c24305642ae3189e2c6c99c565ed12
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Tue Apr 28 16:58:37 2020 +0200
Commit:     Wei Liu <wl@xen.org>
CommitDate: Tue Apr 28 16:38:18 2020 +0100

    tools/xenstore: simplify socket initialization
    
    The setup of file descriptors for the Xenstore sockets is needlessly
    complicated: the space is allocated dynamically, while two static
    variables really would do the job.
    
    For tearing down the sockets it is easier to widen the scope of the
    file descriptors from function to file.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 tools/xenstore/xenstored_core.c | 69 ++++++++++++++++-------------------------
 1 file changed, 27 insertions(+), 42 deletions(-)

diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c
index 551fe38f57..7bd959f28b 100644
--- a/tools/xenstore/xenstored_core.c
+++ b/tools/xenstore/xenstored_core.c
@@ -70,6 +70,9 @@ static struct pollfd *fds;
 static unsigned int current_array_size;
 static unsigned int nr_fds;
 
+static int sock = -1;
+static int ro_sock = -1;
+
 #define ROUNDUP(_x, _w) (((unsigned long)(_x)+(1UL<<(_w))-1) & ~((1UL<<(_w))-1))
 
 static bool verbose = false;
@@ -310,8 +313,7 @@ fail:
 	return -1;
 }
 
-static void initialize_fds(int sock, int *p_sock_pollfd_idx,
-			   int ro_sock, int *p_ro_sock_pollfd_idx,
+static void initialize_fds(int *p_sock_pollfd_idx, int *p_ro_sock_pollfd_idx,
 			   int *ptimeout)
 {
 	struct connection *conn;
@@ -1789,43 +1791,29 @@ void corrupt(struct connection *conn, const char *fmt, ...)
 	check_store();
 }
 
-
-#ifdef NO_SOCKETS
-static void init_sockets(int **psock, int **pro_sock)
-{
-	static int minus_one = -1;
-	*psock = *pro_sock = &minus_one;
-}
-#else
-static int destroy_fd(void *_fd)
+#ifndef NO_SOCKETS
+static void destroy_fds(void)
 {
-	int *fd = _fd;
-	close(*fd);
-	return 0;
+	if (sock >= 0)
+		close(sock);
+	if (ro_sock >= 0)
+		close(ro_sock);
 }
 
-static void init_sockets(int **psock, int **pro_sock)
+static void init_sockets(void)
 {
 	struct sockaddr_un addr;
-	int *sock, *ro_sock;
 	const char *soc_str = xs_daemon_socket();
 	const char *soc_str_ro = xs_daemon_socket_ro();
 
 	/* Create sockets for them to listen to. */
-	*psock = sock = talloc(talloc_autofree_context(), int);
-	if (!sock)
-		barf_perror("No memory when creating sockets");
-	*sock = socket(PF_UNIX, SOCK_STREAM, 0);
-	if (*sock < 0)
+	atexit(destroy_fds);
+	sock = socket(PF_UNIX, SOCK_STREAM, 0);
+	if (sock < 0)
 		barf_perror("Could not create socket");
-	*pro_sock = ro_sock = talloc(talloc_autofree_context(), int);
-	if (!ro_sock)
-		barf_perror("No memory when creating sockets");
-	*ro_sock = socket(PF_UNIX, SOCK_STREAM, 0);
-	if (*ro_sock < 0)
+	ro_sock = socket(PF_UNIX, SOCK_STREAM, 0);
+	if (ro_sock < 0)
 		barf_perror("Could not create socket");
-	talloc_set_destructor(sock, destroy_fd);
-	talloc_set_destructor(ro_sock, destroy_fd);
 
 	/* FIXME: Be more sophisticated, don't mug running daemon. */
 	unlink(soc_str);
@@ -1836,24 +1824,21 @@ static void init_sockets(int **psock, int **pro_sock)
 	if(strlen(soc_str) >= sizeof(addr.sun_path))
 		barf_perror("socket string '%s' too long", soc_str);
 	strcpy(addr.sun_path, soc_str);
-	if (bind(*sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
+	if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
 		barf_perror("Could not bind socket to %s", soc_str);
 
 	if(strlen(soc_str_ro) >= sizeof(addr.sun_path))
 		barf_perror("socket string '%s' too long", soc_str_ro);
 	strcpy(addr.sun_path, soc_str_ro);
-	if (bind(*ro_sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
+	if (bind(ro_sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
 		barf_perror("Could not bind socket to %s", soc_str_ro);
 
 	if (chmod(soc_str, 0600) != 0
 	    || chmod(soc_str_ro, 0660) != 0)
 		barf_perror("Could not chmod sockets");
 
-	if (listen(*sock, 1) != 0
-	    || listen(*ro_sock, 1) != 0)
+	if (listen(sock, 1) != 0 || listen(ro_sock, 1) != 0)
 		barf_perror("Could not listen on sockets");
-
-
 }
 #endif
 
@@ -1909,7 +1894,7 @@ int priv_domid = 0;
 
 int main(int argc, char *argv[])
 {
-	int opt, *sock = NULL, *ro_sock = NULL;
+	int opt;
 	int sock_pollfd_idx = -1, ro_sock_pollfd_idx = -1;
 	bool dofork = true;
 	bool outputpid = false;
@@ -1997,7 +1982,9 @@ int main(int argc, char *argv[])
 
 	talloc_enable_null_tracking();
 
-	init_sockets(&sock, &ro_sock);
+#ifndef NO_SOCKETS
+	init_sockets();
+#endif
 
 	init_pipe(reopen_log_pipe);
 
@@ -2025,8 +2012,7 @@ int main(int argc, char *argv[])
 		tracefile = talloc_strdup(NULL, tracefile);
 
 	/* Get ready to listen to the tools. */
-	initialize_fds(*sock, &sock_pollfd_idx, *ro_sock, &ro_sock_pollfd_idx,
-		       &timeout);
+	initialize_fds(&sock_pollfd_idx, &ro_sock_pollfd_idx, &timeout);
 
 	/* Tell the kernel we're up and running. */
 	xenbus_notify_running();
@@ -2067,7 +2053,7 @@ int main(int argc, char *argv[])
 				barf_perror("sock poll failed");
 				break;
 			} else if (fds[sock_pollfd_idx].revents & POLLIN) {
-				accept_connection(*sock, true);
+				accept_connection(sock, true);
 				sock_pollfd_idx = -1;
 			}
 		}
@@ -2077,7 +2063,7 @@ int main(int argc, char *argv[])
 				barf_perror("ro sock poll failed");
 				break;
 			} else if (fds[ro_sock_pollfd_idx].revents & POLLIN) {
-				accept_connection(*ro_sock, false);
+				accept_connection(ro_sock, false);
 				ro_sock_pollfd_idx = -1;
 			}
 		}
@@ -2144,8 +2130,7 @@ int main(int argc, char *argv[])
 			}
 		}
 
-		initialize_fds(*sock, &sock_pollfd_idx, *ro_sock,
-			       &ro_sock_pollfd_idx, &timeout);
+		initialize_fds(&sock_pollfd_idx, &ro_sock_pollfd_idx, &timeout);
 	}
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 16:33:13 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 16:33:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTpe5-0004Jy-RD; Wed, 29 Apr 2020 16:33:13 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTpe5-0004Js-As
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:13 +0000
X-Inumbo-ID: 1e436996-8a37-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 1e436996-8a37-11ea-ae69-bc764e2007e4;
 Wed, 29 Apr 2020 16:33:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=0eE/7mYRdtXwSIWULQjXlU8/21AuPyoIexYJ34KpU20=; b=D5Pz6mh0CQ5QBsqrtVmkxOiK/N
 AsWjtn84zQuemE9E/fsCifVbmXrmpiA5ocgNP6bkbyX2VNyzIEIGJfrzKXeW9QkGQlOMnVG18AUzn
 OWIIppa2IJ/pPLBjTZFnJK394QjiJsMrVDddaKWfIskUDbgR1BZwMfLRi5/0Al/TxMEA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpe4-0005zj-8z
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpe4-00015J-7q
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86_64/mm: map and unmap page tables in
 cleanup_frame_table
Message-Id: <E1jTpe4-00015J-7q@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 16:33:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 93414e42c75a37b67a4c347f55b2d21d939b576c
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:46:29 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:46:29 2020 +0200

    x86_64/mm: map and unmap page tables in cleanup_frame_table
    
    Also fix a weird indentation and use PAGE_{MASK,SIZE} there.
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index e85ef449f3..cc7bd12d63 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -737,8 +737,8 @@ static void cleanup_frame_table(struct mem_hotadd_info *info)
 
     while (sva < eva)
     {
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(sva)])[
-          l3_table_offset(sva)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(sva)],
+                           l3_table_offset(sva));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) ||
              (l3e_get_flags(l3e) & _PAGE_PSE) )
         {
@@ -747,7 +747,7 @@ static void cleanup_frame_table(struct mem_hotadd_info *info)
             continue;
         }
 
-        l2e = l3e_to_l2e(l3e)[l2_table_offset(sva)];
+        l2e = l2e_from_l3e(l3e, l2_table_offset(sva));
         ASSERT(l2e_get_flags(l2e) & _PAGE_PRESENT);
 
         if ( (l2e_get_flags(l2e) & (_PAGE_PRESENT | _PAGE_PSE)) ==
@@ -763,10 +763,10 @@ static void cleanup_frame_table(struct mem_hotadd_info *info)
             continue;
         }
 
-        ASSERT(l1e_get_flags(l2e_to_l1e(l2e)[l1_table_offset(sva)]) &
-                _PAGE_PRESENT);
-         sva = (sva & ~((1UL << PAGE_SHIFT) - 1)) +
-                    (1UL << PAGE_SHIFT);
+        ASSERT(l1e_get_flags(l1e_from_l2e(l2e, l1_table_offset(sva))) &
+               _PAGE_PRESENT);
+
+        sva = (sva & PAGE_MASK) + PAGE_SIZE;
     }
 
     /* Brute-Force flush all TLB */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 16:33:23 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 16:33:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTpeF-0004LD-UR; Wed, 29 Apr 2020 16:33:23 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTpeF-0004L7-87
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:23 +0000
X-Inumbo-ID: 239734eb-8a37-11ea-9972-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 239734eb-8a37-11ea-9972-12813bfff9fa;
 Wed, 29 Apr 2020 16:33:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=klgZdAGTYs400v8jxzzKAepAmJnJUvp7JeO/ali1RUM=; b=h2RpzU8OHCmBP5GjzJFFMPR5Pt
 hbuyHCn6vUF9L9NXxe1NWREE7KnW9OyJRlIhDXWOJXXl4gArkc4XuMEfkekmbKpX7BTKdkeeRkudi
 JN90XIETsD2WqIgcmoJxw/vuVjgNr1Ek8shKRdirKvVWeu2fg4sg8PLDBepEGCZTeSkQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpeE-0005zu-Jw
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:22 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpeE-00016N-H6
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:22 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86_64/mm: map and unmap page tables in
 subarch_init_memory
Message-Id: <E1jTpeE-00016N-H6@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 16:33:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit a4dcb4b47dd99b0ea49c3dd5acd408c7bc42ce3c
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:47:20 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:47:20 2020 +0200

    x86_64/mm: map and unmap page tables in subarch_init_memory
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index cc7bd12d63..e1c7fd34d3 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -852,14 +852,14 @@ void __init subarch_init_memory(void)
           v += n << PAGE_SHIFT )
     {
         n = L2_PAGETABLE_ENTRIES * L1_PAGETABLE_ENTRIES;
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-            l3_table_offset(v)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                           l3_table_offset(v));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
             continue;
         if ( !(l3e_get_flags(l3e) & _PAGE_PSE) )
         {
             n = L1_PAGETABLE_ENTRIES;
-            l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+            l2e = l2e_from_l3e(l3e, l2_table_offset(v));
             if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
                 continue;
             m2p_start_mfn = l2e_get_pfn(l2e);
@@ -878,11 +878,11 @@ void __init subarch_init_memory(void)
           v != RDWR_COMPAT_MPT_VIRT_END;
           v += 1 << L2_PAGETABLE_SHIFT )
     {
-        l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-            l3_table_offset(v)];
+        l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                           l3_table_offset(v));
         if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
             continue;
-        l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+        l2e = l2e_from_l3e(l3e, l2_table_offset(v));
         if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) )
             continue;
         m2p_start_mfn = l2e_get_pfn(l2e);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 16:33:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 16:33:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTpeQ-0004MH-W5; Wed, 29 Apr 2020 16:33:34 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTpeP-0004M8-Fk
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:33 +0000
X-Inumbo-ID: 2a7be152-8a37-11ea-9972-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2a7be152-8a37-11ea-9972-12813bfff9fa;
 Wed, 29 Apr 2020 16:33:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=KcJIVuIiibmaFpbslu8eTsiOlJhPfdRuWA1BPMht7UM=; b=nMZxGTW8z1oQHcGDVL/5zbVkFE
 cJyi/GF0Ry8BVNSQel7RPOv/blEDT+oVQQ2TMWLmlU4YCPzpPJ0vD4Azbg5UW9YvkZbQ74ar3zTXN
 iCiqXMT4eR3jRMU0JFFLt03cCltgPIplM0t4iuEAyVhabmq/3XE74XZWcdlOyT7Alrss=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpeO-000607-Ox
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:32 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpeO-00016w-Nu
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:32 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86_64/mm: map and unmap page tables in subarch_memory_op
Message-Id: <E1jTpeO-00016w-Nu@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 16:33:32 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 72476526071bf5ff89ee24404358430b0f3f0b20
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:48:02 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:48:02 2020 +0200

    x86_64/mm: map and unmap page tables in subarch_memory_op
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/x86_64/mm.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index e1c7fd34d3..747941d48e 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -932,13 +932,13 @@ long subarch_memory_op(unsigned long cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
               (v < (unsigned long)(machine_to_phys_mapping + max_page));
               i++, v += 1UL << L2_PAGETABLE_SHIFT )
         {
-            l3e = l4e_to_l3e(idle_pg_table[l4_table_offset(v)])[
-                l3_table_offset(v)];
+            l3e = l3e_from_l4e(idle_pg_table[l4_table_offset(v)],
+                               l3_table_offset(v));
             if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) )
                 mfn = last_mfn;
             else if ( !(l3e_get_flags(l3e) & _PAGE_PSE) )
             {
-                l2e = l3e_to_l2e(l3e)[l2_table_offset(v)];
+                l2e = l2e_from_l3e(l3e, l2_table_offset(v));
                 if ( l2e_get_flags(l2e) & _PAGE_PRESENT )
                     mfn = l2e_get_pfn(l2e);
                 else
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 16:33:45 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 16:33:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTpeb-0004O5-1W; Wed, 29 Apr 2020 16:33:45 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTpeZ-0004Ns-OB
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:43 +0000
X-Inumbo-ID: 30a17d8a-8a37-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 30a17d8a-8a37-11ea-ae69-bc764e2007e4;
 Wed, 29 Apr 2020 16:33:43 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=zWNZ6MqzeAFFxYNITQ2KmRaQdCmUG3+AGbSrhFvGqks=; b=kSuaQ8N6GdgkJ1pGaR+wKvp9WB
 ic3qU/F9SUTfWnzH9UY7u635T1FaE4RfPD1B8glY8Sa82qgdE2J1NLwFR7PvNoGHmSxJmw1vwVLtF
 rUNQALsNZSMe7Zu9xyo2QbFo8csyepNVJkQkOeYQDsJauM0aqwCjxiRL59p8qRGJjKSE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpeZ-00060w-3G
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpeZ-00018I-0F
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/smpboot: map and unmap page tables in
 cleanup_cpu_root_pgt
Message-Id: <E1jTpeZ-00018I-0F@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 16:33:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9749f78fc897427fd682008ccb1b715c15ecfbba
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:48:36 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:48:36 2020 +0200

    x86/smpboot: map and unmap page tables in cleanup_cpu_root_pgt
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/smpboot.c | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index 09264b02d1..275ce7661d 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -858,23 +858,27 @@ static void cleanup_cpu_root_pgt(unsigned int cpu)
           r < root_table_offset(HYPERVISOR_VIRT_END); ++r )
     {
         l3_pgentry_t *l3t;
+        mfn_t l3mfn;
         unsigned int i3;
 
         if ( !(root_get_flags(rpt[r]) & _PAGE_PRESENT) )
             continue;
 
-        l3t = l4e_to_l3e(rpt[r]);
+        l3mfn = l4e_get_mfn(rpt[r]);
+        l3t = map_domain_page(l3mfn);
 
         for ( i3 = 0; i3 < L3_PAGETABLE_ENTRIES; ++i3 )
         {
             l2_pgentry_t *l2t;
+            mfn_t l2mfn;
             unsigned int i2;
 
             if ( !(l3e_get_flags(l3t[i3]) & _PAGE_PRESENT) )
                 continue;
 
             ASSERT(!(l3e_get_flags(l3t[i3]) & _PAGE_PSE));
-            l2t = l3e_to_l2e(l3t[i3]);
+            l2mfn = l3e_get_mfn(l3t[i3]);
+            l2t = map_domain_page(l2mfn);
 
             for ( i2 = 0; i2 < L2_PAGETABLE_ENTRIES; ++i2 )
             {
@@ -882,13 +886,15 @@ static void cleanup_cpu_root_pgt(unsigned int cpu)
                     continue;
 
                 ASSERT(!(l2e_get_flags(l2t[i2]) & _PAGE_PSE));
-                free_xen_pagetable(l2e_to_l1e(l2t[i2]));
+                free_xen_pagetable_new(l2e_get_mfn(l2t[i2]));
             }
 
-            free_xen_pagetable(l2t);
+            unmap_domain_page(l2t);
+            free_xen_pagetable_new(l2mfn);
         }
 
-        free_xen_pagetable(l3t);
+        unmap_domain_page(l3t);
+        free_xen_pagetable_new(l3mfn);
     }
 
     free_xen_pagetable(rpt);
@@ -896,11 +902,14 @@ static void cleanup_cpu_root_pgt(unsigned int cpu)
     /* Also zap the stub mapping for this CPU. */
     if ( stub_linear )
     {
-        l3_pgentry_t *l3t = l4e_to_l3e(common_pgt);
-        l2_pgentry_t *l2t = l3e_to_l2e(l3t[l3_table_offset(stub_linear)]);
-        l1_pgentry_t *l1t = l2e_to_l1e(l2t[l2_table_offset(stub_linear)]);
+        l3_pgentry_t l3e = l3e_from_l4e(common_pgt,
+                                        l3_table_offset(stub_linear));
+        l2_pgentry_t l2e = l2e_from_l3e(l3e, l2_table_offset(stub_linear));
+        l1_pgentry_t *l1t = map_l1t_from_l2e(l2e);
 
         l1t[l1_table_offset(stub_linear)] = l1e_empty();
+
+        unmap_domain_page(l1t);
     }
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 16:33:55 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 16:33:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTpel-0004PM-35; Wed, 29 Apr 2020 16:33:55 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTpek-0004PE-3k
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:54 +0000
X-Inumbo-ID: 36d7027e-8a37-11ea-9972-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 36d7027e-8a37-11ea-9972-12813bfff9fa;
 Wed, 29 Apr 2020 16:33:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=pG3ZnjB70+HmWji7WBLbL/9A99nsJAIV3L7l22uZu/g=; b=fi+cDR05lL2RzaOmjfsrHod6Md
 xhiy9JfpfbTx54BdjLWM4zjWe+1unLqSjXDoAkl6RYBRmH+wVZPP3SZpEazJebrzIcwUgj37EBB6L
 Y2gXsGZ/aoz3yhsIs6+rJFr4lYyhfXSgQi2VcbJLvURKymaDShgYZ/qcA/d/oUAnOR0Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpej-000616-H2
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:53 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpej-00019D-Dy
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:33:53 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/pv: map and unmap page table in dom0_construct_pv
Message-Id: <E1jTpej-00019D-Dy@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 16:33:53 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e55884368563eb0d905b08d8bab501b53d612b68
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Tue Apr 28 17:49:17 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:49:17 2020 +0200

    x86/pv: map and unmap page table in dom0_construct_pv
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/pv/dom0_build.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 5678da782d..abfbe5f436 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -669,6 +669,8 @@ int __init dom0_construct_pv(struct domain *d,
 
     if ( is_pv_32bit_domain(d) )
     {
+        l2_pgentry_t *l2t;
+
         /* Ensure the first four L3 entries are all populated. */
         for ( i = 0, l3tab = l3start; i < 4; ++i, ++l3tab )
         {
@@ -683,7 +685,9 @@ int __init dom0_construct_pv(struct domain *d,
                 l3e_get_page(*l3tab)->u.inuse.type_info |= PGT_pae_xen_l2;
         }
 
-        init_xen_pae_l2_slots(l3e_to_l2e(l3start[3]), d);
+        l2t = map_l2t_from_l3e(l3start[3]);
+        init_xen_pae_l2_slots(l2t, d);
+        unmap_domain_page(l2t);
     }
 
     /* Pages that are part of page tables must be read only. */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 16:34:05 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 16:34:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTpev-0004QS-4n; Wed, 29 Apr 2020 16:34:05 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTpeu-0004QJ-7a
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:34:04 +0000
X-Inumbo-ID: 3ce231e8-8a37-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 3ce231e8-8a37-11ea-ae69-bc764e2007e4;
 Wed, 29 Apr 2020 16:34:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=y45skhpp7A8FNPbX8Hp/yu585FusojHczjfIIhE2pfI=; b=QoDlwNttLCszWzFxOVlBu6gcf5
 9WD9WSHLYbvw6GljVGDGM8gvijty07BghP9RY8y+Dm5WoJxSd4UKiohh73u4eMjpM/izVoGpGM+qp
 z8vAPOJGzmLlk0IBS62wuY03EKl01MEmlFmAFxEgf+MSUaSB4B6gSV1bP1SCYV2/F8g4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpet-00061S-MT
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:34:03 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTpet-0001Av-LL
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 16:34:03 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] PCI: drop a redundant variable from pci_add_device()
Message-Id: <E1jTpet-0001Av-LL@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 16:34:03 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4ec07971f1c5a236a0d8c528d806efb6bfd3d1a6
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Tue Apr 28 17:49:55 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Tue Apr 28 17:49:55 2020 +0200

    PCI: drop a redundant variable from pci_add_device()
    
    Surrounding code already uses the available alternative, after all.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
---
 xen/drivers/passthrough/pci.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 5660f7e1c2..15114e7cbc 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -760,7 +760,6 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
             {
                 unsigned int idx = pos + PCI_SRIOV_BAR + i * 4;
                 uint32_t bar = pci_conf_read32(pdev->sbdf, idx);
-                pci_sbdf_t sbdf = PCI_SBDF3(seg, bus, devfn);
 
                 if ( (bar & PCI_BASE_ADDRESS_SPACE) ==
                      PCI_BASE_ADDRESS_SPACE_IO )
@@ -771,7 +770,8 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
                            seg, bus, slot, func, i);
                     continue;
                 }
-                ret = pci_size_mem_bar(sbdf, idx, NULL, &pdev->vf_rlen[i],
+                ret = pci_size_mem_bar(pdev->sbdf, idx, NULL,
+                                       &pdev->vf_rlen[i],
                                        PCI_BAR_VF |
                                        ((i == PCI_SRIOV_NUM_BARS - 1) ?
                                         PCI_BAR_LAST : 0));
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 18:56:52 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 18:56:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTrt2-0001tz-Mn; Wed, 29 Apr 2020 18:56:48 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTrt1-0001tu-3L
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 18:56:47 +0000
X-Inumbo-ID: 2c6bde04-8a4b-11ea-9995-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 2c6bde04-8a4b-11ea-9995-12813bfff9fa;
 Wed, 29 Apr 2020 18:56:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=5hefZIEFw5ilKOjWzq7pN+ImqRjPyCT7XDCmaVGrNSM=; b=eObGSil/k5M/+3fS/XgWbYxOWe
 Y75C7dOrqFlZGG9qVOyMX3Zbwr5pbMS9J3Zao7XFqW64fN3ifLKg44dTItuEVqMZj9FTmqRZcZd7p
 8tKsA4t8IoNVUR9x09LLtZe0XNGNSPjVikAvhkm0Syj8nFuCmNBARpMS4gotWXo0isaY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTrsz-0000Hr-Tu
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 18:56:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTrsz-0006yZ-Sc
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 18:56:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen master] xen-bus/block: explicitly assign event channels to
 an AioContext
Message-Id: <E1jTrsz-0006yZ-Sc@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 18:56:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 63cb54f1fe78f2c2365e46d4dccbf30831077049
Author:     Paul Durrant <pdurrant@amazon.com>
AuthorDate: Mon Dec 16 14:34:51 2019 +0000
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Fri Feb 28 14:52:52 2020 +0000

    xen-bus/block: explicitly assign event channels to an AioContext
    
    It is not safe to close an event channel from the QEMU main thread when
    that channel's poller is running in IOThread context.
    
    This patch adds a new xen_device_set_event_channel_context() function
    to explicitly assign the channel AioContext, and modifies
    xen_device_bind_event_channel() to initially assign the channel's poller
    to the QEMU main thread context. The code in xen-block's dataplane is
    then modified to assign the channel to IOThread context during
    xen_block_dataplane_start() and de-assign it during in
    xen_block_dataplane_stop(), such that the channel is always assigned
    back to main thread context before it is closed. aio_set_fd_handler()
    already deals with all the necessary synchronization when moving an fd
    between AioContext-s so no extra code is needed to manage this.
    
    Reported-by: Julien Grall <jgrall@amazon.com>
    Signed-off-by: Paul Durrant <pdurrant@amazon.com>
    Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
    Message-Id: <20191216143451.19024-1-pdurrant@amazon.com>
    Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
    (cherry picked from commit 32d0b7be68216f130dc962533c6fc2f9ad848a8b)
---
 hw/block/dataplane/xen-block.c | 20 ++++++++++++++++++--
 hw/xen/xen-bus.c               | 27 +++++++++++++++++++++++----
 include/hw/xen/xen-bus.h       |  5 ++++-
 3 files changed, 45 insertions(+), 7 deletions(-)

diff --git a/hw/block/dataplane/xen-block.c b/hw/block/dataplane/xen-block.c
index 0f200c5fb0..18ba4ac897 100644
--- a/hw/block/dataplane/xen-block.c
+++ b/hw/block/dataplane/xen-block.c
@@ -685,12 +685,24 @@ void xen_block_dataplane_stop(XenBlockDataPlane *dataplane)
         return;
     }
 
+    xendev = dataplane->xendev;
+
     aio_context_acquire(dataplane->ctx);
+    if (dataplane->event_channel) {
+        /* Only reason for failure is a NULL channel */
+        xen_device_set_event_channel_context(xendev, dataplane->event_channel,
+                                             qemu_get_aio_context(),
+                                             &error_abort);
+    }
     /* Xen doesn't have multiple users for nodes, so this can't fail */
     blk_set_aio_context(dataplane->blk, qemu_get_aio_context(), &error_abort);
     aio_context_release(dataplane->ctx);
 
-    xendev = dataplane->xendev;
+    /*
+     * Now that the context has been moved onto the main thread, cancel
+     * further processing.
+     */
+    qemu_bh_cancel(dataplane->bh);
 
     if (dataplane->event_channel) {
         Error *local_err = NULL;
@@ -807,7 +819,7 @@ void xen_block_dataplane_start(XenBlockDataPlane *dataplane,
     }
 
     dataplane->event_channel =
-        xen_device_bind_event_channel(xendev, dataplane->ctx, event_channel,
+        xen_device_bind_event_channel(xendev, event_channel,
                                       xen_block_dataplane_event, dataplane,
                                       &local_err);
     if (local_err) {
@@ -818,7 +830,11 @@ void xen_block_dataplane_start(XenBlockDataPlane *dataplane,
     aio_context_acquire(dataplane->ctx);
     /* If other users keep the BlockBackend in the iothread, that's ok */
     blk_set_aio_context(dataplane->blk, dataplane->ctx, NULL);
+    /* Only reason for failure is a NULL channel */
+    xen_device_set_event_channel_context(xendev, dataplane->event_channel,
+                                         dataplane->ctx, &error_abort);
     aio_context_release(dataplane->ctx);
+
     return;
 
 stop:
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 63469e0cf9..cf79c5e3a8 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -1089,8 +1089,26 @@ static void xen_device_event(void *opaque)
     }
 }
 
+void xen_device_set_event_channel_context(XenDevice *xendev,
+                                          XenEventChannel *channel,
+                                          AioContext *ctx,
+                                          Error **errp)
+{
+    if (!channel) {
+        error_setg(errp, "bad channel");
+        return;
+    }
+
+    if (channel->ctx)
+        aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
+                           NULL, NULL, NULL, NULL);
+
+    channel->ctx = ctx;
+    aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
+                       xen_device_event, NULL, xen_device_poll, channel);
+}
+
 XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
-                                               AioContext *ctx,
                                                unsigned int port,
                                                XenEventHandler handler,
                                                void *opaque, Error **errp)
@@ -1116,9 +1134,10 @@ XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
     channel->handler = handler;
     channel->opaque = opaque;
 
-    channel->ctx = ctx;
-    aio_set_fd_handler(channel->ctx, xenevtchn_fd(channel->xeh), true,
-                       xen_device_event, NULL, xen_device_poll, channel);
+    /* Only reason for failure is a NULL channel */
+    xen_device_set_event_channel_context(xendev, channel,
+                                         qemu_get_aio_context(),
+                                         &error_abort);
 
     QLIST_INSERT_HEAD(&xendev->event_channels, channel, list);
 
diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h
index 3d5532258d..c18c1372af 100644
--- a/include/hw/xen/xen-bus.h
+++ b/include/hw/xen/xen-bus.h
@@ -128,10 +128,13 @@ void xen_device_copy_grant_refs(XenDevice *xendev, bool to_domain,
 typedef bool (*XenEventHandler)(void *opaque);
 
 XenEventChannel *xen_device_bind_event_channel(XenDevice *xendev,
-                                               AioContext *ctx,
                                                unsigned int port,
                                                XenEventHandler handler,
                                                void *opaque, Error **errp);
+void xen_device_set_event_channel_context(XenDevice *xendev,
+                                          XenEventChannel *channel,
+                                          AioContext *ctx,
+                                          Error **errp);
 void xen_device_notify_event_channel(XenDevice *xendev,
                                      XenEventChannel *channel,
                                      Error **errp);
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 19:01:59 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 19:01:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTry1-0002pH-5p; Wed, 29 Apr 2020 19:01:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTry0-0002pC-8q
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 19:01:56 +0000
X-Inumbo-ID: e1cd8f72-8a4b-11ea-9995-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e1cd8f72-8a4b-11ea-9995-12813bfff9fa;
 Wed, 29 Apr 2020 19:01:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=v7POKKKrtk8SUmj82DcmkLFMleLM8FVaCPEul9IqGY0=; b=0PgVTsxPDR24ygknNz6bBbW92Y
 z75n9j72gkROqWpGFgYFM/mDqBT/riN3DaY/C7Eejjj4D8V2HbRuCceYhPpbmtuW4TTN91+w3wA/l
 K1GizZvTKMPJhgmcP31HBvtLut1Y+ujLOsft4pqzmDJW2XF2QjuwK67kWJI6K335ifS0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTrxu-0000PV-8E
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 19:01:50 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTrxu-00038M-69
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 19:01:50 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen master] Merge tag 'v5.0.0' into 'staging'
Message-Id: <E1jTrxu-00038M-69@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 19:01:50 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

=== This changeset includes merge from high-traffic branch ===
Commits on that branch are not reported individually.

commit 221c94e964772cb6cb36b641b9ee993e77182dca
Merge: fdd76fecdde1ad444ff4deb7f1c4f7e4a1ef97d6 63cb54f1fe78f2c2365e46d4dccbf30831077049
Author:     Anthony PERARD <anthony.perard@citrix.com>
AuthorDate: Wed Apr 29 10:19:37 2020 +0100
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Wed Apr 29 10:19:37 2020 +0100

    Merge tag 'v5.0.0' into 'staging'
 .cirrus.yml                                        |   17 +-
 .github/lockdown.yml                               |   34 +
 .gitignore                                         |    9 +-
 .gitlab-ci-edk2.yml                                |   49 +
 .gitlab-ci-opensbi.yml                             |   63 +
 .gitlab-ci.d/edk2/Dockerfile                       |   27 +
 .gitlab-ci.d/opensbi/Dockerfile                    |   33 +
 .gitlab-ci.yml                                     |   68 +-
 .gitmodules                                        |    6 +-
 .mailmap                                           |  141 +-
 .readthedocs.yml                                   |   20 +
 .shippable.yml                                     |    4 +-
 .travis.yml                                        |  459 +-
 CODING_STYLE                                       |  216 -
 CODING_STYLE.rst                                   |  641 ++
 HACKING                                            |  245 -
 Kconfig.host                                       |    6 +
 LICENSE                                            |    5 +-
 MAINTAINERS                                        |  477 +-
 Makefile                                           |  353 +-
 Makefile.objs                                      |   53 +-
 Makefile.target                                    |   33 +-
 README                                             |  139 -
 README.rst                                         |  150 +
 VERSION                                            |    2 +-
 accel/Makefile.objs                                |    2 +-
 accel/accel.c                                      |   72 +-
 accel/kvm/kvm-all.c                                |  449 +-
 accel/stubs/kvm-stub.c                             |   12 +
 accel/stubs/tcg-stub.c                             |    2 -
 accel/tcg/Makefile.objs                            |    1 +
 accel/tcg/atomic_common.inc.c                      |   54 +
 accel/tcg/atomic_template.h                        |  101 +-
 accel/tcg/cpu-exec.c                               |   34 +-
 accel/tcg/cputlb.c                                 | 1260 ++-
 accel/tcg/plugin-gen.c                             |  932 +++
 accel/tcg/plugin-helpers.h                         |    5 +
 accel/tcg/tcg-all.c                                |  150 +-
 accel/tcg/tcg-runtime-gvec.c                       |  300 +-
 accel/tcg/tcg-runtime.c                            |    1 +
 accel/tcg/translate-all.c                          |  191 +-
 accel/tcg/translate-all.h                          |    8 +-
 accel/tcg/translator.c                             |   25 +-
 accel/tcg/user-exec-stub.c                         |    2 +-
 accel/tcg/user-exec.c                              |  273 +-
 arch_init.c                                        |   17 +-
 audio/Makefile.objs                                |    1 -
 audio/alsaaudio.c                                  |  405 +-
 audio/audio.c                                      |  867 +-
 audio/audio.h                                      |   47 +-
 audio/audio_int.h                                  |  113 +-
 audio/audio_pt_int.c                               |  173 -
 audio/audio_pt_int.h                               |   22 -
 audio/audio_template.h                             |  130 +-
 audio/coreaudio.c                                  |  131 +-
 audio/dsound_template.h                            |   54 +-
 audio/dsoundaudio.c                                |  378 +-
 audio/mixeng.c                                     |   70 +
 audio/mixeng.h                                     |   14 +-
 audio/mixeng_template.h                            |   22 +-
 audio/noaudio.c                                    |   92 +-
 audio/ossaudio.c                                   |  389 +-
 audio/paaudio.c                                    |  916 +--
 audio/rate_template.h                              |    2 +-
 audio/sdlaudio.c                                   |  141 +-
 audio/spiceaudio.c                                 |  265 +-
 audio/wavaudio.c                                   |   83 +-
 audio/wavcapture.c                                 |    7 +-
 authz/listfile.c                                   |    2 +-
 backends/Makefile.objs                             |    6 +-
 backends/cryptodev-builtin.c                       |    1 -
 backends/cryptodev-vhost-user.c                    |    8 +-
 backends/cryptodev.c                               |   12 +-
 backends/dbus-vmstate.c                            |  511 ++
 backends/hostmem-file.c                            |   30 -
 backends/hostmem-memfd.c                           |    1 -
 backends/hostmem-ram.c                             |    2 -
 backends/hostmem.c                                 |   57 +-
 backends/rng-builtin.c                             |   77 +
 backends/trace-events                              |    7 +
 backends/vhost-user.c                              |    3 +-
 balloon.c                                          |    1 -
 block.c                                            |  686 +-
 block/Makefile.objs                                |   13 +-
 block/accounting.c                                 |    6 +
 block/aio_task.c                                   |  124 +
 block/backup-top.c                                 |  285 +
 block/backup-top.h                                 |   41 +
 block/backup.c                                     |  521 +-
 block/blkdebug.c                                   |   93 +-
 block/blkreplay.c                                  |    8 +
 block/blkverify.c                                  |   20 +-
 block/block-backend.c                              |  277 +-
 block/block-copy.c                                 |  578 ++
 block/bochs.c                                      |    4 +-
 block/cloop.c                                      |    4 +-
 block/commit.c                                     |   45 +-
 block/copy-on-read.c                               |   17 -
 block/create.c                                     |    7 +-
 block/crypto.c                                     |  119 +-
 block/curl.c                                       |  165 +-
 block/dirty-bitmap.c                               |  382 +-
 block/dmg.c                                        |    4 +-
 block/file-posix.c                                 |  491 +-
 block/file-win32.c                                 |    8 +-
 block/filter-compress.c                            |  159 +
 block/gluster.c                                    |    8 +-
 block/io.c                                         |  875 ++-
 block/io_uring.c                                   |  433 +
 block/iscsi.c                                      |   99 +-
 block/linux-aio.c                                  |    4 +-
 block/mirror.c                                     |  282 +-
 block/monitor/Makefile.objs                        |    1 +
 block/monitor/block-hmp-cmds.c                     | 1013 +++
 block/nbd.c                                        |  612 +-
 block/nfs.c                                        |   22 +-
 block/null.c                                       |    4 +-
 block/nvme.c                                       |  165 +-
 block/parallels.c                                  |   25 +-
 block/qapi-sysemu.c                                |  590 ++
 block/qapi.c                                       |   33 +-
 block/qcow.c                                       |   12 +-
 block/qcow2-bitmap.c                               |  309 +-
 block/qcow2-cache.c                                |    2 +-
 block/qcow2-cluster.c                              |  118 +-
 block/qcow2-refcount.c                             |    7 +-
 block/qcow2-snapshot.c                             |  326 +-
 block/qcow2-threads.c                              |   79 +-
 block/qcow2.c                                      | 1081 ++-
 block/qcow2.h                                      |   53 +-
 block/qed.c                                        |   13 +-
 block/quorum.c                                     |   70 +-
 block/raw-format.c                                 |   15 +-
 block/rbd.c                                        |   54 +-
 block/replication.c                                |   49 +-
 block/sheepdog.c                                   |   13 +-
 block/snapshot.c                                   |   30 +-
 block/ssh.c                                        |    8 +-
 block/stream.c                                     |   28 +-
 block/throttle-groups.c                            |    5 +-
 block/throttle.c                                   |    8 -
 block/trace-events                                 |   30 +-
 block/vdi.c                                        |   22 +-
 block/vhdx-log.c                                   |    4 +-
 block/vhdx.c                                       |  158 +-
 block/vmdk.c                                       |   81 +-
 block/vpc.c                                        |   15 +-
 block/vvfat.c                                      |   15 +-
 block/vxhs.c                                       |    5 +-
 blockdev-nbd.c                                     |   58 +-
 blockdev.c                                         | 1551 ++--
 blockjob.c                                         |   53 +-
 bootdevice.c                                       |  147 +-
 bsd-user/main.c                                    |    4 +-
 bsd-user/qemu.h                                    |    2 +-
 bsd-user/syscall.c                                 |   30 +-
 bt-host.c                                          |  198 -
 bt-vhci.c                                          |  167 -
 chardev/baum.c                                     |    1 +
 chardev/char-mux.c                                 |    8 +-
 chardev/char-pipe.c                                |    3 +-
 chardev/char-socket.c                              |   18 +-
 chardev/char-win-stdio.c                           |    1 +
 chardev/char-win.c                                 |    3 +-
 chardev/char.c                                     |   49 +-
 chardev/spice.c                                    |    4 +-
 configure                                          | 1071 ++-
 contrib/gitdm/aliases                              |   20 +-
 contrib/gitdm/domain-map                           |    2 +
 contrib/gitdm/filetypes.txt                        |    2 +-
 contrib/gitdm/group-map-individuals                |    5 +-
 contrib/gitdm/group-map-redhat                     |    1 +
 contrib/ivshmem-server/ivshmem-server.c            |    6 +
 contrib/ivshmem-server/main.c                      |    5 +-
 contrib/libvhost-user/libvhost-user-glib.c         |   17 +-
 contrib/libvhost-user/libvhost-user-glib.h         |    1 +
 contrib/libvhost-user/libvhost-user.c              |  217 +-
 contrib/libvhost-user/libvhost-user.h              |   22 +-
 contrib/rdmacm-mux/main.c                          |    2 +-
 contrib/vhost-user-blk/vhost-user-blk.c            |  110 +-
 contrib/vhost-user-gpu/50-qemu-gpu.json.in         |    2 +-
 contrib/vhost-user-gpu/Makefile.objs               |    6 +-
 contrib/vhost-user-gpu/main.c                      | 1191 ---
 contrib/vhost-user-gpu/vhost-user-gpu.c            | 1191 +++
 contrib/vhost-user-gpu/virgl.c                     |    2 +-
 contrib/vhost-user-gpu/vugbm.c                     |    2 +-
 contrib/vhost-user-input/main.c                    |   10 +-
 contrib/vhost-user-scsi/vhost-user-scsi.c          |    2 +-
 cpus-common.c                                      |   14 +-
 cpus.c                                             |  170 +-
 crypto/Makefile.objs                               |   15 +-
 crypto/afsplit.c                                   |   28 +-
 crypto/block-luks.c                                | 1091 +--
 crypto/block.c                                     |   51 +-
 crypto/cipher-gcrypt.c                             |   97 +-
 crypto/cipher-nettle.c                             |   18 +
 crypto/hmac-glib.c                                 |    5 -
 crypto/pbkdf.c                                     |    5 +-
 crypto/secret.c                                    |   39 +-
 crypto/tlscredsanon.c                              |   16 +-
 crypto/tlscredspsk.c                               |    5 +-
 crypto/tlscredsx509.c                              |   18 +-
 default-configs/arm-softmmu.mak                    |    2 +
 default-configs/i386-softmmu.mak                   |    7 +-
 default-configs/m68k-softmmu.mak                   |    2 +
 default-configs/ppc-softmmu.mak                    |    1 -
 default-configs/ppc64-softmmu.mak                  |    1 +
 default-configs/rx-softmmu.mak                     |    2 +
 default-configs/xtensa-softmmu.mak                 |    1 +
 device-hotplug.c                                   |   92 -
 device_tree.c                                      |    7 +-
 disas.c                                            |  110 +
 disas/cris.c                                       |   59 +-
 disas/libvixl/Makefile.objs                        |   11 +-
 disas/mips.c                                       |   10 +
 disas/ppc.c                                        |    5 +
 dma-helpers.c                                      |   17 +-
 docs/COLO-FT.txt                                   |  224 +-
 docs/barrier.txt                                   |  370 +
 docs/block-replication.txt                         |   28 +-
 docs/can.txt                                       |    2 +-
 docs/conf.py                                       |   51 +-
 docs/defs.rst.inc                                  |   15 +
 docs/devel/atomics.rst                             |  507 ++
 docs/devel/atomics.txt                             |  403 -
 docs/devel/bitops.rst                              |    8 +
 docs/devel/decodetree.rst                          |    8 +-
 docs/devel/fuzzing.txt                             |  116 +
 docs/devel/index.rst                               |    5 +
 docs/devel/kconfig.rst                             |    2 +-
 docs/devel/loads-stores.rst                        |  215 +-
 docs/devel/memory.rst                              |    5 +
 docs/devel/migration.rst                           |    5 +-
 docs/devel/multi-thread-tcg.txt                    |    8 +-
 docs/devel/qapi-code-gen.txt                       | 1147 +--
 docs/devel/rcu.txt                                 |   20 +-
 docs/devel/replay.txt                              |   46 +
 docs/devel/reset.rst                               |  289 +
 docs/devel/s390-dasd-ipl.rst                       |  138 +
 docs/devel/s390-dasd-ipl.txt                       |  133 -
 docs/devel/stable-process.rst                      |    6 +-
 docs/devel/tcg-plugins.rst                         |  136 +
 docs/devel/tcg.rst                                 |    2 +-
 docs/devel/testing.rst                             |  123 +-
 docs/devel/tracing.txt                             |   17 +-
 docs/hyperv.txt                                    |   13 +
 docs/index.html.in                                 |   19 +
 docs/index.rst                                     |    6 +-
 docs/interop/conf.py                               |    7 +
 docs/interop/dbus-vmstate.rst                      |   74 +
 docs/interop/dbus.rst                              |  110 +
 docs/interop/firmware.json                         |    5 +-
 docs/interop/index.rst                             |    3 +
 docs/interop/nbd.txt                               |    2 +
 docs/interop/pr-helper.rst                         |    2 +-
 docs/interop/qcow2.txt                             |   67 +-
 docs/interop/qemu-ga.rst                           |  134 +
 docs/interop/vhost-user.json                       |   35 +-
 docs/interop/vhost-user.rst                        |  156 +-
 docs/microvm.rst                                   |  129 +
 docs/nvdimm.txt                                    |   31 +
 docs/qemu-block-drivers.texi                       |  887 ---
 docs/qemu-cpu-models.texi                          |  675 --
 docs/qemu-option-trace.rst.inc                     |   26 +
 docs/replay.txt                                    |   15 +-
 docs/security.texi                                 |  167 -
 docs/specs/acpi_cpu_hotplug.txt                    |   91 +-
 docs/specs/acpi_hw_reduced_hotplug.rst             |   70 +
 docs/specs/fw_cfg.txt                              |    2 +-
 docs/specs/index.rst                               |    2 +
 docs/specs/ivshmem-spec.txt                        |    4 +-
 docs/specs/ppc-spapr-hotplug.txt                   |    2 +-
 docs/specs/ppc-spapr-uv-hcalls.txt                 |   76 +
 docs/specs/ppc-xive.rst                            |    2 +-
 docs/specs/pvpanic.txt                             |   18 +-
 docs/specs/tpm.rst                                 |  526 ++
 docs/specs/tpm.txt                                 |  427 -
 docs/sphinx/hxtool.py                              |  192 +
 docs/sphinx/kerneldoc.py                           |  173 +
 docs/sphinx/kernellog.py                           |   28 +
 docs/system/arm/cpu-features.rst                   |  346 +
 docs/system/arm/integratorcp.rst                   |   16 +
 docs/system/arm/musicpal.rst                       |   19 +
 docs/system/arm/nseries.rst                        |   33 +
 docs/system/arm/orangepi.rst                       |  253 +
 docs/system/arm/palm.rst                           |   23 +
 docs/system/arm/realview.rst                       |   34 +
 docs/system/arm/stellaris.rst                      |   26 +
 docs/system/arm/sx1.rst                            |   18 +
 docs/system/arm/versatile.rst                      |   29 +
 docs/system/arm/xscale.rst                         |   29 +
 docs/system/build-platforms.rst                    |   79 +
 docs/system/conf.py                                |   28 +
 docs/system/cpu-models-mips.rst.inc                |  105 +
 docs/system/cpu-models-x86.rst.inc                 |  418 +
 docs/system/deprecated.rst                         |  509 ++
 docs/system/device-url-syntax.rst.inc              |  228 +
 docs/system/gdb.rst                                |   89 +
 docs/system/images.rst                             |   85 +
 docs/system/index.rst                              |   35 +
 docs/system/invocation.rst                         |   18 +
 docs/system/ivshmem.rst                            |   64 +
 docs/system/keys.rst                               |    6 +
 docs/system/keys.rst.inc                           |   35 +
 docs/system/license.rst                            |   11 +
 docs/system/linuxboot.rst                          |   30 +
 docs/system/managed-startup.rst                    |   35 +
 docs/system/monitor.rst                            |   31 +
 docs/system/mux-chardev.rst                        |    6 +
 docs/system/mux-chardev.rst.inc                    |   27 +
 docs/system/net.rst                                |  100 +
 docs/system/qemu-block-drivers.rst                 |   20 +
 docs/system/qemu-block-drivers.rst.inc             |  954 +++
 docs/system/qemu-cpu-models.rst                    |   20 +
 docs/system/qemu-manpage.rst                       |   45 +
 docs/system/quickstart.rst                         |   13 +
 docs/system/s390x/vfio-ap.rst                      |  916 +++
 docs/system/security.rst                           |  173 +
 docs/system/target-arm.rst                         |   88 +
 docs/system/target-i386-desc.rst.inc               |   62 +
 docs/system/target-i386.rst                        |   23 +
 docs/system/target-m68k.rst                        |   21 +
 docs/system/target-mips.rst                        |  120 +
 docs/system/target-ppc.rst                         |   47 +
 docs/system/target-s390x.rst                       |   26 +
 docs/system/target-sparc.rst                       |   62 +
 docs/system/target-sparc64.rst                     |   37 +
 docs/system/target-xtensa.rst                      |   27 +
 docs/system/targets.rst                            |   20 +
 docs/system/tls.rst                                |  328 +
 docs/system/usb.rst                                |  137 +
 docs/system/vnc-security.rst                       |  202 +
 docs/tools/conf.py                                 |   33 +
 docs/tools/index.rst                               |   17 +
 docs/tools/qemu-img.rst                            |  832 ++
 docs/tools/qemu-nbd.rst                            |  256 +
 docs/tools/qemu-trace-stap.rst                     |  124 +
 docs/tools/virtfs-proxy-helper.rst                 |   72 +
 docs/tools/virtiofsd.rst                           |  120 +
 docs/user/conf.py                                  |   15 +
 docs/user/index.rst                                |   16 +
 docs/user/main.rst                                 |  295 +
 docs/vfio-ap.txt                                   |  876 ---
 docs/virtio-net-failover.rst                       |   68 +
 docs/virtio-pmem.rst                               |   76 +
 docs/xbzrle.txt                                    |    7 +-
 dump/dump-hmp-cmds.c                               |    4 +-
 dump/dump.c                                        |    5 +-
 dump/win_dump.c                                    |    5 +-
 exec-vary.c                                        |  108 +
 exec.c                                             |  835 +-
 fpu/softfloat-specialize.h                         | 1083 ---
 fpu/softfloat-specialize.inc.c                     | 1083 +++
 fpu/softfloat.c                                    |  286 +-
 fsdev/9p-marshal.h                                 |    6 +-
 fsdev/Makefile.objs                                |    2 +-
 fsdev/file-op-9p.h                                 |    5 +
 fsdev/qemu-fsdev-opts.c                            |    7 +-
 fsdev/qemu-fsdev-throttle.c                        |    5 +-
 fsdev/qemu-fsdev-throttle.h                        |    3 +-
 fsdev/qemu-fsdev.c                                 |    1 +
 fsdev/virtfs-proxy-helper.c                        |  106 +-
 fsdev/virtfs-proxy-helper.texi                     |   63 -
 gdb-xml/riscv-32bit-virtual.xml                    |   11 +
 gdb-xml/riscv-64bit-virtual.xml                    |   11 +
 gdb-xml/rx-core.xml                                |   70 +
 gdbstub.c                                          |  949 ++-
 hmp-commands-info.hx                               |  610 +-
 hmp-commands.hx                                    | 1492 ++--
 hw/9pfs/9p-local.c                                 |   46 +-
 hw/9pfs/9p-proxy.c                                 |   10 +-
 hw/9pfs/9p-synth.c                                 |   19 +
 hw/9pfs/9p-synth.h                                 |    5 +
 hw/9pfs/9p.c                                       |  604 +-
 hw/9pfs/9p.h                                       |   73 +-
 hw/9pfs/Kconfig                                    |    5 +
 hw/9pfs/codir.c                                    |    1 +
 hw/9pfs/cofile.c                                   |    1 +
 hw/9pfs/cofs.c                                     |    1 +
 hw/9pfs/coth.c                                     |    1 +
 hw/9pfs/coth.h                                     |    1 -
 hw/9pfs/coxattr.c                                  |    1 +
 hw/9pfs/trace-events                               |   14 +-
 hw/9pfs/virtio-9p-device.c                         |   15 +-
 hw/9pfs/xen-9p-backend.c                           |   15 +-
 hw/Kconfig                                         |    7 +-
 hw/Makefile.objs                                   |    3 +-
 hw/acpi/Kconfig                                    |    7 +
 hw/acpi/Makefile.objs                              |    5 +-
 hw/acpi/acpi-x86-stub.c                            |    7 +
 hw/acpi/aml-build.c                                |   50 +-
 hw/acpi/core.c                                     |    4 +-
 hw/acpi/cpu.c                                      |   19 +
 hw/acpi/cpu_hotplug.c                              |   24 +-
 hw/acpi/generic_event_device.c                     |  311 +
 hw/acpi/hmat.c                                     |  268 +
 hw/acpi/hmat.h                                     |   42 +
 hw/acpi/ich9.c                                     |  108 +-
 hw/acpi/ipmi-stub.c                                |    2 +-
 hw/acpi/ipmi.c                                     |   13 +-
 hw/acpi/memory_hotplug.c                           |   44 +-
 hw/acpi/nvdimm.c                                   |   34 +-
 hw/acpi/pcihp.c                                    |   14 +-
 hw/acpi/piix4.c                                    |   70 +-
 hw/acpi/tco.c                                      |    2 +
 hw/acpi/trace-events                               |    1 +
 hw/acpi/vmgenid.c                                  |    6 +-
 hw/adc/Makefile.objs                               |    2 +-
 hw/adc/stm32f2xx_adc.c                             |    2 +-
 hw/alpha/alpha_sys.h                               |    7 +-
 hw/alpha/dp264.c                                   |   26 +-
 hw/alpha/pci.c                                     |    1 -
 hw/alpha/typhoon.c                                 |   12 +-
 hw/arm/Kconfig                                     |   46 +
 hw/arm/Makefile.objs                               |    5 +-
 hw/arm/allwinner-a10.c                             |  106 +-
 hw/arm/allwinner-h3.c                              |  465 ++
 hw/arm/armsse.c                                    |    4 +-
 hw/arm/armv7m.c                                    |    8 +-
 hw/arm/aspeed.c                                    |  349 +-
 hw/arm/aspeed_ast2600.c                            |  587 ++
 hw/arm/aspeed_soc.c                                |  306 +-
 hw/arm/bcm2835_peripherals.c                       |   69 +-
 hw/arm/bcm2836.c                                   |   49 +-
 hw/arm/boot.c                                      |   46 +-
 hw/arm/collie.c                                    |   54 +-
 hw/arm/cubieboard.c                                |   71 +-
 hw/arm/digic.c                                     |    4 +-
 hw/arm/digic_boards.c                              |   45 +-
 hw/arm/exynos4210.c                                |   97 +-
 hw/arm/exynos4_boards.c                            |   13 +-
 hw/arm/fsl-imx25.c                                 |   83 +-
 hw/arm/fsl-imx31.c                                 |   12 +-
 hw/arm/fsl-imx6.c                                  |   67 +-
 hw/arm/fsl-imx6ul.c                                |   60 +-
 hw/arm/gumstix.c                                   |   17 +-
 hw/arm/highbank.c                                  |   23 +-
 hw/arm/imx25_pdk.c                                 |   40 +-
 hw/arm/integratorcp.c                              |   24 +-
 hw/arm/kzm.c                                       |   24 +-
 hw/arm/mainstone.c                                 |   28 +-
 hw/arm/mcimx6ul-evk.c                              |   29 +-
 hw/arm/mcimx7d-sabre.c                             |   30 +-
 hw/arm/microbit.c                                  |    1 +
 hw/arm/mps2-tz.c                                   |   31 +-
 hw/arm/mps2.c                                      |   16 +-
 hw/arm/msf2-soc.c                                  |   12 +-
 hw/arm/msf2-som.c                                  |    1 +
 hw/arm/musca.c                                     |   11 +-
 hw/arm/musicpal.c                                  |   59 +-
 hw/arm/netduino2.c                                 |    1 +
 hw/arm/netduinoplus2.c                             |   52 +
 hw/arm/nrf51_soc.c                                 |    6 +-
 hw/arm/nseries.c                                   |   54 +-
 hw/arm/omap1.c                                     |   26 +-
 hw/arm/omap2.c                                     |   44 +-
 hw/arm/omap_sx1.c                                  |   41 +-
 hw/arm/orangepi.c                                  |  130 +
 hw/arm/palm.c                                      |   33 +-
 hw/arm/pxa2xx.c                                    |   29 +-
 hw/arm/pxa2xx_gpio.c                               |    5 +-
 hw/arm/pxa2xx_pic.c                                |    2 +-
 hw/arm/raspi.c                                     |  225 +-
 hw/arm/realview.c                                  |    6 +-
 hw/arm/sabrelite.c                                 |   27 +-
 hw/arm/sbsa-ref.c                                  |  109 +-
 hw/arm/smmu-common.c                               |   28 +-
 hw/arm/smmuv3-internal.h                           |    7 +-
 hw/arm/smmuv3.c                                    |   78 +-
 hw/arm/spitz.c                                     |   23 +-
 hw/arm/stellaris.c                                 |   15 +-
 hw/arm/stm32f205_soc.c                             |   15 +-
 hw/arm/stm32f405_soc.c                             |  300 +
 hw/arm/strongarm.c                                 |   32 +-
 hw/arm/strongarm.h                                 |    4 +-
 hw/arm/sysbus-fdt.c                                |   34 +-
 hw/arm/tosa.c                                      |   15 +-
 hw/arm/versatilepb.c                               |   14 +-
 hw/arm/vexpress.c                                  |   19 +-
 hw/arm/virt-acpi-build.c                           |  109 +-
 hw/arm/virt.c                                      |  519 +-
 hw/arm/xilinx_zynq.c                               |   36 +-
 hw/arm/xlnx-versal-virt.c                          |   44 +-
 hw/arm/xlnx-versal.c                               |   31 +-
 hw/arm/xlnx-zcu102.c                               |   12 +-
 hw/arm/xlnx-zynqmp.c                               |   49 +-
 hw/arm/z2.c                                        |   26 +-
 hw/audio/ac97.c                                    |   25 +-
 hw/audio/adlib.c                                   |    9 +-
 hw/audio/cs4231.c                                  |    3 +-
 hw/audio/cs4231a.c                                 |   12 +-
 hw/audio/es1370.c                                  |   15 +-
 hw/audio/fmopl.c                                   |    8 +-
 hw/audio/gus.c                                     |   13 +-
 hw/audio/hda-codec.c                               |   30 +-
 hw/audio/intel-hda.c                               |   33 +-
 hw/audio/intel-hda.h                               |    2 +-
 hw/audio/lm4549.c                                  |    1 +
 hw/audio/lm4549.h                                  |    1 +
 hw/audio/marvell_88w8618.c                         |    4 +-
 hw/audio/milkymist-ac97.c                          |   17 +-
 hw/audio/pcspk.c                                   |    7 +-
 hw/audio/pl041.c                                   |    6 +-
 hw/audio/sb16.c                                    |   10 +-
 hw/audio/wm8750.c                                  |   11 +-
 hw/block/Kconfig                                   |    3 +
 hw/block/Makefile.objs                             |    3 +-
 hw/block/dataplane/virtio-blk.c                    |    6 +-
 hw/block/dataplane/xen-block.c                     |   50 +-
 hw/block/ecc.c                                     |    2 +-
 hw/block/fdc.c                                     |   74 +-
 hw/block/hd-geometry.c                             |    7 +-
 hw/block/m25p80.c                                  |   64 +-
 hw/block/nand.c                                    |    5 +-
 hw/block/nvme.c                                    |    5 +-
 hw/block/onenand.c                                 |    6 +-
 hw/block/pflash_cfi01.c                            |   15 +-
 hw/block/pflash_cfi02.c                            |   14 +-
 hw/block/swim.c                                    |  489 ++
 hw/block/tc58128.c                                 |    1 -
 hw/block/trace-events                              |   26 +-
 hw/block/vhost-user-blk.c                          |   54 +-
 hw/block/virtio-blk.c                              |   69 +-
 hw/block/xen-block.c                               |   26 +-
 hw/bt/Kconfig                                      |    2 -
 hw/bt/Makefile.objs                                |    3 -
 hw/bt/core.c                                       |  143 -
 hw/bt/hci-csr.c                                    |  512 --
 hw/bt/hci.c                                        | 2263 ------
 hw/bt/hid.c                                        |  553 --
 hw/bt/l2cap.c                                      | 1367 ----
 hw/bt/sdp.c                                        |  989 ---
 hw/char/Makefile.objs                              |   16 +-
 hw/char/bcm2835_aux.c                              |   10 +-
 hw/char/cadence_uart.c                             |    6 +-
 hw/char/cmsdk-apb-uart.c                           |    4 +-
 hw/char/debugcon.c                                 |    4 +-
 hw/char/digic-uart.c                               |    7 +-
 hw/char/escc.c                                     |   38 +-
 hw/char/etraxfs_ser.c                              |    6 +-
 hw/char/exynos4210_uart.c                          |  254 +-
 hw/char/grlib_apbuart.c                            |    6 +-
 hw/char/imx_serial.c                               |    8 +-
 hw/char/ipoctal232.c                               |    7 +-
 hw/char/lm32_juart.c                               |    7 +-
 hw/char/lm32_uart.c                                |    8 +-
 hw/char/mcf_uart.c                                 |    7 +-
 hw/char/milkymist-uart.c                           |    8 +-
 hw/char/nrf51_uart.c                               |    7 +-
 hw/char/omap_uart.c                                |    3 +-
 hw/char/parallel-isa.c                             |    2 +
 hw/char/parallel.c                                 |    7 +-
 hw/char/pl011.c                                    |    6 +-
 hw/char/sclpconsole-lm.c                           |    7 +-
 hw/char/sclpconsole.c                              |    7 +-
 hw/char/serial-isa.c                               |   17 +-
 hw/char/serial-pci-multi.c                         |   62 +-
 hw/char/serial-pci.c                               |   23 +-
 hw/char/serial.c                                   |  203 +-
 hw/char/sh_serial.c                                |    5 +-
 hw/char/spapr_vty.c                                |   37 +-
 hw/char/stm32f2xx_usart.c                          |    4 +-
 hw/char/terminal3270.c                             |   10 +-
 hw/char/trace-events                               |   20 +
 hw/char/virtio-console.c                           |   10 +-
 hw/char/virtio-serial-bus.c                        |   19 +-
 hw/char/xen_console.c                              |    2 +-
 hw/char/xilinx_uartlite.c                          |    7 +-
 hw/core/Kconfig                                    |   13 +
 hw/core/Makefile.objs                              |   38 +-
 hw/core/bus.c                                      |  104 +-
 hw/core/cpu.c                                      |  456 ++
 hw/core/empty_slot.c                               |    1 -
 hw/core/generic-loader.c                           |    8 +-
 hw/core/irq.c                                      |   14 -
 hw/core/loader-fit.c                               |   16 +-
 hw/core/loader.c                                   |  106 +-
 hw/core/machine-hmp-cmds.c                         |   19 +-
 hw/core/machine-qmp-cmds.c                         |   16 +
 hw/core/machine.c                                  |  302 +-
 hw/core/null-machine.c                             |   11 +-
 hw/core/numa.c                                     |  482 +-
 hw/core/or-irq.c                                   |    7 +-
 hw/core/platform-bus.c                             |    7 +-
 hw/core/ptimer.c                                   |  108 +-
 hw/core/qdev-fw.c                                  |    2 +-
 hw/core/qdev-properties-system.c                   |   59 +-
 hw/core/qdev-properties.c                          |   75 +-
 hw/core/qdev.c                                     |  433 +-
 hw/core/register.c                                 |    1 -
 hw/core/resettable.c                               |  301 +
 hw/core/split-irq.c                                |    4 +-
 hw/core/sysbus.c                                   |   32 -
 hw/core/trace-events                               |   29 +
 hw/core/vm-change-state-handler.c                  |    3 +-
 hw/core/vmstate-if.c                               |   23 +
 hw/cpu/a15mpcore.c                                 |    4 +-
 hw/cpu/a9mpcore.c                                  |   10 +-
 hw/cpu/arm11mpcore.c                               |    9 +-
 hw/cpu/cluster.c                                   |    5 +-
 hw/cpu/realview_mpcore.c                           |    4 +-
 hw/cris/axis_dev88.c                               |   14 +-
 hw/cris/boot.c                                     |    4 +-
 hw/display/Kconfig                                 |    9 +
 hw/display/Makefile.objs                           |   23 +-
 hw/display/ads7846.c                               |    4 +-
 hw/display/artist.c                                | 1443 ++++
 hw/display/ati.c                                   |  129 +-
 hw/display/ati_2d.c                                |   37 +-
 hw/display/ati_dbg.c                               |   10 +
 hw/display/ati_int.h                               |    5 +
 hw/display/ati_regs.h                              |   17 +
 hw/display/bcm2835_fb.c                            |    9 +-
 hw/display/bochs-display.c                         |   11 +-
 hw/display/cg3.c                                   |   10 +-
 hw/display/cirrus_vga.c                            |    6 +-
 hw/display/cirrus_vga_isa.c                        |    4 +-
 hw/display/dpcd.c                                  |    1 +
 hw/display/edid-generate.c                         |    4 +-
 hw/display/edid-region.c                           |    1 +
 hw/display/exynos4210_fimd.c                       |    7 +-
 hw/display/framebuffer.c                           |    1 -
 hw/display/g364fb.c                                |    8 +-
 hw/display/i2c-ddc.c                               |    4 +-
 hw/display/jazz_led.c                              |  124 +-
 hw/display/macfb.c                                 |  477 ++
 hw/display/milkymist-tmu2.c                        |   11 +-
 hw/display/milkymist-vgafb.c                       |    4 +-
 hw/display/next-fb.c                               |  146 +
 hw/display/omap_dss.c                              |    4 +-
 hw/display/omap_lcdc.c                             |   13 +-
 hw/display/pl110.c                                 |    2 +
 hw/display/pxa2xx_lcd.c                            |    3 +-
 hw/display/qxl-render.c                            |   10 +-
 hw/display/qxl.c                                   |   21 +-
 hw/display/qxl.h                                   |    3 +-
 hw/display/ramfb-standalone.c                      |    4 +-
 hw/display/ramfb.c                                 |    5 +-
 hw/display/sii9022.c                               |    1 +
 hw/display/sm501.c                                 |   39 +-
 hw/display/ssd0303.c                               |    1 +
 hw/display/ssd0323.c                               |    1 +
 hw/display/tc6393xb.c                              |    4 +-
 hw/display/tcx.c                                   |   11 +-
 hw/display/trace-events                            |    9 +
 hw/display/vga-access.h                            |   49 +
 hw/display/vga-helpers.h                           |   26 -
 hw/display/vga-isa-mm.c                            |    9 +-
 hw/display/vga-isa.c                               |    8 +-
 hw/display/vga-pci.c                               |   20 +-
 hw/display/vga.c                                   |   19 +-
 hw/display/vga_int.h                               |    3 -
 hw/display/vhost-user-gpu.c                        |    3 +-
 hw/display/virtio-gpu-pci.c                        |    3 +-
 hw/display/virtio-gpu.c                            |    5 +-
 hw/display/virtio-vga.c                            |    4 +-
 hw/display/vmware_vga.c                            |   10 +-
 hw/display/xenfb.c                                 |    1 -
 hw/display/xlnx_dp.c                               |   11 +-
 hw/dma/Kconfig                                     |    1 +
 hw/dma/Makefile.objs                               |    7 +-
 hw/dma/bcm2835_dma.c                               |   24 +-
 hw/dma/etraxfs_dma.c                               |   30 +-
 hw/dma/i82374.c                                    |    4 +-
 hw/dma/i8257.c                                     |   27 +-
 hw/dma/omap_dma.c                                  |    2 +-
 hw/dma/pl080.c                                     |    6 +-
 hw/dma/pl330.c                                     |   93 +-
 hw/dma/puv3_dma.c                                  |    1 -
 hw/dma/pxa2xx_dma.c                                |    5 +-
 hw/dma/rc4030.c                                    |   27 +-
 hw/dma/soc_dma.c                                   |    2 +-
 hw/dma/sparc32_dma.c                               |    6 +-
 hw/dma/trace-events                                |   24 +
 hw/dma/xilinx_axidma.c                             |   30 +-
 hw/dma/xlnx-zdma.c                                 |   72 +-
 hw/dma/xlnx-zynq-devcfg.c                          |    3 +-
 hw/dma/xlnx_dpdma.c                                |    2 +
 hw/gpio/Makefile.objs                              |    9 +-
 hw/gpio/aspeed_gpio.c                              | 1015 +++
 hw/gpio/bcm2835_gpio.c                             |    2 +
 hw/gpio/gpio_key.c                                 |    2 +
 hw/gpio/imx_gpio.c                                 |    5 +-
 hw/gpio/max7310.c                                  |    4 +
 hw/gpio/mpc8xxx.c                                  |    2 +
 hw/gpio/nrf51_gpio.c                               |    2 +
 hw/gpio/omap_gpio.c                                |   49 +-
 hw/gpio/pl061.c                                    |    2 +
 hw/gpio/puv3_gpio.c                                |    1 -
 hw/gpio/zaurus.c                                   |    3 +-
 hw/hppa/Kconfig                                    |    4 +
 hw/hppa/Makefile.objs                              |    2 +-
 hw/hppa/dino.c                                     |  105 +-
 hw/hppa/hppa_hardware.h                            |    1 +
 hw/hppa/hppa_sys.h                                 |    7 +-
 hw/hppa/lasi.c                                     |  368 +
 hw/hppa/machine.c                                  |   61 +-
 hw/hppa/pci.c                                      |    1 -
 hw/hppa/trace-events                               |   10 +
 hw/hyperv/hyperv.c                                 |   24 +-
 hw/hyperv/hyperv_testdev.c                         |    1 -
 hw/i2c/Makefile.objs                               |    4 +-
 hw/i2c/aspeed_i2c.c                                |  547 +-
 hw/i2c/bitbang_i2c.c                               |    2 +-
 hw/i2c/core.c                                      |    6 +-
 hw/i2c/exynos4210_i2c.c                            |    2 +
 hw/i2c/imx_i2c.c                                   |    2 +
 hw/i2c/microbit_i2c.c                              |    1 +
 hw/i2c/mpc_i2c.c                                   |    2 +
 hw/i2c/omap_i2c.c                                  |   24 +-
 hw/i2c/pm_smbus.c                                  |    3 +-
 hw/i2c/ppc4xx_i2c.c                                |    3 +-
 hw/i2c/smbus_eeprom.c                              |   21 +-
 hw/i2c/smbus_ich9.c                                |    4 +-
 hw/i2c/smbus_master.c                              |    1 -
 hw/i2c/smbus_slave.c                               |    2 +-
 hw/i2c/trace-events                                |    9 +
 hw/i386/Kconfig                                    |   25 +-
 hw/i386/Makefile.objs                              |   14 +-
 hw/i386/acpi-build.c                               |  211 +-
 hw/i386/amd_iommu.c                                |   38 +-
 hw/i386/amd_iommu.h                                |    1 -
 hw/i386/e820_memory_layout.c                       |   59 +
 hw/i386/e820_memory_layout.h                       |   42 +
 hw/i386/fw_cfg.c                                   |  143 +
 hw/i386/fw_cfg.h                                   |    9 +
 hw/i386/intel_iommu.c                              |  233 +-
 hw/i386/intel_iommu_internal.h                     |   19 +-
 hw/i386/kvm/Makefile.objs                          |    6 +-
 hw/i386/kvm/clock.c                                |   21 +-
 hw/i386/kvm/i8254.c                                |    5 +-
 hw/i386/kvm/i8259.c                                |    2 +
 hw/i386/kvm/ioapic.c                               |   18 +-
 hw/i386/kvmvapic.c                                 |    2 +
 hw/i386/microvm.c                                  |  572 ++
 hw/i386/multiboot.c                                |    3 +-
 hw/i386/pc.c                                       | 1396 +---
 hw/i386/pc_piix.c                                  |  259 +-
 hw/i386/pc_q35.c                                   |  109 +-
 hw/i386/pc_sysfw.c                                 |   63 +-
 hw/i386/port92.c                                   |  126 +
 hw/i386/trace-events                               |    8 +
 hw/i386/vmmouse.c                                  |   22 +-
 hw/i386/vmport.c                                   |    2 -
 hw/i386/x86-iommu-stub.c                           |   43 +
 hw/i386/x86-iommu.c                                |    3 +-
 hw/i386/x86.c                                      | 1021 +++
 hw/i386/xen/xen-hvm.c                              |   38 +-
 hw/i386/xen/xen-mapcache.c                         |    1 +
 hw/i386/xen/xen_platform.c                         |    2 +-
 hw/i386/xen/xen_pvdevice.c                         |    5 +-
 hw/ide/ahci-allwinner.c                            |    2 +-
 hw/ide/ahci.c                                      |   11 +-
 hw/ide/ahci_internal.h                             |    2 +
 hw/ide/atapi.c                                     |   80 +-
 hw/ide/cmd646.c                                    |   36 +-
 hw/ide/core.c                                      |   63 +-
 hw/ide/ich.c                                       |    2 +-
 hw/ide/ioport.c                                    |    2 -
 hw/ide/isa.c                                       |    7 +-
 hw/ide/macio.c                                     |    7 +-
 hw/ide/microdrive.c                                |   10 +-
 hw/ide/mmio.c                                      |    5 +-
 hw/ide/pci.c                                       |   15 +-
 hw/ide/piix.c                                      |   44 +-
 hw/ide/qdev.c                                      |   23 +-
 hw/ide/sii3112.c                                   |   14 +-
 hw/ide/via.c                                       |   40 +-
 hw/input/Kconfig                                   |    4 +-
 hw/input/Makefile.objs                             |    7 +-
 hw/input/adb-kbd.c                                 |    2 +-
 hw/input/adb-mouse.c                               |    1 +
 hw/input/adb.c                                     |    4 +-
 hw/input/hid.c                                     |    3 +-
 hw/input/lasips2.c                                 |  291 +
 hw/input/lm832x.c                                  |   14 +-
 hw/input/milkymist-softusb.c                       |    6 +-
 hw/input/pckbd.c                                   |   16 +-
 hw/input/pl050.c                                   |    2 +
 hw/input/ps2.c                                     |   21 +-
 hw/input/pxa2xx_keypad.c                           |    2 +
 hw/input/stellaris_input.c                         |    7 +-
 hw/input/trace-events                              |    5 +
 hw/input/tsc2005.c                                 |    4 +-
 hw/input/tsc210x.c                                 |    3 +
 hw/input/vhost-user-input.c                        |    1 -
 hw/input/virtio-input-hid.c                        |    8 +-
 hw/input/virtio-input-host.c                       |    4 +-
 hw/input/virtio-input.c                            |    8 +-
 hw/intc/Kconfig                                    |    3 +
 hw/intc/Makefile.objs                              |    2 +-
 hw/intc/allwinner-a10-pic.c                        |    3 +-
 hw/intc/apic.c                                     |    4 +-
 hw/intc/apic_common.c                              |   60 +-
 hw/intc/arm_gic.c                                  |   36 +-
 hw/intc/arm_gic_common.c                           |    5 +-
 hw/intc/arm_gic_kvm.c                              |   16 +-
 hw/intc/arm_gicv2m.c                               |    4 +-
 hw/intc/arm_gicv3_common.c                         |    6 +-
 hw/intc/arm_gicv3_cpuif.c                          |    4 +
 hw/intc/arm_gicv3_its_common.c                     |    1 +
 hw/intc/arm_gicv3_its_kvm.c                        |    5 +-
 hw/intc/arm_gicv3_kvm.c                            |   13 +-
 hw/intc/armv7m_nvic.c                              |   76 +-
 hw/intc/aspeed_vic.c                               |    2 +
 hw/intc/bcm2835_ic.c                               |    6 +-
 hw/intc/bcm2836_control.c                          |   13 +-
 hw/intc/etraxfs_pic.c                              |   29 +-
 hw/intc/exynos4210_combiner.c                      |    6 +-
 hw/intc/exynos4210_gic.c                           |   15 +-
 hw/intc/grlib_irqmp.c                              |   36 +-
 hw/intc/heathrow_pic.c                             |    3 +-
 hw/intc/i8259.c                                    |    5 +-
 hw/intc/i8259_common.c                             |    7 +-
 hw/intc/imx_avic.c                                 |    2 +
 hw/intc/imx_gpcv2.c                                |    1 +
 hw/intc/ioapic.c                                   |   10 +-
 hw/intc/ioapic_common.c                            |    1 +
 hw/intc/lm32_pic.c                                 |    3 +-
 hw/intc/mips_gic.c                                 |    7 +-
 hw/intc/nios2_iic.c                                |    1 +
 hw/intc/omap_intc.c                                |   24 +-
 hw/intc/ompic.c                                    |    6 +-
 hw/intc/openpic.c                                  |    6 +-
 hw/intc/openpic_kvm.c                              |    4 +-
 hw/intc/pl190.c                                    |    2 +
 hw/intc/pnv_xive.c                                 |  432 +-
 hw/intc/puv3_intc.c                                |    1 +
 hw/intc/realview_gic.c                             |    2 +
 hw/intc/s390_flic.c                                |    5 +-
 hw/intc/s390_flic_kvm.c                            |   43 +-
 hw/intc/sh_intc.c                                  |    2 +-
 hw/intc/slavio_intctl.c                            |    2 +
 hw/intc/spapr_xive.c                               |  445 +-
 hw/intc/spapr_xive_kvm.c                           |  114 +-
 hw/intc/trace-events                               |   11 +-
 hw/intc/xics.c                                     |  314 +-
 hw/intc/xics_kvm.c                                 |   40 +-
 hw/intc/xics_pnv.c                                 |    1 -
 hw/intc/xics_spapr.c                               |  177 +-
 hw/intc/xilinx_intc.c                              |    5 +-
 hw/intc/xive.c                                     |  646 +-
 hw/intc/xlnx-pmu-iomod-intc.c                      |    5 +-
 hw/intc/xlnx-zynqmp-ipi.c                          |    2 +
 hw/ipack/ipack.c                                   |    5 +-
 hw/ipack/tpci200.c                                 |    2 +
 hw/ipmi/Kconfig                                    |   15 +
 hw/ipmi/Makefile.objs                              |    5 +-
 hw/ipmi/ipmi.c                                     |   12 +-
 hw/ipmi/ipmi_bmc_extern.c                          |   20 +-
 hw/ipmi/ipmi_bmc_sim.c                             |   84 +-
 hw/ipmi/ipmi_bt.c                                  |  437 ++
 hw/ipmi/ipmi_kcs.c                                 |  423 +
 hw/ipmi/isa_ipmi_bt.c                              |  454 +-
 hw/ipmi/isa_ipmi_kcs.c                             |  430 +-
 hw/ipmi/pci_ipmi_bt.c                              |  148 +
 hw/ipmi/pci_ipmi_kcs.c                             |  148 +
 hw/ipmi/smbus_ipmi.c                               |  384 +
 hw/isa/Kconfig                                     |   15 +-
 hw/isa/Makefile.objs                               |    3 +-
 hw/isa/apm.c                                       |    2 +-
 hw/isa/i82378.c                                    |    4 +-
 hw/isa/isa-bus.c                                   |   11 +-
 hw/isa/isa-superio.c                               |    3 +-
 hw/isa/lpc_ich9.c                                  |   39 +-
 hw/isa/pc87312.c                                   |    4 +-
 hw/isa/piix3.c                                     |  399 +
 hw/isa/piix4.c                                     |  150 +-
 hw/isa/smc37c669-superio.c                         |    2 +-
 hw/isa/vt82c686.c                                  |   39 +-
 hw/lm32/lm32.h                                     |    1 +
 hw/lm32/lm32_boards.c                              |   49 +-
 hw/lm32/milkymist-hw.h                             |    2 +-
 hw/lm32/milkymist.c                                |   28 +-
 hw/m68k/Kconfig                                    |   15 +
 hw/m68k/Makefile.objs                              |    2 +
 hw/m68k/an5206.c                                   |    8 +-
 hw/m68k/bootinfo.h                                 |  114 +
 hw/m68k/mcf5206.c                                  |   16 +-
 hw/m68k/mcf5208.c                                  |   21 +-
 hw/m68k/mcf_intc.c                                 |    1 +
 hw/m68k/next-cube.c                                |  984 +++
 hw/m68k/next-kbd.c                                 |  291 +
 hw/m68k/q800.c                                     |  455 ++
 hw/mem/Kconfig                                     |    2 +-
 hw/mem/Makefile.objs                               |    2 +-
 hw/mem/memory-device.c                             |   10 +-
 hw/mem/nvdimm.c                                    |   44 +-
 hw/mem/pc-dimm.c                                   |    8 +-
 hw/microblaze/Kconfig                              |    1 +
 hw/microblaze/boot.c                               |    6 +-
 hw/microblaze/boot.h                               |    1 -
 hw/microblaze/petalogix_ml605_mmu.c                |    3 +-
 hw/microblaze/petalogix_s3adsp1800_mmu.c           |    3 +-
 hw/microblaze/xlnx-zynqmp-pmu.c                    |    1 -
 hw/mips/Kconfig                                    |    1 +
 hw/mips/addr.c                                     |    1 -
 hw/mips/boston.c                                   |   18 +-
 hw/mips/cps.c                                      |   12 +-
 hw/mips/gt64xxx_pci.c                              |   26 +-
 hw/mips/mips_fulong2e.c                            |  130 +-
 hw/mips/mips_int.c                                 |    8 +-
 hw/mips/mips_jazz.c                                |  108 +-
 hw/mips/mips_malta.c                               |  443 +-
 hw/mips/mips_mipssim.c                             |   50 +-
 hw/mips/mips_r4k.c                                 |   80 +-
 hw/mips/trace-events                               |    4 +-
 hw/misc/Kconfig                                    |   14 +
 hw/misc/Makefile.objs                              |  102 +-
 hw/misc/a9scu.c                                    |    4 +-
 hw/misc/allwinner-cpucfg.c                         |  282 +
 hw/misc/allwinner-h3-ccu.c                         |  242 +
 hw/misc/allwinner-h3-dramc.c                       |  358 +
 hw/misc/allwinner-h3-sysctrl.c                     |  140 +
 hw/misc/allwinner-sid.c                            |  168 +
 hw/misc/applesmc.c                                 |    4 +-
 hw/misc/arm11scu.c                                 |    3 +-
 hw/misc/arm_integrator_debug.c                     |    1 -
 hw/misc/arm_l2x0.c                                 |    4 +-
 hw/misc/arm_sysctl.c                               |    8 +-
 hw/misc/armsse-cpuid.c                             |    4 +-
 hw/misc/armsse-mhu.c                               |    3 +-
 hw/misc/aspeed_scu.c                               |  395 +-
 hw/misc/aspeed_sdmc.c                              |  320 +-
 hw/misc/aspeed_xdma.c                              |    2 +
 hw/misc/bcm2835_mbox.c                             |   20 +-
 hw/misc/bcm2835_property.c                         |   29 +-
 hw/misc/bcm2835_rng.c                              |    1 +
 hw/misc/bcm2835_thermal.c                          |  135 +
 hw/misc/cbus.c                                     |    2 +-
 hw/misc/debugexit.c                                |    4 +-
 hw/misc/eccmemctl.c                                |    5 +-
 hw/misc/edu.c                                      |   14 +-
 hw/misc/exynos4210_clk.c                           |    1 +
 hw/misc/exynos4210_pmu.c                           |    3 +-
 hw/misc/exynos4210_rng.c                           |    1 +
 hw/misc/grlib_ahb_apb_pnp.c                        |   12 +
 hw/misc/imx25_ccm.c                                |    1 +
 hw/misc/imx2_wdt.c                                 |    2 +-
 hw/misc/imx31_ccm.c                                |    1 +
 hw/misc/imx6_ccm.c                                 |    1 +
 hw/misc/imx6_src.c                                 |    5 +-
 hw/misc/imx6ul_ccm.c                               |    1 +
 hw/misc/imx7_ccm.c                                 |    1 +
 hw/misc/imx7_gpr.c                                 |    1 -
 hw/misc/imx7_snvs.c                                |    2 +-
 hw/misc/imx_rngc.c                                 |  278 +
 hw/misc/iotkit-secctl.c                            |    4 +-
 hw/misc/iotkit-sysctl.c                            |    6 +-
 hw/misc/iotkit-sysinfo.c                           |    4 +-
 hw/misc/ivshmem.c                                  |   49 +-
 hw/misc/mac_via.c                                  | 1140 +++
 hw/misc/macio/cuda.c                               |    7 +-
 hw/misc/macio/gpio.c                               |    3 +-
 hw/misc/macio/mac_dbdma.c                          |    3 +-
 hw/misc/macio/macio.c                              |    8 +-
 hw/misc/macio/pmu.c                                |    8 +-
 hw/misc/max111x.c                                  |    5 +-
 hw/misc/milkymist-hpdmc.c                          |    2 +-
 hw/misc/milkymist-pfpu.c                           |    3 +-
 hw/misc/mips_cmgcr.c                               |    6 +-
 hw/misc/mips_cpc.c                                 |    4 +-
 hw/misc/mips_itu.c                                 |    3 +-
 hw/misc/mos6522.c                                  |   96 +-
 hw/misc/mps2-fpgaio.c                              |    4 +-
 hw/misc/mps2-scc.c                                 |    4 +-
 hw/misc/msf2-sysreg.c                              |    4 +-
 hw/misc/mst_fpga.c                                 |    3 +-
 hw/misc/nrf51_rng.c                                |    5 +-
 hw/misc/omap_clk.c                                 |    2 +
 hw/misc/omap_gpmc.c                                |    3 +-
 hw/misc/omap_l4.c                                  |    3 +-
 hw/misc/omap_sdrc.c                                |    1 -
 hw/misc/pc-testdev.c                               |    5 +-
 hw/misc/pca9552.c                                  |   92 +-
 hw/misc/pci-testdev.c                              |    4 +-
 hw/misc/puv3_pm.c                                  |    1 -
 hw/misc/pvpanic.c                                  |   16 +-
 hw/misc/sga.c                                      |    1 -
 hw/misc/slavio_misc.c                              |    4 +-
 hw/misc/stm32f4xx_exti.c                           |  188 +
 hw/misc/stm32f4xx_syscfg.c                         |  171 +
 hw/misc/tmp105.c                                   |    3 +-
 hw/misc/tmp421.c                                   |    6 +-
 hw/misc/trace-events                               |   65 +-
 hw/misc/tz-mpc.c                                   |    5 +-
 hw/misc/tz-msc.c                                   |    5 +-
 hw/misc/tz-ppc.c                                   |    5 +-
 hw/misc/unimp.c                                    |    3 +-
 hw/misc/vmcoreinfo.c                               |    6 +
 hw/misc/zynq-xadc.c                                |    4 +-
 hw/misc/zynq_slcr.c                                |  476 +-
 hw/moxie/moxiesim.c                                |    7 +-
 hw/net/Kconfig                                     |   17 +
 hw/net/Makefile.objs                               |   10 +-
 hw/net/allwinner-sun8i-emac.c                      |  867 ++
 hw/net/allwinner_emac.c                            |    7 +-
 hw/net/cadence_gem.c                               |   54 +-
 hw/net/can/can_kvaser_pci.c                        |    4 +-
 hw/net/can/can_mioe3680_pci.c                      |    4 +-
 hw/net/can/can_pcm3680_pci.c                       |    4 +-
 hw/net/can/can_sja1000.c                           |   16 +-
 hw/net/can/can_sja1000.h                           |    3 +-
 hw/net/dp8393x.c                                   |  364 +-
 hw/net/e1000.c                                     |   15 +-
 hw/net/e1000e.c                                    |    9 +-
 hw/net/e1000e_core.c                               |   26 +-
 hw/net/e1000e_core.h                               |    2 +-
 hw/net/e1000x_common.c                             |    1 -
 hw/net/eepro100.c                                  |   11 +-
 hw/net/etraxfs_eth.c                               |   46 +-
 hw/net/fsl_etsec/etsec.c                           |   13 +-
 hw/net/fsl_etsec/etsec.h                           |    2 -
 hw/net/ftgmac100.c                                 |  185 +-
 hw/net/i82596.c                                    |  755 ++
 hw/net/i82596.h                                    |   55 +
 hw/net/imx_fec.c                                   |   24 +-
 hw/net/lan9118.c                                   |   17 +-
 hw/net/lance.c                                     |    9 +-
 hw/net/lasi_i82596.c                               |  189 +
 hw/net/mcf_fec.c                                   |    4 +-
 hw/net/milkymist-minimac2.c                        |    6 +-
 hw/net/mipsnet.c                                   |   46 +-
 hw/net/ne2000-isa.c                                |    4 +-
 hw/net/ne2000-pci.c                                |    6 +-
 hw/net/ne2000.c                                    |    4 +-
 hw/net/ne2000.h                                    |    1 -
 hw/net/net_rx_pkt.c                                |   44 +-
 hw/net/net_rx_pkt.h                                |    6 +-
 hw/net/opencores_eth.c                             |   11 +-
 hw/net/pcnet-pci.c                                 |    7 +-
 hw/net/pcnet.c                                     |    5 +-
 hw/net/pcnet.h                                     |    3 +-
 hw/net/rocker/rocker.c                             |   20 +-
 hw/net/rocker/rocker_desc.c                        |    1 -
 hw/net/rtl8139.c                                   |   27 +-
 hw/net/smc91c111.c                                 |   15 +-
 hw/net/spapr_llan.c                                |   12 +-
 hw/net/stellaris_enet.c                            |    5 +-
 hw/net/sungem.c                                    |   10 +-
 hw/net/sunhme.c                                    |    9 +-
 hw/net/trace-events                                |   41 +
 hw/net/tulip.c                                     | 1047 +++
 hw/net/tulip.h                                     |  267 +
 hw/net/vhost_net.c                                 |    4 +-
 hw/net/virtio-net.c                                |  384 +-
 hw/net/vmxnet3.c                                   |   59 +-
 hw/net/xen_nic.c                                   |    1 -
 hw/net/xgmac.c                                     |    5 +-
 hw/net/xilinx_axienet.c                            |   23 +-
 hw/net/xilinx_ethlite.c                            |    7 +-
 hw/nios2/10m50_devboard.c                          |    4 +-
 hw/nios2/boot.c                                    |    6 +-
 hw/nios2/boot.h                                    |    1 -
 hw/nios2/cpu_pic.c                                 |    1 +
 hw/nios2/generic_nommu.c                           |    2 -
 hw/nubus/Kconfig                                   |    2 +
 hw/nubus/Makefile.objs                             |    4 +
 hw/nubus/mac-nubus-bridge.c                        |   45 +
 hw/nubus/nubus-bridge.c                            |   34 +
 hw/nubus/nubus-bus.c                               |  111 +
 hw/nubus/nubus-device.c                            |  215 +
 hw/nvram/Kconfig                                   |    8 +
 hw/nvram/Makefile.objs                             |    6 +-
 hw/nvram/chrp_nvram.c                              |    1 -
 hw/nvram/ds1225y.c                                 |    4 +-
 hw/nvram/eeprom93xx.c                              |    9 +-
 hw/nvram/eeprom_at24c.c                            |    4 +-
 hw/nvram/fw_cfg.c                                  |  150 +-
 hw/nvram/mac_nvram.c                               |    5 +-
 hw/nvram/nrf51_nvm.c                               |    4 +-
 hw/nvram/spapr_nvram.c                             |   10 +-
 hw/openrisc/cputimer.c                             |    2 +-
 hw/openrisc/openrisc_sim.c                         |    8 +-
 hw/openrisc/pic_cpu.c                              |    2 +-
 hw/pci-bridge/gen_pcie_root_port.c                 |    4 +-
 hw/pci-bridge/i82801b11.c                          |    1 +
 hw/pci-bridge/ioh3420.c                            |    1 +
 hw/pci-bridge/pci_bridge_dev.c                     |    3 +-
 hw/pci-bridge/pci_expander_bridge.c                |   14 +-
 hw/pci-bridge/pcie_pci_bridge.c                    |    3 +-
 hw/pci-bridge/pcie_root_port.c                     |    5 +-
 hw/pci-bridge/xio3130_downstream.c                 |    6 +-
 hw/pci-bridge/xio3130_upstream.c                   |    1 +
 hw/pci-host/Kconfig                                |   11 +-
 hw/pci-host/Makefile.objs                          |    5 +-
 hw/pci-host/bonito.c                               |   67 +-
 hw/pci-host/designware.c                           |    5 +-
 hw/pci-host/gpex.c                                 |    4 +-
 hw/pci-host/grackle.c                              |    4 +-
 hw/pci-host/i440fx.c                               |  419 +
 hw/pci-host/pam.c                                  |    1 -
 hw/pci-host/piix.c                                 |  939 ---
 hw/pci-host/pnv_phb3.c                             | 1197 +++
 hw/pci-host/pnv_phb3_msi.c                         |  349 +
 hw/pci-host/pnv_phb3_pbcq.c                        |  359 +
 hw/pci-host/pnv_phb4.c                             | 1439 ++++
 hw/pci-host/pnv_phb4_pec.c                         |  595 ++
 hw/pci-host/ppce500.c                              |    6 +-
 hw/pci-host/prep.c                                 |   16 +-
 hw/pci-host/q35.c                                  |  106 +-
 hw/pci-host/sabre.c                                |    6 +-
 hw/pci-host/uninorth.c                             |    5 +-
 hw/pci-host/versatile.c                            |    5 +-
 hw/pci-host/xen_igd_pt.c                           |  120 +
 hw/pci-host/xilinx-pcie.c                          |    4 +-
 hw/pci/msix.c                                      |    3 +-
 hw/pci/pci-stub.c                                  |   27 +
 hw/pci/pci.c                                       |   96 +-
 hw/pci/pci_bridge.c                                |    2 +-
 hw/pci/pci_host.c                                  |   25 +-
 hw/pci/pcie.c                                      |   17 +-
 hw/pci/pcie_aer.c                                  |    1 +
 hw/pci/pcie_host.c                                 |    1 -
 hw/pci/pcie_port.c                                 |    6 +-
 hw/pci/shpc.c                                      |    1 +
 hw/pcmcia/Makefile.objs                            |    2 +-
 hw/pcmcia/pcmcia.c                                 |    1 -
 hw/pcmcia/pxa2xx.c                                 |    2 +-
 hw/ppc/Kconfig                                     |   22 +
 hw/ppc/Makefile.objs                               |   11 +-
 hw/ppc/e500.c                                      |   34 +-
 hw/ppc/e500plat.c                                  |    2 +-
 hw/ppc/mac.h                                       |    1 -
 hw/ppc/mac_newworld.c                              |   19 +-
 hw/ppc/mac_oldworld.c                              |   19 +-
 hw/ppc/mpc8544_guts.c                              |    3 +-
 hw/ppc/mpc8544ds.c                                 |    2 +-
 hw/ppc/pnv.c                                       |  988 ++-
 hw/ppc/pnv_bmc.c                                   |  170 +-
 hw/ppc/pnv_core.c                                  |   72 +-
 hw/ppc/pnv_homer.c                                 |  382 +
 hw/ppc/pnv_lpc.c                                   |   92 +-
 hw/ppc/pnv_occ.c                                   |   98 +-
 hw/ppc/pnv_pnor.c                                  |  141 +
 hw/ppc/pnv_psi.c                                   |  122 +-
 hw/ppc/pnv_xscom.c                                 |   74 +-
 hw/ppc/ppc.c                                       |  113 +-
 hw/ppc/ppc405_boards.c                             |   65 +-
 hw/ppc/ppc405_uc.c                                 |    5 +-
 hw/ppc/ppc440_bamboo.c                             |   24 +-
 hw/ppc/ppc440_pcix.c                               |    2 +-
 hw/ppc/ppc440_uc.c                                 |   14 +-
 hw/ppc/ppc4xx_devs.c                               |   71 +-
 hw/ppc/ppc4xx_pci.c                                |    4 +-
 hw/ppc/ppc_booke.c                                 |    5 +-
 hw/ppc/ppce500_spin.c                              |    1 -
 hw/ppc/prep.c                                      |  393 +-
 hw/ppc/prep_systemio.c                             |    7 +-
 hw/ppc/rs6000_mc.c                                 |   19 +-
 hw/ppc/sam460ex.c                                  |   12 +-
 hw/ppc/spapr.c                                     | 1511 ++--
 hw/ppc/spapr_caps.c                                |   90 +-
 hw/ppc/spapr_cpu_core.c                            |   82 +-
 hw/ppc/spapr_drc.c                                 |   84 +-
 hw/ppc/spapr_events.c                              |  329 +-
 hw/ppc/spapr_hcall.c                               |  299 +-
 hw/ppc/spapr_iommu.c                               |   17 +-
 hw/ppc/spapr_irq.c                                 |  912 +--
 hw/ppc/spapr_nvdimm.c                              |  478 ++
 hw/ppc/spapr_ovec.c                                |   35 +-
 hw/ppc/spapr_pci.c                                 |  150 +-
 hw/ppc/spapr_pci_nvlink2.c                         |   50 +-
 hw/ppc/spapr_rng.c                                 |    5 +-
 hw/ppc/spapr_rtas.c                                |  209 +-
 hw/ppc/spapr_rtc.c                                 |    1 +
 hw/ppc/spapr_tpm_proxy.c                           |  178 +
 hw/ppc/spapr_vio.c                                 |   19 +-
 hw/ppc/trace-events                                |    8 +-
 hw/ppc/virtex_ml507.c                              |   25 +-
 hw/rdma/rdma_backend.c                             |   58 +-
 hw/rdma/rdma_backend.h                             |    2 +-
 hw/rdma/rdma_rm.c                                  |   10 +-
 hw/rdma/vmw/pvrdma_cmd.c                           |    1 -
 hw/rdma/vmw/pvrdma_dev_ring.c                      |    5 +-
 hw/rdma/vmw/pvrdma_main.c                          |   14 +-
 hw/rdma/vmw/pvrdma_qp_ops.c                        |    4 +-
 hw/riscv/Kconfig                                   |    4 +
 hw/riscv/Makefile.objs                             |    4 +-
 hw/riscv/boot.c                                    |   42 +-
 hw/riscv/riscv_hart.c                              |   38 +-
 hw/riscv/riscv_htif.c                              |    2 +-
 hw/riscv/sifive_clint.c                            |    9 +-
 hw/riscv/sifive_e.c                                |   42 +-
 hw/riscv/sifive_e_prci.c                           |  124 +
 hw/riscv/sifive_gpio.c                             |    2 +
 hw/riscv/sifive_plic.c                             |   15 +-
 hw/riscv/sifive_prci.c                             |  123 -
 hw/riscv/sifive_test.c                             |   11 +-
 hw/riscv/sifive_u.c                                |  362 +-
 hw/riscv/sifive_u_otp.c                            |  191 +
 hw/riscv/sifive_u_prci.c                           |  169 +
 hw/riscv/sifive_uart.c                             |   14 +-
 hw/riscv/spike.c                                   |   22 +-
 hw/riscv/virt.c                                    |  220 +-
 hw/rtc/Kconfig                                     |   27 +
 hw/rtc/Makefile.objs                               |   15 +
 hw/rtc/allwinner-rtc.c                             |  411 +
 hw/rtc/aspeed_rtc.c                                |  181 +
 hw/rtc/ds1338.c                                    |  241 +
 hw/rtc/exynos4210_rtc.c                            |  608 ++
 hw/rtc/goldfish_rtc.c                              |  285 +
 hw/rtc/m41t80.c                                    |  119 +
 hw/rtc/m48t59-internal.h                           |   75 +
 hw/rtc/m48t59-isa.c                                |  184 +
 hw/rtc/m48t59.c                                    |  722 ++
 hw/rtc/mc146818rtc.c                               | 1033 +++
 hw/rtc/pl031.c                                     |  340 +
 hw/rtc/sun4v-rtc.c                                 |   95 +
 hw/rtc/trace-events                                |   33 +
 hw/rtc/twl92230.c                                  |  897 +++
 hw/rtc/xlnx-zynqmp-rtc.c                           |  275 +
 hw/s390x/3270-ccw.c                                |    4 +-
 hw/s390x/ap-device.c                               |    1 -
 hw/s390x/ccw-device.c                              |    3 +-
 hw/s390x/css-bridge.c                              |    3 +-
 hw/s390x/css.c                                     |   14 +-
 hw/s390x/event-facility.c                          |   46 +-
 hw/s390x/ipl.c                                     |   51 +-
 hw/s390x/ipl.h                                     |   20 +-
 hw/s390x/s390-ccw.c                                |    1 +
 hw/s390x/s390-pci-bus.c                            |   12 +-
 hw/s390x/s390-pci-inst.c                           |   71 +-
 hw/s390x/s390-skeys.c                              |    7 +-
 hw/s390x/s390-stattrib-kvm.c                       |    4 +-
 hw/s390x/s390-stattrib.c                           |    6 +-
 hw/s390x/s390-virtio-ccw.c                         |  107 +-
 hw/s390x/sclp.c                                    |   70 +-
 hw/s390x/sclpcpu.c                                 |    1 -
 hw/s390x/sclpquiesce.c                             |    4 +-
 hw/s390x/tod-kvm.c                                 |    2 +-
 hw/s390x/tod.c                                     |    3 +-
 hw/s390x/vhost-vsock-ccw.c                         |    3 +-
 hw/s390x/virtio-ccw-9p.c                           |    3 +-
 hw/s390x/virtio-ccw-balloon.c                      |    3 +-
 hw/s390x/virtio-ccw-blk.c                          |    3 +-
 hw/s390x/virtio-ccw-crypto.c                       |    3 +-
 hw/s390x/virtio-ccw-gpu.c                          |    3 +-
 hw/s390x/virtio-ccw-input.c                        |    3 +-
 hw/s390x/virtio-ccw-net.c                          |    3 +-
 hw/s390x/virtio-ccw-rng.c                          |    3 +-
 hw/s390x/virtio-ccw-scsi.c                         |    5 +-
 hw/s390x/virtio-ccw-serial.c                       |    3 +-
 hw/s390x/virtio-ccw.c                              |   11 +-
 hw/scsi/Kconfig                                    |    1 +
 hw/scsi/esp-pci.c                                  |    2 +
 hw/scsi/esp.c                                      |  338 +-
 hw/scsi/lsi53c895a.c                               |   44 +-
 hw/scsi/megasas.c                                  |    5 +-
 hw/scsi/mptconfig.c                                |    1 -
 hw/scsi/mptendian.c                                |    1 -
 hw/scsi/mptsas.c                                   |    7 +-
 hw/scsi/scsi-bus.c                                 |   37 +-
 hw/scsi/scsi-disk.c                                |   63 +-
 hw/scsi/scsi-generic.c                             |    4 +-
 hw/scsi/spapr_vscsi.c                              |   78 +-
 hw/scsi/trace-events                               |    3 +-
 hw/scsi/vhost-scsi.c                               |    7 +-
 hw/scsi/vhost-user-scsi.c                          |   30 +-
 hw/scsi/viosrp.h                                   |    3 +-
 hw/scsi/virtio-scsi.c                              |   34 +-
 hw/scsi/vmw_pvscsi.c                               |   20 +-
 hw/sd/Makefile.objs                                |   10 +-
 hw/sd/allwinner-sdhost.c                           |  854 ++
 hw/sd/aspeed_sdhci.c                               |  205 +
 hw/sd/bcm2835_sdhost.c                             |    2 +
 hw/sd/milkymist-memcard.c                          |    4 +-
 hw/sd/omap_mmc.c                                   |    5 +-
 hw/sd/pl181.c                                      |    4 +-
 hw/sd/pxa2xx_mmci.c                                |    4 +-
 hw/sd/sd.c                                         |    6 +-
 hw/sd/sdhci-pci.c                                  |    4 +-
 hw/sd/sdhci.c                                      |   91 +-
 hw/sd/ssi-sd.c                                     |   18 +-
 hw/sd/trace-events                                 |    9 +-
 hw/semihosting/config.c                            |    1 +
 hw/semihosting/console.c                           |   79 +
 hw/sh4/r2d.c                                       |    7 +-
 hw/sh4/sh7750.c                                    |    3 +-
 hw/sh4/sh7750_regnames.c                           |    1 -
 hw/sh4/sh_pci.c                                    |   12 +-
 hw/sh4/shix.c                                      |    6 +-
 hw/smbios/smbios.c                                 |    2 -
 hw/smbios/smbios_type_38.c                         |    3 +
 hw/sparc/Kconfig                                   |    1 +
 hw/sparc/leon3.c                                   |   31 +-
 hw/sparc/sun4m.c                                   |   90 +-
 hw/sparc/sun4m_iommu.c                             |    5 +-
 hw/sparc64/Kconfig                                 |    2 +
 hw/sparc64/niagara.c                               |   37 +-
 hw/sparc64/sparc64.c                               |    1 +
 hw/sparc64/sun4u.c                                 |   26 +-
 hw/ssi/Makefile.objs                               |    4 +-
 hw/ssi/aspeed_smc.c                                |  644 +-
 hw/ssi/imx_spi.c                                   |    3 +-
 hw/ssi/mss-spi.c                                   |    2 +
 hw/ssi/omap_spi.c                                  |    2 +
 hw/ssi/pl022.c                                     |    2 +
 hw/ssi/ssi.c                                       |    1 +
 hw/ssi/stm32f2xx_spi.c                             |    1 +
 hw/ssi/trace-events                                |   11 +
 hw/ssi/xilinx_spi.c                                |    6 +-
 hw/ssi/xilinx_spips.c                              |   32 +-
 hw/timer/Kconfig                                   |   28 +-
 hw/timer/Makefile.objs                             |   36 +-
 hw/timer/a9gtimer.c                                |    8 +-
 hw/timer/allwinner-a10-pit.c                       |   17 +-
 hw/timer/altera_timer.c                            |   17 +-
 hw/timer/arm_mptimer.c                             |   22 +-
 hw/timer/arm_timer.c                               |   24 +-
 hw/timer/armv7m_systick.c                          |    8 +
 hw/timer/aspeed_rtc.c                              |  180 -
 hw/timer/aspeed_timer.c                            |  254 +-
 hw/timer/bcm2835_systmr.c                          |  163 +
 hw/timer/cadence_ttc.c                             |   18 +-
 hw/timer/cmsdk-apb-dualtimer.c                     |   19 +-
 hw/timer/cmsdk-apb-timer.c                         |   19 +-
 hw/timer/digic-timer.c                             |   17 +-
 hw/timer/ds1338.c                                  |  240 -
 hw/timer/etraxfs_timer.c                           |   26 +-
 hw/timer/exynos4210_mct.c                          |  113 +-
 hw/timer/exynos4210_pwm.c                          |   19 +-
 hw/timer/exynos4210_rtc.c                          |  597 --
 hw/timer/grlib_gptimer.c                           |   32 +-
 hw/timer/hpet.c                                    |   10 +-
 hw/timer/i8254.c                                   |    4 +-
 hw/timer/i8254_common.c                            |   41 +-
 hw/timer/imx_epit.c                                |   34 +-
 hw/timer/imx_gpt.c                                 |   23 +-
 hw/timer/lm32_timer.c                              |   21 +-
 hw/timer/m41t80.c                                  |  119 -
 hw/timer/m48t59-internal.h                         |   80 -
 hw/timer/m48t59-isa.c                              |  183 -
 hw/timer/m48t59.c                                  |  720 --
 hw/timer/mc146818rtc.c                             | 1078 ---
 hw/timer/milkymist-sysctl.c                        |   34 +-
 hw/timer/mips_gictimer.c                           |    1 -
 hw/timer/mss-timer.c                               |   16 +-
 hw/timer/nrf51_timer.c                             |    2 +
 hw/timer/omap_gptimer.c                            |    3 +-
 hw/timer/omap_synctimer.c                          |    1 -
 hw/timer/pl031.c                                   |  341 -
 hw/timer/puv3_ost.c                                |   10 +-
 hw/timer/pxa2xx_timer.c                            |   10 +-
 hw/timer/sh_timer.c                                |   14 +-
 hw/timer/slavio_timer.c                            |   37 +-
 hw/timer/stm32f2xx_timer.c                         |   10 +-
 hw/timer/sun4v-rtc.c                               |   96 -
 hw/timer/trace-events                              |   21 +-
 hw/timer/twl92230.c                                |  896 ---
 hw/timer/xilinx_timer.c                            |   17 +-
 hw/timer/xlnx-zynqmp-rtc.c                         |  274 -
 hw/tpm/Kconfig                                     |   18 +-
 hw/tpm/Makefile.objs                               |    5 +-
 hw/tpm/tpm_crb.c                                   |    4 +-
 hw/tpm/tpm_emulator.c                              |   13 +-
 hw/tpm/tpm_passthrough.c                           |    1 -
 hw/tpm/tpm_ppi.c                                   |    4 +-
 hw/tpm/tpm_spapr.c                                 |  429 +
 hw/tpm/tpm_tis.c                                   | 1048 ---
 hw/tpm/tpm_tis.h                                   |   91 +
 hw/tpm/tpm_tis_common.c                            |  872 +++
 hw/tpm/tpm_tis_isa.c                               |  170 +
 hw/tpm/tpm_tis_sysbus.c                            |  159 +
 hw/tpm/tpm_util.c                                  |   27 +-
 hw/tpm/tpm_util.h                                  |    3 +
 hw/tpm/trace-events                                |   20 +-
 hw/tricore/tricore_testboard.c                     |    5 +-
 hw/unicore32/puv3.c                                |    3 +-
 hw/usb/Kconfig                                     |    6 +-
 hw/usb/Makefile.objs                               |    9 +-
 hw/usb/bus.c                                       |    6 +-
 hw/usb/ccid-card-emulated.c                        |    3 +-
 hw/usb/ccid-card-passthru.c                        |   11 +-
 hw/usb/ccid.h                                      |    2 +-
 hw/usb/dev-audio.c                                 |  465 +-
 hw/usb/dev-bluetooth.c                             |  580 --
 hw/usb/dev-hid.c                                   |    9 +-
 hw/usb/dev-hub.c                                   |    4 +-
 hw/usb/dev-mtp.c                                   |   42 +-
 hw/usb/dev-network.c                               |    8 +-
 hw/usb/dev-serial.c                                |  113 +-
 hw/usb/dev-smartcard-reader.c                      |   10 +-
 hw/usb/dev-storage.c                               |    6 +-
 hw/usb/dev-uas.c                                   |    7 +-
 hw/usb/dev-wacom.c                                 |    2 +-
 hw/usb/hcd-ehci-pci.c                              |    4 +-
 hw/usb/hcd-ehci-sysbus.c                           |   28 +-
 hw/usb/hcd-ehci.c                                  |   10 +-
 hw/usb/hcd-ehci.h                                  |    3 +-
 hw/usb/hcd-ohci-pci.c                              |    5 +-
 hw/usb/hcd-ohci.c                                  |   21 +-
 hw/usb/hcd-ohci.h                                  |   16 +
 hw/usb/hcd-uhci.c                                  |    7 +-
 hw/usb/hcd-xhci-nec.c                              |    4 +-
 hw/usb/hcd-xhci.c                                  |   26 +-
 hw/usb/host-libusb.c                               |   56 +-
 hw/usb/imx-usb-phy.c                               |  225 +
 hw/usb/libhw.c                                     |    1 -
 hw/usb/quirks.c                                    |    4 +-
 hw/usb/quirks.h                                    |   22 +-
 hw/usb/redirect.c                                  |  116 +-
 hw/usb/trace-events                                |    1 +
 hw/usb/tusb6010.c                                  |    1 +
 hw/usb/xen-usb.c                                   |   11 +-
 hw/vfio/Kconfig                                    |    6 +
 hw/vfio/Makefile.objs                              |    1 +
 hw/vfio/amd-xgbe.c                                 |    1 +
 hw/vfio/ap.c                                       |   15 +-
 hw/vfio/calxeda-xgmac.c                            |    1 +
 hw/vfio/ccw.c                                      |    6 +-
 hw/vfio/common.c                                   |   58 +-
 hw/vfio/display.c                                  |    2 +-
 hw/vfio/igd.c                                      |  616 ++
 hw/vfio/pci-quirks.c                               |  623 +-
 hw/vfio/pci.c                                      |  108 +-
 hw/vfio/pci.h                                      |   19 +
 hw/vfio/platform.c                                 |    7 +-
 hw/vfio/spapr.c                                    |   17 +-
 hw/virtio/Kconfig                                  |    8 +
 hw/virtio/Makefile.objs                            |    8 +-
 hw/virtio/trace-events                             |   20 +
 hw/virtio/vhost-backend.c                          |    1 +
 hw/virtio/vhost-scsi-pci.c                         |    3 +-
 hw/virtio/vhost-user-blk-pci.c                     |    3 +-
 hw/virtio/vhost-user-fs-pci.c                      |   86 +
 hw/virtio/vhost-user-fs.c                          |  310 +
 hw/virtio/vhost-user-scsi-pci.c                    |    3 +-
 hw/virtio/vhost-user.c                             |   21 +-
 hw/virtio/vhost-vsock-pci.c                        |    3 +-
 hw/virtio/vhost-vsock.c                            |   23 +-
 hw/virtio/vhost.c                                  |   83 +-
 hw/virtio/virtio-9p-pci.c                          |    3 +-
 hw/virtio/virtio-balloon-pci.c                     |    3 +-
 hw/virtio/virtio-balloon.c                         |   10 +-
 hw/virtio/virtio-blk-pci.c                         |    3 +-
 hw/virtio/virtio-bus.c                             |    6 +-
 hw/virtio/virtio-crypto-pci.c                      |    3 +-
 hw/virtio/virtio-crypto.c                          |    8 +-
 hw/virtio/virtio-input-pci.c                       |    3 +-
 hw/virtio/virtio-iommu-pci.c                       |  104 +
 hw/virtio/virtio-iommu.c                           |  893 +++
 hw/virtio/virtio-mmio.c                            |  380 +-
 hw/virtio/virtio-net-pci.c                         |    3 +-
 hw/virtio/virtio-pci.c                             |   45 +-
 hw/virtio/virtio-pci.h                             |    4 +
 hw/virtio/virtio-pmem.c                            |    6 +-
 hw/virtio/virtio-rng.c                             |   26 +-
 hw/virtio/virtio-scsi-pci.c                        |    3 +-
 hw/virtio/virtio-serial-pci.c                      |    3 +-
 hw/virtio/virtio.c                                 | 1327 +++-
 hw/watchdog/cmsdk-apb-watchdog.c                   |   18 +-
 hw/watchdog/watchdog.c                             |    2 +-
 hw/watchdog/wdt_aspeed.c                           |  186 +-
 hw/watchdog/wdt_diag288.c                          |    2 +
 hw/watchdog/wdt_i6300esb.c                         |    2 +-
 hw/watchdog/wdt_ib700.c                            |    2 +-
 hw/xen/xen-bus-helper.c                            |    1 -
 hw/xen/xen-bus.c                                   |    4 +-
 hw/xen/xen-common.c                                |   26 +
 hw/xen/xen-legacy-backend.c                        |    7 +-
 hw/xen/xen_devconfig.c                             |    1 +
 hw/xen/xen_pt.c                                    |    5 +-
 hw/xen/xen_pt.h                                    |    2 +-
 hw/xen/xen_pt_graphics.c                           |    2 +-
 hw/xen/xen_pt_load_rom.c                           |    6 -
 hw/xen/xen_pvdev.c                                 |    1 +
 hw/xenpv/xen_machine_pv.c                          |    4 +-
 hw/xtensa/Kconfig                                  |    6 +
 hw/xtensa/Makefile.objs                            |    1 +
 hw/xtensa/mx_pic.c                                 |    2 +-
 hw/xtensa/pic_cpu.c                                |    2 +-
 hw/xtensa/sim.c                                    |   42 +-
 hw/xtensa/virt.c                                   |  135 +
 hw/xtensa/xtensa_memory.c                          |    2 -
 hw/xtensa/xtensa_memory.h                          |    1 -
 hw/xtensa/xtensa_sim.h                             |   34 +
 hw/xtensa/xtfpga.c                                 |    7 +-
 include/authz/listfile.h                           |    1 -
 include/block/accounting.h                         |    2 +
 include/block/aio-wait.h                           |   22 +
 include/block/aio.h                                |  142 +-
 include/block/aio_task.h                           |   54 +
 include/block/block-copy.h                         |   47 +
 include/block/block-hmp-cmds.h                     |   54 +
 include/block/block.h                              |   45 +-
 include/block/block_int.h                          |  123 +-
 include/block/blockjob_int.h                       |   19 -
 include/block/dirty-bitmap.h                       |   51 +-
 include/block/nbd.h                                |   23 +-
 include/block/nvme.h                               |   21 +-
 include/block/qapi.h                               |    4 +-
 include/block/raw-aio.h                            |   14 +
 include/block/snapshot.h                           |    2 +-
 include/block/write-threshold.h                    |    2 +
 include/chardev/char-fe.h                          |    3 +-
 include/chardev/char-io.h                          |    1 +
 include/chardev/char-mux.h                         |    2 +-
 include/chardev/char.h                             |    6 +-
 include/crypto/block.h                             |   24 +
 include/crypto/cipher.h                            |    2 +
 include/crypto/hmac.h                              |    2 +
 include/crypto/ivgen.h                             |    2 +
 include/crypto/tlssession.h                        |    4 +-
 include/disas/dis-asm.h                            |    8 +
 include/disas/disas.h                              |    3 +
 include/elf.h                                      |    1 +
 include/exec/cpu-all.h                             |   64 +-
 include/exec/cpu-common.h                          |   15 +-
 include/exec/cpu-defs.h                            |    6 +-
 include/exec/cpu_ldst.h                            |  430 +-
 include/exec/cpu_ldst_template.h                   |  210 -
 include/exec/cpu_ldst_useronly_template.h          |  157 -
 include/exec/cputlb.h                              |    3 +
 include/exec/exec-all.h                            |  104 +-
 include/exec/gdbstub.h                             |   80 +-
 include/exec/gen-icount.h                          |   44 +-
 include/exec/helper-gen.h                          |   14 +
 include/exec/helper-head.h                         |    2 +
 include/exec/helper-proto.h                        |    7 +
 include/exec/helper-tcg.h                          |    8 +
 include/exec/ioport.h                              |    2 +
 include/exec/log.h                                 |   36 +-
 include/exec/memattrs.h                            |    2 +
 include/exec/memop.h                               |  134 +
 include/exec/memory-internal.h                     |   67 +-
 include/exec/memory.h                              |  355 +-
 include/exec/plugin-gen.h                          |   71 +
 include/exec/poison.h                              |    2 +
 include/exec/ram_addr.h                            |  195 +-
 include/exec/ramblock.h                            |   64 +
 include/exec/softmmu-semi.h                        |    2 +
 include/exec/tb-hash.h                             |    2 +
 include/exec/translator.h                          |   40 +-
 include/exec/user/thunk.h                          |    2 +
 include/fpu/softfloat-helpers.h                    |  132 +
 include/fpu/softfloat-macros.h                     |    8 +-
 include/fpu/softfloat.h                            |   65 +-
 include/glib-compat.h                              |   42 +-
 include/hw/acpi/acpi-defs.h                        |   16 +-
 include/hw/acpi/acpi.h                             |    2 -
 include/hw/acpi/acpi_dev_interface.h               |    3 +
 include/hw/acpi/aml-build.h                        |   21 +-
 include/hw/acpi/generic_event_device.h             |  103 +
 include/hw/acpi/ipmi.h                             |    2 +-
 include/hw/acpi/memory_hotplug.h                   |    9 +-
 include/hw/acpi/pci.h                              |    3 +
 include/hw/acpi/piix4.h                            |    6 -
 include/hw/acpi/tco.h                              |    2 +
 include/hw/acpi/vmgenid.h                          |    2 +-
 include/hw/adc/stm32f2xx_adc.h                     |    2 +
 include/hw/arm/allwinner-a10.h                     |   20 +-
 include/hw/arm/allwinner-h3.h                      |  161 +
 include/hw/arm/aspeed.h                            |   25 +-
 include/hw/arm/aspeed_soc.h                        |   45 +-
 include/hw/arm/bcm2835_peripherals.h               |   21 +-
 include/hw/arm/bcm2836.h                           |    8 +-
 include/hw/arm/boot.h                              |   13 +-
 include/hw/arm/exynos4210.h                        |    7 +-
 include/hw/arm/fsl-imx25.h                         |   24 +
 include/hw/arm/fsl-imx31.h                         |    1 +
 include/hw/arm/fsl-imx6.h                          |    9 +
 include/hw/arm/fsl-imx6ul.h                        |   16 +-
 include/hw/arm/fsl-imx7.h                          |    1 -
 include/hw/arm/omap.h                              |   63 +-
 include/hw/arm/raspi_platform.h                    |   25 +-
 include/hw/arm/sharpsl.h                           |    3 +
 include/hw/arm/smmu-common.h                       |    2 +-
 include/hw/arm/soc_dma.h                           |    3 +-
 include/hw/arm/stm32f405_soc.h                     |   73 +
 include/hw/arm/virt.h                              |   23 +-
 include/hw/arm/xlnx-versal.h                       |    9 +
 include/hw/arm/xlnx-zynqmp.h                       |    4 +-
 include/hw/audio/pcspk.h                           |    2 +-
 include/hw/audio/wm8750.h                          |    1 -
 include/hw/block/block.h                           |   22 +-
 include/hw/block/fdc.h                             |    1 +
 include/hw/block/flash.h                           |    2 +-
 include/hw/block/swim.h                            |   76 +
 include/hw/boards.h                                |  103 +-
 include/hw/bt.h                                    | 2178 ------
 include/hw/char/bcm2835_aux.h                      |    3 +-
 include/hw/char/cadence_uart.h                     |    1 +
 include/hw/char/cmsdk-apb-uart.h                   |    1 +
 include/hw/char/escc.h                             |    2 +
 include/hw/char/lm32_juart.h                       |    2 +-
 include/hw/char/parallel.h                         |    1 -
 include/hw/char/pl011.h                            |    1 +
 include/hw/char/serial.h                           |   45 +-
 include/hw/char/stm32f2xx_usart.h                  |    1 -
 include/hw/char/xilinx_uartlite.h                  |    3 +
 include/hw/core/cpu.h                              | 1157 +++
 include/hw/core/generic-loader.h                   |    1 +
 include/hw/core/split-irq.h                        |    1 -
 include/hw/cpu/cluster.h                           |    2 +-
 include/hw/cpu/core.h                              |    2 +-
 include/hw/cris/etraxfs.h                          |   22 +-
 include/hw/cris/etraxfs_dma.h                      |    2 +
 include/hw/display/bcm2835_fb.h                    |    3 +-
 include/hw/display/blizzard.h                      |    1 -
 include/hw/display/edid.h                          |    2 +-
 include/hw/display/i2c-ddc.h                       |    1 +
 include/hw/display/macfb.h                         |   64 +
 include/hw/display/milkymist_tmu2.h                |    3 +-
 include/hw/display/tc6393xb.h                      |    3 -
 include/hw/display/vga.h                           |    2 +-
 include/hw/dma/bcm2835_dma.h                       |    4 +-
 include/hw/dma/i8257.h                             |    1 -
 include/hw/elf_ops.h                               |  130 +-
 include/hw/empty_slot.h                            |    2 +
 include/hw/gpio/aspeed_gpio.h                      |  100 +
 include/hw/gpio/bcm2835_gpio.h                     |    1 +
 include/hw/hw.h                                    |    9 -
 include/hw/i2c/aspeed_i2c.h                        |   38 +-
 include/hw/i2c/i2c.h                               |    2 +-
 include/hw/i2c/pm_smbus.h                          |    1 +
 include/hw/i2c/smbus_eeprom.h                      |    1 +
 include/hw/i386/apic_internal.h                    |    1 +
 include/hw/i386/ich9.h                             |    2 -
 include/hw/i386/intel_iommu.h                      |    9 +-
 include/hw/i386/ioapic_internal.h                  |    1 -
 include/hw/i386/microvm.h                          |   71 +
 include/hw/i386/pc.h                               |  130 +-
 include/hw/i386/topology.h                         |  215 +-
 include/hw/i386/x86.h                              |  136 +
 include/hw/ide.h                                   |    9 -
 include/hw/ide/internal.h                          |    9 +-
 include/hw/ide/pci.h                               |    3 +-
 include/hw/input/adb.h                             |    2 +-
 include/hw/input/gamepad.h                         |    1 -
 include/hw/input/hid.h                             |    1 -
 include/hw/input/i8042.h                           |    5 +-
 include/hw/input/lasips2.h                         |   16 +
 include/hw/input/ps2.h                             |    1 +
 include/hw/input/tsc2xxx.h                         |    1 -
 include/hw/intc/allwinner-a10-pic.h                |    2 +
 include/hw/intc/arm_gic.h                          |    2 +
 include/hw/intc/arm_gic_common.h                   |    1 +
 include/hw/intc/bcm2835_ic.h                       |    4 +-
 include/hw/intc/bcm2836_control.h                  |    3 +-
 include/hw/intc/heathrow_pic.h                     |    2 +
 include/hw/intc/i8259.h                            |   12 +
 include/hw/intc/mips_gic.h                         |    1 +
 include/hw/ipack/ipack.h                           |    2 +-
 include/hw/ipmi/ipmi.h                             |   51 +-
 include/hw/ipmi/ipmi_bt.h                          |   73 +
 include/hw/ipmi/ipmi_kcs.h                         |   76 +
 include/hw/irq.h                                   |    9 -
 include/hw/isa/apm.h                               |    1 -
 include/hw/isa/i8259_internal.h                    |    3 +-
 include/hw/isa/isa.h                               |   13 +-
 include/hw/isa/superio.h                           |    2 +-
 include/hw/isa/vt82c686.h                          |    1 +
 include/hw/loader.h                                |   27 +-
 include/hw/m68k/next-cube.h                        |   47 +
 include/hw/mem/memory-device.h                     |    3 +-
 include/hw/mem/nvdimm.h                            |    7 +
 include/hw/mem/pc-dimm.h                           |    4 +-
 include/hw/mips/cps.h                              |    1 +
 include/hw/mips/mips.h                             |    1 -
 include/hw/misc/allwinner-cpucfg.h                 |   52 +
 include/hw/misc/allwinner-h3-ccu.h                 |   66 +
 include/hw/misc/allwinner-h3-dramc.h               |  106 +
 include/hw/misc/allwinner-h3-sysctrl.h             |   67 +
 include/hw/misc/allwinner-sid.h                    |   60 +
 include/hw/misc/aspeed_scu.h                       |   28 +-
 include/hw/misc/aspeed_sdmc.h                      |   21 +-
 include/hw/misc/auxbus.h                           |    3 +-
 include/hw/misc/bcm2835_mbox.h                     |    4 +-
 include/hw/misc/bcm2835_mbox_defs.h                |    4 +-
 include/hw/misc/bcm2835_property.h                 |    4 +-
 include/hw/misc/bcm2835_thermal.h                  |   27 +
 include/hw/misc/cbus.h                             |    1 -
 include/hw/misc/imx_rngc.h                         |   35 +
 include/hw/misc/mac_via.h                          |  118 +
 include/hw/misc/macio/cuda.h                       |    2 +
 include/hw/misc/macio/gpio.h                       |    3 +
 include/hw/misc/macio/macio.h                      |    3 +
 include/hw/misc/macio/pmu.h                        |    3 +
 include/hw/misc/mips_cmgcr.h                       |    2 +
 include/hw/misc/mips_cpc.h                         |    2 +
 include/hw/misc/mos6522.h                          |    2 -
 include/hw/misc/pvpanic.h                          |    3 +
 include/hw/misc/stm32f2xx_syscfg.h                 |    1 -
 include/hw/misc/stm32f4xx_exti.h                   |   60 +
 include/hw/misc/stm32f4xx_syscfg.h                 |   61 +
 include/hw/misc/unimp.h                            |    1 +
 include/hw/misc/vmcoreinfo.h                       |    2 +-
 include/hw/net/allwinner-sun8i-emac.h              |   99 +
 include/hw/net/allwinner_emac.h                    |    1 +
 include/hw/net/ftgmac100.h                         |   17 +
 include/hw/net/lan9118.h                           |    1 -
 include/hw/net/lance.h                             |    1 +
 include/hw/net/lasi_82596.h                        |   29 +
 include/hw/net/ne2000-isa.h                        |    3 +-
 include/hw/net/smc91c111.h                         |    1 -
 include/hw/nmi.h                                   |    2 +-
 include/hw/nubus/mac-nubus-bridge.h                |   24 +
 include/hw/nubus/nubus.h                           |   69 +
 include/hw/nvram/chrp_nvram.h                      |    2 +
 include/hw/nvram/fw_cfg.h                          |   48 +
 include/hw/or-irq.h                                |    3 +-
 include/hw/pci-host/designware.h                   |    1 -
 include/hw/pci-host/gpex.h                         |    1 -
 include/hw/pci-host/i440fx.h                       |   51 +
 include/hw/pci-host/pnv_phb3.h                     |  164 +
 include/hw/pci-host/pnv_phb3_regs.h                |  450 ++
 include/hw/pci-host/pnv_phb4.h                     |  230 +
 include/hw/pci-host/pnv_phb4_regs.h                |  553 ++
 include/hw/pci-host/q35.h                          |   19 +-
 include/hw/pci-host/sabre.h                        |    2 +
 include/hw/pci-host/spapr.h                        |   35 +-
 include/hw/pci-host/uninorth.h                     |    3 +-
 include/hw/pci-host/xilinx-pcie.h                  |    1 -
 include/hw/pci/pci.h                               |    9 +-
 include/hw/pci/pci_bridge.h                        |    2 +-
 include/hw/pci/pci_host.h                          |    4 +-
 include/hw/pci/pci_ids.h                           |    1 +
 include/hw/pci/pcie.h                              |    3 +-
 include/hw/pci/pcie_aer.h                          |    2 +-
 include/hw/pci/pcie_port.h                         |    4 +
 include/hw/pci/shpc.h                              |    1 +
 include/hw/pcmcia.h                                |    2 +-
 include/hw/ppc/openpic.h                           |    3 +-
 include/hw/ppc/pnv.h                               |  128 +-
 include/hw/ppc/pnv_core.h                          |    5 +
 include/hw/ppc/pnv_homer.h                         |   56 +
 include/hw/ppc/pnv_lpc.h                           |    6 +-
 include/hw/ppc/pnv_occ.h                           |    7 +
 include/hw/ppc/pnv_pnor.h                          |   30 +
 include/hw/ppc/pnv_psi.h                           |    5 +-
 include/hw/ppc/pnv_xive.h                          |   13 +-
 include/hw/ppc/pnv_xscom.h                         |   78 +-
 include/hw/ppc/ppc.h                               |    8 +-
 include/hw/ppc/ppc4xx.h                            |   12 +-
 include/hw/ppc/spapr.h                             |   83 +-
 include/hw/ppc/spapr_cpu_core.h                    |    7 +-
 include/hw/ppc/spapr_drc.h                         |   18 +-
 include/hw/ppc/spapr_irq.h                         |   96 +-
 include/hw/ppc/spapr_nvdimm.h                      |   37 +
 include/hw/ppc/spapr_ovec.h                        |    9 +-
 include/hw/ppc/spapr_tpm_proxy.h                   |   31 +
 include/hw/ppc/spapr_vio.h                         |   13 +-
 include/hw/ppc/spapr_xive.h                        |   22 +-
 include/hw/ppc/xics.h                              |   40 +-
 include/hw/ppc/xics_spapr.h                        |   11 +-
 include/hw/ppc/xive.h                              |   93 +-
 include/hw/ppc/xive_regs.h                         |   64 +-
 include/hw/ptimer.h                                |   91 +-
 include/hw/qdev-core.h                             |  114 +-
 include/hw/qdev-properties.h                       |   43 +-
 include/hw/qdev.h                                  |    8 -
 include/hw/registerfields.h                        |   30 +
 include/hw/resettable.h                            |  247 +
 include/hw/riscv/boot.h                            |    6 +-
 include/hw/riscv/riscv_hart.h                      |    4 +
 include/hw/riscv/riscv_htif.h                      |    2 -
 include/hw/riscv/sifive_clint.h                    |    5 +-
 include/hw/riscv/sifive_cpu.h                      |   31 +
 include/hw/riscv/sifive_e.h                        |    8 +-
 include/hw/riscv/sifive_e_prci.h                   |   71 +
 include/hw/riscv/sifive_plic.h                     |    5 +-
 include/hw/riscv/sifive_prci.h                     |   69 -
 include/hw/riscv/sifive_test.h                     |    5 +-
 include/hw/riscv/sifive_u.h                        |   44 +-
 include/hw/riscv/sifive_u_otp.h                    |   80 +
 include/hw/riscv/sifive_u_prci.h                   |   91 +
 include/hw/riscv/sifive_uart.h                     |    3 +
 include/hw/riscv/spike.h                           |    7 +-
 include/hw/riscv/virt.h                            |   19 +-
 include/hw/rtc/allwinner-rtc.h                     |  134 +
 include/hw/rtc/aspeed_rtc.h                        |   27 +
 include/hw/rtc/goldfish_rtc.h                      |   46 +
 include/hw/rtc/m48t59.h                            |   57 +
 include/hw/rtc/mc146818rtc.h                       |   56 +
 include/hw/rtc/mc146818rtc_regs.h                  |   89 +
 include/hw/rtc/pl031.h                             |   47 +
 include/hw/rtc/sun4v-rtc.h                         |   19 +
 include/hw/rtc/xlnx-zynqmp-rtc.h                   |   92 +
 include/hw/s390x/ap-device.h                       |    3 +
 include/hw/s390x/css-bridge.h                      |    3 +-
 include/hw/s390x/css.h                             |    1 +
 include/hw/s390x/event-facility.h                  |    4 +-
 include/hw/s390x/sclp.h                            |    9 +-
 include/hw/s390x/storage-attributes.h              |    2 +-
 include/hw/s390x/storage-keys.h                    |    2 +-
 include/hw/s390x/tod.h                             |    4 +-
 include/hw/scsi/esp.h                              |   15 +
 include/hw/scsi/scsi.h                             |    5 +-
 include/hw/sd/allwinner-sdhost.h                   |  135 +
 include/hw/sd/aspeed_sdhci.h                       |   35 +
 include/hw/sd/sd.h                                 |    2 +-
 include/hw/sd/sdhci.h                              |    2 +
 include/hw/semihosting/console.h                   |   18 +
 include/hw/semihosting/semihost.h                  |    4 +
 include/hw/sh4/sh_intc.h                           |    2 +-
 include/hw/southbridge/piix.h                      |   73 +
 include/hw/sparc/grlib.h                           |    1 -
 include/hw/sparc/sparc64.h                         |    2 +
 include/hw/ssi/aspeed_smc.h                        |   13 +
 include/hw/ssi/ssi.h                               |    2 +-
 include/hw/ssi/stm32f2xx_spi.h                     |    1 -
 include/hw/ssi/xilinx_spips.h                      |    1 +
 include/hw/sysbus.h                                |   15 +-
 include/hw/timer/allwinner-a10-pit.h               |    1 +
 include/hw/timer/aspeed_rtc.h                      |   31 -
 include/hw/timer/aspeed_timer.h                    |   18 +
 include/hw/timer/bcm2835_systmr.h                  |   33 +
 include/hw/timer/cmsdk-apb-timer.h                 |    1 +
 include/hw/timer/i8254.h                           |    3 +-
 include/hw/timer/i8254_internal.h                  |    2 +-
 include/hw/timer/m48t59.h                          |   31 -
 include/hw/timer/mc146818rtc.h                     |   14 -
 include/hw/timer/mc146818rtc_regs.h                |   88 -
 include/hw/timer/mss-timer.h                       |    1 -
 include/hw/timer/pl031.h                           |   46 -
 include/hw/timer/stm32f2xx_timer.h                 |    1 -
 include/hw/timer/sun4v-rtc.h                       |    1 -
 include/hw/timer/xlnx-zynqmp-rtc.h                 |   91 -
 include/hw/tricore/tricore.h                       |    1 -
 include/hw/usb.h                                   |    3 +-
 include/hw/usb/imx-usb-phy.h                       |   53 +
 include/hw/vfio/vfio-common.h                      |    2 +-
 include/hw/vfio/vfio-platform.h                    |    1 -
 include/hw/virtio/vhost-scsi-common.h              |    1 -
 include/hw/virtio/vhost-scsi.h                     |    1 -
 include/hw/virtio/vhost-user-blk.h                 |    5 +-
 include/hw/virtio/vhost-user-fs.h                  |   46 +
 include/hw/virtio/vhost-user-scsi.h                |    1 -
 include/hw/virtio/vhost-vsock.h                    |    2 +
 include/hw/virtio/vhost.h                          |    1 -
 include/hw/virtio/virtio-access.h                  |    1 +
 include/hw/virtio/virtio-blk.h                     |    2 +
 include/hw/virtio/virtio-bus.h                     |    3 +-
 include/hw/virtio/virtio-gpu-bswap.h               |    1 +
 include/hw/virtio/virtio-iommu.h                   |   61 +
 include/hw/virtio/virtio-mmio.h                    |   73 +
 include/hw/virtio/virtio-net.h                     |   14 +
 include/hw/virtio/virtio-pmem.h                    |    2 +-
 include/hw/virtio/virtio-rng.h                     |    3 +-
 include/hw/virtio/virtio-scsi.h                    |    1 +
 include/hw/virtio/virtio-serial.h                  |    1 -
 include/hw/virtio/virtio.h                         |   54 +-
 include/hw/vmstate-if.h                            |   40 +
 include/hw/watchdog/wdt_aspeed.h                   |   21 +-
 include/hw/watchdog/wdt_diag288.h                  |    2 +-
 include/hw/xen/interface/io/blkif.h                |    2 +-
 include/hw/xen/interface/io/ring.h                 |   13 +-
 include/hw/xen/xen-legacy-backend.h                |    1 -
 include/hw/xen/xen.h                               |    1 -
 include/hw/xen/xen_common.h                        |    2 -
 include/hw/xtensa/mx_pic.h                         |    1 -
 include/io/channel-socket.h                        |    4 +
 include/io/net-listener.h                          |    2 +
 include/io/task.h                                  |    2 +-
 include/libdecnumber/decNumberLocal.h              |    1 +
 include/migration/cpu.h                            |    5 +
 include/migration/global_state.h                   |    1 -
 include/migration/misc.h                           |    2 +-
 include/migration/qemu-file-types.h                |    4 +
 include/migration/register.h                       |    9 +-
 include/migration/vmstate.h                        |   76 +-
 include/monitor/hmp-target.h                       |    2 +
 include/monitor/hmp.h                              |   26 +-
 include/monitor/monitor.h                          |    9 +-
 include/monitor/qdev.h                             |    2 -
 include/net/can_emu.h                              |    3 +-
 include/net/filter.h                               |    3 +
 include/net/net.h                                  |    5 +-
 include/qapi/error.h                               |    8 +-
 include/qapi/qmp/dispatch.h                        |    9 +-
 include/qapi/qmp/qstring.h                         |    1 +
 include/qapi/visitor.h                             |    8 +-
 include/qemu-common.h                              |    9 +-
 include/qemu/atomic.h                              |    6 +
 include/qemu/atomic128.h                           |    2 +
 include/qemu/bitops.h                              |   91 +-
 include/qemu/co-shared-resource.h                  |   71 +
 include/qemu/compiler.h                            |   33 +
 include/qemu/coroutine.h                           |   38 +-
 include/qemu/cpuid.h                               |    3 +
 include/qemu/cutils.h                              |    3 +
 include/qemu/dbus.h                                |   19 +
 include/qemu/error-report.h                        |    3 +-
 include/qemu/fifo8.h                               |    1 -
 include/qemu/hbitmap.h                             |  102 +-
 include/qemu/id.h                                  |    1 +
 include/qemu/iov.h                                 |   10 +-
 include/qemu/job.h                                 |   26 +-
 include/qemu/lockable.h                            |   86 +-
 include/qemu/log.h                                 |   51 +-
 include/qemu/main-loop.h                           |    8 +
 include/qemu/memfd.h                               |    4 +
 include/qemu/module.h                              |    8 +-
 include/qemu/nvdimm-utils.h                        |    7 +
 include/qemu/osdep.h                               |   32 +-
 include/qemu/plugin-memory.h                       |   40 +
 include/qemu/plugin.h                              |  255 +
 include/qemu/progress_meter.h                      |   58 +
 include/qemu/qemu-plugin.h                         |  412 +
 include/qemu/queue.h                               |   93 +-
 include/qemu/range.h                               |    2 -
 include/qemu/ratelimit.h                           |    2 +
 include/qemu/rcu.h                                 |   25 +
 include/qemu/rcu_queue.h                           |   47 +
 include/qemu/selfmap.h                             |   44 +
 include/qemu/seqlock.h                             |    4 +-
 include/qemu/sockets.h                             |    2 +-
 include/qemu/thread-win32.h                        |    2 +-
 include/qemu/thread.h                              |   29 +-
 include/qemu/timer.h                               |   48 +-
 include/qemu/typedefs.h                            |   38 +-
 include/qom/cpu.h                                  | 1129 ---
 include/qom/object.h                               |  184 +-
 include/qom/object_interfaces.h                    |   19 +
 include/standard-headers/asm-x86/bootparam.h       |    9 +-
 include/standard-headers/asm-x86/kvm_para.h        |    3 +
 .../infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h      |   15 +-
 include/standard-headers/drm/drm_fourcc.h          |   52 +-
 include/standard-headers/linux/ethtool.h           |   41 +
 include/standard-headers/linux/fuse.h              |  891 +++
 include/standard-headers/linux/input-event-codes.h |   77 +
 include/standard-headers/linux/input.h             |    1 +
 include/standard-headers/linux/pci_regs.h          |   23 +-
 include/standard-headers/linux/virtio_fs.h         |   19 +
 include/standard-headers/linux/virtio_ids.h        |    2 +
 include/standard-headers/linux/virtio_iommu.h      |  165 +
 include/standard-headers/linux/virtio_pmem.h       |    6 +-
 include/standard-headers/linux/virtio_ring.h       |    2 +-
 include/standard-headers/rdma/vmw_pvrdma-abi.h     |    5 +
 include/sysemu/accel.h                             |    7 +-
 include/sysemu/arch_init.h                         |    4 +-
 include/sysemu/balloon.h                           |    1 +
 include/sysemu/block-backend.h                     |   12 +-
 include/sysemu/blockdev.h                          |    4 -
 include/sysemu/bt.h                                |   20 -
 include/sysemu/cpus.h                              |    2 -
 include/sysemu/cryptodev-vhost-user.h              |    3 +
 include/sysemu/cryptodev.h                         |    3 +-
 include/sysemu/dma.h                               |    1 -
 include/sysemu/hax.h                               |    1 -
 include/sysemu/hostmem.h                           |   21 +-
 include/sysemu/hvf.h                               |    2 +-
 include/sysemu/hw_accel.h                          |    2 +-
 include/sysemu/iothread.h                          |    1 +
 include/sysemu/kvm.h                               |   20 +-
 include/sysemu/kvm_int.h                           |    3 +-
 include/sysemu/memory_mapping.h                    |    1 +
 include/sysemu/numa.h                              |   97 +-
 include/sysemu/os-win32.h                          |    2 -
 include/sysemu/qtest.h                             |    6 +-
 include/sysemu/replay.h                            |   19 +-
 include/sysemu/rng.h                               |    3 +
 include/sysemu/runstate.h                          |   69 +
 include/sysemu/sysemu.h                            |   87 +-
 include/sysemu/tpm.h                               |   10 +-
 include/sysemu/whpx.h                              |    7 +
 include/sysemu/xen-mapcache.h                      |    2 +
 include/tcg/tcg-gvec-desc.h                        |   54 +
 include/tcg/tcg-mo.h                               |   48 +
 include/tcg/tcg-op-gvec.h                          |  387 +
 include/tcg/tcg-op.h                               | 1328 ++++
 include/tcg/tcg-opc.h                              |  276 +
 include/tcg/tcg.h                                  | 1430 ++++
 include/ui/console.h                               |    3 +
 include/ui/egl-helpers.h                           |    4 +-
 include/ui/gtk.h                                   |    2 +
 include/ui/input.h                                 |    1 +
 include/ui/qemu-pixman.h                           |    2 +
 include/ui/spice-display.h                         |    2 +-
 include/user/syscall-trace.h                       |   42 +
 io/channel-socket.c                                |   35 +-
 io/channel-websock.c                               |   36 +-
 io/net-listener.c                                  |    3 +-
 io/task.c                                          |    1 +
 io/trace-events                                    |    4 +-
 job-qmp.c                                          |   13 +-
 job.c                                              |   68 +-
 linux-headers/asm-arm/kvm.h                        |   19 +-
 linux-headers/asm-arm/unistd-common.h              |    4 +
 linux-headers/asm-arm64/kvm.h                      |   38 +-
 linux-headers/asm-arm64/unistd.h                   |    1 +
 linux-headers/asm-generic/mman-common.h            |   20 +-
 linux-headers/asm-generic/mman.h                   |   10 +-
 linux-headers/asm-generic/unistd.h                 |   15 +-
 linux-headers/asm-mips/mman.h                      |    3 +
 linux-headers/asm-mips/unistd_n32.h                |    4 +
 linux-headers/asm-mips/unistd_n64.h                |    4 +
 linux-headers/asm-mips/unistd_o32.h                |    4 +
 linux-headers/asm-powerpc/kvm.h                    |    3 +
 linux-headers/asm-powerpc/mman.h                   |    6 +-
 linux-headers/asm-powerpc/unistd_32.h              |    4 +
 linux-headers/asm-powerpc/unistd_64.h              |    4 +
 linux-headers/asm-s390/kvm.h                       |    6 +
 linux-headers/asm-s390/unistd_32.h                 |    4 +
 linux-headers/asm-s390/unistd_64.h                 |    4 +
 linux-headers/asm-x86/kvm.h                        |   28 +-
 linux-headers/asm-x86/unistd.h                     |    2 +-
 linux-headers/asm-x86/unistd_32.h                  |    4 +
 linux-headers/asm-x86/unistd_64.h                  |    4 +
 linux-headers/asm-x86/unistd_x32.h                 |    4 +
 linux-headers/linux/kvm.h                          |   33 +-
 linux-headers/linux/psp-sev.h                      |    8 +-
 linux-headers/linux/vfio.h                         |   71 +-
 linux-user/Makefile.objs                           |   19 +-
 linux-user/aarch64/cpu_loop.c                      |    2 +
 linux-user/aarch64/syscall_nr.h                    |   34 +-
 linux-user/aarch64/target_cpu.h                    |    7 +-
 linux-user/alpha/Makefile.objs                     |    5 +
 linux-user/alpha/syscall.tbl                       |  479 ++
 linux-user/alpha/syscall_nr.h                      |  457 --
 linux-user/alpha/syscallhdr.sh                     |   32 +
 linux-user/alpha/target_cpu.h                      |   16 +-
 linux-user/arm/Makefile.objs                       |    8 +
 linux-user/arm/cpu_loop.c                          |   10 +-
 linux-user/arm/semihost.c                          |   27 +
 linux-user/arm/signal.c                            |    4 +-
 linux-user/arm/syscall.tbl                         |  453 ++
 linux-user/arm/syscall_nr.h                        |  403 -
 linux-user/arm/syscallhdr.sh                       |   31 +
 linux-user/arm/target_cpu.h                        |   31 +-
 linux-user/arm/target_syscall.h                    |    3 -
 linux-user/cris/target_cpu.h                       |    7 +-
 linux-user/elfload.c                               |  149 +-
 linux-user/exit.c                                  |    5 +-
 linux-user/fd-trans.c                              |  106 +-
 linux-user/flatload.c                              |    2 +-
 linux-user/hppa/Makefile.objs                      |    5 +
 linux-user/hppa/syscall.tbl                        |  437 ++
 linux-user/hppa/syscall_nr.h                       |  358 -
 linux-user/hppa/syscallhdr.sh                      |   32 +
 linux-user/hppa/target_cpu.h                       |    7 +-
 linux-user/hppa/target_signal.h                    |    1 +
 linux-user/i386/Makefile.objs                      |    5 +
 linux-user/i386/cpu_loop.c                         |  201 +-
 linux-user/i386/syscall_32.tbl                     |  444 ++
 linux-user/i386/syscall_nr.h                       |  387 -
 linux-user/i386/syscallhdr.sh                      |   28 +
 linux-user/i386/target_cpu.h                       |   11 +-
 linux-user/ioctls.h                                |   75 +
 linux-user/m68k/Makefile.objs                      |    5 +
 linux-user/m68k/syscall.tbl                        |  439 ++
 linux-user/m68k/syscall_nr.h                       |  386 -
 linux-user/m68k/syscallhdr.sh                      |   32 +
 linux-user/m68k/target_cpu.h                       |    7 +-
 linux-user/main.c                                  |  131 +-
 linux-user/microblaze/Makefile.objs                |    5 +
 linux-user/microblaze/syscall.tbl                  |  445 ++
 linux-user/microblaze/syscall_nr.h                 |  397 -
 linux-user/microblaze/syscallhdr.sh                |   32 +
 linux-user/microblaze/target_cpu.h                 |    7 +-
 linux-user/mips/Makefile.objs                      |    5 +
 linux-user/mips/cpu_loop.c                         |  376 +-
 linux-user/mips/syscall-args-o32.c.inc             |  436 ++
 linux-user/mips/syscall_nr.h                       |  380 -
 linux-user/mips/syscall_o32.tbl                    |  427 +
 linux-user/mips/syscallhdr.sh                      |   36 +
 linux-user/mips/target_cpu.h                       |    7 +-
 linux-user/mips64/Makefile.objs                    |   12 +
 linux-user/mips64/syscall_n32.tbl                  |  378 +
 linux-user/mips64/syscall_n64.tbl                  |  354 +
 linux-user/mips64/syscall_nr.h                     |  679 --
 linux-user/mips64/syscallhdr.sh                    |   33 +
 linux-user/mmap.c                                  |   60 +-
 linux-user/nios2/syscall_nr.h                      |  650 +-
 linux-user/nios2/target_cpu.h                      |    7 +-
 linux-user/openrisc/syscall_nr.h                   |  309 +-
 linux-user/openrisc/target_cpu.h                   |    8 +-
 linux-user/openrisc/target_elf.h                   |    2 +-
 linux-user/ppc/Makefile.objs                       |    6 +
 linux-user/ppc/cpu_loop.c                          |    5 +
 linux-user/ppc/signal.c                            |   81 +-
 linux-user/ppc/syscall.tbl                         |  521 ++
 linux-user/ppc/syscall_nr.h                        |  402 -
 linux-user/ppc/syscallhdr.sh                       |   34 +
 linux-user/ppc/target_cpu.h                        |    7 +-
 linux-user/qemu.h                                  |    4 +-
 linux-user/riscv/cpu_loop.c                        |    3 +-
 linux-user/riscv/syscall32_nr.h                    |  295 +
 linux-user/riscv/syscall64_nr.h                    |  301 +
 linux-user/riscv/syscall_nr.h                      |  294 +-
 linux-user/riscv/target_cpu.h                      |    7 +-
 linux-user/s390x/Makefile.objs                     |    5 +
 linux-user/s390x/syscall.tbl                       |  442 ++
 linux-user/s390x/syscall_nr.h                      |  398 -
 linux-user/s390x/syscallhdr.sh                     |   32 +
 linux-user/s390x/target_cpu.h                      |    7 +-
 linux-user/sh4/Makefile.objs                       |    5 +
 linux-user/sh4/syscall.tbl                         |  442 ++
 linux-user/sh4/syscall_nr.h                        |  393 -
 linux-user/sh4/syscallhdr.sh                       |   32 +
 linux-user/sh4/target_cpu.h                        |    7 +-
 linux-user/signal.c                                |  138 +-
 linux-user/sparc/Makefile.objs                     |    5 +
 linux-user/sparc/signal.c                          |  102 +-
 linux-user/sparc/syscall.tbl                       |  485 ++
 linux-user/sparc/syscall_nr.h                      |  363 -
 linux-user/sparc/syscallhdr.sh                     |   32 +
 linux-user/sparc/target_cpu.h                      |   60 +-
 linux-user/sparc64/Makefile.objs                   |    5 +
 linux-user/sparc64/syscall.tbl                     |  485 ++
 linux-user/sparc64/syscall_nr.h                    |  366 -
 linux-user/sparc64/syscallhdr.sh                   |   32 +
 linux-user/strace.c                                |  585 +-
 linux-user/strace.list                             |   57 +-
 linux-user/syscall.c                               |  707 +-
 linux-user/syscall_defs.h                          |  199 +-
 linux-user/syscall_types.h                         |  103 +
 linux-user/tilegx/target_cpu.h                     |    7 +-
 linux-user/trace-events                            |    9 +
 linux-user/vm86.c                                  |    3 +-
 linux-user/x86_64/Makefile.objs                    |    5 +
 linux-user/x86_64/syscall_64.tbl                   |  404 +
 linux-user/x86_64/syscall_nr.h                     |  332 -
 linux-user/x86_64/syscallhdr.sh                    |   28 +
 linux-user/xtensa/Makefile.objs                    |    5 +
 linux-user/xtensa/signal.c                         |   25 +-
 linux-user/xtensa/syscall.tbl                      |  410 +
 linux-user/xtensa/syscall_nr.h                     |  437 --
 linux-user/xtensa/syscallhdr.sh                    |   32 +
 linux-user/xtensa/target_cpu.h                     |    8 +-
 memory.c                                           |  312 +-
 memory_ldst.inc.c                                  |   81 +-
 migration/Makefile.objs                            |    3 +
 migration/block-dirty-bitmap.c                     |   17 +-
 migration/block.c                                  |   53 +-
 migration/colo.c                                   |  267 +-
 migration/global_state.c                           |    1 +
 migration/migration.c                              |  424 +-
 migration/migration.h                              |   16 +-
 migration/multifd-zlib.c                           |  325 +
 migration/multifd-zstd.c                           |  339 +
 migration/multifd.c                                | 1074 +++
 migration/multifd.h                                |  170 +
 migration/postcopy-ram.c                           |  163 +-
 migration/postcopy-ram.h                           |   22 +-
 migration/qemu-file-channel.c                      |   31 +-
 migration/qemu-file.c                              |  154 +-
 migration/qemu-file.h                              |   21 +-
 migration/qjson.h                                  |    2 +
 migration/ram.c                                    | 1765 +----
 migration/ram.h                                    |    8 +-
 migration/rdma.c                                   |  126 +-
 migration/savevm.c                                 |  293 +-
 migration/savevm.h                                 |    1 +
 migration/socket.c                                 |    7 +-
 migration/trace-events                             |   22 +-
 migration/vmstate-types.c                          |  227 +-
 migration/vmstate.c                                |    1 -
 monitor/Makefile.objs                              |    5 +-
 monitor/hmp-cmds.c                                 |  951 +--
 monitor/hmp.c                                      |   16 +-
 monitor/misc.c                                     |  200 +-
 monitor/monitor-internal.h                         |    7 +-
 monitor/monitor.c                                  |   69 +
 monitor/qmp-cmds-control.c                         |  169 +
 monitor/qmp-cmds.c                                 |   21 +-
 monitor/qmp.c                                      |   58 +-
 nbd/client.c                                       |  121 +-
 nbd/common.c                                       |    5 +
 nbd/nbd-internal.h                                 |    2 -
 nbd/server.c                                       |  450 +-
 nbd/trace-events                                   |    6 +-
 net/can/can_socketcan.c                            |   10 +-
 net/colo-compare.c                                 |  101 +-
 net/filter-buffer.c                                |    2 +-
 net/filter-mirror.c                                |    2 +-
 net/filter.c                                       |   92 +-
 net/hub.c                                          |   29 +-
 net/hub.h                                          |    2 -
 net/net.c                                          |   60 +-
 net/netmap.c                                       |    1 +
 net/queue.c                                        |    2 +-
 net/slirp.c                                        |   50 +-
 net/tap-bsd.c                                      |    1 -
 net/tap-linux.c                                    |    1 -
 net/tap-solaris.c                                  |    1 -
 net/tap-win32.c                                    |    2 +-
 net/tap.c                                          |    1 +
 net/trace-events                                   |    6 +-
 net/vhost-user.c                                   |   13 +-
 os-posix.c                                         |   43 +-
 os-win32.c                                         |   24 +-
 pc-bios/README                                     |    5 +-
 pc-bios/bios-256k.bin                              |  Bin 262144 -> 262144 bytes
 pc-bios/bios-microvm.bin                           |  Bin 0 -> 65536 bytes
 pc-bios/bios.bin                                   |  Bin 131072 -> 131072 bytes
 pc-bios/hppa-firmware.img                          |  Bin 783724 -> 766136 bytes
 pc-bios/openbios-ppc                               |  Bin 767256 -> 696912 bytes
 pc-bios/openbios-sparc32                           |  Bin 382048 -> 382048 bytes
 pc-bios/openbios-sparc64                           |  Bin 1593408 -> 1593408 bytes
 pc-bios/opensbi-riscv32-sifive_u-fw_jump.bin       |  Bin 0 -> 49472 bytes
 pc-bios/opensbi-riscv32-virt-fw_jump.bin           |  Bin 36888 -> 41280 bytes
 pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin       |  Bin 40968 -> 53760 bytes
 pc-bios/opensbi-riscv64-virt-fw_jump.bin           |  Bin 40968 -> 49664 bytes
 pc-bios/optionrom/pvh_main.c                       |    2 +-
 pc-bios/ppc_rom.bin                                |  Bin 1048576 -> 0 bytes
 pc-bios/s390-ccw.img                               |  Bin 42608 -> 42608 bytes
 pc-bios/s390-ccw/bootmap.h                         |    2 +-
 pc-bios/s390-ccw/jump2ipl.c                        |   13 +-
 pc-bios/s390-ccw/main.c                            |   10 +-
 pc-bios/s390-ccw/netmain.c                         |    2 +
 pc-bios/s390-ccw/s390-arch.h                       |   10 +-
 pc-bios/s390-ccw/s390-ccw.h                        |    1 +
 pc-bios/s390-ccw/sclp.c                            |    2 +-
 pc-bios/s390-ccw/sclp.h                            |    2 +-
 pc-bios/s390-netboot.img                           |  Bin 67232 -> 67232 bytes
 pc-bios/skiboot.lid                                |  Bin 1591384 -> 1667280 bytes
 pc-bios/slof.bin                                   |  Bin 926432 -> 965112 bytes
 pc-bios/spapr-rtas.bin                             |  Bin 20 -> 0 bytes
 pc-bios/spapr-rtas/Makefile                        |   27 -
 pc-bios/spapr-rtas/spapr-rtas.S                    |   37 -
 pc-bios/vgabios-ati.bin                            |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios-bochs-display.bin                  |  Bin 27648 -> 28672 bytes
 pc-bios/vgabios-cirrus.bin                         |  Bin 38400 -> 38912 bytes
 pc-bios/vgabios-qxl.bin                            |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios-ramfb.bin                          |  Bin 28160 -> 28672 bytes
 pc-bios/vgabios-stdvga.bin                         |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios-virtio.bin                         |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios-vmware.bin                         |  Bin 38912 -> 39424 bytes
 pc-bios/vgabios.bin                                |  Bin 38400 -> 38912 bytes
 plugins/.gitignore                                 |    2 +
 plugins/Makefile.objs                              |   21 +
 plugins/api.c                                      |  342 +
 plugins/core.c                                     |  502 ++
 plugins/loader.c                                   |  398 +
 plugins/plugin.h                                   |   99 +
 plugins/qemu-plugins.symbols                       |   40 +
 po/bg.po                                           |   10 +-
 po/zh_CN.po                                        |    2 +-
 python/qemu/__init__.py                            |   24 -
 python/qemu/accel.py                               |   78 +
 python/qemu/machine.py                             |  104 +-
 python/qemu/qmp.py                                 |  104 +-
 python/qemu/qtest.py                               |   11 +-
 qapi/Makefile.objs                                 |   12 +-
 qapi/audio.json                                    |   28 +-
 qapi/block-core.json                               | 2206 +++---
 qapi/block.json                                    |  526 +-
 qapi/char.json                                     |   11 +-
 qapi/common.json                                   |   49 -
 qapi/control.json                                  |  258 +
 qapi/dump.json                                     |    4 +-
 qapi/error.json                                    |   29 +
 qapi/introspect.json                               |   32 +-
 qapi/job.json                                      |   32 +-
 qapi/machine-target.json                           |   24 +-
 qapi/machine.json                                  |  275 +-
 qapi/migration.json                                |  365 +-
 qapi/misc-target.json                              |    8 +-
 qapi/misc.json                                     |  369 +-
 qapi/net.json                                      |   55 +-
 qapi/opts-visitor.c                                |   26 +-
 qapi/pragma.json                                   |   24 +
 qapi/qapi-dealloc-visitor.c                        |    1 -
 qapi/qapi-schema.json                              |   27 +-
 qapi/qdev.json                                     |   10 +-
 qapi/qmp-dispatch.c                                |  141 +-
 qapi/qmp-registry.c                                |    6 +-
 qapi/qom.json                                      |   23 +-
 qapi/rocker.json                                   |   12 +-
 qapi/run-state.json                                |   58 +-
 qapi/sockets.json                                  |   14 +-
 qapi/string-output-visitor.c                       |    2 +-
 qapi/tpm.json                                      |   10 +-
 qapi/trace.json                                    |   15 +-
 qapi/transaction.json                              |    8 +-
 qapi/ui.json                                       |  123 +-
 qdev-monitor.c                                     |  119 +-
 qemu-bridge-helper.c                               |    6 +-
 qemu-deprecated.texi                               |  333 -
 qemu-doc.texi                                      | 3009 -------
 qemu-ga.texi                                       |  137 -
 qemu-img-cmds.hx                                   |  103 +-
 qemu-img.c                                         |  171 +-
 qemu-img.texi                                      |  795 --
 qemu-io-cmds.c                                     |  110 +-
 qemu-io.c                                          |   34 +-
 qemu-nbd.c                                         |  174 +-
 qemu-nbd.texi                                      |  214 -
 qemu-option-trace.texi                             |   24 -
 qemu-options.hx                                    | 7616 +++++++++---------
 qemu-storage-daemon.c                              |  340 +
 qemu-tech.texi                                     |  195 -
 qemu.nsi                                           |   26 +-
 qga/Makefile.objs                                  |    1 +
 qga/channel-posix.c                                |    2 +-
 qga/channel-win32.c                                |    7 +-
 qga/commands-common.h                              |   21 +
 qga/commands-posix.c                               |   56 +-
 qga/commands-win32.c                               |   51 +-
 qga/commands.c                                     |   56 +-
 qga/installer/qemu-ga.wxs                          |    2 +-
 qga/main.c                                         |   12 +-
 qga/qapi-schema.json                               |  162 +-
 qga/vss-win32/Makefile.objs                        |    4 +-
 qga/vss-win32/install.cpp                          |   11 +
 qobject/json-parser.c                              |    2 +-
 qobject/json-streamer.c                            |    2 +-
 qobject/qstring.c                                  |   27 +-
 qom/Makefile.objs                                  |    2 +-
 qom/cpu.c                                          |  459 --
 qom/object.c                                       |  534 +-
 qom/object_interfaces.c                            |   78 +
 qom/qom-hmp-cmds.c                                 |    4 +-
 qom/qom-qmp-cmds.c                                 |  107 +-
 qtest.c                                            |  109 +-
 replay/Makefile.objs                               |    3 +-
 replay/replay-audio.c                              |   17 +-
 replay/replay-char.c                               |    1 -
 replay/replay-events.c                             |   18 +-
 replay/replay-internal.c                           |   13 +-
 replay/replay-internal.h                           |   13 +-
 replay/replay-net.c                                |    1 -
 replay/replay-random.c                             |   44 +
 replay/replay-snapshot.c                           |   14 +-
 replay/replay-time.c                               |   36 +-
 replay/replay.c                                    |   36 +-
 roms/Makefile                                      |   22 +-
 roms/Makefile.edk2                                 |    7 +-
 roms/SLOF                                          |    2 +-
 roms/config.seabios-128k                           |    1 +
 roms/edk2-build.sh                                 |    4 +-
 roms/edk2-funcs.sh                                 |   20 +
 roms/openbios                                      |    2 +-
 roms/openhackware                                  |    1 -
 roms/opensbi                                       |    2 +-
 roms/qboot                                         |    1 +
 roms/seabios                                       |    2 +-
 roms/seabios-hppa                                  |    2 +-
 roms/skiboot                                       |    2 +-
 rules.mak                                          |   43 +-
 scripts/analyse-9p-simpletrace.py                  |    3 +-
 scripts/analyse-locks-simpletrace.py               |    3 +-
 scripts/analyze-migration.py                       |   39 +-
 scripts/checkpatch.pl                              |   48 +-
 scripts/coccinelle/cpu-reset.cocci                 |   47 +
 scripts/coccinelle/error-use-after-free.cocci      |   52 +
 scripts/coccinelle/exec_rw_const.cocci             |  111 +
 .../coccinelle/memory-region-housekeeping.cocci    |  159 +
 scripts/coccinelle/memory-region-init-ram.cocci    |   38 -
 scripts/coverity-scan/coverity-scan.docker         |  131 +
 scripts/coverity-scan/run-coverity-scan            |  401 +
 scripts/decodetree.py                              |   77 +-
 scripts/device-crash-test                          |    3 +-
 scripts/dump-guest-memory.py                       |    3 +-
 scripts/gensyscalls.sh                             |  102 +
 scripts/get_maintainer.pl                          |    5 +-
 scripts/git-submodule.sh                           |   12 +-
 scripts/git.orderfile                              |   11 +-
 scripts/hxtool                                     |   47 +-
 scripts/hxtool-conv.pl                             |  137 +
 scripts/kernel-doc                                 | 2250 ++++++
 scripts/kvm/kvm_flightrecorder                     |    3 +-
 scripts/kvm/vmxcap                                 |   23 +-
 scripts/make-release                               |    8 +
 scripts/minikconf.py                               |    8 +-
 scripts/modules/module_block.py                    |    1 -
 scripts/qapi-gen.py                                |   13 +-
 scripts/qapi/commands.py                           |   33 +-
 scripts/qapi/common.py                             | 2389 +-----
 scripts/qapi/doc.py                                |  100 +-
 scripts/qapi/error.py                              |   43 +
 scripts/qapi/events.py                             |   23 +-
 scripts/qapi/expr.py                               |  360 +
 scripts/qapi/gen.py                                |  295 +
 scripts/qapi/introspect.py                         |  108 +-
 scripts/qapi/parser.py                             |  579 ++
 scripts/qapi/schema.py                             | 1138 +++
 scripts/qapi/source.py                             |   67 +
 scripts/qapi/types.py                              |   78 +-
 scripts/qapi/visit.py                              |   22 +-
 scripts/qemu-binfmt-conf.sh                        |    8 +-
 scripts/qemu-trace-stap                            |    8 +-
 scripts/qemu-trace-stap.texi                       |  140 -
 scripts/qmp/qemu-ga-client                         |    3 +-
 scripts/qmp/qmp                                    |    3 +-
 scripts/qmp/qmp-shell                              |    3 +-
 scripts/qmp/qom-fuse                               |    2 +-
 scripts/qmp/qom-get                                |    1 -
 scripts/qmp/qom-list                               |    1 -
 scripts/qmp/qom-set                                |    1 -
 scripts/qmp/qom-tree                               |    1 -
 scripts/render_block_graph.py                      |    2 +-
 scripts/replay-dump.py                             |    3 +-
 scripts/signrom.py                                 |   13 +-
 scripts/simplebench/bench-example.py               |   80 +
 scripts/simplebench/bench_block_job.py             |  119 +
 scripts/simplebench/simplebench.py                 |  128 +
 scripts/simpletrace.py                             |    3 +-
 scripts/texi2pod.pl                                |   36 +-
 scripts/tracetool.py                               |    2 +-
 scripts/tracetool/__init__.py                      |    8 +-
 scripts/tracetool/backend/__init__.py              |    1 -
 scripts/tracetool/backend/dtrace.py                |    1 -
 scripts/tracetool/backend/ftrace.py                |    1 -
 scripts/tracetool/backend/log.py                   |    1 -
 scripts/tracetool/backend/simple.py                |    1 -
 scripts/tracetool/backend/syslog.py                |    1 -
 scripts/tracetool/backend/ust.py                   |    1 -
 scripts/tracetool/format/__init__.py               |    1 -
 scripts/tracetool/format/c.py                      |    2 +-
 scripts/tracetool/format/d.py                      |    1 -
 scripts/tracetool/format/h.py                      |    8 +-
 scripts/tracetool/format/log_stap.py               |    4 -
 scripts/tracetool/format/simpletrace_stap.py       |    1 -
 scripts/tracetool/format/stap.py                   |    1 -
 scripts/tracetool/format/tcg_h.py                  |    1 -
 scripts/tracetool/format/tcg_helper_c.py           |    1 -
 scripts/tracetool/format/tcg_helper_h.py           |    1 -
 scripts/tracetool/format/tcg_helper_wrapper_h.py   |    1 -
 scripts/tracetool/format/ust_events_c.py           |    1 -
 scripts/tracetool/format/ust_events_h.py           |    1 -
 scripts/tracetool/transform.py                     |    2 +-
 scripts/tracetool/vcpu.py                          |    1 -
 scripts/update-linux-headers.sh                    |    1 +
 scripts/update-mips-syscall-args.sh                |   57 +
 scripts/update-syscalltbl.sh                       |   49 +
 scripts/vmstate-static-checker.py                  |    9 +-
 scsi/pr-manager.c                                  |    1 -
 scsi/qemu-pr-helper.c                              |   38 +-
 slirp                                              |    2 +-
 softmmu/Makefile.objs                              |    3 +
 softmmu/main.c                                     |   53 +
 softmmu/vl.c                                       | 4517 +++++++++++
 storage-daemon/Makefile.objs                       |    1 +
 storage-daemon/qapi/Makefile.objs                  |    1 +
 storage-daemon/qapi/qapi-schema.json               |   26 +
 stubs/Makefile.objs                                |    5 +-
 stubs/arch_type.c                                  |    4 +
 stubs/change-state-handler.c                       |    2 +-
 stubs/io_uring.c                                   |   32 +
 stubs/monitor-core.c                               |   21 +
 stubs/monitor.c                                    |   17 +-
 stubs/pc_madt_cpu_entry.c                          |    7 -
 stubs/pci-host-piix.c                              |    3 +-
 stubs/replay-user.c                                |    9 +
 stubs/replay.c                                     |   10 +-
 stubs/runstate-check.c                             |    2 +-
 stubs/semihost.c                                   |    5 +
 stubs/vm-stop.c                                    |    2 +-
 stubs/vmstate.c                                    |    6 +-
 target/alpha/cpu-qom.h                             |    4 +-
 target/alpha/cpu.h                                 |    8 +-
 target/alpha/fpu_helper.c                          |   15 +-
 target/alpha/gdbstub.c                             |    2 +-
 target/alpha/helper.c                              |   70 +-
 target/alpha/machine.c                             |    2 -
 target/alpha/sys_helper.c                          |    1 +
 target/alpha/translate.c                           |    8 +-
 target/arm/Makefile.objs                           |   24 +
 target/arm/a32-uncond.decode                       |   74 +
 target/arm/a32.decode                              |  534 ++
 target/arm/arch_dump.c                             |  133 +-
 target/arm/arm-powerctl.c                          |    6 +
 target/arm/arm-semi.c                              |  718 +-
 target/arm/arm_ldst.h                              |   15 +-
 target/arm/cpu-param.h                             |    2 +-
 target/arm/cpu-qom.h                               |    5 +-
 target/arm/cpu.c                                   |  587 +-
 target/arm/cpu.h                                   |  924 ++-
 target/arm/cpu64.c                                 |  447 +-
 target/arm/debug_helper.c                          |   56 +-
 target/arm/gdbstub.c                               |  181 +-
 target/arm/gdbstub64.c                             |    2 +-
 target/arm/helper-a64.c                            |  127 +-
 target/arm/helper-a64.h                            |    1 +
 target/arm/helper-sve.h                            |    2 +
 target/arm/helper.c                                | 3522 ++++++---
 target/arm/helper.h                                |   31 +-
 target/arm/internals.h                             |  218 +-
 target/arm/kvm.c                                   |  196 +-
 target/arm/kvm32.c                                 |   55 +-
 target/arm/kvm64.c                                 |  423 +-
 target/arm/kvm_arm.h                               |  156 +-
 target/arm/m_helper.c                              |  160 +-
 target/arm/machine.c                               |   15 +-
 target/arm/monitor.c                               |  157 +
 target/arm/neon_helper.c                           |  117 -
 target/arm/op_helper.c                             |  155 +-
 target/arm/pauth_helper.c                          |   21 +-
 target/arm/psci.c                                  |    4 +-
 target/arm/sve_helper.c                            |    1 +
 target/arm/t16.decode                              |  281 +
 target/arm/t32.decode                              |  631 ++
 target/arm/tlb_helper.c                            |    2 +-
 target/arm/translate-a64.c                         |  511 +-
 target/arm/translate-a64.h                         |    4 +-
 target/arm/translate-sve.c                         |    8 +-
 target/arm/translate-vfp.inc.c                     |  535 +-
 target/arm/translate.c                             | 8241 +++++++++-----------
 target/arm/translate.h                             |   51 +-
 target/arm/vec_helper.c                            |  211 +
 target/arm/vfp-uncond.decode                       |   12 +-
 target/arm/vfp.decode                              |  171 +-
 target/arm/vfp_helper.c                            |   31 +-
 target/cris/cpu-qom.h                              |    4 +-
 target/cris/cpu.c                                  |   17 +-
 target/cris/cpu.h                                  |    9 +-
 target/cris/gdbstub.c                              |    4 +-
 target/cris/machine.c                              |    1 -
 target/cris/translate.c                            |    8 +-
 target/cris/translate_v10.inc.c                    |    3 +-
 target/hppa/cpu-qom.h                              |    4 +-
 target/hppa/cpu.h                                  |    7 +-
 target/hppa/gdbstub.c                              |    2 +-
 target/hppa/helper.h                               |    2 +
 target/hppa/int_helper.c                           |    2 +-
 target/hppa/machine.c                              |    2 -
 target/hppa/mem_helper.c                           |    2 +-
 target/hppa/op_helper.c                            |   13 +-
 target/hppa/translate.c                            |   47 +-
 target/i386/cpu-qom.h                              |    4 +-
 target/i386/cpu.c                                  | 1950 ++++-
 target/i386/cpu.h                                  |  372 +-
 target/i386/excp_helper.c                          |    2 +-
 target/i386/fpu_helper.c                           |   66 +-
 target/i386/gdbstub.c                              |   33 +-
 target/i386/hax-all.c                              |    9 +-
 target/i386/hax-posix.c                            |   33 +-
 target/i386/hax-windows.c                          |   33 +-
 target/i386/helper.c                               |    7 +-
 target/i386/hvf/hvf.c                              |   69 +-
 target/i386/hvf/vmx.h                              |   28 +-
 target/i386/hvf/x86_cpuid.c                        |    2 +-
 target/i386/hvf/x86_decode.c                       |   64 +-
 target/i386/hvf/x86_decode.h                       |   20 +-
 target/i386/hvf/x86_emu.c                          |    7 +-
 target/i386/hvf/x86_mmu.c                          |   12 +-
 target/i386/hvf/x86_task.c                         |    2 -
 target/i386/hvf/x86hvf.c                           |   18 +-
 target/i386/hyperv-proto.h                         |    1 +
 target/i386/kvm.c                                  |  744 +-
 target/i386/kvm_i386.h                             |   21 +-
 target/i386/machine.c                              |   76 +-
 target/i386/mem_helper.c                           |    2 +-
 target/i386/misc_helper.c                          |    4 +
 target/i386/monitor.c                              |    2 +-
 target/i386/ops_sse.h                              |   88 +-
 target/i386/seg_helper.c                           |   62 +-
 target/i386/sev.c                                  |  107 +-
 target/i386/sev_i386.h                             |    2 +-
 target/i386/translate.c                            |  173 +-
 target/i386/whp-dispatch.h                         |   13 +
 target/i386/whpx-all.c                             |  254 +-
 target/lm32/cpu-qom.h                              |    4 +-
 target/lm32/cpu.c                                  |    9 +-
 target/lm32/cpu.h                                  |    4 +-
 target/lm32/gdbstub.c                              |    2 +-
 target/lm32/helper.c                               |    1 -
 target/lm32/machine.c                              |    2 -
 target/lm32/op_helper.c                            |    3 +-
 target/lm32/translate.c                            |   15 +-
 target/m68k/cpu-qom.h                              |    4 +-
 target/m68k/cpu.c                                  |   37 +-
 target/m68k/cpu.h                                  |    9 +-
 target/m68k/fpu_helper.c                           |    8 +-
 target/m68k/gdbstub.c                              |    2 +-
 target/m68k/helper.c                               |   45 +-
 target/m68k/m68k-semi.c                            |    1 -
 target/m68k/op_helper.c                            |   77 +-
 target/m68k/softfloat.c                            |   98 +-
 target/m68k/translate.c                            |   48 +-
 target/microblaze/cpu-qom.h                        |    4 +-
 target/microblaze/cpu.c                            |   13 +-
 target/microblaze/cpu.h                            |    5 +-
 target/microblaze/gdbstub.c                        |    2 +-
 target/microblaze/translate.c                      |   89 +-
 target/mips/Makefile.objs                          |    5 +-
 target/mips/cp0_helper.c                           | 1678 ++++
 target/mips/cp0_timer.c                            |   43 +-
 target/mips/cpu-qom.h                              |    4 +-
 target/mips/cpu.c                                  |   28 +-
 target/mips/cpu.h                                  |  131 +-
 target/mips/fpu_helper.c                           | 1911 +++++
 target/mips/gdbstub.c                              |    5 +-
 target/mips/helper.c                               |  141 +-
 target/mips/helper.h                               |  304 +-
 target/mips/internal.h                             |   80 +-
 target/mips/kvm.c                                  |    5 +-
 target/mips/kvm_mips.h                             |    2 +-
 target/mips/machine.c                              |   11 +-
 target/mips/mips-defs.h                            |   58 +-
 target/mips/mips-semi.c                            |   15 +-
 target/mips/msa_helper.c                           | 5385 +++++++++----
 target/mips/op_helper.c                            | 4234 ++--------
 target/mips/translate.c                            | 3308 +++++---
 target/moxie/cpu.c                                 |    8 +-
 target/moxie/cpu.h                                 |    4 +-
 target/moxie/machine.c                             |    2 -
 target/moxie/translate.c                           |    2 +-
 target/nios2/cpu.c                                 |   13 +-
 target/nios2/cpu.h                                 |    6 +-
 target/nios2/nios2-semi.c                          |    1 -
 target/nios2/translate.c                           |   10 +-
 target/openrisc/cpu.c                              |   39 +-
 target/openrisc/cpu.h                              |   32 +-
 target/openrisc/disas.c                            |   81 +
 target/openrisc/fpu_helper.c                       |   49 +-
 target/openrisc/gdbstub.c                          |    2 +-
 target/openrisc/helper.h                           |    6 +
 target/openrisc/insns.decode                       |   45 +
 target/openrisc/machine.c                          |   13 +-
 target/openrisc/sys_helper.c                       |   36 +-
 target/openrisc/translate.c                        |  718 +-
 target/ppc/compat.c                                |   21 +-
 target/ppc/cpu-models.c                            |    3 +
 target/ppc/cpu-models.h                            |    3 +
 target/ppc/cpu-qom.h                               |    9 +-
 target/ppc/cpu.h                                   |  236 +-
 target/ppc/dfp_helper.c                            |  394 +-
 target/ppc/excp_helper.c                           |  160 +-
 target/ppc/fpu_helper.c                            |  206 +-
 target/ppc/gdbstub.c                               |   48 +-
 target/ppc/helper.h                                |   19 +-
 target/ppc/helper_regs.h                           |    5 +
 target/ppc/int_helper.c                            |  409 +-
 target/ppc/internal.h                              |    3 +
 target/ppc/kvm.c                                   |  192 +-
 target/ppc/kvm_ppc.h                               |   31 +-
 target/ppc/machine.c                               |    3 +-
 target/ppc/mem_helper.c                            |  212 +-
 target/ppc/misc_helper.c                           |   65 +
 target/ppc/mmu-hash64.c                            |  392 +-
 target/ppc/mmu-radix64.c                           |    6 +
 target/ppc/mmu_helper.c                            |    8 +-
 target/ppc/timebase_helper.c                       |   60 +-
 target/ppc/trace-events                            |    1 +
 target/ppc/translate.c                             |  139 +-
 target/ppc/translate/fp-impl.inc.c                 |  125 +-
 target/ppc/translate/fp-ops.inc.c                  |   10 +-
 target/ppc/translate/vmx-impl.inc.c                |  417 +-
 target/ppc/translate/vsx-impl.inc.c                |    2 +-
 target/ppc/translate_init.inc.c                    |  532 +-
 target/riscv/Makefile.objs                         |    7 +-
 target/riscv/cpu.c                                 |   94 +-
 target/riscv/cpu.h                                 |   88 +-
 target/riscv/cpu_bits.h                            |  144 +-
 target/riscv/cpu_helper.c                          |  583 +-
 target/riscv/csr.c                                 |  477 +-
 target/riscv/fpu_helper.c                          |    1 +
 target/riscv/gdbstub.c                             |   83 +-
 target/riscv/insn32.decode                         |   22 +-
 target/riscv/insn_trans/trans_privileged.inc.c     |   45 +-
 target/riscv/insn_trans/trans_rva.inc.c            |    8 +-
 target/riscv/insn_trans/trans_rvd.inc.c            |    1 -
 target/riscv/insn_trans/trans_rvf.inc.c            |    1 -
 target/riscv/insn_trans/trans_rvi.inc.c            |    5 +-
 target/riscv/instmap.h                             |    8 +-
 target/riscv/monitor.c                             |  229 +
 target/riscv/op_helper.c                           |   75 +-
 target/riscv/pmp.c                                 |   48 +-
 target/riscv/trace-events                          |    6 +
 target/riscv/translate.c                           |  100 +-
 target/rx/Makefile.objs                            |   11 +
 target/rx/cpu-param.h                              |   30 +
 target/rx/cpu-qom.h                                |   53 +
 target/rx/cpu.c                                    |  225 +
 target/rx/cpu.h                                    |  180 +
 target/rx/disas.c                                  | 1446 ++++
 target/rx/gdbstub.c                                |  112 +
 target/rx/helper.c                                 |  149 +
 target/rx/helper.h                                 |   31 +
 target/rx/insns.decode                             |  621 ++
 target/rx/op_helper.c                              |  470 ++
 target/rx/translate.c                              | 2440 ++++++
 target/s390x/cc_helper.c                           |    4 +-
 target/s390x/cpu-qom.h                             |   13 +-
 target/s390x/cpu.c                                 |  145 +-
 target/s390x/cpu.h                                 |  127 +-
 target/s390x/cpu_models.c                          |  105 +-
 target/s390x/cpu_models.h                          |    2 +-
 target/s390x/crypto_helper.c                       |    7 +-
 target/s390x/diag.c                                |   62 +-
 target/s390x/excp_helper.c                         |   67 +-
 target/s390x/fpu_helper.c                          |    6 +-
 target/s390x/gdbstub.c                             |   30 +-
 target/s390x/gen-features.c                        |   11 +-
 target/s390x/helper.c                              |   22 +-
 target/s390x/helper.h                              |    7 +-
 target/s390x/insn-data.def                         |   10 +-
 target/s390x/int_helper.c                          |   15 +-
 target/s390x/internal.h                            |    8 +-
 target/s390x/interrupt.c                           |    9 +-
 target/s390x/ioinst.c                              |   42 +-
 target/s390x/kvm-stub.c                            |   10 +-
 target/s390x/kvm.c                                 |  112 +-
 target/s390x/kvm_s390x.h                           |    4 +-
 target/s390x/machine.c                             |    2 +-
 target/s390x/mem_helper.c                          |  895 ++-
 target/s390x/misc_helper.c                         |   37 +-
 target/s390x/mmu_helper.c                          |  557 +-
 target/s390x/sigp.c                                |   10 +-
 target/s390x/tcg-stub.c                            |    4 +-
 target/s390x/tcg_s390x.h                           |    4 +-
 target/s390x/translate.c                           | 1039 +--
 target/s390x/translate_vx.inc.c                    |  691 +-
 target/s390x/vec_int_helper.c                      |   18 +-
 target/sh4/cpu-qom.h                               |    4 +-
 target/sh4/cpu.c                                   |   12 +-
 target/sh4/cpu.h                                   |    6 +-
 target/sh4/gdbstub.c                               |    8 +-
 target/sh4/helper.c                                |    3 +-
 target/sh4/translate.c                             |    6 +-
 target/sparc/TODO                                  |   88 -
 target/sparc/cpu-qom.h                             |    4 +-
 target/sparc/cpu.c                                 |   13 +-
 target/sparc/cpu.h                                 |   49 +-
 target/sparc/gdbstub.c                             |    2 +-
 target/sparc/helper.c                              |    1 -
 target/sparc/int32_helper.c                        |    2 +-
 target/sparc/ldst_helper.c                         |  319 +-
 target/sparc/machine.c                             |    2 -
 target/sparc/mmu_helper.c                          |   97 +-
 target/sparc/translate.c                           |   34 +-
 target/tilegx/cpu.c                                |    9 +-
 target/tilegx/cpu.h                                |    4 +-
 target/tilegx/translate.c                          |   18 +-
 target/tricore/cpu-qom.h                           |    4 +-
 target/tricore/cpu.c                               |    8 +-
 target/tricore/helper.c                            |    2 +-
 target/tricore/helper.h                            |    1 +
 target/tricore/op_helper.c                         |    7 +
 target/tricore/translate.c                         |  587 +-
 target/unicore32/cpu-qom.h                         |    2 +-
 target/unicore32/cpu.c                             |    1 -
 target/unicore32/cpu.h                             |    2 -
 target/unicore32/translate.c                       |    7 +-
 target/xtensa/core-test_mmuhifi_c3.c               |    3 +-
 target/xtensa/core-test_mmuhifi_c3/core-isa.h      |  116 +-
 .../xtensa/core-test_mmuhifi_c3/gdb-config.inc.c   |  114 +-
 .../core-test_mmuhifi_c3/xtensa-modules.inc.c      | 6384 ++++++++-------
 target/xtensa/cpu-qom.h                            |    4 +-
 target/xtensa/cpu.c                                |   33 +-
 target/xtensa/cpu.h                                |   24 +-
 target/xtensa/gdbstub.c                            |    8 +-
 target/xtensa/helper.c                             |    1 +
 target/xtensa/import_core.sh                       |    6 +-
 target/xtensa/mmu_helper.c                         |    5 +-
 target/xtensa/overlay_tool.h                       |   15 +-
 target/xtensa/translate.c                          |   40 +-
 target/xtensa/xtensa-semi.c                        |    1 -
 tcg/LICENSE                                        |    3 -
 tcg/README                                         |    4 +-
 tcg/aarch64/tcg-target.inc.c                       |   30 +-
 tcg/aarch64/tcg-target.opc.h                       |   15 +-
 tcg/arm/tcg-target.inc.c                           |   59 +-
 tcg/i386/tcg-target.h                              |    2 +-
 tcg/i386/tcg-target.inc.c                          |   49 +-
 tcg/i386/tcg-target.opc.h                          |   28 +-
 tcg/mips/tcg-target.inc.c                          |   28 +-
 tcg/optimize.c                                     |    5 +-
 tcg/ppc/tcg-target.h                               |   51 +-
 tcg/ppc/tcg-target.inc.c                           | 1130 ++-
 tcg/ppc/tcg-target.opc.h                           |   33 +
 tcg/riscv/tcg-target.inc.c                         |   24 +-
 tcg/s390/tcg-target.inc.c                          |   18 +-
 tcg/sparc/tcg-target.inc.c                         |    8 +-
 tcg/tcg-common.c                                   |    3 +-
 tcg/tcg-gvec-desc.h                                |   54 -
 tcg/tcg-mo.h                                       |   48 -
 tcg/tcg-op-gvec.c                                  |   41 +-
 tcg/tcg-op-gvec.h                                  |  380 -
 tcg/tcg-op-vec.c                                   |    6 +-
 tcg/tcg-op.c                                       |  101 +-
 tcg/tcg-op.h                                       | 1312 ----
 tcg/tcg-opc.h                                      |  273 -
 tcg/tcg.c                                          |   57 +-
 tcg/tcg.h                                          | 1517 ----
 tcg/tci.c                                          |   17 +-
 tests/.gitignore                                   |    2 +
 tests/Makefile.include                             |  496 +-
 tests/ac97-test.c                                  |   57 -
 tests/acceptance/avocado_qemu/__init__.py          |  131 +-
 tests/acceptance/boot_linux.py                     |  222 +
 tests/acceptance/boot_linux_console.py             |  680 +-
 tests/acceptance/cpu_queries.py                    |    5 +-
 tests/acceptance/empty_cpu_model.py                |   12 +-
 tests/acceptance/linux_initrd.py                   |   20 +-
 tests/acceptance/linux_ssh_mips_malta.py           |  256 +-
 tests/acceptance/machine_arm_integratorcp.py       |   99 +
 tests/acceptance/machine_arm_n8x0.py               |   49 +
 tests/acceptance/machine_m68k_nextcube.py          |  110 +
 tests/acceptance/machine_mips_malta.py             |  118 +
 tests/acceptance/machine_sparc_leon3.py            |   37 +
 tests/acceptance/migration.py                      |   56 +-
 tests/acceptance/pc_cpu_hotplug_props.py           |   35 +
 tests/acceptance/ppc_prep_40p.py                   |   80 +
 tests/acceptance/version.py                        |    1 +
 tests/acceptance/virtio_check_params.py            |  144 +
 tests/acceptance/vnc.py                            |    4 +-
 tests/acceptance/x86_cpu_model_versions.py         |  160 +-
 tests/acpi-utils.c                                 |  147 -
 tests/acpi-utils.h                                 |   56 -
 tests/ahci-test.c                                  | 1955 -----
 tests/benchmark-crypto-cipher.c                    |   39 +-
 tests/benchmark-crypto-hash.c                      |   17 +-
 tests/bios-tables-test-allowed-diff.h              |    1 -
 tests/bios-tables-test.c                           |  924 ---
 tests/boot-order-test.c                            |  205 -
 tests/boot-sector.c                                |  168 -
 tests/boot-sector.h                                |   28 -
 tests/boot-serial-test.c                           |  241 -
 tests/cdrom-test.c                                 |  228 -
 tests/check-block.sh                               |   49 +-
 tests/check-qjson.c                                |    2 +-
 tests/cpu-plug-test.c                              |  266 -
 tests/data/acpi/pc/APIC.acpihmat                   |  Bin 0 -> 128 bytes
 tests/data/acpi/pc/DSDT.acpihmat                   |  Bin 0 -> 6455 bytes
 tests/data/acpi/pc/HMAT.acpihmat                   |  Bin 0 -> 280 bytes
 tests/data/acpi/pc/SRAT.acpihmat                   |  Bin 0 -> 280 bytes
 tests/data/acpi/q35/APIC.acpihmat                  |  Bin 0 -> 128 bytes
 tests/data/acpi/q35/DSDT                           |  Bin 7841 -> 7869 bytes
 tests/data/acpi/q35/DSDT.acpihmat                  |  Bin 0 -> 9193 bytes
 tests/data/acpi/q35/DSDT.bridge                    |  Bin 7858 -> 7886 bytes
 tests/data/acpi/q35/DSDT.cphp                      |  Bin 8304 -> 8332 bytes
 tests/data/acpi/q35/DSDT.dimmpxm                   |  Bin 9494 -> 9522 bytes
 tests/data/acpi/q35/DSDT.ipmibt                    |  Bin 7916 -> 7944 bytes
 tests/data/acpi/q35/DSDT.memhp                     |  Bin 9200 -> 9228 bytes
 tests/data/acpi/q35/DSDT.mmio64                    |  Bin 8971 -> 8999 bytes
 tests/data/acpi/q35/DSDT.numamem                   |  Bin 7847 -> 7875 bytes
 tests/data/acpi/q35/HMAT.acpihmat                  |  Bin 0 -> 280 bytes
 tests/data/acpi/q35/SRAT.acpihmat                  |  Bin 0 -> 280 bytes
 tests/data/acpi/rebuild-expected-aml.sh            |   13 +-
 tests/data/acpi/virt/APIC.memhp                    |  Bin 0 -> 168 bytes
 tests/data/acpi/virt/APIC.numamem                  |  Bin 0 -> 168 bytes
 tests/data/acpi/virt/DSDT                          |  Bin 18476 -> 5307 bytes
 tests/data/acpi/virt/DSDT.memhp                    |  Bin 0 -> 6644 bytes
 tests/data/acpi/virt/DSDT.numamem                  |  Bin 0 -> 5307 bytes
 tests/data/acpi/virt/FACP.memhp                    |  Bin 0 -> 268 bytes
 tests/data/acpi/virt/FACP.numamem                  |  Bin 0 -> 268 bytes
 tests/data/acpi/virt/GTDT.memhp                    |  Bin 0 -> 96 bytes
 tests/data/acpi/virt/GTDT.numamem                  |  Bin 0 -> 96 bytes
 tests/data/acpi/virt/MCFG.memhp                    |  Bin 0 -> 60 bytes
 tests/data/acpi/virt/MCFG.numamem                  |  Bin 0 -> 60 bytes
 tests/data/acpi/virt/SLIT.memhp                    |  Bin 0 -> 48 bytes
 tests/data/acpi/virt/SPCR.memhp                    |  Bin 0 -> 80 bytes
 tests/data/acpi/virt/SPCR.numamem                  |  Bin 0 -> 80 bytes
 tests/data/acpi/virt/SRAT.memhp                    |  Bin 0 -> 186 bytes
 tests/data/acpi/virt/SRAT.numamem                  |  Bin 0 -> 106 bytes
 tests/dbus-vmstate-daemon.sh                       |   95 +
 tests/decode/err_field6.decode                     |    5 +
 tests/decode/succ_function.decode                  |    6 +
 tests/device-introspect-test.c                     |  323 -
 tests/device-plug-test.c                           |  178 -
 tests/display-vga-test.c                           |   69 -
 tests/docker/Makefile.include                      |   98 +-
 tests/docker/common.rc                             |   11 +-
 tests/docker/docker.py                             |  161 +-
 tests/docker/dockerfiles/centos7.docker            |    6 +-
 tests/docker/dockerfiles/centos8.docker            |   32 +
 tests/docker/dockerfiles/debian-alpha-cross.docker |    7 +-
 tests/docker/dockerfiles/debian-amd64-cross.docker |   22 +
 tests/docker/dockerfiles/debian-amd64.docker       |   10 +-
 tests/docker/dockerfiles/debian-arm64-cross.docker |    7 +-
 tests/docker/dockerfiles/debian-armel-cross.docker |    5 +-
 tests/docker/dockerfiles/debian-armhf-cross.docker |    5 +-
 .../dockerfiles/debian-buster-arm64-cross.docker   |   16 -
 tests/docker/dockerfiles/debian-hppa-cross.docker  |    5 +-
 tests/docker/dockerfiles/debian-m68k-cross.docker  |    5 +-
 tests/docker/dockerfiles/debian-mips-cross.docker  |    7 +-
 .../docker/dockerfiles/debian-mips64-cross.docker  |    5 +-
 .../dockerfiles/debian-mips64el-cross.docker       |    5 +-
 .../docker/dockerfiles/debian-mipsel-cross.docker  |    4 +-
 tests/docker/dockerfiles/debian-ports.docker       |   36 -
 .../docker/dockerfiles/debian-powerpc-cross.docker |    8 +-
 .../dockerfiles/debian-powerpc-user-cross.docker   |   15 -
 tests/docker/dockerfiles/debian-ppc64-cross.docker |    7 +-
 .../docker/dockerfiles/debian-ppc64el-cross.docker |    5 +-
 .../docker/dockerfiles/debian-riscv64-cross.docker |    5 +-
 tests/docker/dockerfiles/debian-s390x-cross.docker |    5 +-
 tests/docker/dockerfiles/debian-sh4-cross.docker   |    5 +-
 tests/docker/dockerfiles/debian-sid.docker         |   41 -
 .../docker/dockerfiles/debian-sparc64-cross.docker |    5 +-
 tests/docker/dockerfiles/debian-win32-cross.docker |    2 +-
 .../docker/dockerfiles/debian-xtensa-cross.docker  |    2 +-
 tests/docker/dockerfiles/debian10.docker           |    8 +-
 tests/docker/dockerfiles/debian8.docker            |   34 -
 tests/docker/dockerfiles/debian9-mxe.docker        |    3 +-
 tests/docker/dockerfiles/debian9.docker            |    7 +-
 tests/docker/dockerfiles/fedora-i386-cross.docker  |    3 +-
 tests/docker/dockerfiles/fedora.docker             |   12 +-
 tests/docker/dockerfiles/travis.docker             |   10 +-
 tests/docker/dockerfiles/ubuntu.docker             |    8 +-
 tests/docker/dockerfiles/ubuntu1804.docker         |   10 +-
 tests/docker/run                                   |    4 +-
 tests/docker/test-build                            |    1 -
 tests/docker/test-clang                            |    6 +-
 tests/docker/test-debug                            |    1 +
 tests/docker/test-mingw                            |    1 -
 tests/docker/test-misc                             |    2 +
 tests/docker/test-quick                            |    1 -
 tests/docker/travis.py                             |    3 +-
 tests/drive_del-test.c                             |  153 -
 tests/ds1338-test.c                                |   58 -
 tests/e1000-test.c                                 |   68 -
 tests/e1000e-test.c                                |  279 -
 tests/eepro100-test.c                              |   77 -
 tests/endianness-test.c                            |  306 -
 tests/es1370-test.c                                |   58 -
 tests/fdc-test.c                                   |  587 --
 tests/fp/Makefile                                  |   14 +-
 tests/fw_cfg-test.c                                |  239 -
 tests/guest-debug/run-test.py                      |   57 +
 tests/guest-debug/test-gdbstub.py                  |    1 -
 tests/hd-geo-test.c                                |  427 -
 tests/hexloader-test.c                             |   45 -
 tests/i440fx-test.c                                |  413 -
 tests/i82801b11-test.c                             |   31 -
 tests/ide-test.c                                   | 1092 ---
 tests/image-fuzzer/qcow2/__init__.py               |    1 -
 tests/image-fuzzer/qcow2/fuzz.py                   |   54 +-
 tests/image-fuzzer/qcow2/layout.py                 |   57 +-
 tests/image-fuzzer/runner.py                       |   16 +-
 tests/intel-hda-test.c                             |   39 -
 tests/ioh3420-test.c                               |   32 -
 tests/iothread.c                                   |   40 +-
 tests/ipmi-bt-test.c                               |  423 -
 tests/ipmi-kcs-test.c                              |  286 -
 tests/ipoctal232-test.c                            |   49 -
 tests/ivshmem-test.c                               |  503 --
 tests/libqos/aarch64-xlnx-zcu102-machine.c         |   95 -
 tests/libqos/ahci.c                                | 1242 ---
 tests/libqos/ahci.h                                |  651 --
 tests/libqos/arm-imx25-pdk-machine.c               |   92 -
 tests/libqos/arm-n800-machine.c                    |   92 -
 tests/libqos/arm-raspi2-machine.c                  |   92 -
 tests/libqos/arm-sabrelite-machine.c               |   92 -
 tests/libqos/arm-smdkc210-machine.c                |   92 -
 tests/libqos/arm-virt-machine.c                    |   91 -
 tests/libqos/arm-xilinx-zynq-a9-machine.c          |   95 -
 tests/libqos/e1000e.c                              |  260 -
 tests/libqos/e1000e.h                              |   53 -
 tests/libqos/fw_cfg.c                              |  164 -
 tests/libqos/fw_cfg.h                              |   52 -
 tests/libqos/i2c-imx.c                             |  216 -
 tests/libqos/i2c-omap.c                            |  196 -
 tests/libqos/i2c.c                                 |   85 -
 tests/libqos/i2c.h                                 |   82 -
 tests/libqos/libqos-pc.c                           |   35 -
 tests/libqos/libqos-pc.h                           |   10 -
 tests/libqos/libqos-spapr.c                        |   33 -
 tests/libqos/libqos-spapr.h                        |   10 -
 tests/libqos/libqos.c                              |  239 -
 tests/libqos/libqos.h                              |   45 -
 tests/libqos/malloc-pc.c                           |   33 -
 tests/libqos/malloc-pc.h                           |   20 -
 tests/libqos/malloc-spapr.c                        |   23 -
 tests/libqos/malloc-spapr.h                        |   15 -
 tests/libqos/malloc.c                              |  347 -
 tests/libqos/malloc.h                              |   50 -
 tests/libqos/pci-pc.c                              |  200 -
 tests/libqos/pci-pc.h                              |   49 -
 tests/libqos/pci-spapr.c                           |  232 -
 tests/libqos/pci-spapr.h                           |   41 -
 tests/libqos/pci.c                                 |  439 --
 tests/libqos/pci.h                                 |  129 -
 tests/libqos/ppc64_pseries-machine.c               |  112 -
 tests/libqos/qgraph.c                              |  759 --
 tests/libqos/qgraph.h                              |  574 --
 tests/libqos/qgraph_internal.h                     |  257 -
 tests/libqos/rtas.c                                |  120 -
 tests/libqos/rtas.h                                |   17 -
 tests/libqos/sdhci.c                               |  164 -
 tests/libqos/sdhci.h                               |   70 -
 tests/libqos/tpci200.c                             |   66 -
 tests/libqos/usb.c                                 |   57 -
 tests/libqos/usb.h                                 |   18 -
 tests/libqos/virtio-9p.c                           |  174 -
 tests/libqos/virtio-9p.h                           |   47 -
 tests/libqos/virtio-balloon.c                      |  114 -
 tests/libqos/virtio-balloon.h                      |   44 -
 tests/libqos/virtio-blk.c                          |  125 -
 tests/libqos/virtio-blk.h                          |   45 -
 tests/libqos/virtio-mmio.c                         |  232 -
 tests/libqos/virtio-mmio.h                         |   50 -
 tests/libqos/virtio-net.c                          |  196 -
 tests/libqos/virtio-net.h                          |   46 -
 tests/libqos/virtio-pci.c                          |  400 -
 tests/libqos/virtio-pci.h                          |   56 -
 tests/libqos/virtio-rng.c                          |  111 -
 tests/libqos/virtio-rng.h                          |   44 -
 tests/libqos/virtio-scsi.c                         |  118 -
 tests/libqos/virtio-scsi.h                         |   44 -


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 19:11:06 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 19:11:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTs6q-0003bt-0f; Wed, 29 Apr 2020 19:11:04 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTs6o-0003bo-Se
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 19:11:02 +0000
X-Inumbo-ID: 2a8f8462-8a4d-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2a8f8462-8a4d-11ea-b9cf-bc764e2007e4;
 Wed, 29 Apr 2020 19:11:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ettaKAb4lZ//LLvapMgZEYePaWFLgU4vkZtMUUkhFZc=; b=O/wcCWeCggmgG8iAasRINriZC9
 4qRrQlZCPEP+mQobD1+4SZ6f1dwzPs6nVQoLVwoANidjYR/2cMBvFsb3G87yyy2F0HToHvBwoTVLM
 QMnWBm7cx/9tIytzVucgZ1MTyKO1uFHq5A+AhXt0zFLccU83AfeVXhiYmtK7kcUOQH80=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTs6n-0000Yj-Rg
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 19:11:01 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTs6n-0003pb-QL
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 19:11:01 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [qemu-xen master] main loop: Big hammer to fix logfile disk DoS in
 Xen setups
Message-Id: <E1jTs6n-0003pb-QL@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 19:11:01 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 410cc30fdc590417ae730d635bbc70257adf6750
Author:     Ian Jackson <ian.jackson@eu.citrix.com>
AuthorDate: Thu May 26 16:21:56 2016 +0100
Commit:     Anthony PERARD <anthony.perard@citrix.com>
CommitDate: Wed Apr 29 10:20:16 2020 +0100

    main loop: Big hammer to fix logfile disk DoS in Xen setups
    
    Each time round the main loop, we now fstat stderr.  If it is too big,
    we dup2 /dev/null onto it.  This is not a very pretty patch but it is
    very simple, easy to see that it's correct, and has a low risk of
    collateral damage.
    
    There is no limit by default but can be adjusted by setting a new
    environment variable.
    
    This fixes CVE-2014-3672.
    
    Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
    Tested-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
    
    Set the default to 0 so that it won't affect non-xen installation. The
    limit will be set by Xen toolstack.
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
    Acked-by: Anthony PERARD <anthony.perard@citrix.com>
    (cherry picked from commit 44a072f0de0d57c95c2212bbce02888832b7b74f)
    (cherry picked from commit 269381bb635692856aa8789a3f322e543e0c648d)
---
 util/main-loop.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/util/main-loop.c b/util/main-loop.c
index eda63fe4e0..74912ad244 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -175,6 +175,50 @@ int qemu_init_main_loop(Error **errp)
     return 0;
 }
 
+static void check_cve_2014_3672_xen(void)
+{
+    static unsigned long limit = ~0UL;
+    const int fd = 2;
+    struct stat stab;
+
+    if (limit == ~0UL) {
+        const char *s = getenv("XEN_QEMU_CONSOLE_LIMIT");
+        /* XEN_QEMU_CONSOLE_LIMIT=0 means no limit */
+        limit = s ? strtoul(s,0,0) : 0;
+    }
+    if (limit == 0)
+        return;
+
+    int r = fstat(fd, &stab);
+    if (r) {
+        perror("fstat stderr (for CVE-2014-3672 check)");
+        exit(-1);
+    }
+    if (!S_ISREG(stab.st_mode))
+        return;
+    if (stab.st_size <= limit)
+        return;
+
+    /* oh dear */
+    fprintf(stderr,"\r\n"
+            "Closing stderr due to CVE-2014-3672 limit. "
+            " Set XEN_QEMU_CONSOLE_LIMIT to number of bytes to override,"
+            " or 0 for no limit.\n");
+    fflush(stderr);
+
+    int nfd = open("/dev/null", O_WRONLY);
+    if (nfd < 0) {
+        perror("open /dev/null (for CVE-2014-3672 check)");
+        exit(-1);
+    }
+    r = dup2(nfd, fd);
+    if (r != fd) {
+        perror("dup2 /dev/null (for CVE-2014-3672 check)");
+        exit(-1);
+    }
+    close(nfd);
+}
+
 static int max_priority;
 
 #ifndef _WIN32
@@ -229,6 +273,8 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     g_main_context_acquire(context);
 
+    check_cve_2014_3672_xen();
+
     glib_pollfds_fill(&timeout);
 
     qemu_mutex_unlock_iothread();
@@ -401,6 +447,8 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     g_main_context_acquire(context);
 
+    check_cve_2014_3672_xen();
+
     /* XXX: need to suppress polling by better using win32 events */
     ret = 0;
     for (pe = first_polling_entry; pe != NULL; pe = pe->next) {
--
generated by git-patchbot for /home/xen/git/qemu-xen.git#master


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 20:22:11 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 20:22:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTtDa-0002FV-Kv; Wed, 29 Apr 2020 20:22:06 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTtDZ-0002FQ-DJ
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:05 +0000
X-Inumbo-ID: 175e8622-8a57-11ea-99b6-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 175e8622-8a57-11ea-99b6-12813bfff9fa;
 Wed, 29 Apr 2020 20:22:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=3Lmei/wfWC0GbqJb+3YQvsJo9D0VKIC/2H7KSIjrrso=; b=RGTmH/2R2I186/mUOwdWBhf4T5
 WQ3SpXLbdA71mZhavMU8BrB0soSuQeTdczyh7k0Gan0teXoyi/UaObHkMG4iY94JtVWpCNwKZA/2W
 ubNK9BSo8NgxQNorEPJjsju5kLDuFOVsCAj3oLk0hoh5e22naGn7lS7fA7smfV01SNpk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTtDY-0001um-Ja
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTtDY-0007lu-IJ
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/pv: Options to disable and/or compile out 32bit PV
 support
Message-Id: <E1jTtDY-0007lu-IJ@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 20:22:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 68d757df8dd23b88bebfb6a56c9f51df59de969f
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Apr 17 12:39:40 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 21:13:00 2020 +0100

    x86/pv: Options to disable and/or compile out 32bit PV support
    
    This is the start of some performance and security-hardening improvements,
    based on the fact that 32bit PV guests are few and far between these days.
    
    Ring1 is full of architectural corner cases, such as counting as supervisor
    from a paging point of view.  This accounts for a substantial performance hit
    on processors from the last 8 years (adjusting SMEP/SMAP on every privilege
    transition), and the gap is only going to get bigger with new hardware
    features.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 docs/misc/xen-command-line.pandoc | 12 +++++++++++-
 xen/arch/x86/Kconfig              | 16 ++++++++++++++++
 xen/arch/x86/pv/domain.c          | 34 ++++++++++++++++++++++++++++++++++
 xen/arch/x86/setup.c              |  9 +++++++--
 xen/include/asm-x86/pv/domain.h   |  6 ++++++
 xen/include/xen/param.h           |  9 +++++++++
 6 files changed, 83 insertions(+), 3 deletions(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index acd0b3d994..ee12b0f53f 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1694,7 +1694,17 @@ The following resources are available:
     CDP, one COS will corespond two CBMs other than one with CAT, due to the
     sum of CBMs is fixed, that means actual `cos_max` in use will automatically
     reduce to half when CDP is enabled.
-	
+
+### pv
+    = List of [ 32=<bool> ]
+
+    Applicability: x86
+
+Controls for aspects of PV guest support.
+
+*   The `32` boolean controls whether 32bit PV guests can be created.  It
+    defaults to `true`, and is ignored when `CONFIG_PV32` is compiled out.
+
 ### pv-linear-pt (x86)
 > `= <boolean>`
 
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index a69be983d6..96432f1f69 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -49,6 +49,22 @@ config PV
 
 	  If unsure, say Y.
 
+config PV32
+	bool "Support for 32bit PV guests"
+	depends on PV
+	default y
+	---help---
+	  The 32bit PV ABI uses Ring1, an area of the x86 architecture which
+	  was deprecated and mostly removed in the AMD64 spec.  As a result,
+	  it occasionally conflicts with newer x86 hardware features, causing
+	  overheads for Xen to maintain backwards compatibility.
+
+	  People may wish to disable 32bit PV guests for attack surface
+	  reduction, or performance reasons.  Backwards compatibility can be
+	  provided via the PV Shim mechanism.
+
+	  If unsure, say Y.
+
 config PV_LINEAR_PT
        bool "Support for PV linear pagetables"
        depends on PV
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 43da5c179f..3579dc063e 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -16,6 +16,38 @@
 #include <asm/pv/domain.h>
 #include <asm/shadow.h>
 
+#ifdef CONFIG_PV32
+int8_t __read_mostly opt_pv32 = -1;
+#endif
+
+static __init int parse_pv(const char *s)
+{
+    const char *ss;
+    int val, rc = 0;
+
+    do {
+        ss = strchr(s, ',');
+        if ( !ss )
+            ss = strchr(s, '\0');
+
+        if ( (val = parse_boolean("32", s, ss)) >= 0 )
+        {
+#ifdef CONFIG_PV32
+            opt_pv32 = val;
+#else
+            no_config_param("PV32", "pv", s, ss);
+#endif
+        }
+        else
+            rc = -EINVAL;
+
+        s = ss + 1;
+    } while ( *ss );
+
+    return rc;
+}
+custom_param("pv", parse_pv);
+
 static __read_mostly enum {
     PCID_OFF,
     PCID_ALL,
@@ -174,6 +206,8 @@ int switch_compat(struct domain *d)
 
     BUILD_BUG_ON(offsetof(struct shared_info, vcpu_info) != 0);
 
+    if ( !opt_pv32 )
+        return -EOPNOTSUPP;
     if ( is_hvm_domain(d) || domain_tot_pages(d) != 0 )
         return -EACCES;
     if ( is_pv_32bit_domain(d) )
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index eb56d78c2f..9e9576344c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -53,6 +53,7 @@
 #include <asm/spec_ctrl.h>
 #include <asm/guest.h>
 #include <asm/microcode.h>
+#include <asm/pv/domain.h>
 
 /* opt_nosmp: If true, secondary processors are ignored. */
 static bool __initdata opt_nosmp;
@@ -1870,8 +1871,12 @@ void arch_get_xen_caps(xen_capabilities_info_t *info)
     {
         snprintf(s, sizeof(s), "xen-%d.%d-x86_64 ", major, minor);
         safe_strcat(*info, s);
-        snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
-        safe_strcat(*info, s);
+
+        if ( opt_pv32 )
+        {
+            snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
+            safe_strcat(*info, s);
+        }
     }
     if ( hvm_enabled )
     {
diff --git a/xen/include/asm-x86/pv/domain.h b/xen/include/asm-x86/pv/domain.h
index 7a69bfb303..df9716ff26 100644
--- a/xen/include/asm-x86/pv/domain.h
+++ b/xen/include/asm-x86/pv/domain.h
@@ -23,6 +23,12 @@
 
 #include <xen/sched.h>
 
+#ifdef CONFIG_PV32
+extern int8_t opt_pv32;
+#else
+# define opt_pv32 false
+#endif
+
 /*
  * PCID values for the address spaces of 64-bit pv domains:
  *
diff --git a/xen/include/xen/param.h b/xen/include/xen/param.h
index d4578cd27f..a1dc3ba8f0 100644
--- a/xen/include/xen/param.h
+++ b/xen/include/xen/param.h
@@ -127,4 +127,13 @@ extern const struct kernel_param __param_start[], __param_end[];
     string_param(_name, _var); \
     string_runtime_only_param(_name, _var)
 
+static inline void no_config_param(const char *cfg, const char *param,
+                                   const char *s, const char *e)
+{
+    int len = e ? ({ ASSERT(e >= s); e - s; }) : strlen(s);
+
+    printk(XENLOG_INFO "CONFIG_%s disabled - ignoring '%s=%*s' setting\n",
+           cfg, param, len, s);
+}
+
 #endif /* _XEN_PARAM_H */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 20:22:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 20:22:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTtDk-0002GD-Mm; Wed, 29 Apr 2020 20:22:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTtDj-0002G6-HU
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:15 +0000
X-Inumbo-ID: 1d14fd64-8a57-11ea-99b6-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 1d14fd64-8a57-11ea-99b6-12813bfff9fa;
 Wed, 29 Apr 2020 20:22:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=7yVQgqUlT2WL5VyZzWGJt+4jD3S/r2KHYzbjRKMXBbY=; b=hFEklPHbnQnaOnnLhSrpLTdOBm
 iQjjeNIRMnz1m8HSkB3mVNmGxLqcmBLB0lcpu4BjsHx4FpncdtlipHQeNQ4cgSUMUFH5ukGta9sRJ
 uHHvqiaRtUo8F0OxOtc35UX/b/u6UAWAhR1sa7/U3HzJ4WMiUWzk95Td9BTrpBYnO3+c=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTtDi-0001us-ML
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTtDi-0007mM-LN
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/pv: Short-circuit is_pv_{32,
 64}bit_domain() in !CONFIG_PV32 builds
Message-Id: <E1jTtDi-0007mM-LN@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 20:22:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9050cf4816a77e2d8c9b3de47a68b7e12661135f
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Apr 17 15:36:06 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 21:13:00 2020 +0100

    x86/pv: Short-circuit is_pv_{32,64}bit_domain() in !CONFIG_PV32 builds
    
    ... and move arch.is_32bit_pv into the pv union while at it.
    
    Adjust the impacted code to use true/false, dropping the hunk
    pv_domain_initialise() which is storing 0 into an already zeroed
    datastructure.
    
    Bloat-o-meter reports the following net savings with some notable differences
    highlighted:
    
      add/remove: 4/6 grow/shrink: 5/76 up/down: 1955/-18792 (-16837)
      Function                                     old     new   delta
      ...
      pv_vcpu_initialise                           411     158    -253
      guest_cpuid                                 1837    1584    -253
      pv_hypercall                                 579     297    -282
      check_descriptor                             427     130    -297
      _get_page_type                              5915    5202    -713
      arch_get_info_guest                         2225    1195   -1030
      context_switch                              3831    2635   -1196
      dom0_construct_pv                          10284    8939   -1345
      arch_set_info_guest                         5564    3267   -2297
      Total: Before=3079563, After=3062726, chg -0.55%
    
    In principle, DOMAIN_is_32bit_pv should be based on CONFIG_PV32, but the
    assembly code is going to need further untangling before that becomes easy to
    do.  For now, use CONFIG_PV as missed accidentally by c/s ec651bd2460 "x86:
    make entry point code build when !CONFIG_PV".
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/domctl.c             |  4 ++--
 xen/arch/x86/pv/domain.c          |  7 ++-----
 xen/arch/x86/pv/hypercall.c       |  2 ++
 xen/arch/x86/x86_64/asm-offsets.c |  4 +++-
 xen/include/asm-x86/domain.h      |  4 ++--
 xen/include/xen/sched.h           | 15 +++++++++++++--
 6 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 03dffa5ecf..8c55db2f69 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -577,8 +577,8 @@ long arch_do_domctl(
             ret = -EOPNOTSUPP;
         else if ( is_pv_domain(d) )
         {
-            if ( ((domctl->u.address_size.size == 64) && !d->arch.is_32bit_pv) ||
-                 ((domctl->u.address_size.size == 32) && d->arch.is_32bit_pv) )
+            if ( ((domctl->u.address_size.size == 64) && !d->arch.pv.is_32bit) ||
+                 ((domctl->u.address_size.size == 32) &&  d->arch.pv.is_32bit) )
                 ret = 0;
             else if ( domctl->u.address_size.size == 32 )
                 ret = switch_compat(d);
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 3579dc063e..0a4a5bd001 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -214,7 +214,7 @@ int switch_compat(struct domain *d)
         return 0;
 
     d->arch.has_32bit_shinfo = 1;
-    d->arch.is_32bit_pv = 1;
+    d->arch.pv.is_32bit = true;
 
     for_each_vcpu( d, v )
     {
@@ -234,7 +234,7 @@ int switch_compat(struct domain *d)
     return 0;
 
  undo_and_fail:
-    d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 0;
+    d->arch.pv.is_32bit = d->arch.has_32bit_shinfo = false;
     for_each_vcpu( d, v )
     {
         free_compat_arg_xlat(v);
@@ -352,9 +352,6 @@ int pv_domain_initialise(struct domain *d)
 
     d->arch.ctxt_switch = &pv_csw;
 
-    /* 64-bit PV guest by default. */
-    d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 0;
-
     d->arch.pv.xpti = is_hardware_domain(d) ? opt_xpti_hwdom : opt_xpti_domu;
 
     if ( !is_pv_32bit_domain(d) && use_invpcid && cpu_has_pcid )
diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c
index 686a7f2c5c..b0d1d0ed77 100644
--- a/xen/arch/x86/pv/hypercall.c
+++ b/xen/arch/x86/pv/hypercall.c
@@ -302,6 +302,7 @@ void pv_ring3_init_hypercall_page(void *p)
     }
 }
 
+#ifdef CONFIG_PV32
 void pv_ring1_init_hypercall_page(void *p)
 {
     unsigned int i;
@@ -329,6 +330,7 @@ void pv_ring1_init_hypercall_page(void *p)
         *(u8  *)(p+ 7) = 0xc3;    /* ret */
     }
 }
+#endif
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 500df7a3e7..9f66a69be7 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -98,8 +98,10 @@ void __dummy__(void)
     OFFSET(VCPU_nsvm_hap_enabled, struct vcpu, arch.hvm.nvcpu.u.nsvm.ns_hap_enabled);
     BLANK();
 
-    OFFSET(DOMAIN_is_32bit_pv, struct domain, arch.is_32bit_pv);
+#ifdef CONFIG_PV
+    OFFSET(DOMAIN_is_32bit_pv, struct domain, arch.pv.is_32bit);
     BLANK();
+#endif
 
     OFFSET(VCPUINFO_upcall_pending, struct vcpu_info, evtchn_upcall_pending);
     OFFSET(VCPUINFO_upcall_mask, struct vcpu_info, evtchn_upcall_mask);
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index b10d74fb57..5b6d909266 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -262,6 +262,8 @@ struct pv_domain
 
     atomic_t nr_l4_pages;
 
+    /* Is a 32-bit PV guest? */
+    bool is_32bit;
     /* XPTI active? */
     bool xpti;
     /* Use PCID feature? */
@@ -341,8 +343,6 @@ struct arch_domain
     /* NB. protected by d->event_lock and by irq_desc[irq].lock */
     struct radix_tree_root irq_pirq;
 
-    /* Is a 32-bit PV (non-HVM) guest? */
-    bool_t is_32bit_pv;
     /* Is shared-info page in 32-bit format? */
     bool_t has_32bit_shinfo;
 
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 195e7ee583..6101761d25 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -985,7 +985,11 @@ static always_inline bool is_pv_vcpu(const struct vcpu *v)
 #ifdef CONFIG_COMPAT
 static always_inline bool is_pv_32bit_domain(const struct domain *d)
 {
-    return is_pv_domain(d) && d->arch.is_32bit_pv;
+#ifdef CONFIG_PV32
+    return is_pv_domain(d) && d->arch.pv.is_32bit;
+#else
+    return false;
+#endif
 }
 
 static always_inline bool is_pv_32bit_vcpu(const struct vcpu *v)
@@ -995,7 +999,14 @@ static always_inline bool is_pv_32bit_vcpu(const struct vcpu *v)
 
 static always_inline bool is_pv_64bit_domain(const struct domain *d)
 {
-    return is_pv_domain(d) && !d->arch.is_32bit_pv;
+    if ( !is_pv_domain(d) )
+        return false;
+
+#ifdef CONFIG_PV32
+    return !d->arch.pv.is_32bit;
+#else
+    return true;
+#endif
 }
 
 static always_inline bool is_pv_64bit_vcpu(const struct vcpu *v)
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 20:22:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 20:22:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTtDu-0002HT-OU; Wed, 29 Apr 2020 20:22:26 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTtDt-0002HJ-PB
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:25 +0000
X-Inumbo-ID: 2365d5ce-8a57-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 2365d5ce-8a57-11ea-ae69-bc764e2007e4;
 Wed, 29 Apr 2020 20:22:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=97+oJ7N5mmy7xPBjX/hdZu8ppG/MJHjXJ3MuJY9wp7k=; b=0fSuZzuC8kbO0JS905x08Sueg1
 pFZt2WyB4Nec2DKU6Atx52hk+MWL++qBiwoMmHlM9+RTCtUznzIdIQRqCC9JvWoBipg+Vf616CFJb
 XlYvPaFsrqaZZbc8wxEXbuC99zSBTV5ecvyGRY9klQsawGiTVFeptFDlqejhQfb1CMFU=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTtDs-0001v1-PG
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTtDs-0007mv-OD
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/pv: Compile out compat_gdt in !CONFIG_PV builds
Message-Id: <E1jTtDs-0007mv-OD@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 20:22:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 950f41a9da4a151dfb9701eccffedb78cf752adc
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Apr 17 15:49:59 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 21:13:00 2020 +0100

    x86/pv: Compile out compat_gdt in !CONFIG_PV builds
    
    There is no need for the Compat GDT if there are no 32bit PV guests.  This
    saves 4k per online CPU
    
    Bloat-o-meter reports the following savings in Xen itself:
    
      add/remove: 0/3 grow/shrink: 1/4 up/down: 7/-4612 (-4605)
      Function                                     old     new   delta
      cpu_smpboot_free                            1249    1256      +7
      per_cpu__compat_gdt_l1e                        8       -      -8
      per_cpu__compat_gdt                            8       -      -8
      init_idt_traps                               442     420     -22
      load_system_tables                           414     364     -50
      trap_init                                    444     280    -164
      cpu_smpboot_callback                        1255     991    -264
      boot_compat_gdt                             4096       -   -4096
      Total: Before=3062726, After=3058121, chg -0.15%
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/cpu/common.c |  5 +++--
 xen/arch/x86/desc.c       |  2 ++
 xen/arch/x86/smpboot.c    |  5 ++++-
 xen/arch/x86/traps.c      | 10 +++++++---
 4 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
index 2e9631f6b2..131ff03fcf 100644
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -752,8 +752,9 @@ void load_system_tables(void)
 
 	_set_tssldt_desc(gdt + TSS_ENTRY, (unsigned long)tss,
 			 sizeof(*tss) - 1, SYS_DESC_tss_avail);
-	_set_tssldt_desc(compat_gdt + TSS_ENTRY, (unsigned long)tss,
-			 sizeof(*tss) - 1, SYS_DESC_tss_busy);
+	if ( IS_ENABLED(CONFIG_PV32) )
+		_set_tssldt_desc(compat_gdt + TSS_ENTRY, (unsigned long)tss,
+				 sizeof(*tss) - 1, SYS_DESC_tss_busy);
 
 	per_cpu(full_gdt_loaded, cpu) = false;
 	lgdt(&gdtr);
diff --git a/xen/arch/x86/desc.c b/xen/arch/x86/desc.c
index dfeb1beaa8..39080ca672 100644
--- a/xen/arch/x86/desc.c
+++ b/xen/arch/x86/desc.c
@@ -55,6 +55,7 @@ seg_desc_t boot_gdt[PAGE_SIZE / sizeof(seg_desc_t)] =
     [SEL2GDT(PER_CPU_SELECTOR)] =     { 0x0000910000000000 },
 };
 
+#ifdef CONFIG_PV32
 __section(".data.page_aligned") __aligned(PAGE_SIZE)
 seg_desc_t boot_compat_gdt[PAGE_SIZE / sizeof(seg_desc_t)] =
 {
@@ -83,6 +84,7 @@ seg_desc_t boot_compat_gdt[PAGE_SIZE / sizeof(seg_desc_t)] =
     /* 0xe060 - per-CPU entry (limit == cpu) */
     [SEL2GDT(PER_CPU_SELECTOR)] =     { 0x0000910000000000 },
 };
+#endif
 
 /*
  * Used by each CPU as it starts up, to enter C with a suitable %cs.
diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index 275ce7661d..5a3786d399 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -968,7 +968,8 @@ static void cpu_smpboot_free(unsigned int cpu, bool remove)
             free_domheap_page(mfn_to_page(mfn));
     }
 
-    FREE_XENHEAP_PAGE(per_cpu(compat_gdt, cpu));
+    if ( IS_ENABLED(CONFIG_PV32) )
+        FREE_XENHEAP_PAGE(per_cpu(compat_gdt, cpu));
 
     if ( remove )
     {
@@ -1010,6 +1011,7 @@ static int cpu_smpboot_alloc(unsigned int cpu)
     BUILD_BUG_ON(NR_CPUS > 0x10000);
     gdt[PER_CPU_GDT_ENTRY - FIRST_RESERVED_GDT_ENTRY].a = cpu;
 
+#ifdef CONFIG_PV32
     per_cpu(compat_gdt, cpu) = gdt = alloc_xenheap_pages(0, memflags);
     if ( gdt == NULL )
         goto out;
@@ -1017,6 +1019,7 @@ static int cpu_smpboot_alloc(unsigned int cpu)
         l1e_from_pfn(virt_to_mfn(gdt), __PAGE_HYPERVISOR_RW);
     memcpy(gdt, boot_compat_gdt, NR_RESERVED_GDT_PAGES * PAGE_SIZE);
     gdt[PER_CPU_GDT_ENTRY - FIRST_RESERVED_GDT_ENTRY].a = cpu;
+#endif
 
     if ( idt_tables[cpu] == NULL )
         idt_tables[cpu] = alloc_xenheap_pages(0, memflags);
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index e838846c6b..0bcf554e93 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -100,8 +100,10 @@ static DEFINE_PER_CPU(unsigned long, last_extable_addr);
 
 DEFINE_PER_CPU_READ_MOSTLY(seg_desc_t *, gdt);
 DEFINE_PER_CPU_READ_MOSTLY(l1_pgentry_t, gdt_l1e);
+#ifdef CONFIG_PV32
 DEFINE_PER_CPU_READ_MOSTLY(seg_desc_t *, compat_gdt);
 DEFINE_PER_CPU_READ_MOSTLY(l1_pgentry_t, compat_gdt_l1e);
+#endif
 
 /* Master table, used by CPU0. */
 idt_entry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE)
@@ -1999,7 +2001,8 @@ void __init init_idt_traps(void)
     idt_tables[0] = idt_table;
 
     this_cpu(gdt) = boot_gdt;
-    this_cpu(compat_gdt) = boot_compat_gdt;
+    if ( IS_ENABLED(CONFIG_PV32) )
+        this_cpu(compat_gdt) = boot_compat_gdt;
 }
 
 extern void (*const autogen_entrypoints[X86_NR_VECTORS])(void);
@@ -2030,8 +2033,9 @@ void __init trap_init(void)
     /* Cache {,compat_}gdt_l1e now that physically relocation is done. */
     this_cpu(gdt_l1e) =
         l1e_from_pfn(virt_to_mfn(boot_gdt), __PAGE_HYPERVISOR_RW);
-    this_cpu(compat_gdt_l1e) =
-        l1e_from_pfn(virt_to_mfn(boot_compat_gdt), __PAGE_HYPERVISOR_RW);
+    if ( IS_ENABLED(CONFIG_PV32) )
+        this_cpu(compat_gdt_l1e) =
+            l1e_from_pfn(virt_to_mfn(boot_compat_gdt), __PAGE_HYPERVISOR_RW);
 
     percpu_traps_init();
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Wed Apr 29 20:22:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 29 Apr 2020 20:22:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jTtE4-0002Iw-Rb; Wed, 29 Apr 2020 20:22:36 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8o+O=6N=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jTtE3-0002Ik-K7
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:35 +0000
X-Inumbo-ID: 29616b3c-8a57-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 29616b3c-8a57-11ea-b9cf-bc764e2007e4;
 Wed, 29 Apr 2020 20:22:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=bsXo66mO/+wlinIyVdY7fZkrRB9tAn8sEpadGE/2CtY=; b=Dtznn2zaUv68YLGsPjF/Wf9HIO
 NlWLiauk5IeO/AXa9zEwOmLG37Bj9hDWJHH7MwtRnj1o3LS0XUQTXlpLLzdbvriCCC1GdA7zKCh7M
 f3jkY6qhULLpfd0UtEksd1ULk0i37UAW8WrjT8WW79SwG//C5EeBXrCTm0/fH5NIEiWk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTtE2-0001vG-SD
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jTtE2-0007oR-RD
 for xen-changelog@lists.xenproject.org; Wed, 29 Apr 2020 20:22:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/boot: Don't enable EFER.SCE for !CONFIG_PV builds
Message-Id: <E1jTtE2-0007oR-RD@xenbits.xenproject.org>
Date: Wed, 29 Apr 2020 20:22:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8065e1b41688592778de76c731c62f34e71f3129
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 20 14:36:53 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 21:13:00 2020 +0100

    x86/boot: Don't enable EFER.SCE for !CONFIG_PV builds
    
    This will cause all SYSCALL/SYSRET instructions to suffer #UD rather than
    following the MSR_{L,C}STAR pointers, allowing us to drop the star_enter()
    panic helper, allowing us to clean up the IST stacks in a subsequent patch.
    
    Drop the now-dead conditional SYSENTER logic in the middle of
    subarch_percpu_traps_init().
    
    In addition, vmx_restore_host_msrs() need not restore any host
    state.  (Regarding the asymmetric changes, VT-x automatically restores
    SYSENTER state on vmexit, and SVM restores both SYSCALL/SYSENTER state with
    the VMSAVE/VMLOAD instructions.)
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
---
 xen/arch/x86/boot/trampoline.S |  4 ++--
 xen/arch/x86/efi/efi-boot.h    |  4 +---
 xen/arch/x86/hvm/vmx/vmx.c     |  4 ++++
 xen/arch/x86/x86_64/traps.c    | 19 ++++++-------------
 4 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 662e6bdd3c..cdecf949b4 100644
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -145,9 +145,9 @@ gdt_48:
 GLOBAL(trampoline_misc_enable_off)
         .quad   0
 
-/* EFER OR-mask for boot paths.  This gets adjusted with NX when available. */
+/* EFER OR-mask for boot paths.  SCE conditional on PV support, NX added when available. */
 GLOBAL(trampoline_efer)
-        .long   EFER_LME | EFER_SCE
+        .long   EFER_LME | (EFER_SCE * IS_ENABLED(CONFIG_PV))
 
 GLOBAL(trampoline_xen_phys_start)
         .long   0
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 176df20c9c..7188c9a551 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -238,9 +238,7 @@ static void __init noreturn efi_arch_post_exit_boot(void)
     /* Set system registers and transfer control. */
     asm volatile("pushq $0\n\tpopfq");
     rdmsrl(MSR_EFER, efer);
-    efer |= EFER_SCE;
-    if ( cpu_has_nx )
-        efer |= EFER_NX;
+    efer |= trampoline_efer;
     wrmsrl(MSR_EFER, efer);
     wrmsrl(MSR_IA32_CR_PAT, XEN_MSR_PAT);
     write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index b4cf2eb4c1..6efa80e422 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -496,6 +496,10 @@ static void vmx_vcpu_destroy(struct vcpu *v)
  */
 static void vmx_restore_host_msrs(void)
 {
+    /* No PV guests?  No need to restore host SYSCALL infrastructure. */
+    if ( !IS_ENABLED(CONFIG_PV) )
+        return;
+
     /* Relies on the SYSCALL trampoline being at the start of the stubs. */
     wrmsrl(MSR_STAR,         XEN_MSR_STAR);
     wrmsrl(MSR_LSTAR,        this_cpu(stubs.addr));
diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c
index c3d4faea6b..93af0c5e87 100644
--- a/xen/arch/x86/x86_64/traps.c
+++ b/xen/arch/x86/x86_64/traps.c
@@ -299,17 +299,8 @@ static unsigned int write_stub_trampoline(
 
 DEFINE_PER_CPU(struct stubs, stubs);
 
-#ifdef CONFIG_PV
 void lstar_enter(void);
 void cstar_enter(void);
-#else
-static void __cold star_enter(void)
-{
-    panic("lstar/cstar\n");
-}
-#define lstar_enter star_enter
-#define cstar_enter star_enter
-#endif /* CONFIG_PV */
 
 void subarch_percpu_traps_init(void)
 {
@@ -321,6 +312,10 @@ void subarch_percpu_traps_init(void)
     /* IST_MAX IST pages + at least 1 guard page + primary stack. */
     BUILD_BUG_ON((IST_MAX + 1) * PAGE_SIZE + PRIMARY_STACK_SIZE > STACK_SIZE);
 
+    /* No PV guests?  No need to set up SYSCALL/SYSENTER infrastructure. */
+    if ( !IS_ENABLED(CONFIG_PV) )
+        return;
+
     stub_page = map_domain_page(_mfn(this_cpu(stubs.mfn)));
 
     /*
@@ -338,10 +333,8 @@ void subarch_percpu_traps_init(void)
     {
         /* SYSENTER entry. */
         wrmsrl(MSR_IA32_SYSENTER_ESP, stack_bottom);
-        wrmsrl(MSR_IA32_SYSENTER_EIP,
-               IS_ENABLED(CONFIG_PV) ? (unsigned long)sysenter_entry : 0);
-        wrmsr(MSR_IA32_SYSENTER_CS,
-              IS_ENABLED(CONFIG_PV) ? __HYPERVISOR_CS : 0, 0);
+        wrmsrl(MSR_IA32_SYSENTER_EIP, (unsigned long)sysenter_entry);
+        wrmsr(MSR_IA32_SYSENTER_CS, __HYPERVISOR_CS, 0);
     }
 
     /* Trampoline for SYSCALL entry from compatibility mode. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 08:55:12 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 08:55:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU4yJ-0006TO-Kt; Thu, 30 Apr 2020 08:55:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU4yI-0006TJ-DO
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:06 +0000
X-Inumbo-ID: 48ebb89a-8ac0-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 48ebb89a-8ac0-11ea-9887-bc764e2007e4;
 Thu, 30 Apr 2020 08:55:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ySbrb2WQIhAzI9qsH/tc/3stQH6kHqpGiHP/E6uZmTA=; b=QzCfEYHSTV6jbzn21BtoMAvfNT
 +tymfBqFoUzguaBJcFGrcylxF6SOJiu37UaVSgGJ4vwXZ6b0HTJN/4YRbbtTCWCWqoXoQpR1RSzKy
 sxe8JtNyIzZtEQGcXkzYfRcyq9iDrU785RH2R8HAuMVc8k6zjl9TBYPnxFKHt6d+R9RE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yG-0006td-Sn
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yG-0000cQ-Rd
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86: drop unnecessary page table walking in compat r/o
 M2P handling
Message-Id: <E1jU4yG-0000cQ-Rd@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 08:55:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 1df23a5ba85ca0266ebba25c7663465a8923d584
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 30 10:28:27 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 30 10:28:27 2020 +0200

    x86: drop unnecessary page table walking in compat r/o M2P handling
    
    We have a global variable where the necessary L2 table is recorded; no
    need to inspect L4 and L3 tables (and this way a few less places will
    eventually need adjustment when we want to support 5-level page tables).
    Also avoid setting up the L3 entry, as the address range never gets used
    anyway (it'll be dropped altogether in a subsequent patch).
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/x86_64/mm.c | 25 ++-----------------------
 1 file changed, 2 insertions(+), 23 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 747941d48e..39c01cf907 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -218,9 +218,7 @@ static void destroy_compat_m2p_mapping(struct mem_hotadd_info *info)
 {
     unsigned long i, va, rwva, pt_pfn;
     unsigned long smap = info->spfn, emap = info->spfn;
-
-    l3_pgentry_t *l3_ro_mpt;
-    l2_pgentry_t *l2_ro_mpt;
+    l2_pgentry_t *l2_ro_mpt = compat_idle_pg_table_l2;
 
     if ( smap > ((RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) >> 2) )
         return;
@@ -228,12 +226,6 @@ static void destroy_compat_m2p_mapping(struct mem_hotadd_info *info)
     if ( emap > ((RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) >> 2) )
         emap = (RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) >> 2;
 
-    l3_ro_mpt = l4e_to_l3e(idle_pg_table[l4_table_offset(HIRO_COMPAT_MPT_VIRT_START)]);
-
-    ASSERT(l3e_get_flags(l3_ro_mpt[l3_table_offset(HIRO_COMPAT_MPT_VIRT_START)]) & _PAGE_PRESENT);
-
-    l2_ro_mpt = l3e_to_l2e(l3_ro_mpt[l3_table_offset(HIRO_COMPAT_MPT_VIRT_START)]);
-
     for ( i = smap; i < emap; )
     {
         va = HIRO_COMPAT_MPT_VIRT_START +
@@ -327,7 +319,6 @@ static int setup_compat_m2p_table(struct mem_hotadd_info *info)
     unsigned long i, va, smap, emap, rwva, epfn = info->epfn;
     mfn_t mfn;
     unsigned int n;
-    l3_pgentry_t *l3_ro_mpt = NULL;
     l2_pgentry_t *l2_ro_mpt = NULL;
     int err = 0;
 
@@ -346,13 +337,7 @@ static int setup_compat_m2p_table(struct mem_hotadd_info *info)
     emap = ( (epfn + ((1UL << (L2_PAGETABLE_SHIFT - 2)) - 1 )) &
                 ~((1UL << (L2_PAGETABLE_SHIFT - 2)) - 1) );
 
-    va = HIRO_COMPAT_MPT_VIRT_START +
-         smap * sizeof(*compat_machine_to_phys_mapping);
-    l3_ro_mpt = l4e_to_l3e(idle_pg_table[l4_table_offset(va)]);
-
-    ASSERT(l3e_get_flags(l3_ro_mpt[l3_table_offset(va)]) & _PAGE_PRESENT);
-
-    l2_ro_mpt = l3e_to_l2e(l3_ro_mpt[l3_table_offset(va)]);
+    l2_ro_mpt = compat_idle_pg_table_l2;
 
 #define MFN(x) (((x) << L2_PAGETABLE_SHIFT) / sizeof(unsigned int))
 #define CNT ((sizeof(*frame_table) & -sizeof(*frame_table)) / \
@@ -631,16 +616,10 @@ void __init paging_init(void)
 #undef MFN
 
     /* Create user-accessible L2 directory to map the MPT for compat guests. */
-    BUILD_BUG_ON(l4_table_offset(RDWR_MPT_VIRT_START) !=
-                 l4_table_offset(HIRO_COMPAT_MPT_VIRT_START));
-    l3_ro_mpt = l4e_to_l3e(idle_pg_table[l4_table_offset(
-        HIRO_COMPAT_MPT_VIRT_START)]);
     if ( (l2_ro_mpt = alloc_xen_pagetable()) == NULL )
         goto nomem;
     compat_idle_pg_table_l2 = l2_ro_mpt;
     clear_page(l2_ro_mpt);
-    l3e_write(&l3_ro_mpt[l3_table_offset(HIRO_COMPAT_MPT_VIRT_START)],
-              l3e_from_paddr(__pa(l2_ro_mpt), __PAGE_HYPERVISOR_RO));
     l2_ro_mpt += l2_table_offset(HIRO_COMPAT_MPT_VIRT_START);
     /* Allocate and map the compatibility mode machine-to-phys table. */
     mpt_size = (mpt_size >> 1) + (1UL << (L2_PAGETABLE_SHIFT - 1));
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 08:55:16 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 08:55:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU4yS-0006Tu-MS; Thu, 30 Apr 2020 08:55:16 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU4yR-0006Tn-Ie
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:15 +0000
X-Inumbo-ID: 4eeec746-8ac0-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 4eeec746-8ac0-11ea-9887-bc764e2007e4;
 Thu, 30 Apr 2020 08:55:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XA7pKKfr2zgevtXsbevVAKQfQryr+siuShxOcUeeWcU=; b=Dtl5EkOAzdhn9EkwjRpqudIkhx
 Kn07dvY591zxgYKRk3Rl0DQxcGe1xIkg1cCj1NrfQ1ig6fUXRKvpSx8ptLfpCLwc6DySXdjru1AGu
 nC/+RBnDDXZGj6s5EcQE3n4cI27EtPL1e8xxlOylBOJNc+iaJntiENfZ5soROnDOZpYY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yQ-0006tj-Vf
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yQ-0000dA-UU
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/msr: Fix XEN_MSR_PAT to build with older binutils
Message-Id: <E1jU4yQ-0000dA-UU@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 08:55:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4f1b2e581744d5f78e4c809faf0a3167644afb82
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Thu Apr 30 10:34:56 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 30 10:34:56 2020 +0200

    x86/msr: Fix XEN_MSR_PAT to build with older binutils
    
    Older binutils complains with:
      trampoline.S:95: Error: junk `ul&0xffffffff' after expression
    
    Use an assembly-safe constant.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/include/asm-x86/processor.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/include/asm-x86/processor.h b/xen/include/asm-x86/processor.h
index ea6e5497f4..8f6f5a97dd 100644
--- a/xen/include/asm-x86/processor.h
+++ b/xen/include/asm-x86/processor.h
@@ -99,7 +99,7 @@
  * Host IA32_CR_PAT value to cover all memory types.  This is not the default
  * MSR_PAT value, and is an ABI with PV guests.
  */
-#define XEN_MSR_PAT 0x050100070406ul
+#define XEN_MSR_PAT _AC(0x050100070406, ULL)
 
 #ifndef __ASSEMBLY__
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 08:55:27 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 08:55:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU4yd-0006VB-O8; Thu, 30 Apr 2020 08:55:27 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU4yc-0006V0-8X
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:26 +0000
X-Inumbo-ID: 551fe5fa-8ac0-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id 551fe5fa-8ac0-11ea-b9cf-bc764e2007e4;
 Thu, 30 Apr 2020 08:55:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=ltYqoQc7hki/msPA5iTydHkxCRDS8fpUxdpjtYgLZBE=; b=tggxPDuSojoQ75M/VnbkRSBenH
 ApAmxVCF6+Q6CdWMYgFunr6+kTWYjc2ntgHxCID4G5kzzPkkwBcrtOUTZDFgpP+ZQakMDXibMTNDH
 H3qLFga+Eh0TYVbgIesd29IieiaOJDngA7aQf5ZOv87ef2kDtHW+N5J/7YFd++y84IU0=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yb-0006tw-By
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:25 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yb-0000dx-8U
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:25 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86: drop high compat r/o M2P table address range
Message-Id: <E1jU4yb-0000dx-8U@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 08:55:25 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 5af040ef8b572ffccb7e3530e617d4259a9ff724
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 30 10:38:07 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 30 10:38:07 2020 +0200

    x86: drop high compat r/o M2P table address range
    
    Now that we don't properly hook things up into the page tables anymore
    we also don't need to set aside an address range. Drop it, using
    compat_idle_pg_table_l2[] simply (explicitly) from slot 0.
    
    While doing the re-arrangement, which is accompanied by the dropping or
    replacing of some local variables, restrict the scopes of some further
    ones at the same time.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Wei Liu <wl@xen.org>
---
 xen/arch/x86/mm.c            |  3 +--
 xen/arch/x86/x86_64/mm.c     | 42 +++++++++++++++++-------------------------
 xen/include/asm-x86/config.h |  5 +----
 3 files changed, 19 insertions(+), 31 deletions(-)

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index ab9cd00225..355c50ff91 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -1423,8 +1423,7 @@ static bool pae_xen_mappings_check(const struct domain *d,
 void init_xen_pae_l2_slots(l2_pgentry_t *l2t, const struct domain *d)
 {
     memcpy(&l2t[COMPAT_L2_PAGETABLE_FIRST_XEN_SLOT(d)],
-           &compat_idle_pg_table_l2[
-               l2_table_offset(HIRO_COMPAT_MPT_VIRT_START)],
+           compat_idle_pg_table_l2,
            COMPAT_L2_PAGETABLE_XEN_SLOTS(d) * sizeof(*l2t));
 }
 
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index 39c01cf907..102079a801 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -216,9 +216,7 @@ static int share_hotadd_m2p_table(struct mem_hotadd_info *info)
 
 static void destroy_compat_m2p_mapping(struct mem_hotadd_info *info)
 {
-    unsigned long i, va, rwva, pt_pfn;
-    unsigned long smap = info->spfn, emap = info->spfn;
-    l2_pgentry_t *l2_ro_mpt = compat_idle_pg_table_l2;
+    unsigned long i, smap = info->spfn, emap = info->spfn;
 
     if ( smap > ((RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) >> 2) )
         return;
@@ -228,18 +226,19 @@ static void destroy_compat_m2p_mapping(struct mem_hotadd_info *info)
 
     for ( i = smap; i < emap; )
     {
-        va = HIRO_COMPAT_MPT_VIRT_START +
-              i * sizeof(*compat_machine_to_phys_mapping);
-        rwva = RDWR_COMPAT_MPT_VIRT_START +
-             i * sizeof(*compat_machine_to_phys_mapping);
-        if ( l2e_get_flags(l2_ro_mpt[l2_table_offset(va)]) & _PAGE_PRESENT )
+        unsigned int off = i * sizeof(*compat_machine_to_phys_mapping);
+        l2_pgentry_t *pl2e = compat_idle_pg_table_l2 + l2_table_offset(off);
+
+        if ( l2e_get_flags(*pl2e) & _PAGE_PRESENT )
         {
-            pt_pfn = l2e_get_pfn(l2_ro_mpt[l2_table_offset(va)]);
+            unsigned long pt_pfn = l2e_get_pfn(*pl2e);
+
             if ( hotadd_mem_valid(pt_pfn, info) )
             {
-                destroy_xen_mappings(rwva, rwva +
-                        (1UL << L2_PAGETABLE_SHIFT));
-                l2e_write(&l2_ro_mpt[l2_table_offset(va)], l2e_empty());
+                unsigned long rwva = RDWR_COMPAT_MPT_VIRT_START + off;
+
+                destroy_xen_mappings(rwva, rwva + (1UL << L2_PAGETABLE_SHIFT));
+                l2e_write(pl2e, l2e_empty());
             }
         }
 
@@ -316,10 +315,9 @@ static void destroy_m2p_mapping(struct mem_hotadd_info *info)
  */
 static int setup_compat_m2p_table(struct mem_hotadd_info *info)
 {
-    unsigned long i, va, smap, emap, rwva, epfn = info->epfn;
+    unsigned long i, smap, emap, epfn = info->epfn;
     mfn_t mfn;
     unsigned int n;
-    l2_pgentry_t *l2_ro_mpt = NULL;
     int err = 0;
 
     smap = info->spfn & (~((1UL << (L2_PAGETABLE_SHIFT - 2)) -1));
@@ -337,8 +335,6 @@ static int setup_compat_m2p_table(struct mem_hotadd_info *info)
     emap = ( (epfn + ((1UL << (L2_PAGETABLE_SHIFT - 2)) - 1 )) &
                 ~((1UL << (L2_PAGETABLE_SHIFT - 2)) - 1) );
 
-    l2_ro_mpt = compat_idle_pg_table_l2;
-
 #define MFN(x) (((x) << L2_PAGETABLE_SHIFT) / sizeof(unsigned int))
 #define CNT ((sizeof(*frame_table) & -sizeof(*frame_table)) / \
              sizeof(*compat_machine_to_phys_mapping))
@@ -347,13 +343,11 @@ static int setup_compat_m2p_table(struct mem_hotadd_info *info)
 
     for ( i = smap; i < emap; i += (1UL << (L2_PAGETABLE_SHIFT - 2)) )
     {
-        va = HIRO_COMPAT_MPT_VIRT_START +
-              i * sizeof(*compat_machine_to_phys_mapping);
-
-        rwva = RDWR_COMPAT_MPT_VIRT_START +
-                i * sizeof(*compat_machine_to_phys_mapping);
+        unsigned int off = i * sizeof(*compat_machine_to_phys_mapping);
+        l2_pgentry_t *pl2e = compat_idle_pg_table_l2 + l2_table_offset(off);
+        unsigned long rwva = RDWR_COMPAT_MPT_VIRT_START + off;
 
-        if (l2e_get_flags(l2_ro_mpt[l2_table_offset(va)]) & _PAGE_PRESENT)
+        if ( l2e_get_flags(*pl2e) & _PAGE_PRESENT )
             continue;
 
         for ( n = 0; n < CNT; ++n)
@@ -370,8 +364,7 @@ static int setup_compat_m2p_table(struct mem_hotadd_info *info)
         /* Fill with INVALID_M2P_ENTRY. */
         memset((void *)rwva, 0xFF, 1UL << L2_PAGETABLE_SHIFT);
         /* NB. Cannot be GLOBAL as the ptes get copied into per-VM space. */
-        l2e_write(&l2_ro_mpt[l2_table_offset(va)],
-                  l2e_from_mfn(mfn, _PAGE_PSE|_PAGE_PRESENT));
+        l2e_write(pl2e, l2e_from_mfn(mfn, _PAGE_PSE|_PAGE_PRESENT));
     }
 #undef CNT
 #undef MFN
@@ -620,7 +613,6 @@ void __init paging_init(void)
         goto nomem;
     compat_idle_pg_table_l2 = l2_ro_mpt;
     clear_page(l2_ro_mpt);
-    l2_ro_mpt += l2_table_offset(HIRO_COMPAT_MPT_VIRT_START);
     /* Allocate and map the compatibility mode machine-to-phys table. */
     mpt_size = (mpt_size >> 1) + (1UL << (L2_PAGETABLE_SHIFT - 1));
     if ( mpt_size > RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START )
diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h
index 2d6393e64e..266d281718 100644
--- a/xen/include/asm-x86/config.h
+++ b/xen/include/asm-x86/config.h
@@ -215,11 +215,8 @@ extern unsigned char boot_edid_info[128];
 /* Slot 261: compatibility machine-to-phys conversion table (1GB). */
 #define RDWR_COMPAT_MPT_VIRT_START VMAP_VIRT_END
 #define RDWR_COMPAT_MPT_VIRT_END (RDWR_COMPAT_MPT_VIRT_START + GB(1))
-/* Slot 261: high read-only compat machine-to-phys conversion table (1GB). */
-#define HIRO_COMPAT_MPT_VIRT_START RDWR_COMPAT_MPT_VIRT_END
-#define HIRO_COMPAT_MPT_VIRT_END (HIRO_COMPAT_MPT_VIRT_START + GB(1))
 /* Slot 261: xen text, static data, bss, per-cpu stubs and executable fixmap (1GB). */
-#define XEN_VIRT_START          (HIRO_COMPAT_MPT_VIRT_END)
+#define XEN_VIRT_START          RDWR_COMPAT_MPT_VIRT_END
 #define XEN_VIRT_END            (XEN_VIRT_START + GB(1))
 
 #ifndef CONFIG_BIGMEM
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 08:55:37 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 08:55:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU4yn-0006WO-Pi; Thu, 30 Apr 2020 08:55:37 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU4ym-0006WA-8J
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:36 +0000
X-Inumbo-ID: 5b2d7bf6-8ac0-11ea-9a10-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 5b2d7bf6-8ac0-11ea-9a10-12813bfff9fa;
 Thu, 30 Apr 2020 08:55:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=mBReBfrtUXRT4pIXsXX0cxVFpDZdEwS7/iKGlbi32Kg=; b=FPoQLfBScnXSovVVpK0P50lbEJ
 Ym10WSvMzmuyH0r906AUkuFx425UH2E1KQUnd45B03WPmG1OgUcOxyMWFeAZjFDOupB6jgxTtextJ
 cBkCjmSCf7kuPjLm3EcW0eNBlZLw1eIe+79EJ8pxpg3LORqKloQveLyOst3HPPwZ3Jos=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yl-0006u8-IK
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:35 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yl-0000eg-HC
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:35 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/pass-through: avoid double IRQ unbind during domain
 cleanup
Message-Id: <E1jU4yl-0000eg-HC@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 08:55:35 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 5b58dad089880127674d460494d1a9d68109b3d7
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 30 10:40:59 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 30 10:40:59 2020 +0200

    x86/pass-through: avoid double IRQ unbind during domain cleanup
    
    XEN_DOMCTL_destroydomain creates a continuation if domain_kill -ERESTARTs.
    In that scenario, it is possible to receive multiple _pirq_guest_unbind
    calls for the same pirq from domain_kill, if the pirq has not yet been
    removed from the domain's pirq_tree, as:
      domain_kill()
        -> domain_relinquish_resources()
          -> pci_release_devices()
            -> pci_clean_dpci_irq()
              -> pirq_guest_unbind()
                -> __pirq_guest_unbind()
    
    Avoid recurring invocations of pirq_guest_unbind() by removing the pIRQ
    from the tree being iterated after the first call there. In case such a
    removed entry still has a softirq outstanding, record it and re-check
    upon re-invocation.
    
    Note that pirq_cleanup_check() gets relaxed beyond what's strictly
    needed here, to avoid introducing an asymmetry there between HVM and PV
    guests.
    
    Reported-by: Varad Gautam <vrd@amazon.de>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Varad Gautam <vrd@amazon.de>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/irq.c            |  2 +-
 xen/drivers/passthrough/pci.c | 21 +++++++++++++++++++--
 xen/include/asm-x86/hvm/irq.h |  2 ++
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
index cc2eb8e925..a69937c840 100644
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -1323,7 +1323,7 @@ void (pirq_cleanup_check)(struct pirq *pirq, struct domain *d)
     }
 
     if ( radix_tree_delete(&d->pirq_tree, pirq->pirq) != pirq )
-        BUG();
+        BUG_ON(!d->is_dying);
 }
 
 /* Flush all ready EOIs from the top of this CPU's pending-EOI stack. */
diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 15114e7cbc..5846978890 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -873,7 +873,14 @@ static int pci_clean_dpci_irq(struct domain *d,
         xfree(digl);
     }
 
-    return pt_pirq_softirq_active(pirq_dpci) ? -ERESTART : 0;
+    radix_tree_delete(&d->pirq_tree, dpci_pirq(pirq_dpci)->pirq);
+
+    if ( !pt_pirq_softirq_active(pirq_dpci) )
+        return 0;
+
+    domain_get_irq_dpci(d)->pending_pirq_dpci = pirq_dpci;
+
+    return -ERESTART;
 }
 
 static int pci_clean_dpci_irqs(struct domain *d)
@@ -890,8 +897,18 @@ static int pci_clean_dpci_irqs(struct domain *d)
     hvm_irq_dpci = domain_get_irq_dpci(d);
     if ( hvm_irq_dpci != NULL )
     {
-        int ret = pt_pirq_iterate(d, pci_clean_dpci_irq, NULL);
+        int ret = 0;
+
+        if ( hvm_irq_dpci->pending_pirq_dpci )
+        {
+            if ( pt_pirq_softirq_active(hvm_irq_dpci->pending_pirq_dpci) )
+                 ret = -ERESTART;
+            else
+                 hvm_irq_dpci->pending_pirq_dpci = NULL;
+        }
 
+        if ( !ret )
+            ret = pt_pirq_iterate(d, pci_clean_dpci_irq, NULL);
         if ( ret )
         {
             spin_unlock(&d->event_lock);
diff --git a/xen/include/asm-x86/hvm/irq.h b/xen/include/asm-x86/hvm/irq.h
index 5b7e90c179..d306cfeade 100644
--- a/xen/include/asm-x86/hvm/irq.h
+++ b/xen/include/asm-x86/hvm/irq.h
@@ -158,6 +158,8 @@ struct hvm_irq_dpci {
     DECLARE_BITMAP(isairq_map, NR_ISAIRQS);
     /* Record of mapped Links */
     uint8_t link_cnt[NR_LINK];
+    /* Clean up: Entry with a softirq invocation pending / in progress. */
+    struct hvm_pirq_dpci *pending_pirq_dpci;
 };
 
 /* Machine IRQ to guest device/intx mapping. */
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 08:55:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 08:55:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU4yx-0006Xk-Sm; Thu, 30 Apr 2020 08:55:47 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU4yw-0006XW-3l
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:46 +0000
X-Inumbo-ID: 60fa6f63-8ac0-11ea-9a10-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 60fa6f63-8ac0-11ea-9a10-12813bfff9fa;
 Thu, 30 Apr 2020 08:55:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=w9I4sCfCgdDqNH+xSBo/mKCecP1vgaOrvc8NtxQPI28=; b=n/L9XyT4aqE+6vK95vOx/ZZ8WZ
 wr9KCUjRsaEpHP9fvUIF/0lsh35YE3K0TlSrkzOtHQ2CC2VsJ37+PN6Y5lv2ytlmyWOUfHMONVazN
 Wn1sxHejGZZ9VaMvs5d5gNFQtMSufQFeiYIsi8nCAkNLNk6F6zHxL3WfPwkY5VDB7z9Y=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yv-0006uH-N4
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:45 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4yv-0000fR-Lc
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:45 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] mem_sharing: map shared_info page to same gfn during
 fork
Message-Id: <E1jU4yv-0000fR-Lc@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 08:55:45 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 1a0000ac775faf8ef9efedd6068814d245f1dd8a
Author:     Tamas K Lengyel <tamas.lengyel@intel.com>
AuthorDate: Thu Apr 30 10:43:52 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 30 10:43:52 2020 +0200

    mem_sharing: map shared_info page to same gfn during fork
    
    During a VM fork we copy the shared_info page; however, we also need to ensure
    that the page is mapped into the same GFN in the fork as its in the parent.
    
    Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/mm/mem_sharing.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c
index 344a5bfb3d..7271e5c90b 100644
--- a/xen/arch/x86/mm/mem_sharing.c
+++ b/xen/arch/x86/mm/mem_sharing.c
@@ -1656,6 +1656,7 @@ static void copy_tsc(struct domain *cd, struct domain *d)
 static int copy_special_pages(struct domain *cd, struct domain *d)
 {
     mfn_t new_mfn, old_mfn;
+    gfn_t new_gfn, old_gfn;
     struct p2m_domain *p2m = p2m_get_hostp2m(cd);
     static const unsigned int params[] =
     {
@@ -1701,6 +1702,30 @@ static int copy_special_pages(struct domain *cd, struct domain *d)
     new_mfn = _mfn(virt_to_mfn(cd->shared_info));
     copy_domain_page(new_mfn, old_mfn);
 
+    old_gfn = _gfn(get_gpfn_from_mfn(mfn_x(old_mfn)));
+    new_gfn = _gfn(get_gpfn_from_mfn(mfn_x(new_mfn)));
+
+    if ( !gfn_eq(old_gfn, new_gfn) )
+    {
+        if ( !gfn_eq(new_gfn, INVALID_GFN) )
+        {
+            /* if shared_info is mapped to a different gfn just remove it */
+            rc = p2m->set_entry(p2m, new_gfn, INVALID_MFN, PAGE_ORDER_4K,
+                                p2m_invalid, p2m->default_access, -1);
+            if ( rc )
+                return rc;
+        }
+
+        if ( !gfn_eq(old_gfn, INVALID_GFN) )
+        {
+            /* now map it to the same gfn as the parent */
+            rc = p2m->set_entry(p2m, old_gfn, new_mfn, PAGE_ORDER_4K,
+                                p2m_ram_rw, p2m->default_access, -1);
+            if ( rc )
+                return rc;
+        }
+    }
+
     return 0;
 }
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 08:55:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 08:55:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU4z7-0006Yi-UM; Thu, 30 Apr 2020 08:55:57 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU4z6-0006YY-6P
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:56 +0000
X-Inumbo-ID: 673c4c06-8ac0-11ea-9a10-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 673c4c06-8ac0-11ea-9a10-12813bfff9fa;
 Thu, 30 Apr 2020 08:55:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=/Lubp6GoOhWl7Mw0Nt8/PHeUTs2Gv6ILzGxCKeY/oxY=; b=W3s5CHbl5COA/T/ld/I3CsTWOw
 lyfzNUnHHhty4iQ1p26HQJRcXKCZEjXlhV5U7U2mNdBjU4xls+niQSYZ10bwz7eGLXZ32pRvvlCNi
 wJCEHOhib/lPaklzdx5Sgb2+FUH4xygOtXUpuavchGBbBoeRMRzWBYFpqa2bZ2D/TqIE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4z5-0006uU-Pj
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:55 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4z5-0000fx-On
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:55:55 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/pv: map and unmap page tables in
 mark_pv_pt_pages_rdonly
Message-Id: <E1jU4z5-0000fx-On@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 08:55:55 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit d0234b2055b86919514381624d6ed6ec0686f241
Author:     Wei Liu <wei.liu2@citrix.com>
AuthorDate: Thu Apr 30 10:44:34 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 30 10:44:34 2020 +0200

    x86/pv: map and unmap page tables in mark_pv_pt_pages_rdonly
    
    Also, clean up the initialisation of plXe.
    
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/pv/dom0_build.c | 32 +++++++++++++++++---------------
 1 file changed, 17 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index abfbe5f436..3522eb0114 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -49,18 +49,11 @@ static __init void mark_pv_pt_pages_rdonly(struct domain *d,
 {
     unsigned long count;
     struct page_info *page;
-    l4_pgentry_t *pl4e;
-    l3_pgentry_t *pl3e;
-    l2_pgentry_t *pl2e;
-    l1_pgentry_t *pl1e;
-
-    pl4e = l4start + l4_table_offset(vpt_start);
-    pl3e = l4e_to_l3e(*pl4e);
-    pl3e += l3_table_offset(vpt_start);
-    pl2e = l3e_to_l2e(*pl3e);
-    pl2e += l2_table_offset(vpt_start);
-    pl1e = l2e_to_l1e(*pl2e);
-    pl1e += l1_table_offset(vpt_start);
+    l4_pgentry_t *pl4e = l4start + l4_table_offset(vpt_start);
+    l3_pgentry_t *pl3e = map_l3t_from_l4e(*pl4e) + l3_table_offset(vpt_start);
+    l2_pgentry_t *pl2e = map_l2t_from_l3e(*pl3e) + l2_table_offset(vpt_start);
+    l1_pgentry_t *pl1e = map_l1t_from_l2e(*pl2e) + l1_table_offset(vpt_start);
+
     for ( count = 0; count < nr_pt_pages; count++ )
     {
         l1e_remove_flags(*pl1e, _PAGE_RW);
@@ -85,12 +78,21 @@ static __init void mark_pv_pt_pages_rdonly(struct domain *d,
             if ( !((unsigned long)++pl2e & (PAGE_SIZE - 1)) )
             {
                 if ( !((unsigned long)++pl3e & (PAGE_SIZE - 1)) )
-                    pl3e = l4e_to_l3e(*++pl4e);
-                pl2e = l3e_to_l2e(*pl3e);
+                {
+                    /* Need to unmap the page before the increment. */
+                    unmap_domain_page(pl3e - 1);
+                    pl3e = map_l3t_from_l4e(*++pl4e);
+                }
+                unmap_domain_page(pl2e - 1);
+                pl2e = map_l2t_from_l3e(*pl3e);
             }
-            pl1e = l2e_to_l1e(*pl2e);
+            unmap_domain_page(pl1e - 1);
+            pl1e = map_l1t_from_l2e(*pl2e);
         }
     }
+    unmap_domain_page(pl1e);
+    unmap_domain_page(pl2e);
+    unmap_domain_page(pl3e);
 }
 
 static __init void setup_pv_physmap(struct domain *d, unsigned long pgtbl_pfn,
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 08:56:08 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 08:56:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU4zH-0006aQ-Vw; Thu, 30 Apr 2020 08:56:07 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU4zG-0006aF-8u
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:56:06 +0000
X-Inumbo-ID: 6d3f358c-8ac0-11ea-9a10-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id 6d3f358c-8ac0-11ea-9a10-12813bfff9fa;
 Thu, 30 Apr 2020 08:56:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=J2y0PXEl2XeGm1VAjF9gdbZJISDSbC7UZY8z11ZA8fQ=; b=nAQOG2K0+4B0/cEMVwVF0IFKOP
 c8O1VcEzr0OjgjSn65F3ONmcbJTBdnYA6bYMk6/y3k7Zo56FplFk809p7j04CviSKGhK41hSebssF
 O3p83aw6C+nj2X+RwW0/fRbmErCw5yvJhQRtlphZ7gKOSBbBQQTvPVxoJb2mr08E+Pvk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4zF-0006vX-SP
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:56:05 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU4zF-0000gr-RS
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 08:56:05 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen staging] x86/CPUID: correct error indicator for max extended leaf
Message-Id: <E1jU4zF-0000gr-RS@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 08:56:05 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 0135be8bd8cd60090298f02310691b688d95c3a8
Author:     Jan Beulich <jbeulich@suse.com>
AuthorDate: Thu Apr 30 10:45:09 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Thu Apr 30 10:45:09 2020 +0200

    x86/CPUID: correct error indicator for max extended leaf
    
    With the max base leaf using 0, this one should be using the extended
    leaf counterpart thereof, rather than some arbitrary extended leaf.
    
    Fixes: 588a966a572e ("libx86: Introduce x86_cpu_policies_are_compatible()")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 tools/tests/cpu-policy/test-cpu-policy.c | 2 +-
 xen/lib/x86/policy.c                     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-policy/test-cpu-policy.c
index 20ebed923b..fe8cdf6ea9 100644
--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -570,7 +570,7 @@ static void test_is_compatible_failure(void)
         {
             .name = "Host extd.max_leaf out of range",
             .guest_cpuid.extd.max_leaf = 1,
-            .e = { 0x80000008, -1, -1 },
+            .e = { 0x80000000, -1, -1 },
         },
         {
             .name = "Host no CPUID faulting, Guest wanted",
diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
index b156a304f4..4beca8767a 100644
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -19,7 +19,7 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
         FAIL_CPUID(0, NA);
 
     if ( guest->cpuid->extd.max_leaf > host->cpuid->extd.max_leaf )
-        FAIL_CPUID(0x80000008, NA);
+        FAIL_CPUID(0x80000000, NA);
 
     /* TODO: Audit more CPUID data. */
 
--
generated by git-patchbot for /home/xen/git/xen.git#staging


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 09:55:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 09:55:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU5uN-00038i-3k; Thu, 30 Apr 2020 09:55:07 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU5uL-00038C-Vy
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:06 +0000
X-Inumbo-ID: aa3453e8-8ac8-11ea-9887-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id aa3453e8-8ac8-11ea-9887-bc764e2007e4;
 Thu, 30 Apr 2020 09:55:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=aAg8HzQzV9ls0h73P6yTXhxGANLYnX75D0J9BTV6MGc=; b=JrrrRvhNzP/wIACeWYGuHAQzfn
 SA9SPpxvrhd6QMHxmH7fDOsp1iBMFWLYdAA1VYQKK2GyyjKiz/ZYAbz5vTh7BOUw+XLOD0opU7OEh
 rQZ7SL7UghQmjaVNW7MlroM70RZKPEIUDZQVMefL3SQduI/7QtQLjqAByc1enolgi2bI=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5uK-00080M-2s
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:04 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5uK-0005nI-0D
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:04 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/tlb: introduce a flush HVM ASIDs flag
Message-Id: <E1jU5uK-0005nI-0D@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 09:55:04 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3174835ba825427ab49177ef710657a226fdab01
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Wed Apr 29 09:04:40 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 29 09:04:40 2020 +0200

    x86/tlb: introduce a flush HVM ASIDs flag
    
    Introduce a specific flag to request a HVM guest linear TLB flush,
    which is an ASID/VPID tickle that forces a guest linear to guest
    physical TLB flush for all HVM guests.
    
    This was previously unconditionally done in each pre_flush call, but
    that's not required: HVM guests not using shadow don't require linear
    TLB flushes as Xen doesn't modify the pages tables the guest runs on
    in that case (ie: when using HAP). Note that shadow paging code
    already takes care of issuing the necessary flushes when the shadow
    page tables are modified.
    
    In order to keep the previous behavior modify all shadow code TLB
    flushes to also flush the guest linear to physical TLB if the guest is
    HVM. I haven't looked at each specific shadow code TLB flush in order
    to figure out whether it actually requires a guest TLB flush or not,
    so there might be room for improvement in that regard.
    
    Also perform ASID/VPID flushes when modifying the p2m tables as it's a
    requirement for AMD hardware. Finally keep the flush in
    switch_cr3_cr4, as it's not clear whether code could rely on
    switch_cr3_cr4 also performing a guest linear TLB flush. A following
    patch can remove the ASID/VPID tickle from switch_cr3_cr4 if found to
    not be necessary.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Tim Deegan <tim@xen.org>
---
 xen/arch/x86/flushtlb.c          | 23 +++++++++++++++++++++--
 xen/arch/x86/mm/hap/hap.c        |  8 ++++----
 xen/arch/x86/mm/hap/nested_hap.c |  2 +-
 xen/arch/x86/mm/p2m-pt.c         |  5 +++--
 xen/arch/x86/mm/paging.c         |  2 +-
 xen/arch/x86/mm/shadow/common.c  | 18 +++++++++---------
 xen/arch/x86/mm/shadow/hvm.c     |  2 +-
 xen/arch/x86/mm/shadow/multi.c   | 22 ++++++++++++++--------
 xen/include/asm-x86/flushtlb.h   |  9 +++++++++
 9 files changed, 63 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/flushtlb.c b/xen/arch/x86/flushtlb.c
index 03f92c23dc..0c40b5d273 100644
--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -7,6 +7,7 @@
  * Copyright (c) 2003-2006, K A Fraser
  */
 
+#include <xen/paging.h>
 #include <xen/sched.h>
 #include <xen/smp.h>
 #include <xen/softirq.h>
@@ -59,8 +60,6 @@ static u32 pre_flush(void)
         raise_softirq(NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ);
 
  skip_clocktick:
-    hvm_flush_guest_tlbs();
-
     return t2;
 }
 
@@ -118,6 +117,7 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
     local_irq_save(flags);
 
     t = pre_flush();
+    hvm_flush_guest_tlbs();
 
     old_cr4 = read_cr4();
     ASSERT(!(old_cr4 & X86_CR4_PCIDE) || !(old_cr4 & X86_CR4_PGE));
@@ -221,6 +221,9 @@ unsigned int flush_area_local(const void *va, unsigned int flags)
             do_tlb_flush();
     }
 
+    if ( flags & FLUSH_HVM_ASID_CORE )
+        hvm_flush_guest_tlbs();
+
     if ( flags & FLUSH_CACHE )
     {
         const struct cpuinfo_x86 *c = &current_cpu_data;
@@ -254,3 +257,19 @@ unsigned int flush_area_local(const void *va, unsigned int flags)
 
     return flags;
 }
+
+unsigned int guest_flush_tlb_flags(const struct domain *d)
+{
+    bool shadow = paging_mode_shadow(d);
+    bool asid = is_hvm_domain(d) && (cpu_has_svm || shadow);
+
+    return (shadow ? FLUSH_TLB : 0) | (asid ? FLUSH_HVM_ASID_CORE : 0);
+}
+
+void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask)
+{
+    unsigned int flags = guest_flush_tlb_flags(d);
+
+    if ( flags )
+        flush_mask(mask, flags);
+}
diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c
index 11829e7aad..580d1c2164 100644
--- a/xen/arch/x86/mm/hap/hap.c
+++ b/xen/arch/x86/mm/hap/hap.c
@@ -118,7 +118,7 @@ int hap_track_dirty_vram(struct domain *d,
             p2m_change_type_range(d, begin_pfn, begin_pfn + nr,
                                   p2m_ram_rw, p2m_ram_logdirty);
 
-            flush_tlb_mask(d->dirty_cpumask);
+            guest_flush_tlb_mask(d, d->dirty_cpumask);
 
             memset(dirty_bitmap, 0xff, size); /* consider all pages dirty */
         }
@@ -205,7 +205,7 @@ static int hap_enable_log_dirty(struct domain *d, bool_t log_global)
          * to be read-only, or via hardware-assisted log-dirty.
          */
         p2m_change_entry_type_global(d, p2m_ram_rw, p2m_ram_logdirty);
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     }
     return 0;
 }
@@ -234,7 +234,7 @@ static void hap_clean_dirty_bitmap(struct domain *d)
      * be read-only, or via hardware-assisted log-dirty.
      */
     p2m_change_entry_type_global(d, p2m_ram_rw, p2m_ram_logdirty);
-    flush_tlb_mask(d->dirty_cpumask);
+    guest_flush_tlb_mask(d, d->dirty_cpumask);
 }
 
 /************************************************/
@@ -812,7 +812,7 @@ hap_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn, l1_pgentry_t *p,
 
     safe_write_pte(p, new);
     if ( old_flags & _PAGE_PRESENT )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     paging_unlock(d);
 
diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c
index abe5958a52..f92ddc5206 100644
--- a/xen/arch/x86/mm/hap/nested_hap.c
+++ b/xen/arch/x86/mm/hap/nested_hap.c
@@ -84,7 +84,7 @@ nestedp2m_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn,
     safe_write_pte(p, new);
 
     if (old_flags & _PAGE_PRESENT)
-        flush_tlb_mask(p2m->dirty_cpumask);
+        guest_flush_tlb_mask(d, p2m->dirty_cpumask);
 
     paging_unlock(d);
 
diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index eb66077496..5c0501794e 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -866,11 +866,12 @@ static void p2m_pt_change_entry_type_global(struct p2m_domain *p2m,
     l1_pgentry_t *tab;
     unsigned long gfn = 0;
     unsigned int i, changed;
+    const struct domain *d = p2m->domain;
 
     if ( pagetable_get_pfn(p2m_get_pagetable(p2m)) == 0 )
         return;
 
-    ASSERT(hap_enabled(p2m->domain));
+    ASSERT(hap_enabled(d));
 
     tab = map_domain_page(pagetable_get_mfn(p2m_get_pagetable(p2m)));
     for ( changed = i = 0; i < (1 << PAGETABLE_ORDER); ++i )
@@ -896,7 +897,7 @@ static void p2m_pt_change_entry_type_global(struct p2m_domain *p2m,
     unmap_domain_page(tab);
 
     if ( changed )
-         flush_tlb_mask(p2m->domain->dirty_cpumask);
+         guest_flush_tlb_mask(d, d->dirty_cpumask);
 }
 
 static int p2m_pt_change_entry_type_range(struct p2m_domain *p2m,
diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c
index f5ff5d67a0..7c265fb5f3 100644
--- a/xen/arch/x86/mm/paging.c
+++ b/xen/arch/x86/mm/paging.c
@@ -613,7 +613,7 @@ void paging_log_dirty_range(struct domain *d,
 
     p2m_unlock(p2m);
 
-    flush_tlb_mask(d->dirty_cpumask);
+    guest_flush_tlb_mask(d, d->dirty_cpumask);
 }
 
 /*
diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c
index 3746dd6fb0..7ed8e7b71b 100644
--- a/xen/arch/x86/mm/shadow/common.c
+++ b/xen/arch/x86/mm/shadow/common.c
@@ -368,7 +368,7 @@ static int oos_remove_write_access(struct vcpu *v, mfn_t gmfn,
     }
 
     if ( ftlb )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     return 0;
 }
@@ -946,7 +946,7 @@ static void _shadow_prealloc(struct domain *d, unsigned int pages)
                 /* See if that freed up enough space */
                 if ( d->arch.paging.shadow.free_pages >= pages )
                 {
-                    flush_tlb_mask(d->dirty_cpumask);
+                    guest_flush_tlb_mask(d, d->dirty_cpumask);
                     return;
                 }
             }
@@ -1000,7 +1000,7 @@ static void shadow_blow_tables(struct domain *d)
                                pagetable_get_mfn(v->arch.shadow_table[i]), 0);
 
     /* Make sure everyone sees the unshadowings */
-    flush_tlb_mask(d->dirty_cpumask);
+    guest_flush_tlb_mask(d, d->dirty_cpumask);
 }
 
 void shadow_blow_tables_per_domain(struct domain *d)
@@ -1103,7 +1103,7 @@ mfn_t shadow_alloc(struct domain *d,
         if ( unlikely(!cpumask_empty(&mask)) )
         {
             perfc_incr(shadow_alloc_tlbflush);
-            flush_tlb_mask(&mask);
+            guest_flush_tlb_mask(d, &mask);
         }
         /* Now safe to clear the page for reuse */
         clear_domain_page(page_to_mfn(sp));
@@ -2296,7 +2296,7 @@ void sh_remove_shadows(struct domain *d, mfn_t gmfn, int fast, int all)
 
     /* Need to flush TLBs now, so that linear maps are safe next time we
      * take a fault. */
-    flush_tlb_mask(d->dirty_cpumask);
+    guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     paging_unlock(d);
 }
@@ -3013,7 +3013,7 @@ static void sh_unshadow_for_p2m_change(struct domain *d, unsigned long gfn,
         {
             sh_remove_all_shadows_and_parents(d, mfn);
             if ( sh_remove_all_mappings(d, mfn, _gfn(gfn)) )
-                flush_tlb_mask(d->dirty_cpumask);
+                guest_flush_tlb_mask(d, d->dirty_cpumask);
         }
     }
 
@@ -3053,7 +3053,7 @@ static void sh_unshadow_for_p2m_change(struct domain *d, unsigned long gfn,
                 }
                 omfn = mfn_add(omfn, 1);
             }
-            flush_tlb_mask(&flushmask);
+            guest_flush_tlb_mask(d, &flushmask);
 
             if ( npte )
                 unmap_domain_page(npte);
@@ -3340,7 +3340,7 @@ int shadow_track_dirty_vram(struct domain *d,
         }
     }
     if ( flush_tlb )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     goto out;
 
 out_sl1ma:
@@ -3410,7 +3410,7 @@ bool shadow_flush_tlb(bool (*flush_vcpu)(void *ctxt, struct vcpu *v),
     }
 
     /* Flush TLBs on all CPUs with dirty vcpu state. */
-    flush_tlb_mask(mask);
+    guest_flush_tlb_mask(d, mask);
 
     /* Done. */
     for_each_vcpu ( d, v )
diff --git a/xen/arch/x86/mm/shadow/hvm.c b/xen/arch/x86/mm/shadow/hvm.c
index 1e6024c71f..608360daec 100644
--- a/xen/arch/x86/mm/shadow/hvm.c
+++ b/xen/arch/x86/mm/shadow/hvm.c
@@ -591,7 +591,7 @@ static void validate_guest_pt_write(struct vcpu *v, mfn_t gmfn,
 
     if ( rc & SHADOW_SET_FLUSH )
         /* Need to flush TLBs to pick up shadow PT changes */
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     if ( rc & SHADOW_SET_ERROR )
     {
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 5368adf474..7d16d1c1a9 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -85,6 +85,12 @@ const char *const fetch_type_names[] = {
 };
 #endif
 
+/* Helper to perform a local TLB flush. */
+static void sh_flush_local(const struct domain *d)
+{
+    flush_local(guest_flush_tlb_flags(d));
+}
+
 /**************************************************************************/
 /* Hash table mapping from guest pagetables to shadows
  *
@@ -3075,7 +3081,7 @@ static int sh_page_fault(struct vcpu *v,
         perfc_incr(shadow_rm_write_flush_tlb);
         smp_wmb();
         atomic_inc(&d->arch.paging.shadow.gtable_dirty_version);
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     }
 
 #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC)
@@ -3584,7 +3590,7 @@ static bool sh_invlpg(struct vcpu *v, unsigned long linear)
     if ( mfn_to_page(sl1mfn)->u.sh.type
          == SH_type_fl1_shadow )
     {
-        flush_tlb_local();
+        sh_flush_local(v->domain);
         return false;
     }
 
@@ -3798,7 +3804,7 @@ sh_update_linear_entries(struct vcpu *v)
      * linear pagetable to read a top-level shadow page table entry. But,
      * without this change, it would fetch the wrong value due to a stale TLB.
      */
-    flush_tlb_local();
+    sh_flush_local(d);
 }
 
 
@@ -3998,7 +4004,7 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
      * (old) shadow linear maps in the writeable mapping heuristics. */
 #if GUEST_PAGING_LEVELS == 2
     if ( sh_remove_write_access(d, gmfn, 2, 0) != 0 )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     sh_set_toplevel_shadow(v, 0, gmfn, SH_type_l2_shadow);
 #elif GUEST_PAGING_LEVELS == 3
     /* PAE guests have four shadow_table entries, based on the
@@ -4022,7 +4028,7 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
             }
         }
         if ( flush )
-            flush_tlb_mask(d->dirty_cpumask);
+            guest_flush_tlb_mask(d, d->dirty_cpumask);
         /* Now install the new shadows. */
         for ( i = 0; i < 4; i++ )
         {
@@ -4043,7 +4049,7 @@ sh_update_cr3(struct vcpu *v, int do_locking, bool noflush)
     }
 #elif GUEST_PAGING_LEVELS == 4
     if ( sh_remove_write_access(d, gmfn, 4, 0) != 0 )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     sh_set_toplevel_shadow(v, 0, gmfn, SH_type_l4_shadow);
     if ( !shadow_mode_external(d) && !is_pv_32bit_domain(d) )
     {
@@ -4494,7 +4500,7 @@ static void sh_pagetable_dying(paddr_t gpa)
         }
     }
     if ( flush )
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
 
     /* Remember that we've seen the guest use this interface, so we
      * can rely on it using it in future, instead of guessing at
@@ -4531,7 +4537,7 @@ static void sh_pagetable_dying(paddr_t gpa)
         mfn_to_page(gmfn)->pagetable_dying = true;
         shadow_unhook_mappings(d, smfn, 1/* user pages only */);
         /* Now flush the TLB: we removed toplevel mappings. */
-        flush_tlb_mask(d->dirty_cpumask);
+        guest_flush_tlb_mask(d, d->dirty_cpumask);
     }
 
     /* Remember that we've seen the guest use this interface, so we
diff --git a/xen/include/asm-x86/flushtlb.h b/xen/include/asm-x86/flushtlb.h
index 2cfe4e6e97..798049b6ad 100644
--- a/xen/include/asm-x86/flushtlb.h
+++ b/xen/include/asm-x86/flushtlb.h
@@ -105,6 +105,12 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4);
 #define FLUSH_VCPU_STATE 0x1000
  /* Flush the per-cpu root page table */
 #define FLUSH_ROOT_PGTBL 0x2000
+#if CONFIG_HVM
+ /* Flush all HVM guests linear TLB (using ASID/VPID) */
+#define FLUSH_HVM_ASID_CORE 0x4000
+#else
+#define FLUSH_HVM_ASID_CORE 0
+#endif
 
 /* Flush local TLBs/caches. */
 unsigned int flush_area_local(const void *va, unsigned int flags);
@@ -159,4 +165,7 @@ static inline int clean_dcache_va_range(const void *p, unsigned long size)
     return clean_and_invalidate_dcache_va_range(p, size);
 }
 
+unsigned int guest_flush_tlb_flags(const struct domain *d);
+void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask);
+
 #endif /* __FLUSHTLB_H__ */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 09:55:17 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 09:55:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU5uW-00039a-6m; Thu, 30 Apr 2020 09:55:16 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU5uV-00039V-31
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:15 +0000
X-Inumbo-ID: b0673b36-8ac8-11ea-9a1a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b0673b36-8ac8-11ea-9a1a-12813bfff9fa;
 Thu, 30 Apr 2020 09:55:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XP1NltG9wYYMeifHB5gSyR+4zYDyCFQfjp5gZ3p0m1g=; b=uqrOItLjZp8Vxr9lVf08Bjfom9
 a9bqsdZgidJi6JwDkSdf5O4sTio9/M3a94XbILNCPCqOHWXVM/2J3VyQrw/izORvwsW9npLQePrqI
 JBu9qqe16YjMXARW3SwK1qy00rT2QKmXrk4NKRvMjKEUzUTBSduNCXidMAudCEmSp1S4=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5uU-00080S-H0
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:14 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5uU-0005oJ-Fm
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:14 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/tlb: allow disabling the TLB clock
Message-Id: <E1jU5uU-0005oJ-Fm@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 09:55:14 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit c2b4e23fdda41e7e8da316e02c94f063752e04cc
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Wed Apr 29 09:07:32 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 29 09:07:32 2020 +0200

    x86/tlb: allow disabling the TLB clock
    
    The TLB clock is helpful when running Xen on bare metal because when
    doing a TLB flush each CPU is IPI'ed and can keep a timestamp of the
    last flush.
    
    This is not the case however when Xen is running virtualized, and the
    underlying hypervisor provides mechanism to assist in performing TLB
    flushes: Xen itself for example offers a HVMOP_flush_tlbs hypercall in
    order to perform a TLB flush without having to IPI each CPU. When
    using such mechanisms it's no longer possible to keep a timestamp of
    the flushes on each CPU, as they are performed by the underlying
    hypervisor.
    
    Offer a boolean in order to signal Xen that the timestamped TLB
    shouldn't be used. This avoids keeping the timestamps of the flushes,
    and also forces NEED_FLUSH to always return true.
    
    No functional change intended, as this change doesn't introduce any
    user that disables the timestamped TLB.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/flushtlb.c        | 19 +++++++++++++------
 xen/include/asm-x86/flushtlb.h | 17 ++++++++++++++++-
 2 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/flushtlb.c b/xen/arch/x86/flushtlb.c
index 0c40b5d273..25798df50f 100644
--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -33,6 +33,9 @@
 u32 tlbflush_clock = 1U;
 DEFINE_PER_CPU(u32, tlbflush_time);
 
+/* Signals whether the TLB flush clock is in use. */
+bool __read_mostly tlb_clk_enabled = true;
+
 /*
  * pre_flush(): Increment the virtual TLB-flush clock. Returns new clock value.
  * 
@@ -83,12 +86,13 @@ static void post_flush(u32 t)
 static void do_tlb_flush(void)
 {
     unsigned long flags, cr4;
-    u32 t;
+    u32 t = 0;
 
     /* This non-reentrant function is sometimes called in interrupt context. */
     local_irq_save(flags);
 
-    t = pre_flush();
+    if ( tlb_clk_enabled )
+        t = pre_flush();
 
     if ( use_invpcid )
         invpcid_flush_all();
@@ -100,7 +104,8 @@ static void do_tlb_flush(void)
     else
         write_cr3(read_cr3());
 
-    post_flush(t);
+    if ( tlb_clk_enabled )
+        post_flush(t);
 
     local_irq_restore(flags);
 }
@@ -108,7 +113,7 @@ static void do_tlb_flush(void)
 void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
 {
     unsigned long flags, old_cr4;
-    u32 t;
+    u32 t = 0;
 
     /* Throughout this function we make this assumption: */
     ASSERT(!(cr4 & X86_CR4_PCIDE) || !(cr4 & X86_CR4_PGE));
@@ -116,7 +121,8 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
     /* This non-reentrant function is sometimes called in interrupt context. */
     local_irq_save(flags);
 
-    t = pre_flush();
+    if ( tlb_clk_enabled )
+        t = pre_flush();
     hvm_flush_guest_tlbs();
 
     old_cr4 = read_cr4();
@@ -169,7 +175,8 @@ void switch_cr3_cr4(unsigned long cr3, unsigned long cr4)
     if ( cr4 & X86_CR4_PCIDE )
         invpcid_flush_all_nonglobals();
 
-    post_flush(t);
+    if ( tlb_clk_enabled )
+        post_flush(t);
 
     local_irq_restore(flags);
 }
diff --git a/xen/include/asm-x86/flushtlb.h b/xen/include/asm-x86/flushtlb.h
index 798049b6ad..8639427cce 100644
--- a/xen/include/asm-x86/flushtlb.h
+++ b/xen/include/asm-x86/flushtlb.h
@@ -21,10 +21,21 @@ extern u32 tlbflush_clock;
 /* Time at which each CPU's TLB was last flushed. */
 DECLARE_PER_CPU(u32, tlbflush_time);
 
-#define tlbflush_current_time() tlbflush_clock
+/* TLB clock is in use. */
+extern bool tlb_clk_enabled;
+
+static inline uint32_t tlbflush_current_time(void)
+{
+    /* Returning 0 from tlbflush_current_time will always force a flush. */
+    return tlb_clk_enabled ? tlbflush_clock : 0;
+}
 
 static inline void page_set_tlbflush_timestamp(struct page_info *page)
 {
+    /* Avoid the write if the TLB clock is disabled. */
+    if ( !tlb_clk_enabled )
+        return;
+
     /*
      * Prevent storing a stale time stamp, which could happen if an update
      * to tlbflush_clock plus a subsequent flush IPI happen between the
@@ -67,6 +78,10 @@ static inline void tlbflush_filter(cpumask_t *mask, uint32_t page_timestamp)
 {
     unsigned int cpu;
 
+    /* Short-circuit: there's no need to iterate if the clock is disabled. */
+    if ( !tlb_clk_enabled )
+        return;
+
     for_each_cpu ( cpu, mask )
         if ( !NEED_FLUSH(per_cpu(tlbflush_time, cpu), page_timestamp) )
             __cpumask_clear_cpu(cpu, mask);
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 09:55:26 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 09:55:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU5ug-0003At-8F; Thu, 30 Apr 2020 09:55:26 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU5uf-0003Aj-1l
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:25 +0000
X-Inumbo-ID: b612be49-8ac8-11ea-9a1a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id b612be49-8ac8-11ea-9a1a-12813bfff9fa;
 Thu, 30 Apr 2020 09:55:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=G2oMwl2NtdpfUDxZjVr8vzRP5WPlMUh41C01PzDbNoQ=; b=OYDMjYnR6K8857qzhDFPVDey0s
 dPxKNolhJ1RO/tQ2Jj8Jtba2f0igy+9mdQM2X2SPzf1Vg78nyXuO+crXM36E9skdRsSdDP1ofOiNL
 9xSUiBr93NdZUy7uya5UogzbnAKGSxs3XjDHIwnbZIQoQYwfNPPoSnbYYYmHX2bDg7O8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5ue-00080f-Jf
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:24 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5ue-0005p0-If
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:24 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/tlb: use Xen L0 assisted TLB flush when available
Message-Id: <E1jU5ue-0005p0-If@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 09:55:24 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit e9aca9470ed86966f9c0fd0db85132ff28d652c4
Author:     Roger Pau Monné <roger.pau@citrix.com>
AuthorDate: Wed Apr 29 09:10:19 2020 +0200
Commit:     Jan Beulich <jbeulich@suse.com>
CommitDate: Wed Apr 29 09:10:19 2020 +0200

    x86/tlb: use Xen L0 assisted TLB flush when available
    
    Use Xen's L0 HVMOP_flush_tlbs hypercall in order to perform flushes.
    This greatly increases the performance of TLB flushes when running
    with a high amount of vCPUs as a Xen guest, and is specially important
    when running in shim mode.
    
    The following figures are from a PV guest running `make -j32 xen` in
    shim mode with 32 vCPUs and HAP.
    
    Using x2APIC and ALLBUT shorthand:
    real    4m35.973s
    user    4m35.110s
    sys     36m24.117s
    
    Using L0 assisted flush:
    real    1m2.596s
    user    4m34.818s
    sys     5m16.374s
    
    The implementation adds a new hook to hypervisor_ops so other
    enlightenments can also implement such assisted flush just by filling
    the hook.
    
    Note that the Xen implementation completely ignores the dirty CPU mask
    and the linear address passed in, and always performs a global TLB
    flush on all vCPUs. This is a limitation of the hypercall provided by
    Xen. Also note that local TLB flushes are not performed using the
    assisted TLB flush, only remote ones.
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/guest/hypervisor.c        | 14 ++++++++++++++
 xen/arch/x86/guest/xen/xen.c           |  6 ++++++
 xen/arch/x86/smp.c                     |  7 +++++++
 xen/include/asm-x86/guest/hypervisor.h | 17 +++++++++++++++++
 4 files changed, 44 insertions(+)

diff --git a/xen/arch/x86/guest/hypervisor.c b/xen/arch/x86/guest/hypervisor.c
index 647cdb1367..e46de42ded 100644
--- a/xen/arch/x86/guest/hypervisor.c
+++ b/xen/arch/x86/guest/hypervisor.c
@@ -18,6 +18,7 @@
  *
  * Copyright (c) 2019 Microsoft.
  */
+#include <xen/cpumask.h>
 #include <xen/init.h>
 #include <xen/types.h>
 
@@ -51,6 +52,10 @@ void __init hypervisor_setup(void)
 {
     if ( ops.setup )
         ops.setup();
+
+    /* Check if assisted flush is available and disable the TLB clock if so. */
+    if ( !hypervisor_flush_tlb(cpumask_of(smp_processor_id()), NULL, 0) )
+        tlb_clk_enabled = false;
 }
 
 int hypervisor_ap_setup(void)
@@ -73,6 +78,15 @@ void __init hypervisor_e820_fixup(struct e820map *e820)
         ops.e820_fixup(e820);
 }
 
+int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
+                         unsigned int order)
+{
+    if ( ops.flush_tlb )
+        return alternative_call(ops.flush_tlb, mask, va, order);
+
+    return -EOPNOTSUPP;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/guest/xen/xen.c b/xen/arch/x86/guest/xen/xen.c
index e74fd1e995..3bc01c8723 100644
--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -324,12 +324,18 @@ static void __init e820_fixup(struct e820map *e820)
         pv_shim_fixup_e820(e820);
 }
 
+static int flush_tlb(const cpumask_t *mask, const void *va, unsigned int order)
+{
+    return xen_hypercall_hvm_op(HVMOP_flush_tlbs, NULL);
+}
+
 static const struct hypervisor_ops __initconstrel ops = {
     .name = "Xen",
     .setup = setup,
     .ap_setup = ap_setup,
     .resume = resume,
     .e820_fixup = e820_fixup,
+    .flush_tlb = flush_tlb,
 };
 
 const struct hypervisor_ops *__init xg_probe(void)
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index bcead5d01b..1d9fec65de 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -15,6 +15,7 @@
 #include <xen/perfc.h>
 #include <xen/spinlock.h>
 #include <asm/current.h>
+#include <asm/guest.h>
 #include <asm/smp.h>
 #include <asm/mc146818rtc.h>
 #include <asm/flushtlb.h>
@@ -268,6 +269,12 @@ void flush_area_mask(const cpumask_t *mask, const void *va, unsigned int flags)
     if ( (flags & ~FLUSH_ORDER_MASK) &&
          !cpumask_subset(mask, cpumask_of(cpu)) )
     {
+        if ( cpu_has_hypervisor &&
+             !(flags & ~(FLUSH_TLB | FLUSH_TLB_GLOBAL | FLUSH_VA_VALID |
+                         FLUSH_ORDER_MASK)) &&
+             !hypervisor_flush_tlb(mask, va, (flags - 1) & FLUSH_ORDER_MASK) )
+            return;
+
         spin_lock(&flush_lock);
         cpumask_and(&flush_cpumask, mask, &cpu_online_map);
         cpumask_clear_cpu(cpu, &flush_cpumask);
diff --git a/xen/include/asm-x86/guest/hypervisor.h b/xen/include/asm-x86/guest/hypervisor.h
index ade10e74ea..77a1d21824 100644
--- a/xen/include/asm-x86/guest/hypervisor.h
+++ b/xen/include/asm-x86/guest/hypervisor.h
@@ -19,6 +19,8 @@
 #ifndef __X86_HYPERVISOR_H__
 #define __X86_HYPERVISOR_H__
 
+#include <xen/cpumask.h>
+
 #include <asm/e820.h>
 
 struct hypervisor_ops {
@@ -32,6 +34,8 @@ struct hypervisor_ops {
     void (*resume)(void);
     /* Fix up e820 map */
     void (*e820_fixup)(struct e820map *e820);
+    /* L0 assisted TLB flush */
+    int (*flush_tlb)(const cpumask_t *mask, const void *va, unsigned int order);
 };
 
 #ifdef CONFIG_GUEST
@@ -41,6 +45,14 @@ void hypervisor_setup(void);
 int hypervisor_ap_setup(void);
 void hypervisor_resume(void);
 void hypervisor_e820_fixup(struct e820map *e820);
+/*
+ * L0 assisted TLB flush.
+ * mask: cpumask of the dirty vCPUs that should be flushed.
+ * va: linear address to flush, or NULL for global flushes.
+ * order: order of the linear address pointed by va.
+ */
+int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
+                         unsigned int order);
 
 #else
 
@@ -52,6 +64,11 @@ static inline void hypervisor_setup(void) { ASSERT_UNREACHABLE(); }
 static inline int hypervisor_ap_setup(void) { return 0; }
 static inline void hypervisor_resume(void) { ASSERT_UNREACHABLE(); }
 static inline void hypervisor_e820_fixup(struct e820map *e820) {}
+static inline int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
+                                       unsigned int order)
+{
+    return -EOPNOTSUPP;
+}
 
 #endif  /* CONFIG_GUEST */
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 09:55:36 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 09:55:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU5uq-0003C4-9r; Thu, 30 Apr 2020 09:55:36 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU5up-0003Bw-8W
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:35 +0000
X-Inumbo-ID: bc6cddb4-8ac8-11ea-9a1a-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id bc6cddb4-8ac8-11ea-9a1a-12813bfff9fa;
 Thu, 30 Apr 2020 09:55:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=xt0NnbNyauzNb/jboISjgo+BCtMRhpmsp4mCcFPTYgY=; b=vWGaV5Yh42R5Diat3mXe8lQEqn
 Gkqy5EqNRQ0iIqcvlTNFaNRZgAKubMqNT7MTRgtaWe3CEepNfK9X4Ete4jUMY/Yq3PYYieYxtkrRR
 JfclG1R2IWYvwvo2yDGEnnZDVqgsTJ3/r0lv3y/LRYvbV7uRM2ERRid7ZSo5CLQGQaX8=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5uo-00080o-MK
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:34 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5uo-0005pT-LK
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:34 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/hypervisor: pass flags to hypervisor_flush_tlb
Message-Id: <E1jU5uo-0005pT-LK@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 09:55:34 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 3d2a0c7d58f729ed4f1920e5d41403e8a93301ff
Author:     Wei Liu <wl@xen.org>
AuthorDate: Thu Apr 9 18:41:02 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Wed Apr 29 10:32:18 2020 +0100

    x86/hypervisor: pass flags to hypervisor_flush_tlb
    
    Hyper-V's L0 assisted flush has fine-grained control over what gets
    flushed. We need all the flags available to make the best decisions
    possible.
    
    No functional change because Xen's implementation doesn't care about
    what is passed to it.
    
    Signed-off-by: Wei Liu <liuwe@microsoft.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Paul Durrant <pdurrant@amazon.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/guest/hypervisor.c        |  4 ++--
 xen/arch/x86/guest/xen/xen.c           |  2 +-
 xen/arch/x86/smp.c                     |  2 +-
 xen/include/asm-x86/guest/hypervisor.h | 10 +++++-----
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/guest/hypervisor.c b/xen/arch/x86/guest/hypervisor.c
index e46de42ded..366af1d650 100644
--- a/xen/arch/x86/guest/hypervisor.c
+++ b/xen/arch/x86/guest/hypervisor.c
@@ -79,10 +79,10 @@ void __init hypervisor_e820_fixup(struct e820map *e820)
 }
 
 int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
-                         unsigned int order)
+                         unsigned int flags)
 {
     if ( ops.flush_tlb )
-        return alternative_call(ops.flush_tlb, mask, va, order);
+        return alternative_call(ops.flush_tlb, mask, va, flags);
 
     return -EOPNOTSUPP;
 }
diff --git a/xen/arch/x86/guest/xen/xen.c b/xen/arch/x86/guest/xen/xen.c
index 3bc01c8723..2ff63d370a 100644
--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -324,7 +324,7 @@ static void __init e820_fixup(struct e820map *e820)
         pv_shim_fixup_e820(e820);
 }
 
-static int flush_tlb(const cpumask_t *mask, const void *va, unsigned int order)
+static int flush_tlb(const cpumask_t *mask, const void *va, unsigned int flags)
 {
     return xen_hypercall_hvm_op(HVMOP_flush_tlbs, NULL);
 }
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index 1d9fec65de..6f1aaa2106 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -272,7 +272,7 @@ void flush_area_mask(const cpumask_t *mask, const void *va, unsigned int flags)
         if ( cpu_has_hypervisor &&
              !(flags & ~(FLUSH_TLB | FLUSH_TLB_GLOBAL | FLUSH_VA_VALID |
                          FLUSH_ORDER_MASK)) &&
-             !hypervisor_flush_tlb(mask, va, (flags - 1) & FLUSH_ORDER_MASK) )
+             !hypervisor_flush_tlb(mask, va, flags) )
             return;
 
         spin_lock(&flush_lock);
diff --git a/xen/include/asm-x86/guest/hypervisor.h b/xen/include/asm-x86/guest/hypervisor.h
index 77a1d21824..0a6c3b47ab 100644
--- a/xen/include/asm-x86/guest/hypervisor.h
+++ b/xen/include/asm-x86/guest/hypervisor.h
@@ -35,7 +35,7 @@ struct hypervisor_ops {
     /* Fix up e820 map */
     void (*e820_fixup)(struct e820map *e820);
     /* L0 assisted TLB flush */
-    int (*flush_tlb)(const cpumask_t *mask, const void *va, unsigned int order);
+    int (*flush_tlb)(const cpumask_t *mask, const void *va, unsigned int flags);
 };
 
 #ifdef CONFIG_GUEST
@@ -48,11 +48,11 @@ void hypervisor_e820_fixup(struct e820map *e820);
 /*
  * L0 assisted TLB flush.
  * mask: cpumask of the dirty vCPUs that should be flushed.
- * va: linear address to flush, or NULL for global flushes.
- * order: order of the linear address pointed by va.
+ * va: linear address to flush, or NULL for entire address space.
+ * flags: flags for flushing, including the order of va.
  */
 int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
-                         unsigned int order);
+                         unsigned int flags);
 
 #else
 
@@ -65,7 +65,7 @@ static inline int hypervisor_ap_setup(void) { return 0; }
 static inline void hypervisor_resume(void) { ASSERT_UNREACHABLE(); }
 static inline void hypervisor_e820_fixup(struct e820map *e820) {}
 static inline int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
-                                       unsigned int order)
+                                       unsigned int flags)
 {
     return -EOPNOTSUPP;
 }
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 09:55:47 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 09:55:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU5v1-0003D5-BR; Thu, 30 Apr 2020 09:55:47 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU5uz-0003Cq-Kv
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:45 +0000
X-Inumbo-ID: c2728042-8ac8-11ea-b9cf-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c2728042-8ac8-11ea-b9cf-bc764e2007e4;
 Thu, 30 Apr 2020 09:55:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kIqabIS8eHraoqJ4JXxbajC1mgKTq1kIwG0xEe2IZAk=; b=jLvOb1z1YTWGrR9QGuaaIrZWfx
 cqYdUNimJhIh0qE/Da7V8UAlwxuAkz3XmGK0fbecSvvzW4uYcEJfBhlFcUpCrV5/DeHW9NRNUEWF1
 G93Qdj+HjwyaF3+WyjmcCV5JMKkMFsSosrz2+4f2LyR2k3AVAkRaAwE9er09tl1B/QvA=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5uy-00080x-Ou
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:44 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5uy-0005pu-Ny
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:44 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/hyperv: skeleton for L0 assisted TLB flush
Message-Id: <E1jU5uy-0005pu-Ny@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 09:55:44 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 75550b5fa5a8fa068e35e819d8ba25e0240b20a0
Author:     Wei Liu <wl@xen.org>
AuthorDate: Thu Apr 9 18:41:03 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Wed Apr 29 10:32:29 2020 +0100

    x86/hyperv: skeleton for L0 assisted TLB flush
    
    Implement a basic hook for L0 assisted TLB flush. The hook needs to
    check if prerequisites are met. If they are not met, it returns an error
    number to fall back to native flushes.
    
    Introduce a new variable to indicate if hypercall page is ready.
    
    Signed-off-by: Wei Liu <liuwe@microsoft.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Paul Durrant <pdurrant@amazon.com>
---
 xen/arch/x86/guest/hyperv/Makefile  |  1 +
 xen/arch/x86/guest/hyperv/hyperv.c  | 17 +++++++++++++++
 xen/arch/x86/guest/hyperv/private.h |  4 ++++
 xen/arch/x86/guest/hyperv/tlb.c     | 41 +++++++++++++++++++++++++++++++++++++
 4 files changed, 63 insertions(+)

diff --git a/xen/arch/x86/guest/hyperv/Makefile b/xen/arch/x86/guest/hyperv/Makefile
index 68170109a9..18902c33e9 100644
--- a/xen/arch/x86/guest/hyperv/Makefile
+++ b/xen/arch/x86/guest/hyperv/Makefile
@@ -1 +1,2 @@
 obj-y += hyperv.o
+obj-y += tlb.o
diff --git a/xen/arch/x86/guest/hyperv/hyperv.c b/xen/arch/x86/guest/hyperv/hyperv.c
index 5ad16cf0fe..91a6782cd9 100644
--- a/xen/arch/x86/guest/hyperv/hyperv.c
+++ b/xen/arch/x86/guest/hyperv/hyperv.c
@@ -33,6 +33,8 @@ DEFINE_PER_CPU_READ_MOSTLY(void *, hv_input_page);
 DEFINE_PER_CPU_READ_MOSTLY(void *, hv_vp_assist);
 DEFINE_PER_CPU_READ_MOSTLY(unsigned int, hv_vp_index);
 
+static bool __read_mostly hcall_page_ready;
+
 static uint64_t generate_guest_id(void)
 {
     union hv_guest_os_id id = {};
@@ -119,6 +121,8 @@ static void __init setup_hypercall_page(void)
     BUG_ON(!hypercall_msr.enable);
 
     set_fixmap_x(FIX_X_HYPERV_HCALL, mfn << PAGE_SHIFT);
+
+    hcall_page_ready = true;
 }
 
 static int setup_hypercall_pcpu_arg(void)
@@ -199,11 +203,24 @@ static void __init e820_fixup(struct e820map *e820)
         panic("Unable to reserve Hyper-V hypercall range\n");
 }
 
+static int flush_tlb(const cpumask_t *mask, const void *va,
+                     unsigned int flags)
+{
+    if ( !(ms_hyperv.hints & HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED) )
+        return -EOPNOTSUPP;
+
+    if ( !hcall_page_ready || !this_cpu(hv_input_page) )
+        return -ENXIO;
+
+    return hyperv_flush_tlb(mask, va, flags);
+}
+
 static const struct hypervisor_ops __initconstrel ops = {
     .name = "Hyper-V",
     .setup = setup,
     .ap_setup = ap_setup,
     .e820_fixup = e820_fixup,
+    .flush_tlb = flush_tlb,
 };
 
 /*
diff --git a/xen/arch/x86/guest/hyperv/private.h b/xen/arch/x86/guest/hyperv/private.h
index 956eff831f..509bedaafa 100644
--- a/xen/arch/x86/guest/hyperv/private.h
+++ b/xen/arch/x86/guest/hyperv/private.h
@@ -22,10 +22,14 @@
 #ifndef __XEN_HYPERV_PRIVIATE_H__
 #define __XEN_HYPERV_PRIVIATE_H__
 
+#include <xen/cpumask.h>
 #include <xen/percpu.h>
 
 DECLARE_PER_CPU(void *, hv_input_page);
 DECLARE_PER_CPU(void *, hv_vp_assist);
 DECLARE_PER_CPU(unsigned int, hv_vp_index);
 
+int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
+                     unsigned int flags);
+
 #endif /* __XEN_HYPERV_PRIVIATE_H__  */
diff --git a/xen/arch/x86/guest/hyperv/tlb.c b/xen/arch/x86/guest/hyperv/tlb.c
new file mode 100644
index 0000000000..48f527229e
--- /dev/null
+++ b/xen/arch/x86/guest/hyperv/tlb.c
@@ -0,0 +1,41 @@
+/******************************************************************************
+ * arch/x86/guest/hyperv/tlb.c
+ *
+ * Support for TLB management using hypercalls
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (c) 2020 Microsoft.
+ */
+
+#include <xen/cpumask.h>
+#include <xen/errno.h>
+
+#include "private.h"
+
+int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
+                     unsigned int flags)
+{
+    return -EOPNOTSUPP;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 09:55:57 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 09:55:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jU5vB-0003E3-D3; Thu, 30 Apr 2020 09:55:57 +0000
Received: from us1-rack-iad1.inumbo.com ([172.99.69.81])
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jU5v9-0003Dt-V8
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:55 +0000
X-Inumbo-ID: c8763d4e-8ac8-11ea-ae69-bc764e2007e4
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-rack-iad1.inumbo.com (Halon) with ESMTPS
 id c8763d4e-8ac8-11ea-ae69-bc764e2007e4;
 Thu, 30 Apr 2020 09:55:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=2mFkHgXvgBM6tXhRnpwbIntH8XGaTjUuYQ+Mroe7IlI=; b=E5lgoqYnGtc7bIwmK16FwyHUjv
 Q5qZWsWl7qBMTvfADRsSRdtcWzjU+rTzxgbmxtU+KXUsagvnQjEvBE1/SlEv1GfibT6iTWIRwxOrR
 1HocNaOf3Xa49OF3jzRwf4ZZGwzkXQIbggUgZP2NIWP3dxpEAzW+3SMIOV5/mjuJFdas=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5v8-000816-RP
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jU5v8-0005qM-QT
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 09:55:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/hyperv: L0 assisted TLB flush
Message-Id: <E1jU5v8-0005qM-QT@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 09:55:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit f9bf746258eb53011f863571c7073037202b6743
Author:     Wei Liu <wl@xen.org>
AuthorDate: Thu Apr 9 18:41:04 2020 +0100
Commit:     Wei Liu <wl@xen.org>
CommitDate: Wed Apr 29 10:36:38 2020 +0100

    x86/hyperv: L0 assisted TLB flush
    
    Implement L0 assisted TLB flush for Xen on Hyper-V. It takes advantage
    of several hypercalls:
    
     * HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST
     * HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST_EX
     * HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE
     * HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX
    
    Pick the most efficient hypercall available.
    
    Signed-off-by: Wei Liu <liuwe@microsoft.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Paul Durrant <pdurrant@amazon.com>
---
 xen/arch/x86/guest/hyperv/Makefile  |   1 +
 xen/arch/x86/guest/hyperv/private.h |   8 ++
 xen/arch/x86/guest/hyperv/tlb.c     | 175 +++++++++++++++++++++++++++++++++++-
 xen/arch/x86/guest/hyperv/util.c    |  75 ++++++++++++++++
 4 files changed, 258 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/guest/hyperv/Makefile b/xen/arch/x86/guest/hyperv/Makefile
index 18902c33e9..0e39410968 100644
--- a/xen/arch/x86/guest/hyperv/Makefile
+++ b/xen/arch/x86/guest/hyperv/Makefile
@@ -1,2 +1,3 @@
 obj-y += hyperv.o
 obj-y += tlb.o
+obj-y += util.o
diff --git a/xen/arch/x86/guest/hyperv/private.h b/xen/arch/x86/guest/hyperv/private.h
index 509bedaafa..354fc7f685 100644
--- a/xen/arch/x86/guest/hyperv/private.h
+++ b/xen/arch/x86/guest/hyperv/private.h
@@ -29,7 +29,15 @@ DECLARE_PER_CPU(void *, hv_input_page);
 DECLARE_PER_CPU(void *, hv_vp_assist);
 DECLARE_PER_CPU(unsigned int, hv_vp_index);
 
+static inline unsigned int hv_vp_index(unsigned int cpu)
+{
+    return per_cpu(hv_vp_index, cpu);
+}
+
 int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
                      unsigned int flags);
 
+/* Returns number of banks, -ev if error */
+int cpumask_to_vpset(struct hv_vpset *vpset, const cpumask_t *mask);
+
 #endif /* __XEN_HYPERV_PRIVIATE_H__  */
diff --git a/xen/arch/x86/guest/hyperv/tlb.c b/xen/arch/x86/guest/hyperv/tlb.c
index 48f527229e..1d723d6ee6 100644
--- a/xen/arch/x86/guest/hyperv/tlb.c
+++ b/xen/arch/x86/guest/hyperv/tlb.c
@@ -19,17 +19,190 @@
  * Copyright (c) 2020 Microsoft.
  */
 
+#include <xen/cpu.h>
 #include <xen/cpumask.h>
 #include <xen/errno.h>
 
+#include <asm/guest/hyperv.h>
+#include <asm/guest/hyperv-hcall.h>
+#include <asm/guest/hyperv-tlfs.h>
+
 #include "private.h"
 
+/*
+ * It is possible to encode up to 4096 pages using the lower 12 bits
+ * in an element of gva_list
+ */
+#define HV_TLB_FLUSH_UNIT (4096 * PAGE_SIZE)
+
+static unsigned int fill_gva_list(uint64_t *gva_list, const void *va,
+                                  unsigned int order)
+{
+    unsigned long cur = (unsigned long)va;
+    /* end is 1 past the range to be flushed */
+    unsigned long end = cur + (PAGE_SIZE << order);
+    unsigned int n = 0;
+
+    do {
+        unsigned long diff = end - cur;
+
+        gva_list[n] = cur & PAGE_MASK;
+
+        /*
+         * Use lower 12 bits to encode the number of additional pages
+         * to flush
+         */
+        if ( diff >= HV_TLB_FLUSH_UNIT )
+        {
+            gva_list[n] |= ~PAGE_MASK;
+            cur += HV_TLB_FLUSH_UNIT;
+        }
+        else
+        {
+            gva_list[n] |= (diff - 1) >> PAGE_SHIFT;
+            cur = end;
+        }
+
+        n++;
+    } while ( cur < end );
+
+    return n;
+}
+
+static uint64_t flush_tlb_ex(const cpumask_t *mask, const void *va,
+                             unsigned int flags)
+{
+    struct hv_tlb_flush_ex *flush = this_cpu(hv_input_page);
+    int nr_banks;
+    unsigned int max_gvas, order = (flags - 1) & FLUSH_ORDER_MASK;
+    uint64_t *gva_list;
+
+    if ( !flush || local_irq_is_enabled() )
+    {
+        ASSERT_UNREACHABLE();
+        return ~0ULL;
+    }
+
+    if ( !(ms_hyperv.hints & HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED) )
+        return ~0ULL;
+
+    flush->address_space = 0;
+    flush->flags = HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES;
+    if ( !(flags & FLUSH_TLB_GLOBAL) )
+        flush->flags |= HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY;
+
+    nr_banks = cpumask_to_vpset(&flush->hv_vp_set, mask);
+    if ( nr_banks < 0 )
+        return ~0ULL;
+
+    max_gvas =
+        (PAGE_SIZE - sizeof(*flush) - nr_banks *
+         sizeof(flush->hv_vp_set.bank_contents[0])) /
+        sizeof(uint64_t);       /* gva is represented as uint64_t */
+
+    /*
+     * Flush the entire address space if va is NULL or if there is not
+     * enough space for gva_list.
+     */
+    if ( !va || (PAGE_SIZE << order) / HV_TLB_FLUSH_UNIT > max_gvas )
+        return hv_do_rep_hypercall(HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE_EX, 0,
+                                   nr_banks, virt_to_maddr(flush), 0);
+
+    /*
+     * The calculation of gva_list address requires the structure to
+     * be 64 bits aligned.
+     */
+    BUILD_BUG_ON(sizeof(*flush) % sizeof(uint64_t));
+    gva_list = (uint64_t *)flush + sizeof(*flush) / sizeof(uint64_t) + nr_banks;
+
+    return hv_do_rep_hypercall(HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST_EX,
+                               fill_gva_list(gva_list, va, order),
+                               nr_banks, virt_to_maddr(flush), 0);
+}
+
+/* Maximum number of gvas for hv_tlb_flush */
+#define MAX_GVAS ((PAGE_SIZE - sizeof(struct hv_tlb_flush)) / sizeof(uint64_t))
+
 int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
                      unsigned int flags)
 {
-    return -EOPNOTSUPP;
+    unsigned long irq_flags;
+    struct hv_tlb_flush *flush = this_cpu(hv_input_page);
+    unsigned int order = (flags - 1) & FLUSH_ORDER_MASK;
+    uint64_t ret;
+
+    if ( !flush || cpumask_empty(mask) )
+    {
+        ASSERT_UNREACHABLE();
+        return -EINVAL;
+    }
+
+    /* TODO: may need to check if in #NMI or #MC and fallback to native path */
+
+    local_irq_save(irq_flags);
+
+    flush->address_space = 0;
+    flush->flags = HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES;
+    flush->processor_mask = 0;
+    if ( !(flags & FLUSH_TLB_GLOBAL) )
+        flush->flags |= HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY;
+
+    if ( cpumask_equal(mask, &cpu_online_map) )
+        flush->flags |= HV_FLUSH_ALL_PROCESSORS;
+    else
+    {
+        unsigned int cpu;
+
+        /*
+         * Normally VP indices are in ascending order and match Xen's
+         * idea of CPU ids. Check the last index to see if VP index is
+         * >= 64. If so, we can skip setting up parameters for
+         * non-applicable hypercalls without looking further.
+         */
+        if ( hv_vp_index(cpumask_last(mask)) >= 64 )
+            goto do_ex_hypercall;
+
+        for_each_cpu ( cpu, mask )
+        {
+            unsigned int vpid = hv_vp_index(cpu);
+
+            if ( vpid >= ms_hyperv.max_vp_index )
+            {
+                local_irq_restore(irq_flags);
+                return -ENXIO;
+            }
+
+            if ( vpid >= 64 )
+                goto do_ex_hypercall;
+
+            __set_bit(vpid, &flush->processor_mask);
+        }
+    }
+
+    /*
+     * Flush the entire address space if va is NULL or if there is not
+     * enough space for gva_list.
+     */
+    if ( !va || (PAGE_SIZE << order) / HV_TLB_FLUSH_UNIT > MAX_GVAS )
+        ret = hv_do_hypercall(HVCALL_FLUSH_VIRTUAL_ADDRESS_SPACE,
+                              virt_to_maddr(flush), 0);
+    else
+        ret = hv_do_rep_hypercall(HVCALL_FLUSH_VIRTUAL_ADDRESS_LIST,
+                                  fill_gva_list(flush->gva_list, va, order),
+                                  0, virt_to_maddr(flush), 0);
+    goto done;
+
+ do_ex_hypercall:
+    ret = flush_tlb_ex(mask, va, flags);
+
+ done:
+    local_irq_restore(irq_flags);
+
+    return ret & HV_HYPERCALL_RESULT_MASK ? -ENXIO : 0;
 }
 
+#undef MAX_GVAS
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/guest/hyperv/util.c b/xen/arch/x86/guest/hyperv/util.c
new file mode 100644
index 0000000000..bec61c2afd
--- /dev/null
+++ b/xen/arch/x86/guest/hyperv/util.c
@@ -0,0 +1,75 @@
+/******************************************************************************
+ * arch/x86/guest/hyperv/util.c
+ *
+ * Hyper-V utility functions
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Copyright (c) 2020 Microsoft.
+ */
+
+#include <xen/cpu.h>
+#include <xen/cpumask.h>
+#include <xen/errno.h>
+
+#include <asm/guest/hyperv.h>
+#include <asm/guest/hyperv-tlfs.h>
+
+#include "private.h"
+
+int cpumask_to_vpset(struct hv_vpset *vpset,
+                     const cpumask_t *mask)
+{
+    int nr = 1;
+    unsigned int cpu, vcpu_bank, vcpu_offset;
+    unsigned int max_banks = ms_hyperv.max_vp_index / 64;
+
+    /* Up to 64 banks can be represented by valid_bank_mask */
+    if ( max_banks > 64 )
+        return -E2BIG;
+
+    /* Clear all banks to avoid flushing unwanted CPUs */
+    for ( vcpu_bank = 0; vcpu_bank < max_banks; vcpu_bank++ )
+        vpset->bank_contents[vcpu_bank] = 0;
+
+    vpset->format = HV_GENERIC_SET_SPARSE_4K;
+
+    for_each_cpu ( cpu, mask )
+    {
+        unsigned int vcpu = hv_vp_index(cpu);
+
+        vcpu_bank = vcpu / 64;
+        vcpu_offset = vcpu % 64;
+
+        __set_bit(vcpu_offset, &vpset->bank_contents[vcpu_bank]);
+
+        if ( vcpu_bank >= nr )
+            nr = vcpu_bank + 1;
+    }
+
+    /* Some banks may be empty but that's ok */
+    vpset->valid_bank_mask = ~0ULL >> (64 - nr);
+
+    return nr;
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 23:11:09 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 23:11:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jUIKf-0000CT-9y; Thu, 30 Apr 2020 23:11:05 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jUIKe-0000CH-4n
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:04 +0000
X-Inumbo-ID: dbdfbd34-8b37-11ea-9ac8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id dbdfbd34-8b37-11ea-9ac8-12813bfff9fa;
 Thu, 30 Apr 2020 23:11:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=mQKUmWOZ0pLASbwC/+rXLX3tfWhwm8zGZq3xVa82cMA=; b=4KCtL2A21Ucyd9RbMHNsUeK4WR
 DfVLJ5YLUXyhRydN48suRE51FNySQ0rG1IZkWcLfd0Q7du1EKLgpDkqF+mPlXmoc22zLQAg6jOOXF
 xxinOX7mFe8EqVhbxG5CBQDGntRi5cEPELyg5/N+2IXxhOoMjDXhayFPE4I81KLHgMiY=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUIKc-00078D-8V
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:02 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUIKc-0000Rk-7Y
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:02 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] xen/grants: fix hypercall continuation for
 GNTTABOP_cache_flush
Message-Id: <E1jUIKc-0000Rk-7Y@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 23:11:02 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 46d8f69d466a05863737fb81d8c9ef39c3be8b45
Author:     Juergen Gross <jgross@suse.com>
AuthorDate: Wed Apr 22 15:07:53 2020 +0200
Commit:     Julien Grall <jgrall@amazon.com>
CommitDate: Wed Apr 29 14:12:50 2020 +0100

    xen/grants: fix hypercall continuation for GNTTABOP_cache_flush
    
    The GNTTABOP_cache_flush hypercall has a wrong test for hypercall
    continuation, the test today is:
    
        if ( rc > 0 || opaque_out != 0 )
    
    Unfortunately this will be true even in case of an error (rc < 0),
    possibly leading to very long lasting hypercalls (times of more
    than an hour have been observed in a test case).
    
    Correct the test condition to result in false with rc < 0 and set
    opaque_out only if no error occurred, to be on the safe side.
    
    Partially-suggested-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Julien Grall <jgrall@amazon.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
 xen/common/grant_table.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 96080b3dec..5ef7ff940d 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -3626,12 +3626,12 @@ do_grant_table_op(
         if ( unlikely(!guest_handle_okay(cflush, count)) )
             goto out;
         rc = gnttab_cache_flush(cflush, &opaque_in, count);
-        if ( rc > 0 )
+        if ( rc >= 0 )
         {
             guest_handle_add_offset(cflush, rc);
             uop = guest_handle_cast(cflush, void);
+            opaque_out = opaque_in;
         }
-        opaque_out = opaque_in;
         break;
     }
 
@@ -3641,7 +3641,7 @@ do_grant_table_op(
     }
 
   out:
-    if ( rc > 0 || opaque_out != 0 )
+    if ( rc > 0 || (opaque_out != 0 && rc == 0) )
     {
         /* Adjust rc, see gnttab_copy() for why this is needed. */
         if ( cmd == GNTTABOP_copy )
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 23:11:15 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 23:11:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jUIKp-0000E6-BP; Thu, 30 Apr 2020 23:11:15 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jUIKo-0000Dy-Bx
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:14 +0000
X-Inumbo-ID: e1ef2eed-8b37-11ea-9ac8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e1ef2eed-8b37-11ea-9ac8-12813bfff9fa;
 Thu, 30 Apr 2020 23:11:12 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=PM9vMVaRuPIbkWZidf+LW91YduEw7Nyg3so4AkwFOWY=; b=4NVLmf2U4BcyuFq14d/La8Crlk
 7ygtZ6WSgTImSH0sK0HGQbbcTaagm02NMo6NA59ySY0oe1OI+YRjPb/xk2TaccQhFRYuClPNbH9Xb
 PUCSdABWzlZ+OeztL2ulWgzd1RPeyV34/b0nu0LtgXacPxgVDgwVwekMg8J95qLDFkEE=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUIKm-00078M-Kh
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:12 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUIKm-0000TR-I8
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:12 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/S3: Drop {save,
 restore}_rest_processor_state() completely
Message-Id: <E1jUIKm-0000TR-I8@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 23:11:12 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 4304ff420e51b973ec9eb9dafd64a917dd9c0fb1
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Wed Dec 11 20:59:19 2019 +0000
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 14:47:28 2020 +0100

    x86/S3: Drop {save,restore}_rest_processor_state() completely
    
    There is no need to save/restore FS/GS/XCR0 state.  It will be handled
    suitably on the context switch away from the idle.
    
    The CR4 restoration in restore_rest_processor_state() was actually fighting
    later code in enter_state() which tried to keep CR4.MCE clear until everything
    was set up.  Delete the intermediate restoration, and defer final restoration
    until after MCE is reconfigured.
    
    Restoring PAT can be done earlier, and ideally before paging is enabled.  By
    moving it into the trampoline during the setup for 64bit, the call can be
    dropped from cpu_init().  The EFI path boot path doesn't disable paging, so
    make the adjustment when switching onto Xen's pagetables.
    
    The only remaing piece of restoration is load_system_tables(), so suspend.c
    can be deleted in its entirety.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/acpi/Makefile      |  2 +-
 xen/arch/x86/acpi/power.c       |  9 ++++----
 xen/arch/x86/acpi/suspend.c     | 49 -----------------------------------------
 xen/arch/x86/acpi/wakeup_prot.S |  4 +---
 xen/arch/x86/boot/trampoline.S  |  5 +++++
 xen/arch/x86/cpu/common.c       |  2 --
 xen/arch/x86/efi/efi-boot.h     |  1 +
 7 files changed, 12 insertions(+), 60 deletions(-)

diff --git a/xen/arch/x86/acpi/Makefile b/xen/arch/x86/acpi/Makefile
index 1b9e625713..041377e2bb 100644
--- a/xen/arch/x86/acpi/Makefile
+++ b/xen/arch/x86/acpi/Makefile
@@ -1,4 +1,4 @@
 obj-y += cpufreq/
 
-obj-y += lib.o power.o suspend.o cpu_idle.o cpuidle_menu.o
+obj-y += lib.o power.o cpu_idle.o cpuidle_menu.o
 obj-bin-y += boot.init.o wakeup_prot.o
diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c
index 6dfd4c7891..0cda362045 100644
--- a/xen/arch/x86/acpi/power.c
+++ b/xen/arch/x86/acpi/power.c
@@ -195,7 +195,6 @@ static int enter_state(u32 state)
     unsigned long flags;
     int error;
     struct cpu_info *ci;
-    unsigned long cr4;
 
     if ( (state <= ACPI_STATE_S0) || (state > ACPI_S_STATES_MAX) )
         return -EINVAL;
@@ -270,15 +269,15 @@ static int enter_state(u32 state)
 
     system_state = SYS_STATE_resume;
 
-    /* Restore CR4 and EFER from cached values. */
-    cr4 = read_cr4();
-    write_cr4(cr4 & ~X86_CR4_MCE);
+    /* Restore EFER from cached value. */
     write_efer(read_efer());
 
     device_power_up(SAVED_ALL);
 
     mcheck_init(&boot_cpu_data, false);
-    write_cr4(cr4);
+
+    /* Restore CR4 from cached value, now MCE is set up. */
+    write_cr4(read_cr4());
 
     printk(XENLOG_INFO "Finishing wakeup from ACPI S%d state.\n", state);
 
diff --git a/xen/arch/x86/acpi/suspend.c b/xen/arch/x86/acpi/suspend.c
deleted file mode 100644
index 3c1a3cbb34..0000000000
--- a/xen/arch/x86/acpi/suspend.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Portions are:
- *  Copyright (c) 2002 Pavel Machek <pavel@suse.cz>
- *  Copyright (c) 2001 Patrick Mochel <mochel@osdl.org>
- */
-
-#include <xen/acpi.h>
-#include <xen/smp.h>
-#include <asm/processor.h>
-#include <asm/msr.h>
-#include <asm/debugreg.h>
-#include <asm/hvm/hvm.h>
-#include <asm/hvm/support.h>
-#include <asm/i387.h>
-#include <asm/xstate.h>
-#include <xen/hypercall.h>
-
-static unsigned long saved_fs_base, saved_gs_base, saved_kernel_gs_base;
-static uint64_t saved_xcr0;
-
-void save_rest_processor_state(void)
-{
-    saved_fs_base = rdfsbase();
-    saved_gs_base = rdgsbase();
-    rdmsrl(MSR_SHADOW_GS_BASE, saved_kernel_gs_base);
-
-    if ( cpu_has_xsave )
-        saved_xcr0 = get_xcr0();
-}
-
-
-void restore_rest_processor_state(void)
-{
-    load_system_tables();
-
-    /* Restore full CR4 (inc MCE) now that the IDT is in place. */
-    write_cr4(mmu_cr4_features);
-
-    wrfsbase(saved_fs_base);
-    wrgsbase(saved_gs_base);
-    wrmsrl(MSR_SHADOW_GS_BASE, saved_kernel_gs_base);
-
-    if ( cpu_has_xsave && !set_xcr0(saved_xcr0) )
-        BUG();
-
-    wrmsrl(MSR_IA32_CR_PAT, XEN_MSR_PAT);
-
-    mtrr_bp_restore();
-}
diff --git a/xen/arch/x86/acpi/wakeup_prot.S b/xen/arch/x86/acpi/wakeup_prot.S
index 0ce96e26a9..4dba6020a7 100644
--- a/xen/arch/x86/acpi/wakeup_prot.S
+++ b/xen/arch/x86/acpi/wakeup_prot.S
@@ -15,8 +15,6 @@ ENTRY(do_suspend_lowlevel)
         mov     %cr0, %rax
         mov     %rax, saved_cr0(%rip)
 
-        call    save_rest_processor_state
-
         /* enter sleep state physically */
         mov     $3, %edi
         call    acpi_enter_sleep_state
@@ -51,7 +49,7 @@ ENTRY(s3_resume)
         lretq
 1:
 
-        call restore_rest_processor_state
+        call    load_system_tables
 
 .Lsuspend_err:
         pop     %r15
diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 18c6638924..662e6bdd3c 100644
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -91,6 +91,11 @@ trampoline_protmode_entry:
         and     %edi,%edx
         wrmsr
 1:
+        /* Set up PAT before enabling paging. */
+        mov     $XEN_MSR_PAT & 0xffffffff, %eax
+        mov     $XEN_MSR_PAT >> 32, %edx
+        mov     $MSR_IA32_CR_PAT, %ecx
+        wrmsr
 
         /* Set up EFER (Extended Feature Enable Register). */
         movl    $MSR_EFER,%ecx
diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
index 1b33f1ed71..2e9631f6b2 100644
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -790,8 +790,6 @@ void cpu_init(void)
 	if (opt_cpu_info)
 		printk("Initializing CPU#%d\n", cpu);
 
-	wrmsrl(MSR_IA32_CR_PAT, XEN_MSR_PAT);
-
 	/* Install correct page table. */
 	write_ptbase(current);
 
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index a13304201f..176df20c9c 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -242,6 +242,7 @@ static void __init noreturn efi_arch_post_exit_boot(void)
     if ( cpu_has_nx )
         efer |= EFER_NX;
     wrmsrl(MSR_EFER, efer);
+    wrmsrl(MSR_IA32_CR_PAT, XEN_MSR_PAT);
     write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
               X86_CR0_AM | X86_CR0_PG);
     asm volatile ( "mov    %[cr4], %%cr4\n\t"
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 23:11:25 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 23:11:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jUIKz-0000Fj-D1; Thu, 30 Apr 2020 23:11:25 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jUIKy-0000FX-7O
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:24 +0000
X-Inumbo-ID: e8a56abd-8b37-11ea-9ac8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id e8a56abd-8b37-11ea-9ac8-12813bfff9fa;
 Thu, 30 Apr 2020 23:11:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=XoSU7zRmNitQ5T79HS8uk7s/5fIriACfOsTJmAFX7KA=; b=39IVseMphfH+ATUPUUoueQXGVd
 U+j1ZjfyktgG3S44+zLetCBZdNeJZUiZH8yutGtJSSDhrKOphmzH/F09dBb/Tp2pd9b/qHdsOxJVP
 1gOLaWWmWfGEVGotCQtOrC0VLqLEYZSjtpB4R3QuduizLuvKUQHb2MJKl31Grl/A70cQ=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUIKx-00078Y-3d
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:23 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUIKx-0000Ua-08
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:23 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/pv: Options to disable and/or compile out 32bit PV
 support
Message-Id: <E1jUIKx-0000Ua-08@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 23:11:22 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 68d757df8dd23b88bebfb6a56c9f51df59de969f
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Apr 17 12:39:40 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 21:13:00 2020 +0100

    x86/pv: Options to disable and/or compile out 32bit PV support
    
    This is the start of some performance and security-hardening improvements,
    based on the fact that 32bit PV guests are few and far between these days.
    
    Ring1 is full of architectural corner cases, such as counting as supervisor
    from a paging point of view.  This accounts for a substantial performance hit
    on processors from the last 8 years (adjusting SMEP/SMAP on every privilege
    transition), and the gap is only going to get bigger with new hardware
    features.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 docs/misc/xen-command-line.pandoc | 12 +++++++++++-
 xen/arch/x86/Kconfig              | 16 ++++++++++++++++
 xen/arch/x86/pv/domain.c          | 34 ++++++++++++++++++++++++++++++++++
 xen/arch/x86/setup.c              |  9 +++++++--
 xen/include/asm-x86/pv/domain.h   |  6 ++++++
 xen/include/xen/param.h           |  9 +++++++++
 6 files changed, 83 insertions(+), 3 deletions(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index acd0b3d994..ee12b0f53f 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1694,7 +1694,17 @@ The following resources are available:
     CDP, one COS will corespond two CBMs other than one with CAT, due to the
     sum of CBMs is fixed, that means actual `cos_max` in use will automatically
     reduce to half when CDP is enabled.
-	
+
+### pv
+    = List of [ 32=<bool> ]
+
+    Applicability: x86
+
+Controls for aspects of PV guest support.
+
+*   The `32` boolean controls whether 32bit PV guests can be created.  It
+    defaults to `true`, and is ignored when `CONFIG_PV32` is compiled out.
+
 ### pv-linear-pt (x86)
 > `= <boolean>`
 
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index a69be983d6..96432f1f69 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -49,6 +49,22 @@ config PV
 
 	  If unsure, say Y.
 
+config PV32
+	bool "Support for 32bit PV guests"
+	depends on PV
+	default y
+	---help---
+	  The 32bit PV ABI uses Ring1, an area of the x86 architecture which
+	  was deprecated and mostly removed in the AMD64 spec.  As a result,
+	  it occasionally conflicts with newer x86 hardware features, causing
+	  overheads for Xen to maintain backwards compatibility.
+
+	  People may wish to disable 32bit PV guests for attack surface
+	  reduction, or performance reasons.  Backwards compatibility can be
+	  provided via the PV Shim mechanism.
+
+	  If unsure, say Y.
+
 config PV_LINEAR_PT
        bool "Support for PV linear pagetables"
        depends on PV
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 43da5c179f..3579dc063e 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -16,6 +16,38 @@
 #include <asm/pv/domain.h>
 #include <asm/shadow.h>
 
+#ifdef CONFIG_PV32
+int8_t __read_mostly opt_pv32 = -1;
+#endif
+
+static __init int parse_pv(const char *s)
+{
+    const char *ss;
+    int val, rc = 0;
+
+    do {
+        ss = strchr(s, ',');
+        if ( !ss )
+            ss = strchr(s, '\0');
+
+        if ( (val = parse_boolean("32", s, ss)) >= 0 )
+        {
+#ifdef CONFIG_PV32
+            opt_pv32 = val;
+#else
+            no_config_param("PV32", "pv", s, ss);
+#endif
+        }
+        else
+            rc = -EINVAL;
+
+        s = ss + 1;
+    } while ( *ss );
+
+    return rc;
+}
+custom_param("pv", parse_pv);
+
 static __read_mostly enum {
     PCID_OFF,
     PCID_ALL,
@@ -174,6 +206,8 @@ int switch_compat(struct domain *d)
 
     BUILD_BUG_ON(offsetof(struct shared_info, vcpu_info) != 0);
 
+    if ( !opt_pv32 )
+        return -EOPNOTSUPP;
     if ( is_hvm_domain(d) || domain_tot_pages(d) != 0 )
         return -EACCES;
     if ( is_pv_32bit_domain(d) )
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index eb56d78c2f..9e9576344c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -53,6 +53,7 @@
 #include <asm/spec_ctrl.h>
 #include <asm/guest.h>
 #include <asm/microcode.h>
+#include <asm/pv/domain.h>
 
 /* opt_nosmp: If true, secondary processors are ignored. */
 static bool __initdata opt_nosmp;
@@ -1870,8 +1871,12 @@ void arch_get_xen_caps(xen_capabilities_info_t *info)
     {
         snprintf(s, sizeof(s), "xen-%d.%d-x86_64 ", major, minor);
         safe_strcat(*info, s);
-        snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
-        safe_strcat(*info, s);
+
+        if ( opt_pv32 )
+        {
+            snprintf(s, sizeof(s), "xen-%d.%d-x86_32p ", major, minor);
+            safe_strcat(*info, s);
+        }
     }
     if ( hvm_enabled )
     {
diff --git a/xen/include/asm-x86/pv/domain.h b/xen/include/asm-x86/pv/domain.h
index 7a69bfb303..df9716ff26 100644
--- a/xen/include/asm-x86/pv/domain.h
+++ b/xen/include/asm-x86/pv/domain.h
@@ -23,6 +23,12 @@
 
 #include <xen/sched.h>
 
+#ifdef CONFIG_PV32
+extern int8_t opt_pv32;
+#else
+# define opt_pv32 false
+#endif
+
 /*
  * PCID values for the address spaces of 64-bit pv domains:
  *
diff --git a/xen/include/xen/param.h b/xen/include/xen/param.h
index d4578cd27f..a1dc3ba8f0 100644
--- a/xen/include/xen/param.h
+++ b/xen/include/xen/param.h
@@ -127,4 +127,13 @@ extern const struct kernel_param __param_start[], __param_end[];
     string_param(_name, _var); \
     string_runtime_only_param(_name, _var)
 
+static inline void no_config_param(const char *cfg, const char *param,
+                                   const char *s, const char *e)
+{
+    int len = e ? ({ ASSERT(e >= s); e - s; }) : strlen(s);
+
+    printk(XENLOG_INFO "CONFIG_%s disabled - ignoring '%s=%*s' setting\n",
+           cfg, param, len, s);
+}
+
 #endif /* _XEN_PARAM_H */
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 23:11:35 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 23:11:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jUIL9-0000HQ-Eg; Thu, 30 Apr 2020 23:11:35 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jUIL8-0000HD-F8
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:34 +0000
X-Inumbo-ID: eeed5754-8b37-11ea-9ac8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id eeed5754-8b37-11ea-9ac8-12813bfff9fa;
 Thu, 30 Apr 2020 23:11:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=j07KInj5a7SB8bvvQCByMMc49TAWji0YkemE6rHv4q8=; b=4RP4vv3VmDut8Zfv6t6hpEGoqk
 VkwjrYF0xTFlqUJG+jg5pxAz/OrceWi22MEjkJ5mV2vPsgP9GKgi4fbaw/p7Cg5NCw+u2LTtdwhgi
 UqbzEU2Q7wNqfLtiVa7h+cwBof8cD5cMsDOEPWxCVoHBEcCGLoKIFscnuJ/+0P+W8o0A=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUIL7-00079y-Hy
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:33 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUIL7-0000VP-Em
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:33 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/pv: Short-circuit is_pv_{32,
 64}bit_domain() in !CONFIG_PV32 builds
Message-Id: <E1jUIL7-0000VP-Em@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 23:11:33 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 9050cf4816a77e2d8c9b3de47a68b7e12661135f
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Apr 17 15:36:06 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 21:13:00 2020 +0100

    x86/pv: Short-circuit is_pv_{32,64}bit_domain() in !CONFIG_PV32 builds
    
    ... and move arch.is_32bit_pv into the pv union while at it.
    
    Adjust the impacted code to use true/false, dropping the hunk
    pv_domain_initialise() which is storing 0 into an already zeroed
    datastructure.
    
    Bloat-o-meter reports the following net savings with some notable differences
    highlighted:
    
      add/remove: 4/6 grow/shrink: 5/76 up/down: 1955/-18792 (-16837)
      Function                                     old     new   delta
      ...
      pv_vcpu_initialise                           411     158    -253
      guest_cpuid                                 1837    1584    -253
      pv_hypercall                                 579     297    -282
      check_descriptor                             427     130    -297
      _get_page_type                              5915    5202    -713
      arch_get_info_guest                         2225    1195   -1030
      context_switch                              3831    2635   -1196
      dom0_construct_pv                          10284    8939   -1345
      arch_set_info_guest                         5564    3267   -2297
      Total: Before=3079563, After=3062726, chg -0.55%
    
    In principle, DOMAIN_is_32bit_pv should be based on CONFIG_PV32, but the
    assembly code is going to need further untangling before that becomes easy to
    do.  For now, use CONFIG_PV as missed accidentally by c/s ec651bd2460 "x86:
    make entry point code build when !CONFIG_PV".
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/domctl.c             |  4 ++--
 xen/arch/x86/pv/domain.c          |  7 ++-----
 xen/arch/x86/pv/hypercall.c       |  2 ++
 xen/arch/x86/x86_64/asm-offsets.c |  4 +++-
 xen/include/asm-x86/domain.h      |  4 ++--
 xen/include/xen/sched.h           | 15 +++++++++++++--
 6 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 03dffa5ecf..8c55db2f69 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -577,8 +577,8 @@ long arch_do_domctl(
             ret = -EOPNOTSUPP;
         else if ( is_pv_domain(d) )
         {
-            if ( ((domctl->u.address_size.size == 64) && !d->arch.is_32bit_pv) ||
-                 ((domctl->u.address_size.size == 32) && d->arch.is_32bit_pv) )
+            if ( ((domctl->u.address_size.size == 64) && !d->arch.pv.is_32bit) ||
+                 ((domctl->u.address_size.size == 32) &&  d->arch.pv.is_32bit) )
                 ret = 0;
             else if ( domctl->u.address_size.size == 32 )
                 ret = switch_compat(d);
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 3579dc063e..0a4a5bd001 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -214,7 +214,7 @@ int switch_compat(struct domain *d)
         return 0;
 
     d->arch.has_32bit_shinfo = 1;
-    d->arch.is_32bit_pv = 1;
+    d->arch.pv.is_32bit = true;
 
     for_each_vcpu( d, v )
     {
@@ -234,7 +234,7 @@ int switch_compat(struct domain *d)
     return 0;
 
  undo_and_fail:
-    d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 0;
+    d->arch.pv.is_32bit = d->arch.has_32bit_shinfo = false;
     for_each_vcpu( d, v )
     {
         free_compat_arg_xlat(v);
@@ -352,9 +352,6 @@ int pv_domain_initialise(struct domain *d)
 
     d->arch.ctxt_switch = &pv_csw;
 
-    /* 64-bit PV guest by default. */
-    d->arch.is_32bit_pv = d->arch.has_32bit_shinfo = 0;
-
     d->arch.pv.xpti = is_hardware_domain(d) ? opt_xpti_hwdom : opt_xpti_domu;
 
     if ( !is_pv_32bit_domain(d) && use_invpcid && cpu_has_pcid )
diff --git a/xen/arch/x86/pv/hypercall.c b/xen/arch/x86/pv/hypercall.c
index 686a7f2c5c..b0d1d0ed77 100644
--- a/xen/arch/x86/pv/hypercall.c
+++ b/xen/arch/x86/pv/hypercall.c
@@ -302,6 +302,7 @@ void pv_ring3_init_hypercall_page(void *p)
     }
 }
 
+#ifdef CONFIG_PV32
 void pv_ring1_init_hypercall_page(void *p)
 {
     unsigned int i;
@@ -329,6 +330,7 @@ void pv_ring1_init_hypercall_page(void *p)
         *(u8  *)(p+ 7) = 0xc3;    /* ret */
     }
 }
+#endif
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 500df7a3e7..9f66a69be7 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -98,8 +98,10 @@ void __dummy__(void)
     OFFSET(VCPU_nsvm_hap_enabled, struct vcpu, arch.hvm.nvcpu.u.nsvm.ns_hap_enabled);
     BLANK();
 
-    OFFSET(DOMAIN_is_32bit_pv, struct domain, arch.is_32bit_pv);
+#ifdef CONFIG_PV
+    OFFSET(DOMAIN_is_32bit_pv, struct domain, arch.pv.is_32bit);
     BLANK();
+#endif
 
     OFFSET(VCPUINFO_upcall_pending, struct vcpu_info, evtchn_upcall_pending);
     OFFSET(VCPUINFO_upcall_mask, struct vcpu_info, evtchn_upcall_mask);
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index b10d74fb57..5b6d909266 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -262,6 +262,8 @@ struct pv_domain
 
     atomic_t nr_l4_pages;
 
+    /* Is a 32-bit PV guest? */
+    bool is_32bit;
     /* XPTI active? */
     bool xpti;
     /* Use PCID feature? */
@@ -341,8 +343,6 @@ struct arch_domain
     /* NB. protected by d->event_lock and by irq_desc[irq].lock */
     struct radix_tree_root irq_pirq;
 
-    /* Is a 32-bit PV (non-HVM) guest? */
-    bool_t is_32bit_pv;
     /* Is shared-info page in 32-bit format? */
     bool_t has_32bit_shinfo;
 
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 195e7ee583..6101761d25 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -985,7 +985,11 @@ static always_inline bool is_pv_vcpu(const struct vcpu *v)
 #ifdef CONFIG_COMPAT
 static always_inline bool is_pv_32bit_domain(const struct domain *d)
 {
-    return is_pv_domain(d) && d->arch.is_32bit_pv;
+#ifdef CONFIG_PV32
+    return is_pv_domain(d) && d->arch.pv.is_32bit;
+#else
+    return false;
+#endif
 }
 
 static always_inline bool is_pv_32bit_vcpu(const struct vcpu *v)
@@ -995,7 +999,14 @@ static always_inline bool is_pv_32bit_vcpu(const struct vcpu *v)
 
 static always_inline bool is_pv_64bit_domain(const struct domain *d)
 {
-    return is_pv_domain(d) && !d->arch.is_32bit_pv;
+    if ( !is_pv_domain(d) )
+        return false;
+
+#ifdef CONFIG_PV32
+    return !d->arch.pv.is_32bit;
+#else
+    return true;
+#endif
 }
 
 static always_inline bool is_pv_64bit_vcpu(const struct vcpu *v)
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 23:11:46 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 23:11:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jUILK-0000Jo-Hj; Thu, 30 Apr 2020 23:11:46 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jUILI-0000JW-Lw
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:44 +0000
X-Inumbo-ID: f5182b72-8b37-11ea-9ac8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id f5182b72-8b37-11ea-9ac8-12813bfff9fa;
 Thu, 30 Apr 2020 23:11:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=qEp4ceJdT2QM0hyHnwJjHfOLYHclr+olTAdihAKkW60=; b=BAKBQNeLVIfOeuIQ5LDVjgdAc3
 6lv7xxUB6jOVuFZhAmT0x9tdN3Yo3V2oZgQMJIUmW9eicem5tcdUH5cUficuiRiCFRQ1j/I8BvWvI
 Z0+vEzEMD9iZU2eDY423aId2g231ulerUeqwHrUzx332q74/g8JlRSVrYZSh641gS80k=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUILH-0007AE-T6
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:43 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUILH-0000Wa-R4
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:43 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/pv: Compile out compat_gdt in !CONFIG_PV builds
Message-Id: <E1jUILH-0000Wa-R4@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 23:11:43 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 950f41a9da4a151dfb9701eccffedb78cf752adc
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Fri Apr 17 15:49:59 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 21:13:00 2020 +0100

    x86/pv: Compile out compat_gdt in !CONFIG_PV builds
    
    There is no need for the Compat GDT if there are no 32bit PV guests.  This
    saves 4k per online CPU
    
    Bloat-o-meter reports the following savings in Xen itself:
    
      add/remove: 0/3 grow/shrink: 1/4 up/down: 7/-4612 (-4605)
      Function                                     old     new   delta
      cpu_smpboot_free                            1249    1256      +7
      per_cpu__compat_gdt_l1e                        8       -      -8
      per_cpu__compat_gdt                            8       -      -8
      init_idt_traps                               442     420     -22
      load_system_tables                           414     364     -50
      trap_init                                    444     280    -164
      cpu_smpboot_callback                        1255     991    -264
      boot_compat_gdt                             4096       -   -4096
      Total: Before=3062726, After=3058121, chg -0.15%
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Wei Liu <wl@xen.org>
    Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/cpu/common.c |  5 +++--
 xen/arch/x86/desc.c       |  2 ++
 xen/arch/x86/smpboot.c    |  5 ++++-
 xen/arch/x86/traps.c      | 10 +++++++---
 4 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c
index 2e9631f6b2..131ff03fcf 100644
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -752,8 +752,9 @@ void load_system_tables(void)
 
 	_set_tssldt_desc(gdt + TSS_ENTRY, (unsigned long)tss,
 			 sizeof(*tss) - 1, SYS_DESC_tss_avail);
-	_set_tssldt_desc(compat_gdt + TSS_ENTRY, (unsigned long)tss,
-			 sizeof(*tss) - 1, SYS_DESC_tss_busy);
+	if ( IS_ENABLED(CONFIG_PV32) )
+		_set_tssldt_desc(compat_gdt + TSS_ENTRY, (unsigned long)tss,
+				 sizeof(*tss) - 1, SYS_DESC_tss_busy);
 
 	per_cpu(full_gdt_loaded, cpu) = false;
 	lgdt(&gdtr);
diff --git a/xen/arch/x86/desc.c b/xen/arch/x86/desc.c
index dfeb1beaa8..39080ca672 100644
--- a/xen/arch/x86/desc.c
+++ b/xen/arch/x86/desc.c
@@ -55,6 +55,7 @@ seg_desc_t boot_gdt[PAGE_SIZE / sizeof(seg_desc_t)] =
     [SEL2GDT(PER_CPU_SELECTOR)] =     { 0x0000910000000000 },
 };
 
+#ifdef CONFIG_PV32
 __section(".data.page_aligned") __aligned(PAGE_SIZE)
 seg_desc_t boot_compat_gdt[PAGE_SIZE / sizeof(seg_desc_t)] =
 {
@@ -83,6 +84,7 @@ seg_desc_t boot_compat_gdt[PAGE_SIZE / sizeof(seg_desc_t)] =
     /* 0xe060 - per-CPU entry (limit == cpu) */
     [SEL2GDT(PER_CPU_SELECTOR)] =     { 0x0000910000000000 },
 };
+#endif
 
 /*
  * Used by each CPU as it starts up, to enter C with a suitable %cs.
diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c
index 275ce7661d..5a3786d399 100644
--- a/xen/arch/x86/smpboot.c
+++ b/xen/arch/x86/smpboot.c
@@ -968,7 +968,8 @@ static void cpu_smpboot_free(unsigned int cpu, bool remove)
             free_domheap_page(mfn_to_page(mfn));
     }
 
-    FREE_XENHEAP_PAGE(per_cpu(compat_gdt, cpu));
+    if ( IS_ENABLED(CONFIG_PV32) )
+        FREE_XENHEAP_PAGE(per_cpu(compat_gdt, cpu));
 
     if ( remove )
     {
@@ -1010,6 +1011,7 @@ static int cpu_smpboot_alloc(unsigned int cpu)
     BUILD_BUG_ON(NR_CPUS > 0x10000);
     gdt[PER_CPU_GDT_ENTRY - FIRST_RESERVED_GDT_ENTRY].a = cpu;
 
+#ifdef CONFIG_PV32
     per_cpu(compat_gdt, cpu) = gdt = alloc_xenheap_pages(0, memflags);
     if ( gdt == NULL )
         goto out;
@@ -1017,6 +1019,7 @@ static int cpu_smpboot_alloc(unsigned int cpu)
         l1e_from_pfn(virt_to_mfn(gdt), __PAGE_HYPERVISOR_RW);
     memcpy(gdt, boot_compat_gdt, NR_RESERVED_GDT_PAGES * PAGE_SIZE);
     gdt[PER_CPU_GDT_ENTRY - FIRST_RESERVED_GDT_ENTRY].a = cpu;
+#endif
 
     if ( idt_tables[cpu] == NULL )
         idt_tables[cpu] = alloc_xenheap_pages(0, memflags);
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index e838846c6b..0bcf554e93 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -100,8 +100,10 @@ static DEFINE_PER_CPU(unsigned long, last_extable_addr);
 
 DEFINE_PER_CPU_READ_MOSTLY(seg_desc_t *, gdt);
 DEFINE_PER_CPU_READ_MOSTLY(l1_pgentry_t, gdt_l1e);
+#ifdef CONFIG_PV32
 DEFINE_PER_CPU_READ_MOSTLY(seg_desc_t *, compat_gdt);
 DEFINE_PER_CPU_READ_MOSTLY(l1_pgentry_t, compat_gdt_l1e);
+#endif
 
 /* Master table, used by CPU0. */
 idt_entry_t __section(".bss.page_aligned") __aligned(PAGE_SIZE)
@@ -1999,7 +2001,8 @@ void __init init_idt_traps(void)
     idt_tables[0] = idt_table;
 
     this_cpu(gdt) = boot_gdt;
-    this_cpu(compat_gdt) = boot_compat_gdt;
+    if ( IS_ENABLED(CONFIG_PV32) )
+        this_cpu(compat_gdt) = boot_compat_gdt;
 }
 
 extern void (*const autogen_entrypoints[X86_NR_VECTORS])(void);
@@ -2030,8 +2033,9 @@ void __init trap_init(void)
     /* Cache {,compat_}gdt_l1e now that physically relocation is done. */
     this_cpu(gdt_l1e) =
         l1e_from_pfn(virt_to_mfn(boot_gdt), __PAGE_HYPERVISOR_RW);
-    this_cpu(compat_gdt_l1e) =
-        l1e_from_pfn(virt_to_mfn(boot_compat_gdt), __PAGE_HYPERVISOR_RW);
+    if ( IS_ENABLED(CONFIG_PV32) )
+        this_cpu(compat_gdt_l1e) =
+            l1e_from_pfn(virt_to_mfn(boot_compat_gdt), __PAGE_HYPERVISOR_RW);
 
     percpu_traps_init();
 
--
generated by git-patchbot for /home/xen/git/xen.git#master


From xen-changelog-bounces@lists.xenproject.org Thu Apr 30 23:11:56 2020
Return-path: <xen-changelog-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 30 Apr 2020 23:11:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-changelog-bounces@lists.xenproject.org>)
	id 1jUILU-0000LK-JO; Thu, 30 Apr 2020 23:11:56 +0000
Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]
 helo=us1-amaz-eas2.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QZ5+=6O=eu.citrix.com=ian.jackson@srs-us1.protection.inumbo.net>)
 id 1jUILT-0000L3-3b
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:55 +0000
X-Inumbo-ID: fa817597-8b37-11ea-9ac8-12813bfff9fa
Received: from mail.xenproject.org (unknown [104.130.215.37])
 by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS
 id fa817597-8b37-11ea-9ac8-12813bfff9fa;
 Thu, 30 Apr 2020 23:11:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
 s=20200302mail; h=Date:Message-Id:Subject:Reply-To:To:From:Sender:Cc:
 MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=Mq0HQYI6eozlj10uKJ9G2DyBA+FXEfq0vS2QwveQIfI=; b=kgwgEBSEfTFk514nrzr7BeQQ5Z
 KlxSM0QiAuL2ijVtrEBHZEEo6nlv15MP10lTylzOQgMEG2vaBTbGe7AgrLaDa56RYc9MHe8yOuZ1j
 tK+GPBR81+lL7yx2xioARY6jsCRf393TmAIsz2zwNtGKonpGAdKA3+sysg2VtOuHsxkk=;
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUILS-0007AN-64
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:54 +0000
Received: from xen by xenbits.xenproject.org with local (Exim 4.89)
 (envelope-from <ian.jackson@eu.citrix.com>) id 1jUILS-0000XY-54
 for xen-changelog@lists.xenproject.org; Thu, 30 Apr 2020 23:11:54 +0000
From: patchbot@xen.org
To: xen-changelog@lists.xenproject.org
Subject: [xen master] x86/boot: Don't enable EFER.SCE for !CONFIG_PV builds
Message-Id: <E1jUILS-0000XY-54@xenbits.xenproject.org>
Date: Thu, 30 Apr 2020 23:11:54 +0000
X-BeenThere: xen-changelog@lists.xenproject.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Change log for Mercurial \(receive only\)"
 <xen-changelog.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-changelog@lists.xenproject.org>
List-Help: <mailto:xen-changelog-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-changelog>, 
 <mailto:xen-changelog-request@lists.xenproject.org?subject=subscribe>
Reply-To: xen-devel@lists.xenproject.org
Errors-To: xen-changelog-bounces@lists.xenproject.org
Sender: "Xen-changelog" <xen-changelog-bounces@lists.xenproject.org>

commit 8065e1b41688592778de76c731c62f34e71f3129
Author:     Andrew Cooper <andrew.cooper3@citrix.com>
AuthorDate: Mon Apr 20 14:36:53 2020 +0100
Commit:     Andrew Cooper <andrew.cooper3@citrix.com>
CommitDate: Wed Apr 29 21:13:00 2020 +0100

    x86/boot: Don't enable EFER.SCE for !CONFIG_PV builds
    
    This will cause all SYSCALL/SYSRET instructions to suffer #UD rather than
    following the MSR_{L,C}STAR pointers, allowing us to drop the star_enter()
    panic helper, allowing us to clean up the IST stacks in a subsequent patch.
    
    Drop the now-dead conditional SYSENTER logic in the middle of
    subarch_percpu_traps_init().
    
    In addition, vmx_restore_host_msrs() need not restore any host
    state.  (Regarding the asymmetric changes, VT-x automatically restores
    SYSENTER state on vmexit, and SVM restores both SYSCALL/SYSENTER state with
    the VMSAVE/VMLOAD instructions.)
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Kevin Tian <kevin.tian@intel.com>
---
 xen/arch/x86/boot/trampoline.S |  4 ++--
 xen/arch/x86/efi/efi-boot.h    |  4 +---
 xen/arch/x86/hvm/vmx/vmx.c     |  4 ++++
 xen/arch/x86/x86_64/traps.c    | 19 ++++++-------------
 4 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 662e6bdd3c..cdecf949b4 100644
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -145,9 +145,9 @@ gdt_48:
 GLOBAL(trampoline_misc_enable_off)
         .quad   0
 
-/* EFER OR-mask for boot paths.  This gets adjusted with NX when available. */
+/* EFER OR-mask for boot paths.  SCE conditional on PV support, NX added when available. */
 GLOBAL(trampoline_efer)
-        .long   EFER_LME | EFER_SCE
+        .long   EFER_LME | (EFER_SCE * IS_ENABLED(CONFIG_PV))
 
 GLOBAL(trampoline_xen_phys_start)
         .long   0
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 176df20c9c..7188c9a551 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -238,9 +238,7 @@ static void __init noreturn efi_arch_post_exit_boot(void)
     /* Set system registers and transfer control. */
     asm volatile("pushq $0\n\tpopfq");
     rdmsrl(MSR_EFER, efer);
-    efer |= EFER_SCE;
-    if ( cpu_has_nx )
-        efer |= EFER_NX;
+    efer |= trampoline_efer;
     wrmsrl(MSR_EFER, efer);
     wrmsrl(MSR_IA32_CR_PAT, XEN_MSR_PAT);
     write_cr0(X86_CR0_PE | X86_CR0_MP | X86_CR0_ET | X86_CR0_NE | X86_CR0_WP |
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index b4cf2eb4c1..6efa80e422 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -496,6 +496,10 @@ static void vmx_vcpu_destroy(struct vcpu *v)
  */
 static void vmx_restore_host_msrs(void)
 {
+    /* No PV guests?  No need to restore host SYSCALL infrastructure. */
+    if ( !IS_ENABLED(CONFIG_PV) )
+        return;
+
     /* Relies on the SYSCALL trampoline being at the start of the stubs. */
     wrmsrl(MSR_STAR,         XEN_MSR_STAR);
     wrmsrl(MSR_LSTAR,        this_cpu(stubs.addr));
diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c
index c3d4faea6b..93af0c5e87 100644
--- a/xen/arch/x86/x86_64/traps.c
+++ b/xen/arch/x86/x86_64/traps.c
@@ -299,17 +299,8 @@ static unsigned int write_stub_trampoline(
 
 DEFINE_PER_CPU(struct stubs, stubs);
 
-#ifdef CONFIG_PV
 void lstar_enter(void);
 void cstar_enter(void);
-#else
-static void __cold star_enter(void)
-{
-    panic("lstar/cstar\n");
-}
-#define lstar_enter star_enter
-#define cstar_enter star_enter
-#endif /* CONFIG_PV */
 
 void subarch_percpu_traps_init(void)
 {
@@ -321,6 +312,10 @@ void subarch_percpu_traps_init(void)
     /* IST_MAX IST pages + at least 1 guard page + primary stack. */
     BUILD_BUG_ON((IST_MAX + 1) * PAGE_SIZE + PRIMARY_STACK_SIZE > STACK_SIZE);
 
+    /* No PV guests?  No need to set up SYSCALL/SYSENTER infrastructure. */
+    if ( !IS_ENABLED(CONFIG_PV) )
+        return;
+
     stub_page = map_domain_page(_mfn(this_cpu(stubs.mfn)));
 
     /*
@@ -338,10 +333,8 @@ void subarch_percpu_traps_init(void)
     {
         /* SYSENTER entry. */
         wrmsrl(MSR_IA32_SYSENTER_ESP, stack_bottom);
-        wrmsrl(MSR_IA32_SYSENTER_EIP,
-               IS_ENABLED(CONFIG_PV) ? (unsigned long)sysenter_entry : 0);
-        wrmsr(MSR_IA32_SYSENTER_CS,
-              IS_ENABLED(CONFIG_PV) ? __HYPERVISOR_CS : 0, 0);
+        wrmsrl(MSR_IA32_SYSENTER_EIP, (unsigned long)sysenter_entry);
+        wrmsr(MSR_IA32_SYSENTER_CS, __HYPERVISOR_CS, 0);
     }
 
     /* Trampoline for SYSCALL entry from compatibility mode. */
--
generated by git-patchbot for /home/xen/git/xen.git#master


