[PATCH] drm/ast: Fix ARM compatibility

Thomas Zimmermann tzimmermann at suse.de
Tue Apr 18 07:24:40 UTC 2023


Hi

Am 18.04.23 um 03:23 schrieb Jammy Huang:
> Hi Thomas,
> 
> The Intel(x86) CPUs have a separate address space for "IO", but the ARM 
> architecture only has "memory", so all IO devices are accessed as if 
> they were memory. Which means ARM does not support isolated IO. Here is 
> a related discussion on ARM's forum.
> 
> https://community.arm.com/support-forums/f/architectures-and-processors-forum/52046/how-to-read-write-an-i-o-port-in-aarch64
> 
> Thus, we want to adapt MMIO only after this patch.

What I mean is that there's a comment that says "assume the chip has 
MMIO enabled by default (rev 0x20 and higher)". We also support revs 
before 0x20. What happens to them?

Best regards
Thomas

> 
> On 2023/4/17 下午 07:51, Thomas Zimmermann wrote:
>> Hi
>>
>> Am 07.04.23 um 04:09 schrieb Jammy Huang:
>>> Hi Thomas,
>>>
>>> Could you help review this patch??
>>>
>>> We met some problem on nvidia's ARM platfrom and need this patch to 
>>> fix it.
>>>
>>> On 2023/3/2 上午 10:19, Jammy Huang wrote:
>>>> ARM architecture only has 'memory', so all devices are accessed by 
>>>> MMIO.
>>>>
>>>> Signed-off-by: Jammy Huang <jammy_huang at aspeedtech.com>
>>>> ---
>>>>   drivers/gpu/drm/ast/ast_main.c | 17 +----------------
>>>>   1 file changed, 1 insertion(+), 16 deletions(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/ast/ast_main.c 
>>>> b/drivers/gpu/drm/ast/ast_main.c
>>>> index 794ffd4a29c5..f86d01e9f024 100644
>>>> --- a/drivers/gpu/drm/ast/ast_main.c
>>>> +++ b/drivers/gpu/drm/ast/ast_main.c
>>>> @@ -424,22 +424,7 @@ struct ast_device *ast_device_create(const 
>>>> struct drm_driver *drv,
>>>>       if (!ast->regs)
>>>>           return ERR_PTR(-EIO);
>>>> -    /*
>>>> -     * If we don't have IO space at all, use MMIO now and
>>>> -     * assume the chip has MMIO enabled by default (rev 0x20
>>>> -     * and higher).
>>>> -     */
>>>> -    if (!(pci_resource_flags(pdev, 2) & IORESOURCE_IO)) {
>>>> -        drm_info(dev, "platform has no IO space, trying MMIO\n");
>>>> -        ast->ioregs = ast->regs + AST_IO_MM_OFFSET;
>>>> -    }
>>>> -
>>>> -    /* "map" IO regs if the above hasn't done so already */
>>>> -    if (!ast->ioregs) {
>>>> -        ast->ioregs = pcim_iomap(pdev, 2, 0);
>>
>> What happens on systems that use this branch?
>>
>> Best regards
>> Thomas
>>
>>>> -        if (!ast->ioregs)
>>>> -            return ERR_PTR(-EIO);
>>>> -    }
>>>> +    ast->ioregs = ast->regs + AST_IO_MM_OFFSET;
>>>>       ast_detect_chip(dev, &need_post);
>>>>
>>>> base-commit: 254986e324add8a30d0019c6da59f81adc8b565f
>>>
>>
> -- 
> Best Regards
> Jammy
> 

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20230418/2d951335/attachment.sig>


More information about the dri-devel mailing list