[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>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Michal Orzel <michal.orzel@xxxxxxx>
  • Date: Thu, 17 Nov 2022 10:53:49 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=xen.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); 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=ulrMRcfEuS4gXjhz1N7SHoZG+aLZM7wwvMdeJXbNHak=; b=LTh+QLHqYQd+SIM1L1nXItarfYemfAzzHOHLtR2nz1+AAvcle63H5KnNpwZ2eQbsTIWVpmbCX1o7R8CXvfxrJJOHOG1xucY6D4HlCNyXNYHo8pbJRdxrBJdZFyEXOkMv5oBIenfsHA0qQoYPO6iqIL3D1Ve8sFpQBxddgN0MS3ffJsIKl6vmTx/JQ681o9dcsRxjuyt+8xmmFpHOCRXEglraM8d6BhqmN99K8Z6sVC4MWf0DRPiaYG1mYN5AEOvFE2dh4mokeH1NJ68OcqyBlx9Duc+B9onrMNp1EzkCq8rwyejrKTEJgIlU5xIcoYV3tkhdGqXajwCnrTpE1m4gvw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=daoI7dQuBBuFNJbvMkhAXX8uB0Ofj1dD2CwQPsOKRqzdV2nO0kTJAVszYQFtKjwiQhHG62+jhx81s0P5tQQE5ddza0rAQd4xM3+rxiegB//KCLFlVfIMOISesQk7HqIk114TuGtCzkCgB+Fuwvp6WLClvjb8NqLX9VOITrwrxpRspRGbshN7b/QMLR0F8CFBFY/Hf40NcxTQjVaV9yywPPyHTkPEhJKNG2LI10baOuy80HTJZDPLVfaYs4fVRCiuf6ItBD8pty+sN86pQjYCFnZnxAyFyHmLmKBXAitZ8GJb5kARLsg3B32mljXAs9htlBozsbpOA0V/3JRbwnQ2FQ==
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Thu, 17 Nov 2022 09:54:15 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Hi Julien,

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

> 
> --
> Julien Grall

~Michal



 


Rackspace

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