lkml.org 
[lkml]   [2006]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] Fix PCI error token awkward value
    linas@austin.ibm.com (Linas Vepstas) wrote:
    >
    >
    >
    > The pci channel state token currently has a poor choice of values;
    > there are two ways of indicating that "everything's OK": 0 and 1.
    > This is a bit of a burden.
    >
    > If a devce driver wants to check if the pci channel is in a working
    > or a disconnected state, the driver writer must perform checks similar
    > to
    >
    > if((pdev->error_state != 0) &&
    > (pdev->error_state != pci_channel_io_normal)) {
    > whatever();
    > }
    >
    > which is rather akward. The first check is needed because
    > stuct pci_dev is inited to all-zeros. The scond is needed
    > because the error recovery will set the state to
    > pci_channel_io_normal (which is not zero).
    >
    > This patch fixes this awkwardness.
    >

    eww.

    >
    > Index: linux-2.6.17-mm3/include/linux/pci.h
    > ===================================================================
    > --- linux-2.6.17-mm3.orig/include/linux/pci.h 2006-06-27 11:39:16.000000000 -0500
    > +++ linux-2.6.17-mm3/include/linux/pci.h 2006-07-06 15:15:09.000000000 -0500
    > @@ -85,7 +85,7 @@ typedef unsigned int __bitwise pci_chann
    >
    > enum pci_channel_state {
    > /* I/O channel is in normal state */
    > - pci_channel_io_normal = (__force pci_channel_state_t) 1,
    > + pci_channel_io_normal = (__force pci_channel_state_t) 0,
    >
    > /* I/O to channel is blocked */
    > pci_channel_io_frozen = (__force pci_channel_state_t) 2,

    It needs a comment to prevent people from breaking it in the future, and
    to help people who are trying to work out why the heck the kernel is
    looking for a particular state in something which hasn't been set to that
    state.

    Also, it's a bit odd that we've gone and left a hole in the enum space.


    Wouldn't it be better to sort out our initialisation so we don't actually
    need this memset-equals-pci_channel_io_normal trick? pci_scan_device()
    looks like a good place..
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-07-07 00:21    [W:0.025 / U:0.360 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site