On Fri, Dec 06, 2019 at 08:05:22PM -0800, Your Real Name wrote:
> On Thu, Dec 05, 2019 at 06:52:46AM +0100, Gerd Hoffmann wrote:
> >   Hi,
> > 
> > > I'm ok to use Base-Class/Sub-Class = 0x07/0x00 to filter out the PCI 
> > > serial
> > > devices and choose the first one as the debug port. However, debug port 
> > > needs
> > > to be enabled early, before seabios scans PCI bus. I think we don't want
> > > to scan the pci bus by ourself in src/hw/serialio.c, but it's too late to
> > > wait for seabios to scan the bus for us. Please advice a feasible 
> > > solution.
> > 
> > You've mentioned elsewhere in the thread that the serial port is mapped
> > to the legacy 0x3f8 ioport initially.  So can we just use that before
> > the PCI scan happens?
> 
> The transition from 0x3f8 to an other IO address happened in EDK2 based BIOS,
> during the transition from PEI to DXE where the PCI bus is scanned resources
> are allocated. The first time BIOS calls to SeaBIOS, the IO address has 
> already
> been changed to a non-0x3f8 one.

So seabios will never see the iobase move.  Reading the iobase from
config space for each char printed should not be needed then.  Also:
Can't you just set CONFIG_DEBUG_SERIAL_PORT?

Failing that:  I'd suggest to create a variable for the serial port
iobase, defaulting to CONFIG_DEBUG_SERIAL_PORT.  Add a
serial_debuf_pci_init(int bdf) helper function to read the iobase from
pci config space and set that variable.

That helper can then be hooked into pci scan, or called with a
hardcoded bdf for early debug output, or both.

cheers,
  Gerd
_______________________________________________
SeaBIOS mailing list -- seabios@seabios.org
To unsubscribe send an email to seabios-le...@seabios.org

Reply via email to