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

Re: [Xen-devel] [PATCH] serial: Skip over PCIe device which have no quirks (fix AMT regression).



On Mar 5, 2014 5:46 PM, Aravind Gopalakrishnan <aravind.gopalakrishnan@xxxxxxx> 
wrote:
>
> On 3/5/2014 3:09 PM, Konrad Rzeszutek Wilk wrote: 
> > 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. 
>
> If you provide 'amt' on command line => 'skip_amt' = 0 
> Then we'd just return -1 without setting io_base to 0x3f8 due to this 
> condition- 
> if ( !skip_amt ) 
> ÂÂÂ return -1; 
>
> (or am I missing something?)

That particular piece of code is executed after the loop. In the loop is where 
the AMT is found.
>
> > 
> > diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c 
> > index 487bf7d..9f87018 100644 
> > --- a/xen/drivers/char/ns16550.c 
> > +++ b/xen/drivers/char/ns16550.c 
> > @@ -829,6 +829,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; 
>
> Why not set ns16550.io_base = 0; in arch/x86/setup.c ?

Because then you would break the default COM ports which are not find via PCI 
scanning.

Say: com1=9600,8n1

Which will use by default the 3f8 io base.
> AFAICT, ns16550.c is the only one that uses ns16550_defaults structure, 
> so it should be safe.. 
>
>
> Thanks, 
> -Aravind. 
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

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