From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00, CHARSET_FARAWAY_HEADER,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B3C1CC433E9 for ; Thu, 3 Sep 2020 13:39:11 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6CA012072A for ; Thu, 3 Sep 2020 13:39:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6CA012072A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=zhaoxin.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:35100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kDpSI-0002BP-Iw for qemu-devel@archiver.kernel.org; Thu, 03 Sep 2020 09:39:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37830) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kDnLx-0007eG-Ny for qemu-devel@nongnu.org; Thu, 03 Sep 2020 07:24:29 -0400 Received: from [203.148.12.82] (port=43291 helo=ZXSHCAS2.zhaoxin.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kDnLt-0007qd-68 for qemu-devel@nongnu.org; Thu, 03 Sep 2020 07:24:29 -0400 Received: from zxbjmbx3.zhaoxin.com (10.29.252.165) by ZXSHCAS2.zhaoxin.com (10.28.252.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Thu, 3 Sep 2020 19:24:16 +0800 Received: from zxbjmbx1.zhaoxin.com (10.29.252.163) by zxbjmbx3.zhaoxin.com (10.29.252.165) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Thu, 3 Sep 2020 19:24:15 +0800 Received: from zxbjmbx1.zhaoxin.com ([fe80::290a:f538:51e7:1416]) by zxbjmbx1.zhaoxin.com ([fe80::290a:f538:51e7:1416%16]) with mapi id 15.01.1979.003; Thu, 3 Sep 2020 19:24:15 +0800 From: FelixCui-oc To: Paolo Bonzini , Richard Henderson , Eduardo Habkost Subject: =?gb2312?B?tPC4tDogW1BBVENIIDEvMV0gU2tpcCBmbGF0dmlld19zaW1wbGlmeSgpIGZv?= =?gb2312?Q?r_specific_cpu_vendor?= Thread-Topic: [PATCH 1/1] Skip flatview_simplify() for specific cpu vendor Thread-Index: AQHWgdeRAj24Xg9au0WX5GoWcziw/KlWMruAgACLhxg= Date: Thu, 3 Sep 2020 11:24:15 +0000 Message-ID: References: <20200903094935.2361-1-FelixCui-oc@zhaoxin.com> <20200903094935.2361-2-FelixCui-oc@zhaoxin.com>, <612db96b-2f7b-1f98-4da8-46bccff9adca@redhat.com> In-Reply-To: <612db96b-2f7b-1f98-4da8-46bccff9adca@redhat.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.29.8.19] Content-Type: multipart/alternative; boundary="_000_d91ca1499e3347278f9a33a8fc314919zhaoxincom_" MIME-Version: 1.0 X-Host-Lookup-Failed: Reverse DNS lookup failed for 203.148.12.82 (failed) Received-SPF: pass client-ip=203.148.12.82; envelope-from=FelixCui-oc@zhaoxin.com; helo=ZXSHCAS2.zhaoxin.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/03 05:49:52 X-ACL-Warn: Detected OS = Windows 7 or 8 [fuzzy] X-Spam_score_int: 45 X-Spam_score: 4.5 X-Spam_bar: ++++ X-Spam_report: (4.5 / 5.0 requ) BAYES_00=-1.9, CHARSET_FARAWAY_HEADER=3.2, HTML_MESSAGE=0.001, MIME_CHARSET_FARAWAY=2.45, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Thu, 03 Sep 2020 09:34:31 -0400 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tony W Wang-oc , RockCui-oc , "qemu-devel@nongnu.org" , Peter Xu , CobeChen-oc Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" --_000_d91ca1499e3347278f9a33a8fc314919zhaoxincom_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 DQo+SSB0aGluayB5b3UncmUgc2VlaW5nIGlzc3VlcyB3aGVuIGEgZ3Vlc3QgYWNjZXNzZXMgYW4g YWRqYWNlbnQgbWFwcGluZw0KPmJldHdlZW4gdGhlIGRlbGV0ZSBhbmQgYWRkIHBoYXNlcyBvZiB0 aGUgS1ZNIE1lbW9yeUxpc3RlbmVyLg0KDQo+V2UncmUgY29uc2lkZXJpbmcgZml4aW5nIHRoYXQg aW4gdGhlIGtlcm5lbCwgYnkgYWRkaW5nIGEgbmV3IGlvY3RsIHRoYXQNCj5jaGFuZ2VzIHRoZSB3 aG9sZSBtZW1vcnkgbWFwIGluIGEgc2luZ2xlIHN0ZXAuICBJIGFtIENDaW5nIFBldGVyIFh1Lg0K DQoNCmhpIHBhb2xvLA0KDQogICAgICAgICAgICAgIFdoYXQgeW91IHNhaWQgaXMgdmVyeSBzaW1p bGFyIHRvIG15IGlzc3Vlcy4gTXkgcHJvYmxlbSBpcyBoYXBwZW5lZCB3aGVuIGEgRUhDSSBkZXZp Y2UgYWNjZXNzZXMgYW4gYWRqYWNlbnQgbWFwcGluZyBiZXR3ZWVuIHRoZSBkZWxldGUgYW5kIGFk ZCBwaGFzZXMgb2YgdGhlIFZGSU8gTWVtb3J5TGlzdGVuZXIuDQoNClZGSU8gTWVtb3J5TGlzdGVu ZXIgIGlzIGFsc28gaW5jbHVkZWQgdW5kZXIgYWRkcmVzc19zcGFjZV9tZW1vcnkuDQoNCiAgICAg ICAgICAgICAgRG9lcyBhZGRpbmcgYSBuZXcgaW9jdGwgYWxzbyBhcHBseSB0byBWRklPIE1lbW9y eUxpc3RlbmVyPw0KDQoNCkJlc3QgcmVnYXJkcw0KDQpGZWxpeGN1aS1vYw0KDQoNCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fDQq3orz+yMs6IFBhb2xvIEJvbnppbmkgPHBib256aW5p QHJlZGhhdC5jb20+DQq3osvNyrG85DogMjAyMMTqOdTCM8jVIDE4OjM3OjQ3DQrK1bz+yMs6IEZl bGl4Q3VpLW9jOyBSaWNoYXJkIEhlbmRlcnNvbjsgRWR1YXJkbyBIYWJrb3N0DQqzrcvNOiBxZW11 LWRldmVsQG5vbmdudS5vcmc7IFJvY2tDdWktb2M7IFRvbnkgVyBXYW5nLW9jOyBDb2JlQ2hlbi1v YzsgUGV0ZXIgWHUNCtb3zOI6IFJlOiBbUEFUQ0ggMS8xXSBTa2lwIGZsYXR2aWV3X3NpbXBsaWZ5 KCkgZm9yIHNwZWNpZmljIGNwdSB2ZW5kb3INCg0KT24gMDMvMDkvMjAgMTE6NDksIEZlbGl4Q3Vp b2Mgd3JvdGU6DQo+IEZsYXR2aWV3X3NpbXBsaWZ5KCkgd2lsbCBtZXJnZSBtYW55IGFkZHJlc3Mg cmFuZ2VzDQo+IGludG8gb25lIHJhbmdlLldoZW4gYSBwYXJ0IG9mIHRoZSBiaWcgcmFuZ2UgbmVl ZHMNCj4gdG8gYmUgY2hhbmdlZCx0aGlzIHdpbGwgY2F1c2Ugc29tZSBpbm5vY2VudCBtYXBwaW5n cw0KPiB0byBiZSB1bm1hcHBlZC5TbyB3ZSB3YW50IHRvIHNraXAgZmxhdHZpZXdfc2ltcGxpZnko KS4NCj4NCj4gU2lnbmVkLW9mZi1ieTogRmVsaXhDdWlvYyA8RmVsaXhDdWktb2NAemhhb3hpbi5j b20+DQoNClRoaXMgaGFzIHNldmVyYWwgaXNzdWVzLiAgSW4gbm8gcGFydGljdWxhciBvcmRlcjoN Cg0KMSkgeW91J3JlIGFkZGluZyBob3N0X2dldF92ZW5kb3IgdG8gdGFyZ2V0L2kzODYvY3B1LmMg c28gdGhpcyBkb2VzIG5vdA0KZXZlbiBidWlsZCBmb3IgdGhlIGRlZmF1bHQgIi4uL2NvbmZpZ3Vy ZSAmJiBtYWtlIi4NCg0KMikgeW91J3JlIGFkZGluZyBhIGNoZWNrIGZvciB0aGUgaG9zdCwgYnV0 IHRoZSBidWcgYXBwbGllcyB0byBhbGwgaG9zdHMuDQogSWYgdGhlcmUgaXMgYSBidWcgb24geDg2 IGhhcmR3YXJlIGVtdWxhdGlvbiwgaXQgc2hvdWxkIGJlIGZpeGVkIGV2ZW4NCndoZW4gZW11bGF0 aW5nIHg4NiBmcm9tIEFSTS4NCg0KMykgeW91J3JlIG5vdCBleHBsYWluaW5nIHdoYXQgaXMgdGhl IGJpZyByYW5nZSBhbmQgaG93IHRoZSBidWcgaXMNCm1hbmlmZXN0aW5nLg0KDQpJIHRoaW5rIHlv dSdyZSBzZWVpbmcgaXNzdWVzIHdoZW4gYSBndWVzdCBhY2Nlc3NlcyBhbiBhZGphY2VudCBtYXBw aW5nDQpiZXR3ZWVuIHRoZSBkZWxldGUgYW5kIGFkZCBwaGFzZXMgb2YgdGhlIEtWTSBNZW1vcnlM aXN0ZW5lci4gIFdlJ3JlDQpjb25zaWRlcmluZyBmaXhpbmcgdGhhdCBpbiB0aGUga2VybmVsLCBi eSBhZGRpbmcgYSBuZXcgaW9jdGwgdGhhdA0KY2hhbmdlcyB0aGUgd2hvbGUgbWVtb3J5IG1hcCBp biBhIHNpbmdsZSBzdGVwLiAgSSBhbSBDQ2luZyBQZXRlciBYdS4NCg0KUGFvbG8NCg0KDQo+IC0t LQ0KPiAgc29mdG1tdS9tZW1vcnkuYyAgfCAxNiArKysrKysrKysrKysrKystDQo+ICB0YXJnZXQv aTM4Ni9jcHUuYyB8ICA4ICsrKysrKysrDQo+ICB0YXJnZXQvaTM4Ni9jcHUuaCB8ICAzICsrKw0K PiAgMyBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+DQo+ IGRpZmYgLS1naXQgYS9zb2Z0bW11L21lbW9yeS5jIGIvc29mdG1tdS9tZW1vcnkuYw0KPiBpbmRl eCA3MGI5MzEwNGU4Li4zNDhlOWRiNjIyIDEwMDY0NA0KPiAtLS0gYS9zb2Z0bW11L21lbW9yeS5j DQo+ICsrKyBiL3NvZnRtbXUvbWVtb3J5LmMNCj4gQEAgLTY5OSw2ICs2OTksMTggQEAgc3RhdGlj IE1lbW9yeVJlZ2lvbiAqbWVtb3J5X3JlZ2lvbl9nZXRfZmxhdHZpZXdfcm9vdChNZW1vcnlSZWdp b24gKm1yKQ0KPiAgICAgIHJldHVybiBOVUxMOw0KPiAgfQ0KPg0KPiArc3RhdGljIGJvb2wgc2tp cF9zaW1wbGlmeSh2b2lkKQ0KPiArew0KPiArICAgIGNoYXIgdmVuZG9yW0NQVUlEX1ZFTkRPUl9T WiArIDFdID0geyAwIH07DQo+ICsgICAgaG9zdF9nZXRfdmVuZG9yKHZlbmRvcik7DQo+ICsgICAg aWYgKCFzdHJuY21wKHZlbmRvciwgQ1BVSURfVkVORE9SX1ZJQSwgc3RybGVuKENQVUlEX1ZFTkRP Ul9WSUEpKQ0KPiArICAgICAgICB8fCAhc3RybmNtcCh2ZW5kb3IsIENQVUlEX1ZFTkRPUl9aSEFP WElOLA0KPiArICAgICAgICAgICAgICAgICAgICBzdHJsZW4oQ1BVSURfVkVORE9SX1pIQU9YSU4p KSkgew0KPiArICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gKyAgICB9DQo+ICsgICAgcmV0dXJuIGZh bHNlOw0KPiArfQ0KPiArDQo+ICAvKiBSZW5kZXIgYSBtZW1vcnkgdG9wb2xvZ3kgaW50byBhIGxp c3Qgb2YgZGlzam9pbnQgYWJzb2x1dGUgcmFuZ2VzLiAqLw0KPiAgc3RhdGljIEZsYXRWaWV3ICpn ZW5lcmF0ZV9tZW1vcnlfdG9wb2xvZ3koTWVtb3J5UmVnaW9uICptcikNCj4gIHsNCj4gQEAgLTcx Miw3ICs3MjQsOSBAQCBzdGF0aWMgRmxhdFZpZXcgKmdlbmVyYXRlX21lbW9yeV90b3BvbG9neShN ZW1vcnlSZWdpb24gKm1yKQ0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRycmFu Z2VfbWFrZShpbnQxMjhfemVybygpLCBpbnQxMjhfMl82NCgpKSwNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNlKTsNCj4gICAgICB9DQo+IC0gICAgZmxhdHZpZXdf c2ltcGxpZnkodmlldyk7DQo+ICsgICAgaWYgKCFza2lwX3NpbXBsaWZ5KCkpIHsNCj4gKyAgICAg ICAgZmxhdHZpZXdfc2ltcGxpZnkodmlldyk7DQo+ICsgICAgfQ0KPg0KPiAgICAgIHZpZXctPmRp c3BhdGNoID0gYWRkcmVzc19zcGFjZV9kaXNwYXRjaF9uZXcodmlldyk7DQo+ICAgICAgZm9yIChp ID0gMDsgaSA8IHZpZXctPm5yOyBpKyspIHsNCj4gZGlmZiAtLWdpdCBhL3RhcmdldC9pMzg2L2Nw dS5jIGIvdGFyZ2V0L2kzODYvY3B1LmMNCj4gaW5kZXggNDlkODk1ODUyOC4uMDg1MDhjODU4MCAx MDA2NDQNCj4gLS0tIGEvdGFyZ2V0L2kzODYvY3B1LmMNCj4gKysrIGIvdGFyZ2V0L2kzODYvY3B1 LmMNCj4gQEAgLTE2NjQsNiArMTY2NCwxNCBAQCB2b2lkIGhvc3RfY3B1aWQodWludDMyX3QgZnVu Y3Rpb24sIHVpbnQzMl90IGNvdW50LA0KPiAgICAgICAgICAqZWR4ID0gdmVjWzNdOw0KPiAgfQ0K Pg0KPiArdm9pZCBob3N0X2dldF92ZW5kb3IoY2hhciAqdmVuZG9yKQ0KPiArew0KPiArICAgIHVp bnQzMl90IGVheCwgZWJ4LCBlY3gsIGVkeDsNCj4gKw0KPiArICAgIGhvc3RfY3B1aWQoMHgwLCAw LCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsNCj4gKyAgICB4ODZfY3B1X3ZlbmRvcl93b3JkczJz dHIodmVuZG9yLCBlYngsIGVkeCwgZWN4KTsNCj4gK30NCj4gKw0KPiAgdm9pZCBob3N0X3ZlbmRv cl9mbXMoY2hhciAqdmVuZG9yLCBpbnQgKmZhbWlseSwgaW50ICptb2RlbCwgaW50ICpzdGVwcGlu ZykNCj4gIHsNCj4gICAgICB1aW50MzJfdCBlYXgsIGVieCwgZWN4LCBlZHg7DQo+IGRpZmYgLS1n aXQgYS90YXJnZXQvaTM4Ni9jcHUuaCBiL3RhcmdldC9pMzg2L2NwdS5oDQo+IGluZGV4IGQzMDk3 YmU2YTUuLjE0YzhiNGMwOWYgMTAwNjQ0DQo+IC0tLSBhL3RhcmdldC9pMzg2L2NwdS5oDQo+ICsr KyBiL3RhcmdldC9pMzg2L2NwdS5oDQo+IEBAIC04MzIsNiArODMyLDggQEAgdHlwZWRlZiB1aW50 NjRfdCBGZWF0dXJlV29yZEFycmF5W0ZFQVRVUkVfV09SRFNdOw0KPg0KPiAgI2RlZmluZSBDUFVJ RF9WRU5ET1JfVklBICAgIkNlbnRhdXJIYXVscyINCj4NCj4gKyNkZWZpbmUgQ1BVSURfVkVORE9S X1pIQU9YSU4gICAiICBTaGFuZ2hhaSAgIg0KPiArDQo+ICAjZGVmaW5lIENQVUlEX1ZFTkRPUl9I WUdPTiAgICAiSHlnb25HZW51aW5lIg0KPg0KPiAgI2RlZmluZSBJU19JTlRFTF9DUFUoZW52KSAo KGVudiktPmNwdWlkX3ZlbmRvcjEgPT0gQ1BVSURfVkVORE9SX0lOVEVMXzEgJiYgXA0KPiBAQCAt MTkxNyw2ICsxOTE5LDcgQEAgdm9pZCBjcHVfY2xlYXJfYXBpY19mZWF0dXJlKENQVVg4NlN0YXRl ICplbnYpOw0KPiAgdm9pZCBob3N0X2NwdWlkKHVpbnQzMl90IGZ1bmN0aW9uLCB1aW50MzJfdCBj b3VudCwNCj4gICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZWF4LCB1aW50MzJfdCAqZWJ4LCB1 aW50MzJfdCAqZWN4LCB1aW50MzJfdCAqZWR4KTsNCj4gIHZvaWQgaG9zdF92ZW5kb3JfZm1zKGNo YXIgKnZlbmRvciwgaW50ICpmYW1pbHksIGludCAqbW9kZWwsIGludCAqc3RlcHBpbmcpOw0KPiAr dm9pZCBob3N0X2dldF92ZW5kb3IoY2hhciAqdmVuZG9yKTsNCj4NCj4gIC8qIGhlbHBlci5jICov DQo+ICBib29sIHg4Nl9jcHVfdGxiX2ZpbGwoQ1BVU3RhdGUgKmNzLCB2YWRkciBhZGRyZXNzLCBp bnQgc2l6ZSwNCj4NCg0K --_000_d91ca1499e3347278f9a33a8fc314919zhaoxincom_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable


>I think you're = seeing issues when a guest accesses an adjacent mapping
>between the delete= and add phases of the KVM MemoryListener.  

>We're considering fixin= g that in the kernel, by adding a new ioctl that
>changes the whole memory map in a single step.  I am CCing Pe= ter Xu.

hi paolo,

     = ;         What you said is very similar to my issues. M= y problem is happened when a EHCI device accesses an adjacent mapping between the delete and add phases of the VFIO MemoryLi= stener.

VFIO MemoryListener  is also included under address_space_memory.

              Does adding a new ioctl also app= ly to VFIO MemoryListener?


Best regards

Felixcui-oc



=B7=A2=BC=FE=C8=CB: Paolo= Bonzini <pbonzini@redhat.com>
=B7=A2=CB=CD=CA=B1=BC=E4: 2020=C4=EA9=D4=C23=C8=D5 18:37:47
=CA=D5=BC=FE=C8=CB: FelixCui-oc; Richard Henderson; Eduardo Habkost<= br> =B3=AD=CB=CD: qemu-devel@nongnu.org; RockCui-oc; Tony W Wang-oc; Cob= eChen-oc; Peter Xu
=D6=F7=CC=E2: Re: [PATCH 1/1] Skip flatview_simplify() for specific = cpu vendor
 
On 03/09/20 11:49, FelixCuioc wrote:
> Flatview_simplify() will merge many address ranges
> into one range.When a part of the big range needs
> to be changed,this will cause some innocent mappings
> to be unmapped.So we want to skip flatview_simplify().
>
> Signed-off-by: FelixCuioc <FelixCui-oc@zhaoxin.com>

This has several issues.  In no particular order:

1) you're adding host_get_vendor to target/i386/cpu.c so this does not
even build for the default "../configure && make".

