* Re: [PATCH 4/8] powerpc: add hv_gpci interface header
From: Cody P Schafer @ 2014-02-03 21:40 UTC (permalink / raw)
To: Michael Ellerman, Linux PPC
Cc: Ingo Molnar, Paul Mackerras, Peter Zijlstra,
Arnaldo Carvalho de Melo, LKML
In-Reply-To: <20140201055807.267F12C00BA@ozlabs.org>
On 01/31/2014 09:58 PM, Michael Ellerman wrote:
> On Thu, 2014-16-01 at 23:53:50 UTC, Cody P Schafer wrote:
>> "H_GetPerformanceCounterInfo" (refered to as hv_gpci or just gpci from
>> here on) is an interface to retrieve specific performance counters and
>> other data from the hypervisor. All outputs have a fixed format (and
>> are represented as structs in this patch).
>
> So how much of this are we actually using? A lot of these seem to be only used
> in the union at the bottom of this file, and not touched elsewhere - or am I
> missing something subtle?
>
> Some of it doesn't seem to be used at all?
We're using very little of the actual interface. In 24x7 we use
cv_system_performance_capabilities, but other than that all the cv_*
structures go unused.
>
>> diff --git a/arch/powerpc/include/asm/hv_gpci.h b/arch/powerpc/include/asm/hv_gpci.h
>
> Any reason this can't just live in arch/powerpc/perf ?
>
>> +++ b/arch/powerpc/include/asm/hv_gpci.h
>> @@ -0,0 +1,490 @@
>> +#ifndef LINUX_POWERPC_UAPI_HV_GPCI_H_
>> +#define LINUX_POWERPC_UAPI_HV_GPCI_H_
>> +
>> +#include <linux/types.h>
>> +
>> +/* From the document "H_GetPerformanceCounterInfo Interface" v1.06, paritialy
>> + * updated with v1.07 */
>
> Is that public?
Nope.
>> +
>> +/* H_GET_PERF_COUNTER_INFO argument */
>> +struct hv_get_perf_counter_info_params {
>> + __be32 counter_request; /* I */
>> + __be32 starting_index; /* IO */
>> + __be16 secondary_index; /* IO */
>> + __be16 returned_values; /* O */
>> + __be32 detail_rc; /* O, "only for 32bit clients" */
>> +
>> + /*
>> + * O, size each of counter_value element in bytes, only set for version
>> + * >= 0x3
>> + */
>> + __be16 cv_element_size;
>> +
>> + /* I, funny if version < 0x3 */
>
> Funny how? Or better still, do we only support operating on some minimum
> sane version of the API?
Right now the perf stuff is setup to let the user specify the version
they want to operate in, and we avoid trying to provide cross-version
compatibility.
Funny = must be set to 0x0. I'll update the comment.
>
>> + __u8 counter_info_version_in;
>> +
>> + /* O, funny if version < 0x3 */
>> + __u8 counter_info_version_out;
>> + __u8 reserved[0xC];
>> + __u8 counter_value[];
>> +} __packed;
>> +
>> +/* 8 => power8 (1.07)
>> + * 6 => TLBIE (1.07)
>> + * 5 => (1.05)
>> + * 4 => ?
>> + * 3 => ?
>> + * 2 => v7r7m0.phyp (?)
>> + * 1 => v7r6m0.phyp (?)
>> + * 0 => v7r{2,3,4}m0.phyp (?)
>> + */
>
> I think this is a mapping of version numbers to firmware releases, it should
> say so.
It is, I'll note it.
>
>> +#define COUNTER_INFO_VERSION_CURRENT 0x8
>> +
>> +/* these determine the counter_value[] layout and the meaning of starting_index
>> + * and secondary_index */
>
> Needs: leading capital, full stop, block comment.
ack
>
>> +enum counter_info_requests {
>> +
>> + /* GENERAL */
>> +
>> + /* @starting_index: "starting" physical processor index or -1 for
>
> Why '"starting"' ?
The requests are designed to return a sequence of data blocks. For
example, in this case where the index refers to a physical processor id,
one can request phys processor 0,1,2,3 in a single hcall (as long as the
buffer is sized appropriately. We don't take advantage of this.
>
>> + * current phyical processor. Data is only collected
>> + * for the processors' "primary" thread.
>> + * @secondary_index: unused
>
> This seems to be true in all cases at least for this enum, can we drop it?
>
CIR_affinity_domain_information_by_virutal_processor uses
secondary_index. That said, I'll note that if not mentioned,
secondary_index is unused and use that to cut out some of the duplication.
>> + */
>> + CIR_dispatch_timebase_by_processor = 0x10,
>
> Any reason for the weird capitialisation? You've obviously learnt the
> noCamelCase rule, but this is still a bit odd :)
>
Mainly because these end up rather long and I was getting tired of
fiddling with caps lock (and this weird capitalization lets macros do
fun things without having to specify a long name twice, not that I'm
doing that right now). Also, the spec gives them as
"Dispatch_timebase_by_processor" (not that this really matters).
I'll properly capitalize them all if that's preferred (I expect it is).
>> +
>> + /* @starting_index: starting partition id or -1 for the current logical
>> + * partition (virtual machine).
>> + * @secondary_index: unused
>> + */
>> + CIR_entitled_capped_uncapped_donated_idle_timebase_by_partition = 0x20,
>> +
>> + /* @starting_index: starting partition id or -1 for the current logical
>> + * partition (virtual machine).
>> + * @secondary_index: unused
>> + */
>> + CIR_run_instructions_run_cycles_by_partition = 0x30,
>> +
>> + /* @starting_index: must be -1 (to refer to the current partition)
>> + * @secondary_index: unused
>> + */
>> + CIR_system_performance_capabilities = 0x40,
>> +
>> +
>> + /* Data from this should only be considered valid if
>> + * counter_info_version >= 0x3
>> + * @starting_index: starting hardware chip id or -1 for the current hw
>> + * chip id
>> + * @secondary_index: unused
>> + */
>> + CIR_processor_bus_utilization_abc_links = 0x50,
>> +
>> + /* Data from this should only be considered valid if
>> + * counter_info_version >= 0x3
>> + * @starting_index: starting hardware chip id or -1 for the current hw
>> + * chip id
>> + * @secondary_index: unused
>> + */
>> + CIR_processor_bus_utilization_wxyz_links = 0x60,
>> +
>> +
>> + /* EXPANDED */
>
> ??
>
> These are only available if you have the DLC ?
There is a bit set by the hv that lets us get at them.
"system_performance_capabilities" lets us get that bit. Unfortunately,
we can't just ignore it (the hcall gives us an access error if they
aren't enabled). And I'm not sure what the mechanism will be for
enabling them on end user boxes. So yes, probably DLC.
>> + /* Avaliable if counter_info_version >= 0x3
>> + * @starting_index: starting hardware chip id or -1 for the current hw
>> + * chip id
>> + * @secondary_index: unused
>> + */
>> + CIR_processor_bus_utilization_gx_links = 0x70,
>> +
>> + /* Avaliable if counter_info_version >= 0x3
>> + * @starting_index: starting hardware chip id or -1 for the current hw
>> + * chip id
>> + * @secondary_index: unused
>> + */
>> + CIR_processor_bus_utilization_mc_links = 0x80,
>> +
>> + /* Avaliable if counter_info_version >= 0x3
>> + * @starting_index: starting physical processor or -1 for the current
>> + * physical processor
>> + * @secondary_index: unused
>> + */
>> + CIR_processor_config = 0x90,
>> +
>> + /* Avaliable if counter_info_version >= 0x3
>> + * @starting_index: starting physical processor or -1 for the current
>> + * physical processor
>> + * @secondary_index: unused
>> + */
>> + CIR_current_processor_frequency = 0x91,
>> +
>> + CIR_processor_core_utilization = 0x94,
>> +
>> + CIR_processor_core_power_mode = 0x95,
>> +
>> + CIR_affinity_domain_information_by_virutal_processor = 0xA0,
>> +
>> + CIR_affinity_domain_info_by_domain = 0xB0,
>> +
>> + CIR_affinity_domain_info_by_partition = 0xB1,
>> +
>> + /* @starting_index: unused
>> + * @secondary_index: unused
>> + */
>> + CIR_physical_memory_info = 0xC0,
>> +
>> + CIR_processor_bus_topology = 0xD0,
>> +
>> + CIR_partition_hypervisor_queuing_times = 0xE0,
>> +
>> + CIR_system_hypervisor_times = 0xF0,
>> +
>> + /* LAB */
>> +
>> + CIR_set_mmcrh = 0x80001000,
>> + CIR_get_hpmcx = 0x80002000,
>> +};
>
>
> cheers
>
^ permalink raw reply
* Re: [PATCH] slub: Don't throw away partial remote slabs if there is no local memory
From: Nishanth Aravamudan @ 2014-02-03 23:00 UTC (permalink / raw)
To: Joonsoo Kim
Cc: Han Pingtian, mpm, penberg, linux-mm, paulus, Anton Blanchard,
David Rientjes, Christoph Lameter, linuxppc-dev, Wanpeng Li
In-Reply-To: <20140128182947.GA1591@linux.vnet.ibm.com>
On 28.01.2014 [10:29:47 -0800], Nishanth Aravamudan wrote:
> On 27.01.2014 [14:58:05 +0900], Joonsoo Kim wrote:
> > On Fri, Jan 24, 2014 at 05:10:42PM -0800, Nishanth Aravamudan wrote:
> > > On 24.01.2014 [16:25:58 -0800], David Rientjes wrote:
> > > > On Fri, 24 Jan 2014, Nishanth Aravamudan wrote:
> > > >
> > > > > Thank you for clarifying and providing a test patch. I ran with this on
> > > > > the system showing the original problem, configured to have 15GB of
> > > > > memory.
> > > > >
> > > > > With your patch after boot:
> > > > >
> > > > > MemTotal: 15604736 kB
> > > > > MemFree: 8768192 kB
> > > > > Slab: 3882560 kB
> > > > > SReclaimable: 105408 kB
> > > > > SUnreclaim: 3777152 kB
> > > > >
> > > > > With Anton's patch after boot:
> > > > >
> > > > > MemTotal: 15604736 kB
> > > > > MemFree: 11195008 kB
> > > > > Slab: 1427968 kB
> > > > > SReclaimable: 109184 kB
> > > > > SUnreclaim: 1318784 kB
> > > > >
> > > > >
> > > > > I know that's fairly unscientific, but the numbers are reproducible.
> > > > >
> >
> > Hello,
> >
> > I think that there is one mistake on David's patch although I'm not sure
> > that it is the reason for this result.
> >
> > With David's patch, get_partial() in new_slab_objects() doesn't work
> > properly, because we only change node id in !node_match() case. If we
> > meet just !freelist case, we pass node id directly to
> > new_slab_objects(), so we always try to allocate new slab page
> > regardless existence of partial pages. We should solve it.
> >
> > Could you try this one?
>
> This helps about the same as David's patch -- but I found the reason
> why! ppc64 doesn't set CONFIG_HAVE_MEMORYLESS_NODES :) Expect a patch
> shortly for that and one other case I found.
>
> This patch on its own seems to help on our test system by saving around
> 1.5GB of slab.
>
> Tested-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
> Acked-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
>
> with the caveat below.
So what's the status of this patch? Christoph, do you think this is fine
as it is?
Thanks,
Nish
^ permalink raw reply
* Re: [PATCH 1/2][v8] driver/memory:Move Freescale IFC driver to a common driver
From: Scott Wood @ 2014-02-03 23:22 UTC (permalink / raw)
To: Prabhakar Kushwaha; +Cc: linuxppc-dev, Arnd Bergmann
In-Reply-To: <1391161199-28018-1-git-send-email-prabhakar@freescale.com>
On Fri, 2014-01-31 at 15:09 +0530, Prabhakar Kushwaha wrote:
> Freescale IFC controller has been used for mpc8xxx. It will be used
> for ARM-based SoC as well. This patch moves the driver to driver/memory
> and fix the header file includes.
>
> Also remove module_platform_driver() and instead call
> platform_driver_register() from subsys_initcall() to make sure this module
> has been loaded before MTD partition parsing starts.
>
> Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
> Acked-by: Arnd Bergmann <arnd@arndb.de>
Again, when did Arnd ack this?
> .../{powerpc => memory-controllers}/fsl/ifc.txt | 0
> arch/powerpc/Kconfig | 4 ----
> arch/powerpc/sysdev/Makefile | 1 -
> drivers/memory/Kconfig | 8 ++++++++
> drivers/memory/Makefile | 1 +
> {arch/powerpc/sysdev => drivers/memory}/fsl_ifc.c | 8 ++++++--
> drivers/mtd/nand/fsl_ifc_nand.c | 2 +-
> .../include/asm => include/linux}/fsl_ifc.h | 0
> 8 files changed, 16 insertions(+), 8 deletions(-)
> rename Documentation/devicetree/bindings/{powerpc => memory-controllers}/fsl/ifc.txt (100%)
> rename {arch/powerpc/sysdev => drivers/memory}/fsl_ifc.c (98%)
> rename {arch/powerpc/include/asm => include/linux}/fsl_ifc.h (100%)
Do we need a MAINTAINERS entry for this? I don't see anything covering
drivers/memory currently.
-Scott
^ permalink raw reply
* Re: [PATCH] powerpc/eeh: drop taken reference to driver on eeh_rmv_device
From: Gavin Shan @ 2014-02-04 2:03 UTC (permalink / raw)
To: Thadeu Lima de Souza Cascardo; +Cc: linuxppc-dev, Gavin Shan, paulus
In-Reply-To: <20140131172458.GA2039@oc0268524204.ibm.com>
On Fri, Jan 31, 2014 at 03:24:58PM -0200, Thadeu Lima de Souza Cascardo wrote:
>On Fri, Jan 31, 2014 at 08:46:11AM +0800, Gavin Shan wrote:
>> On Thu, Jan 30, 2014 at 11:00:48AM -0200, Thadeu Lima de Souza Cascardo wrote:
>> >Commit f5c57710dd62dd06f176934a8b4b8accbf00f9f8 ("powerpc/eeh: Use
>> >partial hotplug for EEH unaware drivers") introduces eeh_rmv_device,
>> >which may grab a reference to a driver, but not release it.
>> >
>> >That prevents a driver from being removed after it has gone through EEH
>> >recovery.
>> >
>> >This patch drops the reference in either exit path if it was taken.
>> >
>> >Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
>> >---
>> > arch/powerpc/kernel/eeh_driver.c | 5 ++++-
>> > 1 files changed, 4 insertions(+), 1 deletions(-)
>> >
>> >diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
>> >index 7bb30dc..afe7337 100644
>> >--- a/arch/powerpc/kernel/eeh_driver.c
>> >+++ b/arch/powerpc/kernel/eeh_driver.c
>> >@@ -364,7 +364,7 @@ static void *eeh_rmv_device(void *data, void *userdata)
>> > return NULL;
>> > driver = eeh_pcid_get(dev);
>> > if (driver && driver->err_handler)
>> >- return NULL;
>> >+ goto out;
>> >
>> > /* Remove it from PCI subsystem */
>> > pr_debug("EEH: Removing %s without EEH sensitive driver\n",
>> >@@ -377,6 +377,9 @@ static void *eeh_rmv_device(void *data, void *userdata)
>>
>> For normal case (driver without EEH support), we probably release the reference
>> to the driver before pci_stop_and_remove_bus_device().
>
>You are right, we need to call it before we call
>pci_stop_and_remove_bus_device, otherwise dev->driver will be NULL, and
>eeh_pcid_put will not do module_put. On the other hand, we could change
>the call to eeh_pcid_put to accept struct pci_driver instead.
>
>>
>> > pci_stop_and_remove_bus_device(dev);
>> > pci_unlock_rescan_remove();
>> >
>> >+out:
>> >+ if (driver)
>> >+ eeh_pcid_put(dev);
>> > return NULL;
>>
>> We needn't "if (driver)" here as eeh_pcid_put() already had the check.
>>
>
>What if try_module_get returned false on eeh_pcid_get?
>
>How about something like the patch below?
>
>> > }
>> >
>>
>> Thanks,
>> Gavin
>---
>diff --git a/arch/powerpc/kernel/eeh_driver.c b/arch/powerpc/kernel/eeh_driver.c
>index 7bb30dc..3a397fa 100644
>--- a/arch/powerpc/kernel/eeh_driver.c
>+++ b/arch/powerpc/kernel/eeh_driver.c
>@@ -352,6 +352,7 @@ static void *eeh_rmv_device(void *data, void *userdata)
> struct eeh_dev *edev = (struct eeh_dev *)data;
> struct pci_dev *dev = eeh_dev_to_pci_dev(edev);
> int *removed = (int *)userdata;
>+ bool has_err_handler;
>
> /*
> * Actually, we should remove the PCI bridges as well.
>@@ -362,8 +363,12 @@ static void *eeh_rmv_device(void *data, void *userdata)
> */
> if (!dev || (dev->hdr_type & PCI_HEADER_TYPE_BRIDGE))
> return NULL;
>+
> driver = eeh_pcid_get(dev);
>- if (driver && driver->err_handler)
>+ has_err_handler = driver && driver->err_handler;
>+ if (driver)
>+ eeh_pcid_put(dev);
>+ if (has_err_handler)
> return NULL;
>
> /* Remove it from PCI subsystem */
It looks good to me. Could you please send v2 with:
Acked-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Or we can simply do like this. It depends your preference :-)
if (driver) {
eeh_pcid_put(dev);
if (driver->err_handler)
return NULL;
}
Thanks,
Gavin
^ permalink raw reply
* RE: [PATCH 1/2][v8] driver/memory:Move Freescale IFC driver to a common driver
From: prabhakar @ 2014-02-04 3:31 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev@lists.ozlabs.org, Arnd Bergmann
In-Reply-To: <1391469748.6733.99.camel@snotra.buserror.net>
[-- Attachment #1: Type: text/plain, Size: 2005 bytes --]
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Tuesday, February 04, 2014 4:52 AM
> To: Kushwaha Prabhakar-B32579
> Cc: linuxppc-dev@lists.ozlabs.org; Arnd Bergmann
> Subject: Re: [PATCH 1/2][v8] driver/memory:Move Freescale IFC driver to a common
> driver
>
> On Fri, 2014-01-31 at 15:09 +0530, Prabhakar Kushwaha wrote:
> > Freescale IFC controller has been used for mpc8xxx. It will be used
> > for ARM-based SoC as well. This patch moves the driver to
> > driver/memory and fix the header file includes.
> >
> > Also remove module_platform_driver() and instead call
> > platform_driver_register() from subsys_initcall() to make sure this
> > module has been loaded before MTD partition parsing starts.
> >
> > Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
> > Acked-by: Arnd Bergmann <arnd@arndb.de>
>
> Again, when did Arnd ack this?
>
Hi Scott,
I guess you missed his mail on kernel.org. Please find attached mail.
> > .../{powerpc => memory-controllers}/fsl/ifc.txt | 0
> > arch/powerpc/Kconfig | 4 ----
> > arch/powerpc/sysdev/Makefile | 1 -
> > drivers/memory/Kconfig | 8 ++++++++
> > drivers/memory/Makefile | 1 +
> > {arch/powerpc/sysdev => drivers/memory}/fsl_ifc.c | 8 ++++++--
> > drivers/mtd/nand/fsl_ifc_nand.c | 2 +-
> > .../include/asm => include/linux}/fsl_ifc.h | 0
> > 8 files changed, 16 insertions(+), 8 deletions(-) rename
> > Documentation/devicetree/bindings/{powerpc =>
> > memory-controllers}/fsl/ifc.txt (100%) rename {arch/powerpc/sysdev =>
> > drivers/memory}/fsl_ifc.c (98%) rename {arch/powerpc/include/asm =>
> > include/linux}/fsl_ifc.h (100%)
>
> Do we need a MAINTAINERS entry for this? I don't see anything covering
> drivers/memory currently.
>
I am not sure about this.
Regards,
Prabhakar
[-- Attachment #2: Type: message/rfc822, Size: 4923 bytes --]
From: Arnd Bergmann <arnd@arndb.de>
To: "prabhakar@freescale.com" <prabhakar@freescale.com>
Cc: "gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>, Scott Wood <scottwood@freescale.com>
Subject: Re: [PATCH 1/2][v2] driver/memory:Move Freescale IFC driver to a common driver
Date: Wed, 15 Jan 2014 13:31:35 +0000
Message-ID: <201401151431.35731.arnd@arndb.de>
On Wednesday 15 January 2014, Prabhakar Kushwaha wrote:
> Freescale IFC controller has been used for mpc8xxx. It will be used
> for ARM-based SoC as well. This patch moves the driver to driver/memory
> and fix the header file includes.
>
> Also remove module_platform_driver() and instead call
> platform_driver_register() from subsys_initcall() to make sure this module
> has been loaded before MTD partition parsing starts.
>
> Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
provided that you also move the binding from powerpc/fsl/ifc.txt to
memory/fsl-ifc.txt.
^ permalink raw reply
* Re: [PATCH] slub: Don't throw away partial remote slabs if there is no local memory
From: Christoph Lameter @ 2014-02-04 3:38 UTC (permalink / raw)
To: Nishanth Aravamudan
Cc: Han Pingtian, mpm, penberg, linux-mm, paulus, Anton Blanchard,
David Rientjes, Joonsoo Kim, linuxppc-dev, Wanpeng Li
In-Reply-To: <20140203230026.GA15383@linux.vnet.ibm.com>
On Mon, 3 Feb 2014, Nishanth Aravamudan wrote:
> So what's the status of this patch? Christoph, do you think this is fine
> as it is?
Certainly enabling CONFIG_MEMORYLESS_NODES is the right thing to do and I
already acked the patch.
^ permalink raw reply
* Re: [PATCH] slub: Don't throw away partial remote slabs if there is no local memory
From: Nishanth Aravamudan @ 2014-02-04 7:26 UTC (permalink / raw)
To: Christoph Lameter
Cc: Han Pingtian, mpm, penberg, linux-mm, paulus, Anton Blanchard,
David Rientjes, Joonsoo Kim, linuxppc-dev, Wanpeng Li
In-Reply-To: <alpine.DEB.2.10.1402032138070.17997@nuc>
On 03.02.2014 [21:38:36 -0600], Christoph Lameter wrote:
> On Mon, 3 Feb 2014, Nishanth Aravamudan wrote:
>
> > So what's the status of this patch? Christoph, do you think this is fine
> > as it is?
>
> Certainly enabling CONFIG_MEMORYLESS_NODES is the right thing to do and I
> already acked the patch.
Yes, sorry for my lack of clarity. I meant Joonsoo's latest patch for
the $SUBJECT issue.
Thanks,
Nish
^ permalink raw reply
* Re: [PATCH] PPC: KVM: fix VCPU run for HV KVM
From: Alexey Kardashevskiy @ 2014-02-04 8:03 UTC (permalink / raw)
To: Alexander Graf
Cc: Paul Mackerras, linuxppc-dev, kvm@vger.kernel.org mailing list,
kvm-ppc, linux-kernel@vger.kernel.org list
In-Reply-To: <AF6669B4-EF1A-44BD-9034-8824EFD94B5B@suse.de>
On 01/13/2014 02:44 AM, Alexander Graf wrote:
>
> On 10.01.2014, at 08:21, Alexey Kardashevskiy <aik@ozlabs.ru> wrote:
>
>> When write to MMIO happens and there is an ioeventfd for that and
>> is handled successfully, ioeventfd_write() returns 0 (success) and
>> kvmppc_handle_store() returns EMULATE_DONE. Then kvmppc_emulate_mmio()
>> converts EMULATE_DONE to RESUME_GUEST_NV and this broke from the loop.
>>
>> This adds handling of RESUME_GUEST_NV in kvmppc_vcpu_run_hv().
>>
>> Cc: Michael S. Tsirkin <mst@redhat.com>
>> Suggested-by: Paul Mackerras <paulus@samba.org>
>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>> ---
>>
>> This definitely needs a better commit message. Please, help.
>> ps. it seems like ioeventfd never worked on ppc64. hm.
>>
>> ---
>> arch/powerpc/kvm/book3s_hv.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
>> index 072287f..24f363f 100644
>> --- a/arch/powerpc/kvm/book3s_hv.c
>> +++ b/arch/powerpc/kvm/book3s_hv.c
>> @@ -1569,7 +1569,7 @@ static int kvmppc_vcpu_run_hv(struct kvm_run *run, struct kvm_vcpu *vcpu)
>> vcpu->arch.fault_dar, vcpu->arch.fault_dsisr);
>> srcu_read_unlock(&vcpu->kvm->srcu, srcu_idx);
>> }
>> - } while (r == RESUME_GUEST);
>> + } while ((r == RESUME_GUEST_NV) || (r == RESUME_GUEST));
>
> How about
>
> while(!(r & RESUME_FLAG_HOST));
Rather "while(!(r & RESUME_FLAG_HOST) && (r > 0));" and still not obvious
that this is really better.
Paul agrees with the original patch (and made a better commit message for
our internal tree) but I just cannot make him reply in this thread, keep
constantly asking him but to no avail :)
> That should cover all RESUME_GUEST_XXX cases just fine. Apart from that
> I agree that we should check for ! FLAG_HOST bit rather than the actual
> RESUME_GUEST value in all case where we check for it (read: please
> update all places).
There are 3 places remotely similar to this and none of them requires a fix
like above.
--
Alexey
^ permalink raw reply
* Re: [PATCH] PPC: KVM: fix VCPU run for HV KVM
From: Alexander Graf @ 2014-02-04 8:09 UTC (permalink / raw)
To: Alexey Kardashevskiy
Cc: Paul Mackerras, linuxppc-dev, kvm@vger.kernel.org mailing list,
kvm-ppc, linux-kernel@vger.kernel.org list
In-Reply-To: <52F09EC0.60201@ozlabs.ru>
On 04.02.2014, at 09:03, Alexey Kardashevskiy <aik@ozlabs.ru> wrote:
> On 01/13/2014 02:44 AM, Alexander Graf wrote:
>>=20
>> On 10.01.2014, at 08:21, Alexey Kardashevskiy <aik@ozlabs.ru> wrote:
>>=20
>>> When write to MMIO happens and there is an ioeventfd for that and
>>> is handled successfully, ioeventfd_write() returns 0 (success) and
>>> kvmppc_handle_store() returns EMULATE_DONE. Then =
kvmppc_emulate_mmio()
>>> converts EMULATE_DONE to RESUME_GUEST_NV and this broke from the =
loop.
>>>=20
>>> This adds handling of RESUME_GUEST_NV in kvmppc_vcpu_run_hv().
>>>=20
>>> Cc: Michael S. Tsirkin <mst@redhat.com>
>>> Suggested-by: Paul Mackerras <paulus@samba.org>
>>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>>> ---
>>>=20
>>> This definitely needs a better commit message. Please, help.
>>> ps. it seems like ioeventfd never worked on ppc64. hm.
>>>=20
>>> ---
>>> arch/powerpc/kvm/book3s_hv.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>=20
>>> diff --git a/arch/powerpc/kvm/book3s_hv.c =
b/arch/powerpc/kvm/book3s_hv.c
>>> index 072287f..24f363f 100644
>>> --- a/arch/powerpc/kvm/book3s_hv.c
>>> +++ b/arch/powerpc/kvm/book3s_hv.c
>>> @@ -1569,7 +1569,7 @@ static int kvmppc_vcpu_run_hv(struct kvm_run =
*run, struct kvm_vcpu *vcpu)
>>> vcpu->arch.fault_dar, =
vcpu->arch.fault_dsisr);
>>> srcu_read_unlock(&vcpu->kvm->srcu, srcu_idx);
>>> }
>>> - } while (r =3D=3D RESUME_GUEST);
>>> + } while ((r =3D=3D RESUME_GUEST_NV) || (r =3D=3D RESUME_GUEST));
>>=20
>> How about
>>=20
>> while(!(r & RESUME_FLAG_HOST));
>=20
>=20
> Rather "while(!(r & RESUME_FLAG_HOST) && (r > 0));" and still not =
obvious
> that this is really better.
>=20
> Paul agrees with the original patch (and made a better commit message =
for
> our internal tree) but I just cannot make him reply in this thread, =
keep
> constantly asking him but to no avail :)
>=20
>=20
>> That should cover all RESUME_GUEST_XXX cases just fine. Apart from =
that
>> I agree that we should check for ! FLAG_HOST bit rather than the =
actual
>> RESUME_GUEST value in all case where we check for it (read: please
>> update all places).
>=20
> There are 3 places remotely similar to this and none of them requires =
a fix
> like above.
Not today. Then someone goes in and realizes that CEDE advanced version =
8 should clear r15 at which point you have to set RESUME_GUEST_NV and =
are in the same mess again. Let's just always treat RESUME_GUEST_NV and =
RESUME_GUEST as identical when checking for it.
If you like, add a small helper like
static inline bool is_resume_guest(int r) {
return (r =3D=3D RESUME_GUEST || r =3D=3D RESUME_GUEST_NV);
}
in a header and use that one instead. That way we're guaranteed to be =
consistent.
Alex
^ permalink raw reply
* Re: [PATCH V2 1/2] time: Change the return type of clockevents_notify() to integer
From: Thomas Gleixner @ 2014-02-04 10:01 UTC (permalink / raw)
To: Preeti U Murthy
Cc: daniel.lezcano, peterz, fweisbec, agraf, paul.gortmaker, paulus,
mingo, mikey, shangw, rafael.j.wysocki, paulmck, arnd, linux-pm,
rostedt, michael, john.stultz, anton, chenhui.zhao, deepthi,
r58472, geoff, linux-kernel, srivatsa.bhat, schwidefsky,
linuxppc-dev
In-Reply-To: <20140124065739.17564.97259.stgit@preeti.in.ibm.com>
On Fri, 24 Jan 2014, Preeti U Murthy wrote:
> -extern void tick_broadcast_oneshot_control(unsigned long reason);
> +extern int tick_broadcast_oneshot_control(unsigned long reason);
> -static inline void tick_broadcast_oneshot_control(unsigned long reason) { }
> +static inline int tick_broadcast_oneshot_control(unsigned long reason) { }
> -static inline void tick_broadcast_oneshot_control(unsigned long reason) { }
> +static inline int tick_broadcast_oneshot_control(unsigned long reason) { }
The inline stubs need to return 0.
Thanks,
tglx
^ permalink raw reply
* Re: [PATCH V2 2/2] tick/cpuidle: Initialize hrtimer mode of broadcast
From: Thomas Gleixner @ 2014-02-04 10:18 UTC (permalink / raw)
To: Preeti U Murthy
Cc: daniel.lezcano, peterz, fweisbec, agraf, paul.gortmaker, paulus,
mingo, mikey, shangw, rafael.j.wysocki, paulmck, arnd, linux-pm,
rostedt, michael, john.stultz, anton, chenhui.zhao, deepthi,
r58472, geoff, linux-kernel, srivatsa.bhat, schwidefsky,
linuxppc-dev
In-Reply-To: <20140124065820.17564.83076.stgit@preeti>
> +++ b/kernel/time/tick-broadcast-hrtimer.c
> +/*
> + * This is called from the guts of the broadcast code when the cpu
> + * which is about to enter idle has the earliest broadcast timer event.
> + */
> +static int bc_set_next(ktime_t expires, struct clock_event_device *bc)
> +{
> + ktime_t now, interval;
> + /*
> + * We try to cancel the timer first. If the callback is on
> + * flight on some other cpu then we let it handle it. If we
> + * were able to cancel the timer nothing can rearm it as we
> + * own broadcast_lock.
> + *
> + * However if we are called from the hrtimer interrupt handler
> + * itself, reprogram it.
> + */
> + if (hrtimer_try_to_cancel(&bctimer) >= 0) {
> + hrtimer_start(&bctimer, expires, HRTIMER_MODE_ABS_PINNED);
> + /* Bind the "device" to the cpu */
> + bc->bound_on = smp_processor_id();
> + } else if (bc->bound_on == smp_processor_id()) {
This part really wants a proper comment. It took me a while to figure
out why this is correct and what the call chain is.
> + now = ktime_get();
> + interval = ktime_sub(expires, now);
> + hrtimer_forward_now(&bctimer, interval);
We are in the event handler called from bc_handler() and expires is
absolute time. So what's wrong with calling
hrtimer_set_expires(&bctimer, expires)?
> +static enum hrtimer_restart bc_handler(struct hrtimer *t)
> +{
> + ce_broadcast_hrtimer.event_handler(&ce_broadcast_hrtimer);
> + return HRTIMER_RESTART;
We probably want to check whether the timer needs to be restarted at
all.
if (ce_broadcast_timer.next_event.tv64 == KTIME_MAX)
return HRTIMER_NORESTART;
return HRTIMER_RESTART;
Hmm?
Thanks,
tglx
^ permalink raw reply
* [PATCH V5 0/3] powerpc/powernv: Error logging interfaces
From: Deepthi Dharwar @ 2014-02-04 11:31 UTC (permalink / raw)
To: linuxppc-dev
This patch series defines generic interfaces for error logging to
push down critical errors from powernv platform to FSP.
Also, it contains few minor fixes for the exisiting error logging
framework that retrieves error logs from FSP.
Changes from V4:
* Reverted OPAL token for ELOG_OPAL_SEND to 92
* Use __pa() to obtain the physical address of the error log
buffer.
Changes from V3:
* Change memory allocation to GFP_ATOMIC, to generate
errors in bad context
* Move all error log generation related code to arch/powernv
rename it from opal_* to pnv_* .
Changes from V2:
* Review comments from V2 have been addressed
includes comment formats, changing naming
conventions and incorporated error handling
of the buffers.
* Minor typo fix and use of pr_err/pr_fmt to
log errors.
Deepthi Dharwar (3):
powernv: Push critical error logs to FSP
powernv: Correct spell error in opal-elog.c
powernv: Have uniform logging of errors in opal-elog.c
arch/powerpc/include/asm/opal.h | 36 +++++++++
arch/powerpc/platforms/powernv/opal-elog.c | 92 +++++++++++++++++++++---
arch/powerpc/platforms/powernv/opal-wrappers.S | 1
arch/powerpc/platforms/powernv/powernv.h | 84 ++++++++++++++++++++++
4 files changed, 203 insertions(+), 10 deletions(-)
-- Deepthi
^ permalink raw reply
* [PATCH V5 1/3] powernv: Push critical error logs to FSP
From: Deepthi Dharwar @ 2014-02-04 11:31 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <20140204113127.19141.21493.stgit@deepthi.in.ibm.com>
This patch provides error logging interfaces to report critical
powernv error logs to FSP.
All the required information to dump the error is collected
at POWERNV level through error log interfaces
and then pushed on to FSP.
Signed-off-by: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
---
arch/powerpc/include/asm/opal.h | 36 ++++++++++
arch/powerpc/platforms/powernv/opal-elog.c | 76 +++++++++++++++++++++-
arch/powerpc/platforms/powernv/opal-wrappers.S | 1
arch/powerpc/platforms/powernv/powernv.h | 84 ++++++++++++++++++++++++
4 files changed, 196 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
index 554a031..ede6a2d 100644
--- a/arch/powerpc/include/asm/opal.h
+++ b/arch/powerpc/include/asm/opal.h
@@ -174,6 +174,7 @@ extern int opal_enter_rtas(struct rtas_args *args,
#define OPAL_GET_PARAM 89
#define OPAL_SET_PARAM 90
#define OPAL_DUMP_RESEND 91
+#define OPAL_ELOG_SEND 92
#ifndef __ASSEMBLY__
@@ -268,6 +269,40 @@ enum OpalMessageType {
OPAL_MSG_TYPE_MAX,
};
+/* Max user dump size is 14K */
+#define OPAL_LOG_MAX_DUMP 14336
+
+/* Multiple user data sections */
+struct __attribute__((__packed__)) opal_user_data_section {
+ uint32_t tag;
+ uint16_t size;
+ uint16_t component_id;
+ char data_dump[1];
+};
+
+/*
+ * All the information regarding an error/event to be reported
+ * needs to populate this structure using pre-defined interfaces
+ * only
+ */
+struct __attribute__((__packed__)) opal_errorlog {
+
+ uint16_t component_id;
+ uint8_t error_event_type;
+ uint8_t subsystem_id;
+
+ uint8_t event_severity;
+ uint8_t event_subtype;
+ uint8_t user_section_count;
+ uint8_t elog_origin;
+
+ uint32_t user_section_size;
+ uint32_t reason_code;
+ uint32_t additional_info[4];
+
+ char user_data_dump[OPAL_LOG_MAX_DUMP];
+};
+
/* Machine check related definitions */
enum OpalMCE_Version {
OpalMCE_V1 = 1,
@@ -862,6 +897,7 @@ int64_t opal_get_elog_size(uint64_t *log_id, size_t *size, uint64_t *elog_type);
int64_t opal_write_elog(uint64_t buffer, uint64_t size, uint64_t offset);
int64_t opal_send_ack_elog(uint64_t log_id);
void opal_resend_pending_logs(void);
+int64_t opal_elog_send(void *buffer);
int64_t opal_validate_flash(uint64_t buffer, uint32_t *size, uint32_t *result);
int64_t opal_manage_flash(uint8_t op);
int64_t opal_update_flash(uint64_t blk_list);
diff --git a/arch/powerpc/platforms/powernv/opal-elog.c b/arch/powerpc/platforms/powernv/opal-elog.c
index fc891ae..c9ce835 100644
--- a/arch/powerpc/platforms/powernv/opal-elog.c
+++ b/arch/powerpc/platforms/powernv/opal-elog.c
@@ -8,6 +8,9 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#undef DEBUG
+#define pr_fmt(fmt) "ELOG: " fmt
+
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/of.h>
@@ -16,8 +19,9 @@
#include <linux/fs.h>
#include <linux/vmalloc.h>
#include <linux/fcntl.h>
+#include <linux/mm.h>
#include <asm/uaccess.h>
-#include <asm/opal.h>
+#include "powernv.h"
/* Maximum size of a single log on FSP is 16KB */
#define OPAL_MAX_ERRLOG_SIZE 16384
@@ -272,6 +276,76 @@ static int init_err_log_buffer(void)
return 0;
}
+/* Interface to be used by POWERNV to push the logs to FSP via Sapphire */
+struct opal_errorlog *pnv_elog_create(uint8_t pnv_error_event_type,
+ uint16_t pnv_component_id, uint8_t pnv_subsystem_id,
+ uint8_t pnv_event_severity, uint8_t pnv_event_subtype,
+ uint32_t reason_code, uint32_t info0, uint32_t info1,
+ uint32_t info2, uint32_t info3)
+{
+ struct opal_errorlog *buf;
+
+ buf = kzalloc(sizeof(struct opal_errorlog), GFP_ATOMIC);
+ if (!buf) {
+ pr_err("Failed to allocate buffer for generating error log\n");
+ return NULL;
+ }
+
+ buf->error_event_type = pnv_error_event_type;
+ buf->component_id = pnv_component_id;
+ buf->subsystem_id = pnv_subsystem_id;
+ buf->event_severity = pnv_event_severity;
+ buf->event_subtype = pnv_event_subtype;
+ buf->reason_code = reason_code;
+ buf->additional_info[0] = info0;
+ buf->additional_info[1] = info1;
+ buf->additional_info[2] = info2;
+ buf->additional_info[3] = info3;
+ return buf;
+}
+
+int pnv_elog_update_user_dump(struct opal_errorlog *buf, unsigned char *data,
+ uint32_t tag, uint16_t size)
+{
+ char *buffer;
+ struct opal_user_data_section *tmp;
+
+ if (!buf) {
+ pr_err("Cannot update user data. Error log buffer is invalid");
+ return -1;
+ }
+
+ buffer = (char *)buf->user_data_dump + buf->user_section_size;
+ if ((buf->user_section_size + size) > OPAL_LOG_MAX_DUMP) {
+ pr_err("Size of user data overruns the buffer");
+ return -1;
+ }
+
+ tmp = (struct opal_user_data_section *)buffer;
+ tmp->tag = tag;
+ tmp->size = size + sizeof(struct opal_user_data_section) - 1;
+ memcpy(tmp->data_dump, data, size);
+
+ buf->user_section_size += tmp->size;
+ buf->user_section_count++;
+ return 0;
+}
+
+int pnv_commit_errorlog(struct opal_errorlog *buf)
+{
+ int rc;
+
+ rc = opal_elog_send((void *)(__pa(buf)));
+ if (rc == OPAL_SUCCESS) {
+ /* If the log has been committed, free the buffer */
+ kfree(buf);
+ buf = NULL;
+ } else
+ pr_err("Error log could not be committed to FSP");
+
+ return rc;
+}
+
/* Initialize error logging */
int __init opal_elog_init(void)
{
diff --git a/arch/powerpc/platforms/powernv/opal-wrappers.S b/arch/powerpc/platforms/powernv/opal-wrappers.S
index 81e445f..250f7db 100644
--- a/arch/powerpc/platforms/powernv/opal-wrappers.S
+++ b/arch/powerpc/platforms/powernv/opal-wrappers.S
@@ -137,3 +137,4 @@ OPAL_CALL(opal_sensor_read, OPAL_SENSOR_READ);
OPAL_CALL(opal_get_param, OPAL_GET_PARAM);
OPAL_CALL(opal_set_param, OPAL_SET_PARAM);
OPAL_CALL(opal_dump_resend_notification, OPAL_DUMP_RESEND);
+OPAL_CALL(opal_elog_send, OPAL_ELOG_SEND);
diff --git a/arch/powerpc/platforms/powernv/powernv.h b/arch/powerpc/platforms/powernv/powernv.h
index c9cfb0b..42a8b8c 100644
--- a/arch/powerpc/platforms/powernv/powernv.h
+++ b/arch/powerpc/platforms/powernv/powernv.h
@@ -1,6 +1,8 @@
#ifndef _POWERNV_H
#define _POWERNV_H
+#include <asm/opal.h>
+
#ifdef CONFIG_SMP
extern void pnv_smp_init(void);
#else
@@ -23,4 +25,86 @@ bool cpu_core_split_required(void);
extern void pnv_lpc_init(void);
+/* Classification of error/event type to be reported on POWERNV */
+/* Platform Events/Errors: Report Machine Check Interrupt */
+#define PNV_PLATFORM_ERR_EVT 0x01
+/* INPUT_OUTPUT: Report all I/O related events/errors */
+#define PNV_INPUT_OUTPUT_ERR_EVT 0x02
+/* RESOURCE_DEALLOC: Hotplug events and errors */
+#define PNV_RESOURCE_DEALLOC_ERR_EVT 0x03
+/* MISC: Miscellanous error */
+#define PNV_MISC_ERR_EVT 0x04
+
+/* POWERNV Subsystem IDs listed for reporting events/errors */
+#define PNV_PROCESSOR_SUBSYSTEM 0x10
+#define PNV_MEMORY_SUBSYSTEM 0x20
+#define PNV_IO_SUBSYSTEM 0x30
+#define PNV_IO_DEVICES 0x40
+#define PNV_CEC_HARDWARE 0x50
+#define PNV_POWER_COOLING 0x60
+#define PNV_MISC_SUBSYSTEM 0x70
+#define PNV_SURVEILLANCE_ERR 0x7A
+#define PNV_PLATFORM_FIRMWARE 0x80
+#define PNV_SOFTWARE 0x90
+#define PNV_EXTERNAL_ENV 0xA0
+/*
+ * During reporting an event/error the following represents
+ * how serious the logged event/error is. (Severity)
+ */
+#define PNV_INFO 0x00
+#define PNV_RECOVERED_ERR_GENERAL 0x10
+
+/* 0x2X series is to denote set of Predictive Error */
+/* 0x20 Generic predictive error */
+#define PNV_PREDICTIVE_ERR_GENERAL 0x20
+/* 0x21 Predictive error, degraded performance */
+#define PNV_PREDICTIVE_ERR_DEGRADED_PERF 0x21
+/* 0x22 Predictive error, fault may be corrected after reboot */
+#define PNV_PREDICTIVE_ERR_FAULT_RECTIFY_REBOOT 0x22
+/*
+ * 0x23 Predictive error, fault may be corrected after reboot,
+ * degraded performance
+ */
+#define PNV_PREDICTIVE_ERR_FAULT_RECTIFY_BOOT_DEGRADE_PERF 0x23
+/* 0x24 Predictive error, loss of redundancy */
+#define PNV_PREDICTIVE_ERR_LOSS_OF_REDUNDANCY 0x24
+
+/* 0x4X series for Unrecoverable Error */
+/* 0x40 Generic Unrecoverable error */
+#define PNV_UNRECOVERABLE_ERR_GENERAL 0x40
+/* 0x41 Unrecoverable error bypassed with degraded performance */
+#define PNV_UNRECOVERABLE_ERR_DEGRADE_PERF 0x41
+/* 0x44 Unrecoverable error bypassed with loss of redundancy */
+#define PNV_UNRECOVERABLE_ERR_LOSS_REDUNDANCY 0x44
+/* 0x45 Unrecoverable error bypassed with loss of redundancy and performance */
+#define PNV_UNRECOVERABLE_ERR_LOSS_REDUNDANCY_PERF 0x45
+/* 0x48 Unrecoverable error bypassed with loss of function */
+#define PNV_UNRECOVERABLE_ERR_LOSS_OF_FUNCTION 0x48
+/*
+ * POWERNV Event Sub-type
+ * This field provides additional information on the non-error
+ * event type
+ */
+#define PNV_NA 0x00
+#define PNV_MISCELLANEOUS_INFO_ONLY 0x01
+#define PNV_PREV_REPORTED_ERR_RECTIFIED 0x10
+#define PNV_SYS_RESOURCES_DECONFIG_BY_USER 0x20
+#define PNV_SYS_RESOURCE_DECONFIG_PRIOR_ERR 0x21
+#define PNV_RESOURCE_DEALLOC_EVENT_NOTIFY 0x22
+#define PNV_CONCURRENT_MAINTENANCE_EVENT 0x40
+#define PNV_CAPACITY_UPGRADE_EVENT 0x60
+#define PNV_RESOURCE_SPARING_EVENT 0x70
+#define PNV_DYNAMIC_RECONFIG_EVENT 0x80
+#define PNV_NORMAL_SYS_PLATFORM_SHUTDOWN 0xD0
+#define PNV_ABNORMAL_POWER_OFF 0xE0
+
+struct opal_errorlog *pnv_elog_create(uint8_t pnv_error_event_type,
+ uint16_t pnv_component_id, uint8_t pnv_subsystem_id,
+ uint8_t pnv_event_severity, uint8_t pnv_event_subtype,
+ uint32_t reason_code, uint32_t info0, uint32_t info1,
+ uint32_t info2, uint32_t info3);
+int pnv_elog_update_user_dump(struct opal_errorlog *buf, unsigned char *data,
+ uint32_t tag, uint16_t size);
+int pnv_commit_errorlog(struct opal_errorlog *buf);
+
#endif /* _POWERNV_H */
^ permalink raw reply related
* [PATCH V5 2/3] powernv: Correct spell error in opal-elog.c
From: Deepthi Dharwar @ 2014-02-04 11:31 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <20140204113127.19141.21493.stgit@deepthi.in.ibm.com>
Correct spell error in opal-elog.c
Signed-off-by: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/opal-elog.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/powernv/opal-elog.c b/arch/powerpc/platforms/powernv/opal-elog.c
index c9ce835..90ccb70 100644
--- a/arch/powerpc/platforms/powernv/opal-elog.c
+++ b/arch/powerpc/platforms/powernv/opal-elog.c
@@ -26,7 +26,7 @@
/* Maximum size of a single log on FSP is 16KB */
#define OPAL_MAX_ERRLOG_SIZE 16384
-/* maximu number of records powernv can hold */
+/* Maximum number of records powernv platform can hold */
#define MAX_NUM_RECORD 128
struct opal_err_log {
^ permalink raw reply related
* [PATCH V5 3/3] powernv: Have uniform logging of errors in opal-elog.c
From: Deepthi Dharwar @ 2014-02-04 11:32 UTC (permalink / raw)
To: linuxppc-dev
In-Reply-To: <20140204113127.19141.21493.stgit@deepthi.in.ibm.com>
Currently some errors/info to be reported use
printk and the rest pr_fmt(). This patch
makes the complete error logging uniform.
Signed-off-by: Deepthi Dharwar <deepthi@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/opal-elog.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/arch/powerpc/platforms/powernv/opal-elog.c b/arch/powerpc/platforms/powernv/opal-elog.c
index 90ccb70..070ac24 100644
--- a/arch/powerpc/platforms/powernv/opal-elog.c
+++ b/arch/powerpc/platforms/powernv/opal-elog.c
@@ -63,7 +63,7 @@ void opal_elog_ack(uint64_t ack_id)
struct opal_err_log *record, *next;
bool found = false;
- printk(KERN_INFO "OPAL Log ACK=%llx", ack_id);
+ pr_info("OPAL Log ACK=%llx", ack_id);
/* once user acknowledge a log delete record from list */
spin_lock_irqsave(&opal_elog_lock, flags);
@@ -189,7 +189,7 @@ static void opal_elog_read(void)
/* read log size and log ID from OPAL */
rc = opal_get_elog_size(&log_id, &elog_size, &elog_type);
if (rc != OPAL_SUCCESS) {
- pr_err("ELOG: Opal log read failed\n");
+ pr_err("Opal log read failed\n");
return;
}
if (elog_size >= OPAL_MAX_ERRLOG_SIZE)
@@ -203,7 +203,7 @@ static void opal_elog_read(void)
rc = opal_read_elog(__pa(err_log_data), elog_size, log_id);
if (rc != OPAL_SUCCESS) {
mutex_unlock(&err_log_data_mutex);
- pr_err("ELOG: log read failed for log-id=%llx\n", log_id);
+ pr_err("Reading of log failed for log-id=%llx\n", log_id);
/* put back the free node. */
spin_lock_irqsave(&opal_elog_lock, flags);
list_add(&record->link, &elog_ack_list);
@@ -265,7 +265,7 @@ static int init_err_log_buffer(void)
buf_ptr = vmalloc(sizeof(struct opal_err_log) * MAX_NUM_RECORD);
if (!buf_ptr) {
- printk(KERN_ERR "ELOG: failed to allocate memory.\n");
+ pr_err("Failed to allocate memory for error logging buffers.\n");
return -ENOMEM;
}
memset(buf_ptr, 0, sizeof(struct opal_err_log) * MAX_NUM_RECORD);
@@ -357,15 +357,13 @@ int __init opal_elog_init(void)
rc = sysfs_create_bin_file(opal_kobj, &opal_elog_attr);
if (rc) {
- printk(KERN_ERR "ELOG: unable to create sysfs file"
- "opal_elog (%d)\n", rc);
+ pr_err("Unable to create sysfs file opal_elog (%d)\n", rc);
return rc;
}
rc = sysfs_create_file(opal_kobj, &opal_elog_ack_attr.attr);
if (rc) {
- printk(KERN_ERR "ELOG: unable to create sysfs file"
- " opal_elog_ack (%d)\n", rc);
+ pr_err("Unable to create sysfs file opal_elog_ack (%d)\n", rc);
return rc;
}
^ permalink raw reply related
* Oops on shutdown : 3.11.0-5-powerpc-e500mc Ubuntu
From: John Donnelly @ 2014-02-04 14:47 UTC (permalink / raw)
To: linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 5993 bytes --]
Hi,
Where is a appropriate place to file a bug for this : This is the second
occurrence I have seen.
saucy)root@(none):/work/svy/tools# * Stopping MD monitoring service mdadm
--monitor
[ OK ]
* Asking all remaining processes to terminate... [
OK ]
* All processes ended within 1 seconds... [
OK ]
[65426.692405] Oops: Exception in kernel mode, sig: 11 [#1]
[65426.697721] SMP NR_CPUS=8 P4080 DS
[65426.701122] Modules linked in: btrfs(F) raid6_pq(F) zlib_deflate(F)
xor(F) ufs(F) qnx4(F) hfsplus(F) hfs(F) minix(F) ntfs(F) msdos(F) jfs(F)
xfs(F) libcrc32c(F) reiserfs(F) nls_iso8859_1(F) nls_cp437(F) vfat(F)
fat(F) dm_multipath(F) scsi_dh(F) usb_storage(F) ext2(F) rpcsec_gss_krb5(F)
nfsv4(F) nfsd(F) auth_rpcgss(F) nfs_acl(F) nfs(F) lockd(F) sunrpc(F)
fscache(F) ofpart(F) redboot(F) cmdlinepart(F) cfi_cmdset_0002(F)
cfi_probe(F) cfi_util(F) gen_probe(F) physmap_of(F) map_funcs(F) chipreg(F)
mtd(F) lm90(F) at24(F) caam(F) i2c_mpc(F) mpc85xx_edac(F) edac_core(F)
uio_pdrv_genirq(F) uio(F) ata_generic(F) ahci(F) libahci(F) pata_jmicron(F)
fsl_pq_mdio(F)
[65426.759065] CPU: 6 PID: 19006 Comm: umount.nfs Tainted: GF
3.11.0-5-powerpc-e500mc #8-Ubuntu
[65426.768461] task: ea0f3900 ti: ea05c000 task.ti: ea05c000
[65426.773858] NIP: f99a0f50 LR: f998250c CTR: c07f85c0
[65426.778820] REGS: ea05dda0 TRAP: 0700 Tainted: GF
(3.11.0-5-powerpc-e500mc)
[65426.786998] MSR: 00029002 <CE,EE,ME> CR: 24000422 XER: 20000000
[65426.793107]
GPR00: f9982d20 ea05de50 ea0f3900 e7e66ee0 00029002 00000001 00000000
00000000
GPR08: eadc2504 00000000 00000000 00000001 c07f85c0 1002e3ac 10010000
00008000
GPR16: 100112e4 1000f3c4 1000f3e0 1000f594 1000f59c 1000f440 c0b4fb6c
10010000
GPR24: 10010000 00000000 c0089180 ea05de84 f99ab064 ea2bf500 c0b41380
ea54ef00
[65426.822949] NIP [f99a0f50] rpc_remove_client_dir+0x0/0x30 [sunrpc]
[65426.829143] LR [f998250c] __rpc_clnt_remove_pipedir+0x5c/0x80 [sunrpc]
[65426.835668] Call Trace:
[65426.838128] [ea05de50] [f999f9f0] rpc_get_sb_net+0x70/0xa0 [sunrpc]
(unreliable)
[65426.845542] [ea05de60] [f9982d20] rpc_free_client+0x50/0xa0 [sunrpc]
[65426.851910] [ea05de70] [f9982c58] rpc_shutdown_client+0x68/0xe0 [sunrpc]
[65426.858647] [ea05dec0] [f9a3fd04] nfs_free_server+0x124/0x190 [nfs]
[65426.864920] [ea05dee0] [c01c5f34] deactivate_locked_super+0x74/0xa0
[65426.871193] [ea05def0] [c01e9184] SyS_umount+0x94/0x3d0
[65426.876422] [ea05df40] [c0010604] ret_from_syscall+0x0/0x3c
[65426.882002] --- Exception: c01 at 0xfec55dc
[65426.882002] LR = 0xff88d54
[65426.889225] Instruction dump:
[65426.892191] 00001b50 0000aa32 00000706 00000120 0000aa36 00000706
00001af8 0000aa3a
[65426.899964] 00000706 00001aa0 0000aa46 00000704 <00000058> 0000aa4a
00000704 00001b74
[65426.907949] udlfb: /dev/fb0 FB_BLANK mode 1 --> 0
[65426.912666] udlfb: set_par mode 1024x768
[65426.927196] ---[ end trace b25b3039b99e0391 ]---
[65426.931816]
umount.nfs: /work: not mounted
[65426.960296] init: idmapd main process (2394) killed by TERM signal
[65426.983998] init: systemd-logind main process (544) killed by TERM signal
[65426.994070] Oops: Exception in kernel mode, sig: 11 [#2]
[65426.999386] SMP NR_CPUS=8 P4080 DS
[65427.002787] Modules linked in: btrfs(F) raid6_pq(F) zlib_deflate(F)
xor(F) ufs(F) qnx4(F) hfsplus(F) hfs(F) minix(F) ntfs(F) msdos(F) jfs(F)
xfs(F) libcrc32c(F) reiserfs(F) nls_iso8859_1(F) nls_cp437(F) vfat(F)
fat(F) dm_multipath(F) scsi_dh(F) usb_storage(F) ext2(F) rpcsec_gss_krb5(F)
nfsv4(F) nfsd(F) auth_rpcgss(F) nfs_acl(F) nfs(F) lockd(F) sunrpc(F)
fscache(F) ofpart(F) redboot(F) cmdlinepart(F) cfi_cmdset_0002(F)
cfi_probe(F) cfi_util(F) gen_probe(F) physmap_of(F) map_funcs(F) chipreg(F)
mtd(F) lm90(F) at24(F) caam(F) i2c_mpc(F) mpc85xx_edac(F) edac_core(F)
uio_pdrv_genirq(F) uio(F) ata_generic(F) ahci(F) libahci(F) pata_jmicron(F)
fsl_pq_mdio(F)
[65427.060734] CPU: 7 PID: 19014 Comm: umount Tainted: GF D
3.11.0-5-powerpc-e500mc #8-Ubuntu
[65427.069783] task: e5d55580 ti: ea2f0000 task.ti: ea2f0000
[65427.075180] NIP: f99a0270 LR: c01c5f34 CTR: f99a0270
[65427.080142] REGS: ea2f1e30 TRAP: 0700 Tainted: GF D
(3.11.0-5-powerpc-e500mc)
[65427.088320] MSR: 00029002 <CE,EE,ME> CR: 24004424 XER: 00000000
[65427.094430]
GPR00: c01c5f24 ea2f1ee0 e5d55580 ea1e7800 c1d404e0 ea027a80 c01e7b78
00000001
GPR08: ffffffff f99a0270 ffffffff 0000000d 003fe0f9 100192e0 10010000
00008000
GPR16: 100112e4 1000f3c4 1000f3e0 1000f594 1000f59c ea027aa0 c0b4fb6c
ea2f1ef8
GPR24: 00000000 ea027a80 00000000 ea027a80 ea027aa0 ea027abc f99aba78
ea1e7800
[65427.124275] NIP [f99a0270] rpc_kill_sb+0x0/0x110 [sunrpc]
[65427.129677] LR [c01c5f34] deactivate_locked_super+0x74/0xa0
[65427.135246] Call Trace:
[65427.137689] [ea2f1ee0] [c01c5f24] deactivate_locked_super+0x64/0xa0
(unreliable)
[65427.145094] [ea2f1ef0] [c01e9184] SyS_umount+0x94/0x3d0
[65427.150322] [ea2f1f40] [c0010604] ret_from_syscall+0x0/0x3c
[65427.155902] --- Exception: c01 at 0xfec45cc
[65427.155902] LR = 0x10003130
[65427.163212] Instruction dump:
[65427.166178] 0000867e 00000706 00001288 00008682 00000706 00000058
00008686 00000704
[65427.173952] 00001288 0000868a 00000704 00000058 <00008690> 0006320a
00000000 00008694
[65427.181901] ---[ end trace b25b3039b99e0392 ]---
[65427.186514]
rpcbind: rpcbind terminating on signal. Restart with "rpcbind -w"
[65427.235270] init: rpcbind main process (2082) terminated with status 2
[65427.294746] init: Disconnected from system bus
* Deactivating swap... [
OK ]
* Unmounting local filesystems... [
OK ]
mount: / is busy
* Will now restart
--
*Regards,*
* John.*
*--*
*o* Energy-efficiency is #1 reason data centers look to expand. -- Digital
Realty Trust
*o* Green Data Centers spending to increase 300% worldwide by 2016. --
Pike Research
*o *Data Centers have become as vital to the functioni
ng of society as power stations. -- The Economist
[-- Attachment #2: Type: text/html, Size: 8891 bytes --]
^ permalink raw reply
* ppc9a board support
From: Chris Enrique @ 2014-02-04 14:47 UTC (permalink / raw)
To: linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 343 bytes --]
hello,
sorry if this message doesn't clearly hit the topic of this list but i
would like to ask if anybody has information about bringing a linux-3.10 or
later kernel to ge fanuc ppc9a powerpc board (existing bsp? vme drivers?
etc.?) to prevent starting from scratch for this task.
any ideas would be much appreciated.
kind regards,
chris
[-- Attachment #2: Type: text/html, Size: 432 bytes --]
^ permalink raw reply
* Re: Oops on shutdown : 3.11.0-5-powerpc-e500mc Ubuntu
From: Thadeu Lima de Souza Cascardo @ 2014-02-04 15:59 UTC (permalink / raw)
To: John Donnelly; +Cc: linuxppc-dev
In-Reply-To: <CAGtOQbSJeJ85Nj-M2XB+w3p5+PTVWrpsFKZqCbEqZYkwsa0GGg@mail.gmail.com>
On Tue, Feb 04, 2014 at 08:47:14AM -0600, John Donnelly wrote:
> Hi,
> Where is a appropriate place to file a bug for this : This is the second
> occurrence I have seen.
>
If this is a Ubuntu kernel, probably report it at Canonical's Launchpad.
If it is provided by Freescale, report it to Freescale.
If you can run a mainline kernel (best now would be 3.14-rc1) and
reproduce that, then best place would be linux-nfs@vger.kernel.org.
Hope that helps.
Cascardo.
>
>
> saucy)root@(none):/work/svy/tools# * Stopping MD monitoring service mdadm
> --monitor
> [ OK ]
> * Asking all remaining processes to terminate... [
> OK ]
> * All processes ended within 1 seconds... [
> OK ]
> [65426.692405] Oops: Exception in kernel mode, sig: 11 [#1]
> [65426.697721] SMP NR_CPUS=8 P4080 DS
> [65426.701122] Modules linked in: btrfs(F) raid6_pq(F) zlib_deflate(F)
> xor(F) ufs(F) qnx4(F) hfsplus(F) hfs(F) minix(F) ntfs(F) msdos(F) jfs(F)
> xfs(F) libcrc32c(F) reiserfs(F) nls_iso8859_1(F) nls_cp437(F) vfat(F)
> fat(F) dm_multipath(F) scsi_dh(F) usb_storage(F) ext2(F) rpcsec_gss_krb5(F)
> nfsv4(F) nfsd(F) auth_rpcgss(F) nfs_acl(F) nfs(F) lockd(F) sunrpc(F)
> fscache(F) ofpart(F) redboot(F) cmdlinepart(F) cfi_cmdset_0002(F)
> cfi_probe(F) cfi_util(F) gen_probe(F) physmap_of(F) map_funcs(F) chipreg(F)
> mtd(F) lm90(F) at24(F) caam(F) i2c_mpc(F) mpc85xx_edac(F) edac_core(F)
> uio_pdrv_genirq(F) uio(F) ata_generic(F) ahci(F) libahci(F) pata_jmicron(F)
> fsl_pq_mdio(F)
> [65426.759065] CPU: 6 PID: 19006 Comm: umount.nfs Tainted: GF
> 3.11.0-5-powerpc-e500mc #8-Ubuntu
> [65426.768461] task: ea0f3900 ti: ea05c000 task.ti: ea05c000
> [65426.773858] NIP: f99a0f50 LR: f998250c CTR: c07f85c0
> [65426.778820] REGS: ea05dda0 TRAP: 0700 Tainted: GF
> (3.11.0-5-powerpc-e500mc)
> [65426.786998] MSR: 00029002 <CE,EE,ME> CR: 24000422 XER: 20000000
> [65426.793107]
> GPR00: f9982d20 ea05de50 ea0f3900 e7e66ee0 00029002 00000001 00000000
> 00000000
> GPR08: eadc2504 00000000 00000000 00000001 c07f85c0 1002e3ac 10010000
> 00008000
> GPR16: 100112e4 1000f3c4 1000f3e0 1000f594 1000f59c 1000f440 c0b4fb6c
> 10010000
> GPR24: 10010000 00000000 c0089180 ea05de84 f99ab064 ea2bf500 c0b41380
> ea54ef00
> [65426.822949] NIP [f99a0f50] rpc_remove_client_dir+0x0/0x30 [sunrpc]
> [65426.829143] LR [f998250c] __rpc_clnt_remove_pipedir+0x5c/0x80 [sunrpc]
> [65426.835668] Call Trace:
> [65426.838128] [ea05de50] [f999f9f0] rpc_get_sb_net+0x70/0xa0 [sunrpc]
> (unreliable)
> [65426.845542] [ea05de60] [f9982d20] rpc_free_client+0x50/0xa0 [sunrpc]
> [65426.851910] [ea05de70] [f9982c58] rpc_shutdown_client+0x68/0xe0 [sunrpc]
> [65426.858647] [ea05dec0] [f9a3fd04] nfs_free_server+0x124/0x190 [nfs]
> [65426.864920] [ea05dee0] [c01c5f34] deactivate_locked_super+0x74/0xa0
> [65426.871193] [ea05def0] [c01e9184] SyS_umount+0x94/0x3d0
> [65426.876422] [ea05df40] [c0010604] ret_from_syscall+0x0/0x3c
> [65426.882002] --- Exception: c01 at 0xfec55dc
> [65426.882002] LR = 0xff88d54
> [65426.889225] Instruction dump:
> [65426.892191] 00001b50 0000aa32 00000706 00000120 0000aa36 00000706
> 00001af8 0000aa3a
> [65426.899964] 00000706 00001aa0 0000aa46 00000704 <00000058> 0000aa4a
> 00000704 00001b74
> [65426.907949] udlfb: /dev/fb0 FB_BLANK mode 1 --> 0
> [65426.912666] udlfb: set_par mode 1024x768
> [65426.927196] ---[ end trace b25b3039b99e0391 ]---
> [65426.931816]
> umount.nfs: /work: not mounted
> [65426.960296] init: idmapd main process (2394) killed by TERM signal
> [65426.983998] init: systemd-logind main process (544) killed by TERM signal
> [65426.994070] Oops: Exception in kernel mode, sig: 11 [#2]
> [65426.999386] SMP NR_CPUS=8 P4080 DS
> [65427.002787] Modules linked in: btrfs(F) raid6_pq(F) zlib_deflate(F)
> xor(F) ufs(F) qnx4(F) hfsplus(F) hfs(F) minix(F) ntfs(F) msdos(F) jfs(F)
> xfs(F) libcrc32c(F) reiserfs(F) nls_iso8859_1(F) nls_cp437(F) vfat(F)
> fat(F) dm_multipath(F) scsi_dh(F) usb_storage(F) ext2(F) rpcsec_gss_krb5(F)
> nfsv4(F) nfsd(F) auth_rpcgss(F) nfs_acl(F) nfs(F) lockd(F) sunrpc(F)
> fscache(F) ofpart(F) redboot(F) cmdlinepart(F) cfi_cmdset_0002(F)
> cfi_probe(F) cfi_util(F) gen_probe(F) physmap_of(F) map_funcs(F) chipreg(F)
> mtd(F) lm90(F) at24(F) caam(F) i2c_mpc(F) mpc85xx_edac(F) edac_core(F)
> uio_pdrv_genirq(F) uio(F) ata_generic(F) ahci(F) libahci(F) pata_jmicron(F)
> fsl_pq_mdio(F)
> [65427.060734] CPU: 7 PID: 19014 Comm: umount Tainted: GF D
> 3.11.0-5-powerpc-e500mc #8-Ubuntu
> [65427.069783] task: e5d55580 ti: ea2f0000 task.ti: ea2f0000
> [65427.075180] NIP: f99a0270 LR: c01c5f34 CTR: f99a0270
> [65427.080142] REGS: ea2f1e30 TRAP: 0700 Tainted: GF D
> (3.11.0-5-powerpc-e500mc)
> [65427.088320] MSR: 00029002 <CE,EE,ME> CR: 24004424 XER: 00000000
> [65427.094430]
> GPR00: c01c5f24 ea2f1ee0 e5d55580 ea1e7800 c1d404e0 ea027a80 c01e7b78
> 00000001
> GPR08: ffffffff f99a0270 ffffffff 0000000d 003fe0f9 100192e0 10010000
> 00008000
> GPR16: 100112e4 1000f3c4 1000f3e0 1000f594 1000f59c ea027aa0 c0b4fb6c
> ea2f1ef8
> GPR24: 00000000 ea027a80 00000000 ea027a80 ea027aa0 ea027abc f99aba78
> ea1e7800
> [65427.124275] NIP [f99a0270] rpc_kill_sb+0x0/0x110 [sunrpc]
> [65427.129677] LR [c01c5f34] deactivate_locked_super+0x74/0xa0
> [65427.135246] Call Trace:
> [65427.137689] [ea2f1ee0] [c01c5f24] deactivate_locked_super+0x64/0xa0
> (unreliable)
> [65427.145094] [ea2f1ef0] [c01e9184] SyS_umount+0x94/0x3d0
> [65427.150322] [ea2f1f40] [c0010604] ret_from_syscall+0x0/0x3c
> [65427.155902] --- Exception: c01 at 0xfec45cc
> [65427.155902] LR = 0x10003130
> [65427.163212] Instruction dump:
> [65427.166178] 0000867e 00000706 00001288 00008682 00000706 00000058
> 00008686 00000704
> [65427.173952] 00001288 0000868a 00000704 00000058 <00008690> 0006320a
> 00000000 00008694
> [65427.181901] ---[ end trace b25b3039b99e0392 ]---
> [65427.186514]
> rpcbind: rpcbind terminating on signal. Restart with "rpcbind -w"
> [65427.235270] init: rpcbind main process (2082) terminated with status 2
> [65427.294746] init: Disconnected from system bus
> * Deactivating swap... [
> OK ]
> * Unmounting local filesystems... [
> OK ]
> mount: / is busy
> * Will now restart
>
> --
>
> *Regards,*
> * John.*
>
> *--*
>
> *o* Energy-efficiency is #1 reason data centers look to expand. -- Digital
> Realty Trust
> *o* Green Data Centers spending to increase 300% worldwide by 2016. --
> Pike Research
> *o *Data Centers have become as vital to the functioni
> ng of society as power stations. -- The Economist
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
^ permalink raw reply
* Re: Oops on shutdown : 3.11.0-5-powerpc-e500mc Ubuntu
From: John Donnelly @ 2014-02-04 16:43 UTC (permalink / raw)
To: Thadeu Lima de Souza Cascardo; +Cc: linuxppc-dev
In-Reply-To: <20140204155921.GA31582@oc0268524204.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 7559 bytes --]
Thanks.
It appears to be a Ubuntu component :
(saucy)root@(none)# dpkg -S /boot/vmlinux-3.11.0-5-powerpc-e500mc
linux-image-3.11.0-5-powerpc-e500mc: /boot/vmlinux-3.11.0-5-powerpc-e500mc
On Tue, Feb 4, 2014 at 9:59 AM, Thadeu Lima de Souza Cascardo <
cascardo@linux.vnet.ibm.com> wrote:
> On Tue, Feb 04, 2014 at 08:47:14AM -0600, John Donnelly wrote:
> > Hi,
> > Where is a appropriate place to file a bug for this : This is the second
> > occurrence I have seen.
> >
>
> If this is a Ubuntu kernel, probably report it at Canonical's Launchpad.
> If it is provided by Freescale, report it to Freescale.
> If you can run a mainline kernel (best now would be 3.14-rc1) and
> reproduce that, then best place would be linux-nfs@vger.kernel.org.
>
> Hope that helps.
> Cascardo.
>
> >
> >
> > saucy)root@(none):/work/svy/tools# * Stopping MD monitoring service
> mdadm
> > --monitor
> > [ OK ]
> > * Asking all remaining processes to terminate...
> [
> > OK ]
> > * All processes ended within 1 seconds...
> [
> > OK ]
> > [65426.692405] Oops: Exception in kernel mode, sig: 11 [#1]
> > [65426.697721] SMP NR_CPUS=8 P4080 DS
> > [65426.701122] Modules linked in: btrfs(F) raid6_pq(F) zlib_deflate(F)
> > xor(F) ufs(F) qnx4(F) hfsplus(F) hfs(F) minix(F) ntfs(F) msdos(F) jfs(F)
> > xfs(F) libcrc32c(F) reiserfs(F) nls_iso8859_1(F) nls_cp437(F) vfat(F)
> > fat(F) dm_multipath(F) scsi_dh(F) usb_storage(F) ext2(F)
> rpcsec_gss_krb5(F)
> > nfsv4(F) nfsd(F) auth_rpcgss(F) nfs_acl(F) nfs(F) lockd(F) sunrpc(F)
> > fscache(F) ofpart(F) redboot(F) cmdlinepart(F) cfi_cmdset_0002(F)
> > cfi_probe(F) cfi_util(F) gen_probe(F) physmap_of(F) map_funcs(F)
> chipreg(F)
> > mtd(F) lm90(F) at24(F) caam(F) i2c_mpc(F) mpc85xx_edac(F) edac_core(F)
> > uio_pdrv_genirq(F) uio(F) ata_generic(F) ahci(F) libahci(F)
> pata_jmicron(F)
> > fsl_pq_mdio(F)
> > [65426.759065] CPU: 6 PID: 19006 Comm: umount.nfs Tainted: GF
> > 3.11.0-5-powerpc-e500mc #8-Ubuntu
> > [65426.768461] task: ea0f3900 ti: ea05c000 task.ti: ea05c000
> > [65426.773858] NIP: f99a0f50 LR: f998250c CTR: c07f85c0
> > [65426.778820] REGS: ea05dda0 TRAP: 0700 Tainted: GF
> > (3.11.0-5-powerpc-e500mc)
> > [65426.786998] MSR: 00029002 <CE,EE,ME> CR: 24000422 XER: 20000000
> > [65426.793107]
> > GPR00: f9982d20 ea05de50 ea0f3900 e7e66ee0 00029002 00000001 00000000
> > 00000000
> > GPR08: eadc2504 00000000 00000000 00000001 c07f85c0 1002e3ac 10010000
> > 00008000
> > GPR16: 100112e4 1000f3c4 1000f3e0 1000f594 1000f59c 1000f440 c0b4fb6c
> > 10010000
> > GPR24: 10010000 00000000 c0089180 ea05de84 f99ab064 ea2bf500 c0b41380
> > ea54ef00
> > [65426.822949] NIP [f99a0f50] rpc_remove_client_dir+0x0/0x30 [sunrpc]
> > [65426.829143] LR [f998250c] __rpc_clnt_remove_pipedir+0x5c/0x80 [sunrpc]
> > [65426.835668] Call Trace:
> > [65426.838128] [ea05de50] [f999f9f0] rpc_get_sb_net+0x70/0xa0 [sunrpc]
> > (unreliable)
> > [65426.845542] [ea05de60] [f9982d20] rpc_free_client+0x50/0xa0 [sunrpc]
> > [65426.851910] [ea05de70] [f9982c58] rpc_shutdown_client+0x68/0xe0
> [sunrpc]
> > [65426.858647] [ea05dec0] [f9a3fd04] nfs_free_server+0x124/0x190 [nfs]
> > [65426.864920] [ea05dee0] [c01c5f34] deactivate_locked_super+0x74/0xa0
> > [65426.871193] [ea05def0] [c01e9184] SyS_umount+0x94/0x3d0
> > [65426.876422] [ea05df40] [c0010604] ret_from_syscall+0x0/0x3c
> > [65426.882002] --- Exception: c01 at 0xfec55dc
> > [65426.882002] LR = 0xff88d54
> > [65426.889225] Instruction dump:
> > [65426.892191] 00001b50 0000aa32 00000706 00000120 0000aa36 00000706
> > 00001af8 0000aa3a
> > [65426.899964] 00000706 00001aa0 0000aa46 00000704 <00000058> 0000aa4a
> > 00000704 00001b74
> > [65426.907949] udlfb: /dev/fb0 FB_BLANK mode 1 --> 0
> > [65426.912666] udlfb: set_par mode 1024x768
> > [65426.927196] ---[ end trace b25b3039b99e0391 ]---
> > [65426.931816]
> > umount.nfs: /work: not mounted
> > [65426.960296] init: idmapd main process (2394) killed by TERM signal
> > [65426.983998] init: systemd-logind main process (544) killed by TERM
> signal
> > [65426.994070] Oops: Exception in kernel mode, sig: 11 [#2]
> > [65426.999386] SMP NR_CPUS=8 P4080 DS
> > [65427.002787] Modules linked in: btrfs(F) raid6_pq(F) zlib_deflate(F)
> > xor(F) ufs(F) qnx4(F) hfsplus(F) hfs(F) minix(F) ntfs(F) msdos(F) jfs(F)
> > xfs(F) libcrc32c(F) reiserfs(F) nls_iso8859_1(F) nls_cp437(F) vfat(F)
> > fat(F) dm_multipath(F) scsi_dh(F) usb_storage(F) ext2(F)
> rpcsec_gss_krb5(F)
> > nfsv4(F) nfsd(F) auth_rpcgss(F) nfs_acl(F) nfs(F) lockd(F) sunrpc(F)
> > fscache(F) ofpart(F) redboot(F) cmdlinepart(F) cfi_cmdset_0002(F)
> > cfi_probe(F) cfi_util(F) gen_probe(F) physmap_of(F) map_funcs(F)
> chipreg(F)
> > mtd(F) lm90(F) at24(F) caam(F) i2c_mpc(F) mpc85xx_edac(F) edac_core(F)
> > uio_pdrv_genirq(F) uio(F) ata_generic(F) ahci(F) libahci(F)
> pata_jmicron(F)
> > fsl_pq_mdio(F)
> > [65427.060734] CPU: 7 PID: 19014 Comm: umount Tainted: GF D
> > 3.11.0-5-powerpc-e500mc #8-Ubuntu
> > [65427.069783] task: e5d55580 ti: ea2f0000 task.ti: ea2f0000
> > [65427.075180] NIP: f99a0270 LR: c01c5f34 CTR: f99a0270
> > [65427.080142] REGS: ea2f1e30 TRAP: 0700 Tainted: GF D
> > (3.11.0-5-powerpc-e500mc)
> > [65427.088320] MSR: 00029002 <CE,EE,ME> CR: 24004424 XER: 00000000
> > [65427.094430]
> > GPR00: c01c5f24 ea2f1ee0 e5d55580 ea1e7800 c1d404e0 ea027a80 c01e7b78
> > 00000001
> > GPR08: ffffffff f99a0270 ffffffff 0000000d 003fe0f9 100192e0 10010000
> > 00008000
> > GPR16: 100112e4 1000f3c4 1000f3e0 1000f594 1000f59c ea027aa0 c0b4fb6c
> > ea2f1ef8
> > GPR24: 00000000 ea027a80 00000000 ea027a80 ea027aa0 ea027abc f99aba78
> > ea1e7800
> > [65427.124275] NIP [f99a0270] rpc_kill_sb+0x0/0x110 [sunrpc]
> > [65427.129677] LR [c01c5f34] deactivate_locked_super+0x74/0xa0
> > [65427.135246] Call Trace:
> > [65427.137689] [ea2f1ee0] [c01c5f24] deactivate_locked_super+0x64/0xa0
> > (unreliable)
> > [65427.145094] [ea2f1ef0] [c01e9184] SyS_umount+0x94/0x3d0
> > [65427.150322] [ea2f1f40] [c0010604] ret_from_syscall+0x0/0x3c
> > [65427.155902] --- Exception: c01 at 0xfec45cc
> > [65427.155902] LR = 0x10003130
> > [65427.163212] Instruction dump:
> > [65427.166178] 0000867e 00000706 00001288 00008682 00000706 00000058
> > 00008686 00000704
> > [65427.173952] 00001288 0000868a 00000704 00000058 <00008690> 0006320a
> > 00000000 00008694
> > [65427.181901] ---[ end trace b25b3039b99e0392 ]---
> > [65427.186514]
> > rpcbind: rpcbind terminating on signal. Restart with "rpcbind -w"
> > [65427.235270] init: rpcbind main process (2082) terminated with status 2
> > [65427.294746] init: Disconnected from system bus
> > * Deactivating swap...
> [
> > OK ]
> > * Unmounting local filesystems...
> [
> > OK ]
> > mount: / is busy
> > * Will now restart
> >
> > --
> >
> > *Regards,*
> > * John.*
> >
> > *--*
> >
> > *o* Energy-efficiency is #1 reason data centers look to expand. --
> Digital
> > Realty Trust
> > *o* Green Data Centers spending to increase 300% worldwide by 2016. --
> > Pike Research
> > *o *Data Centers have become as vital to the functioni
> > ng of society as power stations. -- The Economist
>
> > _______________________________________________
> > Linuxppc-dev mailing list
> > Linuxppc-dev@lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/linuxppc-dev
>
>
--
*Regards,*
* John.*
*--*
*o* Energy-efficiency is #1 reason data centers look to expand. -- Digital
Realty Trust
*o* Green Data Centers spending to increase 300% worldwide by 2016. --
Pike Research
*o *Data Centers have become as vital to the functioni
ng of society as power stations. -- The Economist
[-- Attachment #2: Type: text/html, Size: 10959 bytes --]
^ permalink raw reply
* Re: [PATCH V2 2/2] tick/cpuidle: Initialize hrtimer mode of broadcast
From: Preeti U Murthy @ 2014-02-04 17:09 UTC (permalink / raw)
To: Thomas Gleixner
Cc: daniel.lezcano, peterz, fweisbec, paul.gortmaker, paulus, mingo,
mikey, shangw, rafael.j.wysocki, agraf, paulmck, arnd, linux-pm,
rostedt, michael, john.stultz, anton, chenhui.zhao, deepthi,
r58472, geoff, linux-kernel, srivatsa.bhat, schwidefsky,
linuxppc-dev
In-Reply-To: <alpine.DEB.2.02.1402041101330.24986@ionos.tec.linutronix.de>
Hi Thomas,
On 02/04/2014 03:48 PM, Thomas Gleixner wrote:
>> +++ b/kernel/time/tick-broadcast-hrtimer.c
>> +/*
>> + * This is called from the guts of the broadcast code when the cpu
>> + * which is about to enter idle has the earliest broadcast timer event.
>> + */
>> +static int bc_set_next(ktime_t expires, struct clock_event_device *bc)
>> +{
>> + ktime_t now, interval;
>> + /*
>> + * We try to cancel the timer first. If the callback is on
>> + * flight on some other cpu then we let it handle it. If we
>> + * were able to cancel the timer nothing can rearm it as we
>> + * own broadcast_lock.
>> + *
>> + * However if we are called from the hrtimer interrupt handler
>> + * itself, reprogram it.
>> + */
>> + if (hrtimer_try_to_cancel(&bctimer) >= 0) {
>> + hrtimer_start(&bctimer, expires, HRTIMER_MODE_ABS_PINNED);
>> + /* Bind the "device" to the cpu */
>> + bc->bound_on = smp_processor_id();
>> + } else if (bc->bound_on == smp_processor_id()) {
>
> This part really wants a proper comment. It took me a while to figure
> out why this is correct and what the call chain is.
How about:
"However we can also be called from the event handler of
ce_broadcast_hrtimer when bctimer expires. We cannot therefore restart
the timer since it is on flight on the same CPU. But due to the same
reason we can reset it."
?
>
>
>> + now = ktime_get();
>> + interval = ktime_sub(expires, now);
>> + hrtimer_forward_now(&bctimer, interval);
>
> We are in the event handler called from bc_handler() and expires is
> absolute time. So what's wrong with calling
> hrtimer_set_expires(&bctimer, expires)?
You are right. There are so many interfaces doing nearly the same thing
:( I overlooked that hrtimer_forward() and its variants were being used
when the interval was pre-calculated and stored away. And
hrtimer_set_expires() would be used when we knew the absolute expiry.
And it looks safe to call it here too.
>
>> +static enum hrtimer_restart bc_handler(struct hrtimer *t)
>> +{
>> + ce_broadcast_hrtimer.event_handler(&ce_broadcast_hrtimer);
>> + return HRTIMER_RESTART;
>
> We probably want to check whether the timer needs to be restarted at
> all.
>
> if (ce_broadcast_timer.next_event.tv64 == KTIME_MAX)
> return HRTIMER_NORESTART;
>
> return HRTIMER_RESTART;
True this additional check would be useful.
Do you want me to send out the next version with the above corrections
including the patch added to this thread where we handle archs setting
the CPUIDLE_FLAG_TIMER_STOP flag?
>
> Hmm?
>
> Thanks,
>
> tglx
Thanks
Regards
Preeti U Murthy
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
^ permalink raw reply
* Re: [PATCH V2 1/2] time: Change the return type of clockevents_notify() to integer
From: Preeti U Murthy @ 2014-02-04 17:14 UTC (permalink / raw)
To: Thomas Gleixner
Cc: daniel.lezcano, peterz, fweisbec, agraf, paul.gortmaker, paulus,
mingo, mikey, shangw, rafael.j.wysocki, paulmck, arnd, linux-pm,
rostedt, michael, john.stultz, anton, chenhui.zhao, deepthi,
r58472, geoff, linux-kernel, srivatsa.bhat, schwidefsky,
linuxppc-dev
In-Reply-To: <alpine.DEB.2.02.1402041100250.24986@ionos.tec.linutronix.de>
On 02/04/2014 03:31 PM, Thomas Gleixner wrote:
> On Fri, 24 Jan 2014, Preeti U Murthy wrote:
>> -extern void tick_broadcast_oneshot_control(unsigned long reason);
>> +extern int tick_broadcast_oneshot_control(unsigned long reason);
>
>> -static inline void tick_broadcast_oneshot_control(unsigned long reason) { }
>> +static inline int tick_broadcast_oneshot_control(unsigned long reason) { }
>
>> -static inline void tick_broadcast_oneshot_control(unsigned long reason) { }
>> +static inline int tick_broadcast_oneshot_control(unsigned long reason) { }
>
> The inline stubs need to return 0.
Oh right! Apologies!
Thanks.
>
> Thanks,
>
> tglx
>
Regards
Preeti U Murthy
^ permalink raw reply
* Re: [PATCH V2 2/2] tick/cpuidle: Initialize hrtimer mode of broadcast
From: Thomas Gleixner @ 2014-02-04 20:18 UTC (permalink / raw)
To: Preeti U Murthy
Cc: daniel.lezcano, peterz, fweisbec, paul.gortmaker, paulus, mingo,
mikey, shangw, rafael.j.wysocki, agraf, paulmck, arnd, linux-pm,
rostedt, michael, john.stultz, anton, chenhui.zhao, deepthi,
r58472, geoff, linux-kernel, srivatsa.bhat, schwidefsky,
linuxppc-dev
In-Reply-To: <52F11ECE.605@linux.vnet.ibm.com>
On Tue, 4 Feb 2014, Preeti U Murthy wrote:
> Do you want me to send out the next version with the above corrections
> including the patch added to this thread where we handle archs setting
> the CPUIDLE_FLAG_TIMER_STOP flag?
Yes please.
^ permalink raw reply
* Re: [PATCH] slub: Don't throw away partial remote slabs if there is no local memory
From: Christoph Lameter @ 2014-02-04 20:39 UTC (permalink / raw)
To: Nishanth Aravamudan
Cc: Han Pingtian, mpm, penberg, linux-mm, paulus, Anton Blanchard,
David Rientjes, Joonsoo Kim, linuxppc-dev, Wanpeng Li
In-Reply-To: <20140204072630.GB10101@linux.vnet.ibm.com>
On Mon, 3 Feb 2014, Nishanth Aravamudan wrote:
> Yes, sorry for my lack of clarity. I meant Joonsoo's latest patch for
> the $SUBJECT issue.
Hmmm... I am not sure that this is a general solution. The fallback to
other nodes can not only occur because a node has no memory as his patch
assumes.
If the target node allocation fails (for whatever reason) then I would
recommend for simplicities sake to change the target node to NUMA_NO_NODE
and just take whatever is in the current cpu slab. A more complex solution
would be to look through partial lists in increasing distance to find a
partially used slab that is reasonable close to the current node. Slab has
logic like that in fallback_alloc(). Slubs get_any_partial() function does
something close to what you want.
^ permalink raw reply
* [GIT PULL] tree-wide: clean up no longer required #include <linux/init.h>
From: Paul Gortmaker @ 2014-02-04 20:51 UTC (permalink / raw)
To: torvalds
Cc: linux-arch, linux-mips, linux-m68k, rusty, linux-ia64, kvm,
linux-s390, netdev, x86, gregkh, Paul Gortmaker, linux-alpha,
sparclinux, sfr, akpm, linuxppc-dev, linux-arm-kernel
We've had this in linux-next for 2+ weeks (thanks Stephen!) as a
linux-stable like queue of patches, and as can be seen here:
https://git.kernel.org/pub/scm/linux/kernel/git/paulg/init.git
most of the changes in the last week have been trivial adding acks
or dropping patches that maintainers decided to take themselves.
With -rc1 now containing what was in linux-next, the queue applies
to that baseline w/o issue, and I've redone comprehensive multi
arch build testing on the -rc1 baseline as a final sanity check.
Original RFC discussion and patch posting is here, if needed:
https://lkml.org/lkml/2014/1/21/434
Suggested merge text follows:
----------------------------8<-----------------------------
Summary - We removed cpuinit and devinit, which left ~2000 instances
of include <linux/init.h> that were no longer needed. To fully enable
this removal/cleanup, we relocate module_init() from init.h into
module.h. Multi arch/multi config build testing on linux-next has
been used to find and fix any implicit header dependencies prior to
deploying the actual init.h --> module.h move, to preserve bisection.
Additional details:
module_init/module_exit and friends moved to module.h
-----------------------------------------------------
Aside from enabling this init.h cleanup to extend into modular files,
it actually does make sense. For all modules will use some form of
our initfunc processing/categorization, but not all initfunc users
will be necessarily using modular functionality. So we move these
module related macros to module.h and ensure module.h sources init.h
module_init in non modular code:
--------------------------------
This series uncovered that we are enabling people to use module_init
in non-modular code. While that works fine, there are at least three
reasons why it probably should not be encouraged:
1) it makes a casual reader of the code assume the code is modular
even though it is obj-y (builtin) or controlled by a bool Kconfig.
2) it makes it too easy to add dead code in a function that is handed
to module_exit() -- [more on that below]
3) it breaks our ability to use priority sorted initcalls properly
[more on that below.]
4) on some files, the use of module.h vs. init.h can cost a ~10%
increase in the number of lines output from CPP.
After this change, a new coder who tries to make use of module_init in
non modular code would find themselves also needing to include the
module.h header. At which point the odds are greater that they would
ask themselves "Am I doing this right? I shouldn't need this."
Note that existing non-modular code that already includes module.h and
uses module_init doesn't get fixed here, since they already build w/o
errors triggered by this change; we'll have to hunt them down later.
module_init and initcall ordering:
----------------------------------
We have a group of about ten priority sorted initcalls, that are
called in init/main.c after most of the hard coded/direct calls
have been processed. These serve the purpose of avoiding everyone
poking at init/main.c to hook in their init sequence. The bins are:
pure_initcall 0
core_initcall 1
postcore_initcall 2
arch_initcall 3
subsys_initcall 4
fs_initcall 5
device_initcall 6
late_initcall 7
These are meant to eventually replace users of the non specific
priority "__initcall" which currently maps onto device_initcall.
This is of interest, because in non-modular code, cpp does this:
module_init --> __initcall --> device_initcall
So all module_init() land in the device_initcall bucket, rather late
in the sequence. That makes sense, since if it was a module, the init
could be real late (days, weeks after boot). But now imagine you add
support for some non-modular bus/arch/infrastructure (say for e.g. PCI)
and you use module_init for it. That means anybody else who wants
to use your subsystem can't do so if they use an initcall of 0 --> 5
priority. For a real world example of this, see patch #1 in this series:
https://lkml.org/lkml/2014/1/14/809
We don't want to force code that is clearly arch or subsys or fs
specific to have to use the device_initcall just because something
else has been mistakenly put (or left) in that bucket. So a couple of
changes do actually change the initcall level where it is inevitably
appropriate to do so. Those are called out explicitly in their
respective commit logs.
module_exit and dead code
-------------------------
Built in code will never have an opportunity to call functions that
are registered with module_exit(), so any cases of that uncovered in
this series delete that dead code. Note that any built-in code that
was already including module.h and using module_exit won't have shown
up as breakage on the build coverage of this series, so we'll have to
find those independently later. It looks like there may be quite a
few that are invisibly created via module_platform_driver -- a macro
that creates module_init and module_exit automatically. We may want
to consider relocating module_platform_driver into module.h later...
cpuinit
-------
To finalize the removal of cpuinit, which was done several releases
ago, we remove the remaining stub functions from init.h in this
series. We've seen one or two "users" try to creep back in, so this
will close the door on that chapter and prevent creep.
----------------------------8<-----------------------------
Thanks,
Paul.
---
Cc: linux-alpha@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-ia64@vger.kernel.org
Cc: linux-m68k@lists.linux-m68k.org
Cc: linux-mips@linux-mips.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-s390@vger.kernel.org
Cc: sparclinux@vger.kernel.org
Cc: x86@kernel.org
Cc: netdev@vger.kernel.org
Cc: kvm@vger.kernel.org
Cc: sfr@canb.auug.org.au
Cc: rusty@rustcorp.com.au
Cc: gregkh@linuxfoundation.org
Cc: akpm@linux-foundation.org
Cc: torvalds@linux-foundation.org
The following changes since commit 38dbfb59d1175ef458d006556061adeaa8751b72:
Linus 3.14-rc1 (2014-02-02 16:42:13 -0800)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux.git tags/init-cleanup
for you to fetch changes up to a830e2e2777c893e5bfdaa370d6375023e8cd2a5:
include: remove needless instances of <linux/init.h> (2014-02-03 16:39:14 -0500)
----------------------------------------------------------------
Cleanup of <linux/init.h> for 3.14-rc1
----------------------------------------------------------------
Paul Gortmaker (77):
init: delete the __cpuinit related stubs
kernel: audit/fix non-modular users of module_init in core code
mm: replace module_init usages with subsys_initcall in nommu.c
fs/notify: don't use module_init for non-modular inotify_user code
netfilter: don't use module_init/exit in core IPV4 code
x86: don't use module_init in non-modular intel_mid_vrtc.c
x86: don't use module_init for non-modular core bootflag code
x86: replace __init_or_module with __init in non-modular vsmp_64.c
x86: don't use module_init in non-modular devicetree.c code
drivers/tty/hvc: don't use module_init in non-modular hyp. console code
staging: don't use module_init in non-modular ion_dummy_driver.c
powerpc: use device_initcall for registering rtc devices
powerpc: use subsys_initcall for Freescale Local Bus
powerpc: don't use module_init for non-modular core hugetlb code
powerpc: don't use module_init in non-modular 83xx suspend code
arm: include module.h in drivers/bus/omap_l3_smx.c
arm: fix implicit module.h use in mach-at91 gpio.h
arm: fix implicit #include <linux/init.h> in entry asm.
arm: mach-s3c64xx mach-crag6410-module.c is not modular
arm: use subsys_initcall in non-modular pl320 IPC code
arm: don't use module_init in non-modular mach-vexpress/spc.c code
alpha: don't use module_init for non-modular core code
m68k: don't use module_init in non-modular mvme16x/rtc.c code
ia64: don't use module_init for non-modular core kernel/mca.c code
ia64: don't use module_init in non-modular sim/simscsi.c code
mips: make loongsoon serial driver explicitly modular
mips: don't use module_init in non-modular sead3-mtd.c code
cris: don't use module_init for non-modular core intmem.c code
parisc: don't use module_init for non-modular core pdc_cons code
parisc64: don't use module_init for non-modular core perf code
mn10300: don't use module_init in non-modular flash.c code
sh: don't use module_init in non-modular psw.c code
sh: mach-highlander/psw.c is tristate and should use module.h
xtensa: don't use module_init for non-modular core network.c code
drivers/clk: don't use module_init in clk-nomadik.c which is non-modular
cpuidle: don't use modular platform register in non-modular ARM drivers
drivers/platform: don't use modular register in non-modular pdev_bus.c
module: relocate module_init from init.h to module.h
logo: emit "#include <linux/init.h> in autogenerated C file
arm: delete non-required instances of include <linux/init.h>
mips: restore init.h usage to arch/mips/ar7/time.c
s390: delete non-required instances of include <linux/init.h>
alpha: delete non-required instances of <linux/init.h>
powerpc: delete another unrequired instance of <linux/init.h>
arm64: delete non-required instances of <linux/init.h>
watchdog: delete non-required instances of include <linux/init.h>
video: delete non-required instances of include <linux/init.h>
rtc: delete non-required instances of include <linux/init.h>
scsi: delete non-required instances of include <linux/init.h>
spi: delete non-required instances of include <linux/init.h>
acpi: delete non-required instances of include <linux/init.h>
drivers/power: delete non-required instances of include <linux/init.h>
drivers/media: delete non-required instances of include <linux/init.h>
drivers/ata: delete non-required instances of include <linux/init.h>
drivers/hwmon: delete non-required instances of include <linux/init.h>
drivers/pinctrl: delete non-required instances of include <linux/init.h>
drivers/isdn: delete non-required instances of include <linux/init.h>
drivers/leds: delete non-required instances of include <linux/init.h>
drivers/pcmcia: delete non-required instances of include <linux/init.h>
drivers/char: delete non-required instances of include <linux/init.h>
drivers/infiniband: delete non-required instances of include <linux/init.h>
drivers/mfd: delete non-required instances of include <linux/init.h>
drivers/gpio: delete non-required instances of include <linux/init.h>
drivers/bluetooth: delete non-required instances of include <linux/init.h>
drivers/mmc: delete non-required instances of include <linux/init.h>
drivers/crypto: delete non-required instances of include <linux/init.h>
drivers/platform: delete non-required instances of include <linux/init.h>
drivers/misc: delete non-required instances of include <linux/init.h>
drivers/edac: delete non-required instances of include <linux/init.h>
drivers/macintosh: delete non-required instances of include <linux/init.h>
drivers/base: delete non-required instances of include <linux/init.h>
drivers/cpufreq: delete non-required instances of <linux/init.h>
drivers/pci: delete non-required instances of <linux/init.h>
drivers/dma: delete non-required instances of <linux/init.h>
drivers/gpu: delete non-required instances of <linux/init.h>
drivers: delete remaining non-required instances of <linux/init.h>
include: remove needless instances of <linux/init.h>
arch/alpha/kernel/err_ev6.c | 1 -
arch/alpha/kernel/irq.c | 1 -
arch/alpha/kernel/srmcons.c | 3 +-
arch/alpha/kernel/traps.c | 1 -
arch/alpha/oprofile/op_model_ev4.c | 1 -
arch/alpha/oprofile/op_model_ev5.c | 1 -
arch/alpha/oprofile/op_model_ev6.c | 1 -
arch/alpha/oprofile/op_model_ev67.c | 1 -
arch/arm/common/dmabounce.c | 1 -
arch/arm/firmware/trusted_foundations.c | 1 -
arch/arm/include/asm/arch_timer.h | 1 -
arch/arm/kernel/entry-armv.S | 2 +
arch/arm/kernel/entry-header.S | 1 -
arch/arm/kernel/hyp-stub.S | 1 -
arch/arm/kernel/suspend.c | 1 -
arch/arm/kernel/unwind.c | 1 -
arch/arm/mach-at91/include/mach/gpio.h | 1 +
arch/arm/mach-cns3xxx/pm.c | 1 -
arch/arm/mach-exynos/headsmp.S | 1 -
arch/arm/mach-footbridge/personal.c | 1 -
arch/arm/mach-imx/headsmp.S | 1 -
arch/arm/mach-imx/iomux-v3.c | 1 -
arch/arm/mach-iop33x/uart.c | 1 -
arch/arm/mach-msm/headsmp.S | 1 -
arch/arm/mach-msm/proc_comm.h | 1 -
arch/arm/mach-mvebu/headsmp.S | 1 -
arch/arm/mach-netx/fb.c | 1 -
arch/arm/mach-netx/pfifo.c | 1 -
arch/arm/mach-netx/xc.c | 1 -
arch/arm/mach-nspire/clcd.c | 1 -
arch/arm/mach-omap1/fpga.c | 1 -
arch/arm/mach-omap1/include/mach/serial.h | 1 -
arch/arm/mach-omap2/omap-headsmp.S | 1 -
arch/arm/mach-omap2/omap3-restart.c | 1 -
arch/arm/mach-omap2/vc3xxx_data.c | 1 -
arch/arm/mach-omap2/vc44xx_data.c | 1 -
arch/arm/mach-omap2/vp3xxx_data.c | 1 -
arch/arm/mach-omap2/vp44xx_data.c | 1 -
arch/arm/mach-prima2/headsmp.S | 1 -
arch/arm/mach-pxa/clock-pxa2xx.c | 1 -
arch/arm/mach-pxa/clock-pxa3xx.c | 1 -
arch/arm/mach-pxa/corgi_pm.c | 1 -
arch/arm/mach-pxa/mfp-pxa3xx.c | 1 -
arch/arm/mach-pxa/spitz_pm.c | 1 -
arch/arm/mach-s3c24xx/clock-s3c244x.c | 1 -
arch/arm/mach-s3c24xx/iotiming-s3c2410.c | 1 -
arch/arm/mach-s3c24xx/iotiming-s3c2412.c | 1 -
arch/arm/mach-s3c24xx/irq-pm.c | 1 -
arch/arm/mach-s3c24xx/pm.c | 1 -
arch/arm/mach-s3c64xx/mach-crag6410-module.c | 2 +-
arch/arm/mach-s5p64x0/clock.c | 1 -
arch/arm/mach-sa1100/ssp.c | 1 -
arch/arm/mach-shmobile/headsmp-scu.S | 1 -
arch/arm/mach-shmobile/headsmp.S | 1 -
arch/arm/mach-shmobile/platsmp.c | 1 -
arch/arm/mach-shmobile/sleep-sh7372.S | 1 -
arch/arm/mach-socfpga/headsmp.S | 1 -
arch/arm/mach-sti/headsmp.S | 1 -
arch/arm/mach-sunxi/headsmp.S | 1 -
arch/arm/mach-tegra/flowctrl.c | 1 -
arch/arm/mach-tegra/headsmp.S | 1 -
arch/arm/mach-tegra/reset-handler.S | 1 -
arch/arm/mach-u300/dummyspichip.c | 1 -
arch/arm/mach-ux500/board-mop500-audio.c | 1 -
arch/arm/mach-ux500/headsmp.S | 1 -
arch/arm/mach-versatile/versatile_ab.c | 1 -
arch/arm/mach-vexpress/spc.c | 2 +-
arch/arm/mach-zynq/headsmp.S | 1 -
arch/arm/mm/hugetlbpage.c | 1 -
arch/arm/plat-iop/i2c.c | 1 -
arch/arm/plat-samsung/pm-check.c | 1 -
arch/arm/plat-samsung/pm-gpio.c | 1 -
arch/arm/plat-samsung/s5p-irq-pm.c | 1 -
arch/arm/plat-versatile/headsmp.S | 1 -
arch/arm/plat-versatile/platsmp.c | 1 -
arch/arm/vfp/entry.S | 2 +
arch/arm64/include/asm/arch_timer.h | 1 -
arch/arm64/kernel/cputable.c | 2 -
arch/arm64/kernel/entry.S | 1 -
arch/arm64/kernel/hyp-stub.S | 1 -
arch/arm64/kernel/process.c | 1 -
arch/arm64/kernel/ptrace.c | 1 -
arch/arm64/kernel/smp_spin_table.c | 1 -
arch/arm64/kernel/vdso/vdso.S | 1 -
arch/arm64/lib/delay.c | 1 -
arch/arm64/mm/cache.S | 1 -
arch/arm64/mm/proc.S | 1 -
arch/cris/arch-v32/mm/intmem.c | 3 +-
arch/ia64/hp/sim/simscsi.c | 11 +---
arch/ia64/sn/kernel/mca.c | 3 +-
arch/m68k/mvme16x/rtc.c | 2 +-
arch/mips/ar7/time.c | 1 +
arch/mips/loongson/common/serial.c | 9 ++-
arch/mips/mti-sead3/sead3-mtd.c | 3 +-
arch/mn10300/unit-asb2303/flash.c | 3 +-
arch/parisc/kernel/pdc_cons.c | 3 +-
arch/parisc/kernel/perf.c | 3 +-
arch/powerpc/kernel/time.c | 2 +-
arch/powerpc/mm/hugetlbpage.c | 2 +-
arch/powerpc/platforms/83xx/suspend.c | 3 +-
arch/powerpc/platforms/ps3/time.c | 3 +-
arch/powerpc/sysdev/fsl_lbc.c | 2 +-
arch/powerpc/sysdev/indirect_pci.c | 1 -
arch/sh/boards/mach-highlander/psw.c | 2 +-
arch/sh/boards/mach-landisk/psw.c | 2 +-
arch/x86/kernel/bootflag.c | 2 +-
arch/x86/kernel/devicetree.c | 2 +-
arch/x86/kernel/vsmp_64.c | 2 +-
arch/x86/platform/intel-mid/intel_mid_vrtc.c | 3 +-
arch/xtensa/platforms/iss/network.c | 4 +-
drivers/acpi/apei/apei-base.c | 1 -
drivers/acpi/button.c | 1 -
[ ... snip ~1000 lines of trivial driver diffstat ... ]
drivers/watchdog/wdt_pci.c | 1 -
drivers/xen/xen-stub.c | 1 -
fs/notify/inotify/inotify_user.c | 4 +-
include/drm/drmP.h | 1 -
include/linux/fb.h | 1 -
include/linux/ide.h | 1 -
include/linux/init.h | 77 ----------------------
include/linux/kdb.h | 1 -
include/linux/linux_logo.h | 3 -
include/linux/lsm_audit.h | 1 -
include/linux/module.h | 72 ++++++++++++++++++++
include/linux/moduleparam.h | 1 -
include/linux/netfilter.h | 1 -
include/linux/nls.h | 2 +-
include/linux/percpu_ida.h | 1 -
include/linux/profile.h | 1 -
include/linux/pstore_ram.h | 1 -
include/linux/usb/gadget.h | 1 -
include/xen/xenbus.h | 1 -
kernel/hung_task.c | 3 +-
kernel/kexec.c | 4 +-
kernel/profile.c | 2 +-
kernel/sched/stats.c | 2 +-
kernel/user.c | 3 +-
kernel/user_namespace.c | 2 +-
mm/nommu.c | 4 +-
net/ipv4/netfilter.c | 9 +--
scripts/pnmtologo.c | 1 +
scripts/tags.sh | 2 +-
1115 files changed, 148 insertions(+), 1273 deletions(-)
^ permalink raw reply
* Re: [GIT PULL] tree-wide: clean up no longer required #include <linux/init.h>
From: Paul Gortmaker @ 2014-02-04 21:30 UTC (permalink / raw)
To: Linus Torvalds
Cc: linux-arch, linux-mips, linux-m68k, rusty, linux-ia64, kvm, sfr,
gregkh, x86, netdev, linux-alpha, sparclinux, akpm, linuxppc-dev,
linux-arm-kernel, linux-s390
In-Reply-To: <1391547118-21967-1-git-send-email-paul.gortmaker@windriver.com>
[-- Attachment #1: Type: text/plain, Size: 21587 bytes --]
On Feb 4, 2014 3:52 PM, "Paul Gortmaker" <paul.gortmaker@windriver.com>
wrote:
>
> We've had this in linux-next for 2+ weeks (thanks Stephen!) as a
> linux-stable like queue of patches, and as can be seen here:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/paulg/init.git
Argh, above link is meant for cloning, not viewing.
This should be better...
https://git.kernel.org/cgit/linux/kernel/git/paulg/init.git/
Thanks,
Paul.
--
> most of the changes in the last week have been trivial adding acks
> or dropping patches that maintainers decided to take themselves.
>
> With -rc1 now containing what was in linux-next, the queue applies
> to that baseline w/o issue, and I've redone comprehensive multi
> arch build testing on the -rc1 baseline as a final sanity check.
>
> Original RFC discussion and patch posting is here, if needed:
>
> https://lkml.org/lkml/2014/1/21/434
>
> Suggested merge text follows:
>
> ----------------------------8<-----------------------------
> Summary - We removed cpuinit and devinit, which left ~2000 instances
> of include <linux/init.h> that were no longer needed. To fully enable
> this removal/cleanup, we relocate module_init() from init.h into
> module.h. Multi arch/multi config build testing on linux-next has
> been used to find and fix any implicit header dependencies prior to
> deploying the actual init.h --> module.h move, to preserve bisection.
>
> Additional details:
>
> module_init/module_exit and friends moved to module.h
> -----------------------------------------------------
> Aside from enabling this init.h cleanup to extend into modular files,
> it actually does make sense. For all modules will use some form of
> our initfunc processing/categorization, but not all initfunc users
> will be necessarily using modular functionality. So we move these
> module related macros to module.h and ensure module.h sources init.h
>
>
> module_init in non modular code:
> --------------------------------
> This series uncovered that we are enabling people to use module_init
> in non-modular code. While that works fine, there are at least three
> reasons why it probably should not be encouraged:
>
> 1) it makes a casual reader of the code assume the code is modular
> even though it is obj-y (builtin) or controlled by a bool Kconfig.
>
> 2) it makes it too easy to add dead code in a function that is handed
> to module_exit() -- [more on that below]
>
> 3) it breaks our ability to use priority sorted initcalls properly
> [more on that below.]
>
> 4) on some files, the use of module.h vs. init.h can cost a ~10%
> increase in the number of lines output from CPP.
>
> After this change, a new coder who tries to make use of module_init in
> non modular code would find themselves also needing to include the
> module.h header. At which point the odds are greater that they would
> ask themselves "Am I doing this right? I shouldn't need this."
>
> Note that existing non-modular code that already includes module.h and
> uses module_init doesn't get fixed here, since they already build w/o
> errors triggered by this change; we'll have to hunt them down later.
>
>
> module_init and initcall ordering:
> ----------------------------------
> We have a group of about ten priority sorted initcalls, that are
> called in init/main.c after most of the hard coded/direct calls
> have been processed. These serve the purpose of avoiding everyone
> poking at init/main.c to hook in their init sequence. The bins are:
>
> pure_initcall 0
> core_initcall 1
> postcore_initcall 2
> arch_initcall 3
> subsys_initcall 4
> fs_initcall 5
> device_initcall 6
> late_initcall 7
>
> These are meant to eventually replace users of the non specific
> priority "__initcall" which currently maps onto device_initcall.
> This is of interest, because in non-modular code, cpp does this:
>
> module_init --> __initcall --> device_initcall
>
> So all module_init() land in the device_initcall bucket, rather late
> in the sequence. That makes sense, since if it was a module, the init
> could be real late (days, weeks after boot). But now imagine you add
> support for some non-modular bus/arch/infrastructure (say for e.g. PCI)
> and you use module_init for it. That means anybody else who wants
> to use your subsystem can't do so if they use an initcall of 0 --> 5
> priority. For a real world example of this, see patch #1 in this series:
>
> https://lkml.org/lkml/2014/1/14/809
>
> We don't want to force code that is clearly arch or subsys or fs
> specific to have to use the device_initcall just because something
> else has been mistakenly put (or left) in that bucket. So a couple of
> changes do actually change the initcall level where it is inevitably
> appropriate to do so. Those are called out explicitly in their
> respective commit logs.
>
>
> module_exit and dead code
> -------------------------
> Built in code will never have an opportunity to call functions that
> are registered with module_exit(), so any cases of that uncovered in
> this series delete that dead code. Note that any built-in code that
> was already including module.h and using module_exit won't have shown
> up as breakage on the build coverage of this series, so we'll have to
> find those independently later. It looks like there may be quite a
> few that are invisibly created via module_platform_driver -- a macro
> that creates module_init and module_exit automatically. We may want
> to consider relocating module_platform_driver into module.h later...
>
>
> cpuinit
> -------
> To finalize the removal of cpuinit, which was done several releases
> ago, we remove the remaining stub functions from init.h in this
> series. We've seen one or two "users" try to creep back in, so this
> will close the door on that chapter and prevent creep.
>
> ----------------------------8<-----------------------------
>
> Thanks,
> Paul.
> ---
>
> Cc: linux-alpha@vger.kernel.org
> Cc: linux-arch@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linux-ia64@vger.kernel.org
> Cc: linux-m68k@lists.linux-m68k.org
> Cc: linux-mips@linux-mips.org
> Cc: linuxppc-dev@lists.ozlabs.org
> Cc: linux-s390@vger.kernel.org
> Cc: sparclinux@vger.kernel.org
> Cc: x86@kernel.org
> Cc: netdev@vger.kernel.org
> Cc: kvm@vger.kernel.org
> Cc: sfr@canb.auug.org.au
> Cc: rusty@rustcorp.com.au
> Cc: gregkh@linuxfoundation.org
> Cc: akpm@linux-foundation.org
> Cc: torvalds@linux-foundation.org
>
>
> The following changes since commit
38dbfb59d1175ef458d006556061adeaa8751b72:
>
> Linus 3.14-rc1 (2014-02-02 16:42:13 -0800)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux.gittags/init-cleanup
>
> for you to fetch changes up to a830e2e2777c893e5bfdaa370d6375023e8cd2a5:
>
> include: remove needless instances of <linux/init.h> (2014-02-03
16:39:14 -0500)
>
> ----------------------------------------------------------------
> Cleanup of <linux/init.h> for 3.14-rc1
>
> ----------------------------------------------------------------
> Paul Gortmaker (77):
> init: delete the __cpuinit related stubs
> kernel: audit/fix non-modular users of module_init in core code
> mm: replace module_init usages with subsys_initcall in nommu.c
> fs/notify: don't use module_init for non-modular inotify_user code
> netfilter: don't use module_init/exit in core IPV4 code
> x86: don't use module_init in non-modular intel_mid_vrtc.c
> x86: don't use module_init for non-modular core bootflag code
> x86: replace __init_or_module with __init in non-modular vsmp_64.c
> x86: don't use module_init in non-modular devicetree.c code
> drivers/tty/hvc: don't use module_init in non-modular hyp. console
code
> staging: don't use module_init in non-modular ion_dummy_driver.c
> powerpc: use device_initcall for registering rtc devices
> powerpc: use subsys_initcall for Freescale Local Bus
> powerpc: don't use module_init for non-modular core hugetlb code
> powerpc: don't use module_init in non-modular 83xx suspend code
> arm: include module.h in drivers/bus/omap_l3_smx.c
> arm: fix implicit module.h use in mach-at91 gpio.h
> arm: fix implicit #include <linux/init.h> in entry asm.
> arm: mach-s3c64xx mach-crag6410-module.c is not modular
> arm: use subsys_initcall in non-modular pl320 IPC code
> arm: don't use module_init in non-modular mach-vexpress/spc.c code
> alpha: don't use module_init for non-modular core code
> m68k: don't use module_init in non-modular mvme16x/rtc.c code
> ia64: don't use module_init for non-modular core kernel/mca.c code
> ia64: don't use module_init in non-modular sim/simscsi.c code
> mips: make loongsoon serial driver explicitly modular
> mips: don't use module_init in non-modular sead3-mtd.c code
> cris: don't use module_init for non-modular core intmem.c code
> parisc: don't use module_init for non-modular core pdc_cons code
> parisc64: don't use module_init for non-modular core perf code
> mn10300: don't use module_init in non-modular flash.c code
> sh: don't use module_init in non-modular psw.c code
> sh: mach-highlander/psw.c is tristate and should use module.h
> xtensa: don't use module_init for non-modular core network.c code
> drivers/clk: don't use module_init in clk-nomadik.c which is
non-modular
> cpuidle: don't use modular platform register in non-modular ARM
drivers
> drivers/platform: don't use modular register in non-modular
pdev_bus.c
> module: relocate module_init from init.h to module.h
> logo: emit "#include <linux/init.h> in autogenerated C file
> arm: delete non-required instances of include <linux/init.h>
> mips: restore init.h usage to arch/mips/ar7/time.c
> s390: delete non-required instances of include <linux/init.h>
> alpha: delete non-required instances of <linux/init.h>
> powerpc: delete another unrequired instance of <linux/init.h>
> arm64: delete non-required instances of <linux/init.h>
> watchdog: delete non-required instances of include <linux/init.h>
> video: delete non-required instances of include <linux/init.h>
> rtc: delete non-required instances of include <linux/init.h>
> scsi: delete non-required instances of include <linux/init.h>
> spi: delete non-required instances of include <linux/init.h>
> acpi: delete non-required instances of include <linux/init.h>
> drivers/power: delete non-required instances of include
<linux/init.h>
> drivers/media: delete non-required instances of include
<linux/init.h>
> drivers/ata: delete non-required instances of include <linux/init.h>
> drivers/hwmon: delete non-required instances of include
<linux/init.h>
> drivers/pinctrl: delete non-required instances of include
<linux/init.h>
> drivers/isdn: delete non-required instances of include
<linux/init.h>
> drivers/leds: delete non-required instances of include
<linux/init.h>
> drivers/pcmcia: delete non-required instances of include
<linux/init.h>
> drivers/char: delete non-required instances of include
<linux/init.h>
> drivers/infiniband: delete non-required instances of include
<linux/init.h>
> drivers/mfd: delete non-required instances of include <linux/init.h>
> drivers/gpio: delete non-required instances of include
<linux/init.h>
> drivers/bluetooth: delete non-required instances of include
<linux/init.h>
> drivers/mmc: delete non-required instances of include <linux/init.h>
> drivers/crypto: delete non-required instances of include
<linux/init.h>
> drivers/platform: delete non-required instances of include
<linux/init.h>
> drivers/misc: delete non-required instances of include
<linux/init.h>
> drivers/edac: delete non-required instances of include
<linux/init.h>
> drivers/macintosh: delete non-required instances of include
<linux/init.h>
> drivers/base: delete non-required instances of include
<linux/init.h>
> drivers/cpufreq: delete non-required instances of <linux/init.h>
> drivers/pci: delete non-required instances of <linux/init.h>
> drivers/dma: delete non-required instances of <linux/init.h>
> drivers/gpu: delete non-required instances of <linux/init.h>
> drivers: delete remaining non-required instances of <linux/init.h>
> include: remove needless instances of <linux/init.h>
>
> arch/alpha/kernel/err_ev6.c | 1 -
> arch/alpha/kernel/irq.c | 1 -
> arch/alpha/kernel/srmcons.c | 3 +-
> arch/alpha/kernel/traps.c | 1 -
> arch/alpha/oprofile/op_model_ev4.c | 1 -
> arch/alpha/oprofile/op_model_ev5.c | 1 -
> arch/alpha/oprofile/op_model_ev6.c | 1 -
> arch/alpha/oprofile/op_model_ev67.c | 1 -
> arch/arm/common/dmabounce.c | 1 -
> arch/arm/firmware/trusted_foundations.c | 1 -
> arch/arm/include/asm/arch_timer.h | 1 -
> arch/arm/kernel/entry-armv.S | 2 +
> arch/arm/kernel/entry-header.S | 1 -
> arch/arm/kernel/hyp-stub.S | 1 -
> arch/arm/kernel/suspend.c | 1 -
> arch/arm/kernel/unwind.c | 1 -
> arch/arm/mach-at91/include/mach/gpio.h | 1 +
> arch/arm/mach-cns3xxx/pm.c | 1 -
> arch/arm/mach-exynos/headsmp.S | 1 -
> arch/arm/mach-footbridge/personal.c | 1 -
> arch/arm/mach-imx/headsmp.S | 1 -
> arch/arm/mach-imx/iomux-v3.c | 1 -
> arch/arm/mach-iop33x/uart.c | 1 -
> arch/arm/mach-msm/headsmp.S | 1 -
> arch/arm/mach-msm/proc_comm.h | 1 -
> arch/arm/mach-mvebu/headsmp.S | 1 -
> arch/arm/mach-netx/fb.c | 1 -
> arch/arm/mach-netx/pfifo.c | 1 -
> arch/arm/mach-netx/xc.c | 1 -
> arch/arm/mach-nspire/clcd.c | 1 -
> arch/arm/mach-omap1/fpga.c | 1 -
> arch/arm/mach-omap1/include/mach/serial.h | 1 -
> arch/arm/mach-omap2/omap-headsmp.S | 1 -
> arch/arm/mach-omap2/omap3-restart.c | 1 -
> arch/arm/mach-omap2/vc3xxx_data.c | 1 -
> arch/arm/mach-omap2/vc44xx_data.c | 1 -
> arch/arm/mach-omap2/vp3xxx_data.c | 1 -
> arch/arm/mach-omap2/vp44xx_data.c | 1 -
> arch/arm/mach-prima2/headsmp.S | 1 -
> arch/arm/mach-pxa/clock-pxa2xx.c | 1 -
> arch/arm/mach-pxa/clock-pxa3xx.c | 1 -
> arch/arm/mach-pxa/corgi_pm.c | 1 -
> arch/arm/mach-pxa/mfp-pxa3xx.c | 1 -
> arch/arm/mach-pxa/spitz_pm.c | 1 -
> arch/arm/mach-s3c24xx/clock-s3c244x.c | 1 -
> arch/arm/mach-s3c24xx/iotiming-s3c2410.c | 1 -
> arch/arm/mach-s3c24xx/iotiming-s3c2412.c | 1 -
> arch/arm/mach-s3c24xx/irq-pm.c | 1 -
> arch/arm/mach-s3c24xx/pm.c | 1 -
> arch/arm/mach-s3c64xx/mach-crag6410-module.c | 2 +-
> arch/arm/mach-s5p64x0/clock.c | 1 -
> arch/arm/mach-sa1100/ssp.c | 1 -
> arch/arm/mach-shmobile/headsmp-scu.S | 1 -
> arch/arm/mach-shmobile/headsmp.S | 1 -
> arch/arm/mach-shmobile/platsmp.c | 1 -
> arch/arm/mach-shmobile/sleep-sh7372.S | 1 -
> arch/arm/mach-socfpga/headsmp.S | 1 -
> arch/arm/mach-sti/headsmp.S | 1 -
> arch/arm/mach-sunxi/headsmp.S | 1 -
> arch/arm/mach-tegra/flowctrl.c | 1 -
> arch/arm/mach-tegra/headsmp.S | 1 -
> arch/arm/mach-tegra/reset-handler.S | 1 -
> arch/arm/mach-u300/dummyspichip.c | 1 -
> arch/arm/mach-ux500/board-mop500-audio.c | 1 -
> arch/arm/mach-ux500/headsmp.S | 1 -
> arch/arm/mach-versatile/versatile_ab.c | 1 -
> arch/arm/mach-vexpress/spc.c | 2 +-
> arch/arm/mach-zynq/headsmp.S | 1 -
> arch/arm/mm/hugetlbpage.c | 1 -
> arch/arm/plat-iop/i2c.c | 1 -
> arch/arm/plat-samsung/pm-check.c | 1 -
> arch/arm/plat-samsung/pm-gpio.c | 1 -
> arch/arm/plat-samsung/s5p-irq-pm.c | 1 -
> arch/arm/plat-versatile/headsmp.S | 1 -
> arch/arm/plat-versatile/platsmp.c | 1 -
> arch/arm/vfp/entry.S | 2 +
> arch/arm64/include/asm/arch_timer.h | 1 -
> arch/arm64/kernel/cputable.c | 2 -
> arch/arm64/kernel/entry.S | 1 -
> arch/arm64/kernel/hyp-stub.S | 1 -
> arch/arm64/kernel/process.c | 1 -
> arch/arm64/kernel/ptrace.c | 1 -
> arch/arm64/kernel/smp_spin_table.c | 1 -
> arch/arm64/kernel/vdso/vdso.S | 1 -
> arch/arm64/lib/delay.c | 1 -
> arch/arm64/mm/cache.S | 1 -
> arch/arm64/mm/proc.S | 1 -
> arch/cris/arch-v32/mm/intmem.c | 3 +-
> arch/ia64/hp/sim/simscsi.c | 11 +---
> arch/ia64/sn/kernel/mca.c | 3 +-
> arch/m68k/mvme16x/rtc.c | 2 +-
> arch/mips/ar7/time.c | 1 +
> arch/mips/loongson/common/serial.c | 9 ++-
> arch/mips/mti-sead3/sead3-mtd.c | 3 +-
> arch/mn10300/unit-asb2303/flash.c | 3 +-
> arch/parisc/kernel/pdc_cons.c | 3 +-
> arch/parisc/kernel/perf.c | 3 +-
> arch/powerpc/kernel/time.c | 2 +-
> arch/powerpc/mm/hugetlbpage.c | 2 +-
> arch/powerpc/platforms/83xx/suspend.c | 3 +-
> arch/powerpc/platforms/ps3/time.c | 3 +-
> arch/powerpc/sysdev/fsl_lbc.c | 2 +-
> arch/powerpc/sysdev/indirect_pci.c | 1 -
> arch/sh/boards/mach-highlander/psw.c | 2 +-
> arch/sh/boards/mach-landisk/psw.c | 2 +-
> arch/x86/kernel/bootflag.c | 2 +-
> arch/x86/kernel/devicetree.c | 2 +-
> arch/x86/kernel/vsmp_64.c | 2 +-
> arch/x86/platform/intel-mid/intel_mid_vrtc.c | 3 +-
> arch/xtensa/platforms/iss/network.c | 4 +-
> drivers/acpi/apei/apei-base.c | 1 -
> drivers/acpi/button.c | 1 -
>
> [ ... snip ~1000 lines of trivial driver diffstat ... ]
>
> drivers/watchdog/wdt_pci.c | 1 -
> drivers/xen/xen-stub.c | 1 -
> fs/notify/inotify/inotify_user.c | 4 +-
> include/drm/drmP.h | 1 -
> include/linux/fb.h | 1 -
> include/linux/ide.h | 1 -
> include/linux/init.h | 77
----------------------
> include/linux/kdb.h | 1 -
> include/linux/linux_logo.h | 3 -
> include/linux/lsm_audit.h | 1 -
> include/linux/module.h | 72
++++++++++++++++++++
> include/linux/moduleparam.h | 1 -
> include/linux/netfilter.h | 1 -
> include/linux/nls.h | 2 +-
> include/linux/percpu_ida.h | 1 -
> include/linux/profile.h | 1 -
> include/linux/pstore_ram.h | 1 -
> include/linux/usb/gadget.h | 1 -
> include/xen/xenbus.h | 1 -
> kernel/hung_task.c | 3 +-
> kernel/kexec.c | 4 +-
> kernel/profile.c | 2 +-
> kernel/sched/stats.c | 2 +-
> kernel/user.c | 3 +-
> kernel/user_namespace.c | 2 +-
> mm/nommu.c | 4 +-
> net/ipv4/netfilter.c | 9 +--
> scripts/pnmtologo.c | 1 +
> scripts/tags.sh | 2 +-
> 1115 files changed, 148 insertions(+), 1273 deletions(-)
>
[-- Attachment #2: Type: text/html, Size: 26478 bytes --]
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox