Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1071393imm; Tue, 15 May 2018 13:23:41 -0700 (PDT) X-Google-Smtp-Source: AB8JxZputI9+HNlRV3BmhCf3gouwBUI90wKyzGz/YgBBF4scP88NfTKf5M+Uq2x6BqyOUnIuGu2Q X-Received: by 2002:a62:a21e:: with SMTP id m30-v6mr16728851pff.251.1526415820892; Tue, 15 May 2018 13:23:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526415820; cv=none; d=google.com; s=arc-20160816; b=Li1hxJ7fLe3+uEVkpn19t6cW6fMhDHtjK/Nb7lCcBBx5vzNAvVk1LuGGUXXwnlpOcg zfh4vOffCBtUgQPJKmYeTK0HFBVYl7L6VXgiT3tuhX+bTmzxg3iE3C35P2IFA7rCkTlN cn2SNicUolRVIXZfvPFT4ghz7Xc3UmvxQVw7zm4pKQq3z+Ixl4AZ5mdTgTVLyY5qBLMr TLb1UML/JnsQsYasO14yHYqe7yIz5YWBMZ5wo2GXTCi7Lxo4+dcHie/l5Ed/1TM4fdqD sJFDO21wIqitHW9JB9pCBJm2xRD5zmrE1g1XJOVow1bQVts9QkXoJHR2VrsI4B2g5XGE Gedw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=G/Rb0C3m9mLD5VCDvcN+rjQS2+qeXwWcDmED3/RuzKI=; b=Q2WfunkkYdtl5KpVC2TNeJHI6fZay+NEV3cb5eog2NQv/BVg86RPmWt1irOcau+Ck7 Kpji9QX0eRNKln0osz/q2fhezULwZm3zvBinpsoSap3agEdIOtRAnBLNVw/RWrQMpzUE EYAt+ds830vEsucJDMDF6yFpyF1I1ILmiUfyoicqBGor9zpRfN1JFpLXRniApd/HtcM4 VmeJN8/JPOQRG2LNGtT+bbLoSW188ZcdB58HAtOXek6emqCjXxxnR7GxJxDs4dukvhi9 0uJsOgbRXuhYYyA3aRraBcGKRkypiS1dhx9tj+s78VbYVB7+RNROlILmElNlidWO9Djn vKxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=J5mjl6sO; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 36-v6si803126plb.140.2018.05.15.13.23.26; Tue, 15 May 2018 13:23:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=J5mjl6sO; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752526AbeEOUXE (ORCPT + 99 others); Tue, 15 May 2018 16:23:04 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:45174 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752162AbeEOUXD (ORCPT ); Tue, 15 May 2018 16:23:03 -0400 Received: by mail-qt0-f196.google.com with SMTP id j42-v6so2067088qtj.12 for ; Tue, 15 May 2018 13:23:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=G/Rb0C3m9mLD5VCDvcN+rjQS2+qeXwWcDmED3/RuzKI=; b=J5mjl6sO3engvtFDtXNJOx5v/xKQgFpg6ONhIvFpglLYsgbTGAKd4lOYTuj0OR82Rk Dy4ojhwh216PhbPSw+7c730dEKOnK2OqKzgqOmKCiqXoJdJYL9hNwtt8Lz0BbjXeE27v faiK5pAuFycNafe58qWGIe5xg5W/O9TcMbEzD2ksYYsa8FkUVIkO/XQIbRD0t/oqIYse iBiGNaXzacTyWZB49ab2G4VX/4GQk3re+JNd5iyeemaPlLojEyhYNVsw0LZXtQKGCydU hgOdmoQhC8UHCf3s0MbuNgG//aMn/K90rLyHLtKILkf21hoAUiOIkUWTRqAK1XBmH3oJ nZ+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=G/Rb0C3m9mLD5VCDvcN+rjQS2+qeXwWcDmED3/RuzKI=; b=dpQdqCYrY4TYI3K+xEdv8XmeLSf5q5SyyGHdNLSPem7DwYNuqgU5LTzrZPN3f508sb mstIXM4g2gWIMGoUIiePXuRPO/RSbOnqaMvj1QhuiWII4/lOngiEnJeisubfKVBhqZZh OJYkYW7IoBYNKwMk1L+zImXXyW0rSAZ4uSS52guuY1ERnQzTxxtyjMt6m8l+wr7Eyfnk 9e7aUYwrCZ7yXpRfMgFoFFZlaDtcGgi3sVPTGKd4sDgymJLKysWcOBv4WaKiT9gSdh/q dz549vkFGw1YNYcl8isWQe1xTJJGUoryGlY0fxPoRLPO5kv3xhgGQuJ82Bgmncdhoe8+ KG7w== X-Gm-Message-State: ALKqPweYXHKlLrXUkAPEpBfr25AgYRsCykxz0QDI0o1RU2krMi7yFk5k qFxMPr0Jz/dpZLQ99EIYBT3k7lT7WgyzkgAy5Dc= X-Received: by 2002:aed:2c43:: with SMTP id f61-v6mr15229824qtd.105.1526415782953; Tue, 15 May 2018 13:23:02 -0700 (PDT) MIME-Version: 1.0 Received: by 10.12.152.150 with HTTP; Tue, 15 May 2018 13:23:02 -0700 (PDT) In-Reply-To: <20180515100304.3daa7929@bbrezillon> References: <1525920400-11392-1-git-send-email-Jane.Wan@nokia.com> <20180510140311.02805561@bbrezillon> <20180515093525.051856dd@bbrezillon> <20180515100304.3daa7929@bbrezillon> From: Andy Shevchenko Date: Tue, 15 May 2018 23:23:02 +0300 Message-ID: Subject: Re: [PATCH v5 2/2] mtd: rawnand: use bit-wise majority to recover the contents of ONFI parameter To: Boris Brezillon Cc: Shreeya Patel , Masahiro Yamada , Jane Wan , Miquel Raynal , Linux Kernel Mailing List , Marek Vasut , ties.bos@nokia.com, prabhakar.kushwaha@nxp.com, "open list:MEMORY TECHNOLOGY..." , jagdish.gediya@nxp.com, Richard Weinberger , Shawn Guo , Brian Norris , David Woodhouse Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 15, 2018 at 11:03 AM, Boris Brezillon wrote: > On Tue, 15 May 2018 10:46:00 +0300 > Andy Shevchenko wrote: > >> On Tue, May 15, 2018 at 10:35 AM, Boris Brezillon >> wrote: >> > On Mon, 14 May 2018 20:54:36 +0300 >> > Andy Shevchenko wrote: >> >> > for (k = 0; k < nbufs; k++) { >> >> > const u8 *srcbuf = srcbufs[j]; >> >> > >> >> > if (srcbuf[i] & BIT(k)) >> >> > m++; >> >> > } >> >> >> >> ...which is effectively hweightXX(). >> > >> > No it's not. >> >> I don't see how "not". In the loop everithing except m and k are >> invariants. What did I miss? > > We're not counting the number of bits set in an uXX var, but the number > of set bits at the same position in different buffers. ...on big picture. The excerpt above is hweight() against srcbuf[i]. Let's rewrite it like this: const u8 *srcbuf = srcbufs[j]; for (k = 0; k < nbufs; k++) { if (srcbuf[i] & BIT(k)) m++; } ...and now it looks obvious: m += hweight...(srcbuf[i]) _If_ nbufs is power of two we may use primitive helper. -- With Best Regards, Andy Shevchenko