OSDN Git Service

powerpc/ps3: Set driver coherent_dma_mask
authorGeoff Levand <geoff@infradead.org>
Wed, 18 Jul 2018 22:08:33 +0000 (15:08 -0700)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 20 Jul 2018 02:50:37 +0000 (12:50 +1000)
Set the coherent_dma_mask for the PS3 ehci, ohci, and snd devices.

Silences WARN_ON_ONCE messages emitted by the dma_alloc_attrs() routine.

Reported-by: Fredrik Noring <noring@nocrew.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
drivers/usb/host/ehci-ps3.c
drivers/usb/host/ohci-ps3.c
sound/ppc/snd_ps3.c

index 8c73349..454d8c6 100644 (file)
@@ -86,7 +86,7 @@ static int ps3_ehci_probe(struct ps3_system_bus_device *dev)
        int result;
        struct usb_hcd *hcd;
        unsigned int virq;
-       static u64 dummy_mask = DMA_BIT_MASK(32);
+       static u64 dummy_mask;
 
        if (usb_disabled()) {
                result = -ENODEV;
@@ -131,7 +131,9 @@ static int ps3_ehci_probe(struct ps3_system_bus_device *dev)
                goto fail_irq;
        }
 
-       dev->core.dma_mask = &dummy_mask; /* FIXME: for improper usb code */
+       dummy_mask = DMA_BIT_MASK(32);
+       dev->core.dma_mask = &dummy_mask;
+       dma_set_coherent_mask(&dev->core, dummy_mask);
 
        hcd = usb_create_hcd(&ps3_ehci_hc_driver, &dev->core, dev_name(&dev->core));
 
index 20a23d7..395f9d3 100644 (file)
@@ -69,7 +69,7 @@ static int ps3_ohci_probe(struct ps3_system_bus_device *dev)
        int result;
        struct usb_hcd *hcd;
        unsigned int virq;
-       static u64 dummy_mask = DMA_BIT_MASK(32);
+       static u64 dummy_mask;
 
        if (usb_disabled()) {
                result = -ENODEV;
@@ -115,7 +115,9 @@ static int ps3_ohci_probe(struct ps3_system_bus_device *dev)
                goto fail_irq;
        }
 
-       dev->core.dma_mask = &dummy_mask; /* FIXME: for improper usb code */
+       dummy_mask = DMA_BIT_MASK(32);
+       dev->core.dma_mask = &dummy_mask;
+       dma_set_coherent_mask(&dev->core, dummy_mask);
 
        hcd = usb_create_hcd(&ps3_ohci_hc_driver, &dev->core, dev_name(&dev->core));
 
index 36f34f4..abe031c 100644 (file)
@@ -930,6 +930,7 @@ static int snd_ps3_driver_probe(struct ps3_system_bus_device *dev)
 {
        int i, ret;
        u64 lpar_addr, lpar_size;
+       static u64 dummy_mask;
 
        if (WARN_ON(!firmware_has_feature(FW_FEATURE_PS3_LV1)))
                return -ENODEV;
@@ -970,6 +971,10 @@ static int snd_ps3_driver_probe(struct ps3_system_bus_device *dev)
                goto clean_mmio;
        }
 
+       dummy_mask = DMA_BIT_MASK(32);
+       dev->core.dma_mask = &dummy_mask;
+       dma_set_coherent_mask(&dev->core, dummy_mask);
+
        snd_ps3_audio_set_base_addr(dev->d_region->bus_addr);
 
        /* CONFIG_SND_PS3_DEFAULT_START_DELAY */