Linux ATA/IDE development
 help / color / mirror / Atom feed
* [PATCH v2 tip/core/rcu 08/10] drivers/ata: Replace spin_unlock_wait() with lock/unlock pair
From: Paul E. McKenney @ 2017-07-31 22:58 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, fweisbec, oleg,
	Paul E. McKenney, linux-ide, Will Deacon, Alan Stern,
	Andrea Parri, Linus Torvalds
In-Reply-To: <20170731225754.GB2674@linux.vnet.ibm.com>

There is no agreed-upon definition of spin_unlock_wait()'s semantics,
and it appears that all callers could do just as well with a lock/unlock
pair.  This commit therefore eliminates the spin_unlock_wait() call and
associated else-clause and hoists the then-clause's lock and unlock out of
the "if" statement.  This should be safe from a performance perspective
because according to Tejun there should be few if any drivers that don't
set their own error handler.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: <linux-ide@vger.kernel.org>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Andrea Parri <parri.andrea@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
---
 drivers/ata/libata-eh.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index b70bcf6d2914..b325db27eb8c 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -645,12 +645,11 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,
 	 * completions are honored.  A scmd is determined to have
 	 * timed out iff its associated qc is active and not failed.
 	 */
+	spin_lock_irqsave(ap->lock, flags);
 	if (ap->ops->error_handler) {
 		struct scsi_cmnd *scmd, *tmp;
 		int nr_timedout = 0;
 
-		spin_lock_irqsave(ap->lock, flags);
-
 		/* This must occur under the ap->lock as we don't want
 		   a polled recovery to race the real interrupt handler
 
@@ -700,12 +699,11 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,
 		if (nr_timedout)
 			__ata_port_freeze(ap);
 
-		spin_unlock_irqrestore(ap->lock, flags);
 
 		/* initialize eh_tries */
 		ap->eh_tries = ATA_EH_MAX_TRIES;
-	} else
-		spin_unlock_wait(ap->lock);
+	}
+	spin_unlock_irqrestore(ap->lock, flags);
 
 }
 EXPORT_SYMBOL(ata_scsi_cmd_error_handler);
-- 
2.5.2

^ permalink raw reply related

* (unknown), 
From: robert.berry @ 2017-07-31 18:00 UTC (permalink / raw)
  To: linux-ide

[-- Attachment #1: EMAIL_19786452607897_linux-ide.zip --]
[-- Type: application/zip, Size: 2619 bytes --]

^ permalink raw reply

* [GIT PULL] libata fixes for v4.13-rc3
From: Tejun Heo @ 2017-07-31 15:21 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-ide, linux-kernel

Hello, Linus.

libata fixes for v4.13-rc3.  Dan found a really old bug where libata
hotplug code wasn't sanitizing index value from userland and may end
up indexing with a negative number.  It is scary but fortunately can
only be triggered by root.  Other than that, minor fixes.

The following changes since commit af3c8d98508d37541d4bf57f13a984a7f73a328c:

  Merge tag 'drm-for-v4.13' of git://people.freedesktop.org/~airlied/linux (2017-07-09 18:48:37 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git for-4.13-fixes

for you to fetch changes up to 2f60e1ab2f0e148e82cb53c539ad003ffc9b9bd0:

  libata: fix a couple of doc build warnings (2017-07-31 08:03:06 -0700)

----------------------------------------------------------------
Arnd Bergmann (1):
      ata: fix gemini Kconfig dependencies

Damien Le Moal (1):
      libata: Cleanup ata_read_log_page()

Dan Carpenter (1):
      libata: array underflow in ata_find_dev()

Jonathan Corbet (1):
      libata: fix a couple of doc build warnings

Kefeng Wang (1):
      libata: remove unused rc in ata_eh_handle_port_resume

Simon Horman (1):
      ata: sata_rcar: add gen[23] fallback compatibility strings

 Documentation/devicetree/bindings/ata/sata_rcar.txt | 14 +++++++++++---
 drivers/ata/Kconfig                                 |  4 ++--
 drivers/ata/libata-core.c                           |  6 +++---
 drivers/ata/libata-eh.c                             |  7 +++----
 drivers/ata/libata-scsi.c                           |  6 ++++--
 drivers/ata/sata_rcar.c                             |  8 ++++++++
 include/linux/libata.h                              |  2 +-
 7 files changed, 32 insertions(+), 15 deletions(-)

-- 
tejun

^ permalink raw reply

* Re: [PATCH] libata: fix a couple of doc build warnings
From: Tejun Heo @ 2017-07-31 15:03 UTC (permalink / raw)
  To: Jonathan Corbet; +Cc: linux-ide
In-Reply-To: <20170730161604.16e00c29@lwn.net>

On Sun, Jul 30, 2017 at 04:16:04PM -0600, Jonathan Corbet wrote:
> The kerneldoc comments for a couple of functions in drivers/ata/libata-eh.c
> had fallen behind the current implementation, resulting in these doc build
> warnings:
> 
>   ./drivers/ata/libata-eh.c:1449: warning: No description found for parameter 'link'
>   ./drivers/ata/libata-eh.c:1449: warning: Excess function parameter 'ap' description in 'ata_eh_done'
>   ./drivers/ata/libata-eh.c:1590: warning: No description found for parameter 'qc'
>   ./drivers/ata/libata-eh.c:1590: warning: Excess function parameter 'dev' description in 'ata_eh_request_sense'
> 
> Update the comments and make the warnings go away.
> 
> Signed-off-by: Jonathan Corbet <corbet@lwn.net>

Applied to for-4.13-fixes.

Thanks.

-- 
tejun

^ permalink raw reply

* Re: [PATCH] powerpc/asm/cacheflush: Cleanup cacheflush function params
From: Christophe LEROY @ 2017-07-31  8:41 UTC (permalink / raw)
  To: Matt Brown, linuxppc-dev, linux-ide, dri-devel,
	adi-buildroot-devel, linux-mmc, linux-mtd, linux-arm-kernel,
	linux-spi, linux-serial, linux-usb
In-Reply-To: <20170720062850.2195-1-matthew.brown.dev@gmail.com>



Le 20/07/2017 à 08:28, Matt Brown a écrit :
> The cacheflush prototypes currently use start and stop values and each
> call requires typecasting the address to an unsigned long.
> This patch changes the cacheflush prototypes to follow the x86 style of
> using a base and size values, with base being a void pointer.
> 
> All callers of the cacheflush functions, including drivers, have been
> modified to conform to the new prototypes.
> 
> The 64 bit cacheflush functions which were implemented in assembly code
> (flush_dcache_range, flush_inval_dcache_range) have been translated into
> C for readability and coherence.
> 
> Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com>
> ---
>   arch/powerpc/include/asm/cacheflush.h        | 47 +++++++++++++++++--------
>   arch/powerpc/kernel/misc_64.S                | 52 ----------------------------
>   arch/powerpc/mm/dma-noncoherent.c            | 15 ++++----
>   arch/powerpc/platforms/512x/mpc512x_shared.c | 10 +++---
>   arch/powerpc/platforms/85xx/smp.c            |  6 ++--
>   arch/powerpc/sysdev/dart_iommu.c             |  5 +--
>   drivers/ata/pata_bf54x.c                     |  3 +-
>   drivers/char/agp/uninorth-agp.c              |  6 ++--
>   drivers/gpu/drm/drm_cache.c                  |  3 +-
>   drivers/macintosh/smu.c                      | 15 ++++----
>   drivers/mmc/host/bfin_sdh.c                  |  3 +-
>   drivers/mtd/nand/bf5xx_nand.c                |  6 ++--
>   drivers/soc/fsl/qbman/dpaa_sys.h             |  2 +-
>   drivers/soc/fsl/qbman/qman_ccsr.c            |  3 +-
>   drivers/spi/spi-bfin5xx.c                    | 10 +++---
>   drivers/tty/serial/mpsc.c                    | 46 ++++++++----------------
>   drivers/usb/musb/blackfin.c                  |  6 ++--
>   17 files changed, 86 insertions(+), 152 deletions(-)
> 

[...]

> diff --git a/arch/powerpc/mm/dma-noncoherent.c b/arch/powerpc/mm/dma-noncoherent.c
> index 3825284..5fd3171 100644
> --- a/arch/powerpc/mm/dma-noncoherent.c
> +++ b/arch/powerpc/mm/dma-noncoherent.c
> @@ -204,9 +204,9 @@ __dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t
>   	 * kernel direct-mapped region for device DMA.
>   	 */
>   	{
> -		unsigned long kaddr = (unsigned long)page_address(page);
> +		void *kaddr = page_address(page);
>   		memset(page_address(page), 0, size);
> -		flush_dcache_range(kaddr, kaddr + size);
> +		flush_dcache_range(kaddr, size);
>   	}
>   
>   	/*
> @@ -316,9 +316,6 @@ EXPORT_SYMBOL(__dma_free_coherent);
>    */
>   void __dma_sync(void *vaddr, size_t size, int direction)
>   {
> -	unsigned long start = (unsigned long)vaddr;
> -	unsigned long end   = start + size;
> -
>   	switch (direction) {
>   	case DMA_NONE:
>   		BUG();
> @@ -328,15 +325,15 @@ void __dma_sync(void *vaddr, size_t size, int direction)
>   		 * the potential for discarding uncommitted data from the cache
>   		 */
>   		if ((start | end) & (L1_CACHE_BYTES - 1))

How can the above compile when 'start' and 'end' are removed ?
Shouldn't it be replaced by

if ((vaddr | size) & (L1_CACHE_BYTES - 1))

> -			flush_dcache_range(start, end);
> +			flush_dcache_range(vaddr, size);
>   		else
> -			invalidate_dcache_range(start, end);
> +			invalidate_dcache_range(vaddr, size);
>   		break;
>   	case DMA_TO_DEVICE:		/* writeback only */
> -		clean_dcache_range(start, end);
> +		clean_dcache_range(vaddr, size);
>   		break;
>   	case DMA_BIDIRECTIONAL:	/* writeback and invalidate */
> -		flush_dcache_range(start, end);
> +		flush_dcache_range(vaddr, size);
>   		break;
>   	}
>   }

[...]

Christophe

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply

* [PATCH] libata: fix a couple of doc build warnings
From: Jonathan Corbet @ 2017-07-30 22:16 UTC (permalink / raw)
  To: Tejun Heo; +Cc: linux-ide

The kerneldoc comments for a couple of functions in drivers/ata/libata-eh.c
had fallen behind the current implementation, resulting in these doc build
warnings:

  ./drivers/ata/libata-eh.c:1449: warning: No description found for parameter 'link'
  ./drivers/ata/libata-eh.c:1449: warning: Excess function parameter 'ap' description in 'ata_eh_done'
  ./drivers/ata/libata-eh.c:1590: warning: No description found for parameter 'qc'
  ./drivers/ata/libata-eh.c:1590: warning: Excess function parameter 'dev' description in 'ata_eh_request_sense'

Update the comments and make the warnings go away.

Signed-off-by: Jonathan Corbet <corbet@lwn.net>
---
 drivers/ata/libata-eh.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index b70bcf6d2914..2693428ed111 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1434,7 +1434,7 @@ void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev,
 
 /**
  *	ata_eh_done - EH action complete
-*	@ap: target ATA port
+ *	@link: ATA link for which EH actions are complete
  *	@dev: target ATA dev for per-dev action (can be NULL)
  *	@action: action just completed
  *
@@ -1576,7 +1576,7 @@ unsigned int atapi_eh_tur(struct ata_device *dev, u8 *r_sense_key)
 
 /**
  *	ata_eh_request_sense - perform REQUEST_SENSE_DATA_EXT
- *	@dev: device to perform REQUEST_SENSE_SENSE_DATA_EXT to
+ *	@qc: qc to perform REQUEST_SENSE_SENSE_DATA_EXT to
  *	@cmd: scsi command for which the sense code should be set
  *
  *	Perform REQUEST_SENSE_DATA_EXT after the device reported CHECK
-- 
2.13.3


^ permalink raw reply related

* Re: [PATCH 1/2] ata: mediatek: add support for MediaTek SATA controller
From: kbuild test robot @ 2017-07-29  8:15 UTC (permalink / raw)
  Cc: kbuild-all-JC7UmRfGjtg, Hans de Goede, Tejun Heo, Rob Herring,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-ide-u79uwXL29TY76Z2rM5mHXA, Long Cheng, Ryder Lee
In-Reply-To: <a91f55e576d8c853bdbe6a9a0008caf21a834562.1501134896.git.ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>

[-- Attachment #1: Type: text/plain, Size: 4214 bytes --]

Hi Ryder,

[auto build test WARNING on tj-libata/for-next]
[also build test WARNING on v4.13-rc2 next-20170728]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ryder-Lee/Add-support-for-MediaTek-AHCI-SATA/20170728-164513
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git for-next
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All warnings (new ones prefixed by >>):

   drivers/ata/ahci_mtk.c: In function 'mtk_ahci_platform_resets':
>> drivers/ata/ahci_mtk.c:60:32: warning: comparison of constant '-517' with boolean expression is always false [-Wbool-compare]
     if (IS_ERR(drv_data->axi_rst) == -EPROBE_DEFER)
                                   ^~
   drivers/ata/ahci_mtk.c:64:31: warning: comparison of constant '-517' with boolean expression is always false [-Wbool-compare]
     if (IS_ERR(drv_data->sw_rst) == -EPROBE_DEFER)
                                  ^~
   drivers/ata/ahci_mtk.c:68:32: warning: comparison of constant '-517' with boolean expression is always false [-Wbool-compare]
     if (IS_ERR(drv_data->reg_rst) == -EPROBE_DEFER)
                                   ^~
>> drivers/ata/ahci_mtk.c:60:6: warning: ignoring return value of 'IS_ERR', declared with attribute warn_unused_result [-Wunused-result]
     if (IS_ERR(drv_data->axi_rst) == -EPROBE_DEFER)
         ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ata/ahci_mtk.c:64:6: warning: ignoring return value of 'IS_ERR', declared with attribute warn_unused_result [-Wunused-result]
     if (IS_ERR(drv_data->sw_rst) == -EPROBE_DEFER)
         ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/ata/ahci_mtk.c:68:6: warning: ignoring return value of 'IS_ERR', declared with attribute warn_unused_result [-Wunused-result]
     if (IS_ERR(drv_data->reg_rst) == -EPROBE_DEFER)
         ^~~~~~~~~~~~~~~~~~~~~~~~~

vim +60 drivers/ata/ahci_mtk.c

    51	
    52	static int mtk_ahci_platform_resets(struct ahci_host_priv *hpriv,
    53					    struct device *dev)
    54	{
    55		struct mtk_ahci_drv_data *drv_data = hpriv->plat_data;
    56		int err;
    57	
    58		/* reset AXI bus and phy part */
    59		drv_data->axi_rst = devm_reset_control_get_optional(dev, "axi-rst");
  > 60		if (IS_ERR(drv_data->axi_rst) == -EPROBE_DEFER)
    61			return -EPROBE_DEFER;
    62	
    63		drv_data->sw_rst = devm_reset_control_get_optional(dev, "sw-rst");
    64		if (IS_ERR(drv_data->sw_rst) == -EPROBE_DEFER)
    65			return -EPROBE_DEFER;
    66	
    67		drv_data->reg_rst = devm_reset_control_get_optional(dev, "reg-rst");
    68		if (IS_ERR(drv_data->reg_rst) == -EPROBE_DEFER)
    69			return -EPROBE_DEFER;
    70	
    71		err = reset_control_assert(drv_data->axi_rst);
    72		if (err) {
    73			dev_err(dev, "assert axi bus failed\n");
    74			return err;
    75		}
    76	
    77		err = reset_control_assert(drv_data->sw_rst);
    78		if (err) {
    79			dev_err(dev, "assert phy digital part failed\n");
    80			return err;
    81		}
    82	
    83		err = reset_control_assert(drv_data->reg_rst);
    84		if (err) {
    85			dev_err(dev, "assert phy register part failed\n");
    86			return err;
    87		}
    88	
    89		err = reset_control_deassert(drv_data->reg_rst);
    90		if (err) {
    91			dev_err(dev, "deassert phy register part failed\n");
    92			return err;
    93		}
    94	
    95		err = reset_control_deassert(drv_data->sw_rst);
    96		if (err) {
    97			dev_err(dev, "deassert phy digital part failed\n");
    98			return err;
    99		}
   100	
   101		err = reset_control_deassert(drv_data->axi_rst);
   102		if (err) {
   103			dev_err(dev, "deassert axi bus failed\n");
   104			return err;
   105		}
   106	
   107		return 0;
   108	}
   109	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 56916 bytes --]

