diff mbox series

[2/3] perf/dwc_pcie: Load DesignWare PCIe PMU driver automatically on Ampere SoCs

Message ID 20241008231824.5102-3-ilkka@os.amperecomputing.com (mailing list archive)
State New
Headers show
Series perf/dwc_pcie: Enable DesignWare PCIe PMU on Ampere SoCs | expand

Commit Message

Ilkka Koskinen Oct. 8, 2024, 11:18 p.m. UTC
Load DesignWare PCIe PMU driver automatically if the system has a PCI
bridge by Ampere.

Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
---
 drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

Comments

Shuai Xue Oct. 9, 2024, 1:42 a.m. UTC | #1
在 2024/10/9 07:18, Ilkka Koskinen 写道:
> Load DesignWare PCIe PMU driver automatically if the system has a PCI
> bridge by Ampere.
> 
> Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
> ---
>   drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
>   1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
> index 3581d916d851..d752168733cf 100644
> --- a/drivers/perf/dwc_pcie_pmu.c
> +++ b/drivers/perf/dwc_pcie_pmu.c
> @@ -782,6 +782,16 @@ static void __exit dwc_pcie_pmu_exit(void)
>   module_init(dwc_pcie_pmu_init);
>   module_exit(dwc_pcie_pmu_exit);
>   
> +static const struct pci_device_id dwc_pcie_pmu_table[] = {
> +	{
> +		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),

Hi, Ilkka,

Does all Ampere PCI bridge use this IP?

Best Regards,
Shuai
Ilkka Koskinen Oct. 9, 2024, 8:07 p.m. UTC | #2
Hi Shuai,

On Wed, 9 Oct 2024, Shuai Xue wrote:
> 在 2024/10/9 07:18, Ilkka Koskinen 写道:
>> Load DesignWare PCIe PMU driver automatically if the system has a PCI
>> bridge by Ampere.
>> 
>> Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
>> ---
>>   drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>> 
>> diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
>> index 3581d916d851..d752168733cf 100644
>> --- a/drivers/perf/dwc_pcie_pmu.c
>> +++ b/drivers/perf/dwc_pcie_pmu.c
>> @@ -782,6 +782,16 @@ static void __exit dwc_pcie_pmu_exit(void)
>>   module_init(dwc_pcie_pmu_init);
>>   module_exit(dwc_pcie_pmu_exit);
>>   +static const struct pci_device_id dwc_pcie_pmu_table[] = {
>> +	{
>> +		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
>
> Hi, Ilkka,
>
> Does all Ampere PCI bridge use this IP?

I have checked Altra, AltraMax and AmpereOne SoCs and they all do. 
Unfortunately, I don't have access to eMAG at this point. If the IP
will be changed and the feature won't be supported in the future SoCs,
I can certainly change the logic to accept only certain SoCs.

Cheers, Ilkka

>
> Best Regards,
> Shuai
>
>
>
kernel test robot Oct. 9, 2024, 9:53 p.m. UTC | #3
Hi Ilkka,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.12-rc2 next-20241009]
[cannot apply to arm-perf/for-next/perf]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ilkka-Koskinen/perf-dwc_pcie-Add-support-for-Ampere-SoCs/20241009-072027
base:   linus/master
patch link:    https://lore.kernel.org/r/20241008231824.5102-3-ilkka%40os.amperecomputing.com
patch subject: [PATCH 2/3] perf/dwc_pcie: Load DesignWare PCIe PMU driver automatically on Ampere SoCs
config: arc-randconfig-001-20241010 (https://download.01.org/0day-ci/archive/20241010/202410100508.l5fTQewL-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241010/202410100508.l5fTQewL-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410100508.l5fTQewL-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/perf/dwc_pcie_pmu.c:785:35: warning: 'dwc_pcie_pmu_table' defined but not used [-Wunused-const-variable=]
     785 | static const struct pci_device_id dwc_pcie_pmu_table[] = {
         |                                   ^~~~~~~~~~~~~~~~~~


vim +/dwc_pcie_pmu_table +785 drivers/perf/dwc_pcie_pmu.c

   784	
 > 785	static const struct pci_device_id dwc_pcie_pmu_table[] = {
   786		{
   787			PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
   788			.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
   789			.class_mask	= ~0,
   790		},
   791		{ }
   792	};
   793	MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);
   794
kernel test robot Oct. 9, 2024, 10:14 p.m. UTC | #4
Hi Ilkka,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.12-rc2 next-20241009]
[cannot apply to arm-perf/for-next/perf]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ilkka-Koskinen/perf-dwc_pcie-Add-support-for-Ampere-SoCs/20241009-072027
base:   linus/master
patch link:    https://lore.kernel.org/r/20241008231824.5102-3-ilkka%40os.amperecomputing.com
patch subject: [PATCH 2/3] perf/dwc_pcie: Load DesignWare PCIe PMU driver automatically on Ampere SoCs
config: arm-randconfig-002-20241010 (https://download.01.org/0day-ci/archive/20241010/202410100514.xcrIAa1r-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 70e0a7e7e6a8541bcc46908c592eed561850e416)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241010/202410100514.xcrIAa1r-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202410100514.xcrIAa1r-lkp@intel.com/

All warnings (new ones prefixed by >>):

   In file included from drivers/perf/dwc_pcie_pmu.c:16:
   In file included from include/linux/perf_event.h:18:
   In file included from include/uapi/linux/bpf_perf_event.h:11:
   In file included from ./arch/arm/include/generated/uapi/asm/bpf_perf_event.h:1:
   In file included from include/uapi/asm-generic/bpf_perf_event.h:4:
   In file included from include/linux/ptrace.h:10:
   In file included from include/linux/pid_namespace.h:7:
   In file included from include/linux/mm.h:2213:
   include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     518 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
>> drivers/perf/dwc_pcie_pmu.c:785:35: warning: unused variable 'dwc_pcie_pmu_table' [-Wunused-const-variable]
     785 | static const struct pci_device_id dwc_pcie_pmu_table[] = {
         |                                   ^~~~~~~~~~~~~~~~~~
   2 warnings generated.


vim +/dwc_pcie_pmu_table +785 drivers/perf/dwc_pcie_pmu.c

   784	
 > 785	static const struct pci_device_id dwc_pcie_pmu_table[] = {
   786		{
   787			PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
   788			.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
   789			.class_mask	= ~0,
   790		},
   791		{ }
   792	};
   793	MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);
   794
Will Deacon Oct. 24, 2024, 11:32 a.m. UTC | #5
On Tue, Oct 08, 2024 at 11:18:23PM +0000, Ilkka Koskinen wrote:
> Load DesignWare PCIe PMU driver automatically if the system has a PCI
> bridge by Ampere.
> 
> Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
> ---
>  drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
> index 3581d916d851..d752168733cf 100644
> --- a/drivers/perf/dwc_pcie_pmu.c
> +++ b/drivers/perf/dwc_pcie_pmu.c
> @@ -782,6 +782,16 @@ static void __exit dwc_pcie_pmu_exit(void)
>  module_init(dwc_pcie_pmu_init);
>  module_exit(dwc_pcie_pmu_exit);
>  
> +static const struct pci_device_id dwc_pcie_pmu_table[] = {
> +	{
> +		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
> +		.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
> +		.class_mask	= ~0,
> +	},
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);

Hmm, won't this only work if the driver is modular? Should we be calling
pci_register_driver() for the builtin case?

Will
Ilkka Koskinen Oct. 24, 2024, 10:19 p.m. UTC | #6
Hi Will,

On Thu, 24 Oct 2024, Will Deacon wrote:
> On Tue, Oct 08, 2024 at 11:18:23PM +0000, Ilkka Koskinen wrote:
>> Load DesignWare PCIe PMU driver automatically if the system has a PCI
>> bridge by Ampere.
>>
>> Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
>> ---
>>  drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
>>  1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
>> index 3581d916d851..d752168733cf 100644
>> --- a/drivers/perf/dwc_pcie_pmu.c
>> +++ b/drivers/perf/dwc_pcie_pmu.c
>> @@ -782,6 +782,16 @@ static void __exit dwc_pcie_pmu_exit(void)
>>  module_init(dwc_pcie_pmu_init);
>>  module_exit(dwc_pcie_pmu_exit);
>>
>> +static const struct pci_device_id dwc_pcie_pmu_table[] = {
>> +	{
>> +		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
>> +		.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
>> +		.class_mask	= ~0,
>> +	},
>> +	{ }
>> +};
>> +MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);
>
> Hmm, won't this only work if the driver is modular? Should we be calling
> pci_register_driver() for the builtin case?

That would be the normal case indeed. However, this driver is quite 
different: dwc_pcie_pmu_init() goes through all the pci devices looking 
for root ports with the pmu capabilities. Moreover, the probe function 
isn't bound to any specific vendor/class/device IDs. This patch simply 
makes sure the driver is loaded and the init function gets called, if the 
driver was built as module and ran on Ampere system.

Cheers, Ilkka

>
> Will
>
Will Deacon Oct. 28, 2024, 5:31 p.m. UTC | #7
On Thu, Oct 24, 2024 at 03:19:17PM -0700, Ilkka Koskinen wrote:
> 
> Hi Will,
> 
> On Thu, 24 Oct 2024, Will Deacon wrote:
> > On Tue, Oct 08, 2024 at 11:18:23PM +0000, Ilkka Koskinen wrote:
> > > Load DesignWare PCIe PMU driver automatically if the system has a PCI
> > > bridge by Ampere.
> > > 
> > > Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
> > > ---
> > >  drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
> > >  1 file changed, 10 insertions(+)
> > > 
> > > diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
> > > index 3581d916d851..d752168733cf 100644
> > > --- a/drivers/perf/dwc_pcie_pmu.c
> > > +++ b/drivers/perf/dwc_pcie_pmu.c
> > > @@ -782,6 +782,16 @@ static void __exit dwc_pcie_pmu_exit(void)
> > >  module_init(dwc_pcie_pmu_init);
> > >  module_exit(dwc_pcie_pmu_exit);
> > > 
> > > +static const struct pci_device_id dwc_pcie_pmu_table[] = {
> > > +	{
> > > +		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
> > > +		.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
> > > +		.class_mask	= ~0,
> > > +	},
> > > +	{ }
> > > +};
> > > +MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);
> > 
> > Hmm, won't this only work if the driver is modular? Should we be calling
> > pci_register_driver() for the builtin case?
> 
> That would be the normal case indeed. However, this driver is quite
> different: dwc_pcie_pmu_init() goes through all the pci devices looking for
> root ports with the pmu capabilities. Moreover, the probe function isn't
> bound to any specific vendor/class/device IDs. This patch simply makes sure
> the driver is loaded and the init function gets called, if the driver was
> built as module and ran on Ampere system.

Ok, but that seems like the wrong approach, no? We end up with a weird
list of vendors who want the thing to probe on their SoCs and, by
omission, everybody not on the list doesn't want that behaviour.

Will
Ilkka Koskinen Oct. 29, 2024, 3:27 a.m. UTC | #8
On Mon, 28 Oct 2024, Will Deacon wrote:
> On Thu, Oct 24, 2024 at 03:19:17PM -0700, Ilkka Koskinen wrote:
>>
>> Hi Will,
>>
>> On Thu, 24 Oct 2024, Will Deacon wrote:
>>> On Tue, Oct 08, 2024 at 11:18:23PM +0000, Ilkka Koskinen wrote:
>>>> Load DesignWare PCIe PMU driver automatically if the system has a PCI
>>>> bridge by Ampere.
>>>>
>>>> Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
>>>> ---
>>>>  drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
>>>>  1 file changed, 10 insertions(+)
>>>>
>>>> diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
>>>> index 3581d916d851..d752168733cf 100644
>>>> --- a/drivers/perf/dwc_pcie_pmu.c
>>>> +++ b/drivers/perf/dwc_pcie_pmu.c
>>>> @@ -782,6 +782,16 @@ static void __exit dwc_pcie_pmu_exit(void)
>>>>  module_init(dwc_pcie_pmu_init);
>>>>  module_exit(dwc_pcie_pmu_exit);
>>>>
>>>> +static const struct pci_device_id dwc_pcie_pmu_table[] = {
>>>> +	{
>>>> +		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
>>>> +		.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
>>>> +		.class_mask	= ~0,
>>>> +	},
>>>> +	{ }
>>>> +};
>>>> +MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);
>>>
>>> Hmm, won't this only work if the driver is modular? Should we be calling
>>> pci_register_driver() for the builtin case?
>>
>> That would be the normal case indeed. However, this driver is quite
>> different: dwc_pcie_pmu_init() goes through all the pci devices looking for
>> root ports with the pmu capabilities. Moreover, the probe function isn't
>> bound to any specific vendor/class/device IDs. This patch simply makes sure
>> the driver is loaded and the init function gets called, if the driver was
>> built as module and ran on Ampere system.
>
> Ok, but that seems like the wrong approach, no? We end up with a weird
> list of vendors who want the thing to probe on their SoCs and, by
> omission, everybody not on the list doesn't want that behaviour.

