From patchwork Mon Feb 1 09:26:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: vijayak@caviumnetworks.com X-Patchwork-Id: 8177241 Return-Path: X-Original-To: patchwork-xen-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 7656BBEEE5 for ; Mon, 1 Feb 2016 09:33:11 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 7F9342041A for ; Mon, 1 Feb 2016 09:33:10 +0000 (UTC) Received: from lists.xen.org (lists.xenproject.org [50.57.142.19]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8A04120414 for ; Mon, 1 Feb 2016 09:33:08 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xen.org) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aQAoQ-0006oZ-00; Mon, 01 Feb 2016 09:30:22 +0000 Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aQAlu-0006dt-95 for xen-devel@lists.xen.org; Mon, 01 Feb 2016 09:27:46 +0000 Received: from [85.158.139.211] by server-14.bemta-5.messagelabs.com id 26/88-18633-1152FA65; Mon, 01 Feb 2016 09:27:45 +0000 X-Env-Sender: Vijaya.Kumar@caviumnetworks.com X-Msg-Ref: server-7.tower-206.messagelabs.com!1454318863!19160300!1 X-Originating-IP: [157.56.110.80] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 7.35.1; banners=-,-,- X-VirusChecked: Checked Received: (qmail 6525 invoked from network); 1 Feb 2016 09:27:44 -0000 Received: from mail-bn1on0080.outbound.protection.outlook.com (HELO na01-bn1-obe.outbound.protection.outlook.com) (157.56.110.80) by server-7.tower-206.messagelabs.com with AES256-SHA256 encrypted SMTP; 1 Feb 2016 09:27:44 -0000 Received: from cavium-Vostro-2520.caveonetworks.com (111.93.218.67) by BN3PR0701MB1688.namprd07.prod.outlook.com (10.163.39.154) with Microsoft SMTP Server (TLS) id 15.1.396.15; Mon, 1 Feb 2016 09:27:32 +0000 From: To: , , , , , Date: Mon, 1 Feb 2016 14:56:11 +0530 Message-ID: <1454318798-31913-2-git-send-email-vijayak@caviumnetworks.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1454318798-31913-1-git-send-email-vijayak@caviumnetworks.com> References: <1454318798-31913-1-git-send-email-vijayak@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BM1PR01CA0026.INDPRD01.PROD.OUTLOOK.COM (25.163.198.161) To BN3PR0701MB1688.namprd07.prod.outlook.com (25.163.39.154) X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1688; 2:D4KmdDgmLkYVQHpJwj4OFYKSza9yeaHgLmT++lDQ3ZRZeM2BDJYjcLIZlDviMPdQ9y9IA2QbDM/7a509HJLPcuj9PhK89f2drThS5iFkXYYpbnSEwD6d5PdR8rhAxOR8l0xgW1kxIOfB7u/fFIwb6g==; 3:GIwoddnM8DQ0yDUGjtLfdPRdeeKWEbKljxvQwAv5C9Sn4rzin2nCU/XyBHu63tjRSOElRC532/wTf7K3sLFA1LdEjSDRXjFefyl1eO3DQcI9WyQ5EnPGZLQ2Pmci9K/e; 25:7abmbHlhm0ZlHRjYNDftKoE4dqsNutKGHqKuW+yZQJlITrMn/eoXnykiSAH+e1FZjC2hhuFI5tGy5fpAH7BmWOBQe4uWmMDSU5lH5lrA/I6ekgrBf917S7dB6MpOKSRlXLaucZ1jq6ZYb85TGKOTzoue5D+CQPV4mvIU+aw7VMrfyO+fZ60V+cqgsOrq5LJNiSLBPjuPlYBJGwTjAylpWeq4H6qKeO2tZKrm714z24xTvNrAqjkhBX2IA7ToGCtw X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR0701MB1688; X-MS-Office365-Filtering-Correlation-Id: 727e1b68-2ab2-444f-e15f-08d32ae9efa5 X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1688; 20:GNv1hRHbhZvcV03NEGGZwl8Df40Ttndfw6T/wNnPRsBJz81ZqLX5Gsd+jO6W8etcIgPg/Qx2MjZRJmD+x9EVvlhpScCvtz2UJ5SH/VhRIuJfJteVlgYZffFTdHXk7cSmODpoYjbo1ZLrIIAL7b1OG1PObWY/aq6d4XF14mVv5RBQHovUT9HwWl5X/y6YPyArpGxqzl9zu8Oek9urwkARrciS/mj8O8867ioqmuYQna8Sb02Y/0GsdRonL2nagJV6j6laHTxkwz2N9Cjpew3kAtWErLlGI6fFH17aiwshj2XjrnArX5VOcxROmbiq2Z4lGIkndPz+a04rkkK5G0LS9iQYShP5Qm0ML1Xpla4mYwbITSSnenGt3S3i73Wi+ZjarHigJAKtGyDi9887LyTUzcw3Vl7snS07lcO74uZ+0fBOR7Vw1/zKSJkBg+2820LHMwARjbLbWNR7bcTkjo5nrxjGX8OewOSh/SxzpjfUzYkS7ASo5AJiTSYQiCTZsNwCGoBhGvsuVPnvO+uXNafEaW0B5uedrGX9SPIXY8J/DSzLHiBo8IbOGyVZMsTedWVCU0OoYgo1ySj17W8WhNMB46nVwPiQTm31TM0NVsS/4LE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); SRVR:BN3PR0701MB1688; BCL:0; PCL:0; RULEID:; SRVR:BN3PR0701MB1688; X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1688; 4:SJiw3hOiVQeWqf2/o+fUb7Ygy02O7QKE5xTRx5//+AQjtUZTUsfm3zQ6iCgJXgvaZS0rN/n+tIssCLXWCr9aK0561oG8lWEM4/yC9D70wfCOQ4ZFTXOh47zxYrQEw5NuwhTEsBXl1CvFCY3lbyWXAAUUe54KoczHdzEaqeJEkkwjCtwZJWIBmUaGXDLxxfXpD8vXltS296HcvqUMq3K5CWVJTfyHRvy3Imn2Ys6N8QjlVPR7wMMBKDRbei+9IhKSCsNW9goJk8LHUtzuUbnYl2WUdjips0m4nCfsXmu9VBglERcPXRt3rGLg7qkZ9z/TnDEQtE728dvREnK7Yd3AIZE2zfJH/XPITFtq/ZMrVMEn/VDucQlJ6y9yYI2ql9rw X-Forefront-PRVS: 0839D067E7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(3846002)(5009440100003)(586003)(1096002)(76176999)(50986999)(36756003)(189998001)(92566002)(5004730100002)(2950100001)(229853001)(50226001)(87976001)(86152002)(2201001)(5001960100002)(77096005)(53416004)(48376002)(19580395003)(19580405001)(5003940100001)(5001770100001)(42186005)(33646002)(66066001)(47776003)(2906002)(2876002)(4326007)(122386002)(3470700001)(5008740100001)(50466002)(40100003)(7099028)(7059030)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR0701MB1688; H:cavium-Vostro-2520.caveonetworks.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR0701MB1688; 23:AP06R0E66fAWc1O7KDnxZqwRokrRlz/stBYnOCS?= =?us-ascii?Q?UZiEtLHOGfrtnoVwglzLO7BuGe/Olw5Z0Qs1TYjV9/Dk0ND0iNcRSnldKmUW?= =?us-ascii?Q?gtFgc6aJbcq9g5SyZYDCTRsYnFYnQR6x2MtFKih7h+l3HeAhtI6pBQ9Ixxlt?= =?us-ascii?Q?tvzfp1pB0Z+AUFsGivEfar/T3dZQVuMXTWA0CZH4gkusS+6SpErka8aLlGyM?= =?us-ascii?Q?c65hI6kv4xvgb8xThH/MTOkHa49MnwqXNd9duCsoy9k5Ys/6Rl77i5ig3Sva?= =?us-ascii?Q?NlDJYiYVSMGBKQoAk3zv3ZZLM+DNqx50Yns54gB2r23UBn7EoR7GWgNwo6LQ?= =?us-ascii?Q?r/zq9k+ieE/0fZnNYYiY9xxPIkvLk8fzMaQaX0Piz7pONm5teRdq/qckdG+e?= =?us-ascii?Q?aC9uChRitNgrL4IfTq37ux7DkUMb6bKWcWjGVcpB2R13ZHBudYwAUOJP38XZ?= =?us-ascii?Q?oYPoq4L70LMIpwzGp/hvPw3QxR/7ZzpKwXEX+e7z4XDCTZcPp4aNTWL7DDpK?= =?us-ascii?Q?YpL1imZ+jQiTLxX5p08b1hqhB2Uks5OR2YpF0mdA2NDTY1aKIiRk1bpRwGFG?= =?us-ascii?Q?x2YB6x4G99XRpbAHTlMY/L9JU8J0LswgFgehopVK0ZP3iXWLFmPfDEkM0pKZ?= =?us-ascii?Q?zw6lAQ0GWNsOwe+SbL9v2oRRs+dps0hJM4R7/XifgeMIpOXsr5NYuSGoUbxe?= =?us-ascii?Q?52/5Fx/OD93rvw7V5NCKM/dqXTQX7Uq/HhV2PxfI6tsQnJzVgxoGWHjvEqd6?= =?us-ascii?Q?KC4qWajMsL/w77ehZYnlZ0tYXhebB8HXmzh3YctZ4aOH0x1FpVZpKze3Gy1T?= =?us-ascii?Q?1p4szI89hhgaUT6/ASWruek+fHEqGpmdl6uW9WHf6YnlhGEuh4KuJTQMK/vb?= =?us-ascii?Q?e+k9XPrc1kjEHPAgAYN5GKdAhW/jV8Xv2iE7W5DAy+tohU6PGB+TBqRGc15d?= =?us-ascii?Q?cioSgtQY1hCrALdDXKYO/Np8oMLhdnIXJljgGR/KtikltMbTLMAE54siiODh?= =?us-ascii?Q?GIUjoLvecHtpdIgH6N0YCoKCyc1SvrGY6DWxRoq3qdS5FXcE+H25Ls2agqcn?= =?us-ascii?Q?88PFcrm7LACC+OVPwPSN+co+0DZ42?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR0701MB1688; 5:Q08LQlHMgg7ff6S8Ii7xXH2ZJvKUMmWIyVsNTWBK3b2TR4cEt7t7yGT6zTAK1V+YiSd/vdL9yVXJrXwMtz6Cl9TqZu+nxErhmAhriiXRYiTUcoeedRuAPfCjxDR0orQKf3xZzK/mYAk4pmApISzOdw==; 24:CG3e/Zh5TPnUkUluGuP9yIXerVEZxuluLSUWXx+1tBBWc72OWdYkWYIOyhK8CnBzvc1Is+aSi1lW4nH/AS9lSKfLI6NNgZoJrSJdWpadQZM= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2016 09:27:32.5798 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR0701MB1688 X-Mailman-Approved-At: Mon, 01 Feb 2016 09:30:20 +0000 Cc: Keir Fraser , Ian Campbell , vijay.kilari@gmail.com, Prasun.Kapoor@caviumnetworks.com, manish.jaggi@caviumnetworks.com, Ian Jackson , Jan Beulich , Vijaya Kumar K Subject: [Xen-devel] [PATCH v8 01/28] xen/arm: Add bitmap_find_next_zero_area helper function X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Vijaya Kumar K bitmap_find_next_zero_area helper function will be used by physical ITS driver. This is imported from linux 4.2 Signed-off-by: Vijaya Kumar K Acked-by: Jan Beulich CC: Ian Campbell CC: Ian Jackson CC: Jan Beulich CC: Keir Fraser CC: Tim Deegan --- v5: Ported from Linux 4.2. Added bitmap_find_next_zero_area_off(). v4: Removed spaces and added tabs Moved ALIGN macro to lib.h v3: Moved changes to xen/common/bitmap.c and xen/include/xen/bitmap.h --- xen/common/bitmap.c | 39 +++++++++++++++++++++++++++++++++++++++ xen/include/xen/bitmap.h | 16 ++++++++++++++++ xen/include/xen/lib.h | 2 ++ 3 files changed, 57 insertions(+) diff --git a/xen/common/bitmap.c b/xen/common/bitmap.c index 61d1ea4..ad665d1 100644 --- a/xen/common/bitmap.c +++ b/xen/common/bitmap.c @@ -489,6 +489,45 @@ int bitmap_allocate_region(unsigned long *bitmap, int pos, int order) } EXPORT_SYMBOL(bitmap_allocate_region); +/* + * bitmap_find_next_zero_area_off - find a contiguous aligned zero area + * @map: The address to base the search on + * @size: The bitmap size in bits + * @start: The bitnumber to start searching at + * @nr: The number of zeroed bits we're looking for + * @align_mask: Alignment mask for zero area + * @align_offset: Alignment offset for zero area. + * + * The @align_mask should be one less than a power of 2; the effect is that + * the bit offset of all zero areas this function finds plus @align_offset + * is multiple of that power of 2. + */ +unsigned long bitmap_find_next_zero_area_off(unsigned long *map, + unsigned long size, + unsigned long start, + unsigned int nr, + unsigned long align_mask, + unsigned long align_offset) +{ + unsigned long index, end, i; +again: + index = find_next_zero_bit(map, size, start); + + /* Align allocation */ + index = ALIGN_MASK(index + align_offset, align_mask) - align_offset; + + end = index + nr; + if (end > size) + return end; + i = find_next_bit(map, end, index); + if (i < end) { + start = i + 1; + goto again; + } + return index; +} +EXPORT_SYMBOL(bitmap_find_next_zero_area_off) + #ifdef __BIG_ENDIAN void bitmap_long_to_byte(uint8_t *bp, const unsigned long *lp, int nbits) diff --git a/xen/include/xen/bitmap.h b/xen/include/xen/bitmap.h index e2a3686..161f990 100644 --- a/xen/include/xen/bitmap.h +++ b/xen/include/xen/bitmap.h @@ -101,6 +101,22 @@ extern int bitmap_scnlistprintf(char *buf, unsigned int len, extern int bitmap_find_free_region(unsigned long *bitmap, int bits, int order); extern void bitmap_release_region(unsigned long *bitmap, int pos, int order); extern int bitmap_allocate_region(unsigned long *bitmap, int pos, int order); +extern unsigned long bitmap_find_next_zero_area_off(unsigned long *map, + unsigned long size, + unsigned long start, + unsigned int nr, + unsigned long align_mask, + unsigned long align_offset); + +static inline unsigned long bitmap_find_next_zero_area(unsigned long *map, + unsigned long size, + unsigned long start, + unsigned int nr, + unsigned long align_mask) +{ + return bitmap_find_next_zero_area_off(map, size, start, nr, + align_mask, 0); +} #define BITMAP_LAST_WORD_MASK(nbits) \ ( \ diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h index 4258912..e7d9d95 100644 --- a/xen/include/xen/lib.h +++ b/xen/include/xen/lib.h @@ -55,6 +55,8 @@ #define ROUNDUP(x, a) (((x) + (a) - 1) & ~((a) - 1)) +#define ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask)) + #define reserve_bootmem(_p,_l) ((void)0) struct domain;