[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <SJ1PR11MB608393FA8D4FE8092A84D53AFC9A9@SJ1PR11MB6083.namprd11.prod.outlook.com>
Date: Mon, 1 Aug 2022 15:58:29 +0000
From: "Luck, Tony" <tony.luck@...el.com>
To: "chu, jane" <jane.chu@...cle.com>, "bp@...en8.de" <bp@...en8.de>,
"tglx@...utronix.de" <tglx@...utronix.de>,
"mingo@...hat.com" <mingo@...hat.com>,
"dave.hansen@...ux.intel.com" <dave.hansen@...ux.intel.com>,
"x86@...nel.org" <x86@...nel.org>,
"linux-edac@...r.kernel.org" <linux-edac@...r.kernel.org>,
"Williams, Dan J" <dan.j.williams@...el.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"hch@....de" <hch@....de>,
"nvdimm@...ts.linux.dev" <nvdimm@...ts.linux.dev>
Subject: RE: [PATCH v5] x86/mce: retrieve poison range from hardware
> struct mce m;
> + int lsb = PAGE_SHIFT;
Some maintainers like to order local declaration lines from longest to shortest
> + /*
> + * Even if the ->validation_bits are set for address mask,
> + * to be extra safe, check and reject an error radius '0',
> + * and fallback to the default page size.
> + */
> + if (mem_err->validation_bits & CPER_MEM_VALID_PA_MASK) {
> + lsb = __ffs64(mem_err->physical_addr_mask);
> + if (lsb == 1)
> + lsb = PAGE_SHIFT;
> + }
The comment above __ffs64() says:
* The result is not defined if no bits are set, so check that @word
* is non-zero before calling this.
So if the intent is "extra safe" should check for that:
if (mem_err->validation_bits & CPER_MEM_VALID_PA_MASK &&
mem_err->physical_addr_mask) {
lsb = __ffs64(mem_err->physical_addr_mask);
if (lsb == 1)
lsb = PAGE_SHIFT;
}
-Tony
Powered by blists - more mailing lists