Ideally, dwc pmu driver would claim the supported root ports but I think 
the PCIe driver is doing that. How about if we simply drop the auto 
loading patch and let users to manually load the driver as they have been 
doing so far?

Cheers, Ilkka

>
> Will
>
Will Deacon Oct. 29, 2024, 1 p.m. UTC | #9
On Mon, Oct 28, 2024 at 08:27:27PM -0700, Ilkka Koskinen wrote:
> 
> On Mon, 28 Oct 2024, Will Deacon wrote:
> > On Thu, Oct 24, 2024 at 03:19:17PM -0700, Ilkka Koskinen wrote:
> > > 
> > > Hi Will,
> > > 
> > > On Thu, 24 Oct 2024, Will Deacon wrote:
> > > > On Tue, Oct 08, 2024 at 11:18:23PM +0000, Ilkka Koskinen wrote:
> > > > > Load DesignWare PCIe PMU driver automatically if the system has a PCI
> > > > > bridge by Ampere.
> > > > > 
> > > > > Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
> > > > > ---
> > > > >  drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
> > > > >  1 file changed, 10 insertions(+)
> > > > > 
> > > > > diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
> > > > > index 3581d916d851..d752168733cf 100644
> > > > > --- a/drivers/perf/dwc_pcie_pmu.c
> > > > > +++ b/drivers/perf/dwc_pcie_pmu.c
> > > > > @@ -782,6 +782,16 @@ static void __exit dwc_pcie_pmu_exit(void)
> > > > >  module_init(dwc_pcie_pmu_init);
> > > > >  module_exit(dwc_pcie_pmu_exit);
> > > > > 
> > > > > +static const struct pci_device_id dwc_pcie_pmu_table[] = {
> > > > > +	{
> > > > > +		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
> > > > > +		.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
> > > > > +		.class_mask	= ~0,
> > > > > +	},
> > > > > +	{ }
> > > > > +};
> > > > > +MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);
> > > > 
> > > > Hmm, won't this only work if the driver is modular? Should we be calling
> > > > pci_register_driver() for the builtin case?
> > > 
> > > That would be the normal case indeed. However, this driver is quite
> > > different: dwc_pcie_pmu_init() goes through all the pci devices looking for
> > > root ports with the pmu capabilities. Moreover, the probe function isn't
> > > bound to any specific vendor/class/device IDs. This patch simply makes sure
> > > the driver is loaded and the init function gets called, if the driver was
> > > built as module and ran on Ampere system.
> > 
> > Ok, but that seems like the wrong approach, no? We end up with a weird
> > list of vendors who want the thing to probe on their SoCs and, by
> > omission, everybody not on the list doesn't want that behaviour.
> 
> Ideally, dwc pmu driver would claim the supported root ports but I think the
> PCIe driver is doing that. How about if we simply drop the auto loading
> patch and let users to manually load the driver as they have been doing so
> far?

