[PATCH] qla2xxx: Use dword accessors for PCI_ROM_ADDRESS

From: Adam Kropelin (akropel1_at_rochester.rr.com)
Date: 09/14/05

  • Next message: Linus Torvalds: "Re: [PATCH] i386: fix stack alignment for signal handlers"
    Date:	Tue, 13 Sep 2005 19:20:02 -0400
    To: andrew.vasquez@qlogic.com
    
    

    PCI_ROM_ADDRESS is a 32 bit register and as such should be accessed
    using pci_bus_{read,write}_config_dword(). A recent audit of drivers/
    turned up several cases of byte- and word-sized accesses. The harmful
    ones were fixed by Linus directly. This patches up one of the remaining
    harmless-but-still-wrong cases caught in the dragnet.

    Signed-off-by: Adam Kropelin <akropel1@rochester.rr.com>

    --- linux-2.6.14-rc1.orig/drivers/scsi/qla2xxx/qla_init.c 2005-09-13 11:59:16.000000000 -0400
    +++ linux-2.6.14-rc1/drivers/scsi/qla2xxx/qla_init.c 2005-09-13 11:54:06.000000000 -0400
    @@ -201,6 +201,7 @@
     qla2100_pci_config(scsi_qla_host_t *ha)
     {
             uint16_t w, mwi;
    + uint32_t d;
             unsigned long flags;
             struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
     
    @@ -215,9 +216,9 @@
             pci_write_config_word(ha->pdev, PCI_COMMAND, w);
     
             /* Reset expansion ROM address decode enable */
    - pci_read_config_word(ha->pdev, PCI_ROM_ADDRESS, &w);
    - w &= ~PCI_ROM_ADDRESS_ENABLE;
    - pci_write_config_word(ha->pdev, PCI_ROM_ADDRESS, w);
    + pci_read_config_dword(ha->pdev, PCI_ROM_ADDRESS, &d);
    + d &= ~PCI_ROM_ADDRESS_ENABLE;
    + pci_write_config_dword(ha->pdev, PCI_ROM_ADDRESS, d);
     
             /* Get PCI bus information. */
             spin_lock_irqsave(&ha->hardware_lock, flags);
    @@ -237,6 +238,7 @@
     qla2300_pci_config(scsi_qla_host_t *ha)
     {
             uint16_t w, mwi;
    + uint32_t d;
             unsigned long flags = 0;
             uint32_t cnt;
             struct device_reg_2xxx __iomem *reg = &ha->iobase->isp;
    @@ -302,9 +304,9 @@
             pci_write_config_byte(ha->pdev, PCI_LATENCY_TIMER, 0x80);
     
             /* Reset expansion ROM address decode enable */
    - pci_read_config_word(ha->pdev, PCI_ROM_ADDRESS, &w);
    - w &= ~PCI_ROM_ADDRESS_ENABLE;
    - pci_write_config_word(ha->pdev, PCI_ROM_ADDRESS, w);
    + pci_read_config_dword(ha->pdev, PCI_ROM_ADDRESS, &d);
    + d &= ~PCI_ROM_ADDRESS_ENABLE;
    + pci_write_config_dword(ha->pdev, PCI_ROM_ADDRESS, d);
     
             /* Get PCI bus information. */
             spin_lock_irqsave(&ha->hardware_lock, flags);
    @@ -324,6 +326,7 @@
     qla24xx_pci_config(scsi_qla_host_t *ha)
     {
             uint16_t w, mwi;
    + uint32_t d;
             unsigned long flags = 0;
             struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
             int pcix_cmd_reg, pcie_dctl_reg;
    @@ -366,9 +369,9 @@
             }
     
             /* Reset expansion ROM address decode enable */
    - pci_read_config_word(ha->pdev, PCI_ROM_ADDRESS, &w);
    - w &= ~PCI_ROM_ADDRESS_ENABLE;
    - pci_write_config_word(ha->pdev, PCI_ROM_ADDRESS, w);
    + pci_read_config_dword(ha->pdev, PCI_ROM_ADDRESS, &d);
    + d &= ~PCI_ROM_ADDRESS_ENABLE;
    + pci_write_config_dword(ha->pdev, PCI_ROM_ADDRESS, d);
     
             /* Get PCI bus information. */
             spin_lock_irqsave(&ha->hardware_lock, flags);
    -
    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/


  • Next message: Linus Torvalds: "Re: [PATCH] i386: fix stack alignment for signal handlers"

    Relevant Pages

    • [PATCH] pciehp: Use dword accessors for PCI_ROM_ADDRESS
      ... PCI_ROM_ADDRESS is a 32 bit register and as such should be accessed ... A recent audit of drivers/ ... turned up several cases of byte- and word-sized accesses. ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • [PATCH] ibmphp: Use dword accessors for PCI_ROM_ADDRESS
      ... PCI_ROM_ADDRESS is a 32 bit register and as such should be accessed ... A recent audit of drivers/ ... turned up several cases of byte- and word-sized accesses. ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • [PATCH] shpchp: Use dword accessors for PCI_ROM_ADDRESS
      ... PCI_ROM_ADDRESS is a 32 bit register and as such should be accessed ... A recent audit of drivers/ ... turned up several cases of byte- and word-sized accesses. ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: ptrace problem on ia64 with kernel 2.4.26
      ... > ddd, and other debugging tools, which depend on ptrace system call, don't ... > modification to peek info about register r4. ... > We use the following configuration: ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: [PATCH 2.6] Altix - ioc3 serial support
      ... ports, and for console ports, it is assumed that the console code has ... >> tty_buffer_request_room is a hint to help the kernel manage buffers>> better. ... register for this. ... To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ ...
      (Linux-Kernel)