From: Jeffrey Hugo <quic_jhugo@quicinc.com>
To: Lizhi Hou <lizhi.hou@amd.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 15:53:49 -0600 [thread overview]
Message-ID: <754b747e-abf6-e70c-4091-2bea95576b81@quicinc.com> (raw)
In-Reply-To: <6f50a3d7-0aca-e1a8-423f-75bc5cb6e744@amd.com>
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
>
>>
>>>>> +
>>>>> + 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:53 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 [this message]
2024-08-14 21:59 ` Lizhi Hou
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=754b747e-abf6-e70c-4091-2bea95576b81@quicinc.com \
--to=quic_jhugo@quicinc.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=lizhi.hou@amd.com \
--cc=max.zhen@amd.com \
--cc=min.ma@amd.com \
--cc=ogabbay@kernel.org \
--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
all inboxes | Powered by JetHome®