From: Lizhi Hou <lizhi.hou@amd.com>
To: Jeffrey Hugo <quic_jhugo@quicinc.com>, <ogabbay@kernel.org>,
<dri-devel@lists.freedesktop.org>
Cc: <linux-kernel@vger.kernel.org>, <min.ma@amd.com>,
<max.zhen@amd.com>, <sonal.santan@amd.com>, <king.tam@amd.com>,
Narendra Gutta <VenkataNarendraKumar.Gutta@amd.com>,
George Yang <George.Yang@amd.com>
Subject: Re: [PATCH V2 01/10] accel/amdxdna: Add a new driver for AMD AI Engine
Date: Wed, 14 Aug 2024 14:59:38 -0700 [thread overview]
Message-ID: <5ab44ff4-2b69-2c7b-9974-d86919d79346@amd.com> (raw)
In-Reply-To: <754b747e-abf6-e70c-4091-2bea95576b81@quicinc.com>
On 8/14/24 14:53, Jeffrey Hugo wrote:
> On 8/14/2024 2:24 PM, Lizhi Hou wrote:
>>
>> On 8/14/24 11:46, Jeffrey Hugo wrote:
>>> On 8/14/2024 12:16 PM, Lizhi Hou wrote:
>>>>
>>>> On 8/9/24 09:11, Jeffrey Hugo wrote:
>>>>> On 8/5/2024 11:39 AM, Lizhi Hou wrote:
>>>>>> diff --git a/drivers/accel/amdxdna/aie2_pci.c
>>>>>> b/drivers/accel/amdxdna/aie2_pci.c
>>>>>> new file mode 100644
>>>>>> index 000000000000..3660967c00e6
>>>>>> --- /dev/null
>>>>>> +++ b/drivers/accel/amdxdna/aie2_pci.c
>>>>>> @@ -0,0 +1,182 @@
>>>>>> +// SPDX-License-Identifier: GPL-2.0
>>>>>> +/*
>>>>>> + * Copyright (C) 2023-2024, Advanced Micro Devices, Inc.
>>>>>> + */
>>>>>> +
>>>>>> +#include <linux/amd-iommu.h>
>>>>>> +#include <linux/errno.h>
>>>>>> +#include <linux/firmware.h>
>>>>>> +#include <linux/iommu.h>
>>>>>
>>>>> You are clearly missing linux/pci.h and I suspect many more.
>>>> Other headers are indirectly included by "aie2_pci.h" underneath.
>>>
>>> aie2_pci.h also does not directly include linux/pci.h
>>
>> it is aie2_pci.h --> amdxdna_pci_drv.h --> linux/pci.h.
>>
>> It compiles without any issue.
>
> I did not doubt that it compiled. To be clear, I'm pointing out what
> I believe is poor style - relying on implicit includes.
>
> There is no reason that amdxdna_pci_drv.h needs to include linux/pci.h
> (at-least in this patch). That header file doesn't use any of the
> content from pci.h. If this were merged, I suspect it would be valid
> for someone to post a cleanup patch that removes pci.h from
> amdxdna_pci_drv.h.
>
> The problem comes when someone does a tree wide refactor of some
> header - perhaps moving a function out of pci.h into something else.
> If they grep the source tree, they'll find amdxdna_pci_drv.h includes
> pci.h but really doesn't use it. They likely won't see aie2_pci.c
> which may break because of the refactor. Even more problematic is if
> pci.h is including something that you need, and you are not including
> it anywhere. The code will still compile, but maybe in the next kernel
> cycle pci.h no longer includes that thing. Your code will break.
>
> The 4 includes you have here seems entirely too little, and I'm not
> clearly seeing the logic of what gets explicitly included vs what is
> implicitly included. firmware.h is explicitly included, but pci.h is
> not, yet it seems like you use a lot more from pci.h.
>
> There is the include what you use project that attempts to automate
> this, although I don't know how well it works with kernel code -
> https://github.com/include-what-you-use/include-what-you-use
Ok. got your point and I will cleanup include.
Lizhi
>
>>
>>>
>>>>>> +
>>>>>> + ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
>>>>>> + if (ret) {
>>>>>> + XDNA_ERR(xdna, "Failed to set DMA mask: %d", ret);
>>>>>> + goto release_fw;
>>>>>> + }
>>>>>> +
>>>>>> + nvec = pci_msix_vec_count(pdev);
>>>>>
>>>>> This feels weird. Can your device advertise variable number of
>>>>> MSI-X vectors? It only works if all of the vectors are used?
>>>> That is possible. the driver supports different hardware. And the
>>>> fw assigns vector for hardware context dynamically. So the driver
>>>> needs to allocate all vectors ahead.
>>>
>>> So, if the device requests N MSIs, but the host is only able to
>>> satisfy 1 (or some number less than N), the fw is completely unable
>>> to function?
>> The fw may return interrupt 2 is assigned to hardware context. Then
>> the driver may not deal with it in this case. I think it is ok to
>> fail if the system has very limited resource.
>
> Ok. I suspect you'll want to change that behavior in the future with
> a fw update, but if this is how things work today, then this is how
> the driver must be.
next prev parent reply other threads:[~2024-08-14 21:59 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-05 17:39 [PATCH V2 00/10] AMD XDNA driver Lizhi Hou
2024-08-05 17:39 ` [PATCH V2 01/10] accel/amdxdna: Add a new driver for AMD AI Engine Lizhi Hou
2024-08-07 11:06 ` Markus Elfring
2024-08-07 16:07 ` Lizhi Hou
2024-08-09 15:24 ` Carl Vanderlip
2024-08-12 15:58 ` Lizhi Hou
2024-08-09 16:11 ` Jeffrey Hugo
2024-08-14 18:16 ` Lizhi Hou
2024-08-14 18:46 ` Jeffrey Hugo
2024-08-14 20:24 ` Lizhi Hou
2024-08-14 21:53 ` Jeffrey Hugo
2024-08-14 21:59 ` Lizhi Hou [this message]
2024-08-05 17:39 ` [PATCH V2 02/10] accel/amdxdna: Support hardware mailbox Lizhi Hou
2024-08-09 16:32 ` Jeffrey Hugo
2024-08-14 21:05 ` Lizhi Hou
2024-08-14 22:02 ` Jeffrey Hugo
2024-08-05 17:39 ` [PATCH V2 03/10] accel/amdxdna: Add hardware resource solver Lizhi Hou
2024-08-09 16:36 ` Jeffrey Hugo
2024-08-05 17:39 ` [PATCH V2 04/10] accel/amdxdna: Add hardware context Lizhi Hou
2024-08-08 21:34 ` Alex Deucher
2024-08-08 22:15 ` Lizhi Hou
2024-08-05 17:39 ` [PATCH V2 05/10] accel/amdxdna: Add GEM buffer object management Lizhi Hou
2024-08-09 16:39 ` Jeffrey Hugo
2024-08-05 17:39 ` [PATCH V2 06/10] accel/amdxdna: Add command execution Lizhi Hou
2024-08-05 17:39 ` [PATCH V2 07/10] accel/amdxdna: Add suspend and resume Lizhi Hou
2024-08-05 17:39 ` [PATCH V2 08/10] accel/amdxdna: Add error handling Lizhi Hou
2024-08-05 17:39 ` [PATCH V2 09/10] accel/amdxdna: Add query functions Lizhi Hou
2024-08-09 16:42 ` Jeffrey Hugo
2024-08-19 19:50 ` Lizhi Hou
2024-08-05 17:39 ` [PATCH V2 10/10] accel/amdxdna: Add firmware debug buffer support Lizhi Hou
2024-08-06 8:05 ` [PATCH V2 00/10] AMD XDNA driver Markus Elfring
2024-08-06 17:18 ` Lizhi Hou
2024-08-06 18:56 ` Markus Elfring
2024-08-09 15:21 ` Jeffrey Hugo
2024-08-12 18:16 ` Lizhi Hou
2024-08-14 18:49 ` Jeffrey Hugo
2024-08-14 20:06 ` Lizhi Hou
2024-09-03 17:50 ` Lizhi Hou
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5ab44ff4-2b69-2c7b-9974-d86919d79346@amd.com \
--to=lizhi.hou@amd.com \
--cc=George.Yang@amd.com \
--cc=VenkataNarendraKumar.Gutta@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=king.tam@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=max.zhen@amd.com \
--cc=min.ma@amd.com \
--cc=ogabbay@kernel.org \
--cc=quic_jhugo@quicinc.com \
--cc=sonal.santan@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox