On Fri, 16 Aug 2019 12:21:58 +0300 Andy Shevchenko <andy.shevchenko@xxxxxxxxx> wrote: > On Fri, Aug 16, 2019 at 4:42 AM M. Vefa Bicakci <m.v.b@xxxxxxxxxx> wrote: > > > > On a Xen-based PVH virtual machine with more than 4 GiB of RAM, > > intel_pmc_core fails initialization with the following warning message > > from the kernel, indicating that the driver is attempting to ioremap > > RAM: > > > > ------------[ cut here ]------------ > > ioremap on RAM at 0x00000000fe000000 - 0x00000000fe001fff > > > This issue appears to manifest itself because of the following fallback > > mechanism in the driver: > > > > if (lpit_read_residency_count_address(&slp_s0_addr)) > > pmcdev->base_addr = PMC_BASE_ADDR_DEFAULT; > > > > The validity of address PMC_BASE_ADDR_DEFAULT (i.e., 0xFE000000) is not > > verified by the driver, which is what this patch introduces. With this > > patch, if address PMC_BASE_ADDR_DEFAULT is in RAM, then the driver will > > not attempt to ioremap the aforementioned address. > > Thank you for the patch. Hello Andy, Thank you for reviewing the patch! > Is there anything preventing us to use memremap() in such case? I re-read the documentation for memremap a few times along with taking a look at its code, but I think I am missing an important piece of information. As I understand it, depending on its flags, memremap would allow a section of RAM to be mapped for the PMC driver. The intention with this patch is to prevent the driver from being instantiated when the default/fallback memory address is in RAM, as this issue occurs with a non-administrative virtual machine (domU in Xen terminology) that does not simulate or pass-through a corresponding PMC device. I think that I have misunderstood your review comment though, so I would apppreciate it if you could elaborate. Thanks again for reviewing the patch, Vefa (Please note that my next reply may be delayed by about 10 hours.)