Re: [PATCH] EDAC, pnd2: Fix ioremap() size in dnv_rd_reg() from 64K -> 32K
On 8/8/19 5:05 PM, Luck, Tony wrote: > - base = ioremap((resource_size_t)addr, 0x1); > + base = ioremap((resource_size_t)addr, 0x8000); > > Changing one magic value for another. :-( Ok, I'll give it a name. > Do different BIOS do different things? I don't recall seeing this error > (but perhaps I missed it, or perhaps the kernel has added better checks). Sure, depending on where a BIOS locates MMIO resources the reported reserved ranges will vary. Normally those resources are packed by size so any changes in the installed/enabled device list can change the layout of the MMIO reserved regions as well. The BIOS could also choose to report adjacent MMIO resources as one larger reserved region. > If this number is at the whim of the BIOS, is there some way to > figure out what is the right value on a specific implementation? Digging back though the EDS (Intel Doc #558579) I found that there are two sizes we need to handle. If we're reading via the memory controller hub that BAR is 32KB per section 44.2.7 of the EDS. All sideband ports are 64KB, I'll resubmit taking that into account.
RE: [PATCH] EDAC, pnd2: Fix ioremap() size in dnv_rd_reg() from 64K -> 32K
> > BIOS has marked the 32K MCHBAR window as reserved, so when dnv_rd_reg() > tries to ioremap() a 64KB region you get warnings like: > > resource sanity check: requesting [mem 0xfed1-0xfed1], which spans > more than reserved [mem 0xfed1-0xfed17fff] caller > dnv_rd_reg+0xc8/0x240 [pnd2_edac] mapping multiple BARs > > ioremap() the correct size on Denverton platforms to get rid of those > warnings. I've several dmesg logs for loading the pnd2_edac driver on a Denverton server successfully. But the logs haven't got such warning. -Qiuxu
RE: [PATCH] EDAC, pnd2: Fix ioremap() size in dnv_rd_reg() from 64K -> 32K
- base = ioremap((resource_size_t)addr, 0x1); + base = ioremap((resource_size_t)addr, 0x8000); Changing one magic value for another. :-( Do different BIOS do different things? I don't recall seeing this error (but perhaps I missed it, or perhaps the kernel has added better checks). If this number is at the whim of the BIOS, is there some way to figure out what is the right value on a specific implementation? -Tony