|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v3 1/3] xen/ns16550: Make ns16550 driver usable on ARM with HAS_PCI enabled.
On 18.11.2020 16:50, Julien Grall wrote:
> On 16/11/2020 12:25, Rahul Singh wrote:
>> NS16550 driver has PCI support that is under HAS_PCI flag. When HAS_PCI
>> is enabled for ARM, compilation error is observed for ARM architecture
>> because ARM platforms do not have full PCI support available.
> >
>> Introducing new kconfig option CONFIG_HAS_NS16550_PCI to support
>> ns16550 PCI for X86.
>>
>> For X86 platforms it is enabled by default. For ARM platforms it is
>> disabled by default, once we have proper support for NS16550 PCI for
>> ARM we can enable it.
>>
>> No functional change.
>
> NIT: I would say "No functional change intended" to make clear this is
> an expectation and hopefully will be correct :).
>
> Regarding the commit message itself, I would suggest the following to
> address Jan's concern:
While indeed this is a much better description, I continue to think
that the proposed Kconfig option is undesirable to have. Either,
following the patch I've just sent, truly x86-specific things (at
least as far as current state goes - if any of this was to be
re-used by a future port, suitable further abstraction may be
needed) should be guarded by CONFIG_X86 (or abstracted into arch
hooks), or the HAS_PCI_MSI proposal would at least want further
investigating as to its feasibility to address the issues at hand.
Jan
> "
> xen/char: ns16550: Gate all PCI code with a new Kconfig HAS_NS16550_PCI
>
> The NS16550 driver is assuming that NS16550 PCI card are usable if the
> architecture supports PCI (i.e. CONFIG_HAS_PCI=y). However, the code is
> very x86 focus and will fail to build on Arm (/!\ it is not all the errors):
>
> ns16550.c: In function ‘ns16550_init_irq’:
> ns16550.c:726:21: error: implicit declaration of function ‘create_irq’;
> did you mean ‘release_irq’? [-Werror=implicit-function-declaration]
> uart->irq = create_irq(0, false);
> ^~~~~~~~~~
> release_irq
> ns16550.c:726:21: error: nested extern declaration of ‘create_irq’
> [-Werror=nested-externs]
> ns16550.c: In function ‘ns16550_init_postirq’:
> ns16550.c:768:33: error: ‘mmio_ro_ranges’ undeclared (first use in this
> function); did you mean ‘mmio_handler’?
> rangeset_add_range(mmio_ro_ranges, uart->io_base,
> ^~~~~~~~~~~~~~
> mmio_handler
> ns16550.c:768:33: note: each undeclared identifier is reported only once
> for each function it appears in
> ns16550.c:780:20: error: variable ‘msi’ has initializer but incomplete type
> struct msi_info msi = {
> ^~~~~~~~
> ns16550.c:781:18: error: ‘struct msi_info’ has no member named ‘bus’
> .bus = uart->ps_bdf[0],
> ^~~
> ns16550.c:781:24: error: excess elements in struct initializer [-Werror]
> .bus = uart->ps_bdf[0],
> ^~~~
> ns16550.c:781:24: note: (near initialization for ‘msi’)
> ns16550.c:782:18: error: ‘struct msi_info’ has no member named ‘devfn’
> .devfn = PCI_DEVFN(uart->ps_bdf[1], uart->ps_bdf[2]),
>
> Enabling support for NS16550 PCI card on Arm would require more plumbing
> in addition to fixing the compilation error.
>
> Arm systems tend to have platform UART available such as NS16550, PL011.
> So there are limited reasons to get NS16550 PCI support for now on Arm.
>
> A new Kconfig option CONFIG_HAS_NS16550_PCI is introduced to gate all
> the PCI code.
>
> This option will be select automically for x86 platform and left
> unselectable on Arm.
>
> Signed-off-by: Rahul Singh <rahul.singh@xxxxxxx>
> [julieng: Commit message]
> Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx>
> "
>
> Cheers,
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |