Re: [PATCH] SPCR: check bit width for the 16550 UART
From: Jon Masters
Date: Mon Dec 05 2016 - 18:27:22 EST
Duc, Aleksey, all,
I have a question about this...
On 12/05/2016 01:51 PM, Duc Dang wrote:
> On Mon, Dec 5, 2016 at 5:05 AM, Aleksey Makarov
> <aleksey.makarov@xxxxxxxxxx> wrote:
>> Check the 'Register Bit Width' field of the ACPI Generic Address
>> Structure that specifies the address of the UART registers to
>> decide if the driver should use "mmio32" access instead of "mmio".
>>
>> If the driver is other than 16550 the access with is defined
>> by the Interface Type field of the SPCR table.
I have two questions about this:
1). Why is this not a full 16550 (ACPI_DBG2_16550_COMPATIBLE)?
2). Why is it a ACPI_DBG2_16550_SUBSET you are assuming here?
The SPCR and DBG2 spec clearly state that the _SUBSET is intended
to represent a UART compatible with the earlier DGBP specification,
not that a UART is a "subset" of a full 16550 (which seems to be
the assumption in this patch). It's important we get this right.
I built a test kernel with this patch and updated ACPI tables earlier,
but it didn't boot with a console because I had left it a subtype 0,
but just changed the width to 32 bit, which is what I expected.
Further, I've heard back from Microsoft and they're looking at
adding a specific subtype for this. If they do, I'm inclined to
address existing designs with your patch (but I would favor this
check because against the full 16550) and then switch newer APM
based designs to the new subtype.
Jon.
--
Computer Architect | Sent from my Fedora powered laptop