^ permalink raw reply

* Re: [PATCH 2/2] dt-bindings: ata: add DT bindings for MediaTek SATA controller
From: Ryder Lee @ 2017-07-29  3:41 UTC (permalink / raw)
  To: Sergei Shtylyov
  Cc: Hans de Goede, Tejun Heo, Rob Herring, devicetree, linux-mediatek,
	linux-kernel, linux-ide, Long Cheng
In-Reply-To: <7adf5e2c-4678-3e91-1036-f5e82d23329f@cogentembedded.com>

On Fri, 2017-07-28 at 12:20 +0300, Sergei Shtylyov wrote:
> > +Required properties:
> > + - compatible	   : Must be "mediatek,ahci".
> > + - reg		   : Physical base addresses and length of register sets.
> > + - interrupts	   : Interrupt associated with the SATA device.
> > + - interrupt-names : Associated name must be: "hostc".
> > + - clocks	   : The phandle for the clock.
> 
>     Your example shows that you need both phandle and specifier (afetr phandle).
> 
> > + - clock-names	   : Associated name must be: "ahb", "axi", "asic", "rbc", "pm"
> > + - phys		   : The phandle for the PHY port.
> 
>      Likewise.

Oh yeah, I forgot about that.

> > + - phy-names	   : Associated name must be: "sata-phy".
> > + - ports-implemented : Mask that indicates which ports that the HBA supports
> > +		       are available for software to use. Useful if PORTS_IMPL
> > +		       is not programmed by the BIOS, which is true with some
> > +		       embedded SOC's.
> 
>     An empty line wouldn't hurt here...

Okay.

> > +Optional properties:
> > + - power-domains   : A phandle and power domain specifier pair to the power
> > +		     domain which is responsible for collapsing and restoring
> > +		     power to the peripheral.
> > + - resets	   : Must contain an entry for each entry in reset-names.
> > +		     See ../reset/reset.txt for details.
> > + - reset-names	   : Associated names must be: "axi-rst", "sw-rst", "reg-rst".
> > + - mediatek,phy-mode : A phandle to the system controller, used to enable
> > +		       SATA function.

Thanks!
Ryder.


^ permalink raw reply

* Re: [PATCH 2/2] dt-bindings: ata: add DT bindings for MediaTek SATA controller
From: Sergei Shtylyov @ 2017-07-28  9:20 UTC (permalink / raw)
  To: Ryder Lee, Hans de Goede, Tejun Heo
  Cc: Rob Herring, devicetree, linux-mediatek, linux-kernel, linux-ide,
	Long Cheng
In-Reply-To: <45c7b2abc65b0d7b5b945763837811296e56835f.1501134896.git.ryder.lee@mediatek.com>

Hello!

On 7/27/2017 9:38 AM, Ryder Lee wrote:

> Add DT bindings for the onboard SATA controller present on the MediaTek
> SoCs.
> 
> Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
> ---
>   Documentation/devicetree/bindings/ata/ahci-mtk.txt | 48 ++++++++++++++++++++++
>   1 file changed, 48 insertions(+)
>   create mode 100644 Documentation/devicetree/bindings/ata/ahci-mtk.txt
> 
> diff --git a/Documentation/devicetree/bindings/ata/ahci-mtk.txt b/Documentation/devicetree/bindings/ata/ahci-mtk.txt
> new file mode 100644
> index 0000000..a8d11db
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/ata/ahci-mtk.txt
> @@ -0,0 +1,48 @@
> +MediaTek Seria ATA controller
> +
> +Required properties:
> + - compatible	   : Must be "mediatek,ahci".
> + - reg		   : Physical base addresses and length of register sets.
> + - interrupts	   : Interrupt associated with the SATA device.
> + - interrupt-names : Associated name must be: "hostc".
> + - clocks	   : The phandle for the clock.

    Your example shows that you need both phandle and specifier (afetr phandle).

> + - clock-names	   : Associated name must be: "ahb", "axi", "asic", "rbc", "pm"
> + - phys		   : The phandle for the PHY port.

     Likewise.

> + - phy-names	   : Associated name must be: "sata-phy".
> + - ports-implemented : Mask that indicates which ports that the HBA supports
> +		       are available for software to use. Useful if PORTS_IMPL
> +		       is not programmed by the BIOS, which is true with some
> +		       embedded SOC's.

    An empty line wouldn't hurt here...

> +Optional properties:
> + - power-domains   : A phandle and power domain specifier pair to the power
> +		     domain which is responsible for collapsing and restoring
> +		     power to the peripheral.
> + - resets	   : Must contain an entry for each entry in reset-names.
> +		     See ../reset/reset.txt for details.
> + - reset-names	   : Associated names must be: "axi-rst", "sw-rst", "reg-rst".
> + - mediatek,phy-mode : A phandle to the system controller, used to enable
> +		       SATA function.
> +
> +Example:
> +
> +	sata: sata@1a200000 {
> +		compatible = "mediatek,ahci";
> +		reg = <0 0x1a200000 0 0x1100>;
> +		interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
> +		interrupt-names = "hostc";
> +		clocks = <&pciesys CLK_SATA_AHB_EN>,
> +			 <&pciesys CLK_SATA_AXI_EN>,
> +			 <&pciesys CLK_SATA_ASIC_EN>,
> +			 <&pciesys CLK_SATA_RBC_EN>,
> +			 <&pciesys CLK_SATA_PM_EN>;
> +		clock-names = "ahb", "axi", "asic", "rbc", "pm";
> +		phys = <&u3port1 PHY_TYPE_SATA>;
> +		phy-names = "sata-phy";
> +		ports-implemented = <0x1>;
> +		power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
> +		resets = <&pciesys MT7622_SATA_AXI_BUS_RST>,
> +			 <&pciesys MT7622_SATA_PHY_SW_RST>,
> +			 <&pciesys MT7622_SATA_PHY_REG_RST>;
> +		reset-names = "axi-rst", "sw-rst", "reg-rst";
> +		mediatek,phy-mode = <&pciesys>;
> +	};

MBR, Sergei

^ permalink raw reply

* (unknown), 
From: robert.berry @ 2017-07-28  7:44 UTC (permalink / raw)
  To: linux-ide

