LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/4] iommu/fsl: Add PAMU bypass enable register to ccsr_guts structure.
From: Varun Sethi @ 2012-11-20 13:54 UTC (permalink / raw)
  To: joerg.roedel, iommu, linuxppc-dev, linux-kernel, scottwood, timur
  Cc: Varun Sethi
In-Reply-To: <1353419697-31269-1-git-send-email-Varun.Sethi@freescale.com>

PAMU bypass enable register added to the ccsr_guts structure.

Signed-off-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Varun Sethi <Varun.Sethi@freescale.com>
---
 arch/powerpc/include/asm/fsl_guts.h |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/include/asm/fsl_guts.h b/arch/powerpc/include/asm/fsl_guts.h
index aa4c488..bb208eb 100644
--- a/arch/powerpc/include/asm/fsl_guts.h
+++ b/arch/powerpc/include/asm/fsl_guts.h
@@ -69,7 +69,9 @@ struct ccsr_guts {
 	u8	res0c4[0x224 - 0xc4];
 	__be32  iodelay1;	/* 0x.0224 - IO delay control register 1 */
 	__be32  iodelay2;	/* 0x.0228 - IO delay control register 2 */
-	u8	res22c[0x800 - 0x22c];
+	u8	res22c[0x604 - 0x22c];
+	__be32	pamubypenr; 	/* 0x.604 - PAMU bypass enable register */
+	u8	res608[0x800 - 0x608];
 	__be32	clkdvdr;	/* 0x.0800 - Clock Divide Register */
 	u8	res804[0x900 - 0x804];
 	__be32	ircr;		/* 0x.0900 - Infrared Control Register */
-- 
1.7.4.1

^ permalink raw reply related

* [PATCH 1/4 v2] iommu/fsl: Store iommu domain information pointer in archdata.
From: Varun Sethi @ 2012-11-20 13:54 UTC (permalink / raw)
  To: joerg.roedel, iommu, linuxppc-dev, linux-kernel, scottwood, timur
  Cc: Varun Sethi
In-Reply-To: <1353419697-31269-1-git-send-email-Varun.Sethi@freescale.com>

Add a new field in the device (powerpc) archdata structure for storing iommu domain
information pointer. This pointer is stored when the device is attached to a particular
domain.

Signed-off-by: Varun Sethi <Varun.Sethi@freescale.com>
---
 arch/powerpc/include/asm/device.h |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/include/asm/device.h b/arch/powerpc/include/asm/device.h
index 77e97dd..6dc79fe 100644
--- a/arch/powerpc/include/asm/device.h
+++ b/arch/powerpc/include/asm/device.h
@@ -28,6 +28,10 @@ struct dev_archdata {
 		void		*iommu_table_base;
 	} dma_data;
 
+	/* IOMMU domain information pointer. This would be set
+	 * when this device is attached to an iommu_domain.
+	 */
+	void			*iommu_domain;
 #ifdef CONFIG_SWIOTLB
 	dma_addr_t		max_direct_dma_addr;
 #endif
-- 
1.7.4.1

^ permalink raw reply related

* [PATCH 0/4] iommu/fsl: Freescale PAMU driver and IOMMU API implementation.
From: Varun Sethi @ 2012-11-20 13:54 UTC (permalink / raw)
  To: joerg.roedel, iommu, linuxppc-dev, linux-kernel, scottwood, timur
  Cc: Varun Sethi

This patchset provides the Freescale PAMU (Peripheral Access Management Unit) driver
and the corresponding IOMMU API implementation. PAMU is the IOMMU present on Freescale
QorIQ platforms. PAMU can authorize memory access, remap the memory address, and remap 
the I/O transaction type.

This set consists of the following patches:
1. Addition of new field in the device (powerpc) archdata structure for storing iommu domain information
   pointer. This pointer is stored when the device is attached to a particular iommu domain.
2. Add PAMU bypass enable register to the ccsr_guts structure.
3. Addition of domain attributes required by the PAMU driver IOMMU API.
4. PAMU driver and IOMMU API implementation.

This patch set is based on the next branch of the iommu git tree maintained by Joerg.


Varun Sethi (4):
  store iommu domain pointer in device archdata structure.
  Add PAMU bypass enable register to ccsr_guts structure.
  Add attributes for fsl PAMU driver.
  FSL PAMU driver.

 arch/powerpc/include/asm/device.h   |    4 +
 arch/powerpc/include/asm/fsl_guts.h |    4 +-
 drivers/iommu/Kconfig               |    8 +
 drivers/iommu/Makefile              |    1 +
 drivers/iommu/fsl_pamu.c            | 1152 +++++++++++++++++++++++++++++++++++++++
 drivers/iommu/fsl_pamu.h            |  398 ++++++++++++++
 drivers/iommu/fsl_pamu_domain.c     |  978 +++++++++++++++++++++++++++++++++
 drivers/iommu/fsl_pamu_domain.h     |  102 ++++
 include/linux/iommu.h               |   43 +++++++++++++++++++++++++++++++++++++++++++
 9 files changed, 2680 insertions(+), 1 deletions(-)
 create mode 100644 drivers/iommu/fsl_pamu.c
 create mode 100644 drivers/iommu/fsl_pamu.h
 create mode 100644 drivers/iommu/fsl_pamu_domain.c
 create mode 100644 drivers/iommu/fsl_pamu_domain.h

-- 
1.7.4.1

^ permalink raw reply

* Re: [PATCH 207/493] i2c: remove use of __devinit
From: Russell King - ARM Linux @ 2012-11-20 13:23 UTC (permalink / raw)
  To: Jean Delvare
  Cc: Rudolf Marek, Tony Lindgren, gregkh, Guan Xuetao, Wolfram Sang,
	Mark M. Hoffman, Bill Pemberton, linux-i2c, Ben Dooks, Barry Song,
	Olof Johansson, linux-omap, linuxppc-dev, linux-arm-kernel
In-Reply-To: <20121120092046.24496415@endymion.delvare>

On Tue, Nov 20, 2012 at 09:20:46AM +0100, Jean Delvare wrote:
> Hi Bill,
> 
> On Mon, 19 Nov 2012 13:22:36 -0500, Bill Pemberton wrote:
> > CONFIG_HOTPLUG is going away as an option so __devinit is no longer
> > needed.
> 
> Can you please point me/us to the discussion explaining the rationale
> behind this move, and the explanation of what will be done exactly?
> While I can easily understand that we want to drop CONFIG_HOTPLUG and
> always enable hot-plug support, I don't see where we are going with
> removing __devinit annotations and the like.

It's actually very simple to understand.

1. CONFIG_HOTPLUG is going away; it's already defined to always be 'Y'.
2. This means that the the devinit sections will not be discarded anymore.
3. As a result, there's no point the devinit sections existing anymore.
4. As there's no devinit sections, the __devinit marker is entirely
   redundant and useless.

The reason this is being done is because the benefit to cost ratio of this
is far too high; it's well proven that people constantly get these markings
wrong, and with most kernels having had hotplug enabled anyway, it's not
providing much in the way of space saving benefit over the number of section
conflicts it causes.  So, it's been decided a few years ago that this is
going to happen, with that justification, and it's been accepted by 300
odd kernel developers in at least one kernel summit when it was talked
about... and it's been mentioned on mailing lists several times.

^ permalink raw reply

* Re: [PATCH 065/493] i2c: remove use of __devexit_p
From: Jean Delvare @ 2012-11-20 13:46 UTC (permalink / raw)
  To: Bill Pemberton
  Cc: Rudolf Marek, Tony Lindgren, gregkh, Wolfram Sang,
	Mark M. Hoffman, linux-omap, linux-i2c, Ben Dooks, Barry Song,
	Olof Johansson, Guan Xuetao, linuxppc-dev, linux-arm-kernel
In-Reply-To: <1353349642-3677-65-git-send-email-wfp5p@virginia.edu>

On Mon, 19 Nov 2012 13:20:14 -0500, Bill Pemberton wrote:
> CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
> needed.

As mentioned on the lm-sensors list for hwmon patches already, I think
it would be much clearer to not split __devexit, __devexit_p, __devinit
etc. removal into separate patches. One patch per subsystem would be
easier to review and apply. If patches grow too large then you'd rather
split in a different direction, for example drivers/i2c/muxes vs.
drivers/i2c/busses or even grouped by related bus drivers (see entries
"I2C OVER PARALLEL PORT" and "I2C/SMBUS CONTROLLER DRIVERS FOR PC" in
MAINTAINERS for examples of meaningful groups.)

-- 
Jean Delvare

^ permalink raw reply

* Re: [PATCH 207/493] i2c: remove use of __devinit
From: Jean Delvare @ 2012-11-20 13:37 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Rudolf Marek, Tony Lindgren, gregkh, Guan Xuetao, Wolfram Sang,
	Mark M. Hoffman, Bill Pemberton, linux-i2c, Ben Dooks, Barry Song,
	Olof Johansson, linux-omap, linuxppc-dev, linux-arm-kernel
In-Reply-To: <20121120132342.GP3332@n2100.arm.linux.org.uk>

On Tue, 20 Nov 2012 13:23:42 +0000, Russell King - ARM Linux wrote:
> On Tue, Nov 20, 2012 at 09:20:46AM +0100, Jean Delvare wrote:
> > Hi Bill,
> > 
> > On Mon, 19 Nov 2012 13:22:36 -0500, Bill Pemberton wrote:
> > > CONFIG_HOTPLUG is going away as an option so __devinit is no longer
> > > needed.
> > 
> > Can you please point me/us to the discussion explaining the rationale
> > behind this move, and the explanation of what will be done exactly?
> > While I can easily understand that we want to drop CONFIG_HOTPLUG and
> > always enable hot-plug support, I don't see where we are going with
> > removing __devinit annotations and the like.
> 
> It's actually very simple to understand.
> 
> 1. CONFIG_HOTPLUG is going away; it's already defined to always be 'Y'.
> 2. This means that the the devinit sections will not be discarded anymore.
> 3. As a result, there's no point the devinit sections existing anymore.
> 4. As there's no devinit sections, the __devinit marker is entirely
>    redundant and useless.

Ah, yes, very simple indeed. Not sure how I managed to not understand
it earlier today. Thanks for explaining.

> The reason this is being done is because the benefit to cost ratio of this
> is far too high; it's well proven that people constantly get these markings
> wrong, and with most kernels having had hotplug enabled anyway, it's not
> providing much in the way of space saving benefit over the number of section
> conflicts it causes.  So, it's been decided a few years ago that this is

Yes, I completely agree.

> going to happen, with that justification, and it's been accepted by 300
> odd kernel developers in at least one kernel summit when it was talked

Probably that was one I didn't attend to, as I can't remember this
discussion.

> about... and it's been mentioned on mailing lists several times.

Maybe LKML, which I don't read. So I wasn't aware of the plan before
seeing Bill's patches.

-- 
Jean Delvare

^ permalink raw reply

* Re: [PATCH] PCI: MSI: Restore read_msi_msg_desc(); add get_cached_msi_msg_desc()
From: Ben Hutchings @ 2012-11-20 12:36 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: Stephen Rothwell, linux-pci, LKML, Jesse Barnes, Bjorn Helgaas,
	ppc-dev
In-Reply-To: <1353396032.17856.7.camel@pasglop>

On Tue, 2012-11-20 at 18:20 +1100, Benjamin Herrenschmidt wrote:
> On Fri, 2010-07-23 at 14:56 +0100, Ben Hutchings wrote:
> > commit 2ca1af9aa3285c6a5f103ed31ad09f7399fc65d7 "PCI: MSI: Remove
> > unsafe and unnecessary hardware access" changed read_msi_msg_desc() to
> > return the last MSI message written instead of reading it from the
> > device, since it may be called while the device is in a reduced
> > power state.
> 
> Looks reasonable... Jesse ?
[...]

So reasonable that it was committed a couple of years ago!

Where did you dredge this from?

Ben.

-- 
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

^ permalink raw reply

* Re: [PATCH v3 06/12] memory-hotplug: unregister memory section on SPARSEMEM_VMEMMAP
From: Jaegeuk Hanse @ 2012-11-20 11:16 UTC (permalink / raw)
  To: Yasuaki Ishimatsu, Wen Congyang
  Cc: linux-s390, linux-ia64, Len Brown, linux-acpi, linux-sh, x86,
	linux-kernel, cmetcalf, Jianguo Wu, linux-mm, Yasuaki Ishimatsu,
	paulus, Minchan Kim, KOSAKI Motohiro, David Rientjes, sparclinux,
	Christoph Lameter, linuxppc-dev, Andrew Morton, Jiang Liu
In-Reply-To: <1351763083-7905-7-git-send-email-wency@cn.fujitsu.com>

On 11/01/2012 05:44 PM, Wen Congyang wrote:
> From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>
> Currently __remove_section for SPARSEMEM_VMEMMAP does nothing. But even if
> we use SPARSEMEM_VMEMMAP, we can unregister the memory_section.
>
> So the patch add unregister_memory_section() into __remove_section().

Hi Yasuaki,

I have a question about these sparse vmemmap memory related patches. Hot 
add memory need allocated vmemmap pages, but this time is allocated by 
buddy system. How can gurantee virtual address is continuous to the 
address allocated before? If not continuous, page_to_pfn and pfn_to_page 
can't work correctly.

Regards,
Jaegeuk

>
> CC: David Rientjes <rientjes@google.com>
> CC: Jiang Liu <liuj97@gmail.com>
> CC: Len Brown <len.brown@intel.com>
> CC: Christoph Lameter <cl@linux.com>
> Cc: Minchan Kim <minchan.kim@gmail.com>
> CC: Andrew Morton <akpm@linux-foundation.org>
> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> CC: Wen Congyang <wency@cn.fujitsu.com>
> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
> ---
>   mm/memory_hotplug.c | 13 ++++++++-----
>   1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index ca07433..66a79a7 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -286,11 +286,14 @@ static int __meminit __add_section(int nid, struct zone *zone,
>   #ifdef CONFIG_SPARSEMEM_VMEMMAP
>   static int __remove_section(struct zone *zone, struct mem_section *ms)
>   {
> -	/*
> -	 * XXX: Freeing memmap with vmemmap is not implement yet.
> -	 *      This should be removed later.
> -	 */
> -	return -EBUSY;
> +	int ret = -EINVAL;
> +
> +	if (!valid_section(ms))
> +		return ret;
> +
> +	ret = unregister_memory_section(ms);
> +
> +	return ret;
>   }
>   #else
>   static int __remove_section(struct zone *zone, struct mem_section *ms)

^ permalink raw reply

* Re: [PATCH v3 06/12] memory-hotplug: unregister memory section on SPARSEMEM_VMEMMAP
From: Jaegeuk Hanse @ 2012-11-20 11:03 UTC (permalink / raw)
  To: Wen Congyang
  Cc: linux-s390, linux-ia64, Len Brown, linux-acpi, linux-sh, x86,
	linux-kernel, cmetcalf, Jianguo Wu, linux-mm, Yasuaki Ishimatsu,
	paulus, Minchan Kim, KOSAKI Motohiro, David Rientjes, sparclinux,
	Christoph Lameter, linuxppc-dev, Andrew Morton, Jiang Liu
In-Reply-To: <50AB4F6D.3050002@cn.fujitsu.com>

On 11/20/2012 05:37 PM, Wen Congyang wrote:
> At 11/20/2012 02:58 PM, Jaegeuk Hanse Wrote:
>> On 11/20/2012 02:55 PM, Wen Congyang wrote:
>>> At 11/20/2012 02:22 PM, Jaegeuk Hanse Wrote:
>>>> On 11/01/2012 05:44 PM, Wen Congyang wrote:
>>>>> From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>>>>
>>>>> Currently __remove_section for SPARSEMEM_VMEMMAP does nothing. But
>>>>> even if
>>>>> we use SPARSEMEM_VMEMMAP, we can unregister the memory_section.
>>>>>
>>>>> So the patch add unregister_memory_section() into __remove_section().
>>>> Hi Yasuaki,
>>>>
>>>> In order to review this patch, I should dig sparse memory codes in
>>>> advance. But I have some confuse of codes. Why need encode/decode mem
>>>> map instead of set mem_map to ms->section_mem_map directly?
>>> The memmap is aligned, and the low bits are zero. We store some
>>> information
>>> in these bits. So we need to encode/decode memmap here.
>> Hi Congyang,
>>
>> Thanks for you reponse. But I mean why return (unsigned long)(mem_map -
>> (section_nr_to_pfn(pnum))); in function sparse_encode_mem_map, and then
>> return ((struct page *)coded_mem_map) + section_nr_to_pfn(pnum); in
>> funtion sparse_decode_mem_map instead of just store mem_map in
>> ms->section_mep_map directly.
> I don't know why. I try to find the reason, but I don't find any
> place to use the pfn stored in the mem_map except in the decode
> function. Maybe the designer doesn't want us to access the mem_map
> directly.

It seems that mem_map is per node, but pfn is real pfn.
you can check __page_to_pfn.

>
> Thanks
> Wen Congyang
>
>> Regards,
>> Jaegeuk
>>
>>> Thanks
>>> Wen Congyang
>>>
>>>> Regards,
>>>> Jaegeuk
>>>>
>>>>> CC: David Rientjes <rientjes@google.com>
>>>>> CC: Jiang Liu <liuj97@gmail.com>
>>>>> CC: Len Brown <len.brown@intel.com>
>>>>> CC: Christoph Lameter <cl@linux.com>
>>>>> Cc: Minchan Kim <minchan.kim@gmail.com>
>>>>> CC: Andrew Morton <akpm@linux-foundation.org>
>>>>> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
>>>>> CC: Wen Congyang <wency@cn.fujitsu.com>
>>>>> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>>>> ---
>>>>>     mm/memory_hotplug.c | 13 ++++++++-----
>>>>>     1 file changed, 8 insertions(+), 5 deletions(-)
>>>>>
>>>>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
>>>>> index ca07433..66a79a7 100644
>>>>> --- a/mm/memory_hotplug.c
>>>>> +++ b/mm/memory_hotplug.c
>>>>> @@ -286,11 +286,14 @@ static int __meminit __add_section(int nid,
>>>>> struct zone *zone,
>>>>>     #ifdef CONFIG_SPARSEMEM_VMEMMAP
>>>>>     static int __remove_section(struct zone *zone, struct mem_section
>>>>> *ms)
>>>>>     {
>>>>> -    /*
>>>>> -     * XXX: Freeing memmap with vmemmap is not implement yet.
>>>>> -     *      This should be removed later.
>>>>> -     */
>>>>> -    return -EBUSY;
>>>>> +    int ret = -EINVAL;
>>>>> +
>>>>> +    if (!valid_section(ms))
>>>>> +        return ret;
>>>>> +
>>>>> +    ret = unregister_memory_section(ms);
>>>>> +
>>>>> +    return ret;
>>>>>     }
>>>>>     #else
>>>>>     static int __remove_section(struct zone *zone, struct mem_section
>>>>> *ms)
>>

^ permalink raw reply

* Re: [PATCH 1/4] perf/powerpc: Use uapi/unistd.h to fix build error
From: Suzuki K. Poulose @ 2012-11-20 10:43 UTC (permalink / raw)
  To: Sukadev Bhattiprolu
  Cc: Peter Zijlstra, robert.richter, Anton Blanchard, linux-kernel,
	linuxppc-dev, Ingo Molnar, Paul Mackerras,
	Arnaldo Carvalho de Melo
In-Reply-To: <20121107191818.GA16211@us.ibm.com>

On 11/08/2012 12:48 AM, Sukadev Bhattiprolu wrote:
>
>  From b8beef080260c1625c8f801105504a82005295e5 Mon Sep 17 00:00:00 2001
> From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
> Date: Wed, 31 Oct 2012 11:21:28 -0700
> Subject: [PATCH 1/4] perf/powerpc: Use uapi/unistd.h to fix build error
>
> Use the 'unistd.h' from arch/powerpc/include/uapi to build the perf tool.
>
> Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Without this patch, I couldn't build perf on powerpc, with 3.7.0-rc2

Tested-by: Suzuki K. Poulose <suzuki@in.ibm.com>

Thanks
Suzuki
> ---
>   tools/perf/perf.h |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/tools/perf/perf.h b/tools/perf/perf.h
> index 054182e..f4952da 100644
> --- a/tools/perf/perf.h
> +++ b/tools/perf/perf.h
> @@ -26,7 +26,7 @@ void get_term_dimensions(struct winsize *ws);
>   #endif
>
>   #ifdef __powerpc__
> -#include "../../arch/powerpc/include/asm/unistd.h"
> +#include "../../arch/powerpc/include/uapi/asm/unistd.h"
>   #define rmb()		asm volatile ("sync" ::: "memory")
>   #define cpu_relax()	asm volatile ("" ::: "memory");
>   #define CPUINFO_PROC	"cpu"
>

^ permalink raw reply

* Re: [PATCH 429/493] tty: remove use of __devexit
From: Tobias Klauser @ 2012-11-20  9:45 UTC (permalink / raw)
  To: Bill Pemberton
  Cc: nios2-dev, Jiri Slaby, gregkh, linux-arm-msm, uclinux-dist-devel,
	Tony Prisk, Bryan Huntsman, linux-serial, Lucas Tavares,
	sparclinux, Daniel Walker, David Brown, linuxppc-dev,
	David S. Miller, linux-arm-kernel, Alan Cox
In-Reply-To: <1353349642-3677-429-git-send-email-wfp5p@virginia.edu>

On 2012-11-19 at 19:26:18 +0100, Bill Pemberton <wfp5p@virginia.edu> wrote:
> CONFIG_HOTPLUG is going away as an option so __devexit is no
> longer needed.
> 
> Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
> Cc: Jiri Slaby <jirislaby@gmail.com> 
> Cc: Alan Cox <alan@linux.intel.com> 
> Cc: Tobias Klauser <tklauser@distanz.ch> 
> Cc: Lucas Tavares <lucaskt@linux.vnet.ibm.com> 
> Cc: David Brown <davidb@codeaurora.org> 
> Cc: Daniel Walker <dwalker@fifo99.com> 
> Cc: Bryan Huntsman <bryanh@codeaurora.org> 
> Cc: "David S. Miller" <davem@davemloft.net> 
> Cc: Peter Korsgaard <jacmet@sunsite.dk> 
> Cc: Tony Prisk <linux@prisktech.co.nz> 
> Cc: linuxppc-dev@lists.ozlabs.org 
> Cc: linux-serial@vger.kernel.org 
> Cc: nios2-dev@sopc.et.ntust.edu.tw 
> Cc: uclinux-dist-devel@blackfin.uclinux.org 
> Cc: linux-arm-msm@vger.kernel.org 
> Cc: sparclinux@vger.kernel.org 
> Cc: linux-arm-kernel@lists.infradead.org 
> ---
[...]
>  drivers/tty/serial/altera_jtaguart.c        |  2 +-
>  drivers/tty/serial/altera_uart.c            |  2 +-

Acked-by: Tobias Klauser <tklauser@distanz.ch>

^ permalink raw reply

* Re: [PATCH 161/493] tty: remove use of __devinit
From: Tobias Klauser @ 2012-11-20  9:44 UTC (permalink / raw)
  To: Bill Pemberton
  Cc: nios2-dev, linux-ia64, Jiri Slaby, gregkh, Tony Prisk,
	linux-serial, Lucas Tavares, sparclinux, linuxppc-dev,
	David S. Miller, linux-arm-kernel, Alan Cox
In-Reply-To: <1353349642-3677-161-git-send-email-wfp5p@virginia.edu>

On 2012-11-19 at 19:21:50 +0100, Bill Pemberton <wfp5p@virginia.edu> wrote:
> CONFIG_HOTPLUG is going away as an option so __devinit is no longer
> needed.
> 
> Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
> Cc: Jiri Slaby <jirislaby@gmail.com> 
> Cc: Alan Cox <alan@linux.intel.com> 
> Cc: Tobias Klauser <tklauser@distanz.ch> 
> Cc: Lucas Tavares <lucaskt@linux.vnet.ibm.com> 
> Cc: "David S. Miller" <davem@davemloft.net> 
> Cc: Peter Korsgaard <jacmet@sunsite.dk> 
> Cc: Tony Prisk <linux@prisktech.co.nz> 
> Cc: linuxppc-dev@lists.ozlabs.org 
> Cc: linux-serial@vger.kernel.org 
> Cc: nios2-dev@sopc.et.ntust.edu.tw 
> Cc: linux-ia64@vger.kernel.org 
> Cc: sparclinux@vger.kernel.org 
> Cc: linux-arm-kernel@lists.infradead.org 
> ---
[...]
>  drivers/tty/serial/altera_jtaguart.c        |  2 +-
>  drivers/tty/serial/altera_uart.c            |  2 +-

Acked-by: Tobias Klauser <tklauser@distanz.ch>

^ permalink raw reply

* Re: [PATCH 161/493] tty: remove use of __devinit
From: Nicolas Ferre @ 2012-11-20  9:34 UTC (permalink / raw)
  To: Bill Pemberton
  Cc: nios2-dev, linux-ia64, Jiri Slaby, gregkh, linux-serial,
	Lucas Tavares, sparclinux, Tobias Klauser, linuxppc-dev,
	David S. Miller, linux-arm-kernel, Alan Cox
In-Reply-To: <1353349642-3677-161-git-send-email-wfp5p@virginia.edu>

On 11/19/2012 07:21 PM, Bill Pemberton :
> CONFIG_HOTPLUG is going away as an option so __devinit is no longer
> needed.
> 
> Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
> Cc: Jiri Slaby <jirislaby@gmail.com> 
> Cc: Alan Cox <alan@linux.intel.com> 
> Cc: Tobias Klauser <tklauser@distanz.ch> 
> Cc: Lucas Tavares <lucaskt@linux.vnet.ibm.com> 
> Cc: "David S. Miller" <davem@davemloft.net> 
> Cc: Peter Korsgaard <jacmet@sunsite.dk> 
> Cc: Tony Prisk <linux@prisktech.co.nz> 
> Cc: linuxppc-dev@lists.ozlabs.org 
> Cc: linux-serial@vger.kernel.org 
> Cc: nios2-dev@sopc.et.ntust.edu.tw 
> Cc: linux-ia64@vger.kernel.org 
> Cc: sparclinux@vger.kernel.org 
> Cc: linux-arm-kernel@lists.infradead.org 

>  drivers/tty/serial/atmel_serial.c           |  6 +++---

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

> diff --git a/drivers/tty/cyclades.c b/drivers/tty/cyclades.c
> index 0244acf..444b544 100644
> --- a/drivers/tty/cyclades.c
> +++ b/drivers/tty/cyclades.c
> @@ -3099,7 +3099,7 @@ static const struct tty_port_operations cyz_port_ops = {
>   * ---------------------------------------------------------------------
>   */
>  
> -static int __devinit cy_init_card(struct cyclades_card *cinfo)
> +static int cy_init_card(struct cyclades_card *cinfo)
>  {
>  	struct cyclades_port *info;
>  	unsigned int channel, port;
> @@ -3196,7 +3196,7 @@ static int __devinit cy_init_card(struct cyclades_card *cinfo)
>  
>  /* initialize chips on Cyclom-Y card -- return number of valid
>     chips (which is number of ports/4) */
> -static unsigned short __devinit cyy_init_card(void __iomem *true_base_addr,
> +static unsigned short cyy_init_card(void __iomem *true_base_addr,
>  		int index)
>  {
>  	unsigned int chip_number;
> @@ -3405,7 +3405,7 @@ static int __init cy_detect_isa(void)
>  }				/* cy_detect_isa */
>  
>  #ifdef CONFIG_PCI
> -static inline int __devinit cyc_isfwstr(const char *str, unsigned int size)
> +static inline int cyc_isfwstr(const char *str, unsigned int size)
>  {
>  	unsigned int a;
>  
> @@ -3420,7 +3420,7 @@ static inline int __devinit cyc_isfwstr(const char *str, unsigned int size)
>  	return 0;
>  }
>  
> -static inline void __devinit cyz_fpga_copy(void __iomem *fpga, const u8 *data,
> +static inline void cyz_fpga_copy(void __iomem *fpga, const u8 *data,
>  		unsigned int size)
>  {
>  	for (; size > 0; size--) {
> @@ -3429,7 +3429,7 @@ static inline void __devinit cyz_fpga_copy(void __iomem *fpga, const u8 *data,
>  	}
>  }
>  
> -static void __devinit plx_init(struct pci_dev *pdev, int irq,
> +static void plx_init(struct pci_dev *pdev, int irq,
>  		struct RUNTIME_9060 __iomem *addr)
>  {
>  	/* Reset PLX */
> @@ -3449,7 +3449,7 @@ static void __devinit plx_init(struct pci_dev *pdev, int irq,
>  	pci_write_config_byte(pdev, PCI_INTERRUPT_LINE, irq);
>  }
>  
> -static int __devinit __cyz_load_fw(const struct firmware *fw,
> +static int __cyz_load_fw(const struct firmware *fw,
>  		const char *name, const u32 mailbox, void __iomem *base,
>  		void __iomem *fpga)
>  {
> @@ -3526,7 +3526,7 @@ static int __devinit __cyz_load_fw(const struct firmware *fw,
>  	return 0;
>  }
>  
> -static int __devinit cyz_load_fw(struct pci_dev *pdev, void __iomem *base_addr,
> +static int cyz_load_fw(struct pci_dev *pdev, void __iomem *base_addr,
>  		struct RUNTIME_9060 __iomem *ctl_addr, int irq)
>  {
>  	const struct firmware *fw;
> @@ -3692,7 +3692,7 @@ err:
>  	return retval;
>  }
>  
> -static int __devinit cy_pci_probe(struct pci_dev *pdev,
> +static int cy_pci_probe(struct pci_dev *pdev,
>  		const struct pci_device_id *ent)
>  {
>  	struct cyclades_card *card;
> diff --git a/drivers/tty/ehv_bytechan.c b/drivers/tty/ehv_bytechan.c
> index 4ab936b..65d4320 100644
> --- a/drivers/tty/ehv_bytechan.c
> +++ b/drivers/tty/ehv_bytechan.c
> @@ -699,7 +699,7 @@ static const struct tty_port_operations ehv_bc_tty_port_ops = {
>  	.shutdown = ehv_bc_tty_port_shutdown,
>  };
>  
> -static int __devinit ehv_bc_tty_probe(struct platform_device *pdev)
> +static int ehv_bc_tty_probe(struct platform_device *pdev)
>  {
>  	struct device_node *np = pdev->dev.of_node;
>  	struct ehv_bc_data *bc;
> diff --git a/drivers/tty/hvc/hvc_opal.c b/drivers/tty/hvc/hvc_opal.c
> index f39337f..5ddd6f5 100644
> --- a/drivers/tty/hvc/hvc_opal.c
> +++ b/drivers/tty/hvc/hvc_opal.c
> @@ -161,7 +161,7 @@ static const struct hv_ops hvc_opal_hvsi_ops = {
>  	.tiocmset = hvc_opal_hvsi_tiocmset,
>  };
>  
> -static int __devinit hvc_opal_probe(struct platform_device *dev)
> +static int hvc_opal_probe(struct platform_device *dev)
>  {
>  	const struct hv_ops *ops;
>  	struct hvc_struct *hp;
> diff --git a/drivers/tty/hvc/hvc_vio.c b/drivers/tty/hvc/hvc_vio.c
> index 1a5894c..f7333e3 100644
> --- a/drivers/tty/hvc/hvc_vio.c
> +++ b/drivers/tty/hvc/hvc_vio.c
> @@ -293,7 +293,7 @@ static int udbg_hvc_getc(void)
>  	}
>  }
>  
> -static int __devinit hvc_vio_probe(struct vio_dev *vdev,
> +static int hvc_vio_probe(struct vio_dev *vdev,
>  				   const struct vio_device_id *id)
>  {
>  	const struct hv_ops *ops;
> diff --git a/drivers/tty/hvc/hvc_xen.c b/drivers/tty/hvc/hvc_xen.c
> index f4abfe2..19843ec 100644
> --- a/drivers/tty/hvc/hvc_xen.c
> +++ b/drivers/tty/hvc/hvc_xen.c
> @@ -422,7 +422,7 @@ static int xencons_connect_backend(struct xenbus_device *dev,
>  	return ret;
>  }
>  
> -static int __devinit xencons_probe(struct xenbus_device *dev,
> +static int xencons_probe(struct xenbus_device *dev,
>  				  const struct xenbus_device_id *id)
>  {
>  	int ret, devid;
> diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c
> index 888af58..506a28e 100644
> --- a/drivers/tty/hvc/hvcs.c
> +++ b/drivers/tty/hvc/hvcs.c
> @@ -330,12 +330,12 @@ static int hvcs_open(struct tty_struct *tty, struct file *filp);
>  static void hvcs_close(struct tty_struct *tty, struct file *filp);
>  static void hvcs_hangup(struct tty_struct * tty);
>  
> -static int __devinit hvcs_probe(struct vio_dev *dev,
> +static int hvcs_probe(struct vio_dev *dev,
>  		const struct vio_device_id *id);
>  static int __devexit hvcs_remove(struct vio_dev *dev);
>  static int __init hvcs_module_init(void);
>  static void __exit hvcs_module_exit(void);
> -static int __devinit hvcs_initialize(void);
> +static int hvcs_initialize(void);
>  
>  #define HVCS_SCHED_READ	0x00000001
>  #define HVCS_QUICK_READ	0x00000002
> @@ -756,7 +756,7 @@ static int hvcs_get_index(void)
>  	return -1;
>  }
>  
> -static int __devinit hvcs_probe(
> +static int hvcs_probe(
>  	struct vio_dev *dev,
>  	const struct vio_device_id *id)
>  {
> @@ -1478,7 +1478,7 @@ static void hvcs_free_index_list(void)
>  	hvcs_index_count = 0;
>  }
>  
> -static int __devinit hvcs_initialize(void)
> +static int hvcs_initialize(void)
>  {
>  	int rc, num_ttys_to_alloc;
>  
> diff --git a/drivers/tty/isicom.c b/drivers/tty/isicom.c
> index 4775747..d1c1fef 100644
> --- a/drivers/tty/isicom.c
> +++ b/drivers/tty/isicom.c
> @@ -1307,7 +1307,7 @@ static const struct tty_port_operations isicom_port_ops = {
>  	.shutdown		= isicom_shutdown,
>  };
>  
> -static int __devinit reset_card(struct pci_dev *pdev,
> +static int reset_card(struct pci_dev *pdev,
>  	const unsigned int card, unsigned int *signature)
>  {
>  	struct isi_board *board = pci_get_drvdata(pdev);
> @@ -1368,7 +1368,7 @@ end:
>  	return retval;
>  }
>  
> -static int __devinit load_firmware(struct pci_dev *pdev,
> +static int load_firmware(struct pci_dev *pdev,
>  	const unsigned int index, const unsigned int signature)
>  {
>  	struct isi_board *board = pci_get_drvdata(pdev);
> @@ -1548,7 +1548,7 @@ end:
>   */
>  static unsigned int card_count;
>  
> -static int __devinit isicom_probe(struct pci_dev *pdev,
> +static int isicom_probe(struct pci_dev *pdev,
>  	const struct pci_device_id *ent)
>  {
>  	unsigned int uninitialized_var(signature), index;
> diff --git a/drivers/tty/moxa.c b/drivers/tty/moxa.c
> index c2d0cc3..0998773 100644
> --- a/drivers/tty/moxa.c
> +++ b/drivers/tty/moxa.c
> @@ -941,7 +941,7 @@ static void moxa_board_deinit(struct moxa_board_conf *brd)
>  }
>  
>  #ifdef CONFIG_PCI
> -static int __devinit moxa_pci_probe(struct pci_dev *pdev,
> +static int moxa_pci_probe(struct pci_dev *pdev,
>  		const struct pci_device_id *ent)
>  {
>  	struct moxa_board_conf *board;
> diff --git a/drivers/tty/mxser.c b/drivers/tty/mxser.c
> index f026797..9de9753 100644
> --- a/drivers/tty/mxser.c
> +++ b/drivers/tty/mxser.c
> @@ -487,7 +487,7 @@ static void mxser_disable_must_rx_software_flow_control(unsigned long baseio)
>  }
>  
>  #ifdef CONFIG_PCI
> -static int __devinit CheckIsMoxaMust(unsigned long io)
> +static int CheckIsMoxaMust(unsigned long io)
>  {
>  	u8 oldmcr, hwid;
>  	int i;
> @@ -2369,7 +2369,7 @@ static void mxser_release_ISA_res(struct mxser_board *brd)
>  	mxser_release_vector(brd);
>  }
>  
> -static int __devinit mxser_initbrd(struct mxser_board *brd,
> +static int mxser_initbrd(struct mxser_board *brd,
>  		struct pci_dev *pdev)
>  {
>  	struct mxser_port *info;
> @@ -2534,7 +2534,7 @@ err_irqconflict:
>  	return -EIO;
>  }
>  
> -static int __devinit mxser_probe(struct pci_dev *pdev,
> +static int mxser_probe(struct pci_dev *pdev,
>  		const struct pci_device_id *ent)
>  {
>  #ifdef CONFIG_PCI
> diff --git a/drivers/tty/nozomi.c b/drivers/tty/nozomi.c
> index dc0213e..645f54a 100644
> --- a/drivers/tty/nozomi.c
> +++ b/drivers/tty/nozomi.c
> @@ -1360,7 +1360,7 @@ static void remove_sysfs_files(struct nozomi *dc)
>  }
>  
>  /* Allocate memory for one device */
> -static int __devinit nozomi_card_init(struct pci_dev *pdev,
> +static int nozomi_card_init(struct pci_dev *pdev,
>  				      const struct pci_device_id *ent)
>  {
>  	resource_size_t start;
> diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c
> index 870c5f2..40ba8cc 100644
> --- a/drivers/tty/serial/8250/8250.c
> +++ b/drivers/tty/serial/8250/8250.c
> @@ -2989,7 +2989,7 @@ void serial8250_resume_port(int line)
>   * list is terminated with a zero flags entry, which means we expect
>   * all entries to have at least UPF_BOOT_AUTOCONF set.
>   */
> -static int __devinit serial8250_probe(struct platform_device *dev)
> +static int serial8250_probe(struct platform_device *dev)
>  {
>  	struct plat_serial8250_port *p = dev->dev.platform_data;
>  	struct uart_8250_port uart;
> diff --git a/drivers/tty/serial/8250/8250_acorn.c b/drivers/tty/serial/8250/8250_acorn.c
> index b5e4b49..ed095eb 100644
> --- a/drivers/tty/serial/8250/8250_acorn.c
> +++ b/drivers/tty/serial/8250/8250_acorn.c
> @@ -38,7 +38,7 @@ struct serial_card_info {
>  	void __iomem *vaddr;
>  };
>  
> -static int __devinit
> +static int
>  serial_card_probe(struct expansion_card *ec, const struct ecard_id *id)
>  {
>  	struct serial_card_info *info;
> diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
> index 2db80d0..7664750 100644
> --- a/drivers/tty/serial/8250/8250_dw.c
> +++ b/drivers/tty/serial/8250/8250_dw.c
> @@ -87,7 +87,7 @@ static int dw8250_handle_irq(struct uart_port *p)
>  	return 0;
>  }
>  
> -static int __devinit dw8250_probe(struct platform_device *pdev)
> +static int dw8250_probe(struct platform_device *pdev)
>  {
>  	struct uart_8250_port uart = {};
>  	struct resource *regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> diff --git a/drivers/tty/serial/8250/8250_em.c b/drivers/tty/serial/8250/8250_em.c
> index 80c0a62..f59bff5 100644
> --- a/drivers/tty/serial/8250/8250_em.c
> +++ b/drivers/tty/serial/8250/8250_em.c
> @@ -89,7 +89,7 @@ static void serial8250_em_serial_dl_write(struct uart_8250_port *up, int value)
>  	serial_out(up, UART_DLM_EM, value >> 8 & 0xff);
>  }
>  
> -static int __devinit serial8250_em_probe(struct platform_device *pdev)
> +static int serial8250_em_probe(struct platform_device *pdev)
>  {
>  	struct resource *regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	struct resource *irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> diff --git a/drivers/tty/serial/8250/8250_hp300.c b/drivers/tty/serial/8250/8250_hp300.c
> index 89e8855..2b94505 100644
> --- a/drivers/tty/serial/8250/8250_hp300.c
> +++ b/drivers/tty/serial/8250/8250_hp300.c
> @@ -36,7 +36,7 @@ static struct hp300_port *hp300_ports;
>  
>  #ifdef CONFIG_HPDCA
>  
> -static int __devinit hpdca_init_one(struct dio_dev *d,
> +static int hpdca_init_one(struct dio_dev *d,
>  					const struct dio_device_id *ent);
>  static void __devexit hpdca_remove_one(struct dio_dev *d);
>  
> @@ -159,7 +159,7 @@ int __init hp300_setup_serial_console(void)
>  #endif /* CONFIG_SERIAL_8250_CONSOLE */
>  
>  #ifdef CONFIG_HPDCA
> -static int __devinit hpdca_init_one(struct dio_dev *d,
> +static int hpdca_init_one(struct dio_dev *d,
>  				const struct dio_device_id *ent)
>  {
>  	struct uart_8250_port uart;
> diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
> index c049cfa..a5acb57 100644
> --- a/drivers/tty/serial/8250/8250_pci.c
> +++ b/drivers/tty/serial/8250/8250_pci.c
> @@ -2691,7 +2691,7 @@ static const struct pci_device_id blacklist[] = {
>   * guess what the configuration might be, based on the pitiful PCI
>   * serial specs.  Returns 0 on success, 1 on failure.
>   */
> -static int __devinit
> +static int
>  serial_pci_guess_board(struct pci_dev *dev, struct pciserial_board *board)
>  {
>  	const struct pci_device_id *bldev;
> @@ -2917,7 +2917,7 @@ EXPORT_SYMBOL_GPL(pciserial_resume_ports);
>   * Probe one serial board.  Unfortunately, there is no rhyme nor reason
>   * to the arrangement of serial ports on a PCI card.
>   */
> -static int __devinit
> +static int
>  pciserial_init_one(struct pci_dev *dev, const struct pci_device_id *ent)
>  {
>  	struct pci_serial_quirk *quirk;
> diff --git a/drivers/tty/serial/8250/8250_pnp.c b/drivers/tty/serial/8250/8250_pnp.c
> index e566220..2b8a6ac 100644
> --- a/drivers/tty/serial/8250/8250_pnp.c
> +++ b/drivers/tty/serial/8250/8250_pnp.c
> @@ -377,7 +377,7 @@ static char *modem_names[] __devinitdata = {
>  	"33600", "28800", "14400", "V.90", "V.34", "V.32", NULL
>  };
>  
> -static int __devinit check_name(char *name)
> +static int check_name(char *name)
>  {
>  	char **tmp;
>  
> @@ -388,7 +388,7 @@ static int __devinit check_name(char *name)
>  	return 0;
>  }
>  
> -static int __devinit check_resources(struct pnp_dev *dev)
> +static int check_resources(struct pnp_dev *dev)
>  {
>  	resource_size_t base[] = {0x2f8, 0x3f8, 0x2e8, 0x3e8};
>  	int i;
> @@ -412,7 +412,7 @@ static int __devinit check_resources(struct pnp_dev *dev)
>   * PnP modems, alternatively we must hardcode all modems in pnp_devices[]
>   * table.
>   */
> -static int __devinit serial_pnp_guess_board(struct pnp_dev *dev)
> +static int serial_pnp_guess_board(struct pnp_dev *dev)
>  {
>  	if (!(check_name(pnp_dev_name(dev)) ||
>  		(dev->card && check_name(dev->card->name))))
> @@ -424,7 +424,7 @@ static int __devinit serial_pnp_guess_board(struct pnp_dev *dev)
>  	return -ENODEV;
>  }
>  
> -static int __devinit
> +static int
>  serial_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *dev_id)
>  {
>  	struct uart_8250_port uart;
> diff --git a/drivers/tty/serial/altera_jtaguart.c b/drivers/tty/serial/altera_jtaguart.c
> index ef16b0a..ef5c705 100644
> --- a/drivers/tty/serial/altera_jtaguart.c
> +++ b/drivers/tty/serial/altera_jtaguart.c
> @@ -406,7 +406,7 @@ static struct uart_driver altera_jtaguart_driver = {
>  	.cons		= ALTERA_JTAGUART_CONSOLE,
>  };
>  
> -static int __devinit altera_jtaguart_probe(struct platform_device *pdev)
> +static int altera_jtaguart_probe(struct platform_device *pdev)
>  {
>  	struct altera_jtaguart_platform_uart *platp = pdev->dev.platform_data;
>  	struct uart_port *port;
> diff --git a/drivers/tty/serial/altera_uart.c b/drivers/tty/serial/altera_uart.c
> index 117ea2c..066b503 100644
> --- a/drivers/tty/serial/altera_uart.c
> +++ b/drivers/tty/serial/altera_uart.c
> @@ -532,7 +532,7 @@ static int altera_uart_get_of_uartclk(struct platform_device *pdev,
>  }
>  #endif /* CONFIG_OF */
>  
> -static int __devinit altera_uart_probe(struct platform_device *pdev)
> +static int altera_uart_probe(struct platform_device *pdev)
>  {
>  	struct altera_uart_platform_uart *platp = pdev->dev.platform_data;
>  	struct uart_port *port;
> diff --git a/drivers/tty/serial/apbuart.c b/drivers/tty/serial/apbuart.c
> index 7162f70..59ae2b5 100644
> --- a/drivers/tty/serial/apbuart.c
> +++ b/drivers/tty/serial/apbuart.c
> @@ -554,7 +554,7 @@ static struct uart_driver grlib_apbuart_driver = {
>  /* OF Platform Driver                                                       */
>  /* ======================================================================== */
>  
> -static int __devinit apbuart_probe(struct platform_device *op)
> +static int apbuart_probe(struct platform_device *op)
>  {
>  	int i;
>  	struct uart_port *port = NULL;
> diff --git a/drivers/tty/serial/ar933x_uart.c b/drivers/tty/serial/ar933x_uart.c
> index 33122f9..fab0a91 100644
> --- a/drivers/tty/serial/ar933x_uart.c
> +++ b/drivers/tty/serial/ar933x_uart.c
> @@ -554,7 +554,7 @@ static struct uart_driver ar933x_uart_driver = {
>  	.cons		= AR933X_SERIAL_CONSOLE,
>  };
>  
> -static int __devinit ar933x_uart_probe(struct platform_device *pdev)
> +static int ar933x_uart_probe(struct platform_device *pdev)
>  {
>  	struct ar933x_uart_platform_data *pdata;
>  	struct ar933x_uart_port *up;
> diff --git a/drivers/tty/serial/arc_uart.c b/drivers/tty/serial/arc_uart.c
> index d652569..158d798 100644
> --- a/drivers/tty/serial/arc_uart.c
> +++ b/drivers/tty/serial/arc_uart.c
> @@ -525,7 +525,7 @@ static struct uart_ops arc_serial_pops = {
>  #endif
>  };
>  
> -static int __devinit
> +static int
>  arc_uart_init_one(struct platform_device *pdev, struct arc_uart_port *uart)
>  {
>  	struct resource *res, *res2;
> @@ -577,7 +577,7 @@ arc_uart_init_one(struct platform_device *pdev, struct arc_uart_port *uart)
>  
>  #ifdef CONFIG_SERIAL_ARC_CONSOLE
>  
> -static int __devinit arc_serial_console_setup(struct console *co, char *options)
> +static int arc_serial_console_setup(struct console *co, char *options)
>  {
>  	struct uart_port *port;
>  	int baud = 115200;
> @@ -655,7 +655,7 @@ static struct __initdata console arc_early_serial_console = {
>  	.index = -1
>  };
>  
> -static int __devinit arc_serial_probe_earlyprintk(struct platform_device *pdev)
> +static int arc_serial_probe_earlyprintk(struct platform_device *pdev)
>  {
>  	arc_early_serial_console.index = pdev->id;
>  
> @@ -667,13 +667,13 @@ static int __devinit arc_serial_probe_earlyprintk(struct platform_device *pdev)
>  	return 0;
>  }
>  #else
> -static int __devinit arc_serial_probe_earlyprintk(struct platform_device *pdev)
> +static int arc_serial_probe_earlyprintk(struct platform_device *pdev)
>  {
>  	return -ENODEV;
>  }
>  #endif	/* CONFIG_SERIAL_ARC_CONSOLE */
>  
> -static int __devinit arc_serial_probe(struct platform_device *pdev)
> +static int arc_serial_probe(struct platform_device *pdev)
>  {
>  	struct arc_uart_port *uart;
>  	int rc;
> diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c
> index 7f91d08..c1f6c0b 100644
> --- a/drivers/tty/serial/atmel_serial.c
> +++ b/drivers/tty/serial/atmel_serial.c
> @@ -1424,7 +1424,7 @@ static struct uart_ops atmel_pops = {
>  #endif
>  };
>  
> -static void __devinit atmel_of_init_port(struct atmel_uart_port *atmel_port,
> +static void atmel_of_init_port(struct atmel_uart_port *atmel_port,
>  					 struct device_node *np)
>  {
>  	u32 rs485_delay[2];
> @@ -1459,7 +1459,7 @@ static void __devinit atmel_of_init_port(struct atmel_uart_port *atmel_port,
>  /*
>   * Configure the port from the platform device resource info.
>   */
> -static void __devinit atmel_init_port(struct atmel_uart_port *atmel_port,
> +static void atmel_init_port(struct atmel_uart_port *atmel_port,
>  				      struct platform_device *pdev)
>  {
>  	struct uart_port *port = &atmel_port->uart;
> @@ -1767,7 +1767,7 @@ static int atmel_serial_resume(struct platform_device *pdev)
>  #define atmel_serial_resume NULL
>  #endif
>  
> -static int __devinit atmel_serial_probe(struct platform_device *pdev)
> +static int atmel_serial_probe(struct platform_device *pdev)
>  {
>  	struct atmel_uart_port *port;
>  	struct device_node *np = pdev->dev.of_node;
> diff --git a/drivers/tty/serial/bcm63xx_uart.c b/drivers/tty/serial/bcm63xx_uart.c
> index 7f631d4..e54d170 100644
> --- a/drivers/tty/serial/bcm63xx_uart.c
> +++ b/drivers/tty/serial/bcm63xx_uart.c
> @@ -801,7 +801,7 @@ static struct uart_driver bcm_uart_driver = {
>  /*
>   * platform driver probe/remove callback
>   */
> -static int __devinit bcm_uart_probe(struct platform_device *pdev)
> +static int bcm_uart_probe(struct platform_device *pdev)
>  {
>  	struct resource *res_mem, *res_irq;
>  	struct uart_port *port;
> diff --git a/drivers/tty/serial/bfin_sport_uart.c b/drivers/tty/serial/bfin_sport_uart.c
> index b4a18c7..a47e00b 100644
> --- a/drivers/tty/serial/bfin_sport_uart.c
> +++ b/drivers/tty/serial/bfin_sport_uart.c
> @@ -740,7 +740,7 @@ static struct dev_pm_ops bfin_sport_uart_dev_pm_ops = {
>  };
>  #endif
>  
> -static int __devinit sport_uart_probe(struct platform_device *pdev)
> +static int sport_uart_probe(struct platform_device *pdev)
>  {
>  	struct resource *res;
>  	struct sport_uart_port *sport;
> diff --git a/drivers/tty/serial/clps711x.c b/drivers/tty/serial/clps711x.c
> index d631ef5..006d283 100644
> --- a/drivers/tty/serial/clps711x.c
> +++ b/drivers/tty/serial/clps711x.c
> @@ -429,7 +429,7 @@ static int uart_clps711x_console_setup(struct console *co, char *options)
>  }
>  #endif
>  
> -static int __devinit uart_clps711x_probe(struct platform_device *pdev)
> +static int uart_clps711x_probe(struct platform_device *pdev)
>  {
>  	struct clps711x_port *s;
>  	int ret, i;
> diff --git a/drivers/tty/serial/cpm_uart/cpm_uart_core.c b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
> index d0dd919..de3f0f6 100644
> --- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c
> +++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c
> @@ -1373,7 +1373,7 @@ static struct uart_driver cpm_reg = {
>  
>  static int probe_index;
>  
> -static int __devinit cpm_uart_probe(struct platform_device *ofdev)
> +static int cpm_uart_probe(struct platform_device *ofdev)
>  {
>  	int index = probe_index++;
>  	struct uart_cpm_port *pinfo = &cpm_uart_ports[index];
> diff --git a/drivers/tty/serial/efm32-uart.c b/drivers/tty/serial/efm32-uart.c
> index 1e8bacf..833c33a 100644
> --- a/drivers/tty/serial/efm32-uart.c
> +++ b/drivers/tty/serial/efm32-uart.c
> @@ -690,7 +690,7 @@ static int efm32_uart_probe_dt(struct platform_device *pdev,
>  
>  }
>  
> -static int __devinit efm32_uart_probe(struct platform_device *pdev)
> +static int efm32_uart_probe(struct platform_device *pdev)
>  {
>  	struct efm32_uart_port *efm_port;
>  	struct resource *res;
> diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c
> index 82671b5..8c5ad58 100644
> --- a/drivers/tty/serial/icom.c
> +++ b/drivers/tty/serial/icom.c
> @@ -175,7 +175,7 @@ static void free_port_memory(struct icom_port *icom_port)
>  	}
>  }
>  
> -static int __devinit get_port_memory(struct icom_port *icom_port)
> +static int get_port_memory(struct icom_port *icom_port)
>  {
>  	int index;
>  	unsigned long stgAddr;
> @@ -1314,7 +1314,7 @@ static struct uart_driver icom_uart_driver = {
>  	.cons = ICOM_CONSOLE,
>  };
>  
> -static int __devinit icom_init_ports(struct icom_adapter *icom_adapter)
> +static int icom_init_ports(struct icom_adapter *icom_adapter)
>  {
>  	u32 subsystem_id = icom_adapter->subsystem_id;
>  	int i;
> @@ -1381,7 +1381,7 @@ static void icom_port_active(struct icom_port *icom_port, struct icom_adapter *i
>  			    0x8024 + 2 - 2 * (icom_port->port - 2);
>  	}
>  }
> -static int __devinit icom_load_ports(struct icom_adapter *icom_adapter)
> +static int icom_load_ports(struct icom_adapter *icom_adapter)
>  {
>  	struct icom_port *icom_port;
>  	int port_num;
> @@ -1407,7 +1407,7 @@ static int __devinit icom_load_ports(struct icom_adapter *icom_adapter)
>  	return 0;
>  }
>  
> -static int __devinit icom_alloc_adapter(struct icom_adapter
> +static int icom_alloc_adapter(struct icom_adapter
>  					**icom_adapter_ref)
>  {
>  	int adapter_count = 0;
> @@ -1487,7 +1487,7 @@ static void icom_kref_release(struct kref *kref)
>  	icom_remove_adapter(icom_adapter);
>  }
>  
> -static int __devinit icom_probe(struct pci_dev *dev,
> +static int icom_probe(struct pci_dev *dev,
>  				const struct pci_device_id *ent)
>  {
>  	int index;
> diff --git a/drivers/tty/serial/ioc3_serial.c b/drivers/tty/serial/ioc3_serial.c
> index 5ac5289..d8f1d1d 100644
> --- a/drivers/tty/serial/ioc3_serial.c
> +++ b/drivers/tty/serial/ioc3_serial.c
> @@ -2010,7 +2010,7 @@ static int ioc3uart_remove(struct ioc3_submodule *is,
>   * @idd: ioc3 driver data for this card
>   */
>  
> -static int __devinit
> +static int
>  ioc3uart_probe(struct ioc3_submodule *is, struct ioc3_driver_data *idd)
>  {
>  	struct pci_dev *pdev = idd->pdev;
> diff --git a/drivers/tty/serial/jsm/jsm_driver.c b/drivers/tty/serial/jsm/jsm_driver.c
> index bbd4592..5b57c8e 100644
> --- a/drivers/tty/serial/jsm/jsm_driver.c
> +++ b/drivers/tty/serial/jsm/jsm_driver.c
> @@ -64,7 +64,7 @@ int jsm_debug;
>  module_param(jsm_debug, int, 0);
>  MODULE_PARM_DESC(jsm_debug, "Driver debugging level");
>  
> -static int __devinit jsm_probe_one(struct pci_dev *pdev, const struct pci_device_id *ent)
> +static int jsm_probe_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>  {
>  	int rc = 0;
>  	struct jsm_board *brd;
> diff --git a/drivers/tty/serial/jsm/jsm_tty.c b/drivers/tty/serial/jsm/jsm_tty.c
> index 7d2c1f3..4c00c55 100644
> --- a/drivers/tty/serial/jsm/jsm_tty.c
> +++ b/drivers/tty/serial/jsm/jsm_tty.c
> @@ -371,7 +371,7 @@ static struct uart_ops jsm_ops = {
>   * Init the tty subsystem.  Called once per board after board has been
>   * downloaded and init'ed.
>   */
> -int __devinit jsm_tty_init(struct jsm_board *brd)
> +int jsm_tty_init(struct jsm_board *brd)
>  {
>  	int i;
>  	void __iomem *vaddr;
> diff --git a/drivers/tty/serial/lpc32xx_hs.c b/drivers/tty/serial/lpc32xx_hs.c
> index 7b0f5b4..3651dab 100644
> --- a/drivers/tty/serial/lpc32xx_hs.c
> +++ b/drivers/tty/serial/lpc32xx_hs.c
> @@ -686,7 +686,7 @@ static struct uart_ops serial_lpc32xx_pops = {
>  /*
>   * Register a set of serial devices attached to a platform device
>   */
> -static int __devinit serial_hs_lpc32xx_probe(struct platform_device *pdev)
> +static int serial_hs_lpc32xx_probe(struct platform_device *pdev)
>  {
>  	struct lpc32xx_hsuart_port *p = &lpc32xx_hs_ports[uarts_registered];
>  	int ret = 0;
> diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c
> index 2ffd7f0..8dd6189 100644
> --- a/drivers/tty/serial/max3100.c
> +++ b/drivers/tty/serial/max3100.c
> @@ -742,7 +742,7 @@ static struct uart_driver max3100_uart_driver = {
>  };
>  static int uart_driver_registered;
>  
> -static int __devinit max3100_probe(struct spi_device *spi)
> +static int max3100_probe(struct spi_device *spi)
>  {
>  	int i, retval;
>  	struct plat_max3100 *pdata;
> diff --git a/drivers/tty/serial/max310x.c b/drivers/tty/serial/max310x.c
> index a332327..88a227f 100644
> --- a/drivers/tty/serial/max310x.c
> +++ b/drivers/tty/serial/max310x.c
> @@ -378,7 +378,7 @@ static void max310x_wait_pll(struct max310x_port *s)
>  	}
>  }
>  
> -static int __devinit max310x_update_best_err(unsigned long f, long *besterr)
> +static int max310x_update_best_err(unsigned long f, long *besterr)
>  {
>  	/* Use baudrate 115200 for calculate error */
>  	long err = f % (115200 * 16);
> @@ -391,7 +391,7 @@ static int __devinit max310x_update_best_err(unsigned long f, long *besterr)
>  	return 1;
>  }
>  
> -static int __devinit max310x_set_ref_clk(struct max310x_port *s)
> +static int max310x_set_ref_clk(struct max310x_port *s)
>  {
>  	unsigned int div, clksrc, pllcfg = 0;
>  	long besterr = -1;
> @@ -995,7 +995,7 @@ static struct max310x_pdata generic_plat_data = {
>  	.frequency	= 26000000,
>  };
>  
> -static int __devinit max310x_probe(struct spi_device *spi)
> +static int max310x_probe(struct spi_device *spi)
>  {
>  	struct max310x_port *s;
>  	struct device *dev = &spi->dev;
> diff --git a/drivers/tty/serial/mcf.c b/drivers/tty/serial/mcf.c
> index e3de785..e2b93d2 100644
> --- a/drivers/tty/serial/mcf.c
> +++ b/drivers/tty/serial/mcf.c
> @@ -571,7 +571,7 @@ static struct uart_driver mcf_driver = {
>  
>  /****************************************************************************/
>  
> -static int __devinit mcf_probe(struct platform_device *pdev)
> +static int mcf_probe(struct platform_device *pdev)
>  {
>  	struct mcf_platform_uart *platp = pdev->dev.platform_data;
>  	struct uart_port *port;
> diff --git a/drivers/tty/serial/mpc52xx_uart.c b/drivers/tty/serial/mpc52xx_uart.c
> index 8cf5770..7c23c4f 100644
> --- a/drivers/tty/serial/mpc52xx_uart.c
> +++ b/drivers/tty/serial/mpc52xx_uart.c
> @@ -1308,7 +1308,7 @@ static struct of_device_id mpc52xx_uart_of_match[] = {
>  	{},
>  };
>  
> -static int __devinit mpc52xx_uart_of_probe(struct platform_device *op)
> +static int mpc52xx_uart_of_probe(struct platform_device *op)
>  {
>  	int idx = -1;
>  	unsigned int uartclk;
> diff --git a/drivers/tty/serial/mrst_max3110.c b/drivers/tty/serial/mrst_max3110.c
> index 649ce12..41497fd 100644
> --- a/drivers/tty/serial/mrst_max3110.c
> +++ b/drivers/tty/serial/mrst_max3110.c
> @@ -773,7 +773,7 @@ static int serial_m3110_resume(struct spi_device *spi)
>  #define serial_m3110_resume	NULL
>  #endif
>  
> -static int __devinit serial_m3110_probe(struct spi_device *spi)
> +static int serial_m3110_probe(struct spi_device *spi)
>  {
>  	struct uart_max3110 *max;
>  	void *buffer;
> diff --git a/drivers/tty/serial/msm_serial_hs.c b/drivers/tty/serial/msm_serial_hs.c
> index 1361ad5..02fb63e 100644
> --- a/drivers/tty/serial/msm_serial_hs.c
> +++ b/drivers/tty/serial/msm_serial_hs.c
> @@ -1521,7 +1521,7 @@ err_msm_hs_init_clk:
>  }
>  
>  /* Initialize tx and rx data structures */
> -static int __devinit uartdm_init_port(struct uart_port *uport)
> +static int uartdm_init_port(struct uart_port *uport)
>  {
>  	int ret = 0;
>  	struct msm_hs_port *msm_uport = UARTDM_TO_MSM(uport);
> @@ -1614,7 +1614,7 @@ err_tx_command_ptr_ptr:
>  	return ret;
>  }
>  
> -static int __devinit msm_hs_probe(struct platform_device *pdev)
> +static int msm_hs_probe(struct platform_device *pdev)
>  {
>  	int ret;
>  	struct uart_port *uport;
> diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
> index 7554045..ed09bd4 100644
> --- a/drivers/tty/serial/mxs-auart.c
> +++ b/drivers/tty/serial/mxs-auart.c
> @@ -704,7 +704,7 @@ static int serial_mxs_probe_dt(struct mxs_auart_port *s,
>  	return 0;
>  }
>  
> -static int __devinit mxs_auart_probe(struct platform_device *pdev)
> +static int mxs_auart_probe(struct platform_device *pdev)
>  {
>  	struct mxs_auart_port *s;
>  	u32 version;
> diff --git a/drivers/tty/serial/of_serial.c b/drivers/tty/serial/of_serial.c
> index b9fdccb2..1bce344 100644
> --- a/drivers/tty/serial/of_serial.c
> +++ b/drivers/tty/serial/of_serial.c
> @@ -52,7 +52,7 @@ EXPORT_SYMBOL_GPL(tegra_serial_handle_break);
>  /*
>   * Fill a struct uart_port for a given device node
>   */
> -static int __devinit of_platform_serial_setup(struct platform_device *ofdev,
> +static int of_platform_serial_setup(struct platform_device *ofdev,
>  			int type, struct uart_port *port,
>  			struct of_serial_info *info)
>  {
> @@ -138,7 +138,7 @@ out:
>   * Try to register a serial port
>   */
>  static struct of_device_id of_platform_serial_table[];
> -static int __devinit of_platform_serial_probe(struct platform_device *ofdev)
> +static int of_platform_serial_probe(struct platform_device *ofdev)
>  {
>  	const struct of_device_id *match;
>  	struct of_serial_info *info;
> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
> index 624e6b5..1e988f7 100644
> --- a/drivers/tty/serial/omap-serial.c
> +++ b/drivers/tty/serial/omap-serial.c
> @@ -1307,7 +1307,7 @@ static int serial_omap_resume(struct device *dev)
>  }
>  #endif
>  
> -static void __devinit omap_serial_fill_features_erratas(struct uart_omap_port *up)
> +static void omap_serial_fill_features_erratas(struct uart_omap_port *up)
>  {
>  	u32 mvr, scheme;
>  	u16 revision, major, minor;
> @@ -1360,7 +1360,7 @@ static void __devinit omap_serial_fill_features_erratas(struct uart_omap_port *u
>  	}
>  }
>  
> -static __devinit struct omap_uart_port_info *of_get_uart_port_info(struct device *dev)
> +static struct omap_uart_port_info *of_get_uart_port_info(struct device *dev)
>  {
>  	struct omap_uart_port_info *omap_up_info;
>  
> @@ -1373,7 +1373,7 @@ static __devinit struct omap_uart_port_info *of_get_uart_port_info(struct device
>  	return omap_up_info;
>  }
>  
> -static int __devinit serial_omap_probe(struct platform_device *pdev)
> +static int serial_omap_probe(struct platform_device *pdev)
>  {
>  	struct uart_omap_port	*up;
>  	struct resource		*mem, *irq;
> diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c
> index f5fb9bd..8318925 100644
> --- a/drivers/tty/serial/pch_uart.c
> +++ b/drivers/tty/serial/pch_uart.c
> @@ -1839,7 +1839,7 @@ static DEFINE_PCI_DEVICE_TABLE(pch_uart_pci_id) = {
>  	{0,},
>  };
>  
> -static int __devinit pch_uart_pci_probe(struct pci_dev *pdev,
> +static int pch_uart_pci_probe(struct pci_dev *pdev,
>  					const struct pci_device_id *id)
>  {
>  	int ret;
> diff --git a/drivers/tty/serial/sa1100.c b/drivers/tty/serial/sa1100.c
> index 2ca5959..da56c8a 100644
> --- a/drivers/tty/serial/sa1100.c
> +++ b/drivers/tty/serial/sa1100.c
> @@ -637,7 +637,7 @@ static void __init sa1100_init_ports(void)
>  	PPSR |= PPC_TXD1 | PPC_TXD3;
>  }
>  
> -void __devinit sa1100_register_uart_fns(struct sa1100_port_fns *fns)
> +void sa1100_register_uart_fns(struct sa1100_port_fns *fns)
>  {
>  	if (fns->get_mctrl)
>  		sa1100_pops.get_mctrl = fns->get_mctrl;
> diff --git a/drivers/tty/serial/sc26xx.c b/drivers/tty/serial/sc26xx.c
> index 9a40659..aced1dd 100644
> --- a/drivers/tty/serial/sc26xx.c
> +++ b/drivers/tty/serial/sc26xx.c
> @@ -621,7 +621,7 @@ static u8 sc26xx_flags2mask(unsigned int flags, unsigned int bitpos)
>  	return bit ? (1 << (bit - 1)) : 0;
>  }
>  
> -static void __devinit sc26xx_init_masks(struct uart_sc26xx_port *up,
> +static void sc26xx_init_masks(struct uart_sc26xx_port *up,
>  					int line, unsigned int data)
>  {
>  	up->dtr_mask[line] = sc26xx_flags2mask(data,  0);
> @@ -632,7 +632,7 @@ static void __devinit sc26xx_init_masks(struct uart_sc26xx_port *up,
>  	up->ri_mask[line]  = sc26xx_flags2mask(data, 20);
>  }
>  
> -static int __devinit sc26xx_probe(struct platform_device *dev)
> +static int sc26xx_probe(struct platform_device *dev)
>  {
>  	struct resource *res;
>  	struct uart_sc26xx_port *up;
> diff --git a/drivers/tty/serial/sccnxp.c b/drivers/tty/serial/sccnxp.c
> index 810853f..1ddace8 100644
> --- a/drivers/tty/serial/sccnxp.c
> +++ b/drivers/tty/serial/sccnxp.c
> @@ -740,7 +740,7 @@ static int sccnxp_console_setup(struct console *co, char *options)
>  }
>  #endif
>  
> -static int __devinit sccnxp_probe(struct platform_device *pdev)
> +static int sccnxp_probe(struct platform_device *pdev)
>  {
>  	struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>  	int chiptype = pdev->id_entry->driver_data;
> diff --git a/drivers/tty/serial/serial_txx9.c b/drivers/tty/serial/serial_txx9.c
> index 9d979a9..23b28b8 100644
> --- a/drivers/tty/serial/serial_txx9.c
> +++ b/drivers/tty/serial/serial_txx9.c
> @@ -1030,7 +1030,7 @@ static DEFINE_MUTEX(serial_txx9_mutex);
>   *
>   *	On success the port is ready to use and the line number is returned.
>   */
> -static int __devinit serial_txx9_register_port(struct uart_port *port)
> +static int serial_txx9_register_port(struct uart_port *port)
>  {
>  	int i;
>  	struct uart_txx9_port *uart;
> @@ -1096,7 +1096,7 @@ static void __devexit serial_txx9_unregister_port(int line)
>  /*
>   * Register a set of serial devices attached to a platform device.
>   */
> -static int __devinit serial_txx9_probe(struct platform_device *dev)
> +static int serial_txx9_probe(struct platform_device *dev)
>  {
>  	struct uart_port *p = dev->dev.platform_data;
>  	struct uart_port port;
> @@ -1187,7 +1187,7 @@ static struct platform_driver serial_txx9_plat_driver = {
>   * Probe one serial board.  Unfortunately, there is no rhyme nor reason
>   * to the arrangement of serial ports on a PCI card.
>   */
> -static int __devinit
> +static int
>  pciserial_txx9_init_one(struct pci_dev *dev, const struct pci_device_id *ent)
>  {
>  	struct uart_port port;
> diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
> index 6ee5900..390fdc7 100644
> --- a/drivers/tty/serial/sh-sci.c
> +++ b/drivers/tty/serial/sh-sci.c
> @@ -1132,7 +1132,7 @@ static const char *sci_gpio_str(unsigned int index)
>  	return sci_gpio_names[index];
>  }
>  
> -static void __devinit sci_init_gpios(struct sci_port *port)
> +static void sci_init_gpios(struct sci_port *port)
>  {
>  	struct uart_port *up = &port->port;
>  	int i;
> @@ -2064,7 +2064,7 @@ static struct uart_ops sci_uart_ops = {
>  #endif
>  };
>  
> -static int __devinit sci_init_single(struct platform_device *dev,
> +static int sci_init_single(struct platform_device *dev,
>  				     struct sci_port *sci_port,
>  				     unsigned int index,
>  				     struct plat_sci_port *p)
> @@ -2220,7 +2220,7 @@ static void serial_console_write(struct console *co, const char *s,
>  	sci_port_disable(sci_port);
>  }
>  
> -static int __devinit serial_console_setup(struct console *co, char *options)
> +static int serial_console_setup(struct console *co, char *options)
>  {
>  	struct sci_port *sci_port;
>  	struct uart_port *port;
> @@ -2278,7 +2278,7 @@ static struct console early_serial_console = {
>  
>  static char early_serial_buf[32];
>  
> -static int __devinit sci_probe_earlyprintk(struct platform_device *pdev)
> +static int sci_probe_earlyprintk(struct platform_device *pdev)
>  {
>  	struct plat_sci_port *cfg = pdev->dev.platform_data;
>  
> @@ -2341,7 +2341,7 @@ static int sci_runtime_resume(struct device *dev)
>  #define SCI_CONSOLE	(&serial_console)
>  
>  #else
> -static inline int __devinit sci_probe_earlyprintk(struct platform_device *pdev)
> +static inline int sci_probe_earlyprintk(struct platform_device *pdev)
>  {
>  	return -EINVAL;
>  }
> @@ -2379,7 +2379,7 @@ static int sci_remove(struct platform_device *dev)
>  	return 0;
>  }
>  
> -static int __devinit sci_probe_single(struct platform_device *dev,
> +static int sci_probe_single(struct platform_device *dev,
>  				      unsigned int index,
>  				      struct plat_sci_port *p,
>  				      struct sci_port *sciport)
> @@ -2409,7 +2409,7 @@ static int __devinit sci_probe_single(struct platform_device *dev,
>  	return 0;
>  }
>  
> -static int __devinit sci_probe(struct platform_device *dev)
> +static int sci_probe(struct platform_device *dev)
>  {
>  	struct plat_sci_port *p = dev->dev.platform_data;
>  	struct sci_port *sp = &sci_ports[dev->id];
> diff --git a/drivers/tty/serial/sunhv.c b/drivers/tty/serial/sunhv.c
> index 949b2d3..cb58867 100644
> --- a/drivers/tty/serial/sunhv.c
> +++ b/drivers/tty/serial/sunhv.c
> @@ -519,7 +519,7 @@ static struct console sunhv_console = {
>  	.data	=	&sunhv_reg,
>  };
>  
> -static int __devinit hv_probe(struct platform_device *op)
> +static int hv_probe(struct platform_device *op)
>  {
>  	struct uart_port *port;
>  	unsigned long minor;
> diff --git a/drivers/tty/serial/sunsab.c b/drivers/tty/serial/sunsab.c
> index bbb07bc..9a13c54 100644
> --- a/drivers/tty/serial/sunsab.c
> +++ b/drivers/tty/serial/sunsab.c
> @@ -954,7 +954,7 @@ static inline struct console *SUNSAB_CONSOLE(void)
>  #define sunsab_console_init()	do { } while (0)
>  #endif
>  
> -static int __devinit sunsab_init_one(struct uart_sunsab_port *up,
> +static int sunsab_init_one(struct uart_sunsab_port *up,
>  				     struct platform_device *op,
>  				     unsigned long offset,
>  				     int line)
> @@ -1007,7 +1007,7 @@ static int __devinit sunsab_init_one(struct uart_sunsab_port *up,
>  	return 0;
>  }
>  
> -static int __devinit sab_probe(struct platform_device *op)
> +static int sab_probe(struct platform_device *op)
>  {
>  	static int inst;
>  	struct uart_sunsab_port *up;
> diff --git a/drivers/tty/serial/sunsu.c b/drivers/tty/serial/sunsu.c
> index c0658f0..049bbc5 100644
> --- a/drivers/tty/serial/sunsu.c
> +++ b/drivers/tty/serial/sunsu.c
> @@ -1185,7 +1185,7 @@ static struct uart_driver sunsu_reg = {
>  	.major			= TTY_MAJOR,
>  };
>  
> -static int __devinit sunsu_kbd_ms_init(struct uart_sunsu_port *up)
> +static int sunsu_kbd_ms_init(struct uart_sunsu_port *up)
>  {
>  	int quot, baud;
>  #ifdef CONFIG_SERIO
> @@ -1391,7 +1391,7 @@ static inline struct console *SUNSU_CONSOLE(void)
>  #define sunsu_serial_console_init()	do { } while (0)
>  #endif
>  
> -static enum su_type __devinit su_get_type(struct device_node *dp)
> +static enum su_type su_get_type(struct device_node *dp)
>  {
>  	struct device_node *ap = of_find_node_by_path("/aliases");
>  
> @@ -1412,7 +1412,7 @@ static enum su_type __devinit su_get_type(struct device_node *dp)
>  	return SU_PORT_PORT;
>  }
>  
> -static int __devinit su_probe(struct platform_device *op)
> +static int su_probe(struct platform_device *op)
>  {
>  	static int inst;
>  	struct device_node *dp = op->dev.of_node;
> diff --git a/drivers/tty/serial/sunzilog.c b/drivers/tty/serial/sunzilog.c
> index c2ef475..02c058f 100644
> --- a/drivers/tty/serial/sunzilog.c
> +++ b/drivers/tty/serial/sunzilog.c
> @@ -1282,7 +1282,7 @@ static inline struct console *SUNZILOG_CONSOLE(void)
>  #define SUNZILOG_CONSOLE()	(NULL)
>  #endif
>  
> -static void __devinit sunzilog_init_kbdms(struct uart_sunzilog_port *up)
> +static void sunzilog_init_kbdms(struct uart_sunzilog_port *up)
>  {
>  	int baud, brg;
>  
> @@ -1302,7 +1302,7 @@ static void __devinit sunzilog_init_kbdms(struct uart_sunzilog_port *up)
>  }
>  
>  #ifdef CONFIG_SERIO
> -static void __devinit sunzilog_register_serio(struct uart_sunzilog_port *up)
> +static void sunzilog_register_serio(struct uart_sunzilog_port *up)
>  {
>  	struct serio *serio = &up->serio;
>  
> @@ -1331,7 +1331,7 @@ static void __devinit sunzilog_register_serio(struct uart_sunzilog_port *up)
>  }
>  #endif
>  
> -static void __devinit sunzilog_init_hw(struct uart_sunzilog_port *up)
> +static void sunzilog_init_hw(struct uart_sunzilog_port *up)
>  {
>  	struct zilog_channel __iomem *channel;
>  	unsigned long flags;
> @@ -1400,7 +1400,7 @@ static void __devinit sunzilog_init_hw(struct uart_sunzilog_port *up)
>  
>  static int zilog_irq;
>  
> -static int __devinit zs_probe(struct platform_device *op)
> +static int zs_probe(struct platform_device *op)
>  {
>  	static int kbm_inst, uart_inst;
>  	int inst;
> diff --git a/drivers/tty/serial/timbuart.c b/drivers/tty/serial/timbuart.c
> index 5fc11f2..c833f50 100644
> --- a/drivers/tty/serial/timbuart.c
> +++ b/drivers/tty/serial/timbuart.c
> @@ -426,7 +426,7 @@ static struct uart_driver timbuart_driver = {
>  	.nr = 1
>  };
>  
> -static int __devinit timbuart_probe(struct platform_device *dev)
> +static int timbuart_probe(struct platform_device *dev)
>  {
>  	int err, irq;
>  	struct timbuart_port *uart;
> diff --git a/drivers/tty/serial/uartlite.c b/drivers/tty/serial/uartlite.c
> index 1d44383..df9eeb4 100644
> --- a/drivers/tty/serial/uartlite.c
> +++ b/drivers/tty/serial/uartlite.c
> @@ -408,7 +408,7 @@ static void ulite_console_write(struct console *co, const char *s,
>  		spin_unlock_irqrestore(&port->lock, flags);
>  }
>  
> -static int __devinit ulite_console_setup(struct console *co, char *options)
> +static int ulite_console_setup(struct console *co, char *options)
>  {
>  	struct uart_port *port;
>  	int baud = 9600;
> @@ -486,7 +486,7 @@ static struct uart_driver ulite_uart_driver = {
>   *
>   * Returns: 0 on success, <0 otherwise
>   */
> -static int __devinit ulite_assign(struct device *dev, int id, u32 base, int irq)
> +static int ulite_assign(struct device *dev, int id, u32 base, int irq)
>  {
>  	struct uart_port *port;
>  	int rc;
> @@ -570,7 +570,7 @@ static struct of_device_id ulite_of_match[] __devinitdata = {
>  MODULE_DEVICE_TABLE(of, ulite_of_match);
>  #endif /* CONFIG_OF */
>  
> -static int __devinit ulite_probe(struct platform_device *pdev)
> +static int ulite_probe(struct platform_device *pdev)
>  {
>  	struct resource *res, *res2;
>  	int id = pdev->id;
> diff --git a/drivers/tty/serial/vr41xx_siu.c b/drivers/tty/serial/vr41xx_siu.c
> index 9d3bf75..c046c99 100644
> --- a/drivers/tty/serial/vr41xx_siu.c
> +++ b/drivers/tty/serial/vr41xx_siu.c
> @@ -823,7 +823,7 @@ static struct console siu_console = {
>  	.data	= &siu_uart_driver,
>  };
>  
> -static int __devinit siu_console_init(void)
> +static int siu_console_init(void)
>  {
>  	struct uart_port *port;
>  	int i;
> @@ -867,7 +867,7 @@ static struct uart_driver siu_uart_driver = {
>  	.cons		= SERIAL_VR41XX_CONSOLE,
>  };
>  
> -static int __devinit siu_probe(struct platform_device *dev)
> +static int siu_probe(struct platform_device *dev)
>  {
>  	struct uart_port *port;
>  	int num, i, retval;
> diff --git a/drivers/tty/serial/vt8500_serial.c b/drivers/tty/serial/vt8500_serial.c
> index dbcc909..80530c7 100644
> --- a/drivers/tty/serial/vt8500_serial.c
> +++ b/drivers/tty/serial/vt8500_serial.c
> @@ -554,7 +554,7 @@ static struct uart_driver vt8500_uart_driver = {
>  	.cons		= VT8500_CONSOLE,
>  };
>  
> -static int __devinit vt8500_serial_probe(struct platform_device *pdev)
> +static int vt8500_serial_probe(struct platform_device *pdev)
>  {
>  	struct vt8500_port *vt8500_port;
>  	struct resource *mmres, *irqres;
> diff --git a/drivers/tty/serial/xilinx_uartps.c b/drivers/tty/serial/xilinx_uartps.c
> index b627363..6e9ce65 100644
> --- a/drivers/tty/serial/xilinx_uartps.c
> +++ b/drivers/tty/serial/xilinx_uartps.c
> @@ -939,7 +939,7 @@ static struct uart_driver xuartps_uart_driver = {
>   *
>   * Returns 0 on success, negative error otherwise
>   **/
> -static int __devinit xuartps_probe(struct platform_device *pdev)
> +static int xuartps_probe(struct platform_device *pdev)
>  {
>  	int rc;
>  	struct uart_port *port;
> diff --git a/drivers/tty/synclink.c b/drivers/tty/synclink.c
> index 65b8669..87ba4ca 100644
> --- a/drivers/tty/synclink.c
> +++ b/drivers/tty/synclink.c
> @@ -8064,7 +8064,7 @@ static void hdlcdev_exit(struct mgsl_struct *info)
>  #endif /* CONFIG_HDLC */
>  
>  
> -static int __devinit synclink_init_one (struct pci_dev *dev,
> +static int synclink_init_one (struct pci_dev *dev,
>  					const struct pci_device_id *ent)
>  {
>  	struct mgsl_struct *info;
> diff --git a/drivers/tty/synclink_gt.c b/drivers/tty/synclink_gt.c
> index 28a2ccf..cdd1ba7 100644
> --- a/drivers/tty/synclink_gt.c
> +++ b/drivers/tty/synclink_gt.c
> @@ -3696,7 +3696,7 @@ static void device_init(int adapter_num, struct pci_dev *pdev)
>  	}
>  }
>  
> -static int __devinit init_one(struct pci_dev *dev,
> +static int init_one(struct pci_dev *dev,
>  			      const struct pci_device_id *ent)
>  {
>  	if (pci_enable_device(dev)) {
> diff --git a/drivers/tty/synclinkmp.c b/drivers/tty/synclinkmp.c
> index 3e56e1e..17454da 100644
> --- a/drivers/tty/synclinkmp.c
> +++ b/drivers/tty/synclinkmp.c
> @@ -5592,7 +5592,7 @@ static void write_control_reg(SLMP_INFO * info)
>  }
>  
>  
> -static int __devinit synclinkmp_init_one (struct pci_dev *dev,
> +static int synclinkmp_init_one (struct pci_dev *dev,
>  					  const struct pci_device_id *ent)
>  {
>  	if (pci_enable_device(dev)) {
> 


-- 
Nicolas Ferre

^ permalink raw reply

* Re: [PATCH 119/493] usb: remove use of __devexit_p
From: Nicolas Ferre @ 2012-11-20  9:29 UTC (permalink / raw)
  To: Bill Pemberton
  Cc: Kukjin Kim, Wan ZongShun, Alexander Shishkin, gregkh, linux-usb,
	Felipe Balbi, linux-samsung-soc, Alan Stern, Ben Dooks,
	linux-omap, linuxppc-dev, linux-arm-kernel
In-Reply-To: <1353349642-3677-119-git-send-email-wfp5p@virginia.edu>

On 11/19/2012 07:21 PM, Bill Pemberton :
> CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
> needed.
> 
> Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
> Cc: Peter Korsgaard <jacmet@sunsite.dk> 
> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> 
> Cc: Felipe Balbi <balbi@ti.com> 
> Cc: Li Yang <leoli@freescale.com> 
> Cc: Alan Stern <stern@rowland.harvard.edu> 
> Cc: Wan ZongShun <mcuos.com@gmail.com> 
> Cc: Ben Dooks <ben-linux@fluff.org> 
> Cc: Kukjin Kim <kgene.kim@samsung.com> 
> Cc: linux-usb@vger.kernel.org 
> Cc: linux-omap@vger.kernel.org 
> Cc: linuxppc-dev@lists.ozlabs.org 
> Cc: linux-arm-kernel@lists.infradead.org 
> Cc: linux-samsung-soc@vger.kernel.org 

[..]

>  drivers/usb/host/ehci-atmel.c        | 2 +-

>  drivers/usb/host/ohci-at91.c         | 2 +-

For Atmel:

Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>

[..]

> diff --git a/drivers/usb/c67x00/c67x00-drv.c b/drivers/usb/c67x00/c67x00-drv.c
> index 6f3b6e2..855d538 100644
> --- a/drivers/usb/c67x00/c67x00-drv.c
> +++ b/drivers/usb/c67x00/c67x00-drv.c
> @@ -219,7 +219,7 @@ static int __devexit c67x00_drv_remove(struct platform_device *pdev)
>  
>  static struct platform_driver c67x00_driver = {
>  	.probe	= c67x00_drv_probe,
> -	.remove	= __devexit_p(c67x00_drv_remove),
> +	.remove	= c67x00_drv_remove,
>  	.driver	= {
>  		.owner = THIS_MODULE,
>  		.name = "c67x00",
> diff --git a/drivers/usb/chipidea/ci13xxx_imx.c b/drivers/usb/chipidea/ci13xxx_imx.c
> index 0f5ca4b..5659730 100644
> --- a/drivers/usb/chipidea/ci13xxx_imx.c
> +++ b/drivers/usb/chipidea/ci13xxx_imx.c
> @@ -252,7 +252,7 @@ MODULE_DEVICE_TABLE(of, ci13xxx_imx_dt_ids);
>  
>  static struct platform_driver ci13xxx_imx_driver = {
>  	.probe = ci13xxx_imx_probe,
> -	.remove = __devexit_p(ci13xxx_imx_remove),
> +	.remove = ci13xxx_imx_remove,
>  	.driver = {
>  		.name = "imx_usb",
>  		.owner = THIS_MODULE,
> diff --git a/drivers/usb/chipidea/ci13xxx_msm.c b/drivers/usb/chipidea/ci13xxx_msm.c
> index b01feb3..406c5af 100644
> --- a/drivers/usb/chipidea/ci13xxx_msm.c
> +++ b/drivers/usb/chipidea/ci13xxx_msm.c
> @@ -89,7 +89,7 @@ static int __devexit ci13xxx_msm_remove(struct platform_device *pdev)
>  
>  static struct platform_driver ci13xxx_msm_driver = {
>  	.probe = ci13xxx_msm_probe,
> -	.remove = __devexit_p(ci13xxx_msm_remove),
> +	.remove = ci13xxx_msm_remove,
>  	.driver = { .name = "msm_hsusb", },
>  };
>  
> diff --git a/drivers/usb/chipidea/ci13xxx_pci.c b/drivers/usb/chipidea/ci13xxx_pci.c
> index 918e149..e1cb2fb 100644
> --- a/drivers/usb/chipidea/ci13xxx_pci.c
> +++ b/drivers/usb/chipidea/ci13xxx_pci.c
> @@ -147,7 +147,7 @@ static struct pci_driver ci13xxx_pci_driver = {
>  	.name         =	UDC_DRIVER_NAME,
>  	.id_table     =	ci13xxx_pci_id_table,
>  	.probe        =	ci13xxx_pci_probe,
> -	.remove       =	__devexit_p(ci13xxx_pci_remove),
> +	.remove       =	ci13xxx_pci_remove,
>  };
>  
>  module_pci_driver(ci13xxx_pci_driver);
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> index f69d029..46f23f2 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -523,7 +523,7 @@ static int __devexit ci_hdrc_remove(struct platform_device *pdev)
>  
>  static struct platform_driver ci_hdrc_driver = {
>  	.probe	= ci_hdrc_probe,
> -	.remove	= __devexit_p(ci_hdrc_remove),
> +	.remove	= ci_hdrc_remove,
>  	.driver	= {
>  		.name	= "ci_hdrc",
>  	},
> diff --git a/drivers/usb/chipidea/usbmisc_imx6q.c b/drivers/usb/chipidea/usbmisc_imx6q.c
> index 416e3fc..81238a4 100644
> --- a/drivers/usb/chipidea/usbmisc_imx6q.c
> +++ b/drivers/usb/chipidea/usbmisc_imx6q.c
> @@ -136,7 +136,7 @@ static int __devexit usbmisc_imx6q_remove(struct platform_device *pdev)
>  
>  static struct platform_driver usbmisc_imx6q_driver = {
>  	.probe = usbmisc_imx6q_probe,
> -	.remove = __devexit_p(usbmisc_imx6q_remove),
> +	.remove = usbmisc_imx6q_remove,
>  	.driver = {
>  		.name = "usbmisc_imx6q",
>  		.owner = THIS_MODULE,
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index e71a62a..1a02442 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -583,7 +583,7 @@ static int __devexit dwc3_remove(struct platform_device *pdev)
>  
>  static struct platform_driver dwc3_driver = {
>  	.probe		= dwc3_probe,
> -	.remove		= __devexit_p(dwc3_remove),
> +	.remove		= dwc3_remove,
>  	.driver		= {
>  		.name	= "dwc3",
>  	},
> diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c
> index dc35c54..19a9818 100644
> --- a/drivers/usb/dwc3/dwc3-exynos.c
> +++ b/drivers/usb/dwc3/dwc3-exynos.c
> @@ -196,7 +196,7 @@ MODULE_DEVICE_TABLE(of, exynos_dwc3_match);
>  
>  static struct platform_driver dwc3_exynos_driver = {
>  	.probe		= dwc3_exynos_probe,
> -	.remove		= __devexit_p(dwc3_exynos_remove),
> +	.remove		= dwc3_exynos_remove,
>  	.driver		= {
>  		.name	= "exynos-dwc3",
>  		.of_match_table = of_match_ptr(exynos_dwc3_match),
> diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
> index 900d435f..afbc6e9 100644
> --- a/drivers/usb/dwc3/dwc3-omap.c
> +++ b/drivers/usb/dwc3/dwc3-omap.c
> @@ -441,7 +441,7 @@ MODULE_DEVICE_TABLE(of, of_dwc3_matach);
>  
>  static struct platform_driver dwc3_omap_driver = {
>  	.probe		= dwc3_omap_probe,
> -	.remove		= __devexit_p(dwc3_omap_remove),
> +	.remove		= dwc3_omap_remove,
>  	.driver		= {
>  		.name	= "omap-dwc3",
>  		.of_match_table	= of_dwc3_matach,
> diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c
> index 1396259..b3eeec7 100644
> --- a/drivers/usb/dwc3/dwc3-pci.c
> +++ b/drivers/usb/dwc3/dwc3-pci.c
> @@ -218,7 +218,7 @@ static struct pci_driver dwc3_pci_driver = {
>  	.name		= "dwc3-pci",
>  	.id_table	= dwc3_pci_id_table,
>  	.probe		= dwc3_pci_probe,
> -	.remove		= __devexit_p(dwc3_pci_remove),
> +	.remove		= dwc3_pci_remove,
>  };
>  
>  MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
> diff --git a/drivers/usb/gadget/bcm63xx_udc.c b/drivers/usb/gadget/bcm63xx_udc.c
> index 9ca7922..b44e436 100644
> --- a/drivers/usb/gadget/bcm63xx_udc.c
> +++ b/drivers/usb/gadget/bcm63xx_udc.c
> @@ -2450,7 +2450,7 @@ static int __devexit bcm63xx_udc_remove(struct platform_device *pdev)
>  
>  static struct platform_driver bcm63xx_udc_driver = {
>  	.probe		= bcm63xx_udc_probe,
> -	.remove		= __devexit_p(bcm63xx_udc_remove),
> +	.remove		= bcm63xx_udc_remove,
>  	.driver		= {
>  		.name	= DRV_MODULE_NAME,
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
> index b09452d..21db1f7 100644
> --- a/drivers/usb/gadget/fsl_qe_udc.c
> +++ b/drivers/usb/gadget/fsl_qe_udc.c
> @@ -2735,7 +2735,7 @@ static struct platform_driver udc_driver = {
>  		.of_match_table = qe_udc_match,
>  	},
>  	.probe          = qe_udc_probe,
> -	.remove         = __devexit_p(qe_udc_remove),
> +	.remove         = qe_udc_remove,
>  #ifdef CONFIG_PM
>  	.suspend        = qe_udc_suspend,
>  	.resume         = qe_udc_resume,
> diff --git a/drivers/usb/gadget/hid.c b/drivers/usb/gadget/hid.c
> index 74130f6..33deed6 100644
> --- a/drivers/usb/gadget/hid.c
> +++ b/drivers/usb/gadget/hid.c
> @@ -229,7 +229,7 @@ static __refdata struct usb_composite_driver hidg_driver = {
>  };
>  
>  static struct platform_driver hidg_plat_driver = {
> -	.remove		= __devexit_p(hidg_plat_driver_remove),
> +	.remove		= hidg_plat_driver_remove,
>  	.driver		= {
>  		.owner	= THIS_MODULE,
>  		.name	= "hidg",
> diff --git a/drivers/usb/gadget/lpc32xx_udc.c b/drivers/usb/gadget/lpc32xx_udc.c
> index d1cf1f4..52ad15c 100644
> --- a/drivers/usb/gadget/lpc32xx_udc.c
> +++ b/drivers/usb/gadget/lpc32xx_udc.c
> @@ -3447,7 +3447,7 @@ MODULE_DEVICE_TABLE(of, lpc32xx_udc_of_match);
>  #endif
>  
>  static struct platform_driver lpc32xx_udc_driver = {
> -	.remove		= __devexit_p(lpc32xx_udc_remove),
> +	.remove		= lpc32xx_udc_remove,
>  	.shutdown	= lpc32xx_udc_shutdown,
>  	.suspend	= lpc32xx_udc_suspend,
>  	.resume		= lpc32xx_udc_resume,
> diff --git a/drivers/usb/gadget/net2272.c b/drivers/usb/gadget/net2272.c
> index c009263..26c3053 100644
> --- a/drivers/usb/gadget/net2272.c
> +++ b/drivers/usb/gadget/net2272.c
> @@ -2575,7 +2575,7 @@ static struct pci_driver net2272_pci_driver = {
>  	.id_table = pci_ids,
>  
>  	.probe    = net2272_pci_probe,
> -	.remove   = __devexit_p(net2272_pci_remove),
> +	.remove   = net2272_pci_remove,
>  };
>  
>  static int net2272_pci_register(void)
> @@ -2678,7 +2678,7 @@ net2272_plat_remove(struct platform_device *pdev)
>  
>  static struct platform_driver net2272_plat_driver = {
>  	.probe   = net2272_plat_probe,
> -	.remove  = __devexit_p(net2272_plat_remove),
> +	.remove  = net2272_plat_remove,
>  	.driver  = {
>  		.name  = driver_name,
>  		.owner = THIS_MODULE,
> diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
> index 23afa06..650fa23 100644
> --- a/drivers/usb/gadget/omap_udc.c
> +++ b/drivers/usb/gadget/omap_udc.c
> @@ -3062,7 +3062,7 @@ static int omap_udc_resume(struct platform_device *dev)
>  
>  static struct platform_driver udc_driver = {
>  	.probe		= omap_udc_probe,
> -	.remove		= __devexit_p(omap_udc_remove),
> +	.remove		= omap_udc_remove,
>  	.suspend	= omap_udc_suspend,
>  	.resume		= omap_udc_resume,
>  	.driver		= {
> diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
> index 6f696ee..9fd6e5f 100644
> --- a/drivers/usb/gadget/s3c-hsotg.c
> +++ b/drivers/usb/gadget/s3c-hsotg.c
> @@ -3708,7 +3708,7 @@ static struct platform_driver s3c_hsotg_driver = {
>  		.owner	= THIS_MODULE,
>  	},
>  	.probe		= s3c_hsotg_probe,
> -	.remove		= __devexit_p(s3c_hsotg_remove),
> +	.remove		= s3c_hsotg_remove,
>  	.suspend	= s3c_hsotg_suspend,
>  	.resume		= s3c_hsotg_resume,
>  };
> diff --git a/drivers/usb/host/bcma-hcd.c b/drivers/usb/host/bcma-hcd.c
> index 443da21..f5143a0 100644
> --- a/drivers/usb/host/bcma-hcd.c
> +++ b/drivers/usb/host/bcma-hcd.c
> @@ -316,7 +316,7 @@ static struct bcma_driver bcma_hcd_driver = {
>  	.name		= KBUILD_MODNAME,
>  	.id_table	= bcma_hcd_table,
>  	.probe		= bcma_hcd_probe,
> -	.remove		= __devexit_p(bcma_hcd_remove),
> +	.remove		= bcma_hcd_remove,
>  	.shutdown	= bcma_hcd_shutdown,
>  	.suspend	= bcma_hcd_suspend,
>  	.resume		= bcma_hcd_resume,
> diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c
> index d23321e..33f798e 100644
> --- a/drivers/usb/host/ehci-atmel.c
> +++ b/drivers/usb/host/ehci-atmel.c
> @@ -207,7 +207,7 @@ MODULE_DEVICE_TABLE(of, atmel_ehci_dt_ids);
>  
>  static struct platform_driver ehci_atmel_driver = {
>  	.probe		= ehci_atmel_drv_probe,
> -	.remove		= __devexit_p(ehci_atmel_drv_remove),
> +	.remove		= ehci_atmel_drv_remove,
>  	.shutdown	= usb_hcd_platform_shutdown,
>  	.driver		= {
>  		.name	= "atmel-ehci",
> diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c
> index 7fa1ba4..e0acfd5 100644
> --- a/drivers/usb/host/ehci-msm.c
> +++ b/drivers/usb/host/ehci-msm.c
> @@ -220,7 +220,7 @@ static const struct dev_pm_ops ehci_msm_dev_pm_ops = {
>  
>  static struct platform_driver ehci_msm_driver = {
>  	.probe	= ehci_msm_probe,
> -	.remove	= __devexit_p(ehci_msm_remove),
> +	.remove	= ehci_msm_remove,
>  	.driver = {
>  		   .name = "msm_hsusb_host",
>  		   .pm = &ehci_msm_dev_pm_ops,
> diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
> index f14c542..b807648 100644
> --- a/drivers/usb/host/ehci-platform.c
> +++ b/drivers/usb/host/ehci-platform.c
> @@ -196,7 +196,7 @@ static const struct dev_pm_ops ehci_platform_pm_ops = {
>  static struct platform_driver ehci_platform_driver = {
>  	.id_table	= ehci_platform_table,
>  	.probe		= ehci_platform_probe,
> -	.remove		= __devexit_p(ehci_platform_remove),
> +	.remove		= ehci_platform_remove,
>  	.shutdown	= usb_hcd_platform_shutdown,
>  	.driver		= {
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/host/ehci-s5p.c b/drivers/usb/host/ehci-s5p.c
> index abc178d..f90a881 100644
> --- a/drivers/usb/host/ehci-s5p.c
> +++ b/drivers/usb/host/ehci-s5p.c
> @@ -274,7 +274,7 @@ MODULE_DEVICE_TABLE(of, exynos_ehci_match);
>  
>  static struct platform_driver s5p_ehci_driver = {
>  	.probe		= s5p_ehci_probe,
> -	.remove		= __devexit_p(s5p_ehci_remove),
> +	.remove		= s5p_ehci_remove,
>  	.shutdown	= s5p_ehci_shutdown,
>  	.driver = {
>  		.name	= "s5p-ehci",
> diff --git a/drivers/usb/host/ehci-w90x900.c b/drivers/usb/host/ehci-w90x900.c
> index fdd7c48..7bcb8b2 100644
> --- a/drivers/usb/host/ehci-w90x900.c
> +++ b/drivers/usb/host/ehci-w90x900.c
> @@ -166,7 +166,7 @@ static int __devexit ehci_w90x900_remove(struct platform_device *pdev)
>  
>  static struct platform_driver ehci_hcd_w90x900_driver = {
>  	.probe  = ehci_w90x900_probe,
> -	.remove = __devexit_p(ehci_w90x900_remove),
> +	.remove = ehci_w90x900_remove,
>  	.driver = {
>  		.name = "w90x900-ehci",
>  		.owner = THIS_MODULE,
> diff --git a/drivers/usb/host/fhci-hcd.c b/drivers/usb/host/fhci-hcd.c
> index 7da1a26..92f4b99 100644
> --- a/drivers/usb/host/fhci-hcd.c
> +++ b/drivers/usb/host/fhci-hcd.c
> @@ -821,7 +821,7 @@ static struct platform_driver of_fhci_driver = {
>  		.of_match_table = of_fhci_match,
>  	},
>  	.probe		= of_fhci_probe,
> -	.remove		= __devexit_p(of_fhci_remove),
> +	.remove		= of_fhci_remove,
>  };
>  
>  module_platform_driver(of_fhci_driver);
> diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c
> index 1e77129..3a5c82f 100644
> --- a/drivers/usb/host/fsl-mph-dr-of.c
> +++ b/drivers/usb/host/fsl-mph-dr-of.c
> @@ -336,7 +336,7 @@ static struct platform_driver fsl_usb2_mph_dr_driver = {
>  		.of_match_table = fsl_usb2_mph_dr_of_match,
>  	},
>  	.probe	= fsl_usb2_mph_dr_of_probe,
> -	.remove	= __devexit_p(fsl_usb2_mph_dr_of_remove),
> +	.remove	= fsl_usb2_mph_dr_of_remove,
>  };
>  
>  module_platform_driver(fsl_usb2_mph_dr_driver);
> diff --git a/drivers/usb/host/isp1362-hcd.c b/drivers/usb/host/isp1362-hcd.c
> index 2563263..1ad9d20 100644
> --- a/drivers/usb/host/isp1362-hcd.c
> +++ b/drivers/usb/host/isp1362-hcd.c
> @@ -2856,7 +2856,7 @@ static int isp1362_resume(struct platform_device *pdev)
>  
>  static struct platform_driver isp1362_driver = {
>  	.probe = isp1362_probe,
> -	.remove = __devexit_p(isp1362_remove),
> +	.remove = isp1362_remove,
>  
>  	.suspend = isp1362_suspend,
>  	.resume = isp1362_resume,
> diff --git a/drivers/usb/host/isp1760-if.c b/drivers/usb/host/isp1760-if.c
> index 958379f..5fb3cae 100644
> --- a/drivers/usb/host/isp1760-if.c
> +++ b/drivers/usb/host/isp1760-if.c
> @@ -432,7 +432,7 @@ static int __devexit isp1760_plat_remove(struct platform_device *pdev)
>  
>  static struct platform_driver isp1760_plat_driver = {
>  	.probe	= isp1760_plat_probe,
> -	.remove	= __devexit_p(isp1760_plat_remove),
> +	.remove	= isp1760_plat_remove,
>  	.driver	= {
>  		.name	= "isp1760",
>  	},
> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index 1c0a042..51de2f9 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -717,7 +717,7 @@ MODULE_ALIAS("platform:at91_ohci");
>  
>  static struct platform_driver ohci_hcd_at91_driver = {
>  	.probe		= ohci_hcd_at91_drv_probe,
> -	.remove		= __devexit_p(ohci_hcd_at91_drv_remove),
> +	.remove		= ohci_hcd_at91_drv_remove,
>  	.shutdown	= usb_hcd_platform_shutdown,
>  	.suspend	= ohci_hcd_at91_drv_suspend,
>  	.resume		= ohci_hcd_at91_drv_resume,
> diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
> index 6a30fc5..2f673e8 100644
> --- a/drivers/usb/host/ohci-exynos.c
> +++ b/drivers/usb/host/ohci-exynos.c
> @@ -275,7 +275,7 @@ MODULE_DEVICE_TABLE(of, exynos_ohci_match);
>  
>  static struct platform_driver exynos_ohci_driver = {
>  	.probe		= exynos_ohci_probe,
> -	.remove		= __devexit_p(exynos_ohci_remove),
> +	.remove		= exynos_ohci_remove,
>  	.shutdown	= exynos_ohci_shutdown,
>  	.driver = {
>  		.name	= "exynos-ohci",
> diff --git a/drivers/usb/host/ohci-jz4740.c b/drivers/usb/host/ohci-jz4740.c
> index 931d588..b4921b7 100644
> --- a/drivers/usb/host/ohci-jz4740.c
> +++ b/drivers/usb/host/ohci-jz4740.c
> @@ -266,7 +266,7 @@ static __devexit int jz4740_ohci_remove(struct platform_device *pdev)
>  
>  static struct platform_driver ohci_hcd_jz4740_driver = {
>  	.probe = jz4740_ohci_probe,
> -	.remove = __devexit_p(jz4740_ohci_remove),
> +	.remove = jz4740_ohci_remove,
>  	.driver = {
>  		.name = "jz4740-ohci",
>  		.owner = THIS_MODULE,
> diff --git a/drivers/usb/host/ohci-omap3.c b/drivers/usb/host/ohci-omap3.c
> index bd7803d..002c812 100644
> --- a/drivers/usb/host/ohci-omap3.c
> +++ b/drivers/usb/host/ohci-omap3.c
> @@ -231,7 +231,7 @@ static void ohci_hcd_omap3_shutdown(struct platform_device *pdev)
>  
>  static struct platform_driver ohci_hcd_omap3_driver = {
>  	.probe		= ohci_hcd_omap3_probe,
> -	.remove		= __devexit_p(ohci_hcd_omap3_remove),
> +	.remove		= ohci_hcd_omap3_remove,
>  	.shutdown	= ohci_hcd_omap3_shutdown,
>  	.driver		= {
>  		.name	= "ohci-omap3",
> diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
> index bda4e0b..ffe6c98 100644
> --- a/drivers/usb/host/ohci-platform.c
> +++ b/drivers/usb/host/ohci-platform.c
> @@ -214,7 +214,7 @@ static const struct dev_pm_ops ohci_platform_pm_ops = {
>  static struct platform_driver ohci_platform_driver = {
>  	.id_table	= ohci_platform_table,
>  	.probe		= ohci_platform_probe,
> -	.remove		= __devexit_p(ohci_platform_remove),
> +	.remove		= ohci_platform_remove,
>  	.shutdown	= usb_hcd_platform_shutdown,
>  	.driver		= {
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
> index e84190f..5c5c017 100644
> --- a/drivers/usb/host/ohci-s3c2410.c
> +++ b/drivers/usb/host/ohci-s3c2410.c
> @@ -524,7 +524,7 @@ static const struct dev_pm_ops ohci_hcd_s3c2410_pm_ops = {
>  
>  static struct platform_driver ohci_hcd_s3c2410_driver = {
>  	.probe		= ohci_hcd_s3c2410_drv_probe,
> -	.remove		= __devexit_p(ohci_hcd_s3c2410_drv_remove),
> +	.remove		= ohci_hcd_s3c2410_drv_remove,
>  	.shutdown	= usb_hcd_platform_shutdown,
>  	.driver		= {
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/host/ohci-tmio.c b/drivers/usb/host/ohci-tmio.c
> index 2c9ab8f..94c6c55 100644
> --- a/drivers/usb/host/ohci-tmio.c
> +++ b/drivers/usb/host/ohci-tmio.c
> @@ -363,7 +363,7 @@ static int ohci_hcd_tmio_drv_resume(struct platform_device *dev)
>  
>  static struct platform_driver ohci_hcd_tmio_driver = {
>  	.probe		= ohci_hcd_tmio_drv_probe,
> -	.remove		= __devexit_p(ohci_hcd_tmio_drv_remove),
> +	.remove		= ohci_hcd_tmio_drv_remove,
>  	.shutdown	= usb_hcd_platform_shutdown,
>  	.suspend	= ohci_hcd_tmio_drv_suspend,
>  	.resume		= ohci_hcd_tmio_drv_resume,
> diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c
> index b3eea0b..4e0436f 100644
> --- a/drivers/usb/host/r8a66597-hcd.c
> +++ b/drivers/usb/host/r8a66597-hcd.c
> @@ -2532,7 +2532,7 @@ clean_up:
>  
>  static struct platform_driver r8a66597_driver = {
>  	.probe =	r8a66597_probe,
> -	.remove =	__devexit_p(r8a66597_remove),
> +	.remove =	r8a66597_remove,
>  	.driver		= {
>  		.name = (char *) hcd_name,
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c
> index 619b05f..15f20de 100644
> --- a/drivers/usb/host/sl811-hcd.c
> +++ b/drivers/usb/host/sl811-hcd.c
> @@ -1808,7 +1808,7 @@ sl811h_resume(struct platform_device *dev)
>  /* this driver is exported so sl811_cs can depend on it */
>  struct platform_driver sl811h_driver = {
>  	.probe =	sl811h_probe,
> -	.remove =	__devexit_p(sl811h_remove),
> +	.remove =	sl811h_remove,
>  
>  	.suspend =	sl811h_suspend,
>  	.resume =	sl811h_resume,
> diff --git a/drivers/usb/host/ssb-hcd.c b/drivers/usb/host/ssb-hcd.c
> index c2a29fa..4dc9a09 100644
> --- a/drivers/usb/host/ssb-hcd.c
> +++ b/drivers/usb/host/ssb-hcd.c
> @@ -261,7 +261,7 @@ static struct ssb_driver ssb_hcd_driver = {
>  	.name		= KBUILD_MODNAME,
>  	.id_table	= ssb_hcd_table,
>  	.probe		= ssb_hcd_probe,
> -	.remove		= __devexit_p(ssb_hcd_remove),
> +	.remove		= ssb_hcd_remove,
>  	.shutdown	= ssb_hcd_shutdown,
>  	.suspend	= ssb_hcd_suspend,
>  	.resume		= ssb_hcd_resume,
> diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c
> index dbbd1ba..8836898 100644
> --- a/drivers/usb/host/u132-hcd.c
> +++ b/drivers/usb/host/u132-hcd.c
> @@ -3212,7 +3212,7 @@ static int u132_resume(struct platform_device *pdev)
>  */
>  static struct platform_driver u132_platform_driver = {
>  	.probe = u132_probe,
> -	.remove = __devexit_p(u132_remove),
> +	.remove = u132_remove,
>  	.suspend = u132_suspend,
>  	.resume = u132_resume,
>  	.driver = {
> diff --git a/drivers/usb/musb/am35x.c b/drivers/usb/musb/am35x.c
> index dfb7b73..35d94ac 100644
> --- a/drivers/usb/musb/am35x.c
> +++ b/drivers/usb/musb/am35x.c
> @@ -628,7 +628,7 @@ static struct dev_pm_ops am35x_pm_ops = {
>  
>  static struct platform_driver am35x_driver = {
>  	.probe		= am35x_probe,
> -	.remove		= __devexit_p(am35x_remove),
> +	.remove		= am35x_remove,
>  	.driver		= {
>  		.name	= "musb-am35x",
>  		.pm	= DEV_PM_OPS,
> diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
> index 67b8ae7..51ace9b 100644
> --- a/drivers/usb/musb/da8xx.c
> +++ b/drivers/usb/musb/da8xx.c
> @@ -569,7 +569,7 @@ static int __devexit da8xx_remove(struct platform_device *pdev)
>  
>  static struct platform_driver da8xx_driver = {
>  	.probe		= da8xx_probe,
> -	.remove		= __devexit_p(da8xx_remove),
> +	.remove		= da8xx_remove,
>  	.driver		= {
>  		.name	= "musb-da8xx",
>  	},
> diff --git a/drivers/usb/musb/davinci.c b/drivers/usb/musb/davinci.c
> index b3c0a94..e01087b 100644
> --- a/drivers/usb/musb/davinci.c
> +++ b/drivers/usb/musb/davinci.c
> @@ -601,7 +601,7 @@ static int __devexit davinci_remove(struct platform_device *pdev)
>  
>  static struct platform_driver davinci_driver = {
>  	.probe		= davinci_probe,
> -	.remove		= __devexit_p(davinci_remove),
> +	.remove		= davinci_remove,
>  	.driver		= {
>  		.name	= "musb-davinci",
>  	},
> diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
> index 774d815..69cfa18 100644
> --- a/drivers/usb/musb/musb_core.c
> +++ b/drivers/usb/musb/musb_core.c
> @@ -2288,7 +2288,7 @@ static struct platform_driver musb_driver = {
>  		.pm		= MUSB_DEV_PM_OPS,
>  	},
>  	.probe		= musb_probe,
> -	.remove		= __devexit_p(musb_remove),
> +	.remove		= musb_remove,
>  	.shutdown	= musb_shutdown,
>  };
>  
> diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
> index 7185eb0..5daea65 100644
> --- a/drivers/usb/musb/musb_dsps.c
> +++ b/drivers/usb/musb/musb_dsps.c
> @@ -766,7 +766,7 @@ MODULE_DEVICE_TABLE(of, musb_dsps_of_match);
>  
>  static struct platform_driver dsps_usbss_driver = {
>  	.probe		= dsps_probe,
> -	.remove         = __devexit_p(dsps_remove),
> +	.remove         = dsps_remove,
>  	.driver         = {
>  		.name   = "musb-dsps",
>  		.pm	= &dsps_pm_ops,
> diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
> index 32f531e..1150b4b 100644
> --- a/drivers/usb/musb/omap2430.c
> +++ b/drivers/usb/musb/omap2430.c
> @@ -674,7 +674,7 @@ MODULE_DEVICE_TABLE(of, omap2430_id_table);
>  
>  static struct platform_driver omap2430_driver = {
>  	.probe		= omap2430_probe,
> -	.remove		= __devexit_p(omap2430_remove),
> +	.remove		= omap2430_remove,
>  	.driver		= {
>  		.name	= "musb-omap2430",
>  		.pm	= DEV_PM_OPS,
> diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c
> index 812719b..b816517 100644
> --- a/drivers/usb/musb/tusb6010.c
> +++ b/drivers/usb/musb/tusb6010.c
> @@ -1227,7 +1227,7 @@ static int __devexit tusb_remove(struct platform_device *pdev)
>  
>  static struct platform_driver tusb_driver = {
>  	.probe		= tusb_probe,
> -	.remove		= __devexit_p(tusb_remove),
> +	.remove		= tusb_remove,
>  	.driver		= {
>  		.name	= "musb-tusb",
>  	},
> diff --git a/drivers/usb/musb/ux500.c b/drivers/usb/musb/ux500.c
> index 286f1be..1d81557 100644
> --- a/drivers/usb/musb/ux500.c
> +++ b/drivers/usb/musb/ux500.c
> @@ -216,7 +216,7 @@ static const struct dev_pm_ops ux500_pm_ops = {
>  
>  static struct platform_driver ux500_driver = {
>  	.probe		= ux500_probe,
> -	.remove		= __devexit_p(ux500_remove),
> +	.remove		= ux500_remove,
>  	.driver		= {
>  		.name	= "musb-ux500",
>  		.pm	= DEV_PM_OPS,
> diff --git a/drivers/usb/otg/ab8500-usb.c b/drivers/usb/otg/ab8500-usb.c
> index ae8ad56..62ea0c2 100644
> --- a/drivers/usb/otg/ab8500-usb.c
> +++ b/drivers/usb/otg/ab8500-usb.c
> @@ -571,7 +571,7 @@ static int __devexit ab8500_usb_remove(struct platform_device *pdev)
>  
>  static struct platform_driver ab8500_usb_driver = {
>  	.probe		= ab8500_usb_probe,
> -	.remove		= __devexit_p(ab8500_usb_remove),
> +	.remove		= ab8500_usb_remove,
>  	.driver		= {
>  		.name	= "ab8500-usb",
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/otg/fsl_otg.c b/drivers/usb/otg/fsl_otg.c
> index c19d1d7..77dad18 100644
> --- a/drivers/usb/otg/fsl_otg.c
> +++ b/drivers/usb/otg/fsl_otg.c
> @@ -1169,7 +1169,7 @@ static int __devexit fsl_otg_remove(struct platform_device *pdev)
>  
>  struct platform_driver fsl_otg_driver = {
>  	.probe = fsl_otg_probe,
> -	.remove = __devexit_p(fsl_otg_remove),
> +	.remove = fsl_otg_remove,
>  	.driver = {
>  		.name = driver_name,
>  		.owner = THIS_MODULE,
> diff --git a/drivers/usb/otg/msm_otg.c b/drivers/usb/otg/msm_otg.c
> index 9f5fc90..eef0dd2 100644
> --- a/drivers/usb/otg/msm_otg.c
> +++ b/drivers/usb/otg/msm_otg.c
> @@ -1746,7 +1746,7 @@ static const struct dev_pm_ops msm_otg_dev_pm_ops = {
>  #endif
>  
>  static struct platform_driver msm_otg_driver = {
> -	.remove = __devexit_p(msm_otg_remove),
> +	.remove = msm_otg_remove,
>  	.driver = {
>  		.name = DRIVER_NAME,
>  		.owner = THIS_MODULE,
> diff --git a/drivers/usb/otg/mxs-phy.c b/drivers/usb/otg/mxs-phy.c
> index 88db976..825d860 100644
> --- a/drivers/usb/otg/mxs-phy.c
> +++ b/drivers/usb/otg/mxs-phy.c
> @@ -191,7 +191,7 @@ MODULE_DEVICE_TABLE(of, mxs_phy_dt_ids);
>  
>  static struct platform_driver mxs_phy_driver = {
>  	.probe = mxs_phy_probe,
> -	.remove = __devexit_p(mxs_phy_remove),
> +	.remove = mxs_phy_remove,
>  	.driver = {
>  		.name = DRIVER_NAME,
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/otg/nop-usb-xceiv.c b/drivers/usb/otg/nop-usb-xceiv.c
> index e52e35e..0502c24 100644
> --- a/drivers/usb/otg/nop-usb-xceiv.c
> +++ b/drivers/usb/otg/nop-usb-xceiv.c
> @@ -156,7 +156,7 @@ static int __devexit nop_usb_xceiv_remove(struct platform_device *pdev)
>  
>  static struct platform_driver nop_usb_xceiv_driver = {
>  	.probe		= nop_usb_xceiv_probe,
> -	.remove		= __devexit_p(nop_usb_xceiv_remove),
> +	.remove		= nop_usb_xceiv_remove,
>  	.driver		= {
>  		.name	= "nop_usb_xceiv",
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/phy/mv_u3d_phy.c b/drivers/usb/phy/mv_u3d_phy.c
> index 9f1c5d3..80cf57e 100644
> --- a/drivers/usb/phy/mv_u3d_phy.c
> +++ b/drivers/usb/phy/mv_u3d_phy.c
> @@ -331,7 +331,7 @@ static int __exit mv_u3d_phy_remove(struct platform_device *pdev)
>  
>  static struct platform_driver mv_u3d_phy_driver = {
>  	.probe		= mv_u3d_phy_probe,
> -	.remove		= __devexit_p(mv_u3d_phy_remove),
> +	.remove		= mv_u3d_phy_remove,
>  	.driver		= {
>  		.name	= "mv-u3d-phy",
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/phy/omap-usb2.c b/drivers/usb/phy/omap-usb2.c
> index 15ab3d6..f1ed872 100644
> --- a/drivers/usb/phy/omap-usb2.c
> +++ b/drivers/usb/phy/omap-usb2.c
> @@ -254,7 +254,7 @@ MODULE_DEVICE_TABLE(of, omap_usb2_id_table);
>  
>  static struct platform_driver omap_usb2_driver = {
>  	.probe		= omap_usb2_probe,
> -	.remove		= __devexit_p(omap_usb2_remove),
> +	.remove		= omap_usb2_remove,
>  	.driver		= {
>  		.name	= "omap-usb2",
>  		.owner	= THIS_MODULE,
> diff --git a/drivers/usb/phy/rcar-phy.c b/drivers/usb/phy/rcar-phy.c
> index 792f505..703a295 100644
> --- a/drivers/usb/phy/rcar-phy.c
> +++ b/drivers/usb/phy/rcar-phy.c
> @@ -210,7 +210,7 @@ static struct platform_driver rcar_usb_phy_driver = {
>  		.name	= "rcar_usb_phy",
>  	},
>  	.probe		= rcar_usb_phy_probe,
> -	.remove		= __devexit_p(rcar_usb_phy_remove),
> +	.remove		= rcar_usb_phy_remove,
>  };
>  
>  module_platform_driver(rcar_usb_phy_driver);
> diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
> index 3bf922ab..2aa7c1a 100644
> --- a/drivers/usb/renesas_usbhs/common.c
> +++ b/drivers/usb/renesas_usbhs/common.c
> @@ -636,7 +636,7 @@ static struct platform_driver renesas_usbhs_driver = {
>  		.pm	= &usbhsc_pm_ops,
>  	},
>  	.probe		= usbhs_probe,
> -	.remove		= __devexit_p(usbhs_remove),
> +	.remove		= usbhs_remove,
>  };
>  
>  module_platform_driver(renesas_usbhs_driver);
> 


-- 
Nicolas Ferre

^ permalink raw reply

* Re: [PATCH 159/493] usb: remove use of __devinit
From: Nicolas Ferre @ 2012-11-20  9:33 UTC (permalink / raw)
  To: Bill Pemberton
  Cc: cbe-oss-dev, Kukjin Kim, Wan ZongShun, Alexander Shishkin, gregkh,
	linux-usb, Felipe Balbi, Geoff Levand, linux-samsung-soc,
	Alan Stern, Ben Dooks, Olav Kongas, linux-omap, linuxppc-dev,
	Lennert Buytenhek, linux-arm-kernel
In-Reply-To: <1353349642-3677-159-git-send-email-wfp5p@virginia.edu>

On 11/19/2012 07:21 PM, Bill Pemberton :
> CONFIG_HOTPLUG is going away as an option so __devinit is no longer
> needed.
> 
> Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
> Cc: Peter Korsgaard <jacmet@sunsite.dk> 
> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> 
> Cc: Felipe Balbi <balbi@ti.com> 
> Cc: Li Yang <leoli@freescale.com> 
> Cc: Alan Stern <stern@rowland.harvard.edu> 
> Cc: Geoff Levand <geoff@infradead.org> 
> Cc: Wan ZongShun <mcuos.com@gmail.com> 
> Cc: Olav Kongas <ok@artecdesign.ee> 
> Cc: Lennert Buytenhek <kernel@wantstofly.org> 
> Cc: Ben Dooks <ben-linux@fluff.org> 
> Cc: Kukjin Kim <kgene.kim@samsung.com> 
> Cc: linux-usb@vger.kernel.org 
> Cc: linux-omap@vger.kernel.org 
> Cc: linuxppc-dev@lists.ozlabs.org 
> Cc: cbe-oss-dev@lists.ozlabs.org 
> Cc: linux-arm-kernel@lists.infradead.org 
> Cc: linux-samsung-soc@vger.kernel.org 
> ---


>  drivers/usb/gadget/at91_udc.c        |  4 ++--
>  drivers/usb/host/ehci-atmel.c        |  2 +-
>  drivers/usb/host/ohci-at91.c         | 12 ++++++------

For Atmel's drivers:
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>


> diff --git a/drivers/usb/c67x00/c67x00-drv.c b/drivers/usb/c67x00/c67x00-drv.c
> index 855d538..21913dfe 100644
> --- a/drivers/usb/c67x00/c67x00-drv.c
> +++ b/drivers/usb/c67x00/c67x00-drv.c
> @@ -116,7 +116,7 @@ static irqreturn_t c67x00_irq(int irq, void *__dev)
>  
>  /* ------------------------------------------------------------------------- */
>  
> -static int __devinit c67x00_drv_probe(struct platform_device *pdev)
> +static int c67x00_drv_probe(struct platform_device *pdev)
>  {
>  	struct c67x00_device *c67x00;
>  	struct c67x00_platform_data *pdata;
> diff --git a/drivers/usb/chipidea/ci13xxx_imx.c b/drivers/usb/chipidea/ci13xxx_imx.c
> index 5659730..424bff9 100644
> --- a/drivers/usb/chipidea/ci13xxx_imx.c
> +++ b/drivers/usb/chipidea/ci13xxx_imx.c
> @@ -93,7 +93,7 @@ static struct ci13xxx_platform_data ci13xxx_imx_platdata __devinitdata  = {
>  	.capoffset		= DEF_CAPOFFSET,
>  };
>  
> -static int __devinit ci13xxx_imx_probe(struct platform_device *pdev)
> +static int ci13xxx_imx_probe(struct platform_device *pdev)
>  {
>  	struct ci13xxx_imx_data *data;
>  	struct platform_device *plat_ci, *phy_pdev;
> diff --git a/drivers/usb/chipidea/ci13xxx_msm.c b/drivers/usb/chipidea/ci13xxx_msm.c
> index 406c5af..e8a8ba3 100644
> --- a/drivers/usb/chipidea/ci13xxx_msm.c
> +++ b/drivers/usb/chipidea/ci13xxx_msm.c
> @@ -55,7 +55,7 @@ static struct ci13xxx_platform_data ci13xxx_msm_platdata = {
>  	.notify_event		= ci13xxx_msm_notify_event,
>  };
>  
> -static int __devinit ci13xxx_msm_probe(struct platform_device *pdev)
> +static int ci13xxx_msm_probe(struct platform_device *pdev)
>  {
>  	struct platform_device *plat_ci;
>  
> diff --git a/drivers/usb/chipidea/ci13xxx_pci.c b/drivers/usb/chipidea/ci13xxx_pci.c
> index e1cb2fb..cb7eb3e 100644
> --- a/drivers/usb/chipidea/ci13xxx_pci.c
> +++ b/drivers/usb/chipidea/ci13xxx_pci.c
> @@ -48,7 +48,7 @@ struct ci13xxx_platform_data penwell_pci_platdata = {
>   * Allocates basic PCI resources for this USB device controller, and then
>   * invokes the udc_probe() method to start the UDC associated with it
>   */
> -static int __devinit ci13xxx_pci_probe(struct pci_dev *pdev,
> +static int ci13xxx_pci_probe(struct pci_dev *pdev,
>  				       const struct pci_device_id *id)
>  {
>  	struct ci13xxx_platform_data *platdata = (void *)id->driver_data;
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> index 46f23f2..7f9c0d2 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -390,7 +390,7 @@ void ci13xxx_remove_device(struct platform_device *pdev)
>  }
>  EXPORT_SYMBOL_GPL(ci13xxx_remove_device);
>  
> -static int __devinit ci_hdrc_probe(struct platform_device *pdev)
> +static int ci_hdrc_probe(struct platform_device *pdev)
>  {
>  	struct device	*dev = &pdev->dev;
>  	struct ci13xxx	*ci;
> diff --git a/drivers/usb/chipidea/usbmisc_imx6q.c b/drivers/usb/chipidea/usbmisc_imx6q.c
> index 81238a4..ee6fa87 100644
> --- a/drivers/usb/chipidea/usbmisc_imx6q.c
> +++ b/drivers/usb/chipidea/usbmisc_imx6q.c
> @@ -82,7 +82,7 @@ static const struct of_device_id usbmisc_imx6q_dt_ids[] = {
>  	{ /* sentinel */ }
>  };
>  
> -static int __devinit usbmisc_imx6q_probe(struct platform_device *pdev)
> +static int usbmisc_imx6q_probe(struct platform_device *pdev)
>  {
>  	struct resource	*res;
>  	struct imx6q_usbmisc *data;
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index 1a02442..8dceb83 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -140,8 +140,7 @@ static void dwc3_free_one_event_buffer(struct dwc3 *dwc,
>   * Returns a pointer to the allocated event buffer structure on success
>   * otherwise ERR_PTR(errno).
>   */
> -static struct dwc3_event_buffer *__devinit
> -dwc3_alloc_one_event_buffer(struct dwc3 *dwc, unsigned length)
> +static struct dwc3_event_buffer *dwc3_alloc_one_event_buffer(struct dwc3 *dwc, unsigned length)
>  {
>  	struct dwc3_event_buffer	*evt;
>  
> @@ -183,7 +182,7 @@ static void dwc3_free_event_buffers(struct dwc3 *dwc)
>   * Returns 0 on success otherwise negative errno. In the error case, dwc
>   * may contain some buffers allocated but not all which were requested.
>   */
> -static int __devinit dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length)
> +static int dwc3_alloc_event_buffers(struct dwc3 *dwc, unsigned length)
>  {
>  	int			num;
>  	int			i;
> @@ -260,7 +259,7 @@ static void dwc3_event_buffers_cleanup(struct dwc3 *dwc)
>  	}
>  }
>  
> -static void __devinit dwc3_cache_hwparams(struct dwc3 *dwc)
> +static void dwc3_cache_hwparams(struct dwc3 *dwc)
>  {
>  	struct dwc3_hwparams	*parms = &dwc->hwparams;
>  
> @@ -281,7 +280,7 @@ static void __devinit dwc3_cache_hwparams(struct dwc3 *dwc)
>   *
>   * Returns 0 on success otherwise negative errno.
>   */
> -static int __devinit dwc3_core_init(struct dwc3 *dwc)
> +static int dwc3_core_init(struct dwc3 *dwc)
>  {
>  	unsigned long		timeout;
>  	u32			reg;
> @@ -362,7 +361,7 @@ static void dwc3_core_exit(struct dwc3 *dwc)
>  
>  #define DWC3_ALIGN_MASK		(16 - 1)
>  
> -static int __devinit dwc3_probe(struct platform_device *pdev)
> +static int dwc3_probe(struct platform_device *pdev)
>  {
>  	struct device_node	*node = pdev->dev.of_node;
>  	struct resource		*res;
> diff --git a/drivers/usb/dwc3/debugfs.c b/drivers/usb/dwc3/debugfs.c
> index d4a30f1..33ae98c5 100644
> --- a/drivers/usb/dwc3/debugfs.c
> +++ b/drivers/usb/dwc3/debugfs.c
> @@ -652,7 +652,7 @@ static const struct file_operations dwc3_link_state_fops = {
>  	.release		= single_release,
>  };
>  
> -int __devinit dwc3_debugfs_init(struct dwc3 *dwc)
> +int dwc3_debugfs_init(struct dwc3 *dwc)
>  {
>  	struct dentry		*root;
>  	struct dentry		*file;
> diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c
> index 19a9818..d43f076 100644
> --- a/drivers/usb/dwc3/dwc3-exynos.c
> +++ b/drivers/usb/dwc3/dwc3-exynos.c
> @@ -34,7 +34,7 @@ struct dwc3_exynos {
>  	struct clk		*clk;
>  };
>  
> -static int __devinit dwc3_exynos_register_phys(struct dwc3_exynos *exynos)
> +static int dwc3_exynos_register_phys(struct dwc3_exynos *exynos)
>  {
>  	struct nop_usb_xceiv_platform_data pdata;
>  	struct platform_device	*pdev;
> @@ -90,7 +90,7 @@ err1:
>  
>  static u64 dwc3_exynos_dma_mask = DMA_BIT_MASK(32);
>  
> -static int __devinit dwc3_exynos_probe(struct platform_device *pdev)
> +static int dwc3_exynos_probe(struct platform_device *pdev)
>  {
>  	struct platform_device	*dwc3;
>  	struct dwc3_exynos	*exynos;
> diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
> index afbc6e9..e114bb5 100644
> --- a/drivers/usb/dwc3/dwc3-omap.c
> +++ b/drivers/usb/dwc3/dwc3-omap.c
> @@ -157,7 +157,7 @@ static inline void dwc3_omap_writel(void __iomem *base, u32 offset, u32 value)
>  	writel(value, base + offset);
>  }
>  
> -static int __devinit dwc3_omap_register_phys(struct dwc3_omap *omap)
> +static int dwc3_omap_register_phys(struct dwc3_omap *omap)
>  {
>  	struct nop_usb_xceiv_platform_data pdata;
>  	struct platform_device	*pdev;
> @@ -262,7 +262,7 @@ static irqreturn_t dwc3_omap_interrupt(int irq, void *_omap)
>  	return IRQ_HANDLED;
>  }
>  
> -static int __devinit dwc3_omap_probe(struct platform_device *pdev)
> +static int dwc3_omap_probe(struct platform_device *pdev)
>  {
>  	struct dwc3_omap_data	*pdata = pdev->dev.platform_data;
>  	struct device_node	*node = pdev->dev.of_node;
> diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c
> index b3eeec7..68e389b 100644
> --- a/drivers/usb/dwc3/dwc3-pci.c
> +++ b/drivers/usb/dwc3/dwc3-pci.c
> @@ -58,7 +58,7 @@ struct dwc3_pci {
>  	struct platform_device	*usb3_phy;
>  };
>  
> -static int __devinit dwc3_pci_register_phys(struct dwc3_pci *glue)
> +static int dwc3_pci_register_phys(struct dwc3_pci *glue)
>  {
>  	struct nop_usb_xceiv_platform_data pdata;
>  	struct platform_device	*pdev;
> @@ -112,7 +112,7 @@ err1:
>  	return ret;
>  }
>  
> -static int __devinit dwc3_pci_probe(struct pci_dev *pci,
> +static int dwc3_pci_probe(struct pci_dev *pci,
>  		const struct pci_device_id *id)
>  {
>  	struct resource		res[2];
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index 7b7dedd..2e43b33 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -1579,7 +1579,7 @@ static const struct usb_gadget_ops dwc3_gadget_ops = {
>  
>  /* -------------------------------------------------------------------------- */
>  
> -static int __devinit dwc3_gadget_init_endpoints(struct dwc3 *dwc)
> +static int dwc3_gadget_init_endpoints(struct dwc3 *dwc)
>  {
>  	struct dwc3_ep			*dep;
>  	u8				epnum;
> @@ -2374,7 +2374,7 @@ static irqreturn_t dwc3_interrupt(int irq, void *_dwc)
>   *
>   * Returns 0 on success otherwise negative errno.
>   */
> -int __devinit dwc3_gadget_init(struct dwc3 *dwc)
> +int dwc3_gadget_init(struct dwc3 *dwc)
>  {
>  	u32					reg;
>  	int					ret;
> diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
> index a7b042b..59dcea2 100644
> --- a/drivers/usb/gadget/at91_udc.c
> +++ b/drivers/usb/gadget/at91_udc.c
> @@ -1673,7 +1673,7 @@ static void at91udc_shutdown(struct platform_device *dev)
>  	spin_unlock_irqrestore(&udc->lock, flags);
>  }
>  
> -static void __devinit at91udc_of_init(struct at91_udc *udc,
> +static void at91udc_of_init(struct at91_udc *udc,
>  				     struct device_node *np)
>  {
>  	struct at91_udc_data *board = &udc->board;
> @@ -1693,7 +1693,7 @@ static void __devinit at91udc_of_init(struct at91_udc *udc,
>  	board->pullup_active_low = (flags & OF_GPIO_ACTIVE_LOW) ? 1 : 0;
>  }
>  
> -static int __devinit at91udc_probe(struct platform_device *pdev)
> +static int at91udc_probe(struct platform_device *pdev)
>  {
>  	struct device	*dev = &pdev->dev;
>  	struct at91_udc	*udc;
> diff --git a/drivers/usb/gadget/bcm63xx_udc.c b/drivers/usb/gadget/bcm63xx_udc.c
> index b44e436..18eff74 100644
> --- a/drivers/usb/gadget/bcm63xx_udc.c
> +++ b/drivers/usb/gadget/bcm63xx_udc.c
> @@ -2323,7 +2323,7 @@ static void bcm63xx_udc_gadget_release(struct device *dev)
>   * Note that platform data is required, because pd.port_no varies from chip
>   * to chip and is used to switch the correct USB port to device mode.
>   */
> -static int __devinit bcm63xx_udc_probe(struct platform_device *pdev)
> +static int bcm63xx_udc_probe(struct platform_device *pdev)
>  {
>  	struct device *dev = &pdev->dev;
>  	struct bcm63xx_usbd_platform_data *pd = dev->platform_data;
> diff --git a/drivers/usb/gadget/f_uac2.c b/drivers/usb/gadget/f_uac2.c
> index 91396a1..d7da258 100644
> --- a/drivers/usb/gadget/f_uac2.c
> +++ b/drivers/usb/gadget/f_uac2.c
> @@ -402,7 +402,7 @@ static struct snd_pcm_ops uac2_pcm_ops = {
>  	.prepare = uac2_pcm_null,
>  };
>  
> -static int __devinit snd_uac2_probe(struct platform_device *pdev)
> +static int snd_uac2_probe(struct platform_device *pdev)
>  {
>  	struct snd_uac2_chip *uac2 = pdev_to_uac2(pdev);
>  	struct snd_card *card;
> diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
> index 21db1f7..8ad04a0 100644
> --- a/drivers/usb/gadget/fsl_qe_udc.c
> +++ b/drivers/usb/gadget/fsl_qe_udc.c
> @@ -2347,7 +2347,7 @@ static int fsl_qe_stop(struct usb_gadget *gadget,
>  }
>  
>  /* udc structure's alloc and setup, include ep-param alloc */
> -static struct qe_udc __devinit *qe_udc_config(struct platform_device *ofdev)
> +static struct qe_udc *qe_udc_config(struct platform_device *ofdev)
>  {
>  	struct qe_udc *udc;
>  	struct device_node *np = ofdev->dev.of_node;
> @@ -2402,7 +2402,7 @@ cleanup:
>  }
>  
>  /* USB Controller register init */
> -static int __devinit qe_udc_reg_init(struct qe_udc *udc)
> +static int qe_udc_reg_init(struct qe_udc *udc)
>  {
>  	struct usb_ctlr __iomem *qe_usbregs;
>  	qe_usbregs = udc->usb_regs;
> @@ -2420,7 +2420,7 @@ static int __devinit qe_udc_reg_init(struct qe_udc *udc)
>  	return 0;
>  }
>  
> -static int __devinit qe_ep_config(struct qe_udc *udc, unsigned char pipe_num)
> +static int qe_ep_config(struct qe_udc *udc, unsigned char pipe_num)
>  {
>  	struct qe_ep *ep = &udc->eps[pipe_num];
>  
> @@ -2473,7 +2473,7 @@ static void qe_udc_release(struct device *dev)
>  
>  /* Driver probe functions */
>  static const struct of_device_id qe_udc_match[];
> -static int __devinit qe_udc_probe(struct platform_device *ofdev)
> +static int qe_udc_probe(struct platform_device *ofdev)
>  {
>  	struct qe_udc *udc;
>  	const struct of_device_id *match;
> diff --git a/drivers/usb/gadget/mv_udc_core.c b/drivers/usb/gadget/mv_udc_core.c
> index ea45224..2419649 100644
> --- a/drivers/usb/gadget/mv_udc_core.c
> +++ b/drivers/usb/gadget/mv_udc_core.c
> @@ -2188,7 +2188,7 @@ static int __devexit mv_udc_remove(struct platform_device *dev)
>  	return 0;
>  }
>  
> -static int __devinit mv_udc_probe(struct platform_device *dev)
> +static int mv_udc_probe(struct platform_device *dev)
>  {
>  	struct mv_usb_platform_data *pdata = dev->dev.platform_data;
>  	struct mv_udc *udc;
> diff --git a/drivers/usb/gadget/net2272.c b/drivers/usb/gadget/net2272.c
> index 26c3053..f0103dd 100644
> --- a/drivers/usb/gadget/net2272.c
> +++ b/drivers/usb/gadget/net2272.c
> @@ -2215,8 +2215,7 @@ net2272_remove(struct net2272 *dev)
>  	dev_info(dev->dev, "unbind\n");
>  }
>  
> -static struct net2272 * __devinit
> -net2272_probe_init(struct device *dev, unsigned int irq)
> +static struct net2272 *net2272_probe_init(struct device *dev, unsigned int irq)
>  {
>  	struct net2272 *ret;
>  
> @@ -2246,7 +2245,7 @@ net2272_probe_init(struct device *dev, unsigned int irq)
>  	return ret;
>  }
>  
> -static int __devinit
> +static int
>  net2272_probe_fin(struct net2272 *dev, unsigned int irqflags)
>  {
>  	int ret;
> @@ -2306,7 +2305,7 @@ err_add_udc:
>   * don't respond over USB until a gadget driver binds to us
>   */
>  
> -static int __devinit
> +static int
>  net2272_rdk1_probe(struct pci_dev *pdev, struct net2272 *dev)
>  {
>  	unsigned long resource, len, tmp;
> @@ -2389,7 +2388,7 @@ net2272_rdk1_probe(struct pci_dev *pdev, struct net2272 *dev)
>  	return ret;
>  }
>  
> -static int __devinit
> +static int
>  net2272_rdk2_probe(struct pci_dev *pdev, struct net2272 *dev)
>  {
>  	unsigned long resource, len;
> @@ -2447,7 +2446,7 @@ net2272_rdk2_probe(struct pci_dev *pdev, struct net2272 *dev)
>  	return ret;
>  }
>  
> -static int __devinit
> +static int
>  net2272_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
>  {
>  	struct net2272 *dev;
> @@ -2595,7 +2594,7 @@ static inline void net2272_pci_unregister(void) { }
>  
>  /*---------------------------------------------------------------------------*/
>  
> -static int __devinit
> +static int
>  net2272_plat_probe(struct platform_device *pdev)
>  {
>  	struct net2272 *dev;
> diff --git a/drivers/usb/gadget/omap_udc.c b/drivers/usb/gadget/omap_udc.c
> index 650fa23..164526f 100644
> --- a/drivers/usb/gadget/omap_udc.c
> +++ b/drivers/usb/gadget/omap_udc.c
> @@ -2508,7 +2508,7 @@ static inline void remove_proc_file(void) {}
>   * UDC_SYSCON_1.CFG_LOCK is set can now work.  We won't use that
>   * capability yet though.
>   */
> -static unsigned __devinit
> +static unsigned
>  omap_ep_setup(char *name, u8 addr, u8 type,
>  		unsigned buf, unsigned maxp, int dbuf)
>  {
> @@ -2626,7 +2626,7 @@ static void omap_udc_release(struct device *dev)
>  	udc = NULL;
>  }
>  
> -static int __devinit
> +static int
>  omap_udc_setup(struct platform_device *odev, struct usb_phy *xceiv)
>  {
>  	unsigned	tmp, buf;
> @@ -2763,7 +2763,7 @@ omap_udc_setup(struct platform_device *odev, struct usb_phy *xceiv)
>  	return 0;
>  }
>  
> -static int __devinit omap_udc_probe(struct platform_device *pdev)
> +static int omap_udc_probe(struct platform_device *pdev)
>  {
>  	int			status = -ENODEV;
>  	int			hmc;
> diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c
> index 9fd6e5f..6fdb1bd 100644
> --- a/drivers/usb/gadget/s3c-hsotg.c
> +++ b/drivers/usb/gadget/s3c-hsotg.c
> @@ -3072,7 +3072,7 @@ static struct usb_gadget_ops s3c_hsotg_gadget_ops = {
>   * creation) to give to the gadget driver. Setup the endpoint name, any
>   * direction information and other state that may be required.
>   */
> -static void __devinit s3c_hsotg_initep(struct s3c_hsotg *hsotg,
> +static void s3c_hsotg_initep(struct s3c_hsotg *hsotg,
>  				       struct s3c_hsotg_ep *hs_ep,
>  				       int epnum)
>  {
> @@ -3414,7 +3414,7 @@ static const struct file_operations ep_fops = {
>   * with the same name as the device itself, in case we end up
>   * with multiple blocks in future systems.
>   */
> -static void __devinit s3c_hsotg_create_debug(struct s3c_hsotg *hsotg)
> +static void s3c_hsotg_create_debug(struct s3c_hsotg *hsotg)
>  {
>  	struct dentry *root;
>  	unsigned epidx;
> @@ -3490,7 +3490,7 @@ static void s3c_hsotg_release(struct device *dev)
>   * @pdev: The platform information for the driver
>   */
>  
> -static int __devinit s3c_hsotg_probe(struct platform_device *pdev)
> +static int s3c_hsotg_probe(struct platform_device *pdev)
>  {
>  	struct s3c_hsotg_plat *plat = pdev->dev.platform_data;
>  	struct device *dev = &pdev->dev;
> diff --git a/drivers/usb/gadget/s3c-hsudc.c b/drivers/usb/gadget/s3c-hsudc.c
> index d8e785d..52379b1 100644
> --- a/drivers/usb/gadget/s3c-hsudc.c
> +++ b/drivers/usb/gadget/s3c-hsudc.c
> @@ -1261,7 +1261,7 @@ static struct usb_gadget_ops s3c_hsudc_gadget_ops = {
>  	.vbus_draw	= s3c_hsudc_vbus_draw,
>  };
>  
> -static int __devinit s3c_hsudc_probe(struct platform_device *pdev)
> +static int s3c_hsudc_probe(struct platform_device *pdev)
>  {
>  	struct device *dev = &pdev->dev;
>  	struct resource *res;
> diff --git a/drivers/usb/host/bcma-hcd.c b/drivers/usb/host/bcma-hcd.c
> index f5143a0..8c83ed9 100644
> --- a/drivers/usb/host/bcma-hcd.c
> +++ b/drivers/usb/host/bcma-hcd.c
> @@ -54,7 +54,7 @@ static int bcma_wait_bits(struct bcma_device *dev, u16 reg, u32 bitmask,
>  	return -ETIMEDOUT;
>  }
>  
> -static void __devinit bcma_hcd_4716wa(struct bcma_device *dev)
> +static void bcma_hcd_4716wa(struct bcma_device *dev)
>  {
>  #ifdef CONFIG_BCMA_DRIVER_MIPS
>  	/* Work around for 4716 failures. */
> @@ -88,7 +88,7 @@ static void __devinit bcma_hcd_4716wa(struct bcma_device *dev)
>  }
>  
>  /* based on arch/mips/brcm-boards/bcm947xx/pcibios.c */
> -static void __devinit bcma_hcd_init_chip(struct bcma_device *dev)
> +static void bcma_hcd_init_chip(struct bcma_device *dev)
>  {
>  	u32 tmp;
>  
> @@ -165,8 +165,7 @@ static const struct usb_ehci_pdata ehci_pdata = {
>  static const struct usb_ohci_pdata ohci_pdata = {
>  };
>  
> -static struct platform_device * __devinit
> -bcma_hcd_create_pdev(struct bcma_device *dev, bool ohci, u32 addr)
> +static struct platform_device *bcma_hcd_create_pdev(struct bcma_device *dev, bool ohci, u32 addr)
>  {
>  	struct platform_device *hci_dev;
>  	struct resource hci_res[2];
> @@ -212,7 +211,7 @@ err_alloc:
>  	return ERR_PTR(ret);
>  }
>  
> -static int __devinit bcma_hcd_probe(struct bcma_device *dev)
> +static int bcma_hcd_probe(struct bcma_device *dev)
>  {
>  	int err;
>  	u16 chipid_top;
> diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c
> index 33f798e..96bf00d 100644
> --- a/drivers/usb/host/ehci-atmel.c
> +++ b/drivers/usb/host/ehci-atmel.c
> @@ -97,7 +97,7 @@ static const struct hc_driver ehci_atmel_hc_driver = {
>  
>  static u64 at91_ehci_dma_mask = DMA_BIT_MASK(32);
>  
> -static int __devinit ehci_atmel_drv_probe(struct platform_device *pdev)
> +static int ehci_atmel_drv_probe(struct platform_device *pdev)
>  {
>  	struct usb_hcd *hcd;
>  	const struct hc_driver *driver = &ehci_atmel_hc_driver;
> diff --git a/drivers/usb/host/ehci-grlib.c b/drivers/usb/host/ehci-grlib.c
> index da42695..1fc8929 100644
> --- a/drivers/usb/host/ehci-grlib.c
> +++ b/drivers/usb/host/ehci-grlib.c
> @@ -82,7 +82,7 @@ static const struct hc_driver ehci_grlib_hc_driver = {
>  };
>  
>  
> -static int __devinit ehci_hcd_grlib_probe(struct platform_device *op)
> +static int ehci_hcd_grlib_probe(struct platform_device *op)
>  {
>  	struct device_node *dn = op->dev.of_node;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c
> index 96da679..f74794c 100644
> --- a/drivers/usb/host/ehci-orion.c
> +++ b/drivers/usb/host/ehci-orion.c
> @@ -146,7 +146,7 @@ static const struct hc_driver ehci_orion_hc_driver = {
>  	.clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
>  };
>  
> -static void __devinit
> +static void
>  ehci_orion_conf_mbus_windows(struct usb_hcd *hcd,
>  			     const struct mbus_dram_target_info *dram)
>  {
> @@ -167,7 +167,7 @@ ehci_orion_conf_mbus_windows(struct usb_hcd *hcd,
>  	}
>  }
>  
> -static int __devinit ehci_orion_drv_probe(struct platform_device *pdev)
> +static int ehci_orion_drv_probe(struct platform_device *pdev)
>  {
>  	struct orion_ehci_data *pd = pdev->dev.platform_data;
>  	const struct mbus_dram_target_info *dram;
> diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
> index b807648..615cba0 100644
> --- a/drivers/usb/host/ehci-platform.c
> +++ b/drivers/usb/host/ehci-platform.c
> @@ -61,7 +61,7 @@ static const struct ehci_driver_overrides platform_overrides __initdata = {
>  	.reset =	ehci_platform_reset,
>  };
>  
> -static int __devinit ehci_platform_probe(struct platform_device *dev)
> +static int ehci_platform_probe(struct platform_device *dev)
>  {
>  	struct usb_hcd *hcd;
>  	struct resource *res_mem;
> diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c
> index fa937d0..45aceef 100644
> --- a/drivers/usb/host/ehci-ppc-of.c
> +++ b/drivers/usb/host/ehci-ppc-of.c
> @@ -71,7 +71,7 @@ static const struct hc_driver ehci_ppc_of_hc_driver = {
>   * Fix: Enable Break Memory Transfer (BMT) in INSNREG3
>   */
>  #define PPC440EPX_EHCI0_INSREG_BMT	(0x1 << 0)
> -static int __devinit
> +static int
>  ppc44x_enable_bmt(struct device_node *dn)
>  {
>  	__iomem u32 *insreg_virt;
> @@ -87,7 +87,7 @@ ppc44x_enable_bmt(struct device_node *dn)
>  }
>  
>  
> -static int __devinit ehci_hcd_ppc_of_probe(struct platform_device *op)
> +static int ehci_hcd_ppc_of_probe(struct platform_device *op)
>  {
>  	struct device_node *dn = op->dev.of_node;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/ehci-ps3.c b/drivers/usb/host/ehci-ps3.c
> index 45a356e..df5925a 100644
> --- a/drivers/usb/host/ehci-ps3.c
> +++ b/drivers/usb/host/ehci-ps3.c
> @@ -93,7 +93,7 @@ static const struct hc_driver ps3_ehci_hc_driver = {
>  	.clear_tt_buffer_complete	= ehci_clear_tt_buffer_complete,
>  };
>  
> -static int __devinit ps3_ehci_probe(struct ps3_system_bus_device *dev)
> +static int ps3_ehci_probe(struct ps3_system_bus_device *dev)
>  {
>  	int result;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/ehci-s5p.c b/drivers/usb/host/ehci-s5p.c
> index f90a881..2cf19d1 100644
> --- a/drivers/usb/host/ehci-s5p.c
> +++ b/drivers/usb/host/ehci-s5p.c
> @@ -85,7 +85,7 @@ static void s5p_setup_vbus_gpio(struct platform_device *pdev)
>  
>  static u64 ehci_s5p_dma_mask = DMA_BIT_MASK(32);
>  
> -static int __devinit s5p_ehci_probe(struct platform_device *pdev)
> +static int s5p_ehci_probe(struct platform_device *pdev)
>  {
>  	struct s5p_ehci_platdata *pdata;
>  	struct s5p_ehci_hcd *s5p_ehci;
> diff --git a/drivers/usb/host/ehci-w90x900.c b/drivers/usb/host/ehci-w90x900.c
> index 7bcb8b2..bf8d462 100644
> --- a/drivers/usb/host/ehci-w90x900.c
> +++ b/drivers/usb/host/ehci-w90x900.c
> @@ -18,7 +18,7 @@
>  #define PHY0_CTR	(0xA4)
>  #define PHY1_CTR	(0xA8)
>  
> -static int __devinit usb_w90x900_probe(const struct hc_driver *driver,
> +static int usb_w90x900_probe(const struct hc_driver *driver,
>  		      struct platform_device *pdev)
>  {
>  	struct usb_hcd *hcd;
> @@ -147,7 +147,7 @@ static const struct hc_driver ehci_w90x900_hc_driver = {
>  	.clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
>  };
>  
> -static int __devinit ehci_w90x900_probe(struct platform_device *pdev)
> +static int ehci_w90x900_probe(struct platform_device *pdev)
>  {
>  	if (usb_disabled())
>  		return -ENODEV;
> diff --git a/drivers/usb/host/ehci-xilinx-of.c b/drivers/usb/host/ehci-xilinx-of.c
> index 6a3f921..4f285e8 100644
> --- a/drivers/usb/host/ehci-xilinx-of.c
> +++ b/drivers/usb/host/ehci-xilinx-of.c
> @@ -125,7 +125,7 @@ static const struct hc_driver ehci_xilinx_of_hc_driver = {
>   * as HS only or HS/FS only, it checks the configuration in the device tree
>   * entry, and sets an appropriate value for hcd->has_tt.
>   */
> -static int __devinit ehci_hcd_xilinx_of_probe(struct platform_device *op)
> +static int ehci_hcd_xilinx_of_probe(struct platform_device *op)
>  {
>  	struct device_node *dn = op->dev.of_node;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/fhci-hcd.c b/drivers/usb/host/fhci-hcd.c
> index 92f4b99..618f143 100644
> --- a/drivers/usb/host/fhci-hcd.c
> +++ b/drivers/usb/host/fhci-hcd.c
> @@ -561,7 +561,7 @@ static const struct hc_driver fhci_driver = {
>  	.hub_control = fhci_hub_control,
>  };
>  
> -static int __devinit of_fhci_probe(struct platform_device *ofdev)
> +static int of_fhci_probe(struct platform_device *ofdev)
>  {
>  	struct device *dev = &ofdev->dev;
>  	struct device_node *node = dev->of_node;
> diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c
> index 3a5c82f..dc0aeba 100644
> --- a/drivers/usb/host/fsl-mph-dr-of.c
> +++ b/drivers/usb/host/fsl-mph-dr-of.c
> @@ -42,7 +42,7 @@ struct fsl_usb2_dev_data dr_mode_data[] __devinitdata = {
>  	},
>  };
>  
> -struct fsl_usb2_dev_data * __devinit get_dr_mode_data(struct device_node *np)
> +struct fsl_usb2_dev_data *get_dr_mode_data(struct device_node *np)
>  {
>  	const unsigned char *prop;
>  	int i;
> @@ -59,7 +59,7 @@ struct fsl_usb2_dev_data * __devinit get_dr_mode_data(struct device_node *np)
>  	return &dr_mode_data[0]; /* mode not specified, use host */
>  }
>  
> -static enum fsl_usb2_phy_modes __devinit determine_usb_phy(const char *phy_type)
> +static enum fsl_usb2_phy_modes determine_usb_phy(const char *phy_type)
>  {
>  	if (!phy_type)
>  		return FSL_USB2_PHY_NONE;
> @@ -75,7 +75,7 @@ static enum fsl_usb2_phy_modes __devinit determine_usb_phy(const char *phy_type)
>  	return FSL_USB2_PHY_NONE;
>  }
>  
> -struct platform_device * __devinit fsl_usb2_device_register(
> +struct platform_device *fsl_usb2_device_register(
>  					struct platform_device *ofdev,
>  					struct fsl_usb2_platform_data *pdata,
>  					const char *name, int id)
> @@ -154,7 +154,7 @@ static int usb_get_ver_info(struct device_node *np)
>  	return ver;
>  }
>  
> -static int __devinit fsl_usb2_mph_dr_of_probe(struct platform_device *ofdev)
> +static int fsl_usb2_mph_dr_of_probe(struct platform_device *ofdev)
>  {
>  	struct device_node *np = ofdev->dev.of_node;
>  	struct platform_device *usb_dev;
> diff --git a/drivers/usb/host/imx21-hcd.c b/drivers/usb/host/imx21-hcd.c
> index f19e269..bd6a744 100644
> --- a/drivers/usb/host/imx21-hcd.c
> +++ b/drivers/usb/host/imx21-hcd.c
> @@ -1680,7 +1680,7 @@ static int imx21_hc_reset(struct usb_hcd *hcd)
>  	return 0;
>  }
>  
> -static int __devinit imx21_hc_start(struct usb_hcd *hcd)
> +static int imx21_hc_start(struct usb_hcd *hcd)
>  {
>  	struct imx21 *imx21 = hcd_to_imx21(hcd);
>  	unsigned long flags;
> diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c
> index 9e65e30..b64e661 100644
> --- a/drivers/usb/host/isp116x-hcd.c
> +++ b/drivers/usb/host/isp116x-hcd.c
> @@ -1557,7 +1557,7 @@ static int isp116x_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -static int __devinit isp116x_probe(struct platform_device *pdev)
> +static int isp116x_probe(struct platform_device *pdev)
>  {
>  	struct usb_hcd *hcd;
>  	struct isp116x *isp116x;
> diff --git a/drivers/usb/host/isp1362-hcd.c b/drivers/usb/host/isp1362-hcd.c
> index 1ad9d20..5f8b63c 100644
> --- a/drivers/usb/host/isp1362-hcd.c
> +++ b/drivers/usb/host/isp1362-hcd.c
> @@ -2680,7 +2680,7 @@ static int __devexit isp1362_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -static int __devinit isp1362_probe(struct platform_device *pdev)
> +static int isp1362_probe(struct platform_device *pdev)
>  {
>  	struct usb_hcd *hcd;
>  	struct isp1362_hcd *isp1362_hcd;
> diff --git a/drivers/usb/host/isp1760-if.c b/drivers/usb/host/isp1760-if.c
> index 5fb3cae..d752a4c 100644
> --- a/drivers/usb/host/isp1760-if.c
> +++ b/drivers/usb/host/isp1760-if.c
> @@ -172,7 +172,7 @@ static struct platform_driver isp1760_of_driver = {
>  #endif
>  
>  #ifdef CONFIG_PCI
> -static int __devinit isp1761_pci_probe(struct pci_dev *dev,
> +static int isp1761_pci_probe(struct pci_dev *dev,
>  		const struct pci_device_id *id)
>  {
>  	u8 latency, limit;
> @@ -346,7 +346,7 @@ static struct pci_driver isp1761_pci_driver = {
>  };
>  #endif
>  
> -static int __devinit isp1760_plat_probe(struct platform_device *pdev)
> +static int isp1760_plat_probe(struct platform_device *pdev)
>  {
>  	int ret = 0;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
> index 51de2f9..0518348 100644
> --- a/drivers/usb/host/ohci-at91.c
> +++ b/drivers/usb/host/ohci-at91.c
> @@ -108,7 +108,7 @@ static void __devexit usb_hcd_at91_remove (struct usb_hcd *, struct platform_dev
>   * then invokes the start() method for the HCD associated with it
>   * through the hotplug entry's driver_data.
>   */
> -static int __devinit usb_hcd_at91_probe(const struct hc_driver *driver,
> +static int usb_hcd_at91_probe(const struct hc_driver *driver,
>  			struct platform_device *pdev)
>  {
>  	int retval;
> @@ -222,7 +222,7 @@ static void __devexit usb_hcd_at91_remove(struct usb_hcd *hcd,
>  
>  /*-------------------------------------------------------------------------*/
>  
> -static int __devinit
> +static int
>  ohci_at91_reset (struct usb_hcd *hcd)
>  {
>  	struct at91_usbh_data	*board = hcd->self.controller->platform_data;
> @@ -236,7 +236,7 @@ ohci_at91_reset (struct usb_hcd *hcd)
>  	return 0;
>  }
>  
> -static int __devinit
> +static int
>  ohci_at91_start (struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd		*ohci = hcd_to_ohci (hcd);
> @@ -506,7 +506,7 @@ MODULE_DEVICE_TABLE(of, at91_ohci_dt_ids);
>  
>  static u64 at91_ohci_dma_mask = DMA_BIT_MASK(32);
>  
> -static int __devinit ohci_at91_of_init(struct platform_device *pdev)
> +static int ohci_at91_of_init(struct platform_device *pdev)
>  {
>  	struct device_node *np = pdev->dev.of_node;
>  	int i, gpio;
> @@ -548,7 +548,7 @@ static int __devinit ohci_at91_of_init(struct platform_device *pdev)
>  	return 0;
>  }
>  #else
> -static int __devinit ohci_at91_of_init(struct platform_device *pdev)
> +static int ohci_at91_of_init(struct platform_device *pdev)
>  {
>  	return 0;
>  }
> @@ -556,7 +556,7 @@ static int __devinit ohci_at91_of_init(struct platform_device *pdev)
>  
>  /*-------------------------------------------------------------------------*/
>  
> -static int __devinit ohci_hcd_at91_drv_probe(struct platform_device *pdev)
> +static int ohci_hcd_at91_drv_probe(struct platform_device *pdev)
>  {
>  	struct at91_usbh_data	*pdata;
>  	int			i;
> diff --git a/drivers/usb/host/ohci-ep93xx.c b/drivers/usb/host/ohci-ep93xx.c
> index a982f04..8704e9fa 100644
> --- a/drivers/usb/host/ohci-ep93xx.c
> +++ b/drivers/usb/host/ohci-ep93xx.c
> @@ -107,7 +107,7 @@ static void usb_hcd_ep93xx_remove(struct usb_hcd *hcd,
>  	usb_put_hcd(hcd);
>  }
>  
> -static int __devinit ohci_ep93xx_start(struct usb_hcd *hcd)
> +static int ohci_ep93xx_start(struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd *ohci = hcd_to_ohci(hcd);
>  	int ret;
> diff --git a/drivers/usb/host/ohci-exynos.c b/drivers/usb/host/ohci-exynos.c
> index 2f673e8..1288cdb 100644
> --- a/drivers/usb/host/ohci-exynos.c
> +++ b/drivers/usb/host/ohci-exynos.c
> @@ -76,7 +76,7 @@ static const struct hc_driver exynos_ohci_hc_driver = {
>  
>  static u64 ohci_exynos_dma_mask = DMA_BIT_MASK(32);
>  
> -static int __devinit exynos_ohci_probe(struct platform_device *pdev)
> +static int exynos_ohci_probe(struct platform_device *pdev)
>  {
>  	struct exynos4_ohci_platdata *pdata;
>  	struct exynos_ohci_hcd *exynos_ohci;
> diff --git a/drivers/usb/host/ohci-jz4740.c b/drivers/usb/host/ohci-jz4740.c
> index b4921b7..59feb87 100644
> --- a/drivers/usb/host/ohci-jz4740.c
> +++ b/drivers/usb/host/ohci-jz4740.c
> @@ -145,7 +145,7 @@ static const struct hc_driver ohci_jz4740_hc_driver = {
>  };
>  
>  
> -static __devinit int jz4740_ohci_probe(struct platform_device *pdev)
> +static int jz4740_ohci_probe(struct platform_device *pdev)
>  {
>  	int ret;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/ohci-nxp.c b/drivers/usb/host/ohci-nxp.c
> index e068f03..2344040 100644
> --- a/drivers/usb/host/ohci-nxp.c
> +++ b/drivers/usb/host/ohci-nxp.c
> @@ -147,7 +147,7 @@ static void nxp_stop_hc(void)
>  	__raw_writel(tmp, USB_OTG_STAT_CONTROL);
>  }
>  
> -static int __devinit ohci_nxp_start(struct usb_hcd *hcd)
> +static int ohci_nxp_start(struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd *ohci = hcd_to_ohci(hcd);
>  	int ret;
> @@ -205,7 +205,7 @@ static const struct hc_driver ohci_nxp_hc_driver = {
>  	.start_port_reset = ohci_start_port_reset,
>  };
>  
> -static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev)
> +static int usb_hcd_nxp_probe(struct platform_device *pdev)
>  {
>  	struct usb_hcd *hcd = 0;
>  	struct ohci_hcd *ohci;
> diff --git a/drivers/usb/host/ohci-octeon.c b/drivers/usb/host/ohci-octeon.c
> index d469bf9..d44430d 100644
> --- a/drivers/usb/host/ohci-octeon.c
> +++ b/drivers/usb/host/ohci-octeon.c
> @@ -42,7 +42,7 @@ static void ohci_octeon_hw_stop(void)
>  	octeon2_usb_clocks_stop();
>  }
>  
> -static int __devinit ohci_octeon_start(struct usb_hcd *hcd)
> +static int ohci_octeon_start(struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd	*ohci = hcd_to_ohci(hcd);
>  	int ret;
> diff --git a/drivers/usb/host/ohci-omap3.c b/drivers/usb/host/ohci-omap3.c
> index 002c812..41382fc 100644
> --- a/drivers/usb/host/ohci-omap3.c
> +++ b/drivers/usb/host/ohci-omap3.c
> @@ -124,7 +124,7 @@ static const struct hc_driver ohci_omap3_hc_driver = {
>   * then invokes the start() method for the HCD associated with it
>   * through the hotplug entry's driver_data.
>   */
> -static int __devinit ohci_hcd_omap3_probe(struct platform_device *pdev)
> +static int ohci_hcd_omap3_probe(struct platform_device *pdev)
>  {
>  	struct device		*dev = &pdev->dev;
>  	struct usb_hcd		*hcd = NULL;
> diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
> index 6afa7dc..951514e 100644
> --- a/drivers/usb/host/ohci-pci.c
> +++ b/drivers/usb/host/ohci-pci.c
> @@ -270,7 +270,7 @@ static int ohci_pci_reset (struct usb_hcd *hcd)
>  }
>  
>  
> -static int __devinit ohci_pci_start (struct usb_hcd *hcd)
> +static int ohci_pci_start (struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
>  	int		ret;
> diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
> index ffe6c98..c3f76fa 100644
> --- a/drivers/usb/host/ohci-platform.c
> +++ b/drivers/usb/host/ohci-platform.c
> @@ -83,7 +83,7 @@ static const struct hc_driver ohci_platform_hc_driver = {
>  	.start_port_reset	= ohci_start_port_reset,
>  };
>  
> -static int __devinit ohci_platform_probe(struct platform_device *dev)
> +static int ohci_platform_probe(struct platform_device *dev)
>  {
>  	struct usb_hcd *hcd;
>  	struct resource *res_mem;
> diff --git a/drivers/usb/host/ohci-ppc-of.c b/drivers/usb/host/ohci-ppc-of.c
> index e27d5ae..64c2ed9f 100644
> --- a/drivers/usb/host/ohci-ppc-of.c
> +++ b/drivers/usb/host/ohci-ppc-of.c
> @@ -19,7 +19,7 @@
>  #include <asm/prom.h>
>  
>  
> -static int __devinit
> +static int
>  ohci_ppc_of_start(struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd	*ohci = hcd_to_ohci(hcd);
> @@ -81,7 +81,7 @@ static const struct hc_driver ohci_ppc_of_hc_driver = {
>  };
>  
>  
> -static int __devinit ohci_hcd_ppc_of_probe(struct platform_device *op)
> +static int ohci_hcd_ppc_of_probe(struct platform_device *op)
>  {
>  	struct device_node *dn = op->dev.of_node;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/ohci-ps3.c b/drivers/usb/host/ohci-ps3.c
> index 2ee1d8d..7d35cd9 100644
> --- a/drivers/usb/host/ohci-ps3.c
> +++ b/drivers/usb/host/ohci-ps3.c
> @@ -30,7 +30,7 @@ static int ps3_ohci_hc_reset(struct usb_hcd *hcd)
>  	return ohci_init(ohci);
>  }
>  
> -static int __devinit ps3_ohci_hc_start(struct usb_hcd *hcd)
> +static int ps3_ohci_hc_start(struct usb_hcd *hcd)
>  {
>  	int result;
>  	struct ohci_hcd *ohci = hcd_to_ohci(hcd);
> @@ -76,7 +76,7 @@ static const struct hc_driver ps3_ohci_hc_driver = {
>  #endif
>  };
>  
> -static int __devinit ps3_ohci_probe(struct ps3_system_bus_device *dev)
> +static int ps3_ohci_probe(struct ps3_system_bus_device *dev)
>  {
>  	int result;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/ohci-pxa27x.c b/drivers/usb/host/ohci-pxa27x.c
> index 156d289..efe71f3 100644
> --- a/drivers/usb/host/ohci-pxa27x.c
> +++ b/drivers/usb/host/ohci-pxa27x.c
> @@ -284,7 +284,7 @@ MODULE_DEVICE_TABLE(of, pxa_ohci_dt_ids);
>  
>  static u64 pxa_ohci_dma_mask = DMA_BIT_MASK(32);
>  
> -static int __devinit ohci_pxa_of_init(struct platform_device *pdev)
> +static int ohci_pxa_of_init(struct platform_device *pdev)
>  {
>  	struct device_node *np = pdev->dev.of_node;
>  	struct pxaohci_platform_data *pdata;
> @@ -330,7 +330,7 @@ static int __devinit ohci_pxa_of_init(struct platform_device *pdev)
>  	return 0;
>  }
>  #else
> -static int __devinit ohci_pxa_of_init(struct platform_device *pdev)
> +static int ohci_pxa_of_init(struct platform_device *pdev)
>  {
>  	return 0;
>  }
> @@ -471,7 +471,7 @@ void usb_hcd_pxa27x_remove (struct usb_hcd *hcd, struct platform_device *pdev)
>  
>  /*-------------------------------------------------------------------------*/
>  
> -static int __devinit
> +static int
>  ohci_pxa27x_start (struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd	*ohci = hcd_to_ohci (hcd);
> diff --git a/drivers/usb/host/ohci-s3c2410.c b/drivers/usb/host/ohci-s3c2410.c
> index 5c5c017..4f29e0b 100644
> --- a/drivers/usb/host/ohci-s3c2410.c
> +++ b/drivers/usb/host/ohci-s3c2410.c
> @@ -458,7 +458,7 @@ static const struct hc_driver ohci_s3c2410_hc_driver = {
>  
>  /* device driver */
>  
> -static int __devinit ohci_hcd_s3c2410_drv_probe(struct platform_device *pdev)
> +static int ohci_hcd_s3c2410_drv_probe(struct platform_device *pdev)
>  {
>  	return usb_hcd_s3c2410_probe(&ohci_s3c2410_hc_driver, pdev);
>  }
> diff --git a/drivers/usb/host/ohci-sa1111.c b/drivers/usb/host/ohci-sa1111.c
> index b6cc925..17b2a7d 100644
> --- a/drivers/usb/host/ohci-sa1111.c
> +++ b/drivers/usb/host/ohci-sa1111.c
> @@ -63,7 +63,7 @@ static int ohci_sa1111_reset(struct usb_hcd *hcd)
>  	return ohci_init(ohci);
>  }
>  
> -static int __devinit ohci_sa1111_start(struct usb_hcd *hcd)
> +static int ohci_sa1111_start(struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd	*ohci = hcd_to_ohci(hcd);
>  	int ret;
> diff --git a/drivers/usb/host/ohci-spear.c b/drivers/usb/host/ohci-spear.c
> index c69725d..b7fc2fc 100644
> --- a/drivers/usb/host/ohci-spear.c
> +++ b/drivers/usb/host/ohci-spear.c
> @@ -33,7 +33,7 @@ static void spear_stop_ohci(struct spear_ohci *ohci)
>  	clk_disable_unprepare(ohci->clk);
>  }
>  
> -static int __devinit ohci_spear_start(struct usb_hcd *hcd)
> +static int ohci_spear_start(struct usb_hcd *hcd)
>  {
>  	struct ohci_hcd *ohci = hcd_to_ohci(hcd);
>  	int ret;
> diff --git a/drivers/usb/host/ohci-tmio.c b/drivers/usb/host/ohci-tmio.c
> index 94c6c55..5996a3b 100644
> --- a/drivers/usb/host/ohci-tmio.c
> +++ b/drivers/usb/host/ohci-tmio.c
> @@ -184,7 +184,7 @@ static const struct hc_driver ohci_tmio_hc_driver = {
>  /*-------------------------------------------------------------------------*/
>  static struct platform_driver ohci_hcd_tmio_driver;
>  
> -static int __devinit ohci_hcd_tmio_drv_probe(struct platform_device *dev)
> +static int ohci_hcd_tmio_drv_probe(struct platform_device *dev)
>  {
>  	const struct mfd_cell *cell = mfd_get_cell(dev);
>  	struct resource *regs = platform_get_resource(dev, IORESOURCE_MEM, 0);
> diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
> index 39f9e4a..a018e70 100644
> --- a/drivers/usb/host/pci-quirks.c
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -443,7 +443,7 @@ static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
>  #define pio_enabled(dev) io_type_enabled(dev, PCI_COMMAND_IO)
>  #define mmio_enabled(dev) io_type_enabled(dev, PCI_COMMAND_MEMORY)
>  
> -static void __devinit quirk_usb_handoff_uhci(struct pci_dev *pdev)
> +static void quirk_usb_handoff_uhci(struct pci_dev *pdev)
>  {
>  	unsigned long base = 0;
>  	int i;
> @@ -461,12 +461,12 @@ static void __devinit quirk_usb_handoff_uhci(struct pci_dev *pdev)
>  		uhci_check_and_reset_hc(pdev, base);
>  }
>  
> -static int __devinit mmio_resource_enabled(struct pci_dev *pdev, int idx)
> +static int mmio_resource_enabled(struct pci_dev *pdev, int idx)
>  {
>  	return pci_resource_start(pdev, idx) && mmio_enabled(pdev);
>  }
>  
> -static void __devinit quirk_usb_handoff_ohci(struct pci_dev *pdev)
> +static void quirk_usb_handoff_ohci(struct pci_dev *pdev)
>  {
>  	void __iomem *base;
>  	u32 control;
> @@ -558,7 +558,7 @@ static const struct dmi_system_id __devinitconst ehci_dmi_nohandoff_table[] = {
>  	{ }
>  };
>  
> -static void __devinit ehci_bios_handoff(struct pci_dev *pdev,
> +static void ehci_bios_handoff(struct pci_dev *pdev,
>  					void __iomem *op_reg_base,
>  					u32 cap, u8 offset)
>  {
> @@ -626,7 +626,7 @@ static void __devinit ehci_bios_handoff(struct pci_dev *pdev,
>  		writel(0, op_reg_base + EHCI_CONFIGFLAG);
>  }
>  
> -static void __devinit quirk_usb_disable_ehci(struct pci_dev *pdev)
> +static void quirk_usb_disable_ehci(struct pci_dev *pdev)
>  {
>  	void __iomem *base, *op_reg_base;
>  	u32	hcc_params, cap, val;
> @@ -841,7 +841,7 @@ EXPORT_SYMBOL_GPL(usb_disable_xhci_ports);
>   * and then waits 5 seconds for the BIOS to hand over control.
>   * If we timeout, assume the BIOS is broken and take control anyway.
>   */
> -static void __devinit quirk_usb_handoff_xhci(struct pci_dev *pdev)
> +static void quirk_usb_handoff_xhci(struct pci_dev *pdev)
>  {
>  	void __iomem *base;
>  	int ext_cap_offset;
> @@ -941,7 +941,7 @@ hc_init:
>  	iounmap(base);
>  }
>  
> -static void __devinit quirk_usb_early_handoff(struct pci_dev *pdev)
> +static void quirk_usb_early_handoff(struct pci_dev *pdev)
>  {
>  	/* Skip Netlogic mips SoC's internal PCI USB controller.
>  	 * This device does not need/support EHCI/OHCI handoff
> diff --git a/drivers/usb/host/r8a66597-hcd.c b/drivers/usb/host/r8a66597-hcd.c
> index 4e0436f..e97dfad 100644
> --- a/drivers/usb/host/r8a66597-hcd.c
> +++ b/drivers/usb/host/r8a66597-hcd.c
> @@ -2405,7 +2405,7 @@ static int __devexit r8a66597_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -static int __devinit r8a66597_probe(struct platform_device *pdev)
> +static int r8a66597_probe(struct platform_device *pdev)
>  {
>  	char clk_name[8];
>  	struct resource *res = NULL, *ires;
> diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c
> index 15f20de..782127d 100644
> --- a/drivers/usb/host/sl811-hcd.c
> +++ b/drivers/usb/host/sl811-hcd.c
> @@ -1618,7 +1618,7 @@ sl811h_remove(struct platform_device *dev)
>  	return 0;
>  }
>  
> -static int __devinit
> +static int
>  sl811h_probe(struct platform_device *dev)
>  {
>  	struct usb_hcd		*hcd;
> diff --git a/drivers/usb/host/ssb-hcd.c b/drivers/usb/host/ssb-hcd.c
> index 4dc9a09..79aa958 100644
> --- a/drivers/usb/host/ssb-hcd.c
> +++ b/drivers/usb/host/ssb-hcd.c
> @@ -39,7 +39,7 @@ struct ssb_hcd_device {
>  	u32 enable_flags;
>  };
>  
> -static void __devinit ssb_hcd_5354wa(struct ssb_device *dev)
> +static void ssb_hcd_5354wa(struct ssb_device *dev)
>  {
>  #ifdef CONFIG_SSB_DRIVER_MIPS
>  	/* Work around for 5354 failures */
> @@ -53,7 +53,7 @@ static void __devinit ssb_hcd_5354wa(struct ssb_device *dev)
>  #endif
>  }
>  
> -static void __devinit ssb_hcd_usb20wa(struct ssb_device *dev)
> +static void ssb_hcd_usb20wa(struct ssb_device *dev)
>  {
>  	if (dev->id.coreid == SSB_DEV_USB20_HOST) {
>  		/*
> @@ -80,7 +80,7 @@ static void __devinit ssb_hcd_usb20wa(struct ssb_device *dev)
>  }
>  
>  /* based on arch/mips/brcm-boards/bcm947xx/pcibios.c */
> -static u32 __devinit ssb_hcd_init_chip(struct ssb_device *dev)
> +static u32 ssb_hcd_init_chip(struct ssb_device *dev)
>  {
>  	u32 flags = 0;
>  
> @@ -101,8 +101,7 @@ static const struct usb_ehci_pdata ehci_pdata = {
>  static const struct usb_ohci_pdata ohci_pdata = {
>  };
>  
> -static struct platform_device * __devinit
> -ssb_hcd_create_pdev(struct ssb_device *dev, bool ohci, u32 addr, u32 len)
> +static struct platform_device *ssb_hcd_create_pdev(struct ssb_device *dev, bool ohci, u32 addr, u32 len)
>  {
>  	struct platform_device *hci_dev;
>  	struct resource hci_res[2];
> @@ -148,7 +147,7 @@ err_alloc:
>  	return ERR_PTR(ret);
>  }
>  
> -static int __devinit ssb_hcd_probe(struct ssb_device *dev,
> +static int ssb_hcd_probe(struct ssb_device *dev,
>  				   const struct ssb_device_id *id)
>  {
>  	int err, tmp;
> diff --git a/drivers/usb/host/u132-hcd.c b/drivers/usb/host/u132-hcd.c
> index 8836898..8bf78e6 100644
> --- a/drivers/usb/host/u132-hcd.c
> +++ b/drivers/usb/host/u132-hcd.c
> @@ -3084,7 +3084,7 @@ static void u132_initialise(struct u132 *u132, struct platform_device *pdev)
>  	mutex_unlock(&u132->sw_lock);
>  }
>  
> -static int __devinit u132_probe(struct platform_device *pdev)
> +static int u132_probe(struct platform_device *pdev)
>  {
>  	struct usb_hcd *hcd;
>  	int retval;
> diff --git a/drivers/usb/host/uhci-grlib.c b/drivers/usb/host/uhci-grlib.c
> index f7a6213..511bfc4 100644
> --- a/drivers/usb/host/uhci-grlib.c
> +++ b/drivers/usb/host/uhci-grlib.c
> @@ -85,7 +85,7 @@ static const struct hc_driver uhci_grlib_hc_driver = {
>  };
>  
>  
> -static int __devinit uhci_hcd_grlib_probe(struct platform_device *op)
> +static int uhci_hcd_grlib_probe(struct platform_device *op)
>  {
>  	struct device_node *dn = op->dev.of_node;
>  	struct usb_hcd *hcd;
> diff --git a/drivers/usb/host/uhci-platform.c b/drivers/usb/host/uhci-platform.c
> index 68ebf20..8c4dace 100644
> --- a/drivers/usb/host/uhci-platform.c
> +++ b/drivers/usb/host/uhci-platform.c
> @@ -62,7 +62,7 @@ static const struct hc_driver uhci_platform_hc_driver = {
>  
>  static u64 platform_uhci_dma_mask = DMA_BIT_MASK(32);
>  
> -static int __devinit uhci_hcd_platform_probe(struct platform_device *pdev)
> +static int uhci_hcd_platform_probe(struct platform_device *pdev)
>  {
>  	struct usb_hcd *hcd;
>  	struct uhci_hcd	*uhci;
> diff --git a/drivers/usb/musb/am35x.c b/drivers/usb/musb/am35x.c
> index 35d94ac..2363819 100644
> --- a/drivers/usb/musb/am35x.c
> +++ b/drivers/usb/musb/am35x.c
> @@ -454,7 +454,7 @@ static const struct musb_platform_ops am35x_ops = {
>  
>  static u64 am35x_dmamask = DMA_BIT_MASK(32);
>  
> -static int __devinit am35x_probe(struct platform_device *pdev)
> +static int am35x_probe(struct platform_device *pdev)
>  {
>  	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
>  	struct platform_device		*musb;
> diff --git a/drivers/usb/musb/blackfin.c b/drivers/usb/musb/blackfin.c
> index 7e4d60a..12beb0e 100644
> --- a/drivers/usb/musb/blackfin.c
> +++ b/drivers/usb/musb/blackfin.c
> @@ -448,7 +448,7 @@ static const struct musb_platform_ops bfin_ops = {
>  
>  static u64 bfin_dmamask = DMA_BIT_MASK(32);
>  
> -static int __devinit bfin_probe(struct platform_device *pdev)
> +static int bfin_probe(struct platform_device *pdev)
>  {
>  	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
>  	struct platform_device		*musb;
> diff --git a/drivers/usb/musb/cppi_dma.c b/drivers/usb/musb/cppi_dma.c
> index 3a6c2fd..0968dd7 100644
> --- a/drivers/usb/musb/cppi_dma.c
> +++ b/drivers/usb/musb/cppi_dma.c
> @@ -1317,8 +1317,7 @@ irqreturn_t cppi_interrupt(int irq, void *dev_id)
>  EXPORT_SYMBOL_GPL(cppi_interrupt);
>  
>  /* Instantiate a software object representing a DMA controller. */
> -struct dma_controller *__devinit
> -dma_controller_create(struct musb *musb, void __iomem *mregs)
> +struct dma_controller *dma_controller_create(struct musb *musb, void __iomem *mregs)
>  {
>  	struct cppi		*controller;
>  	struct device		*dev = musb->controller;
> diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
> index 51ace9b..c4fb235 100644
> --- a/drivers/usb/musb/da8xx.c
> +++ b/drivers/usb/musb/da8xx.c
> @@ -471,7 +471,7 @@ static const struct musb_platform_ops da8xx_ops = {
>  
>  static u64 da8xx_dmamask = DMA_BIT_MASK(32);
>  
> -static int __devinit da8xx_probe(struct platform_device *pdev)
> +static int da8xx_probe(struct platform_device *pdev)
>  {
>  	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
>  	struct platform_device		*musb;
> diff --git a/drivers/usb/musb/davinci.c b/drivers/usb/musb/davinci.c
> index e01087b..8877c1a 100644
> --- a/drivers/usb/musb/davinci.c
> +++ b/drivers/usb/musb/davinci.c
> @@ -504,7 +504,7 @@ static const struct musb_platform_ops davinci_ops = {
>  
>  static u64 davinci_dmamask = DMA_BIT_MASK(32);
>  
> -static int __devinit davinci_probe(struct platform_device *pdev)
> +static int davinci_probe(struct platform_device *pdev)
>  {
>  	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
>  	struct platform_device		*musb;
> diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
> index 69cfa18..f17a3e7 100644
> --- a/drivers/usb/musb/musb_core.c
> +++ b/drivers/usb/musb/musb_core.c
> @@ -1163,7 +1163,7 @@ static struct musb_fifo_cfg __devinitdata mode_5_cfg[] = {
>   *
>   * returns negative errno or offset for next fifo.
>   */
> -static int __devinit
> +static int
>  fifo_setup(struct musb *musb, struct musb_hw_ep  *hw_ep,
>  		const struct musb_fifo_cfg *cfg, u16 offset)
>  {
> @@ -1238,7 +1238,7 @@ static struct musb_fifo_cfg __devinitdata ep0_cfg = {
>  	.style = FIFO_RXTX, .maxpacket = 64,
>  };
>  
> -static int __devinit ep_config_from_table(struct musb *musb)
> +static int ep_config_from_table(struct musb *musb)
>  {
>  	const struct musb_fifo_cfg	*cfg;
>  	unsigned		i, n;
> @@ -1329,7 +1329,7 @@ done:
>   * ep_config_from_hw - when MUSB_C_DYNFIFO_DEF is false
>   * @param musb the controller
>   */
> -static int __devinit ep_config_from_hw(struct musb *musb)
> +static int ep_config_from_hw(struct musb *musb)
>  {
>  	u8 epnum = 0;
>  	struct musb_hw_ep *hw_ep;
> @@ -1376,7 +1376,7 @@ enum { MUSB_CONTROLLER_MHDRC, MUSB_CONTROLLER_HDRC, };
>  /* Initialize MUSB (M)HDRC part of the USB hardware subsystem;
>   * configure endpoints, or take their config from silicon
>   */
> -static int __devinit musb_core_init(u16 musb_type, struct musb *musb)
> +static int musb_core_init(u16 musb_type, struct musb *musb)
>  {
>  	u8 reg;
>  	char *type;
> @@ -1759,8 +1759,7 @@ static void musb_irq_work(struct work_struct *data)
>   * Init support
>   */
>  
> -static struct musb *__devinit
> -allocate_instance(struct device *dev,
> +static struct musb *allocate_instance(struct device *dev,
>  		struct musb_hdrc_config *config, void __iomem *mbase)
>  {
>  	struct musb		*musb;
> @@ -1835,7 +1834,7 @@ static void musb_free(struct musb *musb)
>   * @ctrl: virtual address of controller registers,
>   *	not yet corrected for platform-specific offsets
>   */
> -static int __devinit
> +static int
>  musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
>  {
>  	int			status;
> @@ -2010,7 +2009,7 @@ fail0:
>  /* all implementations (PCI bridge to FPGA, VLYNQ, etc) should just
>   * bridge to a platform device; this driver then suffices.
>   */
> -static int __devinit musb_probe(struct platform_device *pdev)
> +static int musb_probe(struct platform_device *pdev)
>  {
>  	struct device	*dev = &pdev->dev;
>  	int		irq = platform_get_irq_byname(pdev, "mc");
> diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
> index 1d6e8af..4c21679 100644
> --- a/drivers/usb/musb/musb_debugfs.c
> +++ b/drivers/usb/musb/musb_debugfs.c
> @@ -233,7 +233,7 @@ static const struct file_operations musb_test_mode_fops = {
>  	.release		= single_release,
>  };
>  
> -int __devinit musb_init_debugfs(struct musb *musb)
> +int musb_init_debugfs(struct musb *musb)
>  {
>  	struct dentry		*root;
>  	struct dentry		*file;
> diff --git a/drivers/usb/musb/musb_dma.h b/drivers/usb/musb/musb_dma.h
> index 24d3921..1b6b827 100644
> --- a/drivers/usb/musb/musb_dma.h
> +++ b/drivers/usb/musb/musb_dma.h
> @@ -178,8 +178,7 @@ struct dma_controller {
>  extern void musb_dma_completion(struct musb *musb, u8 epnum, u8 transmit);
>  
>  
> -extern struct dma_controller *__devinit
> -dma_controller_create(struct musb *, void __iomem *);
> +extern struct dma_controller *dma_controller_create(struct musb *, void __iomem *);
>  
>  extern void dma_controller_destroy(struct dma_controller *);
>  
> diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
> index 5daea65..faeacd4 100644
> --- a/drivers/usb/musb/musb_dsps.c
> +++ b/drivers/usb/musb/musb_dsps.c
> @@ -478,7 +478,7 @@ static struct musb_platform_ops dsps_ops = {
>  
>  static u64 musb_dmamask = DMA_BIT_MASK(32);
>  
> -static int __devinit dsps_create_musb_pdev(struct dsps_glue *glue, u8 id)
> +static int dsps_create_musb_pdev(struct dsps_glue *glue, u8 id)
>  {
>  	struct device *dev = glue->dev;
>  	struct platform_device *pdev = to_platform_device(dev);
> @@ -591,7 +591,7 @@ err0:
>  	return ret;
>  }
>  
> -static int __devinit dsps_probe(struct platform_device *pdev)
> +static int dsps_probe(struct platform_device *pdev)
>  {
>  	struct device_node *np = pdev->dev.of_node;
>  	const struct of_device_id *match;
> diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
> index 4f23b12..8767874 100644
> --- a/drivers/usb/musb/musb_gadget.c
> +++ b/drivers/usb/musb/musb_gadget.c
> @@ -1787,7 +1787,7 @@ static void musb_gadget_release(struct device *dev)
>  }
>  
>  
> -static void __devinit
> +static void
>  init_peripheral_ep(struct musb *musb, struct musb_ep *ep, u8 epnum, int is_in)
>  {
>  	struct musb_hw_ep	*hw_ep = musb->endpoints + epnum;
> @@ -1824,7 +1824,7 @@ init_peripheral_ep(struct musb *musb, struct musb_ep *ep, u8 epnum, int is_in)
>   * Initialize the endpoints exposed to peripheral drivers, with backlinks
>   * to the rest of the driver state.
>   */
> -static inline void __devinit musb_g_init_endpoints(struct musb *musb)
> +static inline void musb_g_init_endpoints(struct musb *musb)
>  {
>  	u8			epnum;
>  	struct musb_hw_ep	*hw_ep;
> @@ -1857,7 +1857,7 @@ static inline void __devinit musb_g_init_endpoints(struct musb *musb)
>  /* called once during driver setup to initialize and link into
>   * the driver model; memory is zeroed.
>   */
> -int __devinit musb_gadget_setup(struct musb *musb)
> +int musb_gadget_setup(struct musb *musb)
>  {
>  	int status;
>  
> diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c
> index 0fc6ca6..3d1fd52 100644
> --- a/drivers/usb/musb/musbhsdma.c
> +++ b/drivers/usb/musb/musbhsdma.c
> @@ -380,8 +380,7 @@ void dma_controller_destroy(struct dma_controller *c)
>  	kfree(controller);
>  }
>  
> -struct dma_controller *__devinit
> -dma_controller_create(struct musb *musb, void __iomem *base)
> +struct dma_controller *dma_controller_create(struct musb *musb, void __iomem *base)
>  {
>  	struct musb_dma_controller *controller;
>  	struct device *dev = musb->controller;
> diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
> index 1150b4b..06850f2 100644
> --- a/drivers/usb/musb/omap2430.c
> +++ b/drivers/usb/musb/omap2430.c
> @@ -490,7 +490,7 @@ static const struct musb_platform_ops omap2430_ops = {
>  
>  static u64 omap2430_dmamask = DMA_BIT_MASK(32);
>  
> -static int __devinit omap2430_probe(struct platform_device *pdev)
> +static int omap2430_probe(struct platform_device *pdev)
>  {
>  	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
>  	struct omap_musb_board_data	*data;
> diff --git a/drivers/usb/musb/tusb6010.c b/drivers/usb/musb/tusb6010.c
> index b816517..a03b7be 100644
> --- a/drivers/usb/musb/tusb6010.c
> +++ b/drivers/usb/musb/tusb6010.c
> @@ -1153,7 +1153,7 @@ static const struct musb_platform_ops tusb_ops = {
>  
>  static u64 tusb_dmamask = DMA_BIT_MASK(32);
>  
> -static int __devinit tusb_probe(struct platform_device *pdev)
> +static int tusb_probe(struct platform_device *pdev)
>  {
>  	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
>  	struct platform_device		*musb;
> diff --git a/drivers/usb/musb/tusb6010_omap.c b/drivers/usb/musb/tusb6010_omap.c
> index bfca114..9716850 100644
> --- a/drivers/usb/musb/tusb6010_omap.c
> +++ b/drivers/usb/musb/tusb6010_omap.c
> @@ -668,8 +668,7 @@ void dma_controller_destroy(struct dma_controller *c)
>  	kfree(tusb_dma);
>  }
>  
> -struct dma_controller *__devinit
> -dma_controller_create(struct musb *musb, void __iomem *base)
> +struct dma_controller *dma_controller_create(struct musb *musb, void __iomem *base)
>  {
>  	void __iomem		*tbase = musb->ctrl_base;
>  	struct tusb_omap_dma	*tusb_dma;
> diff --git a/drivers/usb/musb/ux500.c b/drivers/usb/musb/ux500.c
> index 1d81557..6b12001 100644
> --- a/drivers/usb/musb/ux500.c
> +++ b/drivers/usb/musb/ux500.c
> @@ -81,7 +81,7 @@ static const struct musb_platform_ops ux500_ops = {
>  	.exit		= ux500_musb_exit,
>  };
>  
> -static int __devinit ux500_probe(struct platform_device *pdev)
> +static int ux500_probe(struct platform_device *pdev)
>  {
>  	struct musb_hdrc_platform_data	*pdata = pdev->dev.platform_data;
>  	struct platform_device		*musb;
> diff --git a/drivers/usb/musb/ux500_dma.c b/drivers/usb/musb/ux500_dma.c
> index f1059e7..039e567 100644
> --- a/drivers/usb/musb/ux500_dma.c
> +++ b/drivers/usb/musb/ux500_dma.c
> @@ -364,8 +364,7 @@ void dma_controller_destroy(struct dma_controller *c)
>  	kfree(controller);
>  }
>  
> -struct dma_controller *__devinit
> -dma_controller_create(struct musb *musb, void __iomem *base)
> +struct dma_controller *dma_controller_create(struct musb *musb, void __iomem *base)
>  {
>  	struct ux500_dma_controller *controller;
>  	struct platform_device *pdev = to_platform_device(musb->controller);
> diff --git a/drivers/usb/otg/ab8500-usb.c b/drivers/usb/otg/ab8500-usb.c
> index 62ea0c2..f0ba931 100644
> --- a/drivers/usb/otg/ab8500-usb.c
> +++ b/drivers/usb/otg/ab8500-usb.c
> @@ -468,7 +468,7 @@ static int ab8500_usb_v2_res_setup(struct platform_device *pdev,
>  	return 0;
>  }
>  
> -static int __devinit ab8500_usb_probe(struct platform_device *pdev)
> +static int ab8500_usb_probe(struct platform_device *pdev)
>  {
>  	struct ab8500_usb	*ab;
>  	struct usb_otg		*otg;
> diff --git a/drivers/usb/otg/fsl_otg.c b/drivers/usb/otg/fsl_otg.c
> index 77dad18..2b9a838 100644
> --- a/drivers/usb/otg/fsl_otg.c
> +++ b/drivers/usb/otg/fsl_otg.c
> @@ -1110,7 +1110,7 @@ static const struct file_operations otg_fops = {
>  	.release = fsl_otg_release,
>  };
>  
> -static int __devinit fsl_otg_probe(struct platform_device *pdev)
> +static int fsl_otg_probe(struct platform_device *pdev)
>  {
>  	int ret;
>  
> diff --git a/drivers/usb/otg/isp1301_omap.c b/drivers/usb/otg/isp1301_omap.c
> index ceee211..af9cb11 100644
> --- a/drivers/usb/otg/isp1301_omap.c
> +++ b/drivers/usb/otg/isp1301_omap.c
> @@ -1493,7 +1493,7 @@ isp1301_start_hnp(struct usb_otg *otg)
>  
>  /*-------------------------------------------------------------------------*/
>  
> -static int __devinit
> +static int
>  isp1301_probe(struct i2c_client *i2c, const struct i2c_device_id *id)
>  {
>  	int			status;
> diff --git a/drivers/usb/otg/nop-usb-xceiv.c b/drivers/usb/otg/nop-usb-xceiv.c
> index 0502c24..28f70e2 100644
> --- a/drivers/usb/otg/nop-usb-xceiv.c
> +++ b/drivers/usb/otg/nop-usb-xceiv.c
> @@ -93,7 +93,7 @@ static int nop_set_host(struct usb_otg *otg, struct usb_bus *host)
>  	return 0;
>  }
>  
> -static int __devinit nop_usb_xceiv_probe(struct platform_device *pdev)
> +static int nop_usb_xceiv_probe(struct platform_device *pdev)
>  {
>  	struct nop_usb_xceiv_platform_data *pdata = pdev->dev.platform_data;
>  	struct nop_usb_xceiv	*nop;
> diff --git a/drivers/usb/otg/twl4030-usb.c b/drivers/usb/otg/twl4030-usb.c
> index 11b2a12..0a70193 100644
> --- a/drivers/usb/otg/twl4030-usb.c
> +++ b/drivers/usb/otg/twl4030-usb.c
> @@ -575,7 +575,7 @@ static int twl4030_set_host(struct usb_otg *otg, struct usb_bus *host)
>  	return 0;
>  }
>  
> -static int __devinit twl4030_usb_probe(struct platform_device *pdev)
> +static int twl4030_usb_probe(struct platform_device *pdev)
>  {
>  	struct twl4030_usb_data *pdata = pdev->dev.platform_data;
>  	struct twl4030_usb	*twl;
> diff --git a/drivers/usb/otg/twl6030-usb.c b/drivers/usb/otg/twl6030-usb.c
> index fcadef7..8cd6cf4 100644
> --- a/drivers/usb/otg/twl6030-usb.c
> +++ b/drivers/usb/otg/twl6030-usb.c
> @@ -310,7 +310,7 @@ static int twl6030_set_vbus(struct phy_companion *comparator, bool enabled)
>  	return 0;
>  }
>  
> -static int __devinit twl6030_usb_probe(struct platform_device *pdev)
> +static int twl6030_usb_probe(struct platform_device *pdev)
>  {
>  	u32 ret;
>  	struct twl6030_usb	*twl;
> diff --git a/drivers/usb/phy/mv_u3d_phy.c b/drivers/usb/phy/mv_u3d_phy.c
> index 80cf57e..eaddbe3 100644
> --- a/drivers/usb/phy/mv_u3d_phy.c
> +++ b/drivers/usb/phy/mv_u3d_phy.c
> @@ -262,7 +262,7 @@ calstart:
>  	return 0;
>  }
>  
> -static int __devinit mv_u3d_phy_probe(struct platform_device *pdev)
> +static int mv_u3d_phy_probe(struct platform_device *pdev)
>  {
>  	struct mv_u3d_phy *mv_u3d_phy;
>  	struct mv_usb_platform_data *pdata;
> diff --git a/drivers/usb/phy/omap-usb2.c b/drivers/usb/phy/omap-usb2.c
> index f1ed872..c10fb8b 100644
> --- a/drivers/usb/phy/omap-usb2.c
> +++ b/drivers/usb/phy/omap-usb2.c
> @@ -141,7 +141,7 @@ static int omap_usb2_suspend(struct usb_phy *x, int suspend)
>  	return 0;
>  }
>  
> -static int __devinit omap_usb2_probe(struct platform_device *pdev)
> +static int omap_usb2_probe(struct platform_device *pdev)
>  {
>  	struct omap_usb			*phy;
>  	struct usb_otg			*otg;
> diff --git a/drivers/usb/phy/rcar-phy.c b/drivers/usb/phy/rcar-phy.c
> index 703a295..84ac2a7 100644
> --- a/drivers/usb/phy/rcar-phy.c
> +++ b/drivers/usb/phy/rcar-phy.c
> @@ -142,7 +142,7 @@ static void rcar_usb_phy_shutdown(struct usb_phy *phy)
>  	spin_unlock_irqrestore(&priv->lock, flags);
>  }
>  
> -static int __devinit rcar_usb_phy_probe(struct platform_device *pdev)
> +static int rcar_usb_phy_probe(struct platform_device *pdev)
>  {
>  	struct rcar_usb_phy_priv *priv;
>  	struct resource *res0, *res1;
> 


-- 
Nicolas Ferre

^ permalink raw reply

* Re: [PATCH v3 06/12] memory-hotplug: unregister memory section on SPARSEMEM_VMEMMAP
From: Wen Congyang @ 2012-11-20  9:37 UTC (permalink / raw)
  To: Jaegeuk Hanse
  Cc: linux-s390, linux-ia64, Len Brown, linux-acpi, linux-sh, x86,
	linux-kernel, cmetcalf, Jianguo Wu, linux-mm, Yasuaki Ishimatsu,
	paulus, Minchan Kim, KOSAKI Motohiro, David Rientjes, sparclinux,
	Christoph Lameter, linuxppc-dev, Andrew Morton, Jiang Liu
In-Reply-To: <50AB2A1A.6040606@gmail.com>

At 11/20/2012 02:58 PM, Jaegeuk Hanse Wrote:
> On 11/20/2012 02:55 PM, Wen Congyang wrote:
>> At 11/20/2012 02:22 PM, Jaegeuk Hanse Wrote:
>>> On 11/01/2012 05:44 PM, Wen Congyang wrote:
>>>> From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>>>
>>>> Currently __remove_section for SPARSEMEM_VMEMMAP does nothing. But
>>>> even if
>>>> we use SPARSEMEM_VMEMMAP, we can unregister the memory_section.
>>>>
>>>> So the patch add unregister_memory_section() into __remove_section().
>>> Hi Yasuaki,
>>>
>>> In order to review this patch, I should dig sparse memory codes in
>>> advance. But I have some confuse of codes. Why need encode/decode mem
>>> map instead of set mem_map to ms->section_mem_map directly?
>> The memmap is aligned, and the low bits are zero. We store some
>> information
>> in these bits. So we need to encode/decode memmap here.
> 
> Hi Congyang,
> 
> Thanks for you reponse. But I mean why return (unsigned long)(mem_map -
> (section_nr_to_pfn(pnum))); in function sparse_encode_mem_map, and then
> return ((struct page *)coded_mem_map) + section_nr_to_pfn(pnum); in
> funtion sparse_decode_mem_map instead of just store mem_map in
> ms->section_mep_map directly.

I don't know why. I try to find the reason, but I don't find any
place to use the pfn stored in the mem_map except in the decode
function. Maybe the designer doesn't want us to access the mem_map
directly.

Thanks
Wen Congyang

> 
> Regards,
> Jaegeuk
> 
>>
>> Thanks
>> Wen Congyang
>>
>>> Regards,
>>> Jaegeuk
>>>
>>>> CC: David Rientjes <rientjes@google.com>
>>>> CC: Jiang Liu <liuj97@gmail.com>
>>>> CC: Len Brown <len.brown@intel.com>
>>>> CC: Christoph Lameter <cl@linux.com>
>>>> Cc: Minchan Kim <minchan.kim@gmail.com>
>>>> CC: Andrew Morton <akpm@linux-foundation.org>
>>>> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
>>>> CC: Wen Congyang <wency@cn.fujitsu.com>
>>>> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>>> ---
>>>>    mm/memory_hotplug.c | 13 ++++++++-----
>>>>    1 file changed, 8 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
>>>> index ca07433..66a79a7 100644
>>>> --- a/mm/memory_hotplug.c
>>>> +++ b/mm/memory_hotplug.c
>>>> @@ -286,11 +286,14 @@ static int __meminit __add_section(int nid,
>>>> struct zone *zone,
>>>>    #ifdef CONFIG_SPARSEMEM_VMEMMAP
>>>>    static int __remove_section(struct zone *zone, struct mem_section
>>>> *ms)
>>>>    {
>>>> -    /*
>>>> -     * XXX: Freeing memmap with vmemmap is not implement yet.
>>>> -     *      This should be removed later.
>>>> -     */
>>>> -    return -EBUSY;
>>>> +    int ret = -EINVAL;
>>>> +
>>>> +    if (!valid_section(ms))
>>>> +        return ret;
>>>> +
>>>> +    ret = unregister_memory_section(ms);
>>>> +
>>>> +    return ret;
>>>>    }
>>>>    #else
>>>>    static int __remove_section(struct zone *zone, struct mem_section
>>>> *ms)
>>>
> 
> 

^ permalink raw reply

* Re: [PATCH v3 11/12] memory-hotplug: remove sysfs file of node
From: Wen Congyang @ 2012-11-20  9:35 UTC (permalink / raw)
  To: Yasuaki Ishimatsu
  Cc: linux-s390, linux-ia64, Len Brown, linux-acpi, linux-sh, x86,
	linux-kernel, cmetcalf, Jianguo Wu, linux-mm, paulus, Minchan Kim,
	KOSAKI Motohiro, David Rientjes, sparclinux, Christoph Lameter,
	linuxppc-dev, Andrew Morton, Jiang Liu
In-Reply-To: <50AA0537.1000501@jp.fujitsu.com>

At 11/19/2012 06:08 PM, Yasuaki Ishimatsu Wrote:
> Hi Wen,
> 
> This patch cannot be applied, if I apply latest acpi framework's patch-set:
> 
> https://lkml.org/lkml/2012/11/15/21
> 
> Because acpi_memory_disable_device() is gone by the patch-set.

The patchset is not for pm tree, so I don't apply the patchset in pm tree
before generating this patchset.

Thanks
Wen Congyang

> 
> I updated the patch and attached it on the mail.
> 
> 2012/11/01 18:44, Wen Congyang wrote:
>> This patch introduces a new function try_offline_node() to
>> remove sysfs file of node when all memory sections of this
>> node are removed. If some memory sections of this node are
>> not removed, this function does nothing.
>>
>> CC: David Rientjes <rientjes@google.com>
>> CC: Jiang Liu <liuj97@gmail.com>
>> CC: Len Brown <len.brown@intel.com>
>> CC: Christoph Lameter <cl@linux.com>
>> Cc: Minchan Kim <minchan.kim@gmail.com>
>> CC: Andrew Morton <akpm@linux-foundation.org>
>> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
>> CC: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
>> ---
>>   drivers/acpi/acpi_memhotplug.c |  8 +++++-
>>   include/linux/memory_hotplug.h |  2 +-
>>   mm/memory_hotplug.c            | 58 ++++++++++++++++++++++++++++++++++++++++--
>>   3 files changed, 64 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/acpi/acpi_memhotplug.c b/drivers/acpi/acpi_memhotplug.c
>> index 24c807f..0780f99 100644
>> --- a/drivers/acpi/acpi_memhotplug.c
>> +++ b/drivers/acpi/acpi_memhotplug.c
>> @@ -310,7 +310,9 @@ static int acpi_memory_disable_device(struct acpi_memory_device *mem_device)
>>   {
>>   	int result;
>>   	struct acpi_memory_info *info, *n;
>> +	int node;
>>   
>> +	node = acpi_get_node(mem_device->device->handle);
>>   
>>   	/*
>>   	 * Ask the VM to offline this memory range.
>> @@ -318,7 +320,11 @@ static int acpi_memory_disable_device(struct acpi_memory_device *mem_device)
>>   	 */
>>   	list_for_each_entry_safe(info, n, &mem_device->res_list, list) {
>>   		if (info->enabled) {
>> -			result = remove_memory(info->start_addr, info->length);
>> +			if (node < 0)
>> +				node = memory_add_physaddr_to_nid(
>> +					info->start_addr);
>> +			result = remove_memory(node, info->start_addr,
>> +				info->length);
>>   			if (result)
>>   				return result;
>>   		}
>> diff --git a/include/linux/memory_hotplug.h b/include/linux/memory_hotplug.h
>> index d4c4402..7b4cfe6 100644
>> --- a/include/linux/memory_hotplug.h
>> +++ b/include/linux/memory_hotplug.h
>> @@ -231,7 +231,7 @@ extern int arch_add_memory(int nid, u64 start, u64 size);
>>   extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages);
>>   extern int offline_memory_block(struct memory_block *mem);
>>   extern bool is_memblock_offlined(struct memory_block *mem);
>> -extern int remove_memory(u64 start, u64 size);
>> +extern int remove_memory(int node, u64 start, u64 size);
>>   extern int sparse_add_one_section(struct zone *zone, unsigned long start_pfn,
>>   								int nr_pages);
>>   extern void sparse_remove_one_section(struct zone *zone, struct mem_section *ms);
>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
>> index 7bcced0..d965da3 100644
>> --- a/mm/memory_hotplug.c
>> +++ b/mm/memory_hotplug.c
>> @@ -29,6 +29,7 @@
>>   #include <linux/suspend.h>
>>   #include <linux/mm_inline.h>
>>   #include <linux/firmware-map.h>
>> +#include <linux/stop_machine.h>
>>   
>>   #include <asm/tlbflush.h>
>>   
>> @@ -1299,7 +1300,58 @@ static int is_memblock_offlined_cb(struct memory_block *mem, void *arg)
>>   	return ret;
>>   }
>>   
>> -int __ref remove_memory(u64 start, u64 size)
>> +static int check_cpu_on_node(void *data)
>> +{
>> +	struct pglist_data *pgdat = data;
>> +	int cpu;
>> +
>> +	for_each_present_cpu(cpu) {
>> +		if (cpu_to_node(cpu) == pgdat->node_id)
>> +			/*
>> +			 * the cpu on this node isn't removed, and we can't
>> +			 * offline this node.
>> +			 */
>> +			return -EBUSY;
>> +	}
>> +
>> +	return 0;
>> +}
>> +
>> +/* offline the node if all memory sections of this node are removed */
>> +static void try_offline_node(int nid)
>> +{
>> +	unsigned long start_pfn = NODE_DATA(nid)->node_start_pfn;
>> +	unsigned long end_pfn = start_pfn + NODE_DATA(nid)->node_spanned_pages;
>> +	unsigned long pfn;
>> +
>> +	for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) {
>> +		unsigned long section_nr = pfn_to_section_nr(pfn);
>> +
>> +		if (!present_section_nr(section_nr))
>> +			continue;
>> +
>> +		if (pfn_to_nid(pfn) != nid)
>> +			continue;
>> +
>> +		/*
>> +		 * some memory sections of this node are not removed, and we
>> +		 * can't offline node now.
>> +		 */
>> +		return;
>> +	}
>> +
>> +	if (stop_machine(check_cpu_on_node, NODE_DATA(nid), NULL))
>> +		return;
>> +
>> +	/*
>> +	 * all memory/cpu of this node are removed, we can offline this
>> +	 * node now.
>> +	 */
>> +	node_set_offline(nid);
>> +	unregister_one_node(nid);
>> +}
>> +
>> +int __ref remove_memory(int nid, u64 start, u64 size)
>>   {
>>   	unsigned long start_pfn, end_pfn;
>>   	int ret = 0;
>> @@ -1346,6 +1398,8 @@ repeat:
>>   
>>   	arch_remove_memory(start, size);
>>   
>> +	try_offline_node(nid);
>> +
>>   	unlock_memory_hotplug();
>>   
>>   	return 0;
>> @@ -1355,7 +1409,7 @@ int offline_pages(unsigned long start_pfn, unsigned long nr_pages)
>>   {
>>   	return -EINVAL;
>>   }
>> -int remove_memory(u64 start, u64 size)
>> +int remove_memory(int nid, u64 start, u64 size)
>>   {
>>   	return -EINVAL;
>>   }
>>
> 
> ---
> This patch introduces a new function try_offline_node() to
> remove sysfs file of node when all memory sections of this
> node are removed. If some memory sections of this node are
> not removed, this function does nothing.
> 
> CC: David Rientjes <rientjes@google.com>
> CC: Jiang Liu <liuj97@gmail.com>
> CC: Len Brown <len.brown@intel.com>
> CC: Christoph Lameter <cl@linux.com>
> Cc: Minchan Kim <minchan.kim@gmail.com>
> CC: Andrew Morton <akpm@linux-foundation.org>
> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> CC: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
> ---
>  drivers/acpi/acpi_memhotplug.c |    9 +++++-
>  include/linux/memory_hotplug.h |    2 -
>  mm/memory_hotplug.c            |   58 +++++++++++++++++++++++++++++++++++++++--
>  3 files changed, 65 insertions(+), 4 deletions(-)
> 
> Index: linux-3.7-rc6/drivers/acpi/acpi_memhotplug.c
> ===================================================================
> --- linux-3.7-rc6.orig/drivers/acpi/acpi_memhotplug.c	2012-11-19 16:16:55.161912688 +0900
> +++ linux-3.7-rc6/drivers/acpi/acpi_memhotplug.c	2012-11-19 16:17:05.346912109 +0900
> @@ -295,6 +295,9 @@ static int acpi_memory_remove_memory(str
>  {
>  	int result = 0;
>  	struct acpi_memory_info *info, *n;
> +	int node;
> +
> +	node = acpi_get_node(mem_device->device->handle);
>  
>  	list_for_each_entry_safe(info, n, &mem_device->res_list, list) {
>  		if (info->failed)
> @@ -308,7 +311,11 @@ static int acpi_memory_remove_memory(str
>  			 */
>  			return -EBUSY;
>  
> -		result = remove_memory(info->start_addr, info->length);
> +		if (node < 0)
> +			node = memory_add_physaddr_to_nid(
> +				info->start_addr);
> +		result = remove_memory(node, info->start_addr,
> +			info->length);
>  		if (result)
>  			return result;
>  
> Index: linux-3.7-rc6/include/linux/memory_hotplug.h
> ===================================================================
> --- linux-3.7-rc6.orig/include/linux/memory_hotplug.h	2012-11-19 16:16:55.167912687 +0900
> +++ linux-3.7-rc6/include/linux/memory_hotplug.h	2012-11-19 16:17:05.348912109 +0900
> @@ -242,7 +242,7 @@ extern int arch_add_memory(int nid, u64 
>  extern int offline_pages(unsigned long start_pfn, unsigned long nr_pages);
>  extern int offline_memory_block(struct memory_block *mem);
>  extern bool is_memblock_offlined(struct memory_block *mem);
> -extern int remove_memory(u64 start, u64 size);
> +extern int remove_memory(int node, u64 start, u64 size);
>  extern int sparse_add_one_section(struct zone *zone, unsigned long start_pfn,
>  								int nr_pages);
>  extern void sparse_remove_one_section(struct zone *zone, struct mem_section *ms);
> Index: linux-3.7-rc6/mm/memory_hotplug.c
> ===================================================================
> --- linux-3.7-rc6.orig/mm/memory_hotplug.c	2012-11-19 16:16:55.164912687 +0900
> +++ linux-3.7-rc6/mm/memory_hotplug.c	2012-11-19 16:17:05.356912108 +0900
> @@ -29,6 +29,7 @@
>  #include <linux/suspend.h>
>  #include <linux/mm_inline.h>
>  #include <linux/firmware-map.h>
> +#include <linux/stop_machine.h>
>  
>  #include <asm/tlbflush.h>
>  
> @@ -1652,7 +1653,58 @@ static int is_memblock_offlined_cb(struc
>  	return ret;
>  }
>  
> -int __ref remove_memory(u64 start, u64 size)
> +static int check_cpu_on_node(void *data)
> +{
> +	struct pglist_data *pgdat = data;
> +	int cpu;
> +
> +	for_each_present_cpu(cpu) {
> +		if (cpu_to_node(cpu) == pgdat->node_id)
> +			/*
> +			 * the cpu on this node isn't removed, and we can't
> +			 * offline this node.
> +			 */
> +			return -EBUSY;
> +	}
> +
> +	return 0;
> +}
> +
> +/* offline the node if all memory sections of this node are removed */
> +static void try_offline_node(int nid)
> +{
> +	unsigned long start_pfn = NODE_DATA(nid)->node_start_pfn;
> +	unsigned long end_pfn = start_pfn + NODE_DATA(nid)->node_spanned_pages;
> +	unsigned long pfn;
> +
> +	for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) {
> +		unsigned long section_nr = pfn_to_section_nr(pfn);
> +
> +		if (!present_section_nr(section_nr))
> +			continue;
> +
> +		if (pfn_to_nid(pfn) != nid)
> +			continue;
> +
> +		/*
> +		 * some memory sections of this node are not removed, and we
> +		 * can't offline node now.
> +		 */
> +		return;
> +	}
> +
> +	if (stop_machine(check_cpu_on_node, NODE_DATA(nid), NULL))
> +		return;
> +
> +	/*
> +	 * all memory/cpu of this node are removed, we can offline this
> +	 * node now.
> +	 */
> +	node_set_offline(nid);
> +	unregister_one_node(nid);
> +}
> +
> +int __ref remove_memory(int nid, u64 start, u64 size)
>  {
>  	unsigned long start_pfn, end_pfn;
>  	int ret = 0;
> @@ -1699,6 +1751,8 @@ repeat:
>  
>  	arch_remove_memory(start, size);
>  
> +	try_offline_node(nid);
> +
>  	unlock_memory_hotplug();
>  
>  	return 0;
> @@ -1708,7 +1762,7 @@ int offline_pages(unsigned long start_pf
>  {
>  	return -EINVAL;
>  }
> -int remove_memory(u64 start, u64 size)
> +int remove_memory(int nid, u64 start, u64 size)
>  {
>  	return -EINVAL;
>  }
> 
> 

^ permalink raw reply

* Re: [PATCH 207/493] i2c: remove use of __devinit
From: Jean Delvare @ 2012-11-20  8:20 UTC (permalink / raw)
  To: Bill Pemberton
  Cc: Rudolf Marek, Tony Lindgren, gregkh, Wolfram Sang,
	Mark M. Hoffman, linux-omap, linux-i2c, Ben Dooks, Barry Song,
	Olof Johansson, Guan Xuetao, linuxppc-dev, linux-arm-kernel
In-Reply-To: <1353349642-3677-207-git-send-email-wfp5p@virginia.edu>

Hi Bill,

On Mon, 19 Nov 2012 13:22:36 -0500, Bill Pemberton wrote:
> CONFIG_HOTPLUG is going away as an option so __devinit is no longer
> needed.

Can you please point me/us to the discussion explaining the rationale
behind this move, and the explanation of what will be done exactly?
While I can easily understand that we want to drop CONFIG_HOTPLUG and
always enable hot-plug support, I don't see where we are going with
removing __devinit annotations and the like.

Thanks,
-- 
Jean Delvare

^ permalink raw reply

* Re: Please pull 'merge' branch of 5xxx tree
From: Anatolij Gustschin @ 2012-11-20  8:27 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <20121025224113.5a67a77d@wker>

Hi Ben,

On Thu, 25 Oct 2012 22:41:13 +0200
Anatolij Gustschin <agust@denx.de> wrote:

> Hi Ben,
> 
> please pull three mpc5200 fixes for 3.7:

Ping.

^ permalink raw reply

* Re: [PATCH] PCI: MSI: Restore read_msi_msg_desc(); add get_cached_msi_msg_desc()
From: Benjamin Herrenschmidt @ 2012-11-20  7:20 UTC (permalink / raw)
  To: Ben Hutchings
  Cc: Stephen Rothwell, linux-pci, LKML, Jesse Barnes, Bjorn Helgaas,
	ppc-dev
In-Reply-To: <1279893388.2089.9.camel@achroite.uk.solarflarecom.com>

On Fri, 2010-07-23 at 14:56 +0100, Ben Hutchings wrote:
> commit 2ca1af9aa3285c6a5f103ed31ad09f7399fc65d7 "PCI: MSI: Remove
> unsafe and unnecessary hardware access" changed read_msi_msg_desc() to
> return the last MSI message written instead of reading it from the
> device, since it may be called while the device is in a reduced
> power state.

Looks reasonable... Jesse ?

Cheers,
Ben.

> However, the pSeries platform code really does need to read messages
> from the device, since they are initially written by firmware.
> Therefore:
> - Restore the previous behaviour of read_msi_msg_desc()
> - Add new functions get_cached_msi_msg{,_desc}() which return the
>   last MSI message written
> - Use the new functions where appropriate
> 
> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
> ---
> Compile-tested only.
> 
> Ben.
> 
>  arch/ia64/kernel/msi_ia64.c    |    2 +-
>  arch/ia64/sn/kernel/msi_sn.c   |    2 +-
>  arch/x86/kernel/apic/io_apic.c |    2 +-
>  drivers/pci/msi.c              |   47 +++++++++++++++++++++++++++++++++++----
>  include/linux/msi.h            |    2 +
>  5 files changed, 47 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/ia64/kernel/msi_ia64.c b/arch/ia64/kernel/msi_ia64.c
> index 6c89228..4a746ea 100644
> --- a/arch/ia64/kernel/msi_ia64.c
> +++ b/arch/ia64/kernel/msi_ia64.c
> @@ -25,7 +25,7 @@ static int ia64_set_msi_irq_affinity(unsigned int irq,
>  	if (irq_prepare_move(irq, cpu))
>  		return -1;
>  
> -	read_msi_msg(irq, &msg);
> +	get_cached_msi_msg(irq, &msg);
>  
>  	addr = msg.address_lo;
>  	addr &= MSI_ADDR_DEST_ID_MASK;
> diff --git a/arch/ia64/sn/kernel/msi_sn.c b/arch/ia64/sn/kernel/msi_sn.c
> index ebfdd6a..0c72dd4 100644
> --- a/arch/ia64/sn/kernel/msi_sn.c
> +++ b/arch/ia64/sn/kernel/msi_sn.c
> @@ -175,7 +175,7 @@ static int sn_set_msi_irq_affinity(unsigned int irq,
>  	 * Release XIO resources for the old MSI PCI address
>  	 */
>  
> -	read_msi_msg(irq, &msg);
> +	get_cached_msi_msg(irq, &msg);
>          sn_pdev = (struct pcidev_info *)sn_irq_info->irq_pciioinfo;
>  	pdev = sn_pdev->pdi_linux_pcidev;
>  	provider = SN_PCIDEV_BUSPROVIDER(pdev);
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index e41ed24..4dc0084 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -3397,7 +3397,7 @@ static int set_msi_irq_affinity(unsigned int irq, const struct cpumask *mask)
>  
>  	cfg = desc->chip_data;
>  
> -	read_msi_msg_desc(desc, &msg);
> +	get_cached_msi_msg_desc(desc, &msg);
>  
>  	msg.data &= ~MSI_DATA_VECTOR_MASK;
>  	msg.data |= MSI_DATA_VECTOR(cfg->vector);
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 4c14f31..69b7be3 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -197,9 +197,46 @@ void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg)
>  {
>  	struct msi_desc *entry = get_irq_desc_msi(desc);
>  
> -	/* We do not touch the hardware (which may not even be
> -	 * accessible at the moment) but return the last message
> -	 * written.  Assert that this is valid, assuming that
> +	BUG_ON(entry->dev->current_state != PCI_D0);
> +
> +	if (entry->msi_attrib.is_msix) {
> +		void __iomem *base = entry->mask_base +
> +			entry->msi_attrib.entry_nr * PCI_MSIX_ENTRY_SIZE;
> +
> +		msg->address_lo = readl(base + PCI_MSIX_ENTRY_LOWER_ADDR);
> +		msg->address_hi = readl(base + PCI_MSIX_ENTRY_UPPER_ADDR);
> +		msg->data = readl(base + PCI_MSIX_ENTRY_DATA);
> +	} else {
> +		struct pci_dev *dev = entry->dev;
> +		int pos = entry->msi_attrib.pos;
> +		u16 data;
> +
> +		pci_read_config_dword(dev, msi_lower_address_reg(pos),
> +					&msg->address_lo);
> +		if (entry->msi_attrib.is_64) {
> +			pci_read_config_dword(dev, msi_upper_address_reg(pos),
> +						&msg->address_hi);
> +			pci_read_config_word(dev, msi_data_reg(pos, 1), &data);
> +		} else {
> +			msg->address_hi = 0;
> +			pci_read_config_word(dev, msi_data_reg(pos, 0), &data);
> +		}
> +		msg->data = data;
> +	}
> +}
> +
> +void read_msi_msg(unsigned int irq, struct msi_msg *msg)
> +{
> +	struct irq_desc *desc = irq_to_desc(irq);
> +
> +	read_msi_msg_desc(desc, msg);
> +}
> +
> +void get_cached_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg)
> +{
> +	struct msi_desc *entry = get_irq_desc_msi(desc);
> +
> +	/* Assert that the cache is valid, assuming that
>  	 * valid messages are not all-zeroes. */
>  	BUG_ON(!(entry->msg.address_hi | entry->msg.address_lo |
>  		 entry->msg.data));
> @@ -207,11 +244,11 @@ void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg)
>  	*msg = entry->msg;
>  }
>  
> -void read_msi_msg(unsigned int irq, struct msi_msg *msg)
> +void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg)
>  {
>  	struct irq_desc *desc = irq_to_desc(irq);
>  
> -	read_msi_msg_desc(desc, msg);
> +	get_cached_msi_msg_desc(desc, msg);
>  }
>  
>  void write_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg)
> diff --git a/include/linux/msi.h b/include/linux/msi.h
> index 6991ab5..91b05c1 100644
> --- a/include/linux/msi.h
> +++ b/include/linux/msi.h
> @@ -14,8 +14,10 @@ struct irq_desc;
>  extern void mask_msi_irq(unsigned int irq);
>  extern void unmask_msi_irq(unsigned int irq);
>  extern void read_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);
> +extern void get_cached_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);
>  extern void write_msi_msg_desc(struct irq_desc *desc, struct msi_msg *msg);
>  extern void read_msi_msg(unsigned int irq, struct msi_msg *msg);
> +extern void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg);
>  extern void write_msi_msg(unsigned int irq, struct msi_msg *msg);
>  
>  struct msi_desc {
> -- 
> 1.6.2.5
> 

^ permalink raw reply

* Re: [PATCH 065/493] i2c: remove use of __devexit_p
From: Shubhrajyoti Datta @ 2012-11-20  6:59 UTC (permalink / raw)
  To: Bill Pemberton
  Cc: Rudolf Marek, Tony Lindgren, gregkh, Wolfram Sang, Olof Johansson,
	linux-omap, Mark M. Hoffman, linux-i2c, Ben Dooks, Barry Song,
	Jean Delvare, Guan Xuetao, linuxppc-dev, linux-arm-kernel
In-Reply-To: <1353349642-3677-65-git-send-email-wfp5p@virginia.edu>

On Mon, Nov 19, 2012 at 11:50 PM, Bill Pemberton <wfp5p@virginia.edu> wrote:
> CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
> needed.
>
 Reviewed-by: Shubhrajyoti D <shubhrajyoti@ti.com>

^ permalink raw reply

* Re: [PATCH v3 06/12] memory-hotplug: unregister memory section on SPARSEMEM_VMEMMAP
From: Jaegeuk Hanse @ 2012-11-20  6:58 UTC (permalink / raw)
  To: Wen Congyang
  Cc: linux-s390, linux-ia64, Len Brown, linux-acpi, linux-sh, x86,
	linux-kernel, cmetcalf, Jianguo Wu, linux-mm, Yasuaki Ishimatsu,
	paulus, Minchan Kim, KOSAKI Motohiro, David Rientjes, sparclinux,
	Christoph Lameter, linuxppc-dev, Andrew Morton, Jiang Liu
In-Reply-To: <50AB2967.5010302@cn.fujitsu.com>

On 11/20/2012 02:55 PM, Wen Congyang wrote:
> At 11/20/2012 02:22 PM, Jaegeuk Hanse Wrote:
>> On 11/01/2012 05:44 PM, Wen Congyang wrote:
>>> From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>>
>>> Currently __remove_section for SPARSEMEM_VMEMMAP does nothing. But
>>> even if
>>> we use SPARSEMEM_VMEMMAP, we can unregister the memory_section.
>>>
>>> So the patch add unregister_memory_section() into __remove_section().
>> Hi Yasuaki,
>>
>> In order to review this patch, I should dig sparse memory codes in
>> advance. But I have some confuse of codes. Why need encode/decode mem
>> map instead of set mem_map to ms->section_mem_map directly?
> The memmap is aligned, and the low bits are zero. We store some information
> in these bits. So we need to encode/decode memmap here.

Hi Congyang,

Thanks for you reponse. But I mean why return (unsigned long)(mem_map - 
(section_nr_to_pfn(pnum))); in function sparse_encode_mem_map, and then 
return ((struct page *)coded_mem_map) + section_nr_to_pfn(pnum); in 
funtion sparse_decode_mem_map instead of just store mem_map in 
ms->section_mep_map directly.

Regards,
Jaegeuk

>
> Thanks
> Wen Congyang
>
>> Regards,
>> Jaegeuk
>>
>>> CC: David Rientjes <rientjes@google.com>
>>> CC: Jiang Liu <liuj97@gmail.com>
>>> CC: Len Brown <len.brown@intel.com>
>>> CC: Christoph Lameter <cl@linux.com>
>>> Cc: Minchan Kim <minchan.kim@gmail.com>
>>> CC: Andrew Morton <akpm@linux-foundation.org>
>>> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
>>> CC: Wen Congyang <wency@cn.fujitsu.com>
>>> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>> ---
>>>    mm/memory_hotplug.c | 13 ++++++++-----
>>>    1 file changed, 8 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
>>> index ca07433..66a79a7 100644
>>> --- a/mm/memory_hotplug.c
>>> +++ b/mm/memory_hotplug.c
>>> @@ -286,11 +286,14 @@ static int __meminit __add_section(int nid,
>>> struct zone *zone,
>>>    #ifdef CONFIG_SPARSEMEM_VMEMMAP
>>>    static int __remove_section(struct zone *zone, struct mem_section *ms)
>>>    {
>>> -    /*
>>> -     * XXX: Freeing memmap with vmemmap is not implement yet.
>>> -     *      This should be removed later.
>>> -     */
>>> -    return -EBUSY;
>>> +    int ret = -EINVAL;
>>> +
>>> +    if (!valid_section(ms))
>>> +        return ret;
>>> +
>>> +    ret = unregister_memory_section(ms);
>>> +
>>> +    return ret;
>>>    }
>>>    #else
>>>    static int __remove_section(struct zone *zone, struct mem_section *ms)
>>

^ permalink raw reply

* Re: [PATCH v3 06/12] memory-hotplug: unregister memory section on SPARSEMEM_VMEMMAP
From: Wen Congyang @ 2012-11-20  6:55 UTC (permalink / raw)
  To: Jaegeuk Hanse
  Cc: linux-s390, linux-ia64, Len Brown, linux-acpi, linux-sh, x86,
	linux-kernel, cmetcalf, Jianguo Wu, linux-mm, Yasuaki Ishimatsu,
	paulus, Minchan Kim, KOSAKI Motohiro, David Rientjes, sparclinux,
	Christoph Lameter, linuxppc-dev, Andrew Morton, Jiang Liu
In-Reply-To: <50AB21A4.8050709@gmail.com>

At 11/20/2012 02:22 PM, Jaegeuk Hanse Wrote:
> On 11/01/2012 05:44 PM, Wen Congyang wrote:
>> From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>>
>> Currently __remove_section for SPARSEMEM_VMEMMAP does nothing. But
>> even if
>> we use SPARSEMEM_VMEMMAP, we can unregister the memory_section.
>>
>> So the patch add unregister_memory_section() into __remove_section().
> 
> Hi Yasuaki,
> 
> In order to review this patch, I should dig sparse memory codes in
> advance. But I have some confuse of codes. Why need encode/decode mem
> map instead of set mem_map to ms->section_mem_map directly?

The memmap is aligned, and the low bits are zero. We store some information
in these bits. So we need to encode/decode memmap here.

Thanks
Wen Congyang

> 
> Regards,
> Jaegeuk
> 
>>
>> CC: David Rientjes <rientjes@google.com>
>> CC: Jiang Liu <liuj97@gmail.com>
>> CC: Len Brown <len.brown@intel.com>
>> CC: Christoph Lameter <cl@linux.com>
>> Cc: Minchan Kim <minchan.kim@gmail.com>
>> CC: Andrew Morton <akpm@linux-foundation.org>
>> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
>> CC: Wen Congyang <wency@cn.fujitsu.com>
>> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>> ---
>>   mm/memory_hotplug.c | 13 ++++++++-----
>>   1 file changed, 8 insertions(+), 5 deletions(-)
>>
>> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
>> index ca07433..66a79a7 100644
>> --- a/mm/memory_hotplug.c
>> +++ b/mm/memory_hotplug.c
>> @@ -286,11 +286,14 @@ static int __meminit __add_section(int nid,
>> struct zone *zone,
>>   #ifdef CONFIG_SPARSEMEM_VMEMMAP
>>   static int __remove_section(struct zone *zone, struct mem_section *ms)
>>   {
>> -    /*
>> -     * XXX: Freeing memmap with vmemmap is not implement yet.
>> -     *      This should be removed later.
>> -     */
>> -    return -EBUSY;
>> +    int ret = -EINVAL;
>> +
>> +    if (!valid_section(ms))
>> +        return ret;
>> +
>> +    ret = unregister_memory_section(ms);
>> +
>> +    return ret;
>>   }
>>   #else
>>   static int __remove_section(struct zone *zone, struct mem_section *ms)
> 
> 

^ permalink raw reply

* Re: Forward: [PATCH 146/493] ASoC: remove use of __devexit_p
From: Mark Brown @ 2012-11-20  6:30 UTC (permalink / raw)
  To: Takashi Iwai, Bill Pemberton
  Cc: alsa-devel, Philipp Zabel, Takashi Iwai, Jaroslav Kysela,
	Peter Ujfalusi, M R Swami Reddy, device-drivers-devel, Kukjin Kim,
	Russell King, patches, Vishwas A Deshpande, Paul Parsons,
	Haojian Zhuang, linux-samsung-soc, Ben Dooks, linux-omap,
	linux-arm-kernel, Eric Miao, gregkh, uclinux-dist-devel,
	linuxppc-dev, Jarkko Nikula
In-Reply-To: <s5hehjordzj.wl%tiwai@suse.de>

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

On Tue, Nov 20, 2012 at 07:21:36AM +0100, Takashi Iwai wrote:
> Yet another one for ASoC.

> Date: Mon, 19 Nov 2012 13:21:35 -0500
> From: Bill Pemberton <wfp5p@virginia.edu>
> To: gregkh@linuxfoundation.org
> Cc: Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.de>, M R
>  Swami Reddy <mr.swami.reddy@ti.com>, Vishwas A Deshpande
>  <vishwas.a.deshpande@ti.com>, Peter Ujfalusi <peter.ujfalusi@ti.com>,
>  Jarkko Nikula <jarkko.nikula@bitmer.com>, Eric Miao
>  <eric.y.miao@gmail.com>, Russell King <linux@arm.linux.org.uk>, Haojian
>  Zhuang <haojian.zhuang@gmail.com>, Philipp Zabel
>  <philipp.zabel@gmail.com>, Paul Parsons <lost.distance@yahoo.com>, Ben
>  Dooks <ben-linux@fluff.org>, Kukjin Kim <kgene.kim@samsung.com>,
>  alsa-devel@alsa-project.org, uclinux-dist-devel@blackfin.uclinux.org,
>  device-drivers-devel@blackfin.uclinux.org,
>  patches@opensource.wolfsonmicro.com, linuxppc-dev@lists.ozlabs.org,
>  linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
>  linux-samsung-soc@vger.kernel.org

This time you've got an extravagantly large CC list but not managed to
CC the maintainers at all...  ho hum.  Anyway, this doesn't apply
against current code due to the Atmel changes.  Please rebase against
for-next (or ideally the topic branches) and resend.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: [PATCH v3 06/12] memory-hotplug: unregister memory section on SPARSEMEM_VMEMMAP
From: Jaegeuk Hanse @ 2012-11-20  6:22 UTC (permalink / raw)
  To: Yasuaki Ishimatsu, Wen Congyang
  Cc: linux-s390, linux-ia64, Len Brown, linux-acpi, linux-sh, x86,
	linux-kernel, cmetcalf, Jianguo Wu, linux-mm, Yasuaki Ishimatsu,
	paulus, Minchan Kim, KOSAKI Motohiro, David Rientjes, sparclinux,
	Christoph Lameter, linuxppc-dev, Andrew Morton, Jiang Liu
In-Reply-To: <1351763083-7905-7-git-send-email-wency@cn.fujitsu.com>

On 11/01/2012 05:44 PM, Wen Congyang wrote:
> From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>
> Currently __remove_section for SPARSEMEM_VMEMMAP does nothing. But even if
> we use SPARSEMEM_VMEMMAP, we can unregister the memory_section.
>
> So the patch add unregister_memory_section() into __remove_section().

Hi Yasuaki,

In order to review this patch, I should dig sparse memory codes in 
advance. But I have some confuse of codes. Why need encode/decode mem 
map instead of set mem_map to ms->section_mem_map directly?

Regards,
Jaegeuk

>
> CC: David Rientjes <rientjes@google.com>
> CC: Jiang Liu <liuj97@gmail.com>
> CC: Len Brown <len.brown@intel.com>
> CC: Christoph Lameter <cl@linux.com>
> Cc: Minchan Kim <minchan.kim@gmail.com>
> CC: Andrew Morton <akpm@linux-foundation.org>
> CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> CC: Wen Congyang <wency@cn.fujitsu.com>
> Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
> ---
>   mm/memory_hotplug.c | 13 ++++++++-----
>   1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
> index ca07433..66a79a7 100644
> --- a/mm/memory_hotplug.c
> +++ b/mm/memory_hotplug.c
> @@ -286,11 +286,14 @@ static int __meminit __add_section(int nid, struct zone *zone,
>   #ifdef CONFIG_SPARSEMEM_VMEMMAP
>   static int __remove_section(struct zone *zone, struct mem_section *ms)
>   {
> -	/*
> -	 * XXX: Freeing memmap with vmemmap is not implement yet.
> -	 *      This should be removed later.
> -	 */
> -	return -EBUSY;
> +	int ret = -EINVAL;
> +
> +	if (!valid_section(ms))
> +		return ret;
> +
> +	ret = unregister_memory_section(ms);
> +
> +	return ret;
>   }
>   #else
>   static int __remove_section(struct zone *zone, struct mem_section *ms)

^ 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