[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] xen/arm: debug-pl011.inc: Use macros instead of hardcoded values


  • To: Julien Grall <julien@xxxxxxx>
  • From: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
  • Date: Thu, 17 Nov 2022 10:20:02 +0000
  • Accept-language: en-GB, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9m0uTBehi+zPsqi5jId/NAKX92nGp2NMwLzNmZ+Girk=; b=hXdbd5bX6x6Ghn57+L6DQyb9/0qZkmeMrG3+nfB4fhgCrwT5Z/4pqg/SRWK00QXtZP21sjb8GtEdS27kbAcpG6P8/UXGdOibDBAR6jYTMLW1RAdQnoYXAx5oXgTyZnrqsN6txXgb7SpJCouqlCr9iIhh9MFxcmlspraMRD/lqhHm6HtbUGsOFqFH+0qrs9/yIJF+71924APqogq+4OzxigS6mj7v/dlD50Vs3+nl8tcgtOWATFGsjzDIBGYNHAv5Vd3+bIwvT9Hnh2PGCpahQIiqSutpjLpzVw76WEyg5BGKyzZGr0/rCrK6P0esXcm06ujCZFhvGBsCxb6C0xPKog==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ug54etEbZq3NDcVv1hD9ghug1hcmlXRAO6WxbxWUlaz1Bs6ggdwdThL/qmPopTqI0EeYMYWBJnl8KTyCGpH/Jqjb4jhUieNH5H4UEH5rpTfvDsL3OVud9KDlXQCpn42qhNgudx4E57y8HOi0jUlukR+xGSDCFB3KLdJ7cOU4vMIEIc2ERDIqwgsjlEh2mt5j8sdcr+ONgJTFX/pZRggRzY0fyNIL0RmPYxExK/xmXjZq1oEpZXR5sa1K5hOiFqNM8SbeJPwIwVCGY4MRXy6pyCWfb4OWqYs/jFn/wSNi21PuAxWVOJ08I2NpoUZGwu5CVBYSc06fAwK2OKgQuvlUvA==
  • Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Cc: Michal Orzel <michal.orzel@xxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Thu, 17 Nov 2022 10:20:27 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHY55A0LevsoY2L90OFIBLiUlnr6K5Av9+AgACVYoCAAF4AgIAAEeUAgAATsACAACQMgIAACNUAgADp3YCAAA96gIAABs2AgAAE/ACAAAJXAA==
  • Thread-topic: [PATCH] xen/arm: debug-pl011.inc: Use macros instead of hardcoded values

Hi Julien,