Sure, I'll pick the other two up. Thanks!

Will
Jonathan Cameron Oct. 29, 2024, 3:39 p.m. UTC | #10
On Tue, 29 Oct 2024 13:00:15 +0000
Will Deacon <will@kernel.org> wrote:

> On Mon, Oct 28, 2024 at 08:27:27PM -0700, Ilkka Koskinen wrote:
> > 
> > On Mon, 28 Oct 2024, Will Deacon wrote:  
> > > On Thu, Oct 24, 2024 at 03:19:17PM -0700, Ilkka Koskinen wrote:  
> > > > 
> > > > Hi Will,
> > > > 
> > > > On Thu, 24 Oct 2024, Will Deacon wrote:  
> > > > > On Tue, Oct 08, 2024 at 11:18:23PM +0000, Ilkka Koskinen wrote:  
> > > > > > Load DesignWare PCIe PMU driver automatically if the system has a PCI
> > > > > > bridge by Ampere.
> > > > > > 
> > > > > > Signed-off-by: Ilkka Koskinen <ilkka@os.amperecomputing.com>
> > > > > > ---
> > > > > >  drivers/perf/dwc_pcie_pmu.c | 10 ++++++++++
> > > > > >  1 file changed, 10 insertions(+)
> > > > > > 
> > > > > > diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
> > > > > > index 3581d916d851..d752168733cf 100644
> > > > > > --- a/drivers/perf/dwc_pcie_pmu.c
> > > > > > +++ b/drivers/perf/dwc_pcie_pmu.c
> > > > > > @@ -782,6 +782,16 @@ static void __exit dwc_pcie_pmu_exit(void)
> > > > > >  module_init(dwc_pcie_pmu_init);
> > > > > >  module_exit(dwc_pcie_pmu_exit);
> > > > > > 
> > > > > > +static const struct pci_device_id dwc_pcie_pmu_table[] = {
> > > > > > +	{
> > > > > > +		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
> > > > > > +		.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
> > > > > > +		.class_mask	= ~0,
> > > > > > +	},
> > > > > > +	{ }
> > > > > > +};
> > > > > > +MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);  
> > > > > 
> > > > > Hmm, won't this only work if the driver is modular? Should we be calling
> > > > > pci_register_driver() for the builtin case?  
> > > > 
> > > > That would be the normal case indeed. However, this driver is quite
> > > > different: dwc_pcie_pmu_init() goes through all the pci devices looking for
> > > > root ports with the pmu capabilities. Moreover, the probe function isn't
> > > > bound to any specific vendor/class/device IDs. This patch simply makes sure
> > > > the driver is loaded and the init function gets called, if the driver was
> > > > built as module and ran on Ampere system.  
> > > 
> > > Ok, but that seems like the wrong approach, no? We end up with a weird
> > > list of vendors who want the thing to probe on their SoCs and, by
> > > omission, everybody not on the list doesn't want that behaviour.  
> > 
> > Ideally, dwc pmu driver would claim the supported root ports but I think the
> > PCIe driver is doing that. How about if we simply drop the auto loading
> > patch and let users to manually load the driver as they have been doing so
> > far?  

Yup. The PCIe portdrv binds to the port.  Lots of work needed to clean that
up and make it extensible. Maybe we can then kick this PMU driver off from
there once it's done.

Jonathan

> 
> Sure, I'll pick the other two up. Thanks!
> 
> Will
>
diff mbox series

Patch

diff --git a/drivers/perf/dwc_pcie_pmu.c b/drivers/perf/dwc_pcie_pmu.c
index 3581d916d851..d752168733cf 100644
--- a/drivers/perf/dwc_pcie_pmu.c
+++ b/drivers/perf/dwc_pcie_pmu.c
@@ -782,6 +782,16 @@  static void __exit dwc_pcie_pmu_exit(void)
 module_init(dwc_pcie_pmu_init);
 module_exit(dwc_pcie_pmu_exit);
 
+static const struct pci_device_id dwc_pcie_pmu_table[] = {
+	{
+		PCI_DEVICE(PCI_VENDOR_ID_AMPERE, PCI_ANY_ID),
+		.class		= PCI_CLASS_BRIDGE_PCI_NORMAL,
+		.class_mask	= ~0,
+	},
+	{ }
+};
+MODULE_DEVICE_TABLE(pci, dwc_pcie_pmu_table);
+
 MODULE_DESCRIPTION("PMU driver for DesignWare Cores PCI Express Controller");
 MODULE_AUTHOR("Shuai Xue <xueshuai@linux.alibaba.com>");
 MODULE_LICENSE("GPL v2");