From owner-freebsd-arm@FreeBSD.ORG Mon Jun 1 00:14:52 2015 Return-Path: Delivered-To: freebsd-arm@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F12941FE for ; Mon, 1 Jun 2015 00:14:52 +0000 (UTC) (envelope-from daemon-user@FreeBSD.org) Received: from phabric-backend.isc.freebsd.org (phabric-backend.isc.freebsd.org [IPv6:2001:4f8:3:ffe0:406a:0:50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D27AF1007 for ; Mon, 1 Jun 2015 00:14:52 +0000 (UTC) (envelope-from daemon-user@FreeBSD.org) Received: from phabric-backend.isc.freebsd.org (phabric-backend.isc.freebsd.org [127.0.1.5]) by phabric-backend.isc.freebsd.org (8.14.9/8.14.9) with ESMTP id t510EqGW024387 for ; Mon, 1 Jun 2015 00:14:52 GMT (envelope-from daemon-user@phabric-backend.isc.freebsd.org) Received: (from daemon-user@localhost) by phabric-backend.isc.freebsd.org (8.14.9/8.14.9/Submit) id t510EqTl024386; Mon, 1 Jun 2015 00:14:52 GMT (envelope-from daemon-user) Date: Mon, 1 Jun 2015 00:14:52 +0000 To: freebsd-arm@freebsd.org From: "zbb (Zbigniew Bodek)" Subject: [Differential] [Request, 34 lines] D2701: Add options to dmb() and dsb() macros Message-ID: X-Priority: 3 Thread-Topic: D2701: Add options to dmb() and dsb() macros X-Herald-Rules: <28>, <31>, <32>, <34> X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-To: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: X-Phabricator-Cc: Thread-Index: ZmNkZjhiYmRkMjJmNDQ3MzM1MjU0NmU2OTBk Precedence: bulk X-Phabricator-Sent-This-Message: Yes X-Mail-Transport-Agent: MetaMTA X-Auto-Response-Suppress: All X-Phabricator-Mail-Tags: , , , MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_264905771b061f24485bca16fcb9f0a4" X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.20 List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 Jun 2015 00:14:53 -0000 --b1_264905771b061f24485bca16fcb9f0a4 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: 8bit zbb created this revision. zbb added reviewers: andrew, emaste, imp, ian. zbb added a subscriber: freebsd-arm. zbb set the repository for this revision to rS FreeBSD src repository. Herald added subscribers: imp, andrew, emaste. REVISION SUMMARY Using plain dsb()/dmb() as full system barriers is usually to much. Adding proper options to those barriers (instead of full system - sy) will most likely reduce the cost of the instructions and will benefit in performance improvement. This commit adds options to barrier macro definitions. All previously set barriers are as they were (full system barriers) but this approach should be revised in the future. Obtained from: Semihalf Sponsored by: The FreeBSD Foundation REPOSITORY rS FreeBSD src repository REVISION DETAIL https://reviews.freebsd.org/D2701 AFFECTED FILES sys/arm64/arm64/db_interface.c sys/arm64/arm64/vfp.c sys/arm64/include/atomic.h CHANGE DETAILS diff --git a/sys/arm64/include/atomic.h b/sys/arm64/include/atomic.h --- a/sys/arm64/include/atomic.h +++ b/sys/arm64/include/atomic.h @@ -29,13 +29,29 @@ #ifndef _MACHINE_ATOMIC_H_ #define _MACHINE_ATOMIC_H_ -#define isb() __asm __volatile("isb" : : : "memory") -#define dsb() __asm __volatile("dsb sy" : : : "memory") -#define dmb() __asm __volatile("dmb sy" : : : "memory") +#define isb() __asm __volatile("isb" : : : "memory") -#define mb() dmb() -#define wmb() dmb() -#define rmb() dmb() +/* + * Options for DMB and DSB: + * oshld Outer Shareable, load + * oshst Outer Shareable, store + * osh Outer Shareable, all + * nshld Non-shareable, load + * nshst Non-shareable, store + * nsh Non-shareable, all + * ishld Inner Shareable, load + * ishst Inner Shareable, store + * ish Inner Shareable, all + * ld Full system, load + * st Full system, store + * sy Full system, all + */ +#define dsb(opt) __asm __volatile("dsb " __STRING(opt) : : : "memory") +#define dmb(opt) __asm __volatile("dmb " __STRING(opt) : : : "memory") + +#define mb() dmb(sy) /* Full system memory barrier all */ +#define wmb() dmb(st) /* Full system memory barrier store */ +#define rmb() dmb(ld) /* Full system memory barrier load */ static __inline void atomic_add_32(volatile uint32_t *p, uint32_t val) diff --git a/sys/arm64/arm64/vfp.c b/sys/arm64/arm64/vfp.c --- a/sys/arm64/arm64/vfp.c +++ b/sys/arm64/arm64/vfp.c @@ -120,7 +120,7 @@ td->td_pcb->pcb_fpcr = fpcr; td->td_pcb->pcb_fpsr = fpsr; - dsb(); + dsb(sy); vfp_disable(); } critical_exit(); diff --git a/sys/arm64/arm64/db_interface.c b/sys/arm64/arm64/db_interface.c --- a/sys/arm64/arm64/db_interface.c +++ b/sys/arm64/arm64/db_interface.c @@ -157,11 +157,11 @@ *dst++ = *data++; } - dsb(); + dsb(sy); /* Clean D-cache and invalidate I-cache */ cpu_dcache_wb_range(addr, (vm_size_t)size); cpu_icache_sync_range(addr, (vm_size_t)size); - dsb(); + dsb(sy); isb(); return (0); EMAIL PREFERENCES https://reviews.freebsd.org/settings/panel/emailpreferences/ To: zbb, andrew, emaste, imp, ian Cc: emaste, andrew, imp, freebsd-arm --b1_264905771b061f24485bca16fcb9f0a4 Content-Type: text/x-patch; charset=utf-8; name="D2701.5849.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D2701.5849.patch" ZGlmZiAtLWdpdCBhL3N5cy9hcm02NC9pbmNsdWRlL2F0b21pYy5oIGIvc3lzL2FybTY0L2luY2x1 ZGUvYXRvbWljLmgKLS0tIGEvc3lzL2FybTY0L2luY2x1ZGUvYXRvbWljLmgKKysrIGIvc3lzL2Fy bTY0L2luY2x1ZGUvYXRvbWljLmgKQEAgLTI5LDEzICsyOSwyOSBAQAogI2lmbmRlZglfTUFDSElO RV9BVE9NSUNfSF8KICNkZWZpbmUJX01BQ0hJTkVfQVRPTUlDX0hfCiAKLSNkZWZpbmUJaXNiKCkg IF9fYXNtIF9fdm9sYXRpbGUoImlzYiIgOiA6IDogIm1lbW9yeSIpCi0jZGVmaW5lCWRzYigpICBf X2FzbSBfX3ZvbGF0aWxlKCJkc2Igc3kiIDogOiA6ICJtZW1vcnkiKQotI2RlZmluZQlkbWIoKSAg X19hc20gX192b2xhdGlsZSgiZG1iIHN5IiA6IDogOiAibWVtb3J5IikKKyNkZWZpbmUgaXNiKCkg IF9fYXNtIF9fdm9sYXRpbGUoImlzYiIgOiA6IDogIm1lbW9yeSIpCiAKLSNkZWZpbmUJbWIoKSAg IGRtYigpCi0jZGVmaW5lCXdtYigpICBkbWIoKQotI2RlZmluZQlybWIoKSAgZG1iKCkKKy8qCisg KiBPcHRpb25zIGZvciBETUIgYW5kIERTQjoKKyAqCW9zaGxkCU91dGVyIFNoYXJlYWJsZSwgbG9h ZAorICoJb3Noc3QJT3V0ZXIgU2hhcmVhYmxlLCBzdG9yZQorICoJb3NoCU91dGVyIFNoYXJlYWJs ZSwgYWxsCisgKgluc2hsZAlOb24tc2hhcmVhYmxlLCBsb2FkCisgKgluc2hzdAlOb24tc2hhcmVh YmxlLCBzdG9yZQorICoJbnNoCU5vbi1zaGFyZWFibGUsIGFsbAorICoJaXNobGQJSW5uZXIgU2hh cmVhYmxlLCBsb2FkCisgKglpc2hzdAlJbm5lciBTaGFyZWFibGUsIHN0b3JlCisgKglpc2gJSW5u ZXIgU2hhcmVhYmxlLCBhbGwKKyAqCWxkCUZ1bGwgc3lzdGVtLCBsb2FkCisgKglzdAlGdWxsIHN5 c3RlbSwgc3RvcmUKKyAqCXN5CUZ1bGwgc3lzdGVtLCBhbGwKKyAqLworI2RlZmluZSBkc2Iob3B0 KSAgX19hc20gX192b2xhdGlsZSgiZHNiICIgX19TVFJJTkcob3B0KSA6IDogOiAibWVtb3J5IikK KyNkZWZpbmUgZG1iKG9wdCkgIF9fYXNtIF9fdm9sYXRpbGUoImRtYiAiIF9fU1RSSU5HKG9wdCkg OiA6IDogIm1lbW9yeSIpCisKKyNkZWZpbmUgbWIoKSAgIGRtYihzeSkJLyogRnVsbCBzeXN0ZW0g bWVtb3J5IGJhcnJpZXIgYWxsICovCisjZGVmaW5lIHdtYigpICBkbWIoc3QpCS8qIEZ1bGwgc3lz dGVtIG1lbW9yeSBiYXJyaWVyIHN0b3JlICovCisjZGVmaW5lIHJtYigpICBkbWIobGQpCS8qIEZ1 bGwgc3lzdGVtIG1lbW9yeSBiYXJyaWVyIGxvYWQgKi8KIAogc3RhdGljIF9faW5saW5lIHZvaWQK IGF0b21pY19hZGRfMzIodm9sYXRpbGUgdWludDMyX3QgKnAsIHVpbnQzMl90IHZhbCkKZGlmZiAt LWdpdCBhL3N5cy9hcm02NC9hcm02NC92ZnAuYyBiL3N5cy9hcm02NC9hcm02NC92ZnAuYwotLS0g YS9zeXMvYXJtNjQvYXJtNjQvdmZwLmMKKysrIGIvc3lzL2FybTY0L2FybTY0L3ZmcC5jCkBAIC0x MjAsNyArMTIwLDcgQEAKIAkJdGQtPnRkX3BjYi0+cGNiX2ZwY3IgPSBmcGNyOwogCQl0ZC0+dGRf cGNiLT5wY2JfZnBzciA9IGZwc3I7CiAKLQkJZHNiKCk7CisJCWRzYihzeSk7CiAJCXZmcF9kaXNh YmxlKCk7CiAJfQogCWNyaXRpY2FsX2V4aXQoKTsKZGlmZiAtLWdpdCBhL3N5cy9hcm02NC9hcm02 NC9kYl9pbnRlcmZhY2UuYyBiL3N5cy9hcm02NC9hcm02NC9kYl9pbnRlcmZhY2UuYwotLS0gYS9z eXMvYXJtNjQvYXJtNjQvZGJfaW50ZXJmYWNlLmMKKysrIGIvc3lzL2FybTY0L2FybTY0L2RiX2lu dGVyZmFjZS5jCkBAIC0xNTcsMTEgKzE1NywxMSBAQAogCQkqZHN0KysgPSAqZGF0YSsrOwogCX0K IAotCWRzYigpOworCWRzYihzeSk7CiAJLyogQ2xlYW4gRC1jYWNoZSBhbmQgaW52YWxpZGF0ZSBJ LWNhY2hlICovCiAJY3B1X2RjYWNoZV93Yl9yYW5nZShhZGRyLCAodm1fc2l6ZV90KXNpemUpOwog CWNwdV9pY2FjaGVfc3luY19yYW5nZShhZGRyLCAodm1fc2l6ZV90KXNpemUpOwotCWRzYigpOwor CWRzYihzeSk7CiAJaXNiKCk7CiAKIAlyZXR1cm4gKDApOwoK --b1_264905771b061f24485bca16fcb9f0a4--