2) you're adding a check for the host, but the bug applies to all hosts.  If there is a bug on x86 hardware emulation, it should be fixed even<= br> when emulating x86 from ARM.

3) you're not explaining what is the big range and how the bug is
manifesting.

I think you're seeing issues when a guest accesses an adjacent mapping
between the delete and add phases of the KVM MemoryListener.  We're considering fixing that in the kernel, by adding a new ioctl that
changes the whole memory map in a single step.  I am CCing Peter Xu.
Paolo


> ---
>  softmmu/memory.c  | 16 +++++++&= #43;+++++++-
>  target/i386/cpu.c |  8 +++++++&= #43;
>  target/i386/cpu.h |  3 +++
>  3 files changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/softmmu/memory.c b/softmmu/memory.c
> index 70b93104e8..348e9db622 100644
> --- a/softmmu/memory.c
> +++ b/softmmu/memory.c
> @@ -699,6 +699,18 @@ static MemoryRegion *memory_region_get_flatvi= ew_root(MemoryRegion *mr)
>      return NULL;
>  }

> +static bool skip_simplify(void)
> +{
> +    char vendor[CPUID_VENDOR_SZ + 1] =3D { 0 }= ;
> +    host_get_vendor(vendor);
> +    if (!strncmp(vendor, CPUID_VENDOR_VIA, strlen(= CPUID_VENDOR_VIA))
> +        || !strncmp(vendor, CP= UID_VENDOR_ZHAOXIN,
> +           = ;         strlen(CPUID_VENDOR_ZHAOX= IN))) {
> +        return true;
> +    }
> +    return false;
> +}
> +
>  /* Render a memory topology into a list of disjoint absolute ran= ges. */
>  static FlatView *generate_memory_topology(MemoryRegion *mr)
>  {
> @@ -712,7 +724,9 @@ static FlatView *generate_memory_topology(Memo= ryRegion *mr)
>            = ;            &n= bsp;      addrrange_make(int128_zero(), int128_2_6= 4()),
>            = ;            &n= bsp;      false, false);
>      }
> -    flatview_simplify(view);
> +    if (!skip_simplify()) {
> +        flatview_simplify(view= );
> +    }

