tech-kern archive

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

Re: MI overrides of bus_dma(9), bus_space(9), pci(9)

On Mar 11, 2010, at 11:40 AM, David Young wrote:

> On Wed, Mar 10, 2010 at 11:35:42PM +0900, Izumi Tsutsui wrote:
>>> MI overrides of bus_space(9) and bus_dma(9) will work analogously to the
>>> above.
>> - Are those overrides mandatory or optional?
> They're mandatory on platforms where there is a PCI bus.

I don't see the point to this.

>> - Could you show specific examples of exceptions, resouce management
>>  for bus_space(9) and bus_dma(9) too?
> Exceptions: we can trap PCI exceptions, isolate the device that produced
>    the exception, log the exception and/or resolve it.  For example, we
>    can provide bus_space_{peek,poke}_{1,2,4,8}(9), or we can ascribe an
>    exception to a particular device, notify or deactivate its driver.
>    Likewise, we can ascribe memory-access violations (such as an IOMMU
>    may trap) to a particular bus master, and notify or deactivate the
>    bus master's driver.
> Resource management:
>    PCI-* bridges can override bus_space_alloc(9)/bus_space_free(9)
>        in order to (1) allocate space from the upstream bus, (2)
>        widen/narrow its I/O- or memory-space window.  Then we can
>        provide a reliable rbus-like facility to detachable buses
>        through bus_space(9).

bus_dma_subregion can be used for that.  So bus_space_subregion.

>> - How much performance impact is expected for bus_space(9) changes
>>  on ports that use macro for access functions?
> I have surveyed bus_space_{read,write}_{1,2,4}(9) implementations.  Here
> are the the architectures where I think performance may get worse---I
> put archs without PCI in [brackets]:
>        arc, sh3, sparc64, [x68k]: an inline function accesses the space
>            directly.
>        cobalt, [luna68k], [mvme68k], [news68k], [newsmips], [next68k],
>            [pmax][**], [vax], [sun68k], ia64: a macro accesses the
>            space directly.
> Performance may or may not get worse:
>        [hp300]: a macro tests for a function pointer and either makes
>            an indirect function call or accesses the space directly.
> Performance will probably NOT get worse:
>        algor, alpha, [amiga], [amigappc], arm, atari, dreamcast,
>            ews4800mips, hp700, hpcmips, [hpcsh], [mac68k], powerpc,
>            landisk, mips: a macro makes an indirect function call
>        amd64, i386, sgimips: a function call.
>        sparc[*]: an inline subroutine makes an indirect function call
> Let me know if I missed any architecture.
> I think that we should switch to MI bus_space_tag on all architectures
> that have PCI, and see how it affects performance on arc, sh3, sparc64,
> and cobalt.

Personally, I don't think it's needed at all.

Home | Main Index | Thread Index | Old Index