RE: [PATCH v6 03/12] intel-ipu3: mmu: Implement driver

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

 



Hi, Tomasz,

Thanks for the code review.

> -----Original Message-----
> From: Tomasz Figa [mailto:tfiga@xxxxxxxxxxxx]
> Sent: Sunday, June 17, 2018 11:46 PM
> To: Zhi, Yong <yong.zhi@xxxxxxxxx>
> Cc: Linux Media Mailing List <linux-media@xxxxxxxxxxxxxxx>; Sakari Ailus
> <sakari.ailus@xxxxxxxxxxxxxxx>; Mani, Rajmohan
> <rajmohan.mani@xxxxxxxxx>; Toivonen, Tuukka
> <tuukka.toivonen@xxxxxxxxx>; Hu, Jerry W <jerry.w.hu@xxxxxxxxx>; Zheng,
> Jian Xu <jian.xu.zheng@xxxxxxxxx>
> Subject: Re: [PATCH v6 03/12] intel-ipu3: mmu: Implement driver
> 
> On Fri, Mar 30, 2018 at 11:15 AM Yong Zhi <yong.zhi@xxxxxxxxx> wrote:
> >
> > From: Tomasz Figa <tfiga@xxxxxxxxxxxx>
> >
> > This driver translates IO virtual address to physical address based on
> > two levels page tables.
> >
> > Signed-off-by: Tomasz Figa <tfiga@xxxxxxxxxxxx>
> > Signed-off-by: Yong Zhi <yong.zhi@xxxxxxxxx>
> > ---
> >  drivers/media/pci/intel/ipu3/ipu3-mmu.c | 560
> > ++++++++++++++++++++++++++++++++
> > drivers/media/pci/intel/ipu3/ipu3-mmu.h |  28 ++
> >  2 files changed, 588 insertions(+)
> >  create mode 100644 drivers/media/pci/intel/ipu3/ipu3-mmu.c
> >  create mode 100644 drivers/media/pci/intel/ipu3/ipu3-mmu.h
> >
> > diff --git a/drivers/media/pci/intel/ipu3/ipu3-mmu.c
> > b/drivers/media/pci/intel/ipu3/ipu3-mmu.c
> > new file mode 100644
> > index 000000000000..a4b3e1680bbb
> > --- /dev/null
> > +++ b/drivers/media/pci/intel/ipu3/ipu3-mmu.c
> > @@ -0,0 +1,560 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright (c) 2018 Intel Corporation.
> > + * Copyright (C) 2018 Google, Inc.
> 
> I followed wrong guide when adding this one. Could you fix it up to the
> following?
> 
> Copyright 2018 Google LLC.
> 

Sure, will do.

> [snip]
> > +/**
> > + * ipu3_mmu_exit() - clean up IPU3 MMU block
> > + * @mmu: IPU3 MMU private data
> > + */
> > +void ipu3_mmu_exit(struct ipu3_mmu_info *info) {
> > +       struct ipu3_mmu *mmu = to_ipu3_mmu(info);
> > +
> > +       /* We are going to free our page tables, no more memory access. */
> > +       ipu3_mmu_set_halt(mmu, true);
> > +       ipu3_mmu_tlb_invalidate(mmu);
> > +
> > +       ipu3_mmu_free_page_table(mmu->l1pt);
> > +       vfree(mmu->l2pts);
> > +       ipu3_mmu_free_page_table(mmu->dummy_l2pt);
> > +       kfree(mmu->dummy_page);
> 
> Should be free_page(). (Might be already included in your tree as per
> https://chromium-
> review.googlesource.com/c/chromiumos/third_party/kernel/+/1084522)
> 

Yes, will add above fix to next upstream version. 

> > +       kfree(mmu);
> > +}
> > +
> > +void ipu3_mmu_suspend(struct ipu3_mmu_info *info) {
> > +       struct ipu3_mmu *mmu = to_ipu3_mmu(info);
> > +
> > +       ipu3_mmu_set_halt(mmu, true);
> > +}
> > +
> > +void ipu3_mmu_resume(struct ipu3_mmu_info *info) {
> > +       struct ipu3_mmu *mmu = to_ipu3_mmu(info);
> > +       u32 pteval;
> > +
> > +       ipu3_mmu_set_halt(mmu, true);
> > +
> > +       pteval = IPU3_ADDR2PTE(virt_to_phys(mmu->l1pt));
> > +       writel(pteval, mmu->base + REG_L1_PHYS);
> > +
> > +       ipu3_mmu_tlb_invalidate(mmu);
> > +       ipu3_mmu_set_halt(mmu, false); }
> > diff --git a/drivers/media/pci/intel/ipu3/ipu3-mmu.h
> > b/drivers/media/pci/intel/ipu3/ipu3-mmu.h
> > new file mode 100644
> > index 000000000000..4976187c18f6
> > --- /dev/null
> > +++ b/drivers/media/pci/intel/ipu3/ipu3-mmu.h
> > @@ -0,0 +1,28 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/* Copyright (C) 2018 Intel Corporation */
> > +/* Copyright (C) 2018 Google, Inc. */
> > +
> > +#ifndef __IPU3_MMU_H
> > +#define __IPU3_MMU_H
> > +
> > +struct ipu3_mmu_info {
> > +       dma_addr_t aperture_start; /* First address that can be mapped
> */
> > +       dma_addr_t aperture_end;   /* Last address that can be mapped
> */
> > +       unsigned long pgsize_bitmap;    /* Bitmap of page sizes in use */
> 
> If documenting the fields, why not use a kerneldoc comment above the
> struct instead?
> 

Ack.

> Best regards,
> Tomasz




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux