Hi, Bjorn Helgaas <helgaas@xxxxxxxxxx> writes: > 802b7c06adc7 replaced cns3xxx_pci_write_config(), which always used > __raw_writel() so it only did 32-bit accesses, with > pci_generic_config_write(), which uses writeb/writew/writel() > depending on the size. > > 802b7c06adc7 also converted cns3xxx_pci_read_config() from always > using __raw_readl() (a 32-bit access) to using > pci_generic_config_read32(), which also always does a 32-bit access. > > This makes me think the cnx3xxx hardware is only capable of 32-bit > accesses, and this patch should change the driver to use > pci_generic_config_write32() instead of pci_generic_config_write() in > addition to the mapping fix above. Hasn't it already been verified that the CNS3xxx can do 8-bit accesses (and probably 16-bit ones as well), and that the docs don't mention any such limitation? > I don't think hardware that only supports 32-bit PCI writes can be > quite spec-compliant (see the comments in > pci_generic_config_write32()). So (1) you may see an additional > dmesg warning when you convert to use it, and (2) it's possible that > there may still be instability related to the corruption caused by > using a 32-bit write when an 8-bit write was intended. Right. I think IDE/SATA controllers are affected, for example. -- Krzysztof Halasa Industrial Research Institute for Automation and Measurements PIAP Al. Jerozolimskie 202, 02-486 Warsaw, Poland