Message ID | 20230202010738.2186174-1-srinivas.pandruvada@linux.intel.com (mailing list archive) |
---|---|
Headers | show |
Series | Add TPMI support | expand |
Hi, On 2/2/23 02:07, Srinivas Pandruvada wrote: > The TPMI (Topology Aware Register and PM Capsule Interface) provides a > flexible, extendable and PCIe enumerable MMIO interface for PM features. > > For example Intel Speed Select Technology (Intel SST) can replace all > mailbox commands with direct MMIO access. This reduces latency for > SST commands and also defines an architectural interface which will > persist for several next generations. > > Also Intel RAPL (Running Average Power Limit) provides a MMIO > interface using TPMI. This has advantage over traditional MSR > (Model Specific Register) interface, where a thread needs to be scheduled > on the target CPU to read or write. Also the RAPL features vary between > CPU models, and hence lot of model specific code. Here TPMI provides an > architectural interface by providing hierarchical tables and fields, > which will not need any model specific implementation. > > Same value is for Intel Uncore frequency where MSR interface can't > be used because of multiple domains. > > The TPMI interface uses a PCI VSEC structure to expose the location of > MMIO region, which is handled by Intel VSEC driver. Intel VSEC driver is > already present in upstream kernel. > > This series contains the base driver, which parses TPMI MMIO region > and creates device nodes for supported features. The current set of > PM feature support includes, Intel Speed Select, RAPL, Uncore frequency > scaling. > > The first there patches updates Intel VSEC driver to add TPMI VSEC ID > and enhance to reuse the code. > The next three patches adds TPMI base driver support. > The last patch adds MAINTAINERS entry. > > The TPMI documentation can be downloaded from: > https://github.com/intel/tpmi_power_management > > This series cleanly applies on 6.2-rc1. Thank you for your patch-series, I've applied the series to my review-hans branch: https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans Note it will show up in my review-hans branch once I've pushed my local branch there, which might take a while. Once I've run some tests on this branch the patches there will be added to the platform-drivers-x86/for-next branch and eventually will be included in the pdx86 pull-request to Linus for the next merge-window. Regards, Hans > Srinivas Pandruvada (7): > platform/x86/intel/vsec: Add TPMI ID > platform/x86/intel/vsec: Enhance and Export intel_vsec_add_aux() > platform/x86/intel/vsec: Support private data > platform/x86/intel: Intel TPMI enumeration driver > platform/x86/intel/tpmi: Process CPU package mapping > platform/x86/intel/tpmi: ADD tpmi external interface for tpmi feature > drivers > MAINTAINERS: Add entry for TPMI driver > > MAINTAINERS | 6 + > drivers/platform/x86/intel/Kconfig | 13 + > drivers/platform/x86/intel/Makefile | 4 + > drivers/platform/x86/intel/tpmi.c | 415 ++++++++++++++++++++++++++++ > drivers/platform/x86/intel/vsec.c | 21 +- > drivers/platform/x86/intel/vsec.h | 6 + > include/linux/intel_tpmi.h | 30 ++ > 7 files changed, 490 insertions(+), 5 deletions(-) > create mode 100644 drivers/platform/x86/intel/tpmi.c > create mode 100644 include/linux/intel_tpmi.h >
Hi, On 2/6/23 13:49, Hans de Goede wrote: > Thank you for your patch-series, I've applied the series to my > review-hans branch: > https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans > > Note it will show up in my review-hans branch once I've pushed my > local branch there, which might take a while. > > Once I've run some tests on this branch the patches there will be > added to the platform-drivers-x86/for-next branch and eventually > will be included in the pdx86 pull-request to Linus for the next > merge-window. One thing which I did notice, which is a pre-existing problem is that the IDA accesses in drivers/platform/x86/intel/vsec.c are not protected by any locking. This is likely ok for now because there is only 1 PCI device per type of ida and the enumeration of the vsec devices under the PCI device is done in a single loop, so all IDA accesses are single threaded atm. But still IMHO it would be good to protect the IDA accesses (ida_alloc() / ida_free()) with a mutex to protect against any future races. I think that a single global static mutex inside drivers/platform/x86/intel/vsec.c to protect the ida calls there should suffice for this. Regards, Hans
Hi Hans, On Mon, 2023-02-06 at 13:55 +0100, Hans de Goede wrote: > Hi, > > On 2/6/23 13:49, Hans de Goede wrote: > > > Thank you for your patch-series, I've applied the series to my > > review-hans branch: > > https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans > > > > Note it will show up in my review-hans branch once I've pushed my > > local branch there, which might take a while. > > > > Once I've run some tests on this branch the patches there will be > > added to the platform-drivers-x86/for-next branch and eventually > > will be included in the pdx86 pull-request to Linus for the next > > merge-window. > > One thing which I did notice, which is a pre-existing problem > is that the IDA accesses in drivers/platform/x86/intel/vsec.c > are not protected by any locking. > > This is likely ok for now because there is only 1 PCI device > per type of ida and the enumeration of the vsec devices > under the PCI device is done in a single loop, so all > IDA accesses are single threaded atm. > > But still IMHO it would be good to protect the IDA accesses > (ida_alloc() / ida_free()) with a mutex to protect against > any future races. > > I think that a single global static mutex inside > drivers/platform/x86/intel/vsec.c to protect the > ida calls there should suffice for this. Let me look into this and get back. Thanks, Srinivas > > Regards, > > Hans > > >
Hi Hans, On Mon, 2023-02-06 at 13:49 +0100, Hans de Goede wrote: > Hi, > > On 2/2/23 02:07, Srinivas Pandruvada wrote: > > [...] > Thank you for your patch-series, I've applied the series to my > review-hans branch: > https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans > > Thanks for the help here. > Note it will show up in my review-hans branch once I've pushed my > local branch there, which might take a while. > > Once I've run some tests on this branch the patches there will be > added to the platform-drivers-x86/for-next branch and eventually > will be included in the pdx86 pull-request to Linus for the next > merge-window. I guess this will appear in 6.3 merge window. Can I post next set of patches (targeted for 6.4)? Thanks, Srinivas > > Regards, > > Hans > > > > > > Srinivas Pandruvada (7): > > platform/x86/intel/vsec: Add TPMI ID > > platform/x86/intel/vsec: Enhance and Export intel_vsec_add_aux() > > platform/x86/intel/vsec: Support private data > > platform/x86/intel: Intel TPMI enumeration driver > > platform/x86/intel/tpmi: Process CPU package mapping > > platform/x86/intel/tpmi: ADD tpmi external interface for tpmi > > feature > > drivers > > MAINTAINERS: Add entry for TPMI driver > > > > MAINTAINERS | 6 + > > drivers/platform/x86/intel/Kconfig | 13 + > > drivers/platform/x86/intel/Makefile | 4 + > > drivers/platform/x86/intel/tpmi.c | 415 > > ++++++++++++++++++++++++++++ > > drivers/platform/x86/intel/vsec.c | 21 +- > > drivers/platform/x86/intel/vsec.h | 6 + > > include/linux/intel_tpmi.h | 30 ++ > > 7 files changed, 490 insertions(+), 5 deletions(-) > > create mode 100644 drivers/platform/x86/intel/tpmi.c > > create mode 100644 include/linux/intel_tpmi.h > > >
Hi, On 2/10/23 09:04, srinivas pandruvada wrote: > Hi Hans, > > On Mon, 2023-02-06 at 13:49 +0100, Hans de Goede wrote: >> Hi, >> >> On 2/2/23 02:07, Srinivas Pandruvada wrote: >> >> > [...] > >> Thank you for your patch-series, I've applied the series to my >> review-hans branch: >> https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans >> >> > Thanks for the help here. You're welcome. >> Note it will show up in my review-hans branch once I've pushed my >> local branch there, which might take a while. >> >> Once I've run some tests on this branch the patches there will be >> added to the platform-drivers-x86/for-next branch and eventually >> will be included in the pdx86 pull-request to Linus for the next >> merge-window. > I guess this will appear in 6.3 merge window. Yes I plan to push my review-hans branch to for-next shortly. > Can I post next set of patches (targeted for 6.4)? Yes please, I'm not sure if I can review them next week, but that will also give other people a chance to take a look and comment so getting them out there would be good. Regards, Hans >>> Srinivas Pandruvada (7): >>> platform/x86/intel/vsec: Add TPMI ID >>> platform/x86/intel/vsec: Enhance and Export intel_vsec_add_aux() >>> platform/x86/intel/vsec: Support private data >>> platform/x86/intel: Intel TPMI enumeration driver >>> platform/x86/intel/tpmi: Process CPU package mapping >>> platform/x86/intel/tpmi: ADD tpmi external interface for tpmi >>> feature >>> drivers >>> MAINTAINERS: Add entry for TPMI driver >>> >>> MAINTAINERS | 6 + >>> drivers/platform/x86/intel/Kconfig | 13 + >>> drivers/platform/x86/intel/Makefile | 4 + >>> drivers/platform/x86/intel/tpmi.c | 415 >>> ++++++++++++++++++++++++++++ >>> drivers/platform/x86/intel/vsec.c | 21 +- >>> drivers/platform/x86/intel/vsec.h | 6 + >>> include/linux/intel_tpmi.h | 30 ++ >>> 7 files changed, 490 insertions(+), 5 deletions(-) >>> create mode 100644 drivers/platform/x86/intel/tpmi.c >>> create mode 100644 include/linux/intel_tpmi.h >>> >> >