> On 17 Nov 2022, at 10:11, Julien Grall <julien@xxxxxxx> wrote:
> 
> Hi,
> 
> On 17/11/2022 09:53, Michal Orzel wrote:
>> On 17/11/2022 10:29, Julien Grall wrote:
>>> 
>>> 
>>> On 17/11/2022 08:34, Michal Orzel wrote:
>>>> Hi Julien,
>>>> 
>>>> On 16/11/2022 19:37, Julien Grall wrote:
>>>>> 
>>>>> 
>>>>> Hi Michal,
>>>>> 
>>>>> On 16/11/2022 18:05, Michal Orzel wrote:
>>>>>> On 16/11/2022 16:56, Julien Grall wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> On 16/11/2022 14:45, Michal Orzel wrote:
>>>>>>>> Hi Julien,
>>>>>>> 
>>>>>>> Hi Michal,
>>>>>>> 
>>>>>>>>> 
>>>>>>>>>> and use it in the pl011-debug files (+ there is a question whether 
>>>>>>>>>> we should define WLEN_7-5 for completeness).
>>>>>>>>> 
>>>>>>>>> I would not define WLEN_7-5. That said, I wonder if we really need to
>>>>>>>>> set the baud rate & co here?
>>>>>>>>> 
>>>>>>>>> AFAICT the runtime driver never touch them. The reasoning is the
>>>>>>>>> firmware is responsible to configure the serial. Therefore, I would
>>>>>>>>> consider to drop the code (setting UARTCR might still be necessary).
>>>>>>>> I do not really agree because the current behavior was done on purpose.
>>>>>>> 
>>>>>>> EARLY_UART_PL011_BAUD_RATE is only used for very early debugging (this
>>>>>>> is protected by CONFIG_DEBUG and CONFIG_EXPERT). This is not a
>>>>>>> production ready code.
>>>>>> I am fully aware of it. I just found it useful but I understand the 
>>>>>> global reasoning.
>>>>>> 
>>>>>>> 
>>>>>>>> At the moment early_uart_init is called only if 
>>>>>>>> EARLY_UART_PL011_BAUD_RATE is set to a value != 0.
>>>>>>>> This is done in order to have flexibility to either stick to what 
>>>>>>>> firmware/bootloader configured or to change this
>>>>>>>> configuration by specifying the EARLY_UART_PL011_BAUD_RATE (useful 
>>>>>>>> when you do not know what
>>>>>>>> the firmware configured).
>>>>>>> The chances are that you want to use the baud rate that was configured
>>>>>>> by the firmware. Otherwise, you would need to change the configuration
>>>>>>> of minicom (or whatever you used) to get proper output for the firmware
>>>>>>> and then Xen.
>>>>>>> 
>>>>>>> Furthermore, as I wrote before, the runtime driver doesn't configure the
>>>>>>> baud rate. This was removed in Xen 4.7 (see commit 2048e17ca9df
>>>>>>> "drivers/pl011: Don't configure baudrate") because it was buggy and this
>>>>>>> code is not simple.
>>>>>>> 
>>>>>>> So it makes no sense to configure the baud rate when using early printk
>>>>>>> but not the runtime driver.
>>>>>> Ok, so we will get rid of EARLY_UART_PL011_BAUD_RATE config and setting 
>>>>>> the bd
>>>>>> in the early uart code. Now, what about setting "8n1"? The runtime 
>>>>>> driver sets them
>>>>>> as well as the early code. It can also be set to a different value from 
>>>>>> the firmware
>>>>>> (unlikely but it can happen I think). In any case, if we decide to do 
>>>>>> what the runtime driver
>>>>>> does, I reckon setting LCR_H should be kept in early code.
>>>>> 
>>>>> Good question. I think, you would end up with the same issue I mentioned
>>>>> above if the firmware and Xen have different line control registers
>>>>> (tools like minicom/screen would ask for it).
>>>>> 
>>>>> So I am on the fence here. In one way, it seems pointless keep it. But
>>>>> on the other hand, Xen has always set it. So I have no data to prove
>>>>> this will be fine everywhere.
>>>> If we are relying on the firmware[1] to configure the baud rate, it is not 
>>>> very wise
>>>> not to rely on it to configure the LCR. Looking at the other serial 
>>>> drivers in Xen,
>>>> we have a real mismatch in what is being configured. Some of the drivers 
>>>> (omap, imx),
>>>> apart from setting 8n1 also set the baud rate explicitly to 115200 and 
>>>> almost all of them
>>>> do set 8n1. In that case we will not benefit too much from fixing just 
>>>> pl011.
>>> It is not great that Xen hardcode the baud rate (I can't remember
>>> whether there was a reason), but I don't think the consistency is
>>> necessary here (see more below).
>>> 
>>>> 
>>>> On the other hand, Xen follows the zImage/Image protocols for ARM [2] 
>>>> which do not
>>>> state that serial port initializing is something mandatory. This could 
>>>> indicate that
>>>> the firmware does not really need to configure the serial.
>>> 
>>> The firmware doesn't need to configure the serial and yes in theory Xen
>>> should configure the baud rate and parity based on the firmware table.
>>> 
>>> However, this is a trade off between complexity and benefits. The patch
>>> I mentioned earlier has been removed nearly 6 years ago and I haven't
>>> seen anyone reporting any issues.
>>> 
>>> Hence why I think for the PL011 it is not worth looking [3] at the baud
>>> rate and instead removing it completely in the early PL011 code as well.
>>> 
>>> That said, if you feel strongly adding support for baud rate then I will
>>> be happy to review the patch.
>> I'm not in favor of this approach either. That said, I will prepare patches 
>> to remove
>> CONFIG_EARLY_UART_PL011_BAUD_RATE and its usage in early printk code as we 
>> agreed earlier.
>> As for the LCR setting, I will keep it in early printk code to maintain the 
>> same behavior as
>> runtime driver who sets them.
>>> 
>>>> 
>>>> [1] It is not stated anywhere in our docs.
>>> 
>>> Our docs are not perfect. Patches are welcomed for improvement.
>>> Although, I think the statement should only be for driver where we don't
>>> set the baud rate. For the others, we should leave it as is unless you
>>> can prove this is not necessary (we don't want to break existing setup).
>>> 
>>>> 
>>>> [2] BTW: our docs/misc/arm/booting contains invalid links to the kernel 
>>>> docs. I guess
>>>> this wants to be fixed.
>>> 
>>> Patches are welcomed.
>>> 
>>> [3] I do have a large list of more critical bugs that I will be happy to
>>> share if you are looking for improving Xen.
>> That is cool and such list would be great for everyone having some spare 
>> time (+ newcomers).
>> Taking the opportunity of having a GitLab CI epics, I think it is worth 
>> adding such work items here:
>> https://gitlab.com/groups/xen-project/-/epics?state=opened&page=1&sort=start_date_desc
> 
> I already have a Trello board I created a few years ago when I left Arm [1] 
> with 30+ issues. I have another 30+ in my private board.
> 
> I can try to clean-up the one I have in my private board. But I will need 
> some help for transfer everything to gitlab.

Do not hesitate to ping me if you want some help on that :-)

Cheers
Bertrand

> 
> Cheers,
> 
> [1] 
> https://trello.com/invite/b/L54vXoqM/ATTI99c86a2718dec17b3b08f0de35fb3b5bC8729E45/xen
> 
> -- 
> Julien Grall




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.