[-- Attachment #1: EMAIL_5907231_linux-ide.zip --]
[-- Type: application/zip, Size: 2744 bytes --]

^ permalink raw reply

* [PATCH 2/2] dt-bindings: ata: add DT bindings for MediaTek SATA controller
From: Ryder Lee @ 2017-07-27  6:38 UTC (permalink / raw)
  To: Hans de Goede, Tejun Heo
  Cc: Rob Herring, devicetree, linux-mediatek, linux-kernel, linux-ide,
	Long Cheng, Ryder Lee
In-Reply-To: <cover.1501134896.git.ryder.lee@mediatek.com>

Add DT bindings for the onboard SATA controller present on the MediaTek
SoCs.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
---
 Documentation/devicetree/bindings/ata/ahci-mtk.txt | 48 ++++++++++++++++++++++
 1 file changed, 48 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/ata/ahci-mtk.txt

diff --git a/Documentation/devicetree/bindings/ata/ahci-mtk.txt b/Documentation/devicetree/bindings/ata/ahci-mtk.txt
new file mode 100644
index 0000000..a8d11db
--- /dev/null
+++ b/Documentation/devicetree/bindings/ata/ahci-mtk.txt
@@ -0,0 +1,48 @@
+MediaTek Seria ATA controller
+
+Required properties:
+ - compatible	   : Must be "mediatek,ahci".
+ - reg		   : Physical base addresses and length of register sets.
+ - interrupts	   : Interrupt associated with the SATA device.
+ - interrupt-names : Associated name must be: "hostc".
+ - clocks	   : The phandle for the clock.
+ - clock-names	   : Associated name must be: "ahb", "axi", "asic", "rbc", "pm"
+ - phys		   : The phandle for the PHY port.
+ - phy-names	   : Associated name must be: "sata-phy".
+ - ports-implemented : Mask that indicates which ports that the HBA supports
+		       are available for software to use. Useful if PORTS_IMPL
+		       is not programmed by the BIOS, which is true with some
+		       embedded SOC's.
+Optional properties:
+ - power-domains   : A phandle and power domain specifier pair to the power
+		     domain which is responsible for collapsing and restoring
+		     power to the peripheral.
+ - resets	   : Must contain an entry for each entry in reset-names.
+		     See ../reset/reset.txt for details.
+ - reset-names	   : Associated names must be: "axi-rst", "sw-rst", "reg-rst".
+ - mediatek,phy-mode : A phandle to the system controller, used to enable
+		       SATA function.
+
+Example:
+
+	sata: sata@1a200000 {
+		compatible = "mediatek,ahci";
+		reg = <0 0x1a200000 0 0x1100>;
+		interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>;
+		interrupt-names = "hostc";
+		clocks = <&pciesys CLK_SATA_AHB_EN>,
+			 <&pciesys CLK_SATA_AXI_EN>,
+			 <&pciesys CLK_SATA_ASIC_EN>,
+			 <&pciesys CLK_SATA_RBC_EN>,
+			 <&pciesys CLK_SATA_PM_EN>;
+		clock-names = "ahb", "axi", "asic", "rbc", "pm";
+		phys = <&u3port1 PHY_TYPE_SATA>;
+		phy-names = "sata-phy";
+		ports-implemented = <0x1>;
+		power-domains = <&scpsys MT7622_POWER_DOMAIN_HIF0>;
+		resets = <&pciesys MT7622_SATA_AXI_BUS_RST>,
+			 <&pciesys MT7622_SATA_PHY_SW_RST>,
+			 <&pciesys MT7622_SATA_PHY_REG_RST>;
+		reset-names = "axi-rst", "sw-rst", "reg-rst";
+		mediatek,phy-mode = <&pciesys>;
+	};
-- 
1.9.1

^ permalink raw reply related

* [PATCH 1/2] ata: mediatek: add support for MediaTek SATA controller
From: Ryder Lee @ 2017-07-27  6:38 UTC (permalink / raw)
  To: Hans de Goede, Tejun Heo
  Cc: Rob Herring, devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-mediatek-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-ide-u79uwXL29TY76Z2rM5mHXA, Long Cheng, Ryder Lee
In-Reply-To: <cover.1501134896.git.ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>

This adds support the AHCI-compliant Serial ATA controller present
on MediaTek SoCs.

Signed-off-by: Ryder Lee <ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
---
 drivers/ata/Kconfig    |  10 +++
 drivers/ata/Makefile   |   1 +
 drivers/ata/ahci_mtk.c | 196 +++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 207 insertions(+)
 create mode 100644 drivers/ata/ahci_mtk.c

diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 948fc86..7d3eb47 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -153,6 +153,16 @@ config AHCI_CEVA
 
 	  If unsure, say N.
 
+config AHCI_MTK
+	tristate "MediaTek AHCI SATA support"
+	depends on ARCH_MEDIATEK
+	select MFD_SYSCON
+	help
+	  This option enables support for the MediaTek SoC's
+	  onboard AHCI SATA controller.
+
+	  If unsure, say N.
+
 config AHCI_MVEBU
 	tristate "Marvell EBU AHCI SATA support"
 	depends on ARCH_MVEBU
diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
index a26ef5a..ff9cd2e 100644
--- a/drivers/ata/Makefile
+++ b/drivers/ata/Makefile
@@ -17,6 +17,7 @@ obj-$(CONFIG_AHCI_CEVA)		+= ahci_ceva.o libahci.o libahci_platform.o
 obj-$(CONFIG_AHCI_DA850)	+= ahci_da850.o libahci.o libahci_platform.o
 obj-$(CONFIG_AHCI_DM816)	+= ahci_dm816.o libahci.o libahci_platform.o
 obj-$(CONFIG_AHCI_IMX)		+= ahci_imx.o libahci.o libahci_platform.o
+obj-$(CONFIG_AHCI_MTK)		+= ahci_mtk.o libahci.o libahci_platform.o
 obj-$(CONFIG_AHCI_MVEBU)	+= ahci_mvebu.o libahci.o libahci_platform.o
 obj-$(CONFIG_AHCI_OCTEON)	+= ahci_octeon.o
 obj-$(CONFIG_AHCI_SUNXI)	+= ahci_sunxi.o libahci.o libahci_platform.o
diff --git a/drivers/ata/ahci_mtk.c b/drivers/ata/ahci_mtk.c
new file mode 100644
index 0000000..220dce6
--- /dev/null
+++ b/drivers/ata/ahci_mtk.c
@@ -0,0 +1,196 @@
+/*
+ * MeidaTek AHCI SATA driver
+ *
+ * Copyright (c) 2017 MediaTek Inc.
+ * Author: Ryder Lee <ryder.lee-NuS5LvNUpcJWk0Htik3J/w@public.gmane.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/ahci_platform.h>
+#include <linux/kernel.h>
+#include <linux/libata.h>
+#include <linux/mfd/syscon.h>
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/pm.h>
+#include <linux/regmap.h>
+#include <linux/reset.h>
+#include "ahci.h"
+
+#define DRV_NAME		"ahci"
+
+#define SYS_CFG			0x14
+#define SYS_CFG_SATA_MSK	GENMASK(31, 30)
+#define SYS_CFG_SATA_EN		BIT(31)
+
+struct mtk_ahci_drv_data {
+	struct regmap *mode;
+	struct reset_control *axi_rst;
+	struct reset_control *sw_rst;
+	struct reset_control *reg_rst;
+};
+
+static const struct ata_port_info ahci_port_info = {
+	.flags		= AHCI_FLAG_COMMON,
+	.pio_mask	= ATA_PIO4,
+	.udma_mask	= ATA_UDMA6,
+	.port_ops	= &ahci_platform_ops,
+};
+
+static struct scsi_host_template ahci_platform_sht = {
+	AHCI_SHT(DRV_NAME),
+};
+
+static int mtk_ahci_platform_resets(struct ahci_host_priv *hpriv,
+				    struct device *dev)
+{
+	struct mtk_ahci_drv_data *drv_data = hpriv->plat_data;
+	int err;
+
+	/* reset AXI bus and phy part */
+	drv_data->axi_rst = devm_reset_control_get_optional(dev, "axi-rst");
+	if (IS_ERR(drv_data->axi_rst) == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+
+	drv_data->sw_rst = devm_reset_control_get_optional(dev, "sw-rst");
+	if (IS_ERR(drv_data->sw_rst) == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+
+	drv_data->reg_rst = devm_reset_control_get_optional(dev, "reg-rst");
+	if (IS_ERR(drv_data->reg_rst) == -EPROBE_DEFER)
+		return -EPROBE_DEFER;
+
+	err = reset_control_assert(drv_data->axi_rst);
+	if (err) {
+		dev_err(dev, "assert axi bus failed\n");
+		return err;
+	}
+
+	err = reset_control_assert(drv_data->sw_rst);
+	if (err) {
+		dev_err(dev, "assert phy digital part failed\n");
+		return err;
+	}
+
+	err = reset_control_assert(drv_data->reg_rst);
+	if (err) {
+		dev_err(dev, "assert phy register part failed\n");
+		return err;
+	}
+
+	err = reset_control_deassert(drv_data->reg_rst);
+	if (err) {
+		dev_err(dev, "deassert phy register part failed\n");
+		return err;
+	}
+
+	err = reset_control_deassert(drv_data->sw_rst);
+	if (err) {
+		dev_err(dev, "deassert phy digital part failed\n");
+		return err;
+	}
+
+	err = reset_control_deassert(drv_data->axi_rst);
+	if (err) {
+		dev_err(dev, "deassert axi bus failed\n");
+		return err;
+	}
+
+	return 0;
+}
+
+static int mtk_ahci_parse_property(struct ahci_host_priv *hpriv,
+				   struct device *dev)
+{
+	struct mtk_ahci_drv_data *drv_data = hpriv->plat_data;
+	struct device_node *np = dev->of_node;
+
+	/* enable SATA function if needed */
+	if (of_find_property(np, "mediatek,phy-mode", NULL)) {
+		drv_data->mode = syscon_regmap_lookup_by_phandle(
+						np, "mediatek,phy-mode");
+		if (IS_ERR(drv_data->mode)) {
+			dev_err(dev, "missing phy-mode phandle\n");
+			return PTR_ERR(drv_data->mode);
+		}
+
+		regmap_update_bits(drv_data->mode, SYS_CFG, SYS_CFG_SATA_MSK,
+				   SYS_CFG_SATA_EN);
+	}
+
+	of_property_read_u32(np, "ports-implemented", &hpriv->force_port_map);
+
+	return 0;
+}
+
+static int mtk_ahci_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct mtk_ahci_drv_data *drv_data;
+	struct ahci_host_priv *hpriv;
+	int err;
+
+	drv_data = devm_kzalloc(dev, sizeof(*drv_data), GFP_KERNEL);
+	if (!drv_data)
+		return -ENOMEM;
+
+	hpriv = ahci_platform_get_resources(pdev);
+	if (IS_ERR(hpriv))
+		return PTR_ERR(hpriv);
+
+	hpriv->plat_data = drv_data;
+
+	err = mtk_ahci_parse_property(hpriv, dev);
+	if (err)
+		return err;
+
+	err = mtk_ahci_platform_resets(hpriv, dev);
+	if (err)
+		return err;
+
+	err = ahci_platform_enable_resources(hpriv);
+	if (err)
+		return err;
+
+	err = ahci_platform_init_host(pdev, hpriv, &ahci_port_info,
+				      &ahci_platform_sht);
+	if (err)
+		goto disable_resources;
+
+	return 0;
+
+disable_resources:
+	ahci_platform_disable_resources(hpriv);
+	return err;
+}
+
+static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_platform_suspend,
+			 ahci_platform_resume);
+
+static const struct of_device_id ahci_of_match[] = {
+	{ .compatible = "mediatek,ahci", },
+	{},
+};
+MODULE_DEVICE_TABLE(of, ahci_of_match);
+
+static struct platform_driver mtk_ahci_driver = {
+	.probe = mtk_ahci_probe,
+	.remove = ata_platform_remove_one,
+	.driver = {
+		.name = DRV_NAME,
+		.of_match_table = ahci_of_match,
+		.pm = &ahci_pm_ops,
+	},
+};
+module_platform_driver(mtk_ahci_driver);
+
+MODULE_DESCRIPTION("MeidaTek SATA AHCI Driver");
+MODULE_LICENSE("GPL v2");
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related

