RE: [PATCH 2/2] drm/amdgpu/umsch: reinitialize write pointer in hw init

2024-03-25 Thread Xu, Feifei
[AMD Official Use Only - General]

Series is Reviewed-by: Feifei Xu 

-Original Message-
From: amd-gfx  On Behalf Of Lang Yu
Sent: Monday, March 25, 2024 1:37 PM
To: amd-gfx@lists.freedesktop.org
Cc: Deucher, Alexander ; Koenig, Christian 
; Gopalakrishnan, Veerabadhran (Veera) 
; Yu, Lang 
Subject: [PATCH 2/2] drm/amdgpu/umsch: reinitialize write pointer in hw init

Otherwise the old one will be used during GPU reset.
That's not expected.

Signed-off-by: Lang Yu 
---
 drivers/gpu/drm/amd/amdgpu/umsch_mm_v4_0.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/umsch_mm_v4_0.c 
b/drivers/gpu/drm/amd/amdgpu/umsch_mm_v4_0.c
index 84368cf1e175..bd57896ab85d 100644
--- a/drivers/gpu/drm/amd/amdgpu/umsch_mm_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/umsch_mm_v4_0.c
@@ -225,6 +225,8 @@ static int umsch_mm_v4_0_ring_start(struct amdgpu_umsch_mm 
*umsch)

WREG32_SOC15(VCN, 0, regVCN_UMSCH_RB_SIZE, ring->ring_size);

+   ring->wptr = 0;
+
data = RREG32_SOC15(VCN, 0, regVCN_RB_ENABLE);
data &= ~(VCN_RB_ENABLE__AUDIO_RB_EN_MASK);
WREG32_SOC15(VCN, 0, regVCN_RB_ENABLE, data);
--
2.25.1



RE: [PATCH] drm/amdgpu : Increase the mes log buffer size as per new MES FW version

2024-03-25 Thread Liu, Shaoyun
[AMD Official Use Only - General]

It can  cause page fault  when the  log size exceed the  page size .

-Original Message-
From: Kuehling, Felix 
Sent: Monday, March 25, 2024 2:58 PM
To: Liu, Shaoyun ; amd-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/amdgpu : Increase the mes log buffer size as per new 
MES FW version


On 2024-03-22 12:49, shaoyunl wrote:
>  From MES version 0x54, the log entry increased and require the log
> buffer size to be increased. The 16k is maximum size agreed

What happens when you run the new firmware on an old kernel that only allocates 
4KB?

Regards,
   Felix


>
> Signed-off-by: shaoyunl 
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 5 ++---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 1 +
>   2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> index 9ace848e174c..78e4f88f5134 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
> @@ -103,7 +103,7 @@ static int amdgpu_mes_event_log_init(struct amdgpu_device 
> *adev)
>   if (!amdgpu_mes_log_enable)
>   return 0;
>
> - r = amdgpu_bo_create_kernel(adev, PAGE_SIZE, PAGE_SIZE,
> + r = amdgpu_bo_create_kernel(adev, AMDGPU_MES_LOG_BUFFER_SIZE,
> +PAGE_SIZE,
>   AMDGPU_GEM_DOMAIN_GTT,
>   >mes.event_log_gpu_obj,
>   >mes.event_log_gpu_addr, @@ -1548,12 
> +1548,11 @@
> static int amdgpu_debugfs_mes_event_log_show(struct seq_file *m, void *unused)
>   uint32_t *mem = (uint32_t *)(adev->mes.event_log_cpu_addr);
>
>   seq_hex_dump(m, "", DUMP_PREFIX_OFFSET, 32, 4,
> -  mem, PAGE_SIZE, false);
> +  mem, AMDGPU_MES_LOG_BUFFER_SIZE, false);
>
>   return 0;
>   }
>
> -
>   DEFINE_SHOW_ATTRIBUTE(amdgpu_debugfs_mes_event_log);
>
>   #endif
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> index 7d4f93fea937..4c8fc3117ef8 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
> @@ -52,6 +52,7 @@ enum amdgpu_mes_priority_level {
>
>   #define AMDGPU_MES_PROC_CTX_SIZE 0x1000 /* one page area */
>   #define AMDGPU_MES_GANG_CTX_SIZE 0x1000 /* one page area */
> +#define AMDGPU_MES_LOG_BUFFER_SIZE 0x4000 /* Maximu log buffer size
> +for MES */
>
>   struct amdgpu_mes_funcs;
>


Re: [PATCH 00/28] Remove PCI_IRQ_LEGACY

2024-03-25 Thread Damien Le Moal
On 3/26/24 02:59, Bjorn Helgaas wrote:
> I applied all these to pci/enumeration for v6.10, thanks!
> 
> I added acks and reviewed-by and will update if we receive more, and
> adjusted subject lines to add "... instead of PCI_IRQ_LEGACY" and in
> some cases to match history of the file.

Thanks Bjorn !

-- 
Damien Le Moal
Western Digital Research



Re: [PATCH 09/28] mfd: intel-lpss-pci: Use PCI_IRQ_INTX

2024-03-25 Thread Bjorn Helgaas
On Mon, Mar 25, 2024 at 09:39:38PM +0200, Andy Shevchenko wrote:
> On Mon, Mar 25, 2024 at 04:09:20PM +0900, Damien Le Moal wrote:
> > Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
> > macro.
> 
> Not needed anymore. MFD subsystem has a patch moving this to MSI support.
> But you need to coordinate with Lee how to proceed (in case of conflicts MFD
> version should be taken).

Thanks!  It looks like your patch [1] has been applied already and
makes this one obsolete, so I dropped this one from the series.

Bjorn

[1] 
https://lore.kernel.org/all/20240312165905.1764507-1-andriy.shevche...@linux.intel.com/


RE: [PATCH 1/3] amd/amdkfd: add a function to wait no process running in kfd

2024-03-25 Thread Luo, Zhigang
[AMD Official Use Only - General]

Hi Mukul,

The purpose of adding this function is to waiting user applications to be kill 
after calling amdgpu_amdkfd_pre_reset().
If I understand correctly, kfd_locked will be set after calling 
amdgpu_amdkfd_pre_reset(). So, I added this new function to only check if 
kfd_processes_table is empty.

Thanks,
Zhigang

-Original Message-
From: Joshi, Mukul 
Sent: Monday, March 25, 2024 12:08 PM
To: Luo, Zhigang ; amd-gfx@lists.freedesktop.org
Cc: Zhang, Hawking ; Saye, Sashank 
; Chan, Hing Pong ; Yang, Philip 
; Lazar, Lijo ; Luo, Zhigang 

Subject: RE: [PATCH 1/3] amd/amdkfd: add a function to wait no process running 
in kfd

[AMD Official Use Only - General]

> -Original Message-
> From: amd-gfx  On Behalf Of
> Zhigang Luo
> Sent: Monday, March 25, 2024 11:18 AM
> To: amd-gfx@lists.freedesktop.org
> Cc: Zhang, Hawking ; Saye, Sashank
> ; Chan, Hing Pong ; Yang,
> Philip ; Lazar, Lijo ; Luo,
> Zhigang 
> Subject: [PATCH 1/3] amd/amdkfd: add a function to wait no process
> running in kfd
>
> Caution: This message originated from an External Source. Use proper
> caution when opening attachments, clicking links, or responding.
>
>
> Signed-off-by: Zhigang Luo 
> Change-Id: I2a98d513c26107ac76ecf20e951c188afbc7ede6
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 20
> 
> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 10 +-
>  drivers/gpu/drm/amd/amdkfd/kfd_device.c| 11 +++
>  3 files changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> index d5fde8adf19b..e02bfcec608b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> @@ -261,6 +261,26 @@ int amdgpu_amdkfd_resume(struct amdgpu_device
> *adev, bool run_pm)
> return r;
>  }
>
> +int amdgpu_amdkfd_wait_no_process_running(struct amdgpu_device
> *adev) {
> +   unsigned long end_jiffies;
> +
> +   if (!adev->kfd.dev)
> +   return 0;
> +
> +   end_jiffies =
> msecs_to_jiffies(AMDKFD_WAIT_NO_PROCESS_RUNNING_TIMEOUT_MS) + jiffies;
> +   while (!kgd2kfd_is_processes_table_empty(adev->kfd.dev)) {
> +   if (time_after(jiffies, end_jiffies)) {
> +   dev_err(adev->dev, "wait no process running
> + timeout\n");
> +
> +   return -ETIME;
> +   }
> +   schedule();
> +   }
> +
> +   return 0;
> +}
> +
>  int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev)  {
> int r = 0;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> index caee36e52a09..d46dccc5bbf7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> @@ -38,6 +38,8 @@
>  #include "amdgpu_vm.h"
>  #include "amdgpu_xcp.h"
>
> +#define AMDKFD_WAIT_NO_PROCESS_RUNNING_TIMEOUT_MS 1
> +
>  extern uint64_t amdgpu_amdkfd_total_mem_size;
>
>  enum TLB_FLUSH_TYPE {
> @@ -169,7 +171,7 @@ void amdgpu_amdkfd_set_compute_idle(struct
> amdgpu_device *adev, bool idle);  bool
> amdgpu_amdkfd_have_atomics_support(struct amdgpu_device *adev);
>
>  bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid);
> -
> +int amdgpu_amdkfd_wait_no_process_running(struct amdgpu_device
> *adev);
>  int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev);
>
>  int amdgpu_amdkfd_post_reset(struct amdgpu_device *adev); @@ -411,6
> +413,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,  void
> kgd2kfd_device_exit(struct kfd_dev *kfd);  void kgd2kfd_suspend(struct
> kfd_dev *kfd, bool run_pm);  int kgd2kfd_resume(struct kfd_dev *kfd,
> bool run_pm);
> +bool kgd2kfd_is_processes_table_empty(struct kfd_dev *kfd);
>  int kgd2kfd_pre_reset(struct kfd_dev *kfd);  int
> kgd2kfd_post_reset(struct kfd_dev *kfd);  void
> kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry); @@
> -454,6 +457,11 @@ static inline int kgd2kfd_resume(struct kfd_dev *kfd, bool 
> run_pm)
> return 0;
>  }
>
> +static inline bool kgd2kfd_is_processes_table_empty(struct kfd_dev
> +*kfd) {
> +   return true;
> +}
> +
>  static inline int kgd2kfd_pre_reset(struct kfd_dev *kfd)  {
> return 0;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> index 041ec3de55e7..2bec79e0c721 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> @@ -894,6 +894,17 @@ void kgd2kfd_device_exit(struct kfd_dev *kfd)
> kfree(kfd);
>  }
>
> +bool kgd2kfd_is_processes_table_empty(struct kfd_dev *kfd) {
> +   bool is_empty;
> +
> +   mutex_lock(_processes_mutex);
> +   is_empty = hash_empty(kfd_processes_table);
> +   mutex_unlock(_processes_mutex);
> +
> +   return is_empty;
> +}
> +
We already have a function, kgd2kfd_check_and_lock_kfd(), for this, which is 

Re: [PATCH] drm/amdgpu : Increase the mes log buffer size as per new MES FW version

2024-03-25 Thread Felix Kuehling



On 2024-03-22 12:49, shaoyunl wrote:

 From MES version 0x54, the log entry increased and require the log buffer
size to be increased. The 16k is maximum size agreed


What happens when you run the new firmware on an old kernel that only 
allocates 4KB?


Regards,
  Felix




Signed-off-by: shaoyunl 
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 5 ++---
  drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 1 +
  2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
index 9ace848e174c..78e4f88f5134 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
@@ -103,7 +103,7 @@ static int amdgpu_mes_event_log_init(struct amdgpu_device 
*adev)
if (!amdgpu_mes_log_enable)
return 0;
  
-	r = amdgpu_bo_create_kernel(adev, PAGE_SIZE, PAGE_SIZE,

+   r = amdgpu_bo_create_kernel(adev, AMDGPU_MES_LOG_BUFFER_SIZE, PAGE_SIZE,
AMDGPU_GEM_DOMAIN_GTT,
>mes.event_log_gpu_obj,
>mes.event_log_gpu_addr,
@@ -1548,12 +1548,11 @@ static int amdgpu_debugfs_mes_event_log_show(struct 
seq_file *m, void *unused)
uint32_t *mem = (uint32_t *)(adev->mes.event_log_cpu_addr);
  
  	seq_hex_dump(m, "", DUMP_PREFIX_OFFSET, 32, 4,

-mem, PAGE_SIZE, false);
+mem, AMDGPU_MES_LOG_BUFFER_SIZE, false);
  
  	return 0;

  }
  
