Latest Altix I/O code reorganization code

From: Patrick Gefre <pfg_at_sgi.com>
Date: 2004-08-28 01:10:01
This is an update to our last set of patches. I've added some comments from the
last review and another synopsis of the patches. The individual patches will
follow this email.

Comments from the last review:

Christoph Hellwig <hch@infradead.org> wrote:
  >>
  >> The PCIIO_ flags are designed for usage at the Device Driver layer,
  >> while the PCIBR_ flags are designed to be the actual hardware bits that needed
  >> setting.  However, with the latest code, we have deleted the PCIIO_ and
  >> PCIBR_ flags that are not used.
  >
  >
  > There still are tons that are used in the code, but never logically set from
  > the exported interfaces.

Should be gone.


  >> and tries to export
  >> the many hardware features that are available on our system.  However, not
  >> all of these features are "reachable" via the standard Linux PCI mapping
  >> interfaces.  We have removed all unreacheable features.  However, we can
  >> still support future requirements with these new interfaces when needed.
  >>
  >> Yes, we did look at your patch dated: December 4th 2003.  It was very good, but
  >
  >
  > I mean a more recent patch I sent to Colin.

That patch contains xbridge structs which don't belong in our 2.6 code.

  >+xtalk_provider_t hub_provider = {
  >> +
  >> +    (xtalk_intr_alloc_f *) sal_xtalk_intr_alloc,
  >> +    (xtalk_intr_free_f *) sal_xtalk_intr_free,
  >> +
  >> +};
  >> +
  >> +xtalk_provider_t tio_provider = {
  >> +
  >> +    (xtalk_intr_alloc_f *) sal_xtalk_intr_alloc,
  >> +    (xtalk_intr_free_f *) sal_xtalk_intr_free,
  >> +
  >> +};
  >
  >
  > you still have it in this patch.

Should be gone - the last patch was my fault - I had grabbed an older file.

We also flattened our directory structure:

$ ls -R arch/ia64/sn/ioif
arch/ia64/sn/ioif:
io_init.c  iomv.c  Makefile  pci  pci_dma.c  pci_extension.c

arch/ia64/sn/ioif/pci:
Makefile  pcibr_ate.c  pcibr_dma.c  pcibr_provider.c  pcibr_reg.c  xtalk_providers.c

Note the diffstat output - we are purging a lot of code:
   114 files changed, 4679 insertions(+), 46952 deletions(-)

We made some changes to our SAL call interface - once we get ACPI going,
we will remove all these SAL calls. EFI 1.10 and ACPI compliance will
be the next 2 phases in our development.





Patch synopsis:


We have reorganized the I/O layer in the Altix code.

We are posting this code for review before submitting for inclusion in
the 2.6 tree.

The patch set is at: ftp://oss.sgi.com/projects/sn2/sn2-update/

It is based off http://lia64.bkbits.net/linux-ia64-test-2.6.8.1


The general changes are:

I/O discovery and initialization was moved to prom to enable us to move
towards EFI 1.10 and ACPI compliance.  EFI 1.10 and ACPI compliance will
be the next 2 phases in our development.  Since prom is now performing
all I/O discovery and initialization, we had to re-architect the Altix
platform specific code in Linux - basically deleting all code related to
discovery and initialization and leaving DMA mapping which was rewritten.

Until we can implement ACPI in our prom, we will use platform specific
SAL calls to retrieve any PCI configuration that is needed during the
PCI fixup phase.


diffstat of all patches:

   arch/ia64/sn/io/Makefile                       |   13
   arch/ia64/sn/io/cdl.c                          |   79
   arch/ia64/sn/io/drivers/Makefile               |   10
   arch/ia64/sn/io/drivers/ioconfig_bus.c         |  382
   arch/ia64/sn/io/hwgfs/Makefile                 |   10
   arch/ia64/sn/io/hwgfs/hcl.c                    |  702 -
   arch/ia64/sn/io/hwgfs/hcl_util.c               |  175
   arch/ia64/sn/io/hwgfs/interface.c              |  325
   arch/ia64/sn/io/hwgfs/labelcl.c                |  656 -
   arch/ia64/sn/io/hwgfs/ramfs.c                  |  208
   arch/ia64/sn/io/io.c                           |  739 -
   arch/ia64/sn/io/machvec/Makefile               |   10
   arch/ia64/sn/io/machvec/iomv.c                 |   76
   arch/ia64/sn/io/machvec/pci.c                  |   52
   arch/ia64/sn/io/machvec/pci_bus_cvlink.c       |  909 -
   arch/ia64/sn/io/machvec/pci_dma.c              |  677 -
   arch/ia64/sn/io/platform_init/Makefile         |   10
   arch/ia64/sn/io/platform_init/sgi_io_init.c    |  174
   arch/ia64/sn/io/sn2/Makefile                   |   14
   arch/ia64/sn/io/sn2/bte_error.c                |  217
   arch/ia64/sn/io/sn2/geo_op.c                   |  311
   arch/ia64/sn/io/sn2/klconflib.c                |  572
   arch/ia64/sn/io/sn2/klgraph.c                  |  577
   arch/ia64/sn/io/sn2/l1_command.c               |  131
   arch/ia64/sn/io/sn2/ml_SN_init.c               |  109
   arch/ia64/sn/io/sn2/ml_SN_intr.c               |  320
   arch/ia64/sn/io/sn2/ml_iograph.c               |  770 -
   arch/ia64/sn/io/sn2/module.c                   |  236
   arch/ia64/sn/io/sn2/pcibr/Makefile             |   16
   arch/ia64/sn/io/sn2/pcibr/pcibr_ate.c          |  178
   arch/ia64/sn/io/sn2/pcibr/pcibr_config.c       |  195
   arch/ia64/sn/io/sn2/pcibr/pcibr_dvr.c          | 2662 ----
   arch/ia64/sn/io/sn2/pcibr/pcibr_error.c        | 1873 ---
   arch/ia64/sn/io/sn2/pcibr/pcibr_hints.c        |  175
   arch/ia64/sn/io/sn2/pcibr/pcibr_intr.c         |  700 -
   arch/ia64/sn/io/sn2/pcibr/pcibr_reg.c          |  879 -
   arch/ia64/sn/io/sn2/pcibr/pcibr_rrb.c          |  887 -
   arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c         | 1842 ---
   arch/ia64/sn/io/sn2/pciio.c                    | 1004 -
   arch/ia64/sn/io/sn2/pic.c                      |  835 -
   arch/ia64/sn/io/sn2/shub.c                     |  246
   arch/ia64/sn/io/sn2/shub_intr.c                |  259
   arch/ia64/sn/io/sn2/shuberror.c                |  822 -
   arch/ia64/sn/io/sn2/shubio.c                   |  490
   arch/ia64/sn/io/sn2/xbow.c                     | 1020 -
   arch/ia64/sn/io/sn2/xtalk.c                    |  927 -
   arch/ia64/sn/io/snia_if.c                      |  108
   arch/ia64/sn/io/xswitch.c                      |  168
   include/asm-ia64/sn/pci/bridge.h               | 1895 ---
   include/asm-ia64/sn/pci/pci_bus_cvlink.h       |   70
   include/asm-ia64/sn/pci/pci_defs.h             |  414
   include/asm-ia64/sn/pci/pcibr.h                |  535
   include/asm-ia64/sn/pci/pcibr_private.h        |  811 -
   include/asm-ia64/sn/pci/pciio.h                |  746 -
   include/asm-ia64/sn/pci/pciio_private.h        |  145
   include/asm-ia64/sn/sn2/shub_md.h              |  275
   include/asm-ia64/sn/sn2/shub_mmr_t.h           |14829 -------------------------
   include/asm-ia64/sn/sn2/sn_private.h           |  245
   include/asm-ia64/sn/xtalk/xswitch.h            |   56
   include/asm-ia64/sn/xtalk/xtalk.h              |  360
   include/asm-ia64/sn/xtalk/xtalk_private.h      |   79
   include/asm-ia64/sn/xtalk/xtalkaddrs.h         |  106
   include/asm-ia64/sn/xtalk/xwidget.h            |  240
   arch/ia64/sn/Makefile                          |    2
   arch/ia64/sn/ioif/Makefile                     |   16
   arch/ia64/sn/ioif/io_init.c                    |  438
   arch/ia64/sn/ioif/iomv.c                       |   76
   arch/ia64/sn/ioif/pci/Makefile                 |   12
   arch/ia64/sn/ioif/pci/pcibr_ate.c              |  187
   arch/ia64/sn/ioif/pci/pcibr_dma.c              |  305
   arch/ia64/sn/ioif/pci/pcibr_provider.c         |  225
   arch/ia64/sn/ioif/pci/pcibr_reg.c              |  332
   arch/ia64/sn/ioif/pci/xtalk_providers.c        |   50
   arch/ia64/sn/ioif/pci_dma.c                    |  573
   arch/ia64/sn/ioif/pci_extension.c              |   33
   arch/ia64/sn/kernel/irq.c                      |  436
   arch/ia64/sn/kernel/setup.c                    |  333
   include/asm-ia64/sn/addrs.h                    |   23
   include/asm-ia64/sn/arch.h                     |    5
   include/asm-ia64/sn/geo.h                      |   31
   include/asm-ia64/sn/hcl.h                      |   52
   include/asm-ia64/sn/intr.h                     |    2
   include/asm-ia64/sn/io.h                       |    2
   include/asm-ia64/sn/iograph.h                  |   26
   include/asm-ia64/sn/klconfig.h                 |  208
   include/asm-ia64/sn/ksys/l1.h                  |    4
   include/asm-ia64/sn/module.h                   |   55
   include/asm-ia64/sn/nodepda.h                  |   60
   include/asm-ia64/sn/pci/pcibr_provider.h       |  188
   include/asm-ia64/sn/pci/pcibus_provider_defs.h |  120
   include/asm-ia64/sn/pci/pcidev.h               |   58
   include/asm-ia64/sn/pci/pic.h                  |  360
   include/asm-ia64/sn/pci/tiocp.h                |  256
   include/asm-ia64/sn/pda.h                      |    3
   include/asm-ia64/sn/router.h                   |    7
   include/asm-ia64/sn/sgi.h                      |   23
   include/asm-ia64/sn/sn2/addrs.h                |   58
   include/asm-ia64/sn/sn2/arch.h                 |    3
   include/asm-ia64/sn/sn2/geo.h                  |    7
   include/asm-ia64/sn/sn2/intr.h                 |   29
   include/asm-ia64/sn/sn2/shub.h                 |    3
   include/asm-ia64/sn/sn2/shubio.h               | 1669 +-
   include/asm-ia64/sn/sn2/tio.h                  |   45
   include/asm-ia64/sn/sn_cpuid.h                 |    8
   include/asm-ia64/sn/sn_sal.h                   |   63
   include/asm-ia64/sn/sndrv.h                    |    1
   include/asm-ia64/sn/types.h                    |    2
   include/asm-ia64/sn/xtalk/corelet.h            |   22
   include/asm-ia64/sn/xtalk/hubdev.h             |   61
   include/asm-ia64/sn/xtalk/xbow.h               |  456
   include/asm-ia64/sn/xtalk/xbow_info.h          |    2
   include/asm-ia64/sn/xtalk/xtalk_provider.h     |   52
   include/asm-ia64/sn/xtalk/xtalk_sal.h          |   20
   include/asm-ia64/sn/xtalk/xwidgetdev.h         |   73
   114 files changed, 4679 insertions(+), 46952 deletions(-)