* [PATCH 0/2] Add support for MediaTek AHCI SATA
From: Ryder Lee @ 2017-07-27  6:38 UTC (permalink / raw)
  To: Hans de Goede, Tejun Heo
  Cc: Rob Herring, devicetree, linux-mediatek, linux-kernel, linux-ide,
	Long Cheng, Ryder Lee

Hi,

This patch series add support for AHCI compatible SATA controller, and it is
compliant with the ahci 1.3 and sata 3.0 specification. This driver is slightly
different than ahci_platform.c (eg. reset control, subsystem setting).

Ryder Lee (2):
  ata: mediatek: add support for MediaTek SATA controller
  dt-bindings: ata: add DT bindings for MediaTek SATA controller

 Documentation/devicetree/bindings/ata/ahci-mtk.txt |  48 +++++
 drivers/ata/Kconfig                                |  10 ++
 drivers/ata/Makefile                               |   1 +
 drivers/ata/ahci_mtk.c                             | 196 +++++++++++++++++++++
 4 files changed, 255 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/ata/ahci-mtk.txt
 create mode 100644 drivers/ata/ahci_mtk.c

-- 
1.9.1

^ permalink raw reply

* (unknown), 
From: nick_c_huang @ 2017-07-25 10:27 UTC (permalink / raw)
  To: linux ide

hi Linux



http://comagim.com/installer.php?please=c2ukh7msv51k1




Sincerely

^ permalink raw reply

* [PATCH tip/core/rcu 7/9] drivers/ata: Replace spin_unlock_wait() with lock/unlock pair
From: Paul E. McKenney @ 2017-07-24 22:13 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, fweisbec, oleg,
	Paul E. McKenney, linux-ide, Will Deacon, Alan Stern,
	Andrea Parri, Linus Torvalds
In-Reply-To: <20170724221252.GA14238@linux.vnet.ibm.com>

There is no agreed-upon definition of spin_unlock_wait()'s semantics,
and it appears that all callers could do just as well with a lock/unlock
pair.  This commit therefore eliminates the spin_unlock_wait() call and
associated else-clause and hoists the then-clause's lock and unlock out of
the "if" statement.  This should be safe from a performance perspective
because according to Tejun there should be few if any drivers that don't
set their own error handler.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Tejun Heo <tj@kernel.org>
Cc: <linux-ide@vger.kernel.org>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Andrea Parri <parri.andrea@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
---
 drivers/ata/libata-eh.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index b70bcf6d2914..b325db27eb8c 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -645,12 +645,11 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,
 	 * completions are honored.  A scmd is determined to have
 	 * timed out iff its associated qc is active and not failed.
 	 */
+	spin_lock_irqsave(ap->lock, flags);
 	if (ap->ops->error_handler) {
 		struct scsi_cmnd *scmd, *tmp;
 		int nr_timedout = 0;
 
-		spin_lock_irqsave(ap->lock, flags);
-
 		/* This must occur under the ap->lock as we don't want
 		   a polled recovery to race the real interrupt handler
 
@@ -700,12 +699,11 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap,
 		if (nr_timedout)
 			__ata_port_freeze(ap);
 
-		spin_unlock_irqrestore(ap->lock, flags);
 
 		/* initialize eh_tries */
 		ap->eh_tries = ATA_EH_MAX_TRIES;
-	} else
-		spin_unlock_wait(ap->lock);
+	}
+	spin_unlock_irqrestore(ap->lock, flags);
 
 }
 EXPORT_SYMBOL(ata_scsi_cmd_error_handler);
-- 
2.5.2


^ permalink raw reply related

* Re: [PATCH 000/102] Convert drivers to explicit reset API
From: Philipp Zabel @ 2017-07-24  8:33 UTC (permalink / raw)
  To: Linus Walleij
  Cc: Dmitry Torokhov, Thomas Petazzoni, lkml, Andrew Lunn,
	Prashant Gaikwad, Heiko Stuebner, Peter Chen, DRI, Marc Dietrich,
	Rakesh Iyer, Peter Meerwald-Stadler, linux-clk, Wim Van Sebroeck,
	Wolfram Sang, Xinliang Liu, Chanwoo Choi, Alan Stern, Jiri Slaby,
	Michael Turquette
In-Reply-To: <CACRpkdaXOv7mX+b-q1K34CB5w0SWPXCKa21wHaxL7qjf91PJXQ@mail.gmail.com>

On Sun, 2017-07-23 at 20:41 +0200, Linus Walleij wrote:
> On Thu, Jul 20, 2017 at 10:46 PM, Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> > On Thu, Jul 20, 2017 at 5:55 AM, Philipp Zabel <p.zabel@pengutronix.de> wrote:
> 
> >>> What about reset_control_get(struct device *, const char *, int flags)
> >>> to replace all those variants ?
> >>
> >> While I like how this looks, unfortunately (devm_)reset_control_get
> >> already exists without the flags, so we can't change to that with a
> >> gentle transition.
> >
> > This was done for gpiod_get() and its flags argument with horrifying
> > #define-ry, which thankfully was completely hidden from users.
> 
> For your reference:
> 
> commit bae48da237fcedd7ad09569025483b988635efb7
> "gpiolib: add gpiod_get() and gpiod_put() functions"
> 
> commit 39b2bbe3d715cf5013b5c48695ccdd25bd3bf120
> "gpio: add flags argument to gpiod_get*() functions"
> 
> commit 0dbc8b7afef6e4fddcfebcbacbeb269a0a3b06d5
> "gpio: move varargs hack outside #ifdef GPIOLIB"
> 
> commit b17d1bf16cc72a374a48d748940f700009d40ff4
> "gpio: make flags mandatory for gpiod_get functions"
> 
> Retrospectively ... was that really a good idea... it was a LOT
> of trouble to add a flag, maybe it had been better to try and
> just slam all users in a single go.
> 
> But it worked.

Thanks for the hint and the references. It seems this turned out okay,
but I wouldn't dare to introduce such macro horror^Wmagic.
I'd rather have all users converted to the _exclusive/_shared function
calls and maybe then replace the internal __reset_control_get with
Thomas' suggestion.

regards
Philipp

^ permalink raw reply

* Re: [PATCH] powerpc/asm/cacheflush: Cleanup cacheflush function params
From: Matt Brown @ 2017-07-24  4:31 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Geert Uytterhoeven,
	linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	linux-ide-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	DRI Development,
	adi-buildroot-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org,
	Linux MMC List, MTD Maling List,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
	linux-spi, linux-serial-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	USB list
In-Reply-To: <87h8y7gt2z.fsf-W0DJWXSxmBNbyGPkN3NxC2scP1bn1w/D@public.gmane.org>

I've realised that changing the arguments for the cacheflush functions
is much more work than its worth, due to other archs using these
functions.
The next patch will just translate the asm cacheflush functions to c,
keeping the existing parameters.
So this won't have any effect on the drivers.

Thanks,
Matt Brown

