| From df057c914a9c219ac8b8ed22caf7da2f80c1fe26 Mon Sep 17 00:00:00 2001 |
| From: Niklas Schnelle <schnelle@linux.ibm.com> |
| Date: Thu, 27 Feb 2020 12:17:18 +0100 |
| Subject: s390/pci: Fix unexpected write combine on resource |
| |
| From: Niklas Schnelle <schnelle@linux.ibm.com> |
| |
| commit df057c914a9c219ac8b8ed22caf7da2f80c1fe26 upstream. |
| |
| In the initial MIO support introduced in |
| |
| commit 71ba41c9b1d9 ("s390/pci: provide support for MIO instructions") |
| |
| zpci_map_resource() and zpci_setup_resources() default to using the |
| mio_wb address as the resource's start address. This means users of the |
| mapping, which includes most drivers, will get write combining on PCI |
| Stores. This may lead to problems when drivers expect write through |
| behavior when not using an explicit ioremap_wc(). |
| |
| Cc: stable@vger.kernel.org |
| Fixes: 71ba41c9b1d9 ("s390/pci: provide support for MIO instructions") |
| Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com> |
| Reviewed-by: Pierre Morel <pmorel@linux.ibm.com> |
| Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/s390/pci/pci.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/arch/s390/pci/pci.c |
| +++ b/arch/s390/pci/pci.c |
| @@ -424,7 +424,7 @@ static void zpci_map_resources(struct pc |
| |
| if (zpci_use_mio(zdev)) |
| pdev->resource[i].start = |
| - (resource_size_t __force) zdev->bars[i].mio_wb; |
| + (resource_size_t __force) zdev->bars[i].mio_wt; |
| else |
| pdev->resource[i].start = (resource_size_t __force) |
| pci_iomap_range_fh(pdev, i, 0, 0); |
| @@ -531,7 +531,7 @@ static int zpci_setup_bus_resources(stru |
| flags |= IORESOURCE_MEM_64; |
| |
| if (zpci_use_mio(zdev)) |
| - addr = (unsigned long) zdev->bars[i].mio_wb; |
| + addr = (unsigned long) zdev->bars[i].mio_wt; |
| else |
| addr = ZPCI_ADDR(entry); |
| size = 1UL << zdev->bars[i].size; |