The patches and a short comment for each:

001-kill-files
002-kill-files
003-kill-files
004-kill-files
005-kill-files
#    contains deleted files

006-pci-fixup
#   The io_init.c file replaces the pci_bus_cvlink.c. A diff of the files
#   would not make much sense as the functionalities provided in pci_bus_cvlink.c
#   are no longer needed. The new functions needed are:
#
#        1. Getting Platform Specific Information for PCI Buses/Devices.
#        2. Getting Hardware Workaround Information.
#        3. Getting I/O Hub Information.
#
#   The io_init.c file basically contains all the routines that are needed to
#   allow a PCI Device Driver to perform Interrupts, PIOs and DMAs.

007-pci-support
#   There are some minor changes in these files. The biggest change is that we have
#   broken up the SN Platform Specific DMA mapping interfaces into 3 different
#   routines:
#
#        1.  32Bit Direct Mapping.
#        2.  32Bit PMU Mapping.
#        3.  64Bit Direct Mapping.
#
#   The SN Platform has 3 different PCI/PCIX Bridges. They are not all exactly the
#   same, however they do provide the same functionality. We have abstracted
#   the DMA mapping calls so that the caller will not have to be aware of the
#   hardware differences. Example:
#
#        *dma_handle = (*provider->dmatrans_direct64)(pcidev_info, phys_addr,
#                                  PCIIO_DMA_CMD | PCIIO_DMA_A64);
#
#   The Bus Driver for this card, determines the appropriate method.
#

008-pci-bridge-drivers-new
009-pci-bridge-drivers-kill
010-pci-bridge-drivers-new
#   This set of new files supports 2 of our 3 PCI Bridges, PIC and TIOCP.

011-misc-sources
#   code cleanup
#   ran thru Lindent
#   changes needed for new I/O structure

012-new-includes-pci
013-new-includes-xtalk
#   New includes with definitions for PCI devices, buses, and I/O hubs

014-include-changes
015-include-changes
016-include-changes
017-include-changes
#   code cleanup
#   misc changes needed for new I/O structure

018-new-include-tio
#   New include for TIO defs

019-kill-hwgraph
#   kill the hwgraph code

020-kill-files
#   more file zapping

021-Makefile-cleanup
#   fix upper level Makefile for new directory

022-Makefile-killing
023-pci-include-killing
024-sn2-include-killing
025-new-include-tiocp
026-xtalk-include-killing
#   more file purging - add one new include for tiocp

-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Fri Aug 27 11:15:21 2004

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:30 EST