>      view->dispatch =3D address_space_disp= atch_new(view);
>      for (i =3D 0; i < view->nr; i+= +) {
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 49d8958528..08508c8580 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -1664,6 +1664,14 @@ void host_cpuid(uint32_t function, uint32_t= count,
>          *edx =3D vec[3];=
>  }

> +void host_get_vendor(char *vendor)
> +{
> +    uint32_t eax, ebx, ecx, edx;
> +
> +    host_cpuid(0x0, 0, &eax, &ebx, &ec= x, &edx);
> +    x86_cpu_vendor_words2str(vendor, ebx, edx, ecx= );
> +}
> +
>  void host_vendor_fms(char *vendor, int *family, int *model, int = *stepping)
>  {
>      uint32_t eax, ebx, ecx, edx;
> diff --git a/target/i386/cpu.h b/target/i386/cpu.h
> index d3097be6a5..14c8b4c09f 100644
> --- a/target/i386/cpu.h
> +++ b/target/i386/cpu.h
> @@ -832,6 +832,8 @@ typedef uint64_t FeatureWordArray[FEATURE_WORD= S];

>  #define CPUID_VENDOR_VIA   "CentaurHauls"
> +#define CPUID_VENDOR_ZHAOXIN   "  Shanghai&nb= sp; "
> +
>  #define CPUID_VENDOR_HYGON    "HygonGenuine&= quot;

>  #define IS_INTEL_CPU(env) ((env)->cpuid_vendor1 =3D=3D CPUID_= VENDOR_INTEL_1 && \
> @@ -1917,6 +1919,7 @@ void cpu_clear_apic_feature(CPUX86State *env= );
>  void host_cpuid(uint32_t function, uint32_t count,
>            = ;      uint32_t *eax, uint32_t *ebx, uint32_t *ecx= , uint32_t *edx);
>  void host_vendor_fms(char *vendor, int *family, int *model, int = *stepping);
> +void host_get_vendor(char *vendor);

>  /* helper.c */
>  bool x86_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
>

--_000_d91ca1499e3347278f9a33a8fc314919zhaoxincom_--