[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9043c594-68c2-b73e-2bad-c2506f206259@linux.intel.com>
Date: Wed, 31 May 2023 12:35:56 +0300 (EEST)
From: Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
To: "Shaopeng Tan (Fujitsu)" <tan.shaopeng@...itsu.com>
cc: "linux-kselftest@...r.kernel.org" <linux-kselftest@...r.kernel.org>,
Reinette Chatre <reinette.chatre@...el.com>,
Fenghua Yu <fenghua.yu@...el.com>,
Shuah Khan <shuah@...nel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v2 17/24] selftests/resctrl: Replace count_bits with
count_consecutive_bits()
On Wed, 31 May 2023, Shaopeng Tan (Fujitsu) wrote:
> Hi Ilpo,
>
> > CAT and CMT tests depends on masks being continuous.
> >
> > Replace count_bits with more appropriate variant that counts consecutive bits.
> >
> > Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
> > ---
> > @@ -218,6 +220,34 @@ static int get_bit_mask(char *filename, unsigned long
> > *mask)
> > return 0;
> > }
> >
> > +/*
> > + * count_consecutive_bits - Returns the longest train of bits in a bit mask
> > + * @val A bit mask
> > + * @start The location of the least-significant bit of the longest train
> > + *
> > + * Return: The length of the consecutive bits in the longest train of bits
> > + */
> > +unsigned int count_consecutive_bits(unsigned long val, unsigned int
> > +*start) {
> > + unsigned long last_val;
> > + int count = 0;
> > +
> > + while (val) {
> > + last_val = val;
> > + val &= (val >> 1);
> > + count++;
> > + }
>
> There may not be a case that the most-significant bit is 1 at present,
> but if this case exists, it cannot count correctly.
Can you please rephrase what is your concern here please?
I test 0U, 1U, ~0U, and a few more complex combinations of bits, and all
returned correct count so I might not have understood what case you meant
with your description.
This function does not count nor calculate the most-significant bit in
any phase but the longest train of bits using the count variable (and the
least-significant bit of the longest train in the code that is not
included into this partial snippet).
--
i.
Powered by blists - more mailing lists