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

[Xen-changelog] [xen master] serial: Skip over PCIe device which have no quirks (fix AMT regression).



commit 6a8fdb9d5471b9bf1b5fcf444e00fa01a32b4435
Author:     Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
AuthorDate: Wed Mar 5 14:38:33 2014 -0500
Commit:     Keir Fraser <keir@xxxxxxx>
CommitDate: Thu Mar 13 10:21:23 2014 +0000

    serial: Skip over PCIe device which have no quirks (fix AMT regression).
    
    The "ns16550: Add support for UART present in Broadcom TruManage
    capable NetXtreme chips" implies that only devices that are have
    an MMIO BAR and are in the quirks table should be processed.
    
    Even the comment at the end says so:
    
     If we have an io_base, then we succeeded in the lookup
    
    But the code was checking for the !io_base - which is to say if
    the io_base was 0 then we would skip scanning. But io_base
    always has a value - it is set by 'ns16550_init' to a default
    value - so it would never hit the 'continue' path.
    
    This means that if we have an communication device followed by
    a serial AMT device we would pick the communication device instead
    of the AMT device.
    
    See:
    00:16.0 Communication controller: Intel Corporation Cougar Point HECI 
Controller #1 (rev 04)
            Subsystem: Intel Corporation Device 2008
            Flags: bus master, fast devsel, latency 0, IRQ 11
            Memory at fb12a000 (64-bit, non-prefetchable) [size=16]
    00:16.3 Serial controller: Intel Corporation Cougar Point KT Controller 
(rev 04) (prog-if 02 [16550])
            Subsystem: Intel Corporation Device 2008
            Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 17
            I/O ports at f0e0 [size=8]
            Memory at fb129000 (32-bit, non-prefetchable) [size=4K]
    
    pci 0000:00:16.0: [8086:1c3a] type 00 class 0x078000
    pci 0000:00:16.3: [8086:1c3d] type 00 class 0x070002
    
    And Xen picks 00:16.0 as its console when using 'com1=115200,8n1,amt'.
    
    This patch fixes it and allows us to use AMT again by zeroing
    out io_base to zero. If the scan did not work, the io_base is
    set back to a default value (the 'pci_uart_config' does that
    already at its end).
    
    Tested-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@xxxxxxx>
    CC: Suravee Suthikulpanit <Suravee.Suthikulpanit@xxxxxxx>
    CC: Thomas Lendacky <Thomas.Lendacky@xxxxxxx>
    CC: Keir Fraser <keir@xxxxxxx>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
---
 xen/drivers/char/ns16550.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c
index 53e49a1..2fded08 100644
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -616,6 +616,7 @@ pci_uart_config (struct ns16550 *uart, int skip_amt, int 
bar_idx)
     unsigned int b, d, f, nextf, i;
     u16 vendor, device;
 
+    uart->io_base = 0;
     /* NB. Start at bus 1 to avoid AMT: a plug-in card cannot be on bus 0. */
     for ( b = skip_amt ? 1 : 0; b < 0x100; b++ )
     {
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

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