I am sponsoring the following case on behalf of Judy Chen and
Wesley Shao as a fast-track, with timeout February 5, 2009.
The project desires micro/patch binding.



1. Introduction
   1.1. Project/Component Working Name:
        Remove /isa pseudo node for x86
   1.2. Name of Document Author/Supplier:
        Judy Chen
   1.3. Date of This Document:
        13 November, 2008

4. Technical Description

   4.1. Background

        The current Solaris x86 OS hard codes all ISA (non-self identi-
        fying) devices under /isa pseudo node. It has the following
        deficiencies:

        o It does not reflect the actual hardware topology.

        o It does not allow ISA devices that are capable of bus mastering
          (including 1st-party and 3rd-party DMA) to work correctly on
          virtualization platforms. To be exact, the Intel VT-d technology
          provides DMA remapping hardware that requires ISA DMA devices'
          PCI ID (bus, device, and function numbers) to be provided at
          DMA mapping request time. Since ISA device's parent is directly
          under root, such PCI ID cannot be determined by the DMA
          implementation code. The previous Intel IOMMU project
          (PSARC/2008/560) worked around this by doing handshakes via global    
          variables. 3rd parties, in this case Intel, won't be able to
          provide a DDI compliant device driver. The bus mastering capable
          ISA devices that are supported by Solaris include:
              ecpp(7D): parallel port
              fdc(7D) : floppy disk controller
              pcn(7D) : AMD PCnet-ISA ethernet controller

        o The Resource Allocator (RA), part of the current DDI Hotplug
          Framework project (PSARC/2008/181), needs to maintain certain
          PCI/ISA resources (memory/IO address space) consistently. While
          ISA devices are not under pci/isa hardware node, RA project
          would have to provide a separate set of code and interface to
          manage this disparity.

   4.2. Proposal

         This project proposes to remove /isa pseudo node and move ISA
         devices under LPC/ISA bridge on x86 platforms. The detailed changes
         are listed as below.

         o Remove /isa pseudo node. Attach isa driver with LPC/ISA bridge
           and as a result, move ISA devices' nodes under pci/isa hardware
           node.

         o Add below properties to pci/isa node according to IEEE1275
           standard.
               "device_type", "ranges"

         o Remove hard coded device path of legacy input/output devices
           from consconfig_dacf module. For example, replace the hard coded
           device path of legacy keyboard "/isa/i8042 at 1,60/keyboard at 0" 
with
           the actual one "/pci at 0,0/isa at 1f/i8042 at 1,60/keyboard at 0".

         o Remove the dependency to /used-resources from pci_autoconfig
           module.

         Currently, the pseudo node /used-resources is used to represent
         ISA resources. The ISA resources include memory/IO address spaces,
         interrupts and DMA channels. /used-resouces is created by ACPI
         when ACPI enumerates ISA devices. It is used by two modules:

         - pci_autoconfig: to setup memory/io address spaces available for
           PCI bus.

         - busra: to setup resource map for memory/io address spaces and
           interrupts available for ISA bus.

         This project will represent the ISA memory/IO address space with
         standard "ranges" property of pci/isa hardware node. And leave
         busra the consumer of /used-resources. Once the dependency between
         busra and /used-resources is addressed by the DDI Hotplug Framework
         project, /used-resources can then be removed for good.

    4.3  Benefits

        o A proper parent-child relationship permits allocation of the
          ISA resources such as DMA and interrupts in the context of
          the system's PCI resources.

        o The current iommu implementation can be simplified.

        o The ioapic interrupts can get a cleaner implementation
           as it evolves to support more complex platforms.

        o The hotplug framework can manage a hierarchical resource map.


6. Resources and Schedule

   6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:  ON
   6.5. ARC review type:  FastTrack
   6.6. ARC Exposure:  Open


Reply via email to