Re: [PATCH] PCI/portdrv: Set master earlier

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



[+cc Yinghai]

On Wed, Oct 9, 2013 at 8:33 AM, Jean Delvare <jdelvare@xxxxxxx> wrote:
> Since kernel 3.12-rc3, I get the following warning messages at boot:
> pcieport 0000:00:07.0: driver skip pci_set_master, fix it!
> pcieport 0000:00:01.0: driver skip pci_set_master, fix it!

cf3e1feba7f9 ("PCI: Workaround missing pci_set_master in pci drivers")
added this warning and, at the same time, turned on bus mastering.

There didn't seem to be any reason for the warning and no reason why
bus mastering should be enabled in the driver rather than the core, so
fbeeb822f6f4 ("PCI: Drop warning about drivers that don't use
pci_set_master()") just dropped the warning.

This should resolve the problem, so I don't think there's a need for
this patch.  Let me know if otherwise.

Bjorn

> These are:
> 00:01.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 1 (rev 13)
> 00:07.0 PCI bridge: Intel Corporation 5520/5500/X58 I/O Hub PCI Express Root Port 7 (rev 13)
>
> Calling pci_set_master() immediately after pci_enable_device() makes
> the warning messages go away.
>
> Signed-off-by: Jean Delvare <jdelvare@xxxxxxx>
> Cc: Bjorn Helgaas <bhelgaas@xxxxxxxxxx>
> ---
> Please note that I am far from certain that this is the correct fix.
> Another approach would be to disable the device if
> get_port_device_capability() returns no capabilities. I suppose the
> device would then be re-enabled later if really needed. What's the best
> approach?
>
>  drivers/pci/pcie/portdrv_core.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- linux-3.12-rc4.orig/drivers/pci/pcie/portdrv_core.c 2013-09-24 00:41:09.000000000 +0200
> +++ linux-3.12-rc4/drivers/pci/pcie/portdrv_core.c      2013-10-09 15:43:54.205943783 +0200
> @@ -366,13 +366,13 @@ int pcie_port_device_register(struct pci
>         status = pci_enable_device(dev);
>         if (status)
>                 return status;
> +       pci_set_master(dev);
>
>         /* Get and check PCI Express port services */
>         capabilities = get_port_device_capability(dev);
>         if (!capabilities)
>                 return 0;
>
> -       pci_set_master(dev);
>         /*
>          * Initialize service irqs. Don't use service devices that
>          * require interrupts if there is no way to generate them.
>
>
> --
> Jean Delvare
> Suse L3 Support
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux