lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Tue, 5 Dec 2017 11:51:08 -0500
From:   Jon Mason <jdmason@...zu.us>
To:     Serge Semin <fancer.lancer@...il.com>
Cc:     Dave Jiang <dave.jiang@...el.com>,
        "Hubbe, Allen" <Allen.Hubbe@....com>,
        "S-k, Shyam-sundar" <Shyam-sundar.S-k@....com>,
        "Yu, Xiangliang" <Xiangliang.Yu@....com>,
        Gary R Hook <gary.hook@....com>, Sergey.Semin@...latforms.ru,
        linux-ntb <linux-ntb@...glegroups.com>,
        linux-kernel <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v2 02/15] NTB: Set dma mask and dma coherent mask to NTB devices

On Sun, Dec 3, 2017 at 2:17 PM, Serge Semin <fancer.lancer@...il.com> wrote:
> The dma_mask and dma_coherent_mask fields of the NTB struct device
> weren't initialized in hardware drivers. In fact it should be done
> instead of PCIe interface usage, since NTB clients are supposed to
> use NTB API only and left unaware of real hardware implementation.
> In addition to that ntb_device_register() method shouldn't clear
> the passed ntb_dev structure, since it dma_mask is initialized
> by hardware drivers.

This seems like a bug fix.  Should this be broken out of this patch or
is it not noticed without your changes?

Thanks,
Jon

> Signed-off-by: Serge Semin <fancer.lancer@...il.com>
> ---
>  drivers/ntb/hw/amd/ntb_hw_amd.c     | 4 ++++
>  drivers/ntb/hw/idt/ntb_hw_idt.c     | 8 +++++++-
>  drivers/ntb/hw/intel/ntb_hw_intel.c | 4 ++++
>  drivers/ntb/ntb.c                   | 1 -
>  4 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
> index f0788aae05c9..3cfa46876239 100644
> --- a/drivers/ntb/hw/amd/ntb_hw_amd.c
> +++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
> @@ -1020,6 +1020,10 @@ static int amd_ntb_init_pci(struct amd_ntb_dev *ndev,
>                         goto err_dma_mask;
>                 dev_warn(&pdev->dev, "Cannot DMA consistent highmem\n");
>         }
> +       rc = dma_coerce_mask_and_coherent(&ndev->ntb.dev,
> +                                         dma_get_mask(&pdev->dev));
> +       if (rc)
> +               goto err_dma_mask;
>
>         ndev->self_mmio = pci_iomap(pdev, 0, 0);
>         if (!ndev->self_mmio) {
> diff --git a/drivers/ntb/hw/idt/ntb_hw_idt.c b/drivers/ntb/hw/idt/ntb_hw_idt.c
> index 6fb87c0f0d97..d87dbd4bc82c 100644
> --- a/drivers/ntb/hw/idt/ntb_hw_idt.c
> +++ b/drivers/ntb/hw/idt/ntb_hw_idt.c
> @@ -2426,7 +2426,7 @@ static int idt_init_pci(struct idt_ntb_dev *ndev)
>         struct pci_dev *pdev = ndev->ntb.pdev;
>         int ret;
>
> -       /* Initialize the bit mask of DMA */
> +       /* Initialize the bit mask of PCI/NTB DMA */
>         ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(64));
>         if (ret != 0) {
>                 ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
> @@ -2447,6 +2447,12 @@ static int idt_init_pci(struct idt_ntb_dev *ndev)
>                 dev_warn(&pdev->dev,
>                         "Cannot set consistent DMA highmem bit mask\n");
>         }
> +       ret = dma_coerce_mask_and_coherent(&ndev->ntb.dev,
> +                                          dma_get_mask(&pdev->dev));
> +       if (ret != 0) {
> +               dev_err(&pdev->dev, "Failed to set NTB device DMA bit mask\n");
> +               return ret;
> +       }
>
>         /*
>          * Enable the device advanced error reporting. It's not critical to
> diff --git a/drivers/ntb/hw/intel/ntb_hw_intel.c b/drivers/ntb/hw/intel/ntb_hw_intel.c
> index 4de074a86073..ea6c82f8655f 100644
> --- a/drivers/ntb/hw/intel/ntb_hw_intel.c
> +++ b/drivers/ntb/hw/intel/ntb_hw_intel.c
> @@ -2586,6 +2586,10 @@ static int intel_ntb_init_pci(struct intel_ntb_dev *ndev, struct pci_dev *pdev)
>                         goto err_dma_mask;
>                 dev_warn(&pdev->dev, "Cannot DMA consistent highmem\n");
>         }
> +       rc = dma_coerce_mask_and_coherent(&ndev->ntb.dev,
> +                                         dma_get_mask(&pdev->dev));
> +       if (rc)
> +               goto err_dma_mask;
>
>         ndev->self_mmio = pci_iomap(pdev, 0, 0);
>         if (!ndev->self_mmio) {
> diff --git a/drivers/ntb/ntb.c b/drivers/ntb/ntb.c
> index 03b80d89b980..79e50a5f8902 100644
> --- a/drivers/ntb/ntb.c
> +++ b/drivers/ntb/ntb.c
> @@ -112,7 +112,6 @@ int ntb_register_device(struct ntb_dev *ntb)
>
>         init_completion(&ntb->released);
>
> -       memset(&ntb->dev, 0, sizeof(ntb->dev));
>         ntb->dev.bus = &ntb_bus;
>         ntb->dev.parent = &ntb->pdev->dev;
>         ntb->dev.release = ntb_dev_release;
> --
> 2.12.0
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