-

  DEFINE_SHOW_ATTRIBUTE(amdgpu_debugfs_mes_event_log);
  
  #endif

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
index 7d4f93fea937..4c8fc3117ef8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
@@ -52,6 +52,7 @@ enum amdgpu_mes_priority_level {
  
  #define AMDGPU_MES_PROC_CTX_SIZE 0x1000 /* one page area */

  #define AMDGPU_MES_GANG_CTX_SIZE 0x1000 /* one page area */
+#define AMDGPU_MES_LOG_BUFFER_SIZE 0x4000 /* Maximu log buffer size for MES */
  
  struct amdgpu_mes_funcs;
  


Re: [PATCH 2/3] amd/amdgpu: wait no process running in kfd before resuming device

2024-03-25 Thread Felix Kuehling

On 2024-03-22 15:57, Zhigang Luo wrote:

it will cause page fault after device recovered if there is a process running.

Signed-off-by: Zhigang Luo 
Change-Id: Ib1eddb56b69ecd41fe703abd169944154f48b0cd
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++
  1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 70261eb9b0bb..2867e9186e44 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -4974,6 +4974,8 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device 
*adev,
  retry:
amdgpu_amdkfd_pre_reset(adev);
  
+	amdgpu_amdkfd_wait_no_process_running(adev);

+


This waits for the processes to be terminated. What would cause the 
processes to be terminated? Why do the processes need to be terminated? 
Isn't it enough if the processes are removed from the runlist in 
pre-reset, so they can no longer execute on the GPU?


Regards,
  Felix



amdgpu_device_stop_pending_resets(adev);
  
  	if (from_hypervisor)


Re: [PATCH 00/28] Remove PCI_IRQ_LEGACY

2024-03-25 Thread Bjorn Helgaas
On Mon, Mar 25, 2024 at 04:09:11PM +0900, Damien Le Moal wrote:
> This patch series removes the use of the depracated PCI_IRQ_LEGACY macro
> and replace it with PCI_IRQ_INTX. No functional change.
> 
> Damien Le Moal (28):
>   PCI: msi: Use PCI_IRQ_INTX
>   PCI: portdrv: Use PCI_IRQ_INTX
>   PCI: documentation: Use PCI_IRQ_INTX
>   sound: intel: Use PCI_IRQ_INTX
>   usb: hcd-pci: Use PCI_IRQ_INTX
>   tty: 8250_pci: Use PCI_IRQ_INTX
>   platform: intel_ips: Use PCI_IRQ_INTX
>   ntb: Use PCI_IRQ_INTX
>   mfd: intel-lpss-pci: Use PCI_IRQ_INTX
>   drm: amdgpu: Use PCI_IRQ_INTX
>   infiniband: qib: Use PCI_IRQ_INTX
>   infiniband: vmw_pvrdma: Use PCI_IRQ_INTX
>   misc: vmci_guest: Use PCI_IRQ_ALL_TYPES
>   net: xgbe: Use PCI_IRQ_INTX
>   net: aquantia atlantic: Use PCI_IRQ_INTX
>   net: atheros: alx: Use PCI_IRQ_INTX
>   net: realtek: r8169: Use PCI_IRQ_INTX
>   net: wangxun: Use PCI_IRQ_INTX
>   net: wireless: ath10k: Use references to INTX instead of LEGACY
>   net wireless; realtec: Use PCI_IRQ_INTX
>   scsi: arcmsr: Use PCI_IRQ_INTX
>   scsi: hpsa: Use PCI_IRQ_INTX
>   scsi: ipr: Use PCI_IRQ_INTX
>   scsi: megaraid: Use PCI_IRQ_INTX
>   scsi: mpt3sas: Use PCI_IRQ_INTX
>   scsi: pmcraid: Use PCI_IRQ_INTX
>   scsi: vmw_pvscsi: Do not use PCI_IRQ_LEGACY
>   PCI: Remove PCI_IRQ_LEGACY
> 
>  Documentation/PCI/msi-howto.rst   |  2 +-
>  Documentation/PCI/pci.rst |  2 +-
>  .../translations/zh_CN/PCI/msi-howto.rst  |  2 +-
>  Documentation/translations/zh_CN/PCI/pci.rst  |  2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c   |  2 +-
>  drivers/infiniband/hw/qib/qib_iba7220.c   |  2 +-
>  drivers/infiniband/hw/qib/qib_iba7322.c   |  5 ++-
>  drivers/infiniband/hw/qib/qib_pcie.c  |  2 +-
>  .../infiniband/hw/vmw_pvrdma/pvrdma_main.c|  2 +-
>  drivers/mfd/intel-lpss-pci.c  |  2 +-
>  drivers/misc/vmw_vmci/vmci_guest.c|  3 +-
>  drivers/net/ethernet/amd/xgbe/xgbe-pci.c  |  2 +-
>  .../net/ethernet/aquantia/atlantic/aq_cfg.h   |  2 +-
>  .../net/ethernet/aquantia/atlantic/aq_hw.h|  2 +-
>  .../net/ethernet/aquantia/atlantic/aq_nic.c   |  2 +-
>  .../ethernet/aquantia/atlantic/aq_pci_func.c  |  9 ++---
>  .../aquantia/atlantic/hw_atl/hw_atl_a0.c  |  2 +-
>  .../aquantia/atlantic/hw_atl/hw_atl_b0.c  |  2 +-
>  .../aquantia/atlantic/hw_atl2/hw_atl2.c   |  2 +-
>  drivers/net/ethernet/atheros/alx/main.c   |  2 +-
>  drivers/net/ethernet/realtek/r8169_main.c |  2 +-
>  drivers/net/ethernet/wangxun/libwx/wx_lib.c   |  8 ++---
>  drivers/net/wireless/ath/ath10k/ahb.c | 18 +-
>  drivers/net/wireless/ath/ath10k/pci.c | 36 +--
>  drivers/net/wireless/ath/ath10k/pci.h |  6 ++--
>  drivers/net/wireless/realtek/rtw88/pci.c  |  2 +-
>  drivers/net/wireless/realtek/rtw89/pci.c  |  2 +-
>  drivers/ntb/hw/idt/ntb_hw_idt.c   |  2 +-
>  drivers/pci/msi/api.c |  8 ++---
>  drivers/pci/pcie/portdrv.c|  8 ++---
>  drivers/platform/x86/intel_ips.c  |  2 +-
>  drivers/scsi/arcmsr/arcmsr_hba.c  |  2 +-
>  drivers/scsi/hpsa.c   |  2 +-
>  drivers/scsi/ipr.c|  2 +-
>  drivers/scsi/megaraid/megaraid_sas_base.c |  4 +--
>  drivers/scsi/mpt3sas/mpt3sas_base.c   |  2 +-
>  drivers/scsi/pmcraid.c|  2 +-
>  drivers/scsi/vmw_pvscsi.c |  2 +-
>  drivers/tty/serial/8250/8250_pci.c|  2 +-
>  drivers/usb/core/hcd-pci.c|  3 +-
>  include/linux/pci.h   |  7 ++--
>  sound/soc/intel/avs/core.c|  2 +-
>  42 files changed, 84 insertions(+), 91 deletions(-)

I applied all these to pci/enumeration for v6.10, thanks!

I added acks and reviewed-by and will update if we receive more, and
adjusted subject lines to add "... instead of PCI_IRQ_LEGACY" and in
some cases to match history of the file.

Bjorn


RE: [PATCH 1/3] amd/amdkfd: add a function to wait no process running in kfd

2024-03-25 Thread Joshi, Mukul
[AMD Official Use Only - General]

> -Original Message-
> From: amd-gfx  On Behalf Of
> Zhigang Luo
> Sent: Monday, March 25, 2024 11:18 AM
> To: amd-gfx@lists.freedesktop.org
> Cc: Zhang, Hawking ; Saye, Sashank
> ; Chan, Hing Pong ;
> Yang, Philip ; Lazar, Lijo ; Luo,
> Zhigang 
> Subject: [PATCH 1/3] amd/amdkfd: add a function to wait no process running
> in kfd
>
> Caution: This message originated from an External Source. Use proper caution
> when opening attachments, clicking links, or responding.
>
>
> Signed-off-by: Zhigang Luo 
> Change-Id: I2a98d513c26107ac76ecf20e951c188afbc7ede6
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 20
> 
> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 10 +-
>  drivers/gpu/drm/amd/amdkfd/kfd_device.c| 11 +++
>  3 files changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> index d5fde8adf19b..e02bfcec608b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> @@ -261,6 +261,26 @@ int amdgpu_amdkfd_resume(struct amdgpu_device
> *adev, bool run_pm)
> return r;
>  }
>
> +int amdgpu_amdkfd_wait_no_process_running(struct amdgpu_device
> *adev) {
> +   unsigned long end_jiffies;
> +
> +   if (!adev->kfd.dev)
> +   return 0;
> +
> +   end_jiffies =
> msecs_to_jiffies(AMDKFD_WAIT_NO_PROCESS_RUNNING_TIMEOUT_MS) +
> jiffies;
> +   while (!kgd2kfd_is_processes_table_empty(adev->kfd.dev)) {
> +   if (time_after(jiffies, end_jiffies)) {
> +   dev_err(adev->dev, "wait no process running
> + timeout\n");
> +
> +   return -ETIME;
> +   }
> +   schedule();
> +   }
> +
> +   return 0;
> +}
> +
>  int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev)  {
> int r = 0;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> index caee36e52a09..d46dccc5bbf7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> @@ -38,6 +38,8 @@
>  #include "amdgpu_vm.h"
>  #include "amdgpu_xcp.h"
>
> +#define AMDKFD_WAIT_NO_PROCESS_RUNNING_TIMEOUT_MS 1
> +
>  extern uint64_t amdgpu_amdkfd_total_mem_size;
>
>  enum TLB_FLUSH_TYPE {
> @@ -169,7 +171,7 @@ void amdgpu_amdkfd_set_compute_idle(struct
> amdgpu_device *adev, bool idle);  bool
> amdgpu_amdkfd_have_atomics_support(struct amdgpu_device *adev);
>
>  bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid);
> -
> +int amdgpu_amdkfd_wait_no_process_running(struct amdgpu_device
> *adev);
>  int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev);
>
>  int amdgpu_amdkfd_post_reset(struct amdgpu_device *adev); @@ -411,6
> +413,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,  void
> kgd2kfd_device_exit(struct kfd_dev *kfd);  void kgd2kfd_suspend(struct
> kfd_dev *kfd, bool run_pm);  int kgd2kfd_resume(struct kfd_dev *kfd, bool
> run_pm);
> +bool kgd2kfd_is_processes_table_empty(struct kfd_dev *kfd);
>  int kgd2kfd_pre_reset(struct kfd_dev *kfd);  int kgd2kfd_post_reset(struct
> kfd_dev *kfd);  void kgd2kfd_interrupt(struct kfd_dev *kfd, const void
> *ih_ring_entry); @@ -454,6 +457,11 @@ static inline int
> kgd2kfd_resume(struct kfd_dev *kfd, bool run_pm)
> return 0;
>  }
>
> +static inline bool kgd2kfd_is_processes_table_empty(struct kfd_dev
> +*kfd) {
> +   return true;
> +}
> +
>  static inline int kgd2kfd_pre_reset(struct kfd_dev *kfd)  {
> return 0;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> index 041ec3de55e7..2bec79e0c721 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> @@ -894,6 +894,17 @@ void kgd2kfd_device_exit(struct kfd_dev *kfd)
> kfree(kfd);
>  }
>
> +bool kgd2kfd_is_processes_table_empty(struct kfd_dev *kfd) {
> +   bool is_empty;
> +
> +   mutex_lock(_processes_mutex);
> +   is_empty = hash_empty(kfd_processes_table);
> +   mutex_unlock(_processes_mutex);
> +
> +   return is_empty;
> +}
> +
We already have a function, kgd2kfd_check_and_lock_kfd(), for this, which is 
more robust.
Please use that one instead.

Regards,
Mukul

>  int kgd2kfd_pre_reset(struct kfd_dev *kfd)  {
> struct kfd_node *node;
> --
> 2.25.1



[PATCH 3/3] amd/amdgpu: improve VF recover time

2024-03-25 Thread Zhigang Luo
1. change AMDGPU_VF2PF_UPDATE_MAX_RETRY_LIMIT from 30 to 5.
2. set fatel error detected flag.

Change-Id: If1e0357deffa4549d4e83e925c8d764f7f8c9f42
Signed-off-by: Zhigang Luo 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c   | 1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h   | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 2867e9186e44..50f87fff778e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -4984,6 +4984,7 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device 
*adev,
r = amdgpu_virt_reset_gpu(adev);
if (r)
return r;
+   amdgpu_ras_set_fed(adev, false);
amdgpu_irq_gpu_reset_resume_helper(adev);
 
/* some sw clean up VF needs to do before recover */
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
index aed60aaf1a55..4b6e50cfba08 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
@@ -593,6 +593,7 @@ static void amdgpu_virt_update_vf2pf_work_item(struct 
work_struct *work)
adev->virt.vf2pf_update_retry_cnt++;
if ((adev->virt.vf2pf_update_retry_cnt >= 
AMDGPU_VF2PF_UPDATE_MAX_RETRY_LIMIT) &&
amdgpu_sriov_runtime(adev) && !amdgpu_in_reset(adev)) {
+   amdgpu_ras_set_fed(adev, true);
if (amdgpu_reset_domain_schedule(adev->reset_domain,
  >virt.flr_work))
return;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
index a858bc98cad4..0a57b637c4bd 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h
@@ -52,7 +52,7 @@
 /* tonga/fiji use this offset */
 #define mmBIF_IOV_FUNC_IDENTIFIER 0x1503
 
-#define AMDGPU_VF2PF_UPDATE_MAX_RETRY_LIMIT 30
+#define AMDGPU_VF2PF_UPDATE_MAX_RETRY_LIMIT 5
 
 enum amdgpu_sriov_vf_mode {
SRIOV_VF_MODE_BARE_METAL = 0,
-- 
2.25.1



[PATCH 2/3] amd/amdgpu: wait no process running in kfd before resuming device

2024-03-25 Thread Zhigang Luo
it will cause page fault after device recovered if there is a process running.

Signed-off-by: Zhigang Luo 
Change-Id: Ib1eddb56b69ecd41fe703abd169944154f48b0cd
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 70261eb9b0bb..2867e9186e44 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -4974,6 +4974,8 @@ static int amdgpu_device_reset_sriov(struct amdgpu_device 
*adev,
 retry:
amdgpu_amdkfd_pre_reset(adev);
 
+   amdgpu_amdkfd_wait_no_process_running(adev);
+
amdgpu_device_stop_pending_resets(adev);
 
if (from_hypervisor)
-- 
2.25.1



[PATCH 1/3] amd/amdkfd: add a function to wait no process running in kfd

2024-03-25 Thread Zhigang Luo
Signed-off-by: Zhigang Luo 
Change-Id: I2a98d513c26107ac76ecf20e951c188afbc7ede6
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 20 
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 10 +-
 drivers/gpu/drm/amd/amdkfd/kfd_device.c| 11 +++
 3 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
index d5fde8adf19b..e02bfcec608b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
@@ -261,6 +261,26 @@ int amdgpu_amdkfd_resume(struct amdgpu_device *adev, bool 
run_pm)
return r;
 }
 
+int amdgpu_amdkfd_wait_no_process_running(struct amdgpu_device *adev)
+{
+   unsigned long end_jiffies;
+
+   if (!adev->kfd.dev)
+   return 0;
+
+   end_jiffies = 
msecs_to_jiffies(AMDKFD_WAIT_NO_PROCESS_RUNNING_TIMEOUT_MS) + jiffies;
+   while (!kgd2kfd_is_processes_table_empty(adev->kfd.dev)) {
+   if (time_after(jiffies, end_jiffies)) {
+   dev_err(adev->dev, "wait no process running timeout\n");
+
+   return -ETIME;
+   }
+   schedule();
+   }
+
+   return 0;
+}
+
 int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev)
 {
int r = 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
index caee36e52a09..d46dccc5bbf7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
@@ -38,6 +38,8 @@
 #include "amdgpu_vm.h"
 #include "amdgpu_xcp.h"
 
+#define AMDKFD_WAIT_NO_PROCESS_RUNNING_TIMEOUT_MS 1
+
 extern uint64_t amdgpu_amdkfd_total_mem_size;
 
 enum TLB_FLUSH_TYPE {
@@ -169,7 +171,7 @@ void amdgpu_amdkfd_set_compute_idle(struct amdgpu_device 
*adev, bool idle);
 bool amdgpu_amdkfd_have_atomics_support(struct amdgpu_device *adev);
 
 bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid);
-
+int amdgpu_amdkfd_wait_no_process_running(struct amdgpu_device *adev);
 int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev);
 
 int amdgpu_amdkfd_post_reset(struct amdgpu_device *adev);
@@ -411,6 +413,7 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
 void kgd2kfd_device_exit(struct kfd_dev *kfd);
 void kgd2kfd_suspend(struct kfd_dev *kfd, bool run_pm);
 int kgd2kfd_resume(struct kfd_dev *kfd, bool run_pm);
+bool kgd2kfd_is_processes_table_empty(struct kfd_dev *kfd);
 int kgd2kfd_pre_reset(struct kfd_dev *kfd);
 int kgd2kfd_post_reset(struct kfd_dev *kfd);
 void kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry);
@@ -454,6 +457,11 @@ static inline int kgd2kfd_resume(struct kfd_dev *kfd, bool 
run_pm)
return 0;
 }
 
+static inline bool kgd2kfd_is_processes_table_empty(struct kfd_dev *kfd)
+{
+   return true;
+}
+
 static inline int kgd2kfd_pre_reset(struct kfd_dev *kfd)
 {
return 0;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
index 041ec3de55e7..2bec79e0c721 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
@@ -894,6 +894,17 @@ void kgd2kfd_device_exit(struct kfd_dev *kfd)
kfree(kfd);
 }
 
+bool kgd2kfd_is_processes_table_empty(struct kfd_dev *kfd)
+{
+   bool is_empty;
+
+   mutex_lock(_processes_mutex);
+   is_empty = hash_empty(kfd_processes_table);
+   mutex_unlock(_processes_mutex);
+
+   return is_empty;
+}
+
 int kgd2kfd_pre_reset(struct kfd_dev *kfd)
 {
struct kfd_node *node;
-- 
2.25.1



Re: [PATCH] drm/amdgpu: always force full reset for SOC21

2024-03-25 Thread Alex Deucher
On Sun, Mar 24, 2024 at 6:42 AM Friedrich Vock  wrote:
>
> On 24.03.24 01:52, Alex Deucher wrote:
> > There are cases where soft reset seems to succeed, but
> > does not, so always use mode1/2 for now.
>
> Does "for now" mean that a proper fix is being worked on/will appear later?
>
> Immediately falling back to full resets is a really bad experience, and
> it's especially catastrophic when only MODE1 is available.
>
> Of course, soft resets succeeding but leaving the GPU in a faulty state
> isn't acceptable either, but I think it's pretty important to keep the
> ability to do soft resets if at all possible.
>
> If it's not possible to wait with this until the proper fix is
> available, I hope that at least it can be reverted soon.

Yes, it's being actively debugged.

Alex

>
> Thanks,
> Friedrich
>
> > Signed-off-by: Alex Deucher
> > ---
> >   drivers/gpu/drm/amd/amdgpu/soc21.c | 2 --
> >   1 file changed, 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/soc21.c 
> > b/drivers/gpu/drm/amd/amdgpu/soc21.c
> > index 581a3bd11481..8526282f4da1 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/soc21.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/soc21.c
> > @@ -457,10 +457,8 @@ static bool soc21_need_full_reset(struct amdgpu_device 
> > *adev)
> >   {
> >   switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
> >   case IP_VERSION(11, 0, 0):
> > - return amdgpu_ras_is_supported(adev, AMDGPU_RAS_BLOCK__UMC);
> >   case IP_VERSION(11, 0, 2):
> >   case IP_VERSION(11, 0, 3):
> > - return false;
> >   default:
> >   return true;
> >   }


RE: [PATCH 00/22] DC Patches Mar 25 2024

2024-03-25 Thread Wheeler, Daniel
[Public]

Hi all,

This week this patchset was tested on the following systems:
* Lenovo ThinkBook T13s Gen4 with AMD Ryzen 5 6600U
* MSI Gaming X Trio RX 6800
* Gigabyte Gaming OC RX 7900 XTX

These systems were tested on the following display/connection types:
* eDP, (1080p 60hz [5650U]) (1920x1200 60hz [6600U]) (2560x1600 
120hz[6600U])
* VGA and DVI (1680x1050 60hz [DP to VGA/DVI, USB-C to VGA/DVI])
* DP/HDMI/USB-C (1440p 170hz, 4k 60hz, 4k 144hz, 4k 240hz [Includes 
USB-C to DP/HDMI adapters])
* Thunderbolt (LG Ultrafine 5k)
* MST (Startech MST14DP123DP [DP to 3x DP] and 2x 4k 60Hz displays)
* DSC (with Cable Matters 101075 [DP to 3x DP] with 3x 4k60 displays, 
and HP Hook G2 with 1 4k60 display)
* USB 4 (Kensington SD5700T and 1x 4k 60Hz display)
* PCON (Club3D CAC-1085 and 1x 4k 144Hz display [at 4k 120HZ, as that 
is the max the adapter supports])

The testing is a mix of automated and manual tests. Manual testing includes 
(but is not limited to):
* Changing display configurations and settings
* Benchmark testing
* Feature testing (Freesync, etc.)

Automated testing includes (but is not limited to):
* Script testing (scripts to automate some of the manual checks)
* IGT testing

The patchset consists of the amd-staging-drm-next branch (Head commit - 
8294fd749e0d drm/amd/display: Get min/max vfreq from display_info) with new 
patches added on top of it.

Tested on Ubuntu 22.04.3, on Wayland and X11, using KDE Plasma and Gnome.


Tested-by: Daniel Wheeler 


Thank you,

Dan Wheeler
Sr. Technologist | AMD
SW Display
--
1 Commerce Valley Dr E, Thornhill, ON L3T 7X6
amd.com

-Original Message-
From: Tom Chung 
Sent: Wednesday, March 20, 2024 2:36 AM
To: amd-gfx@lists.freedesktop.org
Cc: Wentland, Harry ; Li, Sun peng (Leo) 
; Siqueira, Rodrigo ; Pillai, 
Aurabindo ; Li, Roman ; Lin, Wayne 
; Gutierrez, Agustin ; Chung, 
ChiaHsuan (Tom) ; Wu, Hersen ; 
Zuo, Jerry ; Wheeler, Daniel 
Subject: [PATCH 00/22] DC Patches Mar 25 2024

This DC patchset brings improvements in multiple areas. In summary, we have:

- Fix some bound and NULL check
- Fix nonseamless transition from ODM + MPO to ODM + subvp
- Allow Z8 when stutter threshold is not met
- Remove plane and stream pointers from dc scratch
- Remove read/write to external register
- Increase number of hpo dp link encoders
- Increase clock table size
- Add new IPS config mode
- Build scaling params when a new plane is appended
- Refactor DML2 interfaces
- Allow idle opts for no flip case on PSR panel

Cc: Daniel Wheeler 


Alvin Lee (2):
  drm/amd/display: Allow idle opts for no flip case on PSR panel
  drm/amd/display: Remove plane and stream pointers from dc scratch

Anthony Koo (1):
  drm/amd/display: [FW Promotion] Release 0.0.210.0

Aric Cyr (1):
  drm/amd/display: 3.2.278

Bhawanpreet Lakha (2):
  drm/amd/display: Allow Z8 when stutter threshold is not met
  drm/amd/display: Allow Z8 when stutter threshold is not met for dcn35

Dillon Varone (3):
  drm/amd/display: Expand DML2 callbacks
  drm/amd/display: Refactor DML2 interfaces
  drm/amd/display: Modify DHCUB waterwark structures and functions

George Shen (1):
  drm/amd/display: Remove MPC rate control logic from DCN30 and above

Muhammad Ahmed (1):
  drm/amd/display: Skip pipe if the pipe idx not set properly

Natanel Roizenman (1):
  drm/amd/display: Consolidate HPO enable/disable and restrict only to
state transitions.

Nicholas Kazlauskas (1):
  drm/amd/display: Add new IPS config mode

Roman Li (1):
  drm/amd/display: Fix bounds check for dcn35 DcfClocks

Sohaib Nadeem (1):
  drm/amd/display: Added missing null checks

Sridevi Arvindekar (1):
  drm/amd/display: Increase number of hpo dp link encoders

Sung Joon Kim (2):
  drm/amd/display: Remove read/write to external register
  drm/amd/display: Increase clock table size

Taimur Hassan (1):
  drm/amd/display: Send DTBCLK disable message on first commit

Wenjing Liu (3):
  drm/amd/display: fix a dereference of a NULL pointer
  drm/amd/display: fix nonseamless transition from ODM + MPO to ODM +
subvp
  drm/amd/display: build scaling params when a new plane is appended

 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c |  18 +--
 .../amd/display/amdgpu_dm/amdgpu_dm_color.c   |  42 +++---
 .../display/dc/clk_mgr/dcn35/dcn35_clk_mgr.c  |  45 +--  
.../amd/display/dc/clk_mgr/dcn35/dcn35_smu.c  |  21 ---
 .../amd/display/dc/clk_mgr/dcn35/dcn35_smu.h  |   2 -
 drivers/gpu/drm/amd/display/dc/core/dc.c  |  86 ++--
 .../drm/amd/display/dc/core/dc_hw_sequencer.c |   8 +-
 .../gpu/drm/amd/display/dc/core/dc_resource.c |  89 -
 .../gpu/drm/amd/display/dc/core/dc_state.c|  31 +++--
 .../gpu/drm/amd/display/dc/core/dc_stream.c   |  16 +--
 

RE: [PATCH 10/28] drm: amdgpu: Use PCI_IRQ_INTX

2024-03-25 Thread Deucher, Alexander
[Public]

> -Original Message-
> From: amd-gfx  On Behalf Of
> Damien Le Moal
> Sent: Monday, March 25, 2024 3:09 AM
> To: linux-...@vger.kernel.org; Bjorn Helgaas ;
> Manivannan Sadhasivami ; linux-
> s...@vger.kernel.org; Martin K . Petersen ;
> Jaroslav Kysela ; linux-so...@vger.kernel.org; Greg Kroah-
> Hartman ; linux-...@vger.kernel.org; linux-
> ser...@vger.kernel.org; Hans de Goede ; platform-
> driver-...@vger.kernel.org; n...@lists.linux.dev; Lee Jones ;
> David Airlie ; amd-gfx@lists.freedesktop.org; Jason
> Gunthorpe ; linux-r...@vger.kernel.org; David S . Miller
> ; Eric Dumazet ;
> net...@vger.kernel.org; linux-ker...@vger.kernel.org
> Subject: [PATCH 10/28] drm: amdgpu: Use PCI_IRQ_INTX
>
> Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
> macro.
>
> Signed-off-by: Damien Le Moal 

Feel free to take it through whatever tree makes sense.  If you want me to pick 
it up, let me know.
Acked-by: Alex Deucher 

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> index 7e6d09730e6d..d18113017ee7 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> @@ -279,7 +279,7 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
>   adev->irq.msi_enabled = false;
>
>   if (!amdgpu_msi_ok(adev))
> - flags = PCI_IRQ_LEGACY;
> + flags = PCI_IRQ_INTX;
>   else
>   flags = PCI_IRQ_ALL_TYPES;
>
> --
> 2.44.0



Re: [PATCH] drm/amdgpu : Increase the mes log buffer size as per new MES FW version

2024-03-25 Thread Sharma, Shashank
[AMD Official Use Only - General]




From: amd-gfx  on behalf of Liu, Shaoyun 

Sent: Monday, March 25, 2024 1:58 PM
To: amd-gfx@lists.freedesktop.org 
Subject: Re: [PATCH] drm/amdgpu : Increase the mes log buffer size as per new 
MES FW version


[AMD Official Use Only - General]


[AMD Official Use Only - General]

Ping

Get Outlook for iOS

From: Liu, Shaoyun 
Sent: Friday, March 22, 2024 12:49:56 PM
To: amd-gfx@lists.freedesktop.org 
Cc: Liu, Shaoyun 
Subject: [PATCH] drm/amdgpu : Increase the mes log buffer size as per new MES 
FW version

>From MES version 0x54, the log entry increased and require the log buffer
size to be increased. The 16k is maximum size agreed

Signed-off-by: shaoyunl 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 5 ++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 1 +
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
index 9ace848e174c..78e4f88f5134 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
@@ -103,7 +103,7 @@ static int amdgpu_mes_event_log_init(struct amdgpu_device 
*adev)
 if (!amdgpu_mes_log_enable)
 return 0;

-   r = amdgpu_bo_create_kernel(adev, PAGE_SIZE, PAGE_SIZE,
+   r = amdgpu_bo_create_kernel(adev, AMDGPU_MES_LOG_BUFFER_SIZE, PAGE_SIZE,

shouldn't this be under a version check >= 0x54 instead of directly changing it 
?

 AMDGPU_GEM_DOMAIN_GTT,
 >mes.event_log_gpu_obj,
 >mes.event_log_gpu_addr,
@@ -1548,12 +1548,11 @@ static int amdgpu_debugfs_mes_event_log_show(struct 
seq_file *m, void *unused)
 uint32_t *mem = (uint32_t *)(adev->mes.event_log_cpu_addr);

 seq_hex_dump(m, "", DUMP_PREFIX_OFFSET, 32, 4,
-mem, PAGE_SIZE, false);
+mem, AMDGPU_MES_LOG_BUFFER_SIZE, false);

 return 0;
 }

-
 DEFINE_SHOW_ATTRIBUTE(amdgpu_debugfs_mes_event_log);

 #endif
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
index 7d4f93fea937..4c8fc3117ef8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
@@ -52,6 +52,7 @@ enum amdgpu_mes_priority_level {

 #define AMDGPU_MES_PROC_CTX_SIZE 0x1000 /* one page area */
 #define AMDGPU_MES_GANG_CTX_SIZE 0x1000 /* one page area */
+#define AMDGPU_MES_LOG_BUFFER_SIZE 0x4000 /* Maximu log buffer size for MES */

Apart from that, it looks good to me.


  *   Shashank

 struct amdgpu_mes_funcs;

--
2.34.1



Re: [PATCH] drm/amdkfd: return negative error code in svm_ioctl()

2024-03-25 Thread Philip Yang

  


On 2024-03-25 02:31, Su Hui wrote:


  svm_ioctl() should return negative error code in default case.

Fixes: 42de677f7999 ("drm/amdkfd: register svm range")
Signed-off-by: Su Hui 

Good catch, ioctl should return -errno. I will apply it to
  drm-next.
Reviewed-by: Philip Yang


  
---
Ps: When I try to compile this file, there is a error :
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c:28:10: fatal error: amdgpu_sync.h:
No such file or directory.

Maybe there are some steps I missed or this place need to be corrected?

Don't know how you compile the driver, amdgpu_sync.h is located
  under amdgpu folder, amdkfd/Makefile is included from
  amdgpu/Makefile, which set ccflag-y -I correctly.
Regards,
Philip


  

 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index f0f7f48af413..41c376f3fd27 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -4147,7 +4147,7 @@ svm_ioctl(struct kfd_process *p, enum kfd_ioctl_svm_op op, uint64_t start,
 		r = svm_range_get_attr(p, mm, start, size, nattrs, attrs);
 		break;
 	default:
-		r = EINVAL;
+		r = -EINVAL;
 		break;
 	}
 


  



Re: [PATCH v9 1/3] drm/buddy: Implement tracking clear page feature

2024-03-25 Thread Paneer Selvam, Arunpravin

Hi Matthew,
ping?

Thanks,
Arun.
On 3/19/2024 3:10 AM, Arunpravin Paneer Selvam wrote:

- Add tracking clear page feature.

- Driver should enable the DRM_BUDDY_CLEARED flag if it
   successfully clears the blocks in the free path. On the otherhand,
   DRM buddy marks each block as cleared.

- Track the available cleared pages size

- If driver requests cleared memory we prefer cleared memory
   but fallback to uncleared if we can't find the cleared blocks.
   when driver requests uncleared memory we try to use uncleared but
   fallback to cleared memory if necessary.

- When a block gets freed we clear it and mark the freed block as cleared,
   when there are buddies which are cleared as well we can merge them.
   Otherwise, we prefer to keep the blocks as separated.

- Add a function to support defragmentation.

v1:
   - Depends on the flag check DRM_BUDDY_CLEARED, enable the block as
 cleared. Else, reset the clear flag for each block in the list(Christian)
   - For merging the 2 cleared blocks compare as below,
 drm_buddy_is_clear(block) != drm_buddy_is_clear(buddy)(Christian)
   - Defragment the memory beginning from min_order
 till the required memory space is available.

v2: (Matthew)
   - Add a wrapper drm_buddy_free_list_internal for the freeing of blocks
 operation within drm buddy.
   - Write a macro block_incompatible() to allocate the required blocks.
   - Update the xe driver for the drm_buddy_free_list change in arguments.
   - add a warning if the two blocks are incompatible on
 defragmentation
   - call full defragmentation in the fini() function
   - place a condition to test if min_order is equal to 0
   - replace the list with safe_reverse() variant as we might
 remove the block from the list.

v3:
   - fix Gitlab user reported lockup issue.
   - Keep DRM_BUDDY_HEADER_CLEAR define sorted(Matthew)
   - modify to pass the root order instead max_order in fini()
 function(Matthew)
   - change bool 1 to true(Matthew)
   - add check if min_block_size is power of 2(Matthew)
   - modify the min_block_size datatype to u64(Matthew)

v4:
   - rename the function drm_buddy_defrag with __force_merge.
   - Include __force_merge directly in drm buddy file and remove
 the defrag use in amdgpu driver.
   - Remove list_empty() check(Matthew)
   - Remove unnecessary space, headers and placement of new variables(Matthew)
   - Add a unit test case(Matthew)

Signed-off-by: Arunpravin Paneer Selvam 
Signed-off-by: Matthew Auld 
Suggested-by: Christian König 
Suggested-by: Matthew Auld 
---
  drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c  |   6 +-
  drivers/gpu/drm/drm_buddy.c   | 427 ++
  drivers/gpu/drm/i915/i915_ttm_buddy_manager.c |   6 +-
  drivers/gpu/drm/tests/drm_buddy_test.c|  18 +-
  drivers/gpu/drm/xe/xe_ttm_vram_mgr.c  |   4 +-
  include/drm/drm_buddy.h   |  16 +-
  6 files changed, 360 insertions(+), 117 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
index 8db880244324..c0c851409241 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
@@ -571,7 +571,7 @@ static int amdgpu_vram_mgr_new(struct ttm_resource_manager 
*man,
return 0;
  
  error_free_blocks:

-   drm_buddy_free_list(mm, >blocks);
+   drm_buddy_free_list(mm, >blocks, 0);
mutex_unlock(>lock);
  error_fini:
ttm_resource_fini(man, >base);
@@ -604,7 +604,7 @@ static void amdgpu_vram_mgr_del(struct ttm_resource_manager 
*man,
  
  	amdgpu_vram_mgr_do_reserve(man);
  
-	drm_buddy_free_list(mm, >blocks);

+   drm_buddy_free_list(mm, >blocks, 0);
mutex_unlock(>lock);
  
  	atomic64_sub(vis_usage, >vis_usage);

@@ -912,7 +912,7 @@ void amdgpu_vram_mgr_fini(struct amdgpu_device *adev)
kfree(rsv);
  
  	list_for_each_entry_safe(rsv, temp, >reserved_pages, blocks) {

-   drm_buddy_free_list(>mm, >allocated);
+   drm_buddy_free_list(>mm, >allocated, 0);
kfree(rsv);
}
if (!adev->gmc.is_app_apu)
diff --git a/drivers/gpu/drm/drm_buddy.c b/drivers/gpu/drm/drm_buddy.c
index c4222b886db7..625a30a6b855 100644
--- a/drivers/gpu/drm/drm_buddy.c
+++ b/drivers/gpu/drm/drm_buddy.c
@@ -38,8 +38,8 @@ static void drm_block_free(struct drm_buddy *mm,
kmem_cache_free(slab_blocks, block);
  }
  
-static void list_insert_sorted(struct drm_buddy *mm,

-  struct drm_buddy_block *block)
+static void list_insert(struct drm_buddy *mm,
+   struct drm_buddy_block *block)
  {
struct drm_buddy_block *node;
struct list_head *head;
@@ -57,6 +57,16 @@ static void list_insert_sorted(struct drm_buddy *mm,
__list_add(>link, node->link.prev, >link);
  }
  
+static void clear_reset(struct drm_buddy_block *block)

+{
+   block->header &= ~DRM_BUDDY_HEADER_CLEAR;
+}

Re: [PATCH] drm/amdgpu : Increase the mes log buffer size as per new MES FW version

2024-03-25 Thread Liu, Shaoyun
[AMD Official Use Only - General]

Ping

Get Outlook for iOS

From: Liu, Shaoyun 
Sent: Friday, March 22, 2024 12:49:56 PM
To: amd-gfx@lists.freedesktop.org 
Cc: Liu, Shaoyun 
Subject: [PATCH] drm/amdgpu : Increase the mes log buffer size as per new MES 
FW version

>From MES version 0x54, the log entry increased and require the log buffer
size to be increased. The 16k is maximum size agreed

Signed-off-by: shaoyunl 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c | 5 ++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h | 1 +
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
index 9ace848e174c..78e4f88f5134 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
@@ -103,7 +103,7 @@ static int amdgpu_mes_event_log_init(struct amdgpu_device 
*adev)
 if (!amdgpu_mes_log_enable)
 return 0;

-   r = amdgpu_bo_create_kernel(adev, PAGE_SIZE, PAGE_SIZE,
+   r = amdgpu_bo_create_kernel(adev, AMDGPU_MES_LOG_BUFFER_SIZE, PAGE_SIZE,
 AMDGPU_GEM_DOMAIN_GTT,
 >mes.event_log_gpu_obj,
 >mes.event_log_gpu_addr,
@@ -1548,12 +1548,11 @@ static int amdgpu_debugfs_mes_event_log_show(struct 
seq_file *m, void *unused)
 uint32_t *mem = (uint32_t *)(adev->mes.event_log_cpu_addr);

 seq_hex_dump(m, "", DUMP_PREFIX_OFFSET, 32, 4,
-mem, PAGE_SIZE, false);
+mem, AMDGPU_MES_LOG_BUFFER_SIZE, false);

 return 0;
 }

-
 DEFINE_SHOW_ATTRIBUTE(amdgpu_debugfs_mes_event_log);

 #endif
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
index 7d4f93fea937..4c8fc3117ef8 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.h
@@ -52,6 +52,7 @@ enum amdgpu_mes_priority_level {

 #define AMDGPU_MES_PROC_CTX_SIZE 0x1000 /* one page area */
 #define AMDGPU_MES_GANG_CTX_SIZE 0x1000 /* one page area */
+#define AMDGPU_MES_LOG_BUFFER_SIZE 0x4000 /* Maximu log buffer size for MES */

 struct amdgpu_mes_funcs;

--
2.34.1



Re: [PATCH 07/28] platform: intel_ips: Use PCI_IRQ_INTX

2024-03-25 Thread Hans de Goede
Hi,

On 3/25/24 8:09 AM, Damien Le Moal wrote:
> Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
> macro.
> 
> Signed-off-by: Damien Le Moal 

Thanks, patch looks good to me, feel free to merge
this through whatever tree is convenient (or let me
know if you want me to pick up just this one patch
from the series).

Acked-by: Hans de Goede 

Regards,

Hans




> ---
>  drivers/platform/x86/intel_ips.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/platform/x86/intel_ips.c 
> b/drivers/platform/x86/intel_ips.c
> index ba38649cc142..73ec4460a151 100644
> --- a/drivers/platform/x86/intel_ips.c
> +++ b/drivers/platform/x86/intel_ips.c
> @@ -1505,7 +1505,7 @@ static int ips_probe(struct pci_dev *dev, const struct 
> pci_device_id *id)
>* IRQ handler for ME interaction
>* Note: don't use MSI here as the PCH has bugs.
>*/
> - ret = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_LEGACY);
> + ret = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_INTX);
>   if (ret < 0)
>   return ret;
>  



Re: [PATCH 04/28] sound: intel: Use PCI_IRQ_INTX

2024-03-25 Thread Amadeusz Sławiński

On 3/25/2024 8:09 AM, Damien Le Moal wrote:

Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
  sound/soc/intel/avs/core.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/intel/avs/core.c b/sound/soc/intel/avs/core.c
index d7f8940099ce..69818e4b43da 100644
--- a/sound/soc/intel/avs/core.c
+++ b/sound/soc/intel/avs/core.c
@@ -343,7 +343,7 @@ static int avs_hdac_acquire_irq(struct avs_dev *adev)
int ret;
  
  	/* request one and check that we only got one interrupt */

-   ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_MSI | PCI_IRQ_LEGACY);
+   ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_MSI | PCI_IRQ_INTX);
if (ret != 1) {
dev_err(adev->dev, "Failed to allocate IRQ vector: %d\n", ret);
return ret;


Reviewed-by: Amadeusz Sławiński 


Re: [PATCH] drm/amdgpu : Add mes_log_enable to control mes log feature

2024-03-25 Thread Liu, Shaoyun
[AMD Official Use Only - General]

Ping

Get Outlook for iOS

From: Liu, Shaoyun 
Sent: Friday, March 22, 2024 2:00:21 PM
To: amd-gfx@lists.freedesktop.org 
Cc: Liu, Shaoyun 
Subject: [PATCH] drm/amdgpu : Add mes_log_enable to control mes log feature

The MES log might slow down the performance for extra step of log the data,
disable it by default and introduce a parameter can enable it when necessary

Signed-off-by: shaoyunl 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h |  1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 10 ++
 drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c |  5 -
 drivers/gpu/drm/amd/amdgpu/mes_v11_0.c  |  7 +--
 4 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 9c62552bec34..b3b84647207e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -210,6 +210,7 @@ extern int amdgpu_async_gfx_ring;
 extern int amdgpu_mcbp;
 extern int amdgpu_discovery;
 extern int amdgpu_mes;
+extern int amdgpu_mes_log_enable;
 extern int amdgpu_mes_kiq;
 extern int amdgpu_noretry;
 extern int amdgpu_force_asic_type;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 80b9642f2bc4..e4277298cf1a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -195,6 +195,7 @@ int amdgpu_async_gfx_ring = 1;
 int amdgpu_mcbp = -1;
 int amdgpu_discovery = -1;
 int amdgpu_mes;
+int amdgpu_mes_log_enable = 0;
 int amdgpu_mes_kiq;
 int amdgpu_noretry = -1;
 int amdgpu_force_asic_type = -1;
@@ -667,6 +668,15 @@ MODULE_PARM_DESC(mes,
 "Enable Micro Engine Scheduler (0 = disabled (default), 1 = enabled)");
 module_param_named(mes, amdgpu_mes, int, 0444);

+/**
+ * DOC: mes_log_enable (int)
+ * Enable Micro Engine Scheduler log. This is used to enable/disable MES 
internal log.
+ * (0 = disabled (default), 1 = enabled)
+ */
+MODULE_PARM_DESC(mes_log_enable,
+   "Enable Micro Engine Scheduler log (0 = disabled (default), 1 = 
enabled)");
+module_param_named(mes_log_enable, amdgpu_mes_log_enable, int, 0444);
+
 /**
  * DOC: mes_kiq (int)
  * Enable Micro Engine Scheduler KIQ. This is a new engine pipe for kiq.
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
index 78dfd027dc99..9ace848e174c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mes.c
@@ -100,6 +100,9 @@ static int amdgpu_mes_event_log_init(struct amdgpu_device 
*adev)
 {
 int r;

+   if (!amdgpu_mes_log_enable)
+   return 0;
+
 r = amdgpu_bo_create_kernel(adev, PAGE_SIZE, PAGE_SIZE,
 AMDGPU_GEM_DOMAIN_GTT,
 >mes.event_log_gpu_obj,
@@ -1561,7 +1564,7 @@ void amdgpu_debugfs_mes_event_log_init(struct 
amdgpu_device *adev)
 #if defined(CONFIG_DEBUG_FS)
 struct drm_minor *minor = adev_to_drm(adev)->primary;
 struct dentry *root = minor->debugfs_root;
-   if (adev->enable_mes)
+   if (adev->enable_mes && amdgpu_mes_log_enable)
 debugfs_create_file("amdgpu_mes_event_log", 0444, root,
 adev, _debugfs_mes_event_log_fops);

diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c 
b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
index 072c478665ad..63f281a9984d 100644
--- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
@@ -411,8 +411,11 @@ static int mes_v11_0_set_hw_resources(struct amdgpu_mes 
*mes)
 mes_set_hw_res_pkt.enable_reg_active_poll = 1;
 mes_set_hw_res_pkt.enable_level_process_quantum_check = 1;
 mes_set_hw_res_pkt.oversubscription_timer = 50;
-   mes_set_hw_res_pkt.enable_mes_event_int_logging = 1;
-   mes_set_hw_res_pkt.event_intr_history_gpu_mc_ptr = 
mes->event_log_gpu_addr;
+   if (amdgpu_mes_log_enable) {
+   mes_set_hw_res_pkt.enable_mes_event_int_logging = 1;
+   mes_set_hw_res_pkt.event_intr_history_gpu_mc_ptr =
+   mes->event_log_gpu_addr;
+   }

 return mes_v11_0_submit_pkt_and_poll_completion(mes,
 _set_hw_res_pkt, sizeof(mes_set_hw_res_pkt),
--
2.34.1



[PATCH 3/5] drm/amdgpu/pm: Add support for MACO flag checking

2024-03-25 Thread Ma Jun
Add support for MACO flag checking.
MACO mode only works if BACO is supported.

Signed-off-by: Ma Jun 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h|  4 ++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  2 +-
 drivers/gpu/drm/amd/amdgpu/cik.c   |  4 ++--
 drivers/gpu/drm/amd/amdgpu/si.c|  4 ++--
 drivers/gpu/drm/amd/amdgpu/soc15.c | 10 +-
 drivers/gpu/drm/amd/amdgpu/vi.c|  8 
 drivers/gpu/drm/amd/include/kgd_pp_interface.h |  2 +-
 drivers/gpu/drm/amd/pm/amdgpu_dpm.c|  8 
 drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h|  2 +-
 drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c   |  2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.c |  6 +++---
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.h |  2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.c |  8 
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.h |  2 +-
 .../gpu/drm/amd/pm/powerplay/hwmgr/vega20_baco.c   |  8 
 .../gpu/drm/amd/pm/powerplay/hwmgr/vega20_baco.h   |  2 +-
 drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h   |  2 +-
 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c  |  2 +-
 drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h  |  2 +-
 drivers/gpu/drm/amd/pm/swsmu/inc/smu_v11_0.h   |  2 +-
 drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h   |  2 +-
 drivers/gpu/drm/amd/pm/swsmu/inc/smu_v14_0.h   |  2 +-
 drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 14 +-
 drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c |  4 ++--
 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 14 +-
 .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_6_ppt.c   |  4 ++--
 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c | 14 +-
 27 files changed, 74 insertions(+), 62 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index 9c62552bec34..3723235f5818 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -605,7 +605,7 @@ struct amdgpu_asic_funcs {
/* PCIe replay counter */
uint64_t (*get_pcie_replay_count)(struct amdgpu_device *adev);
/* device supports BACO */
-   bool (*supports_baco)(struct amdgpu_device *adev);
+   int (*supports_baco)(struct amdgpu_device *adev);
/* pre asic_init quirks */
void (*pre_asic_init)(struct amdgpu_device *adev);
/* enter/exit umd stable pstate */
@@ -1407,7 +1407,7 @@ bool amdgpu_device_supports_atpx(struct drm_device *dev);
 bool amdgpu_device_supports_px(struct drm_device *dev);
 bool amdgpu_device_supports_boco(struct drm_device *dev);
 bool amdgpu_device_supports_smart_shift(struct drm_device *dev);
-bool amdgpu_device_supports_baco(struct drm_device *dev);
+int amdgpu_device_supports_baco(struct drm_device *dev);
 bool amdgpu_device_is_peer_accessible(struct amdgpu_device *adev,
  struct amdgpu_device *peer_adev);
 int amdgpu_device_baco_enter(struct drm_device *dev);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 12dc71a6b5db..aecb55d6963a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -341,7 +341,7 @@ bool amdgpu_device_supports_boco(struct drm_device *dev)
  * Returns true if the device supporte BACO,
  * otherwise return false.
  */
-bool amdgpu_device_supports_baco(struct drm_device *dev)
+int amdgpu_device_supports_baco(struct drm_device *dev)
 {
struct amdgpu_device *adev = drm_to_adev(dev);
 
diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c
index a3a643254d7a..fdbc26346b54 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik.c
@@ -1375,14 +1375,14 @@ static int cik_asic_pci_config_reset(struct 
amdgpu_device *adev)
return r;
 }
 
-static bool cik_asic_supports_baco(struct amdgpu_device *adev)
+static int cik_asic_supports_baco(struct amdgpu_device *adev)
 {
switch (adev->asic_type) {
case CHIP_BONAIRE:
case CHIP_HAWAII:
return amdgpu_dpm_is_baco_supported(adev);
default:
-   return false;
+   return 0;
}
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/si.c b/drivers/gpu/drm/amd/amdgpu/si.c
index 23e4ef4fff7c..67e179c7e347 100644
--- a/drivers/gpu/drm/amd/amdgpu/si.c
+++ b/drivers/gpu/drm/amd/amdgpu/si.c
@@ -1409,9 +1409,9 @@ static int si_gpu_pci_config_reset(struct amdgpu_device 
*adev)
return r;
 }
 
-static bool si_asic_supports_baco(struct amdgpu_device *adev)
+static int si_asic_supports_baco(struct amdgpu_device *adev)
 {
-   return false;
+   return 0;
 }
 
 static enum amd_reset_method
diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c 
b/drivers/gpu/drm/amd/amdgpu/soc15.c
index dec81ccf6240..c8abbf5da736 100644
--- 

[PATCH 5/5] drm/amdgpu/pm: Check AMDGPU_RUNPM_BAMACO when setting baco state

2024-03-25 Thread Ma Jun
Check AMDGPU_RUNPM_BAMACO intead of amdgpu_runtime_pm
when setting baco state.

Signed-off-by: Ma Jun 
---
 drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 2 +-
 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 5 ++---
 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c | 2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
index d0c6dad24458..a8046aaca936 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
@@ -1607,7 +1607,7 @@ int smu_v11_0_baco_set_state(struct smu_context *smu, 
enum smu_baco_state state)
case IP_VERSION(11, 0, 11):
case IP_VERSION(11, 0, 12):
case IP_VERSION(11, 0, 13):
-   if (amdgpu_runtime_pm == 2)
+   if (adev->pm.rpm_mode == AMDGPU_RUNPM_BAMACO)
ret = smu_cmn_send_smc_msg_with_param(smu,
  
SMU_MSG_EnterBaco,
  
D3HOT_BAMACO_SEQUENCE,
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
index a65877eeaa8d..8247eeab3bd2 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
@@ -2247,7 +2247,7 @@ static int smu_v13_0_baco_set_state(struct smu_context 
*smu,
if (state == SMU_BACO_STATE_ENTER) {
ret = smu_cmn_send_smc_msg_with_param(smu,
  SMU_MSG_EnterBaco,
- (smu_baco->maco_support 
&& amdgpu_runtime_pm != 1) ?
+ (adev->pm.rpm_mode == 
AMDGPU_RUNPM_BAMACO) ?
  BACO_SEQ_BAMACO : 
BACO_SEQ_BACO,
  NULL);
} else {
@@ -2292,13 +2292,12 @@ int smu_v13_0_baco_is_support(struct smu_context *smu)
 
 int smu_v13_0_baco_enter(struct smu_context *smu)
 {
-   struct smu_baco_context *smu_baco = >smu_baco;
struct amdgpu_device *adev = smu->adev;
int ret;
 
if (adev->in_runpm && smu_cmn_is_audio_func_enabled(adev)) {
return smu_v13_0_baco_set_armd3_sequence(smu,
-   (smu_baco->maco_support && amdgpu_runtime_pm != 
1) ?
+   (adev->pm.rpm_mode == AMDGPU_RUNPM_BAMACO) ?
BACO_SEQ_BAMACO : BACO_SEQ_BACO);
} else {
ret = smu_v13_0_baco_set_state(smu, SMU_BACO_STATE_ENTER);
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c 
b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
index cc7cc2a6d871..39f130035ec8 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0.c
@@ -1633,7 +1633,7 @@ int smu_v14_0_baco_set_state(struct smu_context *smu,
if (state == SMU_BACO_STATE_ENTER) {
ret = smu_cmn_send_smc_msg_with_param(smu,
  SMU_MSG_EnterBaco,
- smu_baco->maco_support ?
+ (adev->pm.rpm_mode == 
AMDGPU_RUNPM_BAMACO) ?
  BACO_SEQ_BAMACO : 
BACO_SEQ_BACO,
  NULL);
} else {
-- 
2.34.1



[PATCH 4/5] drm/amdgpu: Add support for BAMACO mode checking

2024-03-25 Thread Ma Jun
Optimize the code to add support for BAMACO mode checking

Signed-off-by: Ma Jun 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c |  4 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 74 +++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c |  4 +-
 3 files changed, 50 insertions(+), 32 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 80b9642f2bc4..e267ac032a1c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -2734,7 +2734,7 @@ static int amdgpu_pmops_runtime_suspend(struct device 
*dev)
drm_dev->switch_power_state = DRM_SWITCH_POWER_DYNAMIC_OFF;
} else if (adev->pm.rpm_mode == AMDGPU_RUNPM_BOCO) {
/* nothing to do */
-   } else if (adev->pm.rpm_mode == AMDGPU_RUNPM_BACO) {
+   } else if (adev->pm.rpm_mode >= AMDGPU_RUNPM_BACO) {
amdgpu_device_baco_enter(drm_dev);
}
 
@@ -2774,7 +2774,7 @@ static int amdgpu_pmops_runtime_resume(struct device *dev)
 * PCI core handles it for _PR3.
 */
pci_set_master(pdev);
-   } else if (adev->pm.rpm_mode == AMDGPU_RUNPM_BACO) {
+   } else if (adev->pm.rpm_mode >= AMDGPU_RUNPM_BACO) {
amdgpu_device_baco_exit(drm_dev);
}
ret = amdgpu_device_resume(drm_dev, false);
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index a66d47865e3b..81bb0a2c8227 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -133,6 +133,7 @@ void amdgpu_register_gpu_instance(struct amdgpu_device 
*adev)
 int amdgpu_driver_load_kms(struct amdgpu_device *adev, unsigned long flags)
 {
struct drm_device *dev;
+   int bamaco_support = 0;
int r, acpi_status;
 
dev = adev_to_drm(adev);
@@ -150,38 +151,55 @@ int amdgpu_driver_load_kms(struct amdgpu_device *adev, 
unsigned long flags)
}
 
adev->pm.rpm_mode = AMDGPU_RUNPM_NONE;
-   if (amdgpu_device_supports_px(dev) &&
-   (amdgpu_runtime_pm != 0)) { /* enable PX as runtime mode */
-   adev->pm.rpm_mode = AMDGPU_RUNPM_PX;
-   dev_info(adev->dev, "Using ATPX for runtime pm\n");
-   } else if (amdgpu_device_supports_boco(dev) &&
-  (amdgpu_runtime_pm != 0)) { /* enable boco as runtime mode */
-   adev->pm.rpm_mode = AMDGPU_RUNPM_BOCO;
-   dev_info(adev->dev, "Using BOCO for runtime pm\n");
-   } else if (amdgpu_device_supports_baco(dev) &&
-  (amdgpu_runtime_pm != 0)) {
-   switch (adev->asic_type) {
-   case CHIP_VEGA20:
-   case CHIP_ARCTURUS:
-   /* enable BACO as runpm mode if runpm=1 */
-   if (amdgpu_runtime_pm > 0)
-   adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
-   break;
-   case CHIP_VEGA10:
-   /* enable BACO as runpm mode if noretry=0 */
-   if (!adev->gmc.noretry)
+   if (amdgpu_runtime_pm == 2) {
+   adev->pm.rpm_mode = AMDGPU_RUNPM_BAMACO;
+   dev_info(adev->dev, "Forcing BAMACO for runtime pm\n");
+   } else if (amdgpu_runtime_pm == 1) {
+   adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
+   dev_info(adev->dev, "Forcing BACO for runtime pm\n");
+   } else if (amdgpu_runtime_pm != 0) {
+   if (amdgpu_device_supports_px(dev)) { /* enable PX as runtime 
mode */
+   adev->pm.rpm_mode = AMDGPU_RUNPM_PX;
+   dev_info(adev->dev, "Using ATPX for runtime pm\n");
+   } else if (amdgpu_device_supports_boco(dev)) { /* enable boco 
as runtime mode */
+   adev->pm.rpm_mode = AMDGPU_RUNPM_BOCO;
+   dev_info(adev->dev, "Using BOCO for runtime pm\n");
+   } else {
+   bamaco_support = amdgpu_device_supports_baco(dev);
+
+   if (!bamaco_support)
+   goto no_runtime_pm;
+
+   switch (adev->asic_type) {
+   case CHIP_VEGA20:
+   case CHIP_ARCTURUS:
+   /* vega20 and arcturus don't support runtime pm 
*/
+   break;
+   case CHIP_VEGA10:
+   /* enable BACO as runpm mode if noretry=0 */
+   if (!adev->gmc.noretry)
+   adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
+   break;
+   default:
+   /* enable BACO as runpm mode on CI+ */
adev->pm.rpm_mode = AMDGPU_RUNPM_BACO;
-   break;
-   default:
-  

[PATCH 2/5] drm/amdgpu/pm: Change the member function name of pp_hwmgr_func

2024-03-25 Thread Ma Jun
Change the member function name of pp_hwmgr_func to
keep consistent with the function in pptable_funcs

Signed-off-by: Ma Jun 
---
 drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c  | 4 ++--
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.c| 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.h| 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c   | 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.c| 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.h| 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c | 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega12_hwmgr.c | 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega20_baco.c  | 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega20_baco.h  | 2 +-
 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega20_hwmgr.c | 2 +-
 drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h  | 2 +-
 12 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c 
b/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
index aed0e2cefbf9..fafd4e0b7908 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
@@ -1379,10 +1379,10 @@ static bool pp_get_asic_baco_capability(void *handle)
return false;
 
if (!(hwmgr->not_vf && amdgpu_dpm) ||
-   !hwmgr->hwmgr_func->get_asic_baco_capability)
+   !hwmgr->hwmgr_func->baco_is_support)
return false;
 
-   return hwmgr->hwmgr_func->get_asic_baco_capability(hwmgr);
+   return hwmgr->hwmgr_func->baco_is_support(hwmgr);
 }
 
 static int pp_get_asic_baco_state(void *handle, int *state)
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.c
index e8a9471c1898..1ab4fbfe0cde 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.c
@@ -33,7 +33,7 @@
 #include "smu/smu_7_1_2_d.h"
 #include "smu/smu_7_1_2_sh_mask.h"
 
-bool smu7_baco_get_capability(struct pp_hwmgr *hwmgr)
+bool smu7_baco_is_support(struct pp_hwmgr *hwmgr)
 {
struct amdgpu_device *adev = (struct amdgpu_device *)(hwmgr->adev);
uint32_t reg;
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.h 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.h
index 73a773f4ce2e..df142c2eec8e 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.h
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_baco.h
@@ -25,7 +25,7 @@
 #include "hwmgr.h"
 #include "common_baco.h"
 
-extern bool smu7_baco_get_capability(struct pp_hwmgr *hwmgr);
+extern bool smu7_baco_is_support(struct pp_hwmgr *hwmgr);
 extern int smu7_baco_get_state(struct pp_hwmgr *hwmgr, enum BACO_STATE *state);
 extern int smu7_baco_set_state(struct pp_hwmgr *hwmgr, enum BACO_STATE state);
 
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
index aa91730e4eaf..ae7032d43169 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c
@@ -5791,7 +5791,7 @@ static const struct pp_hwmgr_func smu7_hwmgr_funcs = {
.get_power_profile_mode = smu7_get_power_profile_mode,
.set_power_profile_mode = smu7_set_power_profile_mode,
.get_performance_level = smu7_get_performance_level,
-   .get_asic_baco_capability = smu7_baco_get_capability,
+   .baco_is_support = smu7_baco_is_support,
.get_asic_baco_state = smu7_baco_get_state,
.set_asic_baco_state = smu7_baco_set_state,
.power_off_asic = smu7_power_off_asic,
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.c
index c66ef9741535..687cd80ebad8 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.c
@@ -28,7 +28,7 @@
 #include "vega10_inc.h"
 #include "smu9_baco.h"
 
-bool smu9_baco_get_capability(struct pp_hwmgr *hwmgr)
+bool smu9_baco_is_support(struct pp_hwmgr *hwmgr)
 {
struct amdgpu_device *adev = (struct amdgpu_device *)(hwmgr->adev);
uint32_t reg, data;
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.h 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.h
index 9ff7c2ea1b58..24461f1e3b01 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.h
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu9_baco.h
@@ -25,7 +25,7 @@
 #include "hwmgr.h"
 #include "common_baco.h"
 
-extern bool smu9_baco_get_capability(struct pp_hwmgr *hwmgr);
+extern bool smu9_baco_is_support(struct pp_hwmgr *hwmgr);
 extern int smu9_baco_get_state(struct pp_hwmgr *hwmgr, enum BACO_STATE *state);
 
 #endif
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c 
b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c
index 6d6bc6a380b3..e86f27b06f23 100644
--- 

[PATCH 1/5] drm/amdgpu: Add a new runtime mode definition

2024-03-25 Thread Ma Jun
Add a new runtime pm mode AMDGPU_RUNPM_BAMACO
and related macro definition

Signed-off-by: Ma Jun 
---
 drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h | 4 
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h 
b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
index 621200e0823f..e6cad9f7aaeb 100644
--- a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
+++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h
@@ -50,8 +50,12 @@ enum amdgpu_runpm_mode {
AMDGPU_RUNPM_PX,
AMDGPU_RUNPM_BOCO,
AMDGPU_RUNPM_BACO,
+   AMDGPU_RUNPM_BAMACO,
 };
 
+#define BACO_SUPPORT (1<<0)
+#define MACO_SUPPORT (1<<1)
+
 struct amdgpu_ps {
u32 caps; /* vbios flags */
u32 class; /* vbios flags */
-- 
2.34.1



Re: [PATCH] drm/amdgpu: fix deadlock while reading mqd from debugfs

2024-03-25 Thread Sharma, Shashank
[AMD Official Use Only - General]

Hey Alex,
Sure, I will pick it up and push it to staging.

Regards
Shashank

From: Alex Deucher 
Sent: Monday, March 25, 2024 12:23 AM
To: Sharma, Shashank 
Cc: Johannes Weiner ; Christian König 
; Deucher, Alexander 
; Koenig, Christian ; 
amd-gfx@lists.freedesktop.org ; 
dri-de...@lists.freedesktop.org ; 
linux-ker...@vger.kernel.org 
Subject: Re: [PATCH] drm/amdgpu: fix deadlock while reading mqd from debugfs

On Sat, Mar 23, 2024 at 4:47 PM Sharma, Shashank
 wrote:
>
>
> On 23/03/2024 15:52, Johannes Weiner wrote:
> > On Thu, Mar 14, 2024 at 01:09:57PM -0400, Johannes Weiner wrote:
> >> Hello,
> >>
> >> On Fri, Mar 08, 2024 at 12:32:33PM +0100, Christian König wrote:
> >>> Am 07.03.24 um 23:07 schrieb Johannes Weiner:
>  Lastly I went with an open loop instead of a memcpy() as I wasn't
>  sure if that memory is safe to address a byte at at time.
> >> Shashank pointed out to me in private that byte access would indeed be
> >> safe. However, after actually trying it it won't work because memcpy()
> >> doesn't play nice with mqd being volatile:
> >>
> >> /home/hannes/src/linux/linux/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c: In 
> >> function 'amdgpu_debugfs_mqd_read':
> >> /home/hannes/src/linux/linux/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c:550:22:
> >>  warning: passing argument 1 of '__builtin_dynamic_object_size' discards 
> >> 'volatil' qualifier from pointer target type [-Wdiscarded-qualifiers]
> >>550 | memcpy(kbuf, mqd, ring->mqd_size);
> >>
> >> So I would propose leaving the patch as-is. Shashank, does that sound
> >> good to you?
> > Friendly ping :)
> >
> > Shashank, is your Reviewed-by still good for this patch, given the
> > above?
>
> Ah, sorry I missed this due to some parallel work, and just realized the
> memcpy/volatile limitation.
>
> I also feel the need of protecting MQD read under a lock to avoid
> parallel change in MQD while we do byte-by-byte copy, but I will add
> that in my to-do list.
>
> Please feel free to use my R-b.

Shashank, if the patch looks good, can you pick it up and apply it?

Alex


>
> - Shashank
>
> > Thanks


[PATCH] drm/amdkfd: return negative error code in svm_ioctl()

2024-03-25 Thread Su Hui
svm_ioctl() should return negative error code in default case.

Fixes: 42de677f7999 ("drm/amdkfd: register svm range")
Signed-off-by: Su Hui 
---
Ps: When I try to compile this file, there is a error :
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c:28:10: fatal error: amdgpu_sync.h:
No such file or directory.

Maybe there are some steps I missed or this place need to be corrected?

 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c 
b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index f0f7f48af413..41c376f3fd27 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -4147,7 +4147,7 @@ svm_ioctl(struct kfd_process *p, enum kfd_ioctl_svm_op 
op, uint64_t start,
r = svm_range_get_attr(p, mm, start, size, nattrs, attrs);
break;
default:
-   r = EINVAL;
+   r = -EINVAL;
break;
}
 
-- 
2.30.2



[PATCH] drm/ttm: remove unused paramter

2024-03-25 Thread Jesse Zhang
remove the unsed the paramter in the function
ttm_bo_bounce_temp_buffer and ttm_bo_add_move_fence.

Signed-off-by: Jesse Zhang 
---
 drivers/gpu/drm/ttm/ttm_bo.c | 10 --
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index edf10618fe2b..7f08787687a7 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -402,7 +402,6 @@ void ttm_bo_put(struct ttm_buffer_object *bo)
 EXPORT_SYMBOL(ttm_bo_put);
 
 static int ttm_bo_bounce_temp_buffer(struct ttm_buffer_object *bo,
-struct ttm_resource **mem,
 struct ttm_operation_ctx *ctx,
 struct ttm_place *hop)
 {
@@ -470,7 +469,7 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo,
if (ret != -EMULTIHOP)
break;
 
-   ret = ttm_bo_bounce_temp_buffer(bo, _mem, ctx, );
+   ret = ttm_bo_bounce_temp_buffer(bo, ctx, );
} while (!ret);
 
if (ret) {
@@ -699,7 +698,6 @@ EXPORT_SYMBOL(ttm_bo_unpin);
  */
 static int ttm_bo_add_move_fence(struct ttm_buffer_object *bo,
 struct ttm_resource_manager *man,
-struct ttm_resource *mem,
 bool no_wait_gpu)
 {
struct dma_fence *fence;
@@ -753,7 +751,7 @@ static int ttm_bo_mem_force_space(struct ttm_buffer_object 
*bo,
return ret;
} while (1);
 
-   return ttm_bo_add_move_fence(bo, man, *mem, ctx->no_wait_gpu);
+   return ttm_bo_add_move_fence(bo, man, ctx->no_wait_gpu);
 }
 
 /**
@@ -802,7 +800,7 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
if (unlikely(ret))
goto error;
 
-   ret = ttm_bo_add_move_fence(bo, man, *mem, ctx->no_wait_gpu);
+   ret = ttm_bo_add_move_fence(bo, man, ctx->no_wait_gpu);
if (unlikely(ret)) {
ttm_resource_free(bo, mem);
if (ret == -EBUSY)
@@ -866,7 +864,7 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
 bounce:
ret = ttm_bo_handle_move_mem(bo, mem, false, ctx, );
if (ret == -EMULTIHOP) {
-   ret = ttm_bo_bounce_temp_buffer(bo, , ctx, );
+   ret = ttm_bo_bounce_temp_buffer(bo, ctx, );
if (ret)
goto out;
/* try and move to final place now. */
-- 
2.25.1



[PATCH 28/28] PCI: Remove PCI_IRQ_LEGACY

2024-03-25 Thread Damien Le Moal
Replace the last references to PCI_IRQ_LEGACY with PCI_IRQ_INTX in pci.h
header file. With this change, PCI_IRQ_LEGACY is unused and we can
remove its definition.

Signed-off-by: Damien Le Moal 
---
 include/linux/pci.h | 7 ++-
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/include/linux/pci.h b/include/linux/pci.h
index 16493426a04f..b19992a5dfaf 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1077,8 +1077,6 @@ enum {
 #define PCI_IRQ_MSIX   (1 << 2) /* Allow MSI-X interrupts */
 #define PCI_IRQ_AFFINITY   (1 << 3) /* Auto-assign affinity */
 
-#define PCI_IRQ_LEGACY PCI_IRQ_INTX /* Deprecated! Use PCI_IRQ_INTX */
-
 /* These external functions are only available when PCI support is enabled */
 #ifdef CONFIG_PCI
 
@@ -1648,8 +1646,7 @@ int pci_set_vga_state(struct pci_dev *pdev, bool decode,
  */
 #define PCI_IRQ_VIRTUAL(1 << 4)
 
-#define PCI_IRQ_ALL_TYPES \
-   (PCI_IRQ_LEGACY | PCI_IRQ_MSI | PCI_IRQ_MSIX)
+#define PCI_IRQ_ALL_TYPES  (PCI_IRQ_INTX | PCI_IRQ_MSI | PCI_IRQ_MSIX)
 
 #include 
 
@@ -1719,7 +1716,7 @@ pci_alloc_irq_vectors_affinity(struct pci_dev *dev, 
unsigned int min_vecs,
   unsigned int max_vecs, unsigned int flags,
   struct irq_affinity *aff_desc)
 {
-   if ((flags & PCI_IRQ_LEGACY) && min_vecs == 1 && dev->irq)
+   if ((flags & PCI_IRQ_INTX) && min_vecs == 1 && dev->irq)
return 1;
return -ENOSPC;
 }
-- 
2.44.0



[PATCH 27/28] scsi: vmw_pvscsi: Do not use PCI_IRQ_LEGACY

2024-03-25 Thread Damien Le Moal
In pvscsi_probe(), initialize the irq_flag variable using
PCI_IRQ_ALL_TYPES to remove the use of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/scsi/vmw_pvscsi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/vmw_pvscsi.c b/drivers/scsi/vmw_pvscsi.c
index f88ecdb93a8a..c4fea077265e 100644
--- a/drivers/scsi/vmw_pvscsi.c
+++ b/drivers/scsi/vmw_pvscsi.c
@@ -1346,7 +1346,7 @@ static u32 pvscsi_get_max_targets(struct pvscsi_adapter 
*adapter)
 
 static int pvscsi_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 {
-   unsigned int irq_flag = PCI_IRQ_MSIX | PCI_IRQ_MSI | PCI_IRQ_LEGACY;
+   unsigned int irq_flag = PCI_IRQ_ALL_TYPES;
struct pvscsi_adapter *adapter;
struct pvscsi_adapter adapter_temp;
struct Scsi_Host *host = NULL;
-- 
2.44.0



[PATCH 26/28] scsi: pmcraid: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/scsi/pmcraid.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/pmcraid.c b/drivers/scsi/pmcraid.c
index e8bcc3a88732..9c57efa10732 100644
--- a/drivers/scsi/pmcraid.c
+++ b/drivers/scsi/pmcraid.c
@@ -4033,7 +4033,7 @@ static int
 pmcraid_register_interrupt_handler(struct pmcraid_instance *pinstance)
 {
struct pci_dev *pdev = pinstance->pdev;
-   unsigned int irq_flag = PCI_IRQ_LEGACY, flag;
+   unsigned int irq_flag = PCI_IRQ_INTX, flag;
int num_hrrq, rc, i;
irq_handler_t isr;
 
-- 
2.44.0



[PATCH 25/28] scsi: mpt3sas: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/scsi/mpt3sas/mpt3sas_base.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/mpt3sas/mpt3sas_base.c 
b/drivers/scsi/mpt3sas/mpt3sas_base.c
index 1b492e9a3e55..40f6f87428d5 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -3515,7 +3515,7 @@ _base_enable_msix(struct MPT3SAS_ADAPTER *ioc)
ioc_info(ioc, "High IOPs queues : disabled\n");
ioc->reply_queue_count = 1;
ioc->iopoll_q_start_index = ioc->reply_queue_count - 0;
-   r = pci_alloc_irq_vectors(ioc->pdev, 1, 1, PCI_IRQ_LEGACY);
+   r = pci_alloc_irq_vectors(ioc->pdev, 1, 1, PCI_IRQ_INTX);
if (r < 0) {
dfailprintk(ioc,
ioc_info(ioc, "pci_alloc_irq_vector(legacy) failed 
(r=%d) !!!\n",
-- 
2.44.0



[PATCH 24/28] scsi: megaraid: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/scsi/megaraid/megaraid_sas_base.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c 
b/drivers/scsi/megaraid/megaraid_sas_base.c
index 3d4f13da1ae8..631a24d91fa9 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -6300,7 +6300,7 @@ static int megasas_init_fw(struct megasas_instance 
*instance)
}
 
if (!instance->msix_vectors) {
-   i = pci_alloc_irq_vectors(instance->pdev, 1, 1, PCI_IRQ_LEGACY);
+   i = pci_alloc_irq_vectors(instance->pdev, 1, 1, PCI_IRQ_INTX);
if (i < 0)
goto fail_init_adapter;
}
@@ -7839,7 +7839,7 @@ megasas_resume(struct device *dev)
 
if (!instance->msix_vectors) {
rval = pci_alloc_irq_vectors(instance->pdev, 1, 1,
-PCI_IRQ_LEGACY);
+PCI_IRQ_INTX);
if (rval < 0)
goto fail_reenable_msix;
}
-- 
2.44.0



[PATCH 23/28] scsi: ipr: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/scsi/ipr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index 3819f7c42788..e0326f1e6559 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -9463,7 +9463,7 @@ static int ipr_probe_ioa(struct pci_dev *pdev,
ipr_number_of_msix = IPR_MAX_MSIX_VECTORS;
}
 
-   irq_flag = PCI_IRQ_LEGACY;
+   irq_flag = PCI_IRQ_INTX;
if (ioa_cfg->ipr_chip->has_msi)
irq_flag |= PCI_IRQ_MSI | PCI_IRQ_MSIX;
rc = pci_alloc_irq_vectors(pdev, 1, ipr_number_of_msix, irq_flag);
-- 
2.44.0



[PATCH 22/28] scsi: hpsa: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/scsi/hpsa.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index af18d20f3079..23b19fa30661 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -7509,7 +7509,7 @@ static void hpsa_setup_reply_map(struct ctlr_info *h)
  */
 static int hpsa_interrupt_mode(struct ctlr_info *h)
 {
-   unsigned int flags = PCI_IRQ_LEGACY;
+   unsigned int flags = PCI_IRQ_INTX;
int ret;
 
/* Some boards advertise MSI but don't really support it */
-- 
2.44.0



[PATCH 21/28] scsi: arcmsr: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/scsi/arcmsr/arcmsr_hba.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c
index ad227e6cb10e..35860c61468b 100644
--- a/drivers/scsi/arcmsr/arcmsr_hba.c
+++ b/drivers/scsi/arcmsr/arcmsr_hba.c
@@ -1007,7 +1007,7 @@ arcmsr_request_irq(struct pci_dev *pdev, struct 
AdapterControlBlock *acb)
goto msi_int1;
}
}
-   nvec = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY);
+   nvec = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_INTX);
if (nvec < 1)
return FAILED;
 msi_int1:
-- 
2.44.0



[PATCH 20/28] net wireless; realtec: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/net/wireless/realtek/rtw88/pci.c | 2 +-
 drivers/net/wireless/realtek/rtw89/pci.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw88/pci.c 
b/drivers/net/wireless/realtek/rtw88/pci.c
index 9986a4cb37eb..282f1e5a882e 100644
--- a/drivers/net/wireless/realtek/rtw88/pci.c
+++ b/drivers/net/wireless/realtek/rtw88/pci.c
@@ -1612,7 +1612,7 @@ static struct rtw_hci_ops rtw_pci_ops = {
 
 static int rtw_pci_request_irq(struct rtw_dev *rtwdev, struct pci_dev *pdev)
 {
-   unsigned int flags = PCI_IRQ_LEGACY;
+   unsigned int flags = PCI_IRQ_INTX;
int ret;
 
if (!rtw_disable_msi)
diff --git a/drivers/net/wireless/realtek/rtw89/pci.c 
b/drivers/net/wireless/realtek/rtw89/pci.c
index 19001130ad94..100549694e53 100644
--- a/drivers/net/wireless/realtek/rtw89/pci.c
+++ b/drivers/net/wireless/realtek/rtw89/pci.c
@@ -3547,7 +3547,7 @@ static int rtw89_pci_request_irq(struct rtw89_dev *rtwdev,
unsigned long flags = 0;
int ret;
 
-   flags |= PCI_IRQ_LEGACY | PCI_IRQ_MSI;
+   flags |= PCI_IRQ_INTX | PCI_IRQ_MSI;
ret = pci_alloc_irq_vectors(pdev, 1, 1, flags);
if (ret < 0) {
rtw89_err(rtwdev, "failed to alloc irq vectors, ret %d\n", ret);
-- 
2.44.0



[PATCH 19/28] net: wireless: ath10k: Use references to INTX instead of LEGACY

2024-03-25 Thread Damien Le Moal
To be consistent with the deprecation of PCI_IRQ_LEGACY and its
replacement with PCI_IRQ_INTX, rename macros and functions referencing
"legacy irq" to instead use the term "intx irq".

Signed-off-by: Damien Le Moal 
---
 drivers/net/wireless/ath/ath10k/ahb.c | 18 +++---
 drivers/net/wireless/ath/ath10k/pci.c | 36 +--
 drivers/net/wireless/ath/ath10k/pci.h |  6 ++---
 3 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/drivers/net/wireless/ath/ath10k/ahb.c 
b/drivers/net/wireless/ath/ath10k/ahb.c
index a378bc48b1d2..f0441b3d7dcb 100644
--- a/drivers/net/wireless/ath/ath10k/ahb.c
+++ b/drivers/net/wireless/ath/ath10k/ahb.c
@@ -394,14 +394,14 @@ static irqreturn_t ath10k_ahb_interrupt_handler(int irq, 
void *arg)
if (!ath10k_pci_irq_pending(ar))
return IRQ_NONE;
 
-   ath10k_pci_disable_and_clear_legacy_irq(ar);
+   ath10k_pci_disable_and_clear_intx_irq(ar);
ath10k_pci_irq_msi_fw_mask(ar);
napi_schedule(>napi);
 
return IRQ_HANDLED;
 }
 
-static int ath10k_ahb_request_irq_legacy(struct ath10k *ar)
+static int ath10k_ahb_request_irq_intx(struct ath10k *ar)
 {
struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar);
@@ -415,12 +415,12 @@ static int ath10k_ahb_request_irq_legacy(struct ath10k 
*ar)
ar_ahb->irq, ret);
return ret;
}
-   ar_pci->oper_irq_mode = ATH10K_PCI_IRQ_LEGACY;
+   ar_pci->oper_irq_mode = ATH10K_PCI_IRQ_INTX;
 
return 0;
 }
 
-static void ath10k_ahb_release_irq_legacy(struct ath10k *ar)
+static void ath10k_ahb_release_irq_intx(struct ath10k *ar)
 {
struct ath10k_ahb *ar_ahb = ath10k_ahb_priv(ar);
 
@@ -430,7 +430,7 @@ static void ath10k_ahb_release_irq_legacy(struct ath10k *ar)
 static void ath10k_ahb_irq_disable(struct ath10k *ar)
 {
ath10k_ce_disable_interrupts(ar);
-   ath10k_pci_disable_and_clear_legacy_irq(ar);
+   ath10k_pci_disable_and_clear_intx_irq(ar);
 }
 
 static int ath10k_ahb_resource_init(struct ath10k *ar)
@@ -621,7 +621,7 @@ static int ath10k_ahb_hif_start(struct ath10k *ar)
 
ath10k_core_napi_enable(ar);
ath10k_ce_enable_interrupts(ar);
-   ath10k_pci_enable_legacy_irq(ar);
+   ath10k_pci_enable_intx_irq(ar);
 
ath10k_pci_rx_post(ar);
 
@@ -775,7 +775,7 @@ static int ath10k_ahb_probe(struct platform_device *pdev)
 
ath10k_pci_init_napi(ar);
 
-   ret = ath10k_ahb_request_irq_legacy(ar);
+   ret = ath10k_ahb_request_irq_intx(ar);
if (ret)
goto err_free_pipes;
 
@@ -806,7 +806,7 @@ static int ath10k_ahb_probe(struct platform_device *pdev)
ath10k_ahb_clock_disable(ar);
 
 err_free_irq:
-   ath10k_ahb_release_irq_legacy(ar);
+   ath10k_ahb_release_irq_intx(ar);
 
 err_free_pipes:
ath10k_pci_release_resource(ar);
@@ -828,7 +828,7 @@ static void ath10k_ahb_remove(struct platform_device *pdev)
 
ath10k_core_unregister(ar);
ath10k_ahb_irq_disable(ar);
-   ath10k_ahb_release_irq_legacy(ar);
+   ath10k_ahb_release_irq_intx(ar);
ath10k_pci_release_resource(ar);
ath10k_ahb_halt_chip(ar);
ath10k_ahb_clock_disable(ar);
diff --git a/drivers/net/wireless/ath/ath10k/pci.c 
b/drivers/net/wireless/ath/ath10k/pci.c
index 5c34b156b4ff..6aeeab2edf5a 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -721,7 +721,7 @@ bool ath10k_pci_irq_pending(struct ath10k *ar)
return false;
 }
 
-void ath10k_pci_disable_and_clear_legacy_irq(struct ath10k *ar)
+void ath10k_pci_disable_and_clear_intx_irq(struct ath10k *ar)
 {
/* IMPORTANT: INTR_CLR register has to be set after
 * INTR_ENABLE is set to 0, otherwise interrupt can not be
@@ -739,7 +739,7 @@ void ath10k_pci_disable_and_clear_legacy_irq(struct ath10k 
*ar)
PCIE_INTR_ENABLE_ADDRESS);
 }
 
-void ath10k_pci_enable_legacy_irq(struct ath10k *ar)
+void ath10k_pci_enable_intx_irq(struct ath10k *ar)
 {
ath10k_pci_write32(ar, SOC_CORE_BASE_ADDRESS +
   PCIE_INTR_ENABLE_ADDRESS,
@@ -1935,7 +1935,7 @@ static void ath10k_pci_irq_msi_fw_unmask(struct ath10k 
*ar)
 static void ath10k_pci_irq_disable(struct ath10k *ar)
 {
ath10k_ce_disable_interrupts(ar);
-   ath10k_pci_disable_and_clear_legacy_irq(ar);
+   ath10k_pci_disable_and_clear_intx_irq(ar);
ath10k_pci_irq_msi_fw_mask(ar);
 }
 
@@ -1949,7 +1949,7 @@ static void ath10k_pci_irq_sync(struct ath10k *ar)
 static void ath10k_pci_irq_enable(struct ath10k *ar)
 {
ath10k_ce_enable_interrupts(ar);
-   ath10k_pci_enable_legacy_irq(ar);
+   ath10k_pci_enable_intx_irq(ar);
ath10k_pci_irq_msi_fw_unmask(ar);
 }
 
@@ -3111,11 +3111,11 @@ static irqreturn_t ath10k_pci_interrupt_handler(int 
irq, void *arg)
return IRQ_NONE;
}
 
-   

[PATCH 18/28] net: wangxun: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/net/ethernet/wangxun/libwx/wx_lib.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/wangxun/libwx/wx_lib.c 
b/drivers/net/ethernet/wangxun/libwx/wx_lib.c
index 6dff2c85682d..ae0b940717a8 100644
--- a/drivers/net/ethernet/wangxun/libwx/wx_lib.c
+++ b/drivers/net/ethernet/wangxun/libwx/wx_lib.c
@@ -1674,14 +1674,14 @@ static int wx_set_interrupt_capability(struct wx *wx)
/* minmum one for queue, one for misc*/
nvecs = 1;
nvecs = pci_alloc_irq_vectors(pdev, nvecs,
- nvecs, PCI_IRQ_MSI | PCI_IRQ_LEGACY);
+ nvecs, PCI_IRQ_MSI | PCI_IRQ_INTX);
if (nvecs == 1) {
if (pdev->msi_enabled)
wx_err(wx, "Fallback to MSI.\n");
else
-   wx_err(wx, "Fallback to LEGACY.\n");
+   wx_err(wx, "Fallback to INTX.\n");
} else {
-   wx_err(wx, "Failed to allocate MSI/LEGACY interrupts. Error: 
%d\n", nvecs);
+   wx_err(wx, "Failed to allocate MSI/INTX interrupts. Error: 
%d\n", nvecs);
return nvecs;
}
 
@@ -2127,7 +2127,7 @@ void wx_write_eitr(struct wx_q_vector *q_vector)
  * wx_configure_vectors - Configure vectors for hardware
  * @wx: board private structure
  *
- * wx_configure_vectors sets up the hardware to properly generate 
MSI-X/MSI/LEGACY
+ * wx_configure_vectors sets up the hardware to properly generate 
MSI-X/MSI/INTX
  * interrupts.
  **/
 void wx_configure_vectors(struct wx *wx)
-- 
2.44.0



[PATCH 17/28] net: realtek: r8169: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/net/ethernet/realtek/r8169_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/r8169_main.c 
b/drivers/net/ethernet/realtek/r8169_main.c
index 5c879a5c86d7..7288afcc8c94 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -5076,7 +5076,7 @@ static int rtl_alloc_irq(struct rtl8169_private *tp)
rtl_lock_config_regs(tp);
fallthrough;
case RTL_GIGA_MAC_VER_07 ... RTL_GIGA_MAC_VER_17:
-   flags = PCI_IRQ_LEGACY;
+   flags = PCI_IRQ_INTX;
break;
default:
flags = PCI_IRQ_ALL_TYPES;
-- 
2.44.0



[PATCH 16/28] net: atheros: alx: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/net/ethernet/atheros/alx/main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/atheros/alx/main.c 
b/drivers/net/ethernet/atheros/alx/main.c
index 49bb9a8f00e6..0dbb541155f3 100644
--- a/drivers/net/ethernet/atheros/alx/main.c
+++ b/drivers/net/ethernet/atheros/alx/main.c
@@ -901,7 +901,7 @@ static int alx_init_intr(struct alx_priv *alx)
int ret;
 
ret = pci_alloc_irq_vectors(alx->hw.pdev, 1, 1,
-   PCI_IRQ_MSI | PCI_IRQ_LEGACY);
+   PCI_IRQ_MSI | PCI_IRQ_INTX);
if (ret < 0)
return ret;
 
-- 
2.44.0



[PATCH 15/28] net: aquantia atlantic: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro. To be consistent with this change, the macros AQ_HW_IRQ_LEGACY
and AQ_CFG_FORCE_LEGACY_INT are respectively renamed to AQ_HW_IRQ_INTX
and AQ_CFG_FORCE_INTX.

Signed-off-by: Damien Le Moal 
---
 drivers/net/ethernet/aquantia/atlantic/aq_cfg.h  | 2 +-
 drivers/net/ethernet/aquantia/atlantic/aq_hw.h   | 2 +-
 drivers/net/ethernet/aquantia/atlantic/aq_nic.c  | 2 +-
 drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c | 9 +++--
 .../net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c| 2 +-
 .../net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c| 2 +-
 drivers/net/ethernet/aquantia/atlantic/hw_atl2/hw_atl2.c | 2 +-
 7 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h 
b/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h
index 7e9c74b141ef..fc2b325f34e7 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_cfg.h
@@ -17,7 +17,7 @@
 
 #define AQ_CFG_IS_POLLING_DEF 0U
 
-#define AQ_CFG_FORCE_LEGACY_INT 0U
+#define AQ_CFG_FORCE_INTX  0U
 
 #define AQ_CFG_INTERRUPT_MODERATION_OFF0
 #define AQ_CFG_INTERRUPT_MODERATION_ON 1
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_hw.h 
b/drivers/net/ethernet/aquantia/atlantic/aq_hw.h
index dbd284660135..f010bda61c96 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_hw.h
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_hw.h
@@ -104,7 +104,7 @@ struct aq_stats_s {
 };
 
 #define AQ_HW_IRQ_INVALID 0U
-#define AQ_HW_IRQ_LEGACY  1U
+#define AQ_HW_IRQ_INTX   1U
 #define AQ_HW_IRQ_MSI 2U
 #define AQ_HW_IRQ_MSIX3U
 
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c 
b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
index d6d6d5d37ff3..fe0e3e2a8117 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
@@ -127,7 +127,7 @@ void aq_nic_cfg_start(struct aq_nic_s *self)
 
cfg->irq_type = aq_pci_func_get_irq_type(self);
 
-   if ((cfg->irq_type == AQ_HW_IRQ_LEGACY) ||
+   if ((cfg->irq_type == AQ_HW_IRQ_INTX) ||
(cfg->aq_hw_caps->vecs == 1U) ||
(cfg->vecs == 1U)) {
cfg->is_rss = 0U;
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c 
b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
index baa5f8cc31f2..43c71f6b314f 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
@@ -200,7 +200,7 @@ unsigned int aq_pci_func_get_irq_type(struct aq_nic_s *self)
if (self->pdev->msi_enabled)
return AQ_HW_IRQ_MSI;
 
-   return AQ_HW_IRQ_LEGACY;
+   return AQ_HW_IRQ_INTX;
 }
 
 static void aq_pci_free_irq_vectors(struct aq_nic_s *self)
@@ -298,11 +298,8 @@ static int aq_pci_probe(struct pci_dev *pdev,
 
numvecs += AQ_HW_SERVICE_IRQS;
/*enable interrupts */
-#if !AQ_CFG_FORCE_LEGACY_INT
-   err = pci_alloc_irq_vectors(self->pdev, 1, numvecs,
-   PCI_IRQ_MSIX | PCI_IRQ_MSI |
-   PCI_IRQ_LEGACY);
-
+#if !AQ_CFG_FORCE_INTX
+   err = pci_alloc_irq_vectors(self->pdev, 1, numvecs, PCI_IRQ_ALL_TYPES);
if (err < 0)
goto err_hwinit;
numvecs = err;
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c 
b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
index 9dfd68f0fda9..8de2cdd09213 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_a0.c
@@ -352,7 +352,7 @@ static int hw_atl_a0_hw_init(struct aq_hw_s *self, const u8 
*mac_addr)
 {
static u32 aq_hw_atl_igcr_table_[4][2] = {
[AQ_HW_IRQ_INVALID] = { 0x2000U, 0x2000U },
-   [AQ_HW_IRQ_LEGACY]  = { 0x2080U, 0x2080U },
+   [AQ_HW_IRQ_INTX]= { 0x2080U, 0x2080U },
[AQ_HW_IRQ_MSI] = { 0x2021U, 0x2025U },
[AQ_HW_IRQ_MSIX]= { 0x2022U, 0x2026U },
};
diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c 
b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
index 54e70f07b573..56c46266bb0a 100644
--- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c
@@ -562,7 +562,7 @@ static int hw_atl_b0_hw_init(struct aq_hw_s *self, const u8 
*mac_addr)
 {
static u32 aq_hw_atl_igcr_table_[4][2] = {
[AQ_HW_IRQ_INVALID] = { 0x2000U, 0x2000U },
-   [AQ_HW_IRQ_LEGACY]  = { 0x2080U, 0x2080U },
+   [AQ_HW_IRQ_INTX]= { 0x2080U, 0x2080U },
[AQ_HW_IRQ_MSI] = { 0x2021U, 0x2025U },
[AQ_HW_IRQ_MSIX]= { 0x2022U, 

[PATCH 14/28] net: xgbe: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c 
b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c
index f409d7bd1f1e..c5e5fac49779 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c
@@ -170,7 +170,7 @@ static int xgbe_config_irqs(struct xgbe_prv_data *pdata)
goto out;
 
ret = pci_alloc_irq_vectors(pdata->pcidev, 1, 1,
-   PCI_IRQ_LEGACY | PCI_IRQ_MSI);
+   PCI_IRQ_INTX | PCI_IRQ_MSI);
if (ret < 0) {
dev_info(pdata->dev, "single IRQ enablement failed\n");
return ret;
-- 
2.44.0



[PATCH 13/28] misc: vmci_guest: Use PCI_IRQ_ALL_TYPES

2024-03-25 Thread Damien Le Moal
In vmci_guest_probe_device(), remove the reference to PCI_IRQ_LEGACY by
using PCI_IRQ_ALL_TYPES instead of an explicit OR of all IRQ types.

Signed-off-by: Damien Le Moal 
---
 drivers/misc/vmw_vmci/vmci_guest.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/misc/vmw_vmci/vmci_guest.c 
b/drivers/misc/vmw_vmci/vmci_guest.c
index 4f8d962bb5b2..c61e8953511d 100644
--- a/drivers/misc/vmw_vmci/vmci_guest.c
+++ b/drivers/misc/vmw_vmci/vmci_guest.c
@@ -787,8 +787,7 @@ static int vmci_guest_probe_device(struct pci_dev *pdev,
error = pci_alloc_irq_vectors(pdev, num_irq_vectors, num_irq_vectors,
  PCI_IRQ_MSIX);
if (error < 0) {
-   error = pci_alloc_irq_vectors(pdev, 1, 1,
-   PCI_IRQ_MSIX | PCI_IRQ_MSI | PCI_IRQ_LEGACY);
+   error = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
if (error < 0)
goto err_unsubscribe_event;
} else {
-- 
2.44.0



[PATCH 12/28] infiniband: vmw_pvrdma: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c 
b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
index a5e88185171f..768aad364c89 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c
@@ -531,7 +531,7 @@ static int pvrdma_alloc_intrs(struct pvrdma_dev *dev)
PCI_IRQ_MSIX);
if (ret < 0) {
ret = pci_alloc_irq_vectors(pdev, 1, 1,
-   PCI_IRQ_MSI | PCI_IRQ_LEGACY);
+   PCI_IRQ_MSI | PCI_IRQ_INTX);
if (ret < 0)
return ret;
}
-- 
2.44.0



[PATCH 11/28] infiniband: qib: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/infiniband/hw/qib/qib_iba7220.c | 2 +-
 drivers/infiniband/hw/qib/qib_iba7322.c | 5 ++---
 drivers/infiniband/hw/qib/qib_pcie.c| 2 +-
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/infiniband/hw/qib/qib_iba7220.c 
b/drivers/infiniband/hw/qib/qib_iba7220.c
index 6af57067c32e..78dfe98ebcf7 100644
--- a/drivers/infiniband/hw/qib/qib_iba7220.c
+++ b/drivers/infiniband/hw/qib/qib_iba7220.c
@@ -3281,7 +3281,7 @@ static int qib_7220_intr_fallback(struct qib_devdata *dd)
 
qib_free_irq(dd);
dd->msi_lo = 0;
-   if (pci_alloc_irq_vectors(dd->pcidev, 1, 1, PCI_IRQ_LEGACY) < 0)
+   if (pci_alloc_irq_vectors(dd->pcidev, 1, 1, PCI_IRQ_INTX) < 0)
qib_dev_err(dd, "Failed to enable INTx\n");
qib_setup_7220_interrupt(dd);
return 1;
diff --git a/drivers/infiniband/hw/qib/qib_iba7322.c 
b/drivers/infiniband/hw/qib/qib_iba7322.c
index f93906d8fc09..9db29916e35a 100644
--- a/drivers/infiniband/hw/qib/qib_iba7322.c
+++ b/drivers/infiniband/hw/qib/qib_iba7322.c
@@ -3471,8 +3471,7 @@ static void qib_setup_7322_interrupt(struct qib_devdata 
*dd, int clearpend)
pci_irq_vector(dd->pcidev, msixnum),
ret);
qib_7322_free_irq(dd);
-   pci_alloc_irq_vectors(dd->pcidev, 1, 1,
- PCI_IRQ_LEGACY);
+   pci_alloc_irq_vectors(dd->pcidev, 1, 1, PCI_IRQ_INTX);
goto try_intx;
}
dd->cspec->msix_entries[msixnum].arg = arg;
@@ -5143,7 +5142,7 @@ static int qib_7322_intr_fallback(struct qib_devdata *dd)
qib_devinfo(dd->pcidev,
"MSIx interrupt not detected, trying INTx interrupts\n");
qib_7322_free_irq(dd);
-   if (pci_alloc_irq_vectors(dd->pcidev, 1, 1, PCI_IRQ_LEGACY) < 0)
+   if (pci_alloc_irq_vectors(dd->pcidev, 1, 1, PCI_IRQ_INTX) < 0)
qib_dev_err(dd, "Failed to enable INTx\n");
qib_setup_7322_interrupt(dd, 0);
return 1;
diff --git a/drivers/infiniband/hw/qib/qib_pcie.c 
b/drivers/infiniband/hw/qib/qib_pcie.c
index 47bf64ace05c..58c1d62d341b 100644
--- a/drivers/infiniband/hw/qib/qib_pcie.c
+++ b/drivers/infiniband/hw/qib/qib_pcie.c
@@ -210,7 +210,7 @@ int qib_pcie_params(struct qib_devdata *dd, u32 minw, u32 
*nent)
}
 
if (dd->flags & QIB_HAS_INTX)
-   flags |= PCI_IRQ_LEGACY;
+   flags |= PCI_IRQ_INTX;
maxvec = (nent && *nent) ? *nent : 1;
nvec = pci_alloc_irq_vectors(dd->pcidev, 1, maxvec, flags);
if (nvec < 0)
-- 
2.44.0



[PATCH 10/28] drm: amdgpu: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
index 7e6d09730e6d..d18113017ee7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
@@ -279,7 +279,7 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
adev->irq.msi_enabled = false;
 
if (!amdgpu_msi_ok(adev))
-   flags = PCI_IRQ_LEGACY;
+   flags = PCI_IRQ_INTX;
else
flags = PCI_IRQ_ALL_TYPES;
 
-- 
2.44.0



[PATCH 09/28] mfd: intel-lpss-pci: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/mfd/intel-lpss-pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mfd/intel-lpss-pci.c b/drivers/mfd/intel-lpss-pci.c
index 8c00e0c695c5..9f4782bdbf4b 100644
--- a/drivers/mfd/intel-lpss-pci.c
+++ b/drivers/mfd/intel-lpss-pci.c
@@ -54,7 +54,7 @@ static int intel_lpss_pci_probe(struct pci_dev *pdev,
if (ret)
return ret;
 
-   ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY);
+   ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_INTX);
if (ret < 0)
return ret;
 
-- 
2.44.0



[PATCH 08/28] ntb: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/ntb/hw/idt/ntb_hw_idt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ntb/hw/idt/ntb_hw_idt.c b/drivers/ntb/hw/idt/ntb_hw_idt.c
index 48823b53ede3..48dfb1a69a77 100644
--- a/drivers/ntb/hw/idt/ntb_hw_idt.c
+++ b/drivers/ntb/hw/idt/ntb_hw_idt.c
@@ -2129,7 +2129,7 @@ static int idt_init_isr(struct idt_ntb_dev *ndev)
int ret;
 
/* Allocate just one interrupt vector for the ISR */
-   ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI | PCI_IRQ_LEGACY);
+   ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_MSI | PCI_IRQ_INTX);
if (ret != 1) {
dev_err(>dev, "Failed to allocate IRQ vector");
return ret;
-- 
2.44.0



[PATCH 07/28] platform: intel_ips: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/platform/x86/intel_ips.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c
index ba38649cc142..73ec4460a151 100644
--- a/drivers/platform/x86/intel_ips.c
+++ b/drivers/platform/x86/intel_ips.c
@@ -1505,7 +1505,7 @@ static int ips_probe(struct pci_dev *dev, const struct 
pci_device_id *id)
 * IRQ handler for ME interaction
 * Note: don't use MSI here as the PCH has bugs.
 */
-   ret = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_LEGACY);
+   ret = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_INTX);
if (ret < 0)
return ret;
 
-- 
2.44.0



[PATCH 06/28] tty: 8250_pci: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/tty/serial/8250/8250_pci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/tty/serial/8250/8250_pci.c 
b/drivers/tty/serial/8250/8250_pci.c
index 0d35c77fad9e..400b16c0336c 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -4108,7 +4108,7 @@ pciserial_init_ports(struct pci_dev *dev, const struct 
pciserial_board *board)
rc = pci_alloc_irq_vectors(dev, 1, 1, 
PCI_IRQ_ALL_TYPES);
} else {
pci_dbg(dev, "Using legacy interrupts\n");
-   rc = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_LEGACY);
+   rc = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_INTX);
}
if (rc < 0) {
kfree(priv);
-- 
2.44.0



[PATCH 05/28] usb: hcd-pci: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 drivers/usb/core/hcd-pci.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
index ee3156f49533..a08f3f228e6d 100644
--- a/drivers/usb/core/hcd-pci.c
+++ b/drivers/usb/core/hcd-pci.c
@@ -189,7 +189,8 @@ int usb_hcd_pci_probe(struct pci_dev *dev, const struct 
hc_driver *driver)
 * make sure irq setup is not touched for xhci in generic hcd code
 */
if ((driver->flags & HCD_MASK) < HCD_USB3) {
-   retval = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_LEGACY | 
PCI_IRQ_MSI);
+   retval = pci_alloc_irq_vectors(dev, 1, 1,
+  PCI_IRQ_INTX | PCI_IRQ_MSI);
if (retval < 0) {
dev_err(>dev,
"Found HC with no IRQ. Check BIOS/PCI %s setup!\n",
-- 
2.44.0



[PATCH 04/28] sound: intel: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Use the macro PCI_IRQ_INTX instead of the deprecated PCI_IRQ_LEGACY
macro.

Signed-off-by: Damien Le Moal 
---
 sound/soc/intel/avs/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/intel/avs/core.c b/sound/soc/intel/avs/core.c
index d7f8940099ce..69818e4b43da 100644
--- a/sound/soc/intel/avs/core.c
+++ b/sound/soc/intel/avs/core.c
@@ -343,7 +343,7 @@ static int avs_hdac_acquire_irq(struct avs_dev *adev)
int ret;
 
/* request one and check that we only got one interrupt */
-   ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_MSI | PCI_IRQ_LEGACY);
+   ret = pci_alloc_irq_vectors(pci, 1, 1, PCI_IRQ_MSI | PCI_IRQ_INTX);
if (ret != 1) {
dev_err(adev->dev, "Failed to allocate IRQ vector: %d\n", ret);
return ret;
-- 
2.44.0



[PATCH 03/28] PCI: documentation: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
Change all references to PCI_IRQ_LEGACY to PCI_IRQ_INTX in the PCI
documentation to reflect that PCI_IRQ_LEGACY is deprecated.

Signed-off-by: Damien Le Moal 
---
 Documentation/PCI/msi-howto.rst| 2 +-
 Documentation/PCI/pci.rst  | 2 +-
 Documentation/translations/zh_CN/PCI/msi-howto.rst | 2 +-
 Documentation/translations/zh_CN/PCI/pci.rst   | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Documentation/PCI/msi-howto.rst b/Documentation/PCI/msi-howto.rst
index 783d30b7bb42..0692c9aec66f 100644
--- a/Documentation/PCI/msi-howto.rst
+++ b/Documentation/PCI/msi-howto.rst
@@ -103,7 +103,7 @@ min_vecs argument set to this limit, and the PCI core will 
return -ENOSPC
 if it can't meet the minimum number of vectors.
 
 The flags argument is used to specify which type of interrupt can be used
-by the device and the driver (PCI_IRQ_LEGACY, PCI_IRQ_MSI, PCI_IRQ_MSIX).
+by the device and the driver (PCI_IRQ_INTX, PCI_IRQ_MSI, PCI_IRQ_MSIX).
 A convenient short-hand (PCI_IRQ_ALL_TYPES) is also available to ask for
 any possible kind of interrupt.  If the PCI_IRQ_AFFINITY flag is set,
 pci_alloc_irq_vectors() will spread the interrupts around the available CPUs.
diff --git a/Documentation/PCI/pci.rst b/Documentation/PCI/pci.rst
index cced568d78e9..dd7b1c0c21da 100644
--- a/Documentation/PCI/pci.rst
+++ b/Documentation/PCI/pci.rst
@@ -335,7 +335,7 @@ causes the PCI support to program CPU vector data into the 
PCI device
 capability registers. Many architectures, chip-sets, or BIOSes do NOT
 support MSI or MSI-X and a call to pci_alloc_irq_vectors with just
 the PCI_IRQ_MSI and PCI_IRQ_MSIX flags will fail, so try to always
-specify PCI_IRQ_LEGACY as well.
+specify PCI_IRQ_INTX as well.
 
 Drivers that have different interrupt handlers for MSI/MSI-X and
 legacy INTx should chose the right one based on the msi_enabled
diff --git a/Documentation/translations/zh_CN/PCI/msi-howto.rst 
b/Documentation/translations/zh_CN/PCI/msi-howto.rst
index 1b9b5ea790d8..95baadf767e4 100644
--- a/Documentation/translations/zh_CN/PCI/msi-howto.rst
+++ b/Documentation/translations/zh_CN/PCI/msi-howto.rst
@@ -88,7 +88,7 @@ MSI功能。
 如果设备对最小数量的向量有要求,驱动程序可以传递一个min_vecs参数,设置为这个限制,
 如果PCI核不能满足最小数量的向量,将返回-ENOSPC。
 
-flags参数用来指定设备和驱动程序可以使用哪种类型的中断(PCI_IRQ_LEGACY, PCI_IRQ_MSI,
+flags参数用来指定设备和驱动程序可以使用哪种类型的中断(PCI_IRQ_INTX, PCI_IRQ_MSI,
 PCI_IRQ_MSIX)。一个方便的短语(PCI_IRQ_ALL_TYPES)也可以用来要求任何可能的中断类型。
 如果PCI_IRQ_AFFINITY标志被设置,pci_alloc_irq_vectors()将把中断分散到可用的CPU上。
 
diff --git a/Documentation/translations/zh_CN/PCI/pci.rst 
b/Documentation/translations/zh_CN/PCI/pci.rst
index 83c2a41d38d3..347f5c3f5ce9 100644
--- a/Documentation/translations/zh_CN/PCI/pci.rst
+++ b/Documentation/translations/zh_CN/PCI/pci.rst
@@ -304,7 +304,7 @@ MSI-X可以分配几个单独的向量。
 的PCI_IRQ_MSI和/或PCI_IRQ_MSIX标志来启用MSI功能。这将导致PCI支持将CPU向量数
 据编程到PCI设备功能寄存器中。许多架构、芯片组或BIOS不支持MSI或MSI-X,调用
 ``pci_alloc_irq_vectors`` 时只使用PCI_IRQ_MSI和PCI_IRQ_MSIX标志会失败,
-所以尽量也要指定 ``PCI_IRQ_LEGACY`` 。
+所以尽量也要指定 ``PCI_IRQ_INTX`` 。
 
 对MSI/MSI-X和传统INTx有不同中断处理程序的驱动程序应该在调用
 ``pci_alloc_irq_vectors`` 后根据 ``pci_dev``结构体中的 ``msi_enabled``
-- 
2.44.0



[PATCH 02/28] PCI: portdrv: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
In the PCI Express Port Bus Driver, use the macro PCI_IRQ_INTX instead
of the now deprecated PCI_IRQ_LEGACY macro.

Signed-off-by: Damien Le Moal 
---
 drivers/pci/pcie/portdrv.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/pcie/portdrv.c b/drivers/pci/pcie/portdrv.c
index 14a4b89a3b83..bb65dfe43409 100644
--- a/drivers/pci/pcie/portdrv.c
+++ b/drivers/pci/pcie/portdrv.c
@@ -187,15 +187,15 @@ static int pcie_init_service_irqs(struct pci_dev *dev, 
int *irqs, int mask)
 * interrupt.
 */
if ((mask & PCIE_PORT_SERVICE_PME) && pcie_pme_no_msi())
-   goto legacy_irq;
+   goto intx_irq;
 
/* Try to use MSI-X or MSI if supported */
if (pcie_port_enable_irq_vec(dev, irqs, mask) == 0)
return 0;
 
-legacy_irq:
-   /* fall back to legacy IRQ */
-   ret = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_LEGACY);
+intx_irq:
+   /* fall back to INTX IRQ */
+   ret = pci_alloc_irq_vectors(dev, 1, 1, PCI_IRQ_INTX);
if (ret < 0)
return -ENODEV;
 
-- 
2.44.0



[PATCH 01/28] PCI: msi: Use PCI_IRQ_INTX

2024-03-25 Thread Damien Le Moal
In pci_alloc_irq_vectors_affinity(), use the macro PCI_IRQ_INTX instead
of the now deprecated PCI_IRQ_LEGACY macro.

Signed-off-by: Damien Le Moal 
---
 drivers/pci/msi/api.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/msi/api.c b/drivers/pci/msi/api.c
index be679aa5db64..dfba4d6dd535 100644
--- a/drivers/pci/msi/api.c
+++ b/drivers/pci/msi/api.c
@@ -213,8 +213,8 @@ EXPORT_SYMBOL(pci_disable_msix);
  ** %PCI_IRQ_MSIX  Allow trying MSI-X vector allocations
  ** %PCI_IRQ_MSI   Allow trying MSI vector allocations
  *
- ** %PCI_IRQ_LEGACYAllow trying legacy INTx interrupts, if
- *  and only if @min_vecs == 1
+ ** %PCI_IRQ_INTX  Allow trying INTx interrupts, if and
+ *  only if @min_vecs == 1
  *
  ** %PCI_IRQ_AFFINITY  Auto-manage IRQs affinity by spreading
  *  the vectors around available CPUs
@@ -279,8 +279,8 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, 
unsigned int min_vecs,
return nvecs;
}
 
-   /* use legacy IRQ if allowed */
-   if (flags & PCI_IRQ_LEGACY) {
+   /* use INTx IRQ if allowed */
+   if (flags & PCI_IRQ_INTX) {
if (min_vecs == 1 && dev->irq) {
/*
 * Invoke the affinity spreading logic to ensure that
-- 
2.44.0



[PATCH 00/28] Remove PCI_IRQ_LEGACY

2024-03-25 Thread Damien Le Moal
This patch series removes the use of the depracated PCI_IRQ_LEGACY macro
and replace it with PCI_IRQ_INTX. No functional change.

Damien Le Moal (28):
  PCI: msi: Use PCI_IRQ_INTX
  PCI: portdrv: Use PCI_IRQ_INTX
  PCI: documentation: Use PCI_IRQ_INTX
  sound: intel: Use PCI_IRQ_INTX
  usb: hcd-pci: Use PCI_IRQ_INTX
  tty: 8250_pci: Use PCI_IRQ_INTX
  platform: intel_ips: Use PCI_IRQ_INTX
  ntb: Use PCI_IRQ_INTX
  mfd: intel-lpss-pci: Use PCI_IRQ_INTX
  drm: amdgpu: Use PCI_IRQ_INTX
  infiniband: qib: Use PCI_IRQ_INTX
  infiniband: vmw_pvrdma: Use PCI_IRQ_INTX
  misc: vmci_guest: Use PCI_IRQ_ALL_TYPES
  net: xgbe: Use PCI_IRQ_INTX
  net: aquantia atlantic: Use PCI_IRQ_INTX
  net: atheros: alx: Use PCI_IRQ_INTX
  net: realtek: r8169: Use PCI_IRQ_INTX
  net: wangxun: Use PCI_IRQ_INTX
  net: wireless: ath10k: Use references to INTX instead of LEGACY
  net wireless; realtec: Use PCI_IRQ_INTX
  scsi: arcmsr: Use PCI_IRQ_INTX
  scsi: hpsa: Use PCI_IRQ_INTX
  scsi: ipr: Use PCI_IRQ_INTX
  scsi: megaraid: Use PCI_IRQ_INTX
  scsi: mpt3sas: Use PCI_IRQ_INTX
  scsi: pmcraid: Use PCI_IRQ_INTX
  scsi: vmw_pvscsi: Do not use PCI_IRQ_LEGACY
  PCI: Remove PCI_IRQ_LEGACY

 Documentation/PCI/msi-howto.rst   |  2 +-
 Documentation/PCI/pci.rst |  2 +-
 .../translations/zh_CN/PCI/msi-howto.rst  |  2 +-
 Documentation/translations/zh_CN/PCI/pci.rst  |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c   |  2 +-
 drivers/infiniband/hw/qib/qib_iba7220.c   |  2 +-
 drivers/infiniband/hw/qib/qib_iba7322.c   |  5 ++-
 drivers/infiniband/hw/qib/qib_pcie.c  |  2 +-
 .../infiniband/hw/vmw_pvrdma/pvrdma_main.c|  2 +-
 drivers/mfd/intel-lpss-pci.c  |  2 +-
 drivers/misc/vmw_vmci/vmci_guest.c|  3 +-
 drivers/net/ethernet/amd/xgbe/xgbe-pci.c  |  2 +-
 .../net/ethernet/aquantia/atlantic/aq_cfg.h   |  2 +-
 .../net/ethernet/aquantia/atlantic/aq_hw.h|  2 +-
 .../net/ethernet/aquantia/atlantic/aq_nic.c   |  2 +-
 .../ethernet/aquantia/atlantic/aq_pci_func.c  |  9 ++---
 .../aquantia/atlantic/hw_atl/hw_atl_a0.c  |  2 +-
 .../aquantia/atlantic/hw_atl/hw_atl_b0.c  |  2 +-
 .../aquantia/atlantic/hw_atl2/hw_atl2.c   |  2 +-
 drivers/net/ethernet/atheros/alx/main.c   |  2 +-
 drivers/net/ethernet/realtek/r8169_main.c |  2 +-
 drivers/net/ethernet/wangxun/libwx/wx_lib.c   |  8 ++---
 drivers/net/wireless/ath/ath10k/ahb.c | 18 +-
 drivers/net/wireless/ath/ath10k/pci.c | 36 +--
 drivers/net/wireless/ath/ath10k/pci.h |  6 ++--
 drivers/net/wireless/realtek/rtw88/pci.c  |  2 +-
 drivers/net/wireless/realtek/rtw89/pci.c  |  2 +-
 drivers/ntb/hw/idt/ntb_hw_idt.c   |  2 +-
 drivers/pci/msi/api.c |  8 ++---
 drivers/pci/pcie/portdrv.c|  8 ++---
 drivers/platform/x86/intel_ips.c  |  2 +-
 drivers/scsi/arcmsr/arcmsr_hba.c  |  2 +-
 drivers/scsi/hpsa.c   |  2 +-
 drivers/scsi/ipr.c|  2 +-
 drivers/scsi/megaraid/megaraid_sas_base.c |  4 +--
 drivers/scsi/mpt3sas/mpt3sas_base.c   |  2 +-
 drivers/scsi/pmcraid.c|  2 +-
 drivers/scsi/vmw_pvscsi.c |  2 +-
 drivers/tty/serial/8250/8250_pci.c|  2 +-
 drivers/usb/core/hcd-pci.c|  3 +-
 include/linux/pci.h   |  7 ++--
 sound/soc/intel/avs/core.c|  2 +-
 42 files changed, 84 insertions(+), 91 deletions(-)

-- 
2.44.0