[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0e212384-396b-f765-be28-f9319c64b5f7@xilinx.com>
Date: Tue, 23 Nov 2021 12:12:06 -0800
From: Lizhi Hou <lizhi.hou@...inx.com>
To: Greg KH <gregkh@...uxfoundation.org>,
Lizhi Hou <lizhi.hou@...inx.com>
CC: <linux-kernel@...r.kernel.org>, <linux-serial@...r.kernel.org>,
<jacmet@...site.dk>
Subject: Re: [PATCH 1/1] tty: serial: uartlite: allow 64 bit address
On 11/23/21 10:59 AM, Greg KH wrote:
>
> On Tue, Nov 23, 2021 at 10:45:06AM -0800, Lizhi Hou wrote:
>> Fix the uartlite probe failure when it is mapped to address above 4G.
> Fix it how?
Does this detail comment look ok to you?
The base address of uartlite registers could be 64 bit address which is
from device resource. When ulite_probe() calls ulite_assign(), this 64
bit address is casted to 32-bit. The fix is to replace "u32" type with
"phys_addr_t" type for the base address in ulite_assign() argument list.
>
>> Signed-off-by: Lizhi Hou <lizhi.hou@...inx.com>
> What commit caused this problem? What commit does this fix? Should it
> go to stable kernels?
I searched the history. This problem was introduced by
https://github.com/torvalds/linux/commit/8fa7b6100693e0b648ffd34564f6f41226502a19
And yes, I agree this should go to stable kernels. I will add
stable@...r.kernel.org to cc list.
>
>> ---
>> drivers/tty/serial/uartlite.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c
>> index d3d9566e5dbd..e1fa52d31474 100644
>> --- a/drivers/tty/serial/uartlite.c
>> +++ b/drivers/tty/serial/uartlite.c
>> @@ -626,7 +626,7 @@ static struct uart_driver ulite_uart_driver = {
>> *
>> * Returns: 0 on success, <0 otherwise
>> */
>> -static int ulite_assign(struct device *dev, int id, u32 base, int irq,
>> +static int ulite_assign(struct device *dev, int id, phys_addr_t base, int irq,
>> struct uartlite_data *pdata)
> So you changed the variable type which does what exactly here?
ulite_probe()
-> ulite_assign(&pdev->dev, id, res->start, irq, pdata)
^^^^^^ could be
64-bit address. Thus "u32 base" may lose the high 32-bit.
Hopefully this makes sense to you. And I can re-submit an updated patch.
Thanks,
Lizhi
>
> thanks,
>
> greg k-h
Powered by blists - more mailing lists