From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: [PATCH v5 3/8] xen: delay allocation of grant table sub structures Date: Fri, 8 Sep 2017 08:56:29 +0200 Message-ID: <20170908065634.5420-4-jgross@suse.com> References: <20170908065634.5420-1-jgross@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170908065634.5420-1-jgross@suse.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Juergen Gross , sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, dgdegra@tycho.nsa.gov List-Id: xen-devel@lists.xenproject.org RGVsYXkgdGhlIGFsbG9jYXRpb24gb2YgdGhlIGdyYW50IHRhYmxlIHN1YiBzdHJ1Y3R1cmVzIGlu IG9yZGVyIHRvCmFsbG93IG1vZGlmeWluZyBwYXJhbWV0ZXJzIG5lZWRlZCBmb3Igc2l6aW5nIG9m IHRoZXNlIHN0cnVjdHVyZXMgYXQgYQpwZXIgZG9tYWluIGJhc2lzLiBFaXRoZXIgZG8gaXQgZnJv bSBnbnR0YWJfc2V0dXBfdGFibGUoKSBvciBqdXN0CmJlZm9yZSB0aGUgZG9tYWluIGlzIHN0YXJ0 ZWQgdGhlIGZpcnN0IHRpbWUuCgpTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NA c3VzZS5jb20+ClJldmlld2VkLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXgu Y29tPgpSZXZpZXdlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tClY0Ogot IG1ha2UgcmV0IG1vcmUgbG9jYWwgKFdlaSBMaXUpCgpWMzoKLSBtb3ZlIGNhbGwgb2YgZ3JhbnRf dGFibGVfaW5pdCgpIGZyb20gZ250dGFiX3NldHVwX3RhYmxlKCkgdG8KICBnbnR0YWJfZ3Jvd190 YWJsZSgpIChQYXVsIER1cnJhbnQpCi0tLQogeGVuL2NvbW1vbi9kb21haW4uYyAgICAgICAgICAg fCAgMTcgKysrKystCiB4ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMgICAgICB8IDEzOCArKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL3hlbi9ncmFu dF90YWJsZS5oIHwgICAyICsKIDMgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNjEg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9kb21haW4uYyBiL3hlbi9jb21t b24vZG9tYWluLmMKaW5kZXggNWFlYmNmMjY1Zi4uOTgzZjMzMzZhOSAxMDA2NDQKLS0tIGEveGVu L2NvbW1vbi9kb21haW4uYworKysgYi94ZW4vY29tbW9uL2RvbWFpbi5jCkBAIC0zNjMsNiArMzYz LDkgQEAgc3RydWN0IGRvbWFpbiAqZG9tYWluX2NyZWF0ZShkb21pZF90IGRvbWlkLCB1bnNpZ25l ZCBpbnQgZG9tY3JfZmxhZ3MsCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGluaXRf c3RhdHVzIHw9IElOSVRfZ250dGFiOwogCisgICAgICAgIGlmICggZG9taWQgPT0gMCAmJiBncmFu dF90YWJsZV9pbml0KGQpICkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKwogICAgICAgICBwb29s aWQgPSAwOwogCiAgICAgICAgIGVyciA9IC1FTk9NRU07CkBAIC05OTgsNyArMTAwMSw4IEBAIGlu dCBfX2RvbWFpbl9wYXVzZV9ieV9zeXN0ZW1jb250cm9sbGVyKHN0cnVjdCBkb21haW4gKmQsCiAg ICAgICAgIHByZXYgPSBjbXB4Y2hnKCZkLT5jb250cm9sbGVyX3BhdXNlX2NvdW50LCBvbGQsIG5l dyk7CiAgICAgfSB3aGlsZSAoIHByZXYgIT0gb2xkICk7CiAKLSAgICBwYXVzZV9mbihkKTsKKyAg ICBpZiAoIHBhdXNlX2ZuICkKKyAgICAgICAgcGF1c2VfZm4oZCk7CiAKICAgICByZXR1cm4gMDsK IH0KQEAgLTEwMjksOCArMTAzMywxNyBAQCBpbnQgZG9tYWluX3VucGF1c2VfYnlfc3lzdGVtY29u dHJvbGxlcihzdHJ1Y3QgZG9tYWluICpkKQogICAgICAqIENyZWF0aW9uIGlzIGNvbnNpZGVyZWQg ZmluaXNoZWQgd2hlbiB0aGUgY29udHJvbGxlciByZWZlcmVuY2UgY291bnQKICAgICAgKiBmaXJz dCBkcm9wcyB0byAwLgogICAgICAqLwotICAgIGlmICggbmV3ID09IDAgKQorICAgIGlmICggbmV3 ID09IDAgJiYgIWQtPmNyZWF0aW9uX2ZpbmlzaGVkICkKKyAgICB7CisgICAgICAgIGludCByZXQg PSBncmFudF90YWJsZV9pbml0KGQpOworCisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgewor ICAgICAgICAgICAgX19kb21haW5fcGF1c2VfYnlfc3lzdGVtY29udHJvbGxlcihkLCBOVUxMKTsK KyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KICAgICAgICAgZC0+Y3JlYXRpb25f ZmluaXNoZWQgPSB0cnVlOworICAgIH0KIAogICAgIGRvbWFpbl91bnBhdXNlKGQpOwogCmRpZmYg LS1naXQgYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxl LmMKaW5kZXggNDUyMGUzNmQ5MC4uMjllN2ZhNTM5YiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9n cmFudF90YWJsZS5jCisrKyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwpAQCAtMTY1NSw2ICsx NjU1LDc4IEBAIGdudHRhYl91bnBvcHVsYXRlX3N0YXR1c19mcmFtZXMoc3RydWN0IGRvbWFpbiAq ZCwgc3RydWN0IGdyYW50X3RhYmxlICpndCkKICAgICBndC0+bnJfc3RhdHVzX2ZyYW1lcyA9IDA7 CiB9CiAKK2ludAorZ3JhbnRfdGFibGVfaW5pdChzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIHN0 cnVjdCBncmFudF90YWJsZSAqZ3QgPSBkLT5ncmFudF90YWJsZTsKKyAgICB1bnNpZ25lZCBpbnQg aSwgajsKKworICAgIGlmICggZ3QtPm5yX2dyYW50X2ZyYW1lcyApCisgICAgICAgIHJldHVybiAw OworCisgICAgZ3QtPm5yX2dyYW50X2ZyYW1lcyA9IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOwor CisgICAgLyogQWN0aXZlIGdyYW50IHRhYmxlLiAqLworICAgIGlmICggKGd0LT5hY3RpdmUgPSB4 emFsbG9jX2FycmF5KHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50cnkgKiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtYXhfbnJfYWN0aXZlX2dyYW50X2ZyYW1lcykpID09IE5V TEwgKQorICAgICAgICBnb3RvIG5vX21lbV8xOworICAgIGZvciAoIGkgPSAwOworICAgICAgICAg IGkgPCBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9mcmFtZXMoSU5JVElBTF9OUl9HUkFOVF9GUkFN RVMpOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCAoZ3QtPmFjdGl2ZVtpXSA9IGFsbG9jX3hl bmhlYXBfcGFnZSgpKSA9PSBOVUxMICkKKyAgICAgICAgICAgIGdvdG8gbm9fbWVtXzI7CisgICAg ICAgIGNsZWFyX3BhZ2UoZ3QtPmFjdGl2ZVtpXSk7CisgICAgICAgIGZvciAoIGogPSAwOyBqIDwg QUNHTlRfUEVSX1BBR0U7IGorKyApCisgICAgICAgICAgICBzcGluX2xvY2tfaW5pdCgmZ3QtPmFj dGl2ZVtpXVtqXS5sb2NrKTsKKyAgICB9CisKKyAgICAvKiBUcmFja2luZyBvZiBtYXBwZWQgZm9y ZWlnbiBmcmFtZXMgdGFibGUgKi8KKyAgICBndC0+bWFwdHJhY2sgPSB2emFsbG9jKG1heF9tYXB0 cmFja19mcmFtZXMgKiBzaXplb2YoKmd0LT5tYXB0cmFjaykpOworICAgIGlmICggZ3QtPm1hcHRy YWNrID09IE5VTEwgKQorICAgICAgICBnb3RvIG5vX21lbV8yOworCisgICAgLyogU2hhcmVkIGdy YW50IHRhYmxlLiAqLworICAgIGlmICggKGd0LT5zaGFyZWRfcmF3ID0geHphbGxvY19hcnJheSh2 b2lkICosIG1heF9ncmFudF9mcmFtZXMpKSA9PSBOVUxMICkKKyAgICAgICAgZ290byBub19tZW1f MzsKKyAgICBmb3IgKCBpID0gMDsgaSA8IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOyBpKysgKQor ICAgIHsKKyAgICAgICAgaWYgKCAoZ3QtPnNoYXJlZF9yYXdbaV0gPSBhbGxvY194ZW5oZWFwX3Bh Z2UoKSkgPT0gTlVMTCApCisgICAgICAgICAgICBnb3RvIG5vX21lbV80OworICAgICAgICBjbGVh cl9wYWdlKGd0LT5zaGFyZWRfcmF3W2ldKTsKKyAgICB9CisKKyAgICAvKiBTdGF0dXMgcGFnZXMg Zm9yIGdyYW50IHRhYmxlIC0gZm9yIHZlcnNpb24gMiAqLworICAgIGd0LT5zdGF0dXMgPSB4emFs bG9jX2FycmF5KGdyYW50X3N0YXR1c190ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVzKSk7CisgICAgaWYgKCBn dC0+c3RhdHVzID09IE5VTEwgKQorICAgICAgICBnb3RvIG5vX21lbV80OworCisgICAgZm9yICgg aSA9IDA7IGkgPCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUzsgaSsrICkKKyAgICAgICAgZ250dGFi X2NyZWF0ZV9zaGFyZWRfcGFnZShkLCBndCwgaSk7CisKKyAgICBndC0+bnJfc3RhdHVzX2ZyYW1l cyA9IDA7CisKKyAgICByZXR1cm4gMDsKKworIG5vX21lbV80OgorICAgIGZvciAoIGkgPSAwOyBp IDwgSU5JVElBTF9OUl9HUkFOVF9GUkFNRVM7IGkrKyApCisgICAgICAgIGZyZWVfeGVuaGVhcF9w YWdlKGd0LT5zaGFyZWRfcmF3W2ldKTsKKyAgICB4ZnJlZShndC0+c2hhcmVkX3Jhdyk7CisgICAg Z3QtPnNoYXJlZF9yYXcgPSBOVUxMOworIG5vX21lbV8zOgorICAgIHZmcmVlKGd0LT5tYXB0cmFj ayk7CisgICAgZ3QtPm1hcHRyYWNrID0gTlVMTDsKKyBub19tZW1fMjoKKyAgICBmb3IgKCBpID0g MDsKKyAgICAgICAgICBpIDwgbnVtX2FjdF9mcmFtZXNfZnJvbV9zaGFfZnJhbWVzKElOSVRJQUxf TlJfR1JBTlRfRlJBTUVTKTsgaSsrICkKKyAgICAgICAgZnJlZV94ZW5oZWFwX3BhZ2UoZ3QtPmFj dGl2ZVtpXSk7CisgICAgeGZyZWUoZ3QtPmFjdGl2ZSk7CisgICAgZ3QtPmFjdGl2ZSA9IE5VTEw7 Cisgbm9fbWVtXzE6CisgICAgZ3QtPm5yX2dyYW50X2ZyYW1lcyA9IDA7CisgICAgcmV0dXJuIC1F Tk9NRU07Cit9CisKIC8qCiAgKiBHcm93IHRoZSBncmFudCB0YWJsZS4gVGhlIGNhbGxlciBtdXN0 IGhvbGQgdGhlIGdyYW50IHRhYmxlJ3MKICAqIHdyaXRlIGxvY2sgYmVmb3JlIGNhbGxpbmcgdGhp cyBmdW5jdGlvbi4KQEAgLTE2NjUsNiArMTczNywxMiBAQCBnbnR0YWJfZ3Jvd190YWJsZShzdHJ1 Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgcmVxX25yX2ZyYW1lcykKICAgICBzdHJ1Y3QgZ3Jh bnRfdGFibGUgKmd0ID0gZC0+Z3JhbnRfdGFibGU7CiAgICAgdW5zaWduZWQgaW50IGksIGo7CiAK KyAgICBpZiAoICFndC0+bnJfZ3JhbnRfZnJhbWVzICYmIGdyYW50X3RhYmxlX2luaXQoZCkgKQor ICAgIHsKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX0lORk8sICJBbGxvY2F0aW9uIGZhaWx1cmUg aW4gZ3JhbnQgdGFibGUgaW5pdC5cbiIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAg ICBBU1NFUlQocmVxX25yX2ZyYW1lcyA8PSBtYXhfZ3JhbnRfZnJhbWVzKTsKIAogICAgIGdkcHJp bnRrKFhFTkxPR19JTkZPLApAQCAtMzM4MCw3NSArMzQ1OCwxNyBAQCBncmFudF90YWJsZV9jcmVh dGUoCiAgICAgc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1Y3QgZ3JhbnRfdGFibGUgKnQ7 Ci0gICAgdW5zaWduZWQgaW50IGksIGo7CiAKICAgICBpZiAoICh0ID0geHphbGxvYyhzdHJ1Y3Qg Z3JhbnRfdGFibGUpKSA9PSBOVUxMICkKLSAgICAgICAgZ290byBub19tZW1fMDsKKyAgICAgICAg cmV0dXJuIC1FTk9NRU07CiAKICAgICAvKiBTaW1wbGUgc3R1ZmYuICovCiAgICAgcGVyY3B1X3J3 bG9ja19yZXNvdXJjZV9pbml0KCZ0LT5sb2NrLCBncmFudF9yd2xvY2spOwogICAgIHNwaW5fbG9j a19pbml0KCZ0LT5tYXB0cmFja19sb2NrKTsKLSAgICB0LT5ucl9ncmFudF9mcmFtZXMgPSBJTklU SUFMX05SX0dSQU5UX0ZSQU1FUzsKLQotICAgIC8qIEFjdGl2ZSBncmFudCB0YWJsZS4gKi8KLSAg ICBpZiAoICh0LT5hY3RpdmUgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBhY3RpdmVfZ3JhbnRfZW50 cnkgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9ucl9hY3RpdmVf Z3JhbnRfZnJhbWVzKSkgPT0gTlVMTCApCi0gICAgICAgIGdvdG8gbm9fbWVtXzE7Ci0gICAgZm9y ICggaSA9IDA7Ci0gICAgICAgICAgaSA8IG51bV9hY3RfZnJhbWVzX2Zyb21fc2hhX2ZyYW1lcyhJ TklUSUFMX05SX0dSQU5UX0ZSQU1FUyk7IGkrKyApCi0gICAgewotICAgICAgICBpZiAoICh0LT5h Y3RpdmVbaV0gPSBhbGxvY194ZW5oZWFwX3BhZ2UoKSkgPT0gTlVMTCApCi0gICAgICAgICAgICBn b3RvIG5vX21lbV8yOwotICAgICAgICBjbGVhcl9wYWdlKHQtPmFjdGl2ZVtpXSk7Ci0gICAgICAg IGZvciAoIGogPSAwOyBqIDwgQUNHTlRfUEVSX1BBR0U7IGorKyApCi0gICAgICAgICAgICBzcGlu X2xvY2tfaW5pdCgmdC0+YWN0aXZlW2ldW2pdLmxvY2spOwotICAgIH0KLQotICAgIC8qIFRyYWNr aW5nIG9mIG1hcHBlZCBmb3JlaWduIGZyYW1lcyB0YWJsZSAqLwotICAgIHQtPm1hcHRyYWNrID0g dnphbGxvYyhtYXhfbWFwdHJhY2tfZnJhbWVzICogc2l6ZW9mKCp0LT5tYXB0cmFjaykpOwotICAg IGlmICggdC0+bWFwdHJhY2sgPT0gTlVMTCApCi0gICAgICAgIGdvdG8gbm9fbWVtXzI7Ci0KLSAg ICAvKiBTaGFyZWQgZ3JhbnQgdGFibGUuICovCi0gICAgaWYgKCAodC0+c2hhcmVkX3JhdyA9IHh6 YWxsb2NfYXJyYXkodm9pZCAqLCBtYXhfZ3JhbnRfZnJhbWVzKSkgPT0gTlVMTCApCi0gICAgICAg IGdvdG8gbm9fbWVtXzM7Ci0gICAgZm9yICggaSA9IDA7IGkgPCBJTklUSUFMX05SX0dSQU5UX0ZS QU1FUzsgaSsrICkKLSAgICB7Ci0gICAgICAgIGlmICggKHQtPnNoYXJlZF9yYXdbaV0gPSBhbGxv Y194ZW5oZWFwX3BhZ2UoKSkgPT0gTlVMTCApCi0gICAgICAgICAgICBnb3RvIG5vX21lbV80Owot ICAgICAgICBjbGVhcl9wYWdlKHQtPnNoYXJlZF9yYXdbaV0pOwotICAgIH0KLQotICAgIC8qIFN0 YXR1cyBwYWdlcyBmb3IgZ3JhbnQgdGFibGUgLSBmb3IgdmVyc2lvbiAyICovCi0gICAgdC0+c3Rh dHVzID0geHphbGxvY19hcnJheShncmFudF9zdGF0dXNfdCAqLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3JhbnRfdG9fc3RhdHVzX2ZyYW1lcyhtYXhfZ3JhbnRfZnJhbWVzKSk7Ci0g ICAgaWYgKCB0LT5zdGF0dXMgPT0gTlVMTCApCi0gICAgICAgIGdvdG8gbm9fbWVtXzQ7Ci0KLSAg ICBmb3IgKCBpID0gMDsgaSA8IElOSVRJQUxfTlJfR1JBTlRfRlJBTUVTOyBpKysgKQotICAgICAg ICBnbnR0YWJfY3JlYXRlX3NoYXJlZF9wYWdlKGQsIHQsIGkpOwotCi0gICAgdC0+bnJfc3RhdHVz X2ZyYW1lcyA9IDA7CiAKICAgICAvKiBPa2F5LCBpbnN0YWxsIHRoZSBzdHJ1Y3R1cmUuICovCiAg ICAgZC0+Z3JhbnRfdGFibGUgPSB0OwogICAgIHJldHVybiAwOwotCi0gbm9fbWVtXzQ6Ci0gICAg Zm9yICggaSA9IDA7IGkgPCBJTklUSUFMX05SX0dSQU5UX0ZSQU1FUzsgaSsrICkKLSAgICAgICAg ZnJlZV94ZW5oZWFwX3BhZ2UodC0+c2hhcmVkX3Jhd1tpXSk7Ci0gICAgeGZyZWUodC0+c2hhcmVk X3Jhdyk7Ci0gbm9fbWVtXzM6Ci0gICAgdmZyZWUodC0+bWFwdHJhY2spOwotIG5vX21lbV8yOgot ICAgIGZvciAoIGkgPSAwOwotICAgICAgICAgIGkgPCBudW1fYWN0X2ZyYW1lc19mcm9tX3NoYV9m cmFtZXMoSU5JVElBTF9OUl9HUkFOVF9GUkFNRVMpOyBpKysgKQotICAgICAgICBmcmVlX3hlbmhl YXBfcGFnZSh0LT5hY3RpdmVbaV0pOwotICAgIHhmcmVlKHQtPmFjdGl2ZSk7Ci0gbm9fbWVtXzE6 Ci0gICAgeGZyZWUodCk7Ci0gbm9fbWVtXzA6Ci0gICAgcmV0dXJuIC1FTk9NRU07CiB9CiAKIHZv aWQKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9ncmFudF90YWJsZS5oIGIveGVuL2luY2x1 ZGUveGVuL2dyYW50X3RhYmxlLmgKaW5kZXggNDNiMDdlNjBjNS4uODRhOGQ2MTYxNiAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUveGVuL2dyYW50X3RhYmxlLmgKKysrIGIveGVuL2luY2x1ZGUveGVu L2dyYW50X3RhYmxlLmgKQEAgLTM1LDYgKzM1LDggQEAgZXh0ZXJuIHVuc2lnbmVkIGludCBtYXhf Z3JhbnRfZnJhbWVzOwogLyogQ3JlYXRlL2Rlc3Ryb3kgcGVyLWRvbWFpbiBncmFudCB0YWJsZSBj b250ZXh0LiAqLwogaW50IGdyYW50X3RhYmxlX2NyZWF0ZSgKICAgICBzdHJ1Y3QgZG9tYWluICpk KTsKK2ludCBncmFudF90YWJsZV9pbml0KAorICAgIHN0cnVjdCBkb21haW4gKmQpOwogdm9pZCBn cmFudF90YWJsZV9kZXN0cm95KAogICAgIHN0cnVjdCBkb21haW4gKmQpOwogdm9pZCBncmFudF90 YWJsZV9pbml0X3ZjcHUoc3RydWN0IHZjcHUgKnYpOwotLSAKMi4xMi4zCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==