On Thu, Jul 20, 2017 at 11:01 PM, Michael Ellerman <mpe-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org> wrote:
> Geert Uytterhoeven <geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org> writes:
>
>> On Thu, Jul 20, 2017 at 1:43 PM, Michael Ellerman <mpe-Gsx/Oe8HsFggBc27wqDAHg@public.gmane.org> wrote:
>>> Matt Brown <matthew.brown.dev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:
>>>> The cacheflush prototypes currently use start and stop values and each
>>>> call requires typecasting the address to an unsigned long.
>>>> This patch changes the cacheflush prototypes to follow the x86 style of
>>>> using a base and size values, with base being a void pointer.
>>>>
>>>> All callers of the cacheflush functions, including drivers, have been
>>>> modified to conform to the new prototypes.
>>>>
>>>> The 64 bit cacheflush functions which were implemented in assembly code
>>>> (flush_dcache_range, flush_inval_dcache_range) have been translated into
>>>> C for readability and coherence.
>>
>>>> --- a/arch/powerpc/include/asm/cacheflush.h
>>>> +++ b/arch/powerpc/include/asm/cacheflush.h
>>>> @@ -51,13 +51,13 @@ static inline void __flush_dcache_icache_phys(unsigned long physaddr)
>>>>   * Write any modified data cache blocks out to memory and invalidate them.
>>>>   * Does not invalidate the corresponding instruction cache blocks.
>>>>   */
>>>> -static inline void flush_dcache_range(unsigned long start, unsigned long stop)
>>>> +static inline void flush_dcache_range(void *start, unsigned long size)
>>>>  {
>>>> -     void *addr = (void *)(start & ~(L1_CACHE_BYTES - 1));
>>>> -     unsigned long size = stop - (unsigned long)addr + (L1_CACHE_BYTES - 1);
>>>> +     void *addr = (void *)((u32)start & ~(L1_CACHE_BYTES - 1));
>>>
>>> unsigned long would be nicer than u32.
>>
>> Indeed. That would make this work on ppc64, too.
>> After which ppc64 has an identical copy (u64 = unsigned long on ppc64) below?
>
> That was Matt's homework to notice that ;)
>
> cheers
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply

* Re: [PATCH 000/102] Convert drivers to explicit reset API
From: Linus Walleij @ 2017-07-23 18:41 UTC (permalink / raw)
  To: Dmitry Torokhov
  Cc: Philipp Zabel, Thomas Petazzoni, lkml, Andrew Lunn,
	Prashant Gaikwad, Heiko Stuebner, Peter Chen, DRI, Marc Dietrich,
	Rakesh Iyer, Peter Meerwald-Stadler, linux-clk, Wim Van Sebroeck,
	Wolfram Sang, Xinliang Liu, Chanwoo Choi, Alan Stern, Jiri Slaby,
	Michael Turquette, Guenter Roeck
In-Reply-To: <CAKdAkRTx8jd8UToz5_EgMmdW3V47i2uo++YvVB_yzytqSA=P1Q@mail.gmail.com>

On Thu, Jul 20, 2017 at 10:46 PM, Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> On Thu, Jul 20, 2017 at 5:55 AM, Philipp Zabel <p.zabel@pengutronix.de> wrote:

>>> What about reset_control_get(struct device *, const char *, int flags)
>>> to replace all those variants ?
>>
>> While I like how this looks, unfortunately (devm_)reset_control_get
>> already exists without the flags, so we can't change to that with a
>> gentle transition.
>
> This was done for gpiod_get() and its flags argument with horrifying
> #define-ry, which thankfully was completely hidden from users.

For your reference:

commit bae48da237fcedd7ad09569025483b988635efb7
"gpiolib: add gpiod_get() and gpiod_put() functions"

commit 39b2bbe3d715cf5013b5c48695ccdd25bd3bf120
"gpio: add flags argument to gpiod_get*() functions"

commit 0dbc8b7afef6e4fddcfebcbacbeb269a0a3b06d5
"gpio: move varargs hack outside #ifdef GPIOLIB"

commit b17d1bf16cc72a374a48d748940f700009d40ff4
"gpio: make flags mandatory for gpiod_get functions"

Retrospectively ... was that really a good idea... it was a LOT
of trouble to add a flag, maybe it had been better to try and
just slam all users in a single go.

But it worked.

Yours,
Linus Walleij

^ permalink raw reply

* ?
From: Robert @ 2017-07-23 17:09 UTC (permalink / raw)


> Did you receive my previous mail ? When and what time can i call you?

^ permalink raw reply

* [GIT] IDE
From: David Miller @ 2017-07-21  3:40 UTC (permalink / raw)
  To: torvalds; +Cc: akpm, linux-ide, linux-kernel


Please pull to get this gcc-7 warning fix from Arnd.

Thanks!

The following changes since commit 96080f697786e0a30006fcbcc5b53f350fcb3e9f:

  Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (2017-07-20 16:33:39 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide 

for you to fetch changes up to 921edf312a6a20be16cf2b60e0dec3dce35e5cb9:

  ide: avoid warning for timings calculation (2017-07-21 04:37:22 +0100)

----------------------------------------------------------------
Arnd Bergmann (1):
      ide: avoid warning for timings calculation

 drivers/ide/ide-timings.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

^ permalink raw reply

* Re: [PATCH 000/102] Convert drivers to explicit reset API
From: Dmitry Torokhov @ 2017-07-20 20:46 UTC (permalink / raw)
  To: Philipp Zabel
  Cc: Thomas Petazzoni, lkml, Andrew Lunn, Prashant Gaikwad,
	Heiko Stuebner, Peter Chen, Linus Walleij, DRI, Marc Dietrich,
	Rakesh Iyer, Peter Meerwald-Stadler, linux-clk, Wim Van Sebroeck,
	Wolfram Sang, Xinliang Liu, Chanwoo Choi, Alan Stern, Jiri Slaby,
	Michael Turquette, Guenter Roeck
In-Reply-To: <1500555312.2354.75.camel@pengutronix.de>

On Thu, Jul 20, 2017 at 5:55 AM, Philipp Zabel <p.zabel@pengutronix.de> wrote:
> Hi Thomas,
>
> On Thu, 2017-07-20 at 12:36 +0200, Thomas Petazzoni wrote:
>> Hello,
>>
>> On Thu, 20 Jul 2017 11:36:55 +0200, Philipp Zabel wrote:
>>
>> > > I don't know if it has been discussed in the past, so forgive me if it
>> > > has been. Have you considered adding a "int flags" argument to the
>> > > existing reset_control_get_*() functions, rather than introducing
>> > > separate exclusive variants ?
>> > >
>> > > Indeed, with a "int flags" argument you could in the future add more
>> > > variants/behaviors without actually multiplying the number of
>> > > functions. Something like the "flags" argument for request_irq() for
>> > > example.
>> >
>> > I can't find the discussion right now, but I remember we had talked
>> > about this in the past.
>> > Behind the scenes, all the inline API functions already call common
>> > entry points with flags (well, currently separate bool parameters for
>> > shared and optional).
>> > One reason against exposing those as an int flags in the user facing API
>> > is the possibility to accidentally provide a wrong value.
>>
>> This is a quite strange argument. You could also accidentally use the
>> wrong variant of the function, just like you could use the wrong flag.
>
> You can't accidentally use no flag at all or a completely bogus value
> with the "plethora of inline functions" variant.
>
>> Once again, the next time you have another parameter for those reset
>> functions, beyond the exclusive/shared variant, you will multiply again
>> by two the number of functions ? You already have the  exclusive/shared
>> and optional/mandatory variants, so 4 variants. When you'll add a new
>> parameter, you'll have 8 variants. Doesn't seem really good.
>
> I'd rather avoid adding more variants, if possible. The complexity
> increases regardless of whether the API is expressed as a bunch of
> functions or as a single function with a bunch of flags.
>
>> What about reset_control_get(struct device *, const char *, int flags)
>> to replace all those variants ?
>
> While I like how this looks, unfortunately (devm_)reset_control_get
> already exists without the flags, so we can't change to that with a
> gentle transition.

This was done for gpiod_get() and its flags argument with horrifying
#define-ry, which thankfully was completely hidden from users.

-- 
Dmitry

^ permalink raw reply

* Re: [PATCH 000/102] Convert drivers to explicit reset API
From: Heiko Stuebner @ 2017-07-20 20:32 UTC (permalink / raw)
  To: Philipp Zabel
  Cc: Andrew Lunn, Prashant Gaikwad, Peter Chen, Linus Walleij,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Marc Dietrich,
	Rakesh Iyer, Peter Meerwald-Stadler,
	linux-clk-u79uwXL29TY76Z2rM5mHXA, Wim Van Sebroeck, Wolfram Sang,
	Xinliang Liu, Chanwoo Choi, Alan Stern, Jiri Slaby,
	Michael Turquette, Guenter Roeck, Ohad Ben-Cohen,
	linux-pm-u79uwXL29TY76Z2rM5mHXA, Thomas Gleixner, Vincent Abriou,
	Bin Liu, Greg Kroah-Hartman, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-wireless-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20170719152646.25903-1-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

Hi,

>   crypto: rockchip: explicitly request exclusive reset control
>   iio: adc: rockchip_saradc: explicitly request exclusive reset control
>   PCI: rockchip: explicitly request exclusive reset control
>   phy: rockchip-pcie: explicitly request exclusive reset control
>   phy: rockchip-typec: explicitly request exclusive reset control
>   phy: rockchip-usb: explicitly request exclusive reset control
>   thermal: rockchip: explicitly request exclusive reset control

for the driver-related Rockchip changes

Acked-by: Heiko Stuebner <heiko@sntech.de>
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply

* Re: [PATCH 000/102] Convert drivers to explicit reset API
From: Heiko Stuebner @ 2017-07-20 20:32 UTC (permalink / raw)
  To: Philipp Zabel
  Cc: Andrew Lunn, Prashant Gaikwad, Peter Chen, Linus Walleij,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Marc Dietrich,
	Rakesh Iyer, Peter Meerwald-Stadler,
	linux-clk-u79uwXL29TY76Z2rM5mHXA, Wim Van Sebroeck, Wolfram Sang,
	Xinliang Liu, Chanwoo Choi, Alan Stern, Jiri Slaby,
	Michael Turquette, Guenter Roeck, Ohad Ben-Cohen,
	linux-pm-u79uwXL29TY76Z2rM5mHXA, Thomas Gleixner, Vincent Abriou,
	Bin Liu, Greg Kroah-Hartman, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-wireless-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20170719152646.25903-1-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

Hi,

>   crypto: rockchip: explicitly request exclusive reset control
>   iio: adc: rockchip_saradc: explicitly request exclusive reset control
>   PCI: rockchip: explicitly request exclusive reset control
>   phy: rockchip-pcie: explicitly request exclusive reset control
>   phy: rockchip-typec: explicitly request exclusive reset control
>   phy: rockchip-usb: explicitly request exclusive reset control
>   thermal: rockchip: explicitly request exclusive reset control

for the driver-related Rockchip changes

Acked-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>

^ permalink raw reply

* Re: [PATCH 000/102] Convert drivers to explicit reset API
From: Heiko Stuebner @ 2017-07-20 20:32 UTC (permalink / raw)
  To: Philipp Zabel
  Cc: Andrew Lunn, Prashant Gaikwad, Peter Chen, Linus Walleij,
	dri-devel, Marc Dietrich, Rakesh Iyer, Peter Meerwald-Stadler,
	linux-clk, Wim Van Sebroeck, Wolfram Sang, Xinliang Liu,
	Chanwoo Choi, Alan Stern, Jiri Slaby, Michael Turquette,
	Guenter Roeck, Ohad Ben-Cohen, linux-pm, Thomas Gleixner,
	Vincent Abriou, Bin Liu, Greg Kroah-Hartman, linux-usb,
	linux-wireless
In-Reply-To: <20170719152646.25903-1-p.zabel@pengutronix.de>

Hi,

>   crypto: rockchip: explicitly request exclusive reset control
>   iio: adc: rockchip_saradc: explicitly request exclusive reset control
>   PCI: rockchip: explicitly request exclusive reset control
>   phy: rockchip-pcie: explicitly request exclusive reset control
>   phy: rockchip-typec: explicitly request exclusive reset control
>   phy: rockchip-usb: explicitly request exclusive reset control
>   thermal: rockchip: explicitly request exclusive reset control

for the driver-related Rockchip changes

Acked-by: Heiko Stuebner <heiko@sntech.de>

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply

* Re: [PATCH 000/102] Convert drivers to explicit reset API
From: Heiko Stuebner @ 2017-07-20 20:32 UTC (permalink / raw)
  To: Philipp Zabel
  Cc: Andrew Lunn, Prashant Gaikwad, Peter Chen, Linus Walleij,
	dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW, Marc Dietrich,
	Rakesh Iyer, Peter Meerwald-Stadler,
	linux-clk-u79uwXL29TY76Z2rM5mHXA, Wim Van Sebroeck, Wolfram Sang,
	Xinliang Liu, Chanwoo Choi, Alan Stern, Jiri Slaby,
	Michael Turquette, Guenter Roeck, Ohad Ben-Cohen,
	linux-pm-u79uwXL29TY76Z2rM5mHXA, Thomas Gleixner, Vincent Abriou,
	Bin Liu, Greg Kroah-Hartman, linux-usb-u79uwXL29TY76Z2rM5mHXA,
	linux-wireless-u79uwXL29TY76Z2rM5mHXA
In-Reply-To: <20170719152646.25903-1-p.zabel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>

Hi,

>   crypto: rockchip: explicitly request exclusive reset control
>   iio: adc: rockchip_saradc: explicitly request exclusive reset control
>   PCI: rockchip: explicitly request exclusive reset control
>   phy: rockchip-pcie: explicitly request exclusive reset control
>   phy: rockchip-typec: explicitly request exclusive reset control
>   phy: rockchip-usb: explicitly request exclusive reset control
>   thermal: rockchip: explicitly request exclusive reset control

for the driver-related Rockchip changes

Acked-by: Heiko Stuebner <heiko-4mtYJXux2i+zQB+pC5nmwQ@public.gmane.org>

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox