David, Jerry and the project team worked offline and we have revised
the man pages for quiesce(9E).

============================================================================
Driver Entry Points                                    quiesce(9E)


NAME
     quiesce - quiesce a device

SYNOPSIS
     #include <sys/ddi.h>
     #include <sys/sunddi.h>

     int prefix quiesce(dev_info_t dip);

     int ddi_no_quiesce(dev_info_t *dip);

     int ddi_quiesce_not_supported(dev_info_t *dip);


INTERFACE LEVEL
     Solaris DDI specific (Solaris DDI)

PARAMETERS
     dip    A pointer to the device's dev_info structure.

DESCRIPTION
     The quiesce() function quiesces a device so that the device will
     no longer generate interrupts or modify or access memory.  The
     driver should reset the device to a hardware state from which the
     device can be correctly configured by the driver's attach()
     routine without a system power cycle or being configured by the
     firmware.  For devices with a defined reset state configuration,
     the driver should return that device to that state as part of the
     quiesce operation.  One such use case is Fast Reboot where
     firmware is bypassed when booting to a new OS image.

     Quiesce() is only called for an attached device instance as one of
     the final operations of a reboot sequence, and no other thread can
     be active for this device.  The system guarantees that no other
     driver entry point will be active or invoked quiesce() is
     invoked.  The system also guarantees that no timeout or taskq will
     be invoked.  The system is single-threaded and not preemptable or
     interrupted, therefore the driver's quiesce() implementation must
     not use locks or timeouts or rely on them being called.  The
     driver must discard all outstanding I/O instead of waiting for
     completion.  By conclusion of the quiesce() operation, the driver
     must guarantee that device will not generate further access to
     memory or interrupts.

     The only DDI interfaces that can be called by the quiesce()
     implementation are the ddi_get*(9F) and ddi_put*(9F) functions.
     The driver must not create or tear down mappings, or call FMA
     functions, or create/cancel callbacks.

     If quiesce() determines a particular instance of the device cannot
     be quiesced when requested because of some exceptional condition,
     quiesce() must return DDI_FAILURE.  This should almost never
     happen.

     If a driver has previously implemented the obsolete reset()
     interface, its functionality must be merged into quiesce().  The
     driver's reset() routine will no longer be called if an
     implementation of quiesce() is present.

     ddi_no_quiesce() always returns DDI_SUCCESS.  A driver can set its
     devo_quiesce device function to ddi_no_quiesce() to indicate that
     the device it manages does not need to be quiesced.

     ddi_quiesce_not_supported() always returns DDI_FAILURE.  A driver
     can set its devo_quiesce device function to
     ddi_quiesce_not_supported() to indicate that either the device
     cannot be quiesced, or quiesce() has not been implemented.

RETURN VALUES
     DDI_SUCCESS    For quiesce(), the device has been successfully
                    quiesced.

     DDI_FAILURE    The operation failed.


CONTEXT
     This function is called from kernel context only.

ATTRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:



     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Interface Stability         | Committed                   |
    |_____________________________|_____________________________|


SEE ALSO
     attach(9E), detach(9E), ddi_add_intr(9F), ddi_map_regs(9F),
     pci_config_setup(9F), ddi_get8(9F), ddi_put8(9F),
     ddi_no_quiesce(9F), ddi_quiesce_not_supported(9F), dev_ops(9S),
     timeout(9F), reboot(1M), uadmin(1M), uadmin(2), 

============================================================================

Please review and send me additional comments, and I will revise it
further.

Thanks,
Sherry
-- 
Sherry Moore, Solaris Core Kernel       http://blogs.sun.com/sherrym

Reply via email to