* Re: powerpc -next rebase WARNING
From: Josh Boyer @ 2012-05-22 11:03 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, Linux Kernel list
In-Reply-To: <1337661655.2779.167.camel@pasglop>
On Tue, May 22, 2012 at 12:40 AM, Benjamin Herrenschmidt
<benh@kernel.crashing.org> wrote:
> On Tue, 2012-05-22 at 11:51 +1000, Benjamin Herrenschmidt wrote:
>> Folks, bad news ... my fault.
>>
>> I accidentally forgot a --signoff on a git am command last week, meaning
>> that a pair of patches are in -next and not signed off by me.
>>
>> For various (legal) reasons that cannot go into Linus tree as-is, so I
>> have to rebase the tree to fix it.
>>
>> Sorry about that ...
>
> Note that the rebase only affects the top 3 commits, so if your
> tree is based on something older you're fine (Kumar, you seem to
> be ok, I haven't checked Josh).
Should be fine. Even if not, all 4 of its users will manage to cope.
josh
^ permalink raw reply
* Handling spin table in kdump
From: Suzuki K. Poulose @ 2012-05-22 12:42 UTC (permalink / raw)
To: kexec, linuxppc-dev; +Cc: Matthew McClintock, Sebastian Andrzej Siewior
Hi
I came across the following issue while testing Kdump on an SMP
board(Currituck) running a non-SMP kernel. Even though the kernel is UP,
the device-tree has the nodes for second CPU and the related details.
The kexec tool adds the spin table area as a reserved section in the
device tree for the dump capture kernel. This value is read from the
'cpu-release-addr'.
But now, if the spin table is not located within the 'Reserved region'
for the crash kernel, the dump capture kernel would fail to boot,
hitting a BUG in mm/bootmem.c as in [1].
This is because we try to reserve a region which is not available to the
kernel.
So I am wondering how is this handled really on an SMP board (Fsl_bookE).
There are two possible solutions :
1) Do not reserve the regions for the spin-table, as we will use
only the crashing CPU in the second kernel(maxcpus=1).
2) Add the spin-table region to the available memory regions passed
to the kernel by kexec-tools.
I have tested (1) and it works fine for me. Yet to test (2).
Thoughts ?
Thanks
Suzuki
[1] Kernel Bug
----------------
Linux version 3.3.0-rc5 (root@suzukikp.in.ibm.com) (gcc version 4.3.4
[gcc-4_3-branch revision 152973] (GCC) ) #12 Tue May 22 18:03:01 IST2
Found legacy serial port 0 for /plb/opb/serial@10000000
mem=20010000000, taddr=20010000000, irq=0, clk=1851851, speed=115200
------------[ cut here ]------------
kernel BUG at mm/bootmem.c:351!
Vector: 700 (Program Check) at [c8a61e90]
pc: c847f91c: mark_bootmem+0xa0/0x14c
lr: c8472670: do_init_bootmem+0x1ac/0x218
sp: c8a61f40
msr: 21000
current = 0xc8a4a500
pid = 0, comm = swapper
kernel BUG at mm/bootmem.c:351!
enter ? for help
[c8a61f70] c8472670 do_init_bootmem+0x1ac/0x218
[c8a61f90] c847025c setup_arch+0x1bc/0x234
[c8a61fb0] c846b62c start_kernel+0x98/0x358
[c8a61ff0] c80000b4 _start+0xb4/0xf8
^ permalink raw reply
* Re: Handling spin table in kdump
From: McClintock Matthew-B29882 @ 2012-05-22 15:34 UTC (permalink / raw)
To: Suzuki K. Poulose
Cc: linuxppc-dev@lists.ozlabs.org, Sebastian Andrzej Siewior,
kexec@lists.infradead.org
In-Reply-To: <4FBB89A2.90709@in.ibm.com>
On Tue, May 22, 2012 at 7:42 AM, Suzuki K. Poulose <suzuki@in.ibm.com> wrot=
e:
> Hi
>
> I came across the following issue while testing Kdump on an SMP
> board(Currituck) running a non-SMP kernel. Even though the kernel is UP,
> the device-tree has the nodes for second CPU and the related details.
>
>
> The kexec tool adds the spin table area as a reserved section in the devi=
ce
> tree for the dump capture kernel. This value is read from the
> 'cpu-release-addr'.
>
> But now, if the spin table is not located within the 'Reserved region' fo=
r
> the crash kernel, the dump capture kernel would fail to boot, hitting a B=
UG
> in mm/bootmem.c as in [1].
>
> This is because we try to reserve a region which is not available to the
> kernel.
>
> So I am wondering how is this handled really on an SMP board (Fsl_bookE).
>
> There are two possible solutions :
> 1) Do not reserve the regions for the spin-table, as we will use
> only the crashing CPU in the second kernel(maxcpus=3D1).
>
>
> 2) Add the spin-table region to the available memory regions passed
> to the kernel by kexec-tools.
>
> I have tested (1) and it works fine for me. Yet to test (2).
>
>
> Thoughts ?
I would think option 1 is acceptable. The crash kernel will never
attempt to use the memory outside of the crash kernel region therefore
it does not need to be reserved.
However, I thought we were able to boot SMP into the crash kernel on
our parts... not sure how that effects things (although the maxcpus=3D1
here is a perfectly acceptable and safer thing to do anyways)
-M
>
>
> Thanks
> Suzuki
>
>
>
> [1] Kernel Bug
> ----------------
>
>
> Linux version 3.3.0-rc5 (root@suzukikp.in.ibm.com) (gcc version 4.3.4
> [gcc-4_3-branch revision 152973] (GCC) ) #12 Tue May 22 18:03:01 IST2
> Found legacy serial port 0 for /plb/opb/serial@10000000
> =A0mem=3D20010000000, taddr=3D20010000000, irq=3D0, clk=3D1851851, speed=
=3D115200
> ------------[ cut here ]------------
> kernel BUG at mm/bootmem.c:351!
> Vector: 700 (Program Check) at [c8a61e90]
> =A0 =A0pc: c847f91c: mark_bootmem+0xa0/0x14c
> =A0 =A0lr: c8472670: do_init_bootmem+0x1ac/0x218
> =A0 =A0sp: c8a61f40
> =A0 msr: 21000
> =A0current =3D 0xc8a4a500
> =A0 =A0pid =A0 =3D 0, comm =3D swapper
> kernel BUG at mm/bootmem.c:351!
> enter ? for help
> [c8a61f70] c8472670 do_init_bootmem+0x1ac/0x218
> [c8a61f90] c847025c setup_arch+0x1bc/0x234
> [c8a61fb0] c846b62c start_kernel+0x98/0x358
> [c8a61ff0] c80000b4 _start+0xb4/0xf8
>
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev=
^ permalink raw reply
* Re: [PATCH] gianfar:don't add FCB length to hard_header_len
From: David Miller @ 2012-05-22 19:18 UTC (permalink / raw)
To: b06378; +Cc: netdev, linuxppc-dev
In-Reply-To: <1337677248-27792-1-git-send-email-b06378@freescale.com>
From: Jiajun Wu <b06378@freescale.com>
Date: Tue, 22 May 2012 17:00:48 +0800
> FCB(Frame Control Block) isn't the part of netdev hard header.
> Add FCB to hard_header_len will make GRO fail at MAC comparision stage.
>
> Signed-off-by: Jiajun Wu <b06378@freescale.com>
Applied, thanks.
Someone needs to go through this driver when net-next opens up
and fix all of the indentation in this driver.
^ permalink raw reply
* Re: [PATCH 1/3] of: Add prefix parameter to of_modalias_node().
From: David Daney @ 2012-05-22 19:45 UTC (permalink / raw)
To: Grant Likely
Cc: linux-mips@linux-mips.org, alsa-devel@alsa-project.org,
linux-doc@vger.kernel.org, Takashi Iwai,
devicetree-discuss@lists.ozlabs.org, Mark Brown,
Tabi Timur-B04825, linux-kernel@vger.kernel.org, Rob Herring,
Jaroslav Kysela, David Daney,
spi-devel-general@lists.sourceforge.net,
linuxppc-dev@lists.ozlabs.org, Liam Girdwood
In-Reply-To: <20120520060802.03CE73E03B8@localhost>
On 05/19/2012 11:08 PM, Grant Likely wrote:
> On Sat, 19 May 2012 23:54:36 -0600, Grant Likely<grant.likely@secretlab.ca> wrote:
>> On Fri, 11 May 2012 15:05:21 -0700, David Daney<ddaney.cavm@gmail.com> wrote:
>>> From: David Daney<david.daney@cavium.com>
>>>
>>> When generating MODALIASes, it is convenient to add things like "spi:"
>>> or "i2c:" to the front of the strings. This allows the standard
>>> modprobe to find the right driver when automatically populating bus
>>> children from the device tree structure.
>>>
>>> Add a prefix parameter, and adjust callers. For
>>> of_register_spi_devices() use the "spi:" prefix.
>>>
>>> Signed-off-by: David Daney<david.daney@cavium.com>
>>
>> Applied, thanks. Some notes below...
>
> Wait... why is this necessary?
Because in of_register_spi_devices() in of_spi.c, you do:
request_module(spi->modalias);
The string passed to request_module() must have the "spi:" prefix.
> The module type prefix isn't stored in
> the modalias value for any other bus type as far as I can see,
It is only useful with the prefix, so I though I would add it to the
stored value.
> and
> with this series it appears that the "spi:" prefix may or may not be
> present in the modalias. That doesn't look right.
Perhaps, but the with the combination of patches 1/3 and 2/3 I tried to
ensure that the prefix would always be present for SPI devices.
>
> Why isn't prefixing spi: at uevent time sufficient?
Because udev may not be loading the driver.
> IIUC, modprobe
> depends on either UEVENT or the modalias attribute to know which
> driver to probe. It does look like the attribute is missing the spi:
> prefix though. Does the following change work instead of these two
> patches?
>
No.
> diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
> index 3d8f662..da8aac7 100644
> --- a/drivers/spi/spi.c
> +++ b/drivers/spi/spi.c
> @@ -51,7 +51,7 @@ modalias_show(struct device *dev, struct device_attribute *a, char *buf)
> {
> const struct spi_device *spi = to_spi_device(dev);
>
> - return sprintf(buf, "%s\n", spi->modalias);
> + return sprintf(buf, "%s%s\n", SPI_MODULE_PREFIX, spi->modalias);
> }
>
> So, I've dropped this patch from my tree. If the change above works
> for you then I'll push it out.
>
> g.
>
^ permalink raw reply
* Re: [PATCH 1/3] of: Add prefix parameter to of_modalias_node().
From: Grant Likely @ 2012-05-22 20:09 UTC (permalink / raw)
To: David Daney
Cc: linux-mips@linux-mips.org, alsa-devel@alsa-project.org,
linux-doc@vger.kernel.org, Takashi Iwai,
devicetree-discuss@lists.ozlabs.org, Mark Brown,
Tabi Timur-B04825, linux-kernel@vger.kernel.org, Rob Herring,
Jaroslav Kysela, spi-devel-general@lists.sourceforge.net,
linuxppc-dev@lists.ozlabs.org, Liam Girdwood
In-Reply-To: <4FBBECC2.10503@gmail.com>
On Tue, May 22, 2012 at 1:45 PM, David Daney <ddaney.cavm@gmail.com> wrote:
> On 05/19/2012 11:08 PM, Grant Likely wrote:
>>
>> On Sat, 19 May 2012 23:54:36 -0600, Grant
>> Likely<grant.likely@secretlab.ca> =A0wrote:
>>>
>>> On Fri, 11 May 2012 15:05:21 -0700, David Daney<ddaney.cavm@gmail.com>
>>> =A0wrote:
>>>>
>>>> From: David Daney<david.daney@cavium.com>
>>>>
>>>> When generating MODALIASes, it is convenient to add things like "spi:"
>>>> or "i2c:" to the front of the strings. =A0This allows the standard
>>>> modprobe to find the right driver when automatically populating bus
>>>> children from the device tree structure.
>>>>
>>>> Add a prefix parameter, and adjust callers. =A0For
>>>> of_register_spi_devices() use the "spi:" prefix.
>>>>
>>>> Signed-off-by: David Daney<david.daney@cavium.com>
>>>
>>>
>>> Applied, thanks. =A0Some notes below...
>>
>>
>> Wait... why is this necessary?
>
>
> Because in of_register_spi_devices() in of_spi.c, you do:
>
> =A0 =A0 =A0 =A0request_module(spi->modalias);
>
> The string passed to request_module() must have the "spi:" prefix.
How about modifying the call to request_module() to include the prefix
also? I think that would be a simpler change overall. Would that
work?
g.
^ permalink raw reply
* Re: [PATCH 1/3] of: Add prefix parameter to of_modalias_node().
From: David Daney @ 2012-05-22 22:49 UTC (permalink / raw)
To: Grant Likely
Cc: linux-mips@linux-mips.org, alsa-devel@alsa-project.org,
linux-doc@vger.kernel.org, Takashi Iwai,
devicetree-discuss@lists.ozlabs.org, Mark Brown,
Tabi Timur-B04825, linux-kernel@vger.kernel.org, Rob Herring,
Jaroslav Kysela, spi-devel-general@lists.sourceforge.net,
linuxppc-dev@lists.ozlabs.org, Liam Girdwood
In-Reply-To: <CACxGe6tYQVfPRtXxmYF2OPYcEFu+x4-_uzFta9f3mwu=xUrt=g@mail.gmail.com>
On 05/22/2012 01:09 PM, Grant Likely wrote:
> On Tue, May 22, 2012 at 1:45 PM, David Daney<ddaney.cavm@gmail.com> wrote:
>> On 05/19/2012 11:08 PM, Grant Likely wrote:
>>>
>>> On Sat, 19 May 2012 23:54:36 -0600, Grant
>>> Likely<grant.likely@secretlab.ca> wrote:
>>>>
>>>> On Fri, 11 May 2012 15:05:21 -0700, David Daney<ddaney.cavm@gmail.com>
>>>> wrote:
>>>>>
>>>>> From: David Daney<david.daney@cavium.com>
>>>>>
>>>>> When generating MODALIASes, it is convenient to add things like "spi:"
>>>>> or "i2c:" to the front of the strings. This allows the standard
>>>>> modprobe to find the right driver when automatically populating bus
>>>>> children from the device tree structure.
>>>>>
>>>>> Add a prefix parameter, and adjust callers. For
>>>>> of_register_spi_devices() use the "spi:" prefix.
>>>>>
>>>>> Signed-off-by: David Daney<david.daney@cavium.com>
>>>>
>>>>
>>>> Applied, thanks. Some notes below...
>>>
>>>
>>> Wait... why is this necessary?
>>
>>
>> Because in of_register_spi_devices() in of_spi.c, you do:
>>
>> request_module(spi->modalias);
>>
>> The string passed to request_module() must have the "spi:" prefix.
>
> How about modifying the call to request_module() to include the prefix
> also? I think that would be a simpler change overall. Would that
> work?
It seems to. I just sent such a patch in a new thread.
David Daney
^ permalink raw reply
* Re: [PATCH 1/3] of: Add prefix parameter to of_modalias_node().
From: Grant Likely @ 2012-05-22 23:01 UTC (permalink / raw)
To: David Daney
Cc: linux-mips@linux-mips.org, alsa-devel@alsa-project.org,
linux-doc@vger.kernel.org, Takashi Iwai,
devicetree-discuss@lists.ozlabs.org, Mark Brown,
Tabi Timur-B04825, linux-kernel@vger.kernel.org, Rob Herring,
Jaroslav Kysela, spi-devel-general@lists.sourceforge.net,
linuxppc-dev@lists.ozlabs.org, Liam Girdwood
In-Reply-To: <4FBC1807.4050402@gmail.com>
Cool, thanks.
g.
On Tue, May 22, 2012 at 4:49 PM, David Daney <ddaney.cavm@gmail.com> wrote:
> On 05/22/2012 01:09 PM, Grant Likely wrote:
>>
>> On Tue, May 22, 2012 at 1:45 PM, David Daney<ddaney.cavm@gmail.com>
>> =A0wrote:
>>>
>>> On 05/19/2012 11:08 PM, Grant Likely wrote:
>>>>
>>>>
>>>> On Sat, 19 May 2012 23:54:36 -0600, Grant
>>>> Likely<grant.likely@secretlab.ca> =A0 =A0wrote:
>>>>>
>>>>>
>>>>> On Fri, 11 May 2012 15:05:21 -0700, David Daney<ddaney.cavm@gmail.com=
>
>>>>> =A0wrote:
>>>>>>
>>>>>>
>>>>>> From: David Daney<david.daney@cavium.com>
>>>>>>
>>>>>> When generating MODALIASes, it is convenient to add things like "spi=
:"
>>>>>> or "i2c:" to the front of the strings. =A0This allows the standard
>>>>>> modprobe to find the right driver when automatically populating bus
>>>>>> children from the device tree structure.
>>>>>>
>>>>>> Add a prefix parameter, and adjust callers. =A0For
>>>>>> of_register_spi_devices() use the "spi:" prefix.
>>>>>>
>>>>>> Signed-off-by: David Daney<david.daney@cavium.com>
>>>>>
>>>>>
>>>>>
>>>>> Applied, thanks. =A0Some notes below...
>>>>
>>>>
>>>>
>>>> Wait... why is this necessary?
>>>
>>>
>>>
>>> Because in of_register_spi_devices() in of_spi.c, you do:
>>>
>>> =A0 =A0 =A0 =A0request_module(spi->modalias);
>>>
>>> The string passed to request_module() must have the "spi:" prefix.
>>
>>
>> How about modifying the call to request_module() to include the prefix
>> also? =A0I think that would be a simpler change overall. =A0Would that
>> work?
>
>
> It seems to. =A0I just sent such a patch in a new thread.
>
> David Daney
--=20
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
^ permalink raw reply
* [PATCH v2 0/2] Add pcibios_device_change_notifier
From: Hiroo Matsumoto @ 2012-05-23 2:33 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, linuxppc-dev, jbarnes, Kenji Kaneshige
This patchset is for PCI hotplug.
pcibios_setup_bus_devices which sets DMA and IRQs of PCI device is called
only when boot. DMA setting in probe for PCI driver, like dma_set_mask,
does not work on powerpc platform. So it is need to set DMA and IRQs of
PCI device when hotplug.
1. Moving pcibios_setup_bus_devices code to pcibios_device_change_notifier
which is registered to bus notifier in pcibios_init.
2. Removing caller and callee of pcibios_setup_bus_devices bus notifier
works instead of pcibios_setup_bus_devices.
3. Using this bus notifier for microblaze because microblaze/PCI is similer
with powerpc/PCI.
[PATCH v2 1/2] powerpc/PCI: Add pcibios_device_change_notifier for powerpc
[PATCH v2 2/2] microblaze/PCI: Add pcibios_device_change_notifier for microblaze
Regards.
Hiroo MATSUMOTO
^ permalink raw reply
* [PATCH v2 1/2] powerpc/PCI: Add pcibios_device_change_notifier for powerpc
From: Hiroo Matsumoto @ 2012-05-23 2:33 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, linuxppc-dev, jbarnes, Kenji Kaneshige
pcibios_setup_bus_devices which sets DMA and IRQs of PCI device is called
only when boot, so DMA and IRQs of PCI device will not set when hotplug.
This patch adds pcibios_device_change_notifier which sets DMA and IRQs of
PCI device when PCI device adds, so DMA and IRQs of PCI device will be set
when boot and hotplug.
* Not patched pciehp message on powerpc platform
# echo 1 > /sys/bus/pci/slots/1/power
<snip>
pcieport 0000:02:01.0: PCI bridge to [bus 03-03]
pcieport 0000:02:01.0: bridge window [io 0xff7ee000-0xff7eefff]
pcieport 0000:02:01.0: bridge window [mem 0xa0100000-0xa01fffff]
pcieport 0000:02:01.0: bridge window [mem 0xa0200000-0xa02fffff 64bit pref]
pci 0000:03:00.0: no hotplug settings from platform
e1000e 0000:03:00.0: Disabling ASPM L1
e1000e 0000:03:00.0: enabling device (0000 -> 0002)
e1000e 0000:03:00.0: No usable DMA configuration, aborting
e1000e: probe of 0000:03:00.0 failed with error -5
* Patched pciehp message on powerpc platform
# echo 1 > /sys/bus/pci/slots/1/power
<snip>
pcieport 0000:02:01.0: PCI bridge to [bus 03-03]
pcieport 0000:02:01.0: bridge window [io 0xff7ee000-0xff7eefff]
pcieport 0000:02:01.0: bridge window [mem 0xa0100000-0xa01fffff]
pcieport 0000:02:01.0: bridge window [mem 0xa0200000-0xa02fffff 64bit pref]
pci 0000:03:00.0: no hotplug settings from platform
e1000e 0000:03:00.0: Disabling ASPM L1
e1000e 0000:03:00.0: enabling device (0000 -> 0002)
irq: irq 6 on host /soc@ffe00000/msi@41600 mapped to virtual irq 27
e1000e 0000:03:00.0: eth0: (PCI Express:2.5GT/s:Width x1) 00:15:17:bf:c0:c9
e1000e 0000:03:00.0: eth0: Intel(R) PRO/1000 Network Connection
e1000e 0000:03:00.0: eth0: MAC: 1, PHY: 4, PBA No: D50861-003
Signed-off-by: Hiroo MATSUMOTO <matsumoto.hiroo@jp.fujitsu.com>
---
arch/powerpc/include/asm/pci.h | 2 +-
arch/powerpc/kernel/pci-common.c | 87 ++++++++++++++--------------
arch/powerpc/kernel/pci_32.c | 2 +
arch/powerpc/kernel/pci_64.c | 2 +
arch/powerpc/kernel/pci_of_scan.c | 1 -
arch/powerpc/platforms/pseries/pci_dlpar.c | 1 -
drivers/pci/pci.c | 5 --
drivers/pcmcia/cardbus.c | 3 +-
include/linux/pci.h | 3 -
9 files changed, 49 insertions(+), 57 deletions(-)
diff --git a/arch/powerpc/include/asm/pci.h b/arch/powerpc/include/asm/pci.h
index f54b3d2..7b4ca5a 100644
--- a/arch/powerpc/include/asm/pci.h
+++ b/arch/powerpc/include/asm/pci.h
@@ -190,10 +190,10 @@ extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
const struct resource *rsrc,
resource_size_t *start, resource_size_t *end);
-extern void pcibios_setup_bus_devices(struct pci_bus *bus);
extern void pcibios_setup_bus_self(struct pci_bus *bus);
extern void pcibios_setup_phb_io_space(struct pci_controller *hose);
extern void pcibios_scan_phb(struct pci_controller *hose);
+extern void pcibios_setup_bus_notifier(void);
#endif /* __KERNEL__ */
#endif /* __ASM_POWERPC_PCI_H */
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index cce98d7..42a00b5 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -1097,40 +1097,6 @@ void __devinit pcibios_setup_bus_self(struct pci_bus *bus)
ppc_md.pci_dma_bus_setup(bus);
}
-void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
-{
- struct pci_dev *dev;
-
- pr_debug("PCI: Fixup bus devices %d (%s)\n",
- bus->number, bus->self ? pci_name(bus->self) : "PHB");
-
- list_for_each_entry(dev, &bus->devices, bus_list) {
- /* Cardbus can call us to add new devices to a bus, so ignore
- * those who are already fully discovered
- */
- if (dev->is_added)
- continue;
-
- /* Fixup NUMA node as it may not be setup yet by the generic
- * code and is needed by the DMA init
- */
- set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
-
- /* Hook up default DMA ops */
- set_dma_ops(&dev->dev, pci_dma_ops);
- set_dma_offset(&dev->dev, PCI_DRAM_OFFSET);
-
- /* Additional platform DMA/iommu setup */
- if (ppc_md.pci_dma_dev_setup)
- ppc_md.pci_dma_dev_setup(dev);
-
- /* Read default IRQs and fixup if necessary */
- pci_read_irq_line(dev);
- if (ppc_md.pci_irq_fixup)
- ppc_md.pci_irq_fixup(dev);
- }
-}
-
void pcibios_set_master(struct pci_dev *dev)
{
/* No special bus mastering setup handling */
@@ -1147,19 +1113,9 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
/* Now fixup the bus bus */
pcibios_setup_bus_self(bus);
-
- /* Now fixup devices on that bus */
- pcibios_setup_bus_devices(bus);
}
EXPORT_SYMBOL(pcibios_fixup_bus);
-void __devinit pci_fixup_cardbus(struct pci_bus *bus)
-{
- /* Now fixup devices on that bus */
- pcibios_setup_bus_devices(bus);
-}
-
-
static int skip_isa_ioresource_align(struct pci_dev *dev)
{
if (pci_has_flag(PCI_CAN_SKIP_ISA_ALIGN) &&
@@ -1763,6 +1719,49 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
}
}
+static int pcibios_device_change_notifier(struct notifier_block *nb,
+ unsigned long action, void *data)
+{
+ struct pci_dev *dev = to_pci_dev(data);
+
+ switch (action) {
+ case BUS_NOTIFY_ADD_DEVICE:
+ /* Setup OF node pointer in the device */
+ dev->dev.of_node = pci_device_to_OF_node(dev);
+
+ /* Fixup NUMA node as it may not be setup yet by the generic
+ * code and is needed by the DMA init
+ */
+ set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
+
+ /* Hook up default DMA ops */
+ set_dma_ops(&dev->dev, pci_dma_ops);
+ set_dma_offset(&dev->dev, PCI_DRAM_OFFSET);
+
+ /* Additional platform DMA/iommu setup */
+ if (ppc_md.pci_dma_dev_setup)
+ ppc_md.pci_dma_dev_setup(dev);
+
+ /* Read default IRQs and fixup if necessary */
+ pci_read_irq_line(dev);
+ if (ppc_md.pci_irq_fixup)
+ ppc_md.pci_irq_fixup(dev);
+
+ break;
+ }
+
+ return 0;
+}
+
+static struct notifier_block device_nb = {
+ .notifier_call = pcibios_device_change_notifier,
+};
+
+void __devinit pcibios_setup_bus_notifier(void)
+{
+ bus_register_notifier(&pci_bus_type, &device_nb);
+}
+
static void fixup_hide_host_resource_fsl(struct pci_dev *dev)
{
int i, class = dev->class >> 8;
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index fdd1a3d..5a30cec 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -231,6 +231,8 @@ static int __init pcibios_init(void)
printk(KERN_INFO "PCI: Probing PCI hardware\n");
+ pcibios_setup_bus_notifier();
+
if (pci_has_flag(PCI_REASSIGN_ALL_BUS))
pci_assign_all_buses = 1;
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 3318d39..d66c9dc 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -50,6 +50,8 @@ static int __init pcibios_init(void)
printk(KERN_INFO "PCI: Probing PCI hardware\n");
+ pcibios_setup_bus_notifier();
+
/* For now, override phys_mem_access_prot. If we need it,g
* later, we may move that initialization to each ppc_md
*/
diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c
index b37d0b5..1e29642 100644
--- a/arch/powerpc/kernel/pci_of_scan.c
+++ b/arch/powerpc/kernel/pci_of_scan.c
@@ -329,7 +329,6 @@ static void __devinit __of_scan_bus(struct device_node *node,
*/
if (!rescan_existing)
pcibios_setup_bus_self(bus);
- pcibios_setup_bus_devices(bus);
/* Now scan child busses */
list_for_each_entry(dev, &bus->devices, bus_list) {
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c
index 55d4ec1..fdb8b64 100644
--- a/arch/powerpc/platforms/pseries/pci_dlpar.c
+++ b/arch/powerpc/platforms/pseries/pci_dlpar.c
@@ -120,7 +120,6 @@ void pcibios_add_pci_devices(struct pci_bus * bus)
num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
if (!num)
return;
- pcibios_setup_bus_devices(bus);
max = bus->secondary;
for (pass=0; pass < 2; pass++)
list_for_each_entry(dev, &bus->devices, bus_list) {
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index af295bb..f363b5d 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3698,11 +3698,6 @@ int __attribute__ ((weak)) pci_ext_cfg_avail(struct pci_dev *dev)
return 1;
}
-void __weak pci_fixup_cardbus(struct pci_bus *bus)
-{
-}
-EXPORT_SYMBOL(pci_fixup_cardbus);
-
static int __init pci_setup(char *str)
{
while (str) {
diff --git a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c
index 9a58862..8f7baa6 100644
--- a/drivers/pcmcia/cardbus.c
+++ b/drivers/pcmcia/cardbus.c
@@ -71,7 +71,6 @@ int __ref cb_alloc(struct pcmcia_socket *s)
unsigned int max, pass;
s->functions = pci_scan_slot(bus, PCI_DEVFN(0, 0));
- pci_fixup_cardbus(bus);
max = bus->secondary;
for (pass = 0; pass < 2; pass++)
@@ -85,7 +84,6 @@ int __ref cb_alloc(struct pcmcia_socket *s)
*/
pci_bus_size_bridges(bus);
pci_bus_assign_resources(bus);
- cardbus_config_irq_and_cls(bus, s->pci_irq);
/* socket specific tune function */
if (s->tune_bridge)
@@ -93,6 +91,7 @@ int __ref cb_alloc(struct pcmcia_socket *s)
pci_enable_bridges(bus);
pci_bus_add_devices(bus);
+ cardbus_config_irq_and_cls(bus, s->pci_irq);
return 0;
}
diff --git a/include/linux/pci.h b/include/linux/pci.h
index a16b1df..56f50fd 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -651,9 +651,6 @@ resource_size_t pcibios_align_resource(void *, const struct resource *,
resource_size_t);
void pcibios_update_irq(struct pci_dev *, int irq);
-/* Weak but can be overriden by arch */
-void pci_fixup_cardbus(struct pci_bus *);
-
/* Generic PCI functions used internally */
void pcibios_scan_specific_bus(int busn);
--
1.7.3.4
^ permalink raw reply related
* [PATCH v2 2/2] microblaze/PCI: Add pcibios_device_change_notifier for microblaze
From: Hiroo Matsumoto @ 2012-05-23 2:34 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, linuxppc-dev, jbarnes, Kenji Kaneshige
pcibios_setup_bus_devices which sets DMA and IRQs of PCI device is called
only when boot, so DMA and IRQs of PCI device will not set when hotplug.
This patch adds pcibios_device_change_notifier which sets DMA and IRQs of
PCI device when PCI device adds, so DMA and IRQs of PCI device will be set
when boot and hotplug.
Signed-off-by: Hiroo MATSUMOTO <matsumoto.hiroo@jp.fujitsu.com>
---
arch/microblaze/include/asm/pci.h | 2 +-
arch/microblaze/pci/pci-common.c | 67 +++++++++++++++++++++---------------
2 files changed, 40 insertions(+), 29 deletions(-)
diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
index 0331376..8d11277 100644
--- a/arch/microblaze/include/asm/pci.h
+++ b/arch/microblaze/include/asm/pci.h
@@ -149,8 +149,8 @@ extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
const struct resource *rsrc,
resource_size_t *start, resource_size_t *end);
-extern void pcibios_setup_bus_devices(struct pci_bus *bus);
extern void pcibios_setup_bus_self(struct pci_bus *bus);
+extern void pcibios_setup_bus_notifier(void);
/* This part of code was originally in xilinx-pci.h */
#ifdef CONFIG_PCI_XILINX
diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
index 85f2ac1..bb28ede 100644
--- a/arch/microblaze/pci/pci-common.c
+++ b/arch/microblaze/pci/pci-common.c
@@ -1063,31 +1063,6 @@ void __devinit pcibios_setup_bus_self(struct pci_bus *bus)
pcibios_fixup_bridge(bus);
}
-void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
-{
- struct pci_dev *dev;
-
- pr_debug("PCI: Fixup bus devices %d (%s)\n",
- bus->number, bus->self ? pci_name(bus->self) : "PHB");
-
- list_for_each_entry(dev, &bus->devices, bus_list) {
- /* Setup OF node pointer in archdata */
- dev->dev.of_node = pci_device_to_OF_node(dev);
-
- /* Fixup NUMA node as it may not be setup yet by the generic
- * code and is needed by the DMA init
- */
- set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
-
- /* Hook up default DMA ops */
- set_dma_ops(&dev->dev, pci_dma_ops);
- dev->dev.archdata.dma_data = (void *)PCI_DRAM_OFFSET;
-
- /* Read default IRQs and fixup if necessary */
- pci_read_irq_line(dev);
- }
-}
-
void __devinit pcibios_fixup_bus(struct pci_bus *bus)
{
/* When called from the generic PCI probe, read PCI<->PCI bridge
@@ -1099,9 +1074,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
/* Now fixup the bus bus */
pcibios_setup_bus_self(bus);
-
- /* Now fixup devices on that bus */
- pcibios_setup_bus_devices(bus);
}
EXPORT_SYMBOL(pcibios_fixup_bus);
@@ -1604,6 +1576,43 @@ static void __devinit pcibios_scan_phb(struct pci_controller *hose)
hose->last_busno = bus->subordinate;
}
+static int pcibios_device_change_notifier(struct notifier_block *nb,
+ unsigned long action, void *data)
+{
+ struct pci_dev *dev = to_pci_dev(data);
+
+ switch (action) {
+ case BUS_NOTIFY_ADD_DEVICE:
+ /* Setup OF node pointer in archdata */
+ dev->dev.of_node = pci_device_to_OF_node(dev);
+
+ /* Fixup NUMA node as it may not be setup yet by the generic
+ * code and is needed by the DMA init
+ */
+ set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
+
+ /* Hook up default DMA ops */
+ set_dma_ops(&dev->dev, pci_dma_ops);
+ dev->dev.archdata.dma_data = (void *)PCI_DRAM_OFFSET;
+
+ /* Read default IRQs and fixup if necessary */
+ pci_read_irq_line(dev);
+
+ break;
+ }
+
+ return 0;
+}
+
+static struct notifier_block device_nb = {
+ .notifier_call = pcibios_device_change_notifier,
+};
+
+void __devinit pcibios_setup_bus_notifier(void)
+{
+ bus_register_notifier(&pci_bus_type, &device_nb);
+}
+
static int __init pcibios_init(void)
{
struct pci_controller *hose, *tmp;
@@ -1611,6 +1620,8 @@ static int __init pcibios_init(void)
printk(KERN_INFO "PCI: Probing PCI hardware\n");
+ pcibios_setup_bus_notifier();
+
/* Scan all of the recorded PCI controllers. */
list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
hose->last_busno = 0xff;
--
1.7.3.4
^ permalink raw reply related
* [git pull] Please pull powerpc.git next branch
From: Benjamin Herrenschmidt @ 2012-05-23 3:40 UTC (permalink / raw)
To: Linus Torvalds; +Cc: linuxppc-dev list, Andrew Morton, Linux Kernel list
Hi Linus !
Here are the powerpc goodies for 3.5. Main highlights are:
- Support for the NX crypto engine in Power7+
- A bunch of Anton goodness, including some micro optimization
of our syscall entry on Power7
- I converted a pile of our thermal control drivers to the
new i2c APIs (essentially turning the old therm_pm72 into
a proper set of windfarm drivers). That's one more step
toward removing the deprecated i2c APIs, there's still a
few drivers to fix, but we are getting close
- kexec/kdump support for 47x embedded cores
The big missing thing here is no updates from Freescale. Not sure
what's up here, but with Kumar not working for them anymore things
are a bit in a state of flux in that area.
[Sent from my ozlabs address because gate.crashing.org appears to
have temporarily fallen off the face of the internet]
Cheers,
Ben.
The following changes since commit 7c0482e3d055e5de056d3c693b821e39205b99ae:
powerpc/irq: Fix another case of lazy IRQ state getting out of sync (2012-05-12 09:40:41 +1000)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git next
for you to fetch changes up to 2074b1d9d53ae696dd3f49482bad43254f40f01d:
powerpc: Fix irq distribution (2012-05-22 14:38:26 +1000)
----------------------------------------------------------------
Andre Heider (3):
powerpc/ps3: Add highmem repository read routines
powerpc/ps3: Use highmem region from repository
powerpc/ps3: Remove MEMORY_HOTPLUG requirement
Anshuman Khandual (1):
powerpc: Fixing a cputhread code documentation
Anton Blanchard (15):
powerpc: Hide some system call labels from profile tools
powerpc: No need to save XER in a system call
powerpc: No need to preserve count register across system call
powerpc: Better scheduling of CR save code in system call path
powerpc: Clean up lppaca->cede_latency_hint
powerpc: Remove iseries specific fields in lppaca
powerpc: Reformat lppaca.h
powerpc: Remove empty giveup_altivec function on book3e CPUs
powerpc: Optimise enable_kernel_altivec
powerpc: Remove CONFIG_POWER4_ONLY
powerpc: Require gcc 4.0 on 64-bit
powerpc: Remove altivec fix for gcc versions before 4.0
powerpc: Add 64-bit CPU targets for gcc
powerpc: Use WARN instead of dump_stack when printing EEH error backtrace
powerpc: Remove old powerpc specific ptrace getregs/setregs calls
Benjamin Herrenschmidt (20):
Merge remote-tracking branch 'geoff/for-powerpc' into next
i2c/powermac: Register i2c devices from device-tree
powerpc/pmac: Convert therm_adt746x to new i2c probing
powerpc/pmac: Convert windfarm_lm75 to new i2c probing
powerpc/pmac: Convert windfarm_max6690 to new i2c probing
powerpc/pmac: Convert windfarm_smu_sat to new i2c probing
powerpc/windfarm: const'ify and add "priv" field to controls & sensors
powerpc/windfarm: Remove spurrious sysfs_attr_init()
powerpc/windfarm: Improve display of fan speeds in sysfs
powerpc/windfarm: Add useful accessors
powerpc/windfarm: Add ad7417 sensor
powerpc/windfarm: Add lm87 sensor
powerpc/windfarm: Updates to lm75 and max6690 sensors
powerpc/windfarm: Add Fan Control Unit controls for G5s
powerpc/powermac: New windfarm driver for PowerMac G5 (AGP) and Xserve G5
Merge branch 'merge' into next
powerpc/windfarm: Fix crash on SMU based machine after i2c conversion
Merge remote-tracking branch 'jwb/next' into next
Merge branch 'merge' into next
Revert "powerpc/hw-breakpoint: Use generic hw-breakpoint interfaces for new PPC ptrace flags"
Geoff Levand (5):
powerpc/ps3: Correct lv1 repository routine names
powerpc/ps3: Add PS3 repository write support
powerpc/ps3: Add highmem repository write routines
powerpc/ps3: Minor Kconfig cleanup
powerpc/ps3: Refresh ps3_defconfig
Hector Martin (1):
powerpc/ps3: Add highmem region memory early
Josh Boyer (1):
powerpc/40x: Use {upper,lower}_32_bits for msi_phys
K.Prasad (1):
powerpc/hw-breakpoint: Use generic hw-breakpoint interfaces for new PPC ptrace flags
Kent Yoder (17):
powerpc/pseries: Add new hvcall constants to support PFO
powerpc/pseries: Add pseries update notifier for OFDT prop changes
powerpc/pseries: Add PFO support to the VIO bus
powerpc/pseries/hwrng: PFO-based hwrng driver
powerpc/pseries: Enable the PFO-based RNG accelerator
powerpc/crypto: nx driver code supporting nx encryption
powerpc/crypto: AES-CBC mode routines for nx encryption
powerpc/crypto: AES-CCM mode routines for nx encryption
powerpc/crypto: AES-CTR mode routines for nx encryption
powerpc/crypto: AES-ECB mode routines for nx encryption
powerpc/crypto: AES-GCM mode routines for nx encryption
powerpc/crypto: AES-XCBC mode routines for nx encryption
powerpc/crypto: SHA256 hash routines for nx encryption
powerpc/crypto: SHA512 hash routines for nx encryption
powerpc/crypto: debugfs routines and docs for the nx device driver
powerpc/crypto: Build files for the nx device driver
powerpc/crypto: Enable the PFO-based encryption device
Kim Phillips (1):
powerpc: Fix irq distribution
Mai La (2):
powerpc/44x: Fix PCI MSI support for Maui APM821xx SoC and Bluestone board
powerpc/44x: Add PCI MSI node for Maui APM821xx SoC and Bluestone board in DTS
Robert Jennings (1):
powerpc/pseries: Support lower minimum entitlement for virtual processors
Stephen Rothwell (2):
powerpc/windfarm: fix compiler warning
powerpc/windfarm: don't pass const strings to snprintf
Suzuki Poulose (3):
powerpc/44x: Fix/Initialize PID to kernel PID before the TLB search
powerpc/47x: Kernel support for KEXEC
powerpc/47x: Enable CRASH_DUMP
Tiejun Chen (1):
powerpc: Remove now unused _TIF_RUNLATCH
Valentin Ilie (1):
drivers/ps3: Fix checkpatch warnings in ps3av.c
Documentation/ABI/testing/debugfs-pfo-nx-crypto | 45 ++
arch/powerpc/Kconfig | 4 +-
arch/powerpc/Makefile | 49 +-
arch/powerpc/boot/dts/bluestone.dts | 25 +
arch/powerpc/configs/g5_defconfig | 1 -
arch/powerpc/configs/maple_defconfig | 1 -
arch/powerpc/configs/pasemi_defconfig | 1 -
arch/powerpc/configs/ps3_defconfig | 6 -
arch/powerpc/include/asm/asm-compat.h | 11 +-
arch/powerpc/include/asm/cputhreads.h | 2 +-
arch/powerpc/include/asm/hvcall.h | 25 +-
arch/powerpc/include/asm/lppaca.h | 196 ++----
arch/powerpc/include/asm/lv1call.h | 4 +-
arch/powerpc/include/asm/pSeries_reconfig.h | 12 +
arch/powerpc/include/asm/ppc_asm.h | 10 +-
arch/powerpc/include/asm/ptrace.h | 6 -
arch/powerpc/include/asm/switch_to.h | 6 +-
arch/powerpc/include/asm/thread_info.h | 1 -
arch/powerpc/include/asm/vio.h | 46 ++
arch/powerpc/kernel/asm-offsets.c | 4 -
arch/powerpc/kernel/entry_64.S | 30 +-
arch/powerpc/kernel/exceptions-64s.S | 4 -
arch/powerpc/kernel/head_44x.S | 8 -
arch/powerpc/kernel/head_fsl_booke.S | 8 -
arch/powerpc/kernel/irq.c | 2 +-
arch/powerpc/kernel/misc_32.S | 203 +++++-
arch/powerpc/kernel/paca.c | 3 -
arch/powerpc/kernel/process.c | 2 +-
arch/powerpc/kernel/prom_init.c | 17 +-
arch/powerpc/kernel/ptrace.c | 42 --
arch/powerpc/kernel/ptrace32.c | 32 -
arch/powerpc/kernel/vector.S | 10 +
arch/powerpc/kernel/vio.c | 273 ++++++--
arch/powerpc/lib/copyuser_64.S | 6 +-
arch/powerpc/lib/mem_64.S | 6 +-
arch/powerpc/lib/memcpy_64.S | 6 +-
arch/powerpc/platforms/44x/Kconfig | 2 +
arch/powerpc/platforms/Kconfig.cputype | 39 +-
arch/powerpc/platforms/powermac/low_i2c.c | 1 +
arch/powerpc/platforms/ps3/Kconfig | 22 +-
arch/powerpc/platforms/ps3/mm.c | 77 ++-
arch/powerpc/platforms/ps3/platform.h | 16 +
arch/powerpc/platforms/ps3/repository.c | 198 ++++++
arch/powerpc/platforms/pseries/eeh.c | 2 +-
arch/powerpc/platforms/pseries/plpar_wrappers.h | 4 +-
arch/powerpc/platforms/pseries/reconfig.c | 7 +
arch/powerpc/sysdev/ppc4xx_msi.c | 42 +-
drivers/char/hw_random/Kconfig | 13 +
drivers/char/hw_random/Makefile | 1 +
drivers/char/hw_random/pseries-rng.c | 96 +++
drivers/crypto/Kconfig | 17 +
drivers/crypto/nx/Makefile | 11 +
drivers/crypto/nx/nx-aes-cbc.c | 141 ++++
drivers/crypto/nx/nx-aes-ccm.c | 468 +++++++++++++
drivers/crypto/nx/nx-aes-ctr.c | 178 +++++
drivers/crypto/nx/nx-aes-ecb.c | 139 ++++
drivers/crypto/nx/nx-aes-gcm.c | 353 ++++++++++
drivers/crypto/nx/nx-aes-xcbc.c | 236 +++++++
drivers/crypto/nx/nx-sha256.c | 246 +++++++
drivers/crypto/nx/nx-sha512.c | 265 +++++++
drivers/crypto/nx/nx.c | 716 +++++++++++++++++++
drivers/crypto/nx/nx.h | 193 ++++++
drivers/crypto/nx/nx_csbcpb.h | 205 ++++++
drivers/crypto/nx/nx_debugfs.c | 103 +++
drivers/i2c/busses/i2c-powermac.c | 98 ++-
drivers/macintosh/Kconfig | 23 +-
drivers/macintosh/Makefile | 14 +
drivers/macintosh/ams/ams-i2c.c | 2 +-
drivers/macintosh/therm_adt746x.c | 480 ++++++-------
drivers/macintosh/windfarm.h | 51 +-
drivers/macintosh/windfarm_ad7417_sensor.c | 347 ++++++++++
drivers/macintosh/windfarm_core.c | 23 +-
drivers/macintosh/windfarm_cpufreq_clamp.c | 6 -
drivers/macintosh/windfarm_fcu_controls.c | 613 ++++++++++++++++
drivers/macintosh/windfarm_lm75_sensor.c | 135 +---
drivers/macintosh/windfarm_lm87_sensor.c | 201 ++++++
drivers/macintosh/windfarm_max6690_sensor.c | 109 +--
drivers/macintosh/windfarm_mpu.h | 105 +++
drivers/macintosh/windfarm_pm72.c | 847 +++++++++++++++++++++++
drivers/macintosh/windfarm_pm81.c | 25 +-
drivers/macintosh/windfarm_pm91.c | 33 +-
drivers/macintosh/windfarm_rm31.c | 740 ++++++++++++++++++++
drivers/macintosh/windfarm_smu_controls.c | 1 -
drivers/macintosh/windfarm_smu_sat.c | 132 ++--
drivers/ps3/ps3av.c | 24 +-
85 files changed, 7827 insertions(+), 1080 deletions(-)
create mode 100644 Documentation/ABI/testing/debugfs-pfo-nx-crypto
create mode 100644 drivers/char/hw_random/pseries-rng.c
create mode 100644 drivers/crypto/nx/Makefile
create mode 100644 drivers/crypto/nx/nx-aes-cbc.c
create mode 100644 drivers/crypto/nx/nx-aes-ccm.c
create mode 100644 drivers/crypto/nx/nx-aes-ctr.c
create mode 100644 drivers/crypto/nx/nx-aes-ecb.c
create mode 100644 drivers/crypto/nx/nx-aes-gcm.c
create mode 100644 drivers/crypto/nx/nx-aes-xcbc.c
create mode 100644 drivers/crypto/nx/nx-sha256.c
create mode 100644 drivers/crypto/nx/nx-sha512.c
create mode 100644 drivers/crypto/nx/nx.c
create mode 100644 drivers/crypto/nx/nx.h
create mode 100644 drivers/crypto/nx/nx_csbcpb.h
create mode 100644 drivers/crypto/nx/nx_debugfs.c
create mode 100644 drivers/macintosh/windfarm_ad7417_sensor.c
create mode 100644 drivers/macintosh/windfarm_fcu_controls.c
create mode 100644 drivers/macintosh/windfarm_lm87_sensor.c
create mode 100644 drivers/macintosh/windfarm_mpu.h
create mode 100644 drivers/macintosh/windfarm_pm72.c
create mode 100644 drivers/macintosh/windfarm_rm31.c
^ permalink raw reply
* powerc tree maintainership status
From: Benjamin Herrenschmidt @ 2012-05-23 3:43 UTC (permalink / raw)
To: Linus Torvalds
Cc: Michael Ellerman, Anatolij Gustschin, linuxppc-dev,
Paul Mackerras
Hi Folks !
I'm going to be getting some surgery next week. In the good case, I
should be officially back to work 2 weeks later, but I might end
up being unavailable for longer.
So while I'm away, Michael Ellerman and Paul Mackerras are going to take
care of the powerpc tree. I'll make sure Paul and I sign Michael's PGP
key before I leave.
Cheers,
Ben.
^ permalink raw reply
* [PATCH] powerpc: Enable jump label support
From: Anton Blanchard @ 2012-05-23 3:58 UTC (permalink / raw)
To: benh, paulus, michael; +Cc: linuxppc-dev
When looking through some instruction traces I noticed our tracepoint
checks were inline. It turns out we don't have CONFIG_JUMP_LABEL
enabled.
By enabling CONFIG_JUMP_LABEL we replace a load/compare/branch with
a nop at every tracepoint call. For example in do_IRQ:
CONFIG_JUMP_LABEL disabled:
stdx 3,11,9
lwz 0,8(29)
cmpwi 7,0,0
bne- 7,.L124
bl .irq_enter
CONFIG_JUMP_LABEL enabled:
stdx 3,11,9
nop
bl .irq_enter
Signed-off-by: Anton Blanchard <anton@samba.org>
---
Index: linux-build/arch/powerpc/configs/ppc64_defconfig
===================================================================
--- linux-build.orig/arch/powerpc/configs/ppc64_defconfig 2012-04-05 13:47:45.691857096 +1000
+++ linux-build/arch/powerpc/configs/ppc64_defconfig 2012-05-23 13:14:04.254270594 +1000
@@ -16,6 +16,7 @@ CONFIG_BLK_DEV_INITRD=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=y
CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y
Index: linux-build/arch/powerpc/configs/pseries_defconfig
===================================================================
--- linux-build.orig/arch/powerpc/configs/pseries_defconfig 2012-04-05 13:47:45.691857096 +1000
+++ linux-build/arch/powerpc/configs/pseries_defconfig 2012-05-23 13:14:59.783222304 +1000
@@ -24,6 +24,7 @@ CONFIG_BLK_DEV_INITRD=y
CONFIG_PROFILING=y
CONFIG_OPROFILE=y
CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y
^ permalink raw reply
* [patch] sched, numa: Allocate node_queue on any node for offline nodes
From: David Rientjes @ 2012-05-23 4:17 UTC (permalink / raw)
To: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, Peter Zijlstra
Cc: Lee Schermerhorn, Stephen Rothwell, Linus Torvalds, linux-kernel,
linux-next, linuxppc-dev
In-Reply-To: <20120522130354.fdb335eb294f4206b4b2fed5@canb.auug.org.au>
struct node_queue must be allocated with NUMA_NO_NODE for nodes that are
not (yet) online, otherwise the page allocator has a bad zonelist and
results in an early crash.
Tested-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: David Rientjes <rientjes@google.com>
---
kernel/sched/numa.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/kernel/sched/numa.c b/kernel/sched/numa.c
--- a/kernel/sched/numa.c
+++ b/kernel/sched/numa.c
@@ -885,7 +885,8 @@ static __init int numa_init(void)
for_each_node(node) {
struct node_queue *nq = kmalloc_node(sizeof(*nq),
- GFP_KERNEL | __GFP_ZERO, node);
+ GFP_KERNEL | __GFP_ZERO,
+ node_online(node) ? node : NUMA_NO_NODE);
BUG_ON(!nq);
spin_lock_init(&nq->lock);
^ permalink raw reply
* [PATCH] powerpc: tracing: Avoid tracepoint duplication with DECLARE_EVENT_CLASS
From: Anton Blanchard @ 2012-05-23 4:47 UTC (permalink / raw)
To: benh, paulus; +Cc: linuxppc-dev
irq_entry, irq_exit, timer_interrupt_entry and timer_interrupt_exit
all do the same thing so use DECLARE_EVENT_CLASS to avoid duplicating
everything 4 times.
This saves quite a lot of space in both instruction text and data:
text data bss dec hex filename
9265 19622 16 28903 70e7 arch/powerpc/kernel/irq.o
6817 19019 16 25852 64fc arch/powerpc/kernel/irq.o
Signed-off-by: Anton Blanchard <anton@samba.org>
---
Index: linux-build/arch/powerpc/include/asm/trace.h
===================================================================
--- linux-build.orig/arch/powerpc/include/asm/trace.h 2012-05-23 13:30:51.235534219 +1000
+++ linux-build/arch/powerpc/include/asm/trace.h 2012-05-23 14:10:44.406639628 +1000
@@ -8,7 +8,7 @@
struct pt_regs;
-TRACE_EVENT(irq_entry,
+DECLARE_EVENT_CLASS(ppc64_interrupt_class,
TP_PROTO(struct pt_regs *regs),
@@ -25,55 +25,32 @@ TRACE_EVENT(irq_entry,
TP_printk("pt_regs=%p", __entry->regs)
);
-TRACE_EVENT(irq_exit,
+DEFINE_EVENT(ppc64_interrupt_class, irq_entry,
TP_PROTO(struct pt_regs *regs),
- TP_ARGS(regs),
-
- TP_STRUCT__entry(
- __field(struct pt_regs *, regs)
- ),
-
- TP_fast_assign(
- __entry->regs = regs;
- ),
-
- TP_printk("pt_regs=%p", __entry->regs)
+ TP_ARGS(regs)
);
-TRACE_EVENT(timer_interrupt_entry,
+DEFINE_EVENT(ppc64_interrupt_class, irq_exit,
TP_PROTO(struct pt_regs *regs),
- TP_ARGS(regs),
-
- TP_STRUCT__entry(
- __field(struct pt_regs *, regs)
- ),
-
- TP_fast_assign(
- __entry->regs = regs;
- ),
-
- TP_printk("pt_regs=%p", __entry->regs)
+ TP_ARGS(regs)
);
-TRACE_EVENT(timer_interrupt_exit,
+DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_entry,
TP_PROTO(struct pt_regs *regs),
- TP_ARGS(regs),
+ TP_ARGS(regs)
+);
- TP_STRUCT__entry(
- __field(struct pt_regs *, regs)
- ),
+DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_exit,
- TP_fast_assign(
- __entry->regs = regs;
- ),
+ TP_PROTO(struct pt_regs *regs),
- TP_printk("pt_regs=%p", __entry->regs)
+ TP_ARGS(regs)
);
#ifdef CONFIG_PPC_PSERIES
^ permalink raw reply
* [PATCH] powerpc/p1010rdb: add EEPROMs to device tree
From: Gustavo Zacarias @ 2012-05-23 14:35 UTC (permalink / raw)
To: linuxppc-dev; +Cc: Gustavo Zacarias
Add EEPROM to the P1010RDB device tree.
The 24c01 acts as a memory SPD so it shouldn't be overwritten without
care.
The 24c256 is a general purpose memory.
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
---
arch/powerpc/boot/dts/p1010rdb.dtsi | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/boot/dts/p1010rdb.dtsi b/arch/powerpc/boot/dts/p1010rdb.dtsi
index 4977614..ec7c27a 100644
--- a/arch/powerpc/boot/dts/p1010rdb.dtsi
+++ b/arch/powerpc/boot/dts/p1010rdb.dtsi
@@ -126,12 +126,24 @@
&board_soc {
i2c@3000 {
+ eeprom@50 {
+ compatible = "st,24c256";
+ reg = <0x50>;
+ };
+
rtc@68 {
compatible = "pericom,pt7c4338";
reg = <0x68>;
};
};
+ i2c@3100 {
+ eeprom@52 {
+ compatible = "atmel,24c01";
+ reg = <0x52>;
+ };
+ };
+
spi@7000 {
flash@0 {
#address-cells = <1>;
--
1.7.3.4
^ permalink raw reply related
* Re: [PATCH v2 1/2] powerpc/PCI: Add pcibios_device_change_notifier for powerpc
From: Jesse Larrew @ 2012-05-23 17:51 UTC (permalink / raw)
To: Hiroo Matsumoto
Cc: Bjorn Helgaas, linux-pci, linuxppc-dev, jbarnes, Kenji Kaneshige
In-Reply-To: <4FBC4C92.7080902@jp.fujitsu.com>
On 05/22/2012 09:33 PM, Hiroo Matsumoto wrote:
> +static int pcibios_device_change_notifier(struct notifier_block *nb,
> + unsigned long action, void *data)
> +{
> + struct pci_dev *dev = to_pci_dev(data);
> +
In the general case, we don't know what *data contains until we evaluate
'action'. This conversion should probably be moved inside the case:
statement.
> + switch (action) {
> + case BUS_NOTIFY_ADD_DEVICE:
> + /* Setup OF node pointer in the device */
> + dev->dev.of_node = pci_device_to_OF_node(dev);
> +
> + /* Fixup NUMA node as it may not be setup yet by the generic
> + * code and is needed by the DMA init
> + */
> + set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
> +
> + /* Hook up default DMA ops */
> + set_dma_ops(&dev->dev, pci_dma_ops);
> + set_dma_offset(&dev->dev, PCI_DRAM_OFFSET);
> +
> + /* Additional platform DMA/iommu setup */
> + if (ppc_md.pci_dma_dev_setup)
> + ppc_md.pci_dma_dev_setup(dev);
> +
> + /* Read default IRQs and fixup if necessary */
> + pci_read_irq_line(dev);
> + if (ppc_md.pci_irq_fixup)
> + ppc_md.pci_irq_fixup(dev);
> +
> + break;
> + }
> +
> + return 0;
> +}
> +
> +static struct notifier_block device_nb = {
> + .notifier_call = pcibios_device_change_notifier,
> +};
This is just a nit pick, but I think the naming of
pcibios_device_change_notifier() is a bit misleading. It doesn't
actually notify anything, but instead it *handles* notifications.
Perhaps a better name would be pcibios_device_change_handler() or
pcibios_device_change_callback()?
Sincerely,
Jesse Larrew
Software Engineer, Linux on Power Kernel Team
IBM Linux Technology Center
Phone: (512) 973-2052 (T/L: 363-2052)
jlarrew@linux.vnet.ibm.com
^ permalink raw reply
* Re: [PATCH v2 1/2] powerpc/PCI: Add pcibios_device_change_notifier for powerpc
From: Bjorn Helgaas @ 2012-05-23 18:35 UTC (permalink / raw)
To: Jesse Larrew
Cc: linux-pci, Kenji Kaneshige, linuxppc-dev, jbarnes,
Hiroo Matsumoto
In-Reply-To: <4FBD23BD.6050703@linux.vnet.ibm.com>
On Wed, May 23, 2012 at 11:51 AM, Jesse Larrew
<jlarrew@linux.vnet.ibm.com> wrote:
> On 05/22/2012 09:33 PM, Hiroo Matsumoto wrote:
>
>> +static int pcibios_device_change_notifier(struct notifier_block *nb,
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =
=A0 =A0 unsigned long action, void *data)
>> +{
>> + =A0 =A0 struct pci_dev *dev =3D to_pci_dev(data);
>> +
>
>
>
> In the general case, we don't know what *data contains until we evaluate
> 'action'. This conversion should probably be moved inside the case:
> statement.
We registered it with "bus_register_notifier(&pci_bus_type, ...)" and
every user of the bus_notifier change passes a "struct device *", so I
think we do know that we have a PCI device.
A future bus_notifier user *could* pass something other than a "struct
device *", but the pattern Hiroo used here ("struct pci_dev *dev =3D
to_pci_dev(data);" before looking at "action") seems pretty common, so
I don't think it's likely.
>> + =A0 =A0 switch (action) {
>> + =A0 =A0 case BUS_NOTIFY_ADD_DEVICE:
>> + =A0 =A0 =A0 =A0 =A0 =A0 /* Setup OF node pointer in the device */
>> + =A0 =A0 =A0 =A0 =A0 =A0 dev->dev.of_node =3D pci_device_to_OF_node(dev=
);
>> +
>> + =A0 =A0 =A0 =A0 =A0 =A0 /* Fixup NUMA node as it may not be setup yet =
by the generic
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0* code and is needed by the DMA init
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0*/
>> + =A0 =A0 =A0 =A0 =A0 =A0 set_dev_node(&dev->dev, pcibus_to_node(dev->bu=
s));
>> +
>> + =A0 =A0 =A0 =A0 =A0 =A0 /* Hook up default DMA ops */
>> + =A0 =A0 =A0 =A0 =A0 =A0 set_dma_ops(&dev->dev, pci_dma_ops);
>> + =A0 =A0 =A0 =A0 =A0 =A0 set_dma_offset(&dev->dev, PCI_DRAM_OFFSET);
>> +
>> + =A0 =A0 =A0 =A0 =A0 =A0 /* Additional platform DMA/iommu setup */
>> + =A0 =A0 =A0 =A0 =A0 =A0 if (ppc_md.pci_dma_dev_setup)
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ppc_md.pci_dma_dev_setup(dev);
>> +
>> + =A0 =A0 =A0 =A0 =A0 =A0 /* Read default IRQs and fixup if necessary */
>> + =A0 =A0 =A0 =A0 =A0 =A0 pci_read_irq_line(dev);
>> + =A0 =A0 =A0 =A0 =A0 =A0 if (ppc_md.pci_irq_fixup)
>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 ppc_md.pci_irq_fixup(dev);
>> +
>> + =A0 =A0 =A0 =A0 =A0 =A0 break;
>> + =A0 =A0 }
>> +
>> + =A0 =A0 return 0;
>> +}
>> +
>> +static struct notifier_block device_nb =3D {
>> + =A0 =A0 .notifier_call =3D pcibios_device_change_notifier,
>> +};
>
>
>
> This is just a nit pick, but I think the naming of
> pcibios_device_change_notifier() is a bit misleading. It doesn't
> actually notify anything, but instead it *handles* notifications.
> Perhaps a better name would be pcibios_device_change_handler() or
> pcibios_device_change_callback()?
Good point. "_notify()" seems to be a common name, how about
pci_bus_notify()? It's static to the file, so it doesn't have to be
very unique.
I happened to be merging these patches just now, so I'll make this
change provisionally, pending any more discussion.
Thanks a lot for reviewing this!
Bjorn
^ permalink raw reply
* [PATCH v3 0/2] archdata init in device_add() notifier
From: Bjorn Helgaas @ 2012-05-23 22:36 UTC (permalink / raw)
To: Hiroo Matsumoto
Cc: Michal Simek, microblaze-uclinux, Kenji Kaneshige, Jesse Larrew,
jbarnes, linux-pci, linuxppc-dev
Here's what I put in my "for-3.6" branch for now. We can still change
it, so let me know if you see any problems.
I reworked the changelogs, changed the notification function name per
Jesse, folded the one-line pcibios_setup_bus_notifier() into the only
caller (on microblaze), and changed it from __devinit to __init (on
powerpc) since it now has nothing to do with hotplug.
Thank you very much for doing this work, Matsumoto-san. I hope to
eventually get rid of pcibios_fixup_bus() altogether, and this is a
significant step in that direction.
Bjorn
---
Hiroo Matsumoto (2):
powerpc/PCI: move DMA & IRQ init to device_add() notification path
microblaze/PCI: move DMA & IRQ init to device_add() notification path
arch/microblaze/include/asm/pci.h | 1
arch/microblaze/pci/pci-common.c | 62 +++++++++++---------
arch/powerpc/include/asm/pci.h | 2 -
arch/powerpc/kernel/pci-common.c | 87 ++++++++++++++--------------
arch/powerpc/kernel/pci_32.c | 2 +
arch/powerpc/kernel/pci_64.c | 2 +
arch/powerpc/kernel/pci_of_scan.c | 1
arch/powerpc/platforms/pseries/pci_dlpar.c | 1
drivers/pci/pci.c | 5 --
drivers/pcmcia/cardbus.c | 3 -
include/linux/pci.h | 3 -
11 files changed, 83 insertions(+), 86 deletions(-)
^ permalink raw reply
* [PATCH v3 1/2] powerpc/PCI: move DMA & IRQ init to device_add() notification path
From: Bjorn Helgaas @ 2012-05-23 22:37 UTC (permalink / raw)
To: Hiroo Matsumoto
Cc: Michal Simek, microblaze-uclinux, Kenji Kaneshige, Jesse Larrew,
jbarnes, Dominik Brodowski, linux-pci, linuxppc-dev
In-Reply-To: <20120523222635.24276.80023.stgit@bhelgaas.mtv.corp.google.com>
From: Hiroo Matsumoto <matsumoto.hiroo@jp.fujitsu.com>
PowerPC initialized DMA and IRQ information in the pci_scan_child_bus()
-> pcibios_fixup_bus() path. Some hotplug drivers use that path, but
others don't, e.g., pciehp, so sometimes hot-added devices are only
partly initialized.
This patch moves that initialization from pcibios_fixup_bus() to a new
pci_bus_notify() called in the pci_bus_add_device() -> device_add() path.
That means the initialization happens the same way for all PCI devices,
whether they are present at boot or hot-added later.
Note that powerpc was the only user of pci_fixup_cardbus(), which was
used to do this same setup for cardbus devices. That's no longer
needed because this setup will now be done in the same device_add()
notification path as all other PCI devices.
Typical failure of a hot-added e1000e device prior to this change:
# echo 1 > /sys/bus/pci/slots/1/power
<snip>
e1000e 0000:03:00.0: enabling device (0000 -> 0002)
e1000e 0000:03:00.0: No usable DMA configuration, aborting
e1000e: probe of 0000:03:00.0 failed with error -5
Successful initialization after this change:
# echo 1 > /sys/bus/pci/slots/1/power
<snip>
e1000e 0000:03:00.0: enabling device (0000 -> 0002)
irq: irq 6 on host /soc@ffe00000/msi@41600 mapped to virtual irq 27
e1000e 0000:03:00.0: eth0: (PCI Express:2.5GT/s:Width x1) 00:15:17:bf:c0:c9
e1000e 0000:03:00.0: eth0: Intel(R) PRO/1000 Network Connection
e1000e 0000:03:00.0: eth0: MAC: 1, PHY: 4, PBA No: D50861-003
[bhelgaas: changelog, notifier name, registration can be __init]
CC: Dominik Brodowski <linux@dominikbrodowski.net>
Signed-off-by: Hiroo MATSUMOTO <matsumoto.hiroo@jp.fujitsu.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
arch/powerpc/include/asm/pci.h | 2 -
arch/powerpc/kernel/pci-common.c | 87 ++++++++++++++--------------
arch/powerpc/kernel/pci_32.c | 2 +
arch/powerpc/kernel/pci_64.c | 2 +
arch/powerpc/kernel/pci_of_scan.c | 1
arch/powerpc/platforms/pseries/pci_dlpar.c | 1
drivers/pci/pci.c | 5 --
drivers/pcmcia/cardbus.c | 3 -
include/linux/pci.h | 3 -
9 files changed, 49 insertions(+), 57 deletions(-)
diff --git a/arch/powerpc/include/asm/pci.h b/arch/powerpc/include/asm/pci.h
index 6653f27..d6a36a4 100644
--- a/arch/powerpc/include/asm/pci.h
+++ b/arch/powerpc/include/asm/pci.h
@@ -183,10 +183,10 @@ extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
resource_size_t *start, resource_size_t *end);
extern resource_size_t pcibios_io_space_offset(struct pci_controller *hose);
-extern void pcibios_setup_bus_devices(struct pci_bus *bus);
extern void pcibios_setup_bus_self(struct pci_bus *bus);
extern void pcibios_setup_phb_io_space(struct pci_controller *hose);
extern void pcibios_scan_phb(struct pci_controller *hose);
+extern void pcibios_setup_bus_notifier(void);
#endif /* __KERNEL__ */
#endif /* __ASM_POWERPC_PCI_H */
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 7320f36..41b39ba 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -1009,40 +1009,6 @@ void __devinit pcibios_setup_bus_self(struct pci_bus *bus)
ppc_md.pci_dma_bus_setup(bus);
}
-void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
-{
- struct pci_dev *dev;
-
- pr_debug("PCI: Fixup bus devices %d (%s)\n",
- bus->number, bus->self ? pci_name(bus->self) : "PHB");
-
- list_for_each_entry(dev, &bus->devices, bus_list) {
- /* Cardbus can call us to add new devices to a bus, so ignore
- * those who are already fully discovered
- */
- if (dev->is_added)
- continue;
-
- /* Fixup NUMA node as it may not be setup yet by the generic
- * code and is needed by the DMA init
- */
- set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
-
- /* Hook up default DMA ops */
- set_dma_ops(&dev->dev, pci_dma_ops);
- set_dma_offset(&dev->dev, PCI_DRAM_OFFSET);
-
- /* Additional platform DMA/iommu setup */
- if (ppc_md.pci_dma_dev_setup)
- ppc_md.pci_dma_dev_setup(dev);
-
- /* Read default IRQs and fixup if necessary */
- pci_read_irq_line(dev);
- if (ppc_md.pci_irq_fixup)
- ppc_md.pci_irq_fixup(dev);
- }
-}
-
void pcibios_set_master(struct pci_dev *dev)
{
/* No special bus mastering setup handling */
@@ -1059,19 +1025,9 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
/* Now fixup the bus bus */
pcibios_setup_bus_self(bus);
-
- /* Now fixup devices on that bus */
- pcibios_setup_bus_devices(bus);
}
EXPORT_SYMBOL(pcibios_fixup_bus);
-void __devinit pci_fixup_cardbus(struct pci_bus *bus)
-{
- /* Now fixup devices on that bus */
- pcibios_setup_bus_devices(bus);
-}
-
-
static int skip_isa_ioresource_align(struct pci_dev *dev)
{
if (pci_has_flag(PCI_CAN_SKIP_ISA_ALIGN) &&
@@ -1685,6 +1641,49 @@ void __devinit pcibios_scan_phb(struct pci_controller *hose)
}
}
+static int pci_bus_notify(struct notifier_block *nb, unsigned long action,
+ void *data)
+{
+ struct pci_dev *dev = to_pci_dev(data);
+
+ switch (action) {
+ case BUS_NOTIFY_ADD_DEVICE:
+ /* Setup OF node pointer in the device */
+ dev->dev.of_node = pci_device_to_OF_node(dev);
+
+ /* Fixup NUMA node as it may not be setup yet by the generic
+ * code and is needed by the DMA init
+ */
+ set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
+
+ /* Hook up default DMA ops */
+ set_dma_ops(&dev->dev, pci_dma_ops);
+ set_dma_offset(&dev->dev, PCI_DRAM_OFFSET);
+
+ /* Additional platform DMA/iommu setup */
+ if (ppc_md.pci_dma_dev_setup)
+ ppc_md.pci_dma_dev_setup(dev);
+
+ /* Read default IRQs and fixup if necessary */
+ pci_read_irq_line(dev);
+ if (ppc_md.pci_irq_fixup)
+ ppc_md.pci_irq_fixup(dev);
+
+ break;
+ }
+
+ return 0;
+}
+
+static struct notifier_block device_nb = {
+ .notifier_call = pci_bus_notify,
+};
+
+void __init pcibios_setup_bus_notifier(void)
+{
+ bus_register_notifier(&pci_bus_type, &device_nb);
+}
+
static void fixup_hide_host_resource_fsl(struct pci_dev *dev)
{
int i, class = dev->class >> 8;
diff --git a/arch/powerpc/kernel/pci_32.c b/arch/powerpc/kernel/pci_32.c
index 4b06ec5..640cc35 100644
--- a/arch/powerpc/kernel/pci_32.c
+++ b/arch/powerpc/kernel/pci_32.c
@@ -231,6 +231,8 @@ static int __init pcibios_init(void)
printk(KERN_INFO "PCI: Probing PCI hardware\n");
+ pcibios_setup_bus_notifier();
+
if (pci_has_flag(PCI_REASSIGN_ALL_BUS))
pci_assign_all_buses = 1;
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index 4ff190f..8b212d3 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -48,6 +48,8 @@ static int __init pcibios_init(void)
printk(KERN_INFO "PCI: Probing PCI hardware\n");
+ pcibios_setup_bus_notifier();
+
/* For now, override phys_mem_access_prot. If we need it,g
* later, we may move that initialization to each ppc_md
*/
diff --git a/arch/powerpc/kernel/pci_of_scan.c b/arch/powerpc/kernel/pci_of_scan.c
index ae5ea5e..eb09eca 100644
--- a/arch/powerpc/kernel/pci_of_scan.c
+++ b/arch/powerpc/kernel/pci_of_scan.c
@@ -333,7 +333,6 @@ static void __devinit __of_scan_bus(struct device_node *node,
*/
if (!rescan_existing)
pcibios_setup_bus_self(bus);
- pcibios_setup_bus_devices(bus);
/* Now scan child busses */
list_for_each_entry(dev, &bus->devices, bus_list) {
diff --git a/arch/powerpc/platforms/pseries/pci_dlpar.c b/arch/powerpc/platforms/pseries/pci_dlpar.c
index 3ccebc8..0b1b6b3 100644
--- a/arch/powerpc/platforms/pseries/pci_dlpar.c
+++ b/arch/powerpc/platforms/pseries/pci_dlpar.c
@@ -120,7 +120,6 @@ void pcibios_add_pci_devices(struct pci_bus * bus)
num = pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
if (!num)
return;
- pcibios_setup_bus_devices(bus);
max = bus->busn_res.start;
for (pass=0; pass < 2; pass++)
list_for_each_entry(dev, &bus->devices, bus_list) {
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 15d442a..43e0a4f 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -3789,11 +3789,6 @@ int __attribute__ ((weak)) pci_ext_cfg_avail(struct pci_dev *dev)
return 1;
}
-void __weak pci_fixup_cardbus(struct pci_bus *bus)
-{
-}
-EXPORT_SYMBOL(pci_fixup_cardbus);
-
static int __init pci_setup(char *str)
{
while (str) {
diff --git a/drivers/pcmcia/cardbus.c b/drivers/pcmcia/cardbus.c
index 24caeaf..a980691 100644
--- a/drivers/pcmcia/cardbus.c
+++ b/drivers/pcmcia/cardbus.c
@@ -71,7 +71,6 @@ int __ref cb_alloc(struct pcmcia_socket *s)
unsigned int max, pass;
s->functions = pci_scan_slot(bus, PCI_DEVFN(0, 0));
- pci_fixup_cardbus(bus);
max = bus->busn_res.start;
for (pass = 0; pass < 2; pass++)
@@ -85,7 +84,6 @@ int __ref cb_alloc(struct pcmcia_socket *s)
*/
pci_bus_size_bridges(bus);
pci_bus_assign_resources(bus);
- cardbus_config_irq_and_cls(bus, s->pci_irq);
/* socket specific tune function */
if (s->tune_bridge)
@@ -93,6 +91,7 @@ int __ref cb_alloc(struct pcmcia_socket *s)
pci_enable_bridges(bus);
pci_bus_add_devices(bus);
+ cardbus_config_irq_and_cls(bus, s->pci_irq);
return 0;
}
diff --git a/include/linux/pci.h b/include/linux/pci.h
index a0e2d7f..3924c02 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -651,9 +651,6 @@ resource_size_t pcibios_align_resource(void *, const struct resource *,
resource_size_t);
void pcibios_update_irq(struct pci_dev *, int irq);
-/* Weak but can be overriden by arch */
-void pci_fixup_cardbus(struct pci_bus *);
-
/* Generic PCI functions used internally */
void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
^ permalink raw reply related
* [PATCH v3 2/2] microblaze/PCI: move DMA & IRQ init to device_add() notification path
From: Bjorn Helgaas @ 2012-05-23 22:37 UTC (permalink / raw)
To: Hiroo Matsumoto
Cc: Michal Simek, microblaze-uclinux, Kenji Kaneshige, Jesse Larrew,
jbarnes, linux-pci, linuxppc-dev
In-Reply-To: <20120523222635.24276.80023.stgit@bhelgaas.mtv.corp.google.com>
From: Hiroo Matsumoto <matsumoto.hiroo@jp.fujitsu.com>
Microblaze initialized DMA and IRQ information in the pci_scan_child_bus()
-> pcibios_fixup_bus() path. Some hotplug drivers use that path, but
others don't, e.g., pciehp, so sometimes hot-added devices are only
partly initialized.
This patch moves that initialization from pcibios_fixup_bus() to a new
pci_bus_notify() called in the pci_bus_add_device() -> device_add() path.
That means the initialization happens the same way for all PCI devices,
whether they are present at boot or hot-added later.
[bhelgaas: changelog, notifier name, inline registration]
Signed-off-by: Hiroo MATSUMOTO <matsumoto.hiroo@jp.fujitsu.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
arch/microblaze/include/asm/pci.h | 1 -
arch/microblaze/pci/pci-common.c | 62 ++++++++++++++++++++-----------------
2 files changed, 34 insertions(+), 29 deletions(-)
diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
index a0da88b..2aa97fd 100644
--- a/arch/microblaze/include/asm/pci.h
+++ b/arch/microblaze/include/asm/pci.h
@@ -141,7 +141,6 @@ extern void pci_resource_to_user(const struct pci_dev *dev, int bar,
const struct resource *rsrc,
resource_size_t *start, resource_size_t *end);
-extern void pcibios_setup_bus_devices(struct pci_bus *bus);
extern void pcibios_setup_bus_self(struct pci_bus *bus);
/* This part of code was originally in xilinx-pci.h */
diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
index 9b32483..6487ed0 100644
--- a/arch/microblaze/pci/pci-common.c
+++ b/arch/microblaze/pci/pci-common.c
@@ -983,31 +983,6 @@ void __devinit pcibios_setup_bus_self(struct pci_bus *bus)
pcibios_fixup_bridge(bus);
}
-void __devinit pcibios_setup_bus_devices(struct pci_bus *bus)
-{
- struct pci_dev *dev;
-
- pr_debug("PCI: Fixup bus devices %d (%s)\n",
- bus->number, bus->self ? pci_name(bus->self) : "PHB");
-
- list_for_each_entry(dev, &bus->devices, bus_list) {
- /* Setup OF node pointer in archdata */
- dev->dev.of_node = pci_device_to_OF_node(dev);
-
- /* Fixup NUMA node as it may not be setup yet by the generic
- * code and is needed by the DMA init
- */
- set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
-
- /* Hook up default DMA ops */
- set_dma_ops(&dev->dev, pci_dma_ops);
- dev->dev.archdata.dma_data = (void *)PCI_DRAM_OFFSET;
-
- /* Read default IRQs and fixup if necessary */
- pci_read_irq_line(dev);
- }
-}
-
void __devinit pcibios_fixup_bus(struct pci_bus *bus)
{
/* When called from the generic PCI probe, read PCI<->PCI bridge
@@ -1019,9 +994,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *bus)
/* Now fixup the bus bus */
pcibios_setup_bus_self(bus);
-
- /* Now fixup devices on that bus */
- pcibios_setup_bus_devices(bus);
}
EXPORT_SYMBOL(pcibios_fixup_bus);
@@ -1512,6 +1484,38 @@ static void __devinit pcibios_scan_phb(struct pci_controller *hose)
hose->last_busno = bus->busn_res.end;
}
+static int pci_bus_notify(struct notifier_block *nb, unsigned long action,
+ void *data)
+{
+ struct pci_dev *dev = to_pci_dev(data);
+
+ switch (action) {
+ case BUS_NOTIFY_ADD_DEVICE:
+ /* Setup OF node pointer in archdata */
+ dev->dev.of_node = pci_device_to_OF_node(dev);
+
+ /* Fixup NUMA node as it may not be setup yet by the generic
+ * code and is needed by the DMA init
+ */
+ set_dev_node(&dev->dev, pcibus_to_node(dev->bus));
+
+ /* Hook up default DMA ops */
+ set_dma_ops(&dev->dev, pci_dma_ops);
+ dev->dev.archdata.dma_data = (void *)PCI_DRAM_OFFSET;
+
+ /* Read default IRQs and fixup if necessary */
+ pci_read_irq_line(dev);
+
+ break;
+ }
+
+ return 0;
+}
+
+static struct notifier_block device_nb = {
+ .notifier_call = pci_bus_notify,
+};
+
static int __init pcibios_init(void)
{
struct pci_controller *hose, *tmp;
@@ -1519,6 +1523,8 @@ static int __init pcibios_init(void)
printk(KERN_INFO "PCI: Probing PCI hardware\n");
+ bus_register_notifier(&pci_bus_type, &device_nb);
+
/* Scan all of the recorded PCI controllers. */
list_for_each_entry_safe(hose, tmp, &hose_list, list_node) {
hose->last_busno = 0xff;
^ permalink raw reply related
* [PATCH] [ppc] Do not reserve cpu spin-table for crash kernel
From: Suzuki K. Poulose @ 2012-05-24 6:09 UTC (permalink / raw)
To: kexec; +Cc: B29882, Simon Horman, linuxppc-dev
In-Reply-To: <CAEsOVNeg2aogCwCy-v3ez4cC4VPF79A4PWRaO2ohDj_ypqCWmg@mail.gmail.com>
As of now, the kexec reserves the spin-table for all the CPUs
on an SMP machine. The spin-table is pointed to by the
cpu-release-addr property in the device-tree. Reserving the
spin-table in the crash kernel will cause a BUG(), if the table
lies outside the memory reserved for the crashkernel.
Disable reserving the spin-table regions and use maxcpus=1 to
use only the crashing CPU to boot the crash kernel.
Signed-off-by: Suzuki K. Poulose <suzuki@in.ibm.com>
---
kexec/arch/ppc/crashdump-powerpc.c | 19 +++++++++++++------
kexec/arch/ppc/fixup_dtb.c | 4 ++++
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/kexec/arch/ppc/crashdump-powerpc.c b/kexec/arch/ppc/crashdump-powerpc.c
index 1bef69b..4c8c75d 100644
--- a/kexec/arch/ppc/crashdump-powerpc.c
+++ b/kexec/arch/ppc/crashdump-powerpc.c
@@ -262,10 +262,19 @@ static void ulltoa(unsigned long long i, char *str)
}
}
+/* Append str to cmdline */
+static void add_cmdline(char *cmdline, char *str)
+{
+ int cmdlen = strlen(cmdline) + strlen(str);
+ if (cmdlen > (COMMAND_LINE_SIZE - 1))
+ die("Command line overflow\n");
+ strcat(cmdline, str);
+}
+
static int add_cmdline_param(char *cmdline, unsigned long long addr,
char *cmdstr, char *byte)
{
- int cmdlen, len, align = 1024;
+ int align = 1024;
char str[COMMAND_LINE_SIZE], *ptr;
/* Passing in =xxxK / =xxxM format. Saves space required in cmdline.*/
@@ -284,11 +293,8 @@ static int add_cmdline_param(char *cmdline, unsigned long long addr,
ptr += strlen(str);
ulltoa(addr, ptr);
strcat(str, byte);
- len = strlen(str);
- cmdlen = strlen(cmdline) + len;
- if (cmdlen > (COMMAND_LINE_SIZE - 1))
- die("Command line overflow\n");
- strcat(cmdline, str);
+
+ add_cmdline(cmdline, str);
dbgprintf("Command line after adding elfcorehdr: %s\n", cmdline);
@@ -365,6 +371,7 @@ int load_crashdump_segments(struct kexec_info *info, char *mod_cmdline,
*/
add_cmdline_param(mod_cmdline, elfcorehdr, " elfcorehdr=", "K");
add_cmdline_param(mod_cmdline, saved_max_mem, " savemaxmem=", "M");
+ add_cmdline(mod_cmdline, " maxcpus=1");
return 0;
}
diff --git a/kexec/arch/ppc/fixup_dtb.c b/kexec/arch/ppc/fixup_dtb.c
index e9890a4..f832026 100644
--- a/kexec/arch/ppc/fixup_dtb.c
+++ b/kexec/arch/ppc/fixup_dtb.c
@@ -172,6 +172,9 @@ static void fixup_reserve_regions(struct kexec_info *info, char *blob_buf)
}
}
+#if 0
+ /* XXX: Do not reserve spin-table for CPUs. */
+
/* Add reserve regions for cpu-release-addr */
nodeoffset = fdt_node_offset_by_prop_value(blob_buf, -1, "device_type", "cpu", 4);
while (nodeoffset != -FDT_ERR_NOTFOUND) {
@@ -201,6 +204,7 @@ static void fixup_reserve_regions(struct kexec_info *info, char *blob_buf)
nodeoffset = fdt_node_offset_by_prop_value(blob_buf, nodeoffset,
"device_type", "cpu", 4);
}
+#endif
out:
print_fdt_reserve_regions(blob_buf);
^ permalink raw reply related
* Oops with Radeon/Uninorth on Maple
From: Dmitry Eremin-Solenikov @ 2012-05-24 6:18 UTC (permalink / raw)
To: linuxppc-dev; +Cc: David Airlie, Paul Mackerras, Michel Dänzer, dri-devel
Hello, colleagues,
I'm trying to enable an AGP slot (again) on my Maple board (dual
PPC970FX board, with CPC925 (U3H) north bridge).
For now I'm stuck with a problem: I use radeon card, drm-radeon driver
with KMS.
If I force drm-radeon to think about a card as about PCI card (by
commenting corresponding lines in drm_radeon_kms.c), everything works, I
get framebuffer, working X11, etc. If I enable agpgart-uninorth driver
and RADEON_IS_AGP flag in drm driver, I get an Oops early during the
bootstrap. Relevant part of the log (I can send full dmesg of normal
bootstrap or this oops on request, if that would help).
[ 2.820647] Linux agpgart interface v0.103
[ 2.824909] agpgart-uninorth 0000:f0:0b.0: Apple U3H chipset
[ 2.830668] agpgart-uninorth 0000:f0:0b.0: Found device u3, rev 35
[ 2.843611] agpgart-uninorth 0000:f0:0b.0: configuring for size idx: 64
[ 2.850638] agpgart-uninorth 0000:f0:0b.0: AGP aperture is 256M @ 0x0
[ 2.857646] [drm] Initialized drm 1.1.0 20060810
[ 2.862567] [drm] radeon defaulting to kernel modesetting.
[ 2.868091] [drm] radeon kernel modesetting enabled.
[ 2.873222] radeon 0000:f0:10.0: enabling device (0000 -> 0003)
[ 2.880311] radeon 0000:f0:10.0: enabling bus mastering
[ 2.885591] [drm] initializing kernel modesetting (RV350
0x1002:0x4152 0x18BC:0x0416).
[ 2.893629] [drm] register mmio base: 0xD0020000
[ 2.898260] [drm] register mmio size: 65536
[ 2.947112] [drm] GPU not posted. posting now...
[ 3.051033] agpgart-uninorth 0000:f0:0b.0: putting AGP V3 device into
8x mode
[ 3.058197] radeon 0000:f0:10.0: putting AGP V3 device into 8x mode
[ 3.064666] radeon 0000:f0:10.0: GTT: 256M 0x00000000 - 0x0FFFFFFF
[ 3.070864] [drm] Generation 2 PCI interface, using max accessible memory
[ 3.077672] radeon 0000:f0:10.0: VRAM: 128M 0x00000000C0000000 -
0x00000000C7FFFFFF (128M used)
[ 3.086487] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[ 3.093126] [drm] Driver supports precise vblank timestamp query.
[ 3.099291] [drm] radeon: irq initialized.
[ 3.103404] [drm] Detected VRAM RAM=128M, BAR=128M
[ 3.108214] [drm] RAM width 128bits DDR
[ 3.112263] [TTM] Zone kernel: Available graphics memory: 496682 kiB
[ 3.118732] [TTM] Initializing pool allocator
[ 3.123346] [drm] radeon: 128M of VRAM memory ready
[ 3.128256] [drm] radeon: 256M of GTT memory ready.
[ 3.133295] [drm] radeon: ib pool ready.
[ 3.137708] [drm] radeon: 1 quad pipes, 1 Z pipes initialized.
[ 3.144018] radeon 0000:f0:10.0: WB disabled
[ 3.148326] [drm] fence driver on ring 0 use gpu addr 0x00000000 and
cpu addr 0xd000000000066000
[ 3.157474] [drm] Loading R300 Microcode
[ 3.162480] [drm] radeon: ring at 0x0000000000001000
[ 3.167569] [drm] ring test succeeded in 0 usecs
cpu 0x0: Vector: 200 (Machine Check) at [c000000000d63aa0]
pc: c0000000000cc07c: .trace_hardirqs_on_caller+0x6c/0x190
lr: c0000000000152f4: .cpu_idle+0x1a4/0x220
sp: c000000000d63d20
msr: 9000000000009032
current = 0xc000000000c4db30
paca = 0xc00000000ffff000 softe: 0 irq_happened: 0x01
pid = 0, comm = swapper/0
enter ? for help
[c000000000d63db0] c0000000000152f4 .cpu_idle+0x1a4/0x220
[c000000000d63e50] c000000000008fb8 .rest_init+0xe8/0x110
[c000000000d63ee0] c000000000ba2998 .start_kernel+0x3e4/0x408
[c000000000d63f90] c000000000007558 .start_here_common+0x20/0x48
0:mon> x
[ 843.783295] Oops: Machine check, sig: 7 [#1]
[ 843.787589] SMP NR_CPUS=4 Maple
[ 843.790768] Modules linked in:
[ 843.793855] NIP: c0000000000cc07c LR: c0000000000152f4 CTR:
c000000000023eac
[ 843.800920] REGS: c000000000d63aa0 TRAP: 0200 Not tainted (3.4.0+)
[ 843.807376] MSR: 9000000000009032 <SF,HV,EE,ME,IR,DR,RI> CR:
24222222 XER: 00000006
[ 843.815412] SOFTE: 0
[ 843.817607] TASK = c000000000c4db30[0] 'swapper/0' THREAD:
c000000000d60000 CPU: 0
[ 843.825035] GPR00: 0000000000000000 c000000000d63d20 c000000000d63280
c0000000000152f4
[ 843.833169] GPR04: 0000000000000000 c000000000099d10 0000000000000001
0000000000000002
[ 843.841302] GPR08: 0100000000000000 c000000000e828e8 0140000000000000
0000000000000000
[ 843.849436] GPR12: 0000000044222282 c00000000ffff000 0000000000000000
0000000000000000
[ 843.857570] GPR16: 0000000000ff8750 0000000000cdc890 00000000010001e0
0000000000000000
[ 843.865702] GPR20: 0000000000000000 0000000000000000 000000001dcd6500
0000000000000000
[ 843.873835] GPR24: 0000000000000000 0000000000ec7b00 9000000000009032
c000000000d7b178
[ 843.881979] GPR28: c000000000d7b278 0000000000000008 c000000000c970f8
c0000000000152f4
[ 843.890314] NIP [c0000000000cc07c] .trace_hardirqs_on_caller+0x6c/0x190
[ 843.896942] LR [c0000000000152f4] .cpu_idle+0x1a4/0x220
[ 843.902181] Call Trace:
[ 843.904640] [c000000000d63d20] [c000000000d63db0]
init_thread_union+0x3db0/0x4000 (unreliable)
[ 843.913317] [c000000000d63db0] [c0000000000152f4] .cpu_idle+0x1a4/0x220
[ 843.919964] [c000000000d63e50] [c000000000008fb8] .rest_init+0xe8/0x110
[ 843.926615] [c000000000d63ee0] [c000000000ba2998]
.start_kernel+0x3e4/0x408
[ 843.933611] [c000000000d63f90] [c000000000007558]
.start_here_common+0x20/0x48
[ 843.940866] Instruction dump:
[ 843.943868] 40de00a4 e92d01c8 800908e8 2f800000 40de0094 e93e8098
80090000 2f800000
[ 843.951829] 409e0030 880d01f2 2fa00000 40de00b0 <e93e84e8> 88090000
2f800000 40de00c8
Looking for any suggestions on this.
--
With best wishes
Dmitry
^ permalink raw reply
* [PATCH 1/2] powerpc/85xx: Add P1024rdb dts support
From: b29983 @ 2012-05-24 9:08 UTC (permalink / raw)
To: galak; +Cc: Tang Yuantian, devicetree-discuss, linuxppc-dev
From: Tang Yuantian <Yuantian.Tang@freescale.com>
Signed-off-by: Jin Qing <b24347@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
Signed-off-by: Tang Yuantian <Yuantian.Tang@freescale.com>
---
arch/powerpc/boot/dts/p1024rdb.dtsi | 228 ++++++++++++++++++++++++++++++++
arch/powerpc/boot/dts/p1024rdb_32b.dts | 87 ++++++++++++
arch/powerpc/boot/dts/p1024rdb_36b.dts | 87 ++++++++++++
3 files changed, 402 insertions(+), 0 deletions(-)
create mode 100644 arch/powerpc/boot/dts/p1024rdb.dtsi
create mode 100644 arch/powerpc/boot/dts/p1024rdb_32b.dts
create mode 100644 arch/powerpc/boot/dts/p1024rdb_36b.dts
diff --git a/arch/powerpc/boot/dts/p1024rdb.dtsi b/arch/powerpc/boot/dts/p1024rdb.dtsi
new file mode 100644
index 0000000..b05dcb4
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1024rdb.dtsi
@@ -0,0 +1,228 @@
+/*
+ * P1024 RDB Device Tree Source stub (no addresses or top-level ranges)
+ *
+ * Copyright 2012 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Freescale Semiconductor nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+&lbc {
+ nor@0,0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "cfi-flash";
+ reg = <0x0 0x0 0x1000000>;
+ bank-width = <2>;
+ device-width = <1>;
+
+ partition@0 {
+ /* This location must not be altered */
+ /* 256KB for Vitesse 7385 Switch firmware */
+ reg = <0x0 0x00040000>;
+ label = "NOR Vitesse-7385 Firmware";
+ read-only;
+ };
+
+ partition@40000 {
+ /* 256KB for DTB Image */
+ reg = <0x00040000 0x00040000>;
+ label = "NOR DTB Image";
+ };
+
+ partition@80000 {
+ /* 3.5 MB for Linux Kernel Image */
+ reg = <0x00080000 0x00380000>;
+ label = "NOR Linux Kernel Image";
+ };
+
+ partition@400000 {
+ /* 11MB for JFFS2 based Root file System */
+ reg = <0x00400000 0x00b00000>;
+ label = "NOR JFFS2 Root File System";
+ };
+
+ partition@f00000 {
+ /* This location must not be altered */
+ /* 512KB for u-boot Bootloader Image */
+ /* 512KB for u-boot Environment Variables */
+ reg = <0x00f00000 0x00100000>;
+ label = "NOR U-Boot Image";
+ read-only;
+ };
+ };
+
+ nand@1,0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,p1020-fcm-nand",
+ "fsl,elbc-fcm-nand";
+ reg = <0x1 0x0 0x40000>;
+
+ partition@0 {
+ /* This location must not be altered */
+ /* 1MB for u-boot Bootloader Image */
+ reg = <0x0 0x00100000>;
+ label = "NAND U-Boot Image";
+ read-only;
+ };
+
+ partition@100000 {
+ /* 1MB for DTB Image */
+ reg = <0x00100000 0x00100000>;
+ label = "NAND DTB Image";
+ };
+
+ partition@200000 {
+ /* 4MB for Linux Kernel Image */
+ reg = <0x00200000 0x00400000>;
+ label = "NAND Linux Kernel Image";
+ };
+
+ partition@600000 {
+ /* 4MB for Compressed Root file System Image */
+ reg = <0x00600000 0x00400000>;
+ label = "NAND Compressed RFS Image";
+ };
+
+ partition@a00000 {
+ /* 15MB for JFFS2 based Root file System */
+ reg = <0x00a00000 0x00f00000>;
+ label = "NAND JFFS2 Root File System";
+ };
+
+ partition@1900000 {
+ /* 7MB for User Writable Area */
+ reg = <0x01900000 0x00700000>;
+ label = "NAND Writable User area";
+ };
+ };
+};
+
+&soc {
+ spi@7000 {
+ flash@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "spansion,m25p80";
+ reg = <0>;
+ spi-max-frequency = <40000000>;
+
+ partition@0 {
+ /* 512KB for u-boot Bootloader Image */
+ reg = <0x0 0x00080000>;
+ label = "SPI U-Boot Image";
+ read-only;
+ };
+
+ partition@80000 {
+ /* 512KB for DTB Image */
+ reg = <0x00080000 0x00080000>;
+ label = "SPI DTB Image";
+ };
+
+ partition@100000 {
+ /* 4MB for Linux Kernel Image */
+ reg = <0x00100000 0x00400000>;
+ label = "SPI Linux Kernel Image";
+ };
+
+ partition@500000 {
+ /* 4MB for Compressed RFS Image */
+ reg = <0x00500000 0x00400000>;
+ label = "SPI Compressed RFS Image";
+ };
+
+ partition@900000 {
+ /* 7MB for JFFS2 based RFS */
+ reg = <0x00900000 0x00700000>;
+ label = "SPI JFFS2 RFS";
+ };
+ };
+ };
+
+ i2c@3000 {
+ rtc@68 {
+ compatible = "dallas,ds1339";
+ reg = <0x68>;
+ };
+ };
+
+ usb@22000 {
+ phy_type = "ulpi";
+ };
+
+ usb@23000 {
+ status = "disabled";
+ };
+
+ mdio@24000 {
+ phy0: ethernet-phy@0 {
+ interrupts = <3 1 0 0>;
+ reg = <0x0>;
+ };
+ phy1: ethernet-phy@1 {
+ interrupts = <2 1 0 0>;
+ reg = <0x1>;
+ };
+ phy2: ethernet-phy@2 {
+ interrupts = <1 1 0 0>;
+ reg = <0x2>;
+ };
+ };
+
+ mdio@25000 {
+ tbi0: tbi-phy@11 {
+ reg = <0x11>;
+ device_type = "tbi-phy";
+ };
+ };
+
+ mdio@26000 {
+ tbi1: tbi-phy@11 {
+ reg = <0x11>;
+ device_type = "tbi-phy";
+ };
+ };
+
+ ethernet@b0000 {
+ phy-handle = <&phy2>;
+ phy-connection-type = "rgmii-id";
+ };
+
+ ethernet@b1000 {
+ phy-handle = <&phy0>;
+ tbi-handle = <&tbi0>;
+ phy-connection-type = "sgmii";
+ };
+
+ ethernet@b2000 {
+ phy-handle = <&phy1>;
+ phy-connection-type = "rgmii-id";
+ };
+};
diff --git a/arch/powerpc/boot/dts/p1024rdb_32b.dts b/arch/powerpc/boot/dts/p1024rdb_32b.dts
new file mode 100644
index 0000000..90e803e
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1024rdb_32b.dts
@@ -0,0 +1,87 @@
+/*
+ * P1024 RDB 32Bit Physical Address Map Device Tree Source
+ *
+ * Copyright 2012 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Freescale Semiconductor nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/include/ "fsl/p1020si-pre.dtsi"
+/ {
+ model = "fsl,P1024RDB";
+ compatible = "fsl,P1024RDB";
+
+ memory {
+ device_type = "memory";
+ };
+
+ lbc: localbus@ffe05000 {
+ reg = <0x0 0xffe05000 0 0x1000>;
+ ranges = <0x0 0x0 0x0 0xef000000 0x01000000
+ 0x1 0x0 0x0 0xff800000 0x00040000>;
+ };
+
+ soc: soc@ffe00000 {
+ ranges = <0x0 0x0 0xffe00000 0x100000>;
+ };
+
+ pci0: pcie@ffe09000 {
+ reg = <0x0 0xffe09000 0 0x1000>;
+ ranges = <0x2000000 0x0 0xe0000000 0x0 0xa0000000 0x0 0x20000000
+ 0x1000000 0x0 0x00000000 0x0 0xffc10000 0x0 0x10000>;
+ pcie@0 {
+ ranges = <0x2000000 0x0 0xe0000000
+ 0x2000000 0x0 0xe0000000
+ 0x0 0x20000000
+
+ 0x1000000 0x0 0x0
+ 0x1000000 0x0 0x0
+ 0x0 0x100000>;
+ };
+ };
+
+ pci1: pcie@ffe0a000 {
+ reg = <0x0 0xffe0a000 0 0x1000>;
+ ranges = <0x2000000 0x0 0xe0000000 0x0 0x80000000 0x0 0x20000000
+ 0x1000000 0x0 0x00000000 0x0 0xffc00000 0x0 0x10000>;
+ pcie@0 {
+ reg = <0x0 0x0 0x0 0x0 0x0>;
+ ranges = <0x2000000 0x0 0xe0000000
+ 0x2000000 0x0 0xe0000000
+ 0x0 0x20000000
+
+ 0x1000000 0x0 0x0
+ 0x1000000 0x0 0x0
+ 0x0 0x100000>;
+ };
+ };
+};
+
+/include/ "p1024rdb.dtsi"
+/include/ "fsl/p1020si-post.dtsi"
diff --git a/arch/powerpc/boot/dts/p1024rdb_36b.dts b/arch/powerpc/boot/dts/p1024rdb_36b.dts
new file mode 100644
index 0000000..3656825
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1024rdb_36b.dts
@@ -0,0 +1,87 @@
+/*
+ * P1024 RDB 36Bit Physical Address Map Device Tree Source
+ *
+ * Copyright 2012 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Freescale Semiconductor nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/include/ "fsl/p1020si-pre.dtsi"
+/ {
+ model = "fsl,P1024RDB";
+ compatible = "fsl,P1024RDB";
+
+ memory {
+ device_type = "memory";
+ };
+
+ lbc: localbus@fffe05000 {
+ reg = <0xf 0xffe05000 0 0x1000>;
+ ranges = <0x0 0x0 0xf 0xef000000 0x01000000
+ 0x1 0x0 0xf 0xff800000 0x00040000>;
+ };
+
+ soc: soc@fffe00000 {
+ ranges = <0x0 0xf 0xffe00000 0x100000>;
+ };
+
+ pci0: pcie@fffe09000 {
+ reg = <0xf 0xffe09000 0 0x1000>;
+ ranges = <0x2000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x20000000
+ 0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000>;
+ pcie@0 {
+ ranges = <0x2000000 0x0 0xe0000000
+ 0x2000000 0x0 0xe0000000
+ 0x0 0x20000000
+
+ 0x1000000 0x0 0x0
+ 0x1000000 0x0 0x0
+ 0x0 0x100000>;
+ };
+ };
+
+ pci1: pcie@fffe0a000 {
+ reg = <0xf 0xffe0a000 0 0x1000>;
+ ranges = <0x2000000 0x0 0xe0000000 0xc 0x00000000 0x0 0x20000000
+ 0x1000000 0x0 0x00000000 0xf 0xffc00000 0x0 0x10000>;
+ pcie@0 {
+ reg = <0x0 0x0 0x0 0x0 0x0>;
+ ranges = <0x2000000 0x0 0xe0000000
+ 0x2000000 0x0 0xe0000000
+ 0x0 0x20000000
+
+ 0x1000000 0x0 0x0
+ 0x1000000 0x0 0x0
+ 0x0 0x100000>;
+ };
+ };
+};
+
+/include/ "p1024rdb.dtsi"
+/include/ "fsl/p1020si-post.dtsi"
--
1.6.4
^ permalink raw reply related
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