* Re: [meta-efl][meta-oe 05/12] id3lib: Import from openembedded classic
From: Philip Balister @ 2011-10-31 21:18 UTC (permalink / raw)
To: openembedded-devel
In-Reply-To: <j8mn18$usd$1@dough.gmane.org>
On 10/31/2011 01:48 PM, Koen Kooi wrote:
> Op 31-10-11 17:24, Paul Menzel schreef:
>> Am Montag, den 31.10.2011, 11:50 +0100 schrieb Koen Kooi:
>>> Op 29-10-11 14:33, Paul Menzel schreef:
>>>> Dear Martin, dear Denis,
>>>>
>>>>
>>>> Am Samstag, den 29.10.2011, 12:29 +0200 schrieb Martin Jansa:
>>>>> From: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
>>>>>
>>>>> Added LIC_FILES_CHKSUM, and fixed LICENSE
>>>>>
>>>>> Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
>>>>> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
>>>>
>>>> NACK.
>>>>
>>>> please add the version you import and the commit ID you import from.
>>>> This is all written in the guide lines [1]!
>>>
>>> And as I've said before, meta-oe is not oe-dev, so you can't use take
>>> the old 'rules' and apply them to meta-oe 1:1!
>
>> The guide lines I referred to [1] have been written for OE-core. ;-)
>
> Yes, and oe-core still isn't meta-oe
Why would we need different guidelines?
Philip
^ permalink raw reply
* Re: Which filesystem for target?
From: Chris Tapp @ 2011-10-31 21:24 UTC (permalink / raw)
To: yocto
In-Reply-To: <201110311016.00534.paul.eggleton@linux.intel.com>
On 31 Oct 2011, at 10:16, Paul Eggleton wrote:
> On Friday 28 October 2011 23:11:22 Chris Tapp wrote:
>> Which is the 'best' filesystem to use for an embedded device that's
>> using a CF card?
>>
>> ...
>
> Arnd Bergmann gave a talk at ELCE on flash drive performance
> (something he has
> done quite a lot of research on); I did not attend but Darren and I
> spoke to
> him later on, and if I recall correctly in his tests btrfs performed
> the best.
> Hopefully the talk video will be available soon thanks to the folks
> at Free
> Electrons; in the mean time there's an earlier article by Arnd on
> this topic
> here:
>
> http://lwn.net/Articles/428584/
Thanks, that's a very good article that may explain some issues I've
been seeing.
Chris
^ permalink raw reply
* Re: [Qemu-devel] [libvirt] RFC decoupling VM NIC provisioning from VM NIC connection to backend networks
From: Christian Benvenuti (benve) @ 2011-10-31 21:23 UTC (permalink / raw)
To: Daniel P. Berrange, Sumit Naiksatam (snaiksat)
Cc: libvir-list, David Wang (dwang2), Ram Durairaj (radurair),
qemu-devel
In-Reply-To: <20111031104905.GC27570@redhat.com>
> -----Original Message-----
> From: qemu-devel-bounces+benve=cisco.com@nongnu.org [mailto:qemu-devel-
> bounces+benve=cisco.com@nongnu.org] On Behalf Of Daniel P. Berrange
> Sent: Monday, October 31, 2011 3:49 AM
> To: Sumit Naiksatam (snaiksat)
> Cc: libvir-list@redhat.com; David Wang (dwang2); Ram Durairaj
> (radurair); qemu-devel@nongnu.org
> Subject: Re: [Qemu-devel] [libvirt] RFC decoupling VM NIC provisioning
> from VM NIC connection to backend networks
>
> On Fri, Oct 28, 2011 at 04:15:41PM -0700, Sumit Naiksatam (snaiksat)
> wrote:
> > Hi,
> >
> > In its current implementation Libvirt makes sure that the network
> > interfaces that it passes/provision to a VM (for example to qemu[-
> kvm])
> > are already connected to its backend (interfaces/networks) by the
> time
> > the VM starts its boot process. In a non virtualized setup it would
> be
> > like booting a machine with the Ethernet cable already plugged into a
> > router/switch port. While in a non virtualized setup you can boot a
> > machine first (with no physical connection to a router/switch) and
> later
> > connect its NIC/s to the switch/router, when you boot a VM via
> Libvirt
> > it is not possible to decouple the two actions (VM boot, cable
> > plug/unplug).
> >
> > An example of case where the capability of decoupling the two actions
> > mentioned above is a requirement in Quantum/NetStack which is the
> > network service leveraged by OpenStack. The modular design of
> OpenStack
> > allows you to:
> > - provision VMs with NIC/s
> > - create networks
> > - create ports on networks
> > - plug/unplug a VM NIC into/from a given port on a network (at
> runtime)
> >
> > Note that this runtime plug/unplug requirement has nothing to do with
> > hot plug/unplug of NICs.
> > The idea is more that of decoupling the provisioning of a VM from the
> > connection of the VM to the network/s.
> > This would make it possible to change (at run-time too) the networks
> the
> > NIC/s of a given VM are connected to.
> >
> > For example, when a VM boots, its interfaces should be in link down
> > state if the network admin has not connected the VM NIC/s to any
> > "network" yet.
> > Even though libvirt already provides a way to change the link state
> of
> > an a VM NIC, link state and physical connection are two different
> things
> > and should be manageable independently.
> >
> > Ideally the configuration syntax should be interface type and
> hypervisor
> > type agnostic.
> >
> > Let's take QEMU[-kvm] as an example - when Libvirt starts a QEMU VM,
> it
> > passes to QEMU a number of file descriptors that map to host backend
> > interfaces (for example macvtap interfaces).
> >
> > In order to introduce this runtime plug/unplug capability, we need a
> > mechanism that permits to delay the binding between the host macvtap
> > interfaces and the guest taps (because you cannot know the fd of the
> > macvtap interfaces before you create them). This means you need a
> > mechanism that allows you to change such fd/s at runtime:
> >
> > - you can close/reset an fd (ie, when you disconnect a VM NIC from
> its
> > network)
> > - you can open/set an fd (ie, when you connect a VM NIC to a network)
> >
> > This could probably be a libvirt command that translates to a QEMU
> > monitor command.
> >
> > Can the runtime plug/unplug capability described above be achieved
> > (cleanly) with another mechanism?
> >
> > Is anybody working on implementing something similar?
>
> No, but I've long thought about doing this & it is quite
> straightforward
> todo really. Ordinarily when we start QEMU we do
>
> qemu ... -device e1000,id=nic0,netdev=netdevnic0 \
> -netdev user,id=netdevnic0
>
> Todo what you describe we need to be able to:
>
> 1. Start QEMU with a NIC, but no netdev
> 2. Add a netdev to running QEMU.
> 3. Remove a netdev from a running QEMU
> 4. Associate a netdev with a NIC in running QEMU
>
> We can do 1:
>
> $ qemu ... -device e1000,id=nic0
>
> But QEMU prints an annoying warning
>
> Warning: nic nic0 has no peer
If we introduce this new functionality, can this warning change?
If we change it, would it break any test/script?
Actually it is just a warning (not an error). Why do you think it
is annoying? (I guess it is supposed to catch misconfigurations)
> We can do 2 via the monitor:
>
> (qemu) netdev_add type=user,id=netdevnic0
>
> We can do 3 via the monitor:
>
> (qemu) netdev_del netdevnic0
>
>
> The problem is 4 - AFAICT we can't connect the existing NIC upto the
> newly
> hotplugged netdev, since we can't update the 'netdev' property in the
> NIC
> device. Also if we delete the netdev, we can't clear out the 'netdev'
> property in the NIC, so its dangling to a netdev that no longer exists.
> The latter is fairly harmless, since we can just re-use the name if
> adding
> a new backend later. The first problem is a bit of a pain, unless we
> plug
> in a 'user' backend on the CLI, and immediately netdev_del it before
> starting
> the CPUs. Ideally we'd have some way to set qdev properties for devices
> so we
> can associate the NIC with the new netdev.
>
> eg when adding a netdev:
>
> (qemu) netdev_add type=user,id=netdevnic0
> (qemu) set nic0 netdev=netdevnic0
>
> Or removing one
>
> (qemu) netdev_add netdevnic0
> (qemu) unset nic0 netdev
>
>
> WRT to libvirt XML config. Normally you specifiy a NIC like
>
> <interface type='network'>
> <mac address='52:54:00:0f:7d:ad'/>
> <source network='default'/>
> <model type='virtio'/>
> </interface>
>
> To boot a guest without any netdev backend present, we'd introduce a
> new network type="none". eg
>
> <interface type='none'>
> <mac address='52:54:00:0f:7d:ad'/>
> <model type='virtio'/>
> </interface>
>
> The existing API 'virDomainUpdateDevice', can then be used to change
> the interface config on the fly, adding or removing the netdev by
> passing in new XML with a different 'type' attribute & <source>
> element.
>
> Finally, when adding & removing the netdev backends to a running guest,
> we likely want to be able to set the NIC's link carrier, so the guest
> OS sees that it has lost / gain its network connection & will thus
> retry DHCP / IPv6 autoconfig.
I assume this is what you meant:
- when the NIC does not have a backend netdev configured, its link
state is DOWN by default. Right?
(*) Would it make sense to provide anyway the possibility of setting
the link state in this case too? (ie, ability to force link UP also
when there is no backend netdev configured).
There may be use cases where this could be needed, but I can't think
of any right now.
- When you unbind a NIC from a backend netdev (ie, "unset" command above)
the NIC's link goes down (unless the above (*) option said otherwise)
- When you bind a NIC to a backend netdev (ie, "set" command above), the
NIC link state should be copied from the backend netdev link state.
For example, when you plug an Ethernet NIC to a switch, the NIC receives
link UP only if the switch's port is UP.
This means that the NIC link state reflects the backend netdev's link state
(ie, the NIC is not always UP regardless of the backend netdev's link state).
/Chris
> There is already a QEMU montior command
> 'set_link' for changing the NIC link carrier. A minor problem is that,
> AFAICT, we can't specify the link carrier state on the command line
> when specifying the NIC hardware, eg we would want something like
> this when starting a guest without a netdev back
>
> qemu ... -device e1000,id=nic0,link=down
>
> And when adding a netdev we would do
>
> (qemu) netdev_add user,id=netdevnic0
> (qemu) set nic0 netdev=netdevnic0
> (qemu) set_link nic0 up
>
> Or when removing a netdev
>
> (qemu) set_link nic0 down
> (qemu) unset nic0 netdev
> (qemu) netdev_del user,id=netdevnic0
>
>
> Regards,
> Daniel
> --
> |: http://berrange.com -o-
> http://www.flickr.com/photos/dberrange/ :|
> |: http://libvirt.org -o- http://virt-
> manager.org :|
> |: http://autobuild.org -o-
> http://search.cpan.org/~danberr/ :|
> |: http://entangle-photo.org -o- http://live.gnome.org/gtk-
> vnc :|
^ permalink raw reply
* Re: [RFC][PATCH 0/2] PM / Sleep: Extended control of suspend/hibernate interfaces
From: Ming Lei @ 2011-10-31 21:23 UTC (permalink / raw)
To: NeilBrown
Cc: Rafael J. Wysocki, Linux PM list, mark gross, LKML, John Stultz,
Alan Stern
In-Reply-To: <20111101081554.52ee5b38@notabene.brown>
Hi,
On Tue, Nov 1, 2011 at 5:15 AM, NeilBrown <neilb@suse.de> wrote:
> On Tue, 1 Nov 2011 03:55:50 +0800 Ming Lei <tom.leiming@gmail.com> wrote:
>
>> Hi,
>>
>> On Fri, Oct 14, 2011 at 3:45 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>>
>> > Second, to address the backup problem, we need to allow user space
>> > processes other than the suspend/hibernate process itself to prevent the
>> > system from being put into sleep states. A mechanism for that is introduced
>> > by the second patch in the form of the /dev/sleepctl special device working
>> > kind of like user space wakelocks on Android (although in a simplified
>> > fashion).
>>
>> I also have another similar example: write(fd, buffer, 100*4096).
>>
>> Suppose only 80*4096 are copied into pages of the file, then someone
>> run ' echo mem > /sys/power/state ' to trigger system sleep, so only
>> partial writing is completed before system sleep and data inconsistence
>> may be caused for the file on filesystem.
>>
>> But I am not sure if it is possible to happen in reality.
>>
>> thank,
>
> I'm not sure if it is possible either, but even if it is it isn't a new
> problem. A suspend is expected to leave all sorts of external things in
> inconsistent states. The contents of memory implicitly records all these
> inconsistencies and allows them to be resolved in the normal course of things
> after resume.
> If you lose power to memory during suspend then you can certainly expect
> filesystems to be corrupted in exactly the same sort of way that they can be
Also if the external some usb mass storage is disconnected during suspend, then
filesystem on the device may be corrupted too, but it is a very reason operation
for user.
> corrupted by a crash. This has always been the case and I assume always will
> (until we get main-memory that preserves state without power)
>
> We want to block suspend during backups not to avoid corruption but simply to
> allow the backups to complete promptly.
Yes, it does make sense.
thanks,
--
Ming Lei
^ permalink raw reply
* Any way to disable /a/g rates using 'iw'?
From: Ben Greear @ 2011-10-31 21:23 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
I notice the iw dev wlan0 set bitrates takes legacy-2.4
and legacy-5 as an argument.
Is there any way to disable all /a/g rates on 5Ghz? Basically,
I want to force the interface to only us /b rates even if the
AP it finds is on 5Ghz. I would expect in this case that it
would just fail to associate.
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* [U-Boot] [PATCH 1/2] nand_spl_simple: Add omap3 DMA usage to SPL
From: Scott Wood @ 2011-10-31 21:22 UTC (permalink / raw)
To: u-boot
In-Reply-To: <4EAE62D6.5030109@gmail.com>
On 10/31/2011 03:56 AM, Simon Schwarz wrote:
> Dear Scott,
>
> On 10/25/2011 08:24 PM, Scott Wood wrote:
>> On 10/16/2011 05:10 AM, Simon Schwarz wrote:
>>> This adds DMA copy for the nand spl implementation. If CONFIG_SPL_DMA_SUPPORT
>>> is defined the DMA is used.
>>>
>>> Based on DMA driver patch:
>>> http://thread.gmane.org/gmane.comp.boot-loaders.u-boot/109744/focus=109747
>>
>> As Wolfgang pointed out, this doesn't belong here. Create your own
>> alternate SPL driver if your hardware doesn't work with the simple one
>> (similar to the not-yet-migrated nand_spl/nand_boot_fsl_elbc.c,
>> nand_spl/nand_boot_fsl_ifc.c, etc).
>>
>
> Hm. The naming of the functions was a fault. Will rename the calls in
> nand_spl_simple to remove omap parts. So
> omap3_dma_wait_for_transfer
> will become
> dma_wait_for_transfer
> etc.
>
> So a board which intents to use DMA in SPL can implement these
> functions. Would this be ok?
What would the semantics of a generic dma_wait_for_transfer() be?
I just don't see how this is generic at all, whatever the name.
> A whole new driver is IMHO not the right thing as there is too much
> duplicated code then.
So factor the common bits out into a separate file.
>>> @@ -46,11 +59,11 @@ static int nand_command(int block, int page, uint32_t offs,
>>> this->cmd_ctrl(&mtd, offs, NAND_CTRL_ALE | NAND_CTRL_CHANGE);
>>> this->cmd_ctrl(&mtd, page_addr& 0xff, NAND_CTRL_ALE); /* A[16:9] */
>>> this->cmd_ctrl(&mtd, (page_addr>> 8)& 0xff,
>>> - NAND_CTRL_ALE); /* A[24:17] */
>>> + NAND_CTRL_ALE); /* A[24:17] */
>>> #ifdef CONFIG_SYS_NAND_4_ADDR_CYCLE
>>> /* One more address cycle for devices> 32MiB */
>>> this->cmd_ctrl(&mtd, (page_addr>> 16)& 0x0f,
>>> - NAND_CTRL_ALE); /* A[28:25] */
>>> + NAND_CTRL_ALE); /* A[28:25] */
>>> #endif
>>
>> Please refrain from making random unrelated whitespace changes in a
>> patch that also makes functional changes, particularly when they are
>> extensive enough to make it hard to spot the functional changes.
>>
>> In this particular case, I think the whitespace was fine the way it was;
>> the continuation lines were nicely aligned.
>
>
> If I remember right I changed these because of checkpatch errors.
I believe checkpatch only complains when you have 8 or more spaces in a
row, which isn't the case here. I don't think there's any prohibition
on lining things up with single-column granularity.
Further, checkpatch should not be complaining about lines that you don't
touch.
Where reformatting is warranted, it should be a separate patch.
-Scott
^ permalink raw reply
* Re: In regard of commit "gudev: Use strtoul to parse unsigned 64-bit integers"
From: Kay Sievers @ 2011-10-31 21:22 UTC (permalink / raw)
To: linux-hotplug
In-Reply-To: <20111031201318.GA2447@blackspire>
On Mon, Oct 31, 2011 at 21:44, David Zeuthen <zeuthen@gmail.com> wrote:
> I looked more into this and we should probably just use
> g_ascii_strtoull() since that function always returns a guint64 no
> matter whether you are on 32- or 64-bit. The attached patch does this.
> Kay: please apply.
Done.
Thanks,
Kay
^ permalink raw reply
* Re: [PATCH] i2c-gpio.c: correct logic of pdata->scl_is_open_drain
From: Håvard Skinnemoen @ 2011-10-31 21:21 UTC (permalink / raw)
To: Voss, Nikolaus; +Cc: linux-arm-kernel@lists.infradead.org, Linux Kernel
In-Reply-To: <EF2E73589CA71846A15D0B2CDF79505D087B34BE51@wm021.weinmann.com>
On Mon, Oct 31, 2011 at 9:14 AM, Voss, Nikolaus <N.Voss@weinmann.de> wrote:
> If pdata->scl_is_open_drain was set, the driver used push-pull output
> for SCL, not open-drain output.
>
> Signed-off-by: Nikolaus Voss <n.voss@weinmann.de>
{sda,scl}_is_open_drain indicates that the GPIO hardware is set up to
do open drain so the software doesn't have to, i.e.
gpio_set_value(pin, 1) will turn off the output driver rather than
drive the pin high, so the _val functions will do the right thing.
In other words, the existing code is correct.
Havard
^ permalink raw reply
* [PATCH] i2c-gpio.c: correct logic of pdata->scl_is_open_drain
From: Håvard Skinnemoen @ 2011-10-31 21:21 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <EF2E73589CA71846A15D0B2CDF79505D087B34BE51@wm021.weinmann.com>
On Mon, Oct 31, 2011 at 9:14 AM, Voss, Nikolaus <N.Voss@weinmann.de> wrote:
> If pdata->scl_is_open_drain was set, the driver used push-pull output
> for SCL, not open-drain output.
>
> Signed-off-by: Nikolaus Voss <n.voss@weinmann.de>
{sda,scl}_is_open_drain indicates that the GPIO hardware is set up to
do open drain so the software doesn't have to, i.e.
gpio_set_value(pin, 1) will turn off the output driver rather than
drive the pin high, so the _val functions will do the right thing.
In other words, the existing code is correct.
Havard
^ permalink raw reply
* [U-Boot] (no subject)
From: Tahani Kalender @ 2011-10-31 21:21 UTC (permalink / raw)
To: u-boot
Congratulation Your Email Address Have Won ?1,000,000.00 From The ICC CRICKET WORLD CUP-2011 for prize claims Contact Dr Dennis Smith on Email: iccwcluk2 at hotmail.co.uk
Tel:+447010050861
^ permalink raw reply
* ACPI ERROR SMBus or IPMI write requires Buff of len 66, found 32...???? linux-3.0.0
From: Linda Walsh @ 2011-10-31 21:16 UTC (permalink / raw)
To: LKML
Was looking through boot log messages, and this one seemed 'new'...
is this saying that the device requires 66, but the driver allocated 32
bytes?
Or the opposite: i.e. driver requires 66 (according to some new
standard**) but the
device from 2009, has the 2009 standard of 32?
Just a WAG, but 20110413 looks like a date, that is certainly newer than
the system, though
it has had firmware upgrades (though none in the past 6 months or so...)...
Seems like a weird thing to be changed across drivers while not
providing for some backward
compat, but that's purely based on a notion that there's a driver/hw
version mismatch now
when before, there were no such error messages (maybe the error message
is new, and it's
always been broken? ;-) )...
as subj says linux-3.0.0, stock vanilla + the latest IMQ networkfilter
patch.
X64
[ 13.722612] ACPI Error: SMBus or IPMI write requires Buffer of length
66, found length 32 (20110413/exfield-285)
[ 13.733078] ACPI Error: Method parse/execution failed
[\_SB_.PMI0._GHL] (Node ffff880616962b18), AE_AML_BUFFER_LIMIT
(20110413/psparse-536)
[ 13.746189] ACPI Error: Method parse/execution failed
[\_SB_.PMI0._PMC] (Node ffff880616962a78), AE_AML_BUFFER_LIMIT
[ 13.755322] dca service started, version 1.12.1[ 13.761822]
(20110413/psparse-536)
[ 13.765509] ACPI Exception: AE_AML_BUFFER_LIMIT, Evaluating _PMC
(20110413/power_meter-773)
Did something that would cause this? I haven't determined what the
impact of the above
problem is -- it might be some status progs no longer work OR maybe
never worked, and now
may have a clue... ? Any insights?
^ permalink raw reply
* [U-Boot] [PATCH] image: Allow images to indicate they're loadable at any address
From: Simon Glass @ 2011-10-31 21:20 UTC (permalink / raw)
To: u-boot
In-Reply-To: <1319464779-23571-1-git-send-email-swarren@nvidia.com>
On Mon, Oct 24, 2011 at 6:59 AM, Stephen Warren <swarren@nvidia.com> wrote:
> The legacy uImage format includes an absolute load and entry-
> point address. When presented with a uImage in memory that
> isn't loaded at the address in the image's load address,
> U-Boot will relocate the image to its address in the header.
>
> Some payloads can actually be loaded and used at any arbitrary
> address. An example is an ARM Linux kernel zImage file. This
> is useful when sharing a single zImage across multiple boards
> with different memory layouts, or U-Boot builds with different
> ${load_addr} since sharing a single absolute load address may
> not be possible.
>
> With this config option enabled, an image header may contain a
> load address of -1/0xffffffff. This indicates the image can
> operate at any load address, and U-Boot will avoid automtically
> copying it anywhere. In this case, the entry-point field is
> specified relative to the start of the image payload.
>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Simon Glass <sjg@chromium.org>
> ---
> Wolfgang,
>
> This is an much simpler and less invasive alternative to my previous
> IH_TYPE_KERNEL_REL patch. If it's OK, you can ignore that patch.
>
> u-boot.bin sizes for Tegra Seaboard without/with this config option on:
>
> ? text ? ?data ? ? bss ? ? dec ? ? hex filename
> ?165858 ? ?3565 ?217016 ?386439 ? 5e587 ./u-boot
>
> with:
>
> ? text ? ?data ? ? bss ? ? dec ? ? hex filename
> ?165950 ? ?3565 ?217012 ?386527 ? 5e5df ./u-boot
>
> ?README ? ? ? ? ? ? | ? 23 +++++++++++++++++++++++
> ?common/cmd_bootm.c | ? ?4 ++++
> ?common/image.c ? ? | ? 27 +++++++++++++++++++++++++++
> ?include/image.h ? ?| ? ?4 ++++
> ?4 files changed, 58 insertions(+), 0 deletions(-)
>
^ permalink raw reply
* Re: [PATCH] coredump: wait on the core pattern umh at least once
From: Neil Horman @ 2011-10-31 21:18 UTC (permalink / raw)
To: Scott James Remnant; +Cc: Oleg Nesterov, linux-kernel, Mandeep Singh Baines
In-Reply-To: <CA+bD78hSSDkOBsNTy=VjnzjYSMMtw_B6Gu2hX39G7zp2smGUVg@mail.gmail.com>
On Sat, Oct 29, 2011 at 11:01:44AM -0700, Scott James Remnant wrote:
> On Sat, Oct 29, 2011 at 7:13 AM, Oleg Nesterov <oleg@redhat.com> wrote:
>
> > On 10/28, Scott James Remnant wrote:
> > >
> > > If a thread crashes as a result of a signal on the thread group leader
> > > that signal can still be pending,
> >
> > No. do_coredump() clears TIF_SIGPENDING.
> >
> I'm definitely seeing cases where SIGTERM sent to the process group
> that chrome is in results in one of chrome's thread's crashing (not
> your concern, obviously), but at the point it enters this function
> TIF_SIGPENDING is definitely set and the signal is SIGTERM.
>
> The SIGTERM is in the shared pending set.
>
> > I already tried to explain why this signal_pending() was added, but
> > apparently I was not clear. I'll try again in the previous thread.
> >
> Could you add me to the Cc: of that thread?
>
> Scott
>
FWIW, this is the (huge) thread, and specific post that originated the change
we're looking at:
https://lkml.org/lkml/2009/7/2/98
Neil
^ permalink raw reply
* Re: In regard of commit "gudev: Use strtoul to parse unsigned 64-bit integers"
From: David Zeuthen @ 2011-10-31 21:18 UTC (permalink / raw)
To: linux-hotplug
In-Reply-To: <20111031201318.GA2447@blackspire>
On Mon, Oct 31, 2011 at 5:04 PM, Rafał Mużyło <galtgendo@gmail.com> wrote:
> On Mon, Oct 31, 2011 at 04:32:07PM -0400, David Zeuthen wrote:
>> On Mon, Oct 31, 2011 at 4:13 PM, Rafał Mużyło <galtgendo@gmail.com> wrote:
>> > Perhaps I'm simply misreading something, but won't going from strtoll to
>> > strtoul break things for 32bit case ?
>>
>> What do you think it would break? Or are you perhaps suggesting we
>> should be using strtoull() instead? Please be specific.
>>
> Well, given on what happens on strtoul overflow according to the
> manpage...
Well, the problem was simply that I just missed an 'l' in the initial
patch and that mistake breaks 32-bit as you tried to point out. The
patch I just sent fixes the problem. Sigh, this is what happens when
people try to make their function names as short as possible... never
a good idea.
David
^ permalink raw reply
* Re: [PATCH] pnfsd: dlm: fix bug in DS tcp/tcp6 address string
From: Olga Kornievskaia @ 2011-10-31 21:16 UTC (permalink / raw)
To: Benny Halevy; +Cc: Michael Groshans, NFS list
In-Reply-To: <4E9E1F3A.2090709@tonian.com>
Benny, this patch does not fix the issue. Except that now all the
entries list "tcp6". Previously if you recall first data server entry
was correct but others listed tcp6 type with it was suppose to be tcp.
On Tue, Oct 18, 2011 at 8:52 PM, Benny Halevy <bhalevy@tonian.com> wrote:
> squash into "pnfsd: Correctly set netid to tcp or tcp6 for non-local exports"
>
> Currently, the code looks for ':' using strcspn that requires a null terminated string
> while the address buffer isn't null terminated.
>
> Instead, just use strnchr to look for a ':' and if not found assume
> it's an IPv4 address, otherwise it's IPv6
>
> Signed-off-by: Benny Halevy <bhalevy@tonian.com>
> ---
> fs/nfsd/nfs4pnfsdlm.c | 9 ++-------
> 1 files changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/fs/nfsd/nfs4pnfsdlm.c b/fs/nfsd/nfs4pnfsdlm.c
> index abc4d83..d07a6037 100644
> --- a/fs/nfsd/nfs4pnfsdlm.c
> +++ b/fs/nfsd/nfs4pnfsdlm.c
> @@ -328,13 +328,8 @@ static int nfsd4_pnfs_dlm_getdevinfo(struct super_block *sb,
> memcpy(daddr->r_addr.data + len, ".8.1", 4);
> daddr->r_addr.len = len + 4;
>
> - if (strcspn(daddr->r_addr.data, ":") - 1 == daddr->r_addr.len) {
> - daddr->r_netid.data = "tcp";
> - daddr->r_netid.len = 3;
> - } else {
> - daddr->r_netid.data = "tcp6";
> - daddr->r_netid.len = 4;
> - }
> + daddr->r_netid.data = "tcp6";
> + daddr->r_netid.len = strnchr(daddr->r_addr.data, len, ':') ? 4 : 3;
>
> fdev.fl_device_list[i].fl_multipath_length = 1;
> fdev.fl_device_list[i].fl_multipath_list = daddr;
> --
> 1.7.6
>
>
^ permalink raw reply
* Re: [RFC][PATCH 0/2] PM / Sleep: Extended control of suspend/hibernate interfaces
From: NeilBrown @ 2011-10-31 21:15 UTC (permalink / raw)
To: Ming Lei
Cc: Rafael J. Wysocki, Linux PM list, mark gross, LKML, John Stultz,
Alan Stern
In-Reply-To: <CACVXFVO_qNoy=AMs4RQOPsNq5dnTsc-=-f70Njf9Hv8eRkx=+Q@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1737 bytes --]
On Tue, 1 Nov 2011 03:55:50 +0800 Ming Lei <tom.leiming@gmail.com> wrote:
> Hi,
>
> On Fri, Oct 14, 2011 at 3:45 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote:
>
> > Second, to address the backup problem, we need to allow user space
> > processes other than the suspend/hibernate process itself to prevent the
> > system from being put into sleep states. A mechanism for that is introduced
> > by the second patch in the form of the /dev/sleepctl special device working
> > kind of like user space wakelocks on Android (although in a simplified
> > fashion).
>
> I also have another similar example: write(fd, buffer, 100*4096).
>
> Suppose only 80*4096 are copied into pages of the file, then someone
> run ' echo mem > /sys/power/state ' to trigger system sleep, so only
> partial writing is completed before system sleep and data inconsistence
> may be caused for the file on filesystem.
>
> But I am not sure if it is possible to happen in reality.
>
> thank,
I'm not sure if it is possible either, but even if it is it isn't a new
problem. A suspend is expected to leave all sorts of external things in
inconsistent states. The contents of memory implicitly records all these
inconsistencies and allows them to be resolved in the normal course of things
after resume.
If you lose power to memory during suspend then you can certainly expect
filesystems to be corrupted in exactly the same sort of way that they can be
corrupted by a crash. This has always been the case and I assume always will
(until we get main-memory that preserves state without power)
We want to block suspend during backups not to avoid corruption but simply to
allow the backups to complete promptly.
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ permalink raw reply
* [U-Boot] [PATCH] cmd_bdinfo: simplify local static funcs a bit
From: Tabi Timur-B04825 @ 2011-10-31 21:15 UTC (permalink / raw)
To: u-boot
In-Reply-To: <1320022463-26410-1-git-send-email-vapier@gentoo.org>
On Sun, Oct 30, 2011 at 7:54 PM, Mike Frysinger <vapier@gentoo.org> wrote:
>
>
> -static void print_num(const char *, ulong);
> +__maybe_unused
> +static void print_num(const char *name, ulong value)
> +{
> + ? ? ? printf("%-12s= 0x%08lX\n", name, value);
> +}
>
Will the linker remove the functions from the binary if they are unusued?
--
Timur Tabi
Linux kernel developer at Freescale
^ permalink raw reply
* [RFC PATCH 06/10] powerpc/mpic: Invert the meaning of MPIC_PRIMARY
From: Kyle Moffett @ 2011-10-31 21:10 UTC (permalink / raw)
To: linux-kernel, linuxppc-dev
Cc: Kyle Moffett, Benjamin Herrenschmidt, Paul Mackerras, Josh Boyer,
Matt Porter, Kumar Gala, Arnd Bergmann, Olof Johansson,
Scott Wood, Dave Liu, Lennert Buytenhek, Thomas Gleixner,
Dmitry Eremin-Solenikov, Brian King, Anton Blanchard,
Nishanth Aravamudan, Milton Miller, cbe-oss-dev
In-Reply-To: <1320095411-20667-1-git-send-email-Kyle.D.Moffett@boeing.com>
It turns out that there are only 2 in-tree platforms which use MPICs
which are not "primary": IBM Cell and PowerMac. To reduce the
complexity of the typical board setup code, invert the MPIC_PRIMARY bit
into MPIC_SECONDARY.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
---
arch/powerpc/include/asm/mpic.h | 8 ++++----
arch/powerpc/platforms/44x/iss4xx.c | 2 +-
arch/powerpc/platforms/85xx/corenet_ds.c | 2 +-
arch/powerpc/platforms/85xx/ksi8560.c | 2 +-
arch/powerpc/platforms/85xx/mpc8536_ds.c | 2 +-
arch/powerpc/platforms/85xx/mpc85xx_ads.c | 3 +--
arch/powerpc/platforms/85xx/mpc85xx_cds.c | 2 +-
arch/powerpc/platforms/85xx/mpc85xx_ds.c | 3 +--
arch/powerpc/platforms/85xx/mpc85xx_mds.c | 2 +-
arch/powerpc/platforms/85xx/mpc85xx_rdb.c | 3 +--
arch/powerpc/platforms/85xx/p1010rdb.c | 2 +-
arch/powerpc/platforms/85xx/p1022_ds.c | 2 +-
arch/powerpc/platforms/85xx/p1023_rds.c | 2 +-
arch/powerpc/platforms/85xx/sbc8548.c | 2 +-
arch/powerpc/platforms/85xx/sbc8560.c | 2 +-
arch/powerpc/platforms/85xx/socrates.c | 2 +-
arch/powerpc/platforms/85xx/stx_gp3.c | 2 +-
arch/powerpc/platforms/85xx/tqm85xx.c | 2 +-
arch/powerpc/platforms/85xx/xes_mpc85xx.c | 2 +-
arch/powerpc/platforms/86xx/pic.c | 2 +-
arch/powerpc/platforms/cell/setup.c | 2 +-
arch/powerpc/platforms/chrp/setup.c | 3 +--
arch/powerpc/platforms/embedded6xx/holly.c | 2 +-
arch/powerpc/platforms/embedded6xx/linkstation.c | 2 +-
arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c | 2 +-
arch/powerpc/platforms/embedded6xx/storcenter.c | 2 +-
arch/powerpc/platforms/maple/setup.c | 2 +-
arch/powerpc/platforms/pasemi/setup.c | 2 +-
arch/powerpc/platforms/powermac/pic.c | 2 +-
arch/powerpc/platforms/pseries/setup.c | 3 +--
arch/powerpc/sysdev/mpic.c | 14 +++++++-------
31 files changed, 40 insertions(+), 45 deletions(-)
diff --git a/arch/powerpc/include/asm/mpic.h b/arch/powerpc/include/asm/mpic.h
index 49bab41..a241076 100644
--- a/arch/powerpc/include/asm/mpic.h
+++ b/arch/powerpc/include/asm/mpic.h
@@ -336,11 +336,11 @@ struct mpic
* Note setting any ID (leaving those bits to 0) means standard MPIC
*/
-/* This is the primary controller, only that one has IPIs and
- * has afinity control. A non-primary MPIC always uses CPU0
- * registers only
+/*
+ * This is a secondary ("chained") controller; it only uses the CPU0
+ * registers. Primary controllers have IPIs and affinity control.
*/
-#define MPIC_PRIMARY 0x00000001
+#define MPIC_SECONDARY 0x00000001
/* Set this for a big-endian MPIC */
#define MPIC_BIG_ENDIAN 0x00000002
diff --git a/arch/powerpc/platforms/44x/iss4xx.c b/arch/powerpc/platforms/44x/iss4xx.c
index 19395f1..5b8cdbb 100644
--- a/arch/powerpc/platforms/44x/iss4xx.c
+++ b/arch/powerpc/platforms/44x/iss4xx.c
@@ -71,7 +71,7 @@ static void __init iss4xx_init_irq(void)
/* The MPIC driver will get everything it needs from the
* device-tree, just pass 0 to all arguments
*/
- struct mpic *mpic = mpic_alloc(np, 0, MPIC_PRIMARY, 0, 0,
+ struct mpic *mpic = mpic_alloc(np, 0, 0, 0, 0,
" MPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/corenet_ds.c b/arch/powerpc/platforms/85xx/corenet_ds.c
index 134e1f8..7b737a9 100644
--- a/arch/powerpc/platforms/85xx/corenet_ds.c
+++ b/arch/powerpc/platforms/85xx/corenet_ds.c
@@ -36,7 +36,7 @@
void __init corenet_ds_pic_init(void)
{
struct mpic *mpic;
- unsigned int flags = MPIC_PRIMARY | MPIC_BIG_ENDIAN |
+ unsigned int flags = MPIC_BIG_ENDIAN |
MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU;
if (ppc_md.get_irq == mpic_get_coreint_irq)
diff --git a/arch/powerpc/platforms/85xx/ksi8560.c b/arch/powerpc/platforms/85xx/ksi8560.c
index d49dbc4..278962b 100644
--- a/arch/powerpc/platforms/85xx/ksi8560.c
+++ b/arch/powerpc/platforms/85xx/ksi8560.c
@@ -74,7 +74,7 @@ static void __init ksi8560_pic_init(void)
#endif
mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/mpc8536_ds.c b/arch/powerpc/platforms/85xx/mpc8536_ds.c
index 2c928f0..d1aece5 100644
--- a/arch/powerpc/platforms/85xx/mpc8536_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc8536_ds.c
@@ -35,7 +35,7 @@
void __init mpc8536_ds_pic_init(void)
{
struct mpic *mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET |
+ MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
index 2b443ba..65a3de4 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
@@ -69,8 +69,7 @@ static void __init mpc85xx_ads_pic_init(void)
int irq;
#endif
- mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+ mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index 3a2436b..081821d 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -188,7 +188,7 @@ static void __init mpc85xx_cds_pic_init(void)
{
struct mpic *mpic;
mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index 14fccaf..5298137 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -70,13 +70,12 @@ void __init mpc85xx_ds_pic_init(void)
if (of_flat_dt_is_compatible(root, "fsl,MPC8572DS-CAMP")) {
mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
} else {
mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET |
+ MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
index 7ebd864..b7d9636 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
@@ -475,7 +475,7 @@ machine_arch_initcall(p1021_mds, swiotlb_setup_bus_notifier);
static void __init mpc85xx_mds_pic_init(void)
{
struct mpic *mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
index 9edb2b1..a3cf5d1 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
@@ -47,13 +47,12 @@ void __init mpc85xx_rdb_pic_init(void)
if (of_flat_dt_is_compatible(root, "fsl,MPC85XXRDB-CAMP")) {
mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
} else {
mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET |
+ MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/p1010rdb.c b/arch/powerpc/platforms/85xx/p1010rdb.c
index 5ffca27..f6c3ffc 100644
--- a/arch/powerpc/platforms/85xx/p1010rdb.c
+++ b/arch/powerpc/platforms/85xx/p1010rdb.c
@@ -39,7 +39,7 @@ void __init p1010_rdb_pic_init(void)
return;
}
- mpic = mpic_alloc(np, NULL, MPIC_PRIMARY | MPIC_WANTS_RESET |
+ mpic = mpic_alloc(np, NULL, MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platforms/85xx/p1022_ds.c
index 4279e83..73e79ba 100644
--- a/arch/powerpc/platforms/85xx/p1022_ds.c
+++ b/arch/powerpc/platforms/85xx/p1022_ds.c
@@ -239,7 +239,7 @@ int p1022ds_set_sysfs_monitor_port(int val)
void __init p1022_ds_pic_init(void)
{
struct mpic *mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET |
+ MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/p1023_rds.c b/arch/powerpc/platforms/85xx/p1023_rds.c
index 30a5adb..1a916eb 100644
--- a/arch/powerpc/platforms/85xx/p1023_rds.c
+++ b/arch/powerpc/platforms/85xx/p1023_rds.c
@@ -118,7 +118,7 @@ static void __init mpc85xx_rds_pic_init(void)
}
mpic = mpic_alloc(np, NULL,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/sbc8548.c b/arch/powerpc/platforms/85xx/sbc8548.c
index 1b5597f..bf8b8ff 100644
--- a/arch/powerpc/platforms/85xx/sbc8548.c
+++ b/arch/powerpc/platforms/85xx/sbc8548.c
@@ -54,7 +54,7 @@ static int sbc_rev;
static void __init sbc8548_pic_init(void)
{
struct mpic *mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/sbc8560.c b/arch/powerpc/platforms/85xx/sbc8560.c
index 20e68bb..7a43fb4 100644
--- a/arch/powerpc/platforms/85xx/sbc8560.c
+++ b/arch/powerpc/platforms/85xx/sbc8560.c
@@ -60,7 +60,7 @@ static void __init sbc8560_pic_init(void)
#endif
struct mpic *mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/socrates.c b/arch/powerpc/platforms/85xx/socrates.c
index a9a45f6..94bd256 100644
--- a/arch/powerpc/platforms/85xx/socrates.c
+++ b/arch/powerpc/platforms/85xx/socrates.c
@@ -48,7 +48,7 @@ static void __init socrates_pic_init(void)
struct device_node *np;
struct mpic *mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/stx_gp3.c b/arch/powerpc/platforms/85xx/stx_gp3.c
index 55e941b..e0c88b3 100644
--- a/arch/powerpc/platforms/85xx/stx_gp3.c
+++ b/arch/powerpc/platforms/85xx/stx_gp3.c
@@ -64,7 +64,7 @@ static void __init stx_gp3_pic_init(void)
#endif
struct mpic *mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/tqm85xx.c b/arch/powerpc/platforms/85xx/tqm85xx.c
index 660769b..2f6479a 100644
--- a/arch/powerpc/platforms/85xx/tqm85xx.c
+++ b/arch/powerpc/platforms/85xx/tqm85xx.c
@@ -62,7 +62,7 @@ static void __init tqm85xx_pic_init(void)
#endif
struct mpic *mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
+ MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/xes_mpc85xx.c b/arch/powerpc/platforms/85xx/xes_mpc85xx.c
index 09b8ba0..d95e765 100644
--- a/arch/powerpc/platforms/85xx/xes_mpc85xx.c
+++ b/arch/powerpc/platforms/85xx/xes_mpc85xx.c
@@ -42,7 +42,7 @@
void __init xes_mpc85xx_pic_init(void)
{
struct mpic *mpic = mpic_alloc(np, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET |
+ MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c
index f85c8f0..78e50c9 100644
--- a/arch/powerpc/platforms/86xx/pic.c
+++ b/arch/powerpc/platforms/86xx/pic.c
@@ -44,7 +44,7 @@ void __init mpc86xx_init_irq(void)
return;
mpic = mpic_alloc(np, 0,
- MPIC_PRIMARY | MPIC_WANTS_RESET |
+ MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
0, 256, " MPIC ");
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index c73cf4c..392cbdb 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -210,7 +210,7 @@ static void __init mpic_init_IRQ(void)
/* The MPIC driver will get everything it needs from the
* device-tree, just pass 0 to all arguments
*/
- mpic = mpic_alloc(dn, 0, 0, 0, 0, " MPIC ");
+ mpic = mpic_alloc(dn, 0, MPIC_SECONDARY, 0, 0, " MPIC ");
if (mpic == NULL)
continue;
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/chrp/setup.c b/arch/powerpc/platforms/chrp/setup.c
index 1227864..f1f17bb 100644
--- a/arch/powerpc/platforms/chrp/setup.c
+++ b/arch/powerpc/platforms/chrp/setup.c
@@ -435,8 +435,7 @@ static void __init chrp_find_openpic(void)
if (len > 1)
isu_size = iranges[3];
- chrp_mpic = mpic_alloc(np, opaddr, MPIC_PRIMARY,
- isu_size, 0, " MPIC ");
+ chrp_mpic = mpic_alloc(np, opaddr, 0, isu_size, 0, " MPIC ");
if (chrp_mpic == NULL) {
printk(KERN_ERR "Failed to allocate MPIC structure\n");
goto bail;
diff --git a/arch/powerpc/platforms/embedded6xx/holly.c b/arch/powerpc/platforms/embedded6xx/holly.c
index edfc84f..e8c1429 100644
--- a/arch/powerpc/platforms/embedded6xx/holly.c
+++ b/arch/powerpc/platforms/embedded6xx/holly.c
@@ -154,7 +154,7 @@ static void __init holly_init_IRQ(void)
#endif
mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
+ MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
24,
NR_IRQS-4, /* num_sources used */
diff --git a/arch/powerpc/platforms/embedded6xx/linkstation.c b/arch/powerpc/platforms/embedded6xx/linkstation.c
index 502ff60..bcfad92 100644
--- a/arch/powerpc/platforms/embedded6xx/linkstation.c
+++ b/arch/powerpc/platforms/embedded6xx/linkstation.c
@@ -82,7 +82,7 @@ static void __init linkstation_init_IRQ(void)
{
struct mpic *mpic;
- mpic = mpic_alloc(NULL, 0, MPIC_PRIMARY | MPIC_WANTS_RESET,
+ mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET,
4, 32, " EPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
index 1dd976e..32376b5 100644
--- a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
+++ b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c
@@ -108,7 +108,7 @@ static void __init mpc7448_hpc2_init_IRQ(void)
#endif
mpic = mpic_alloc(NULL, 0,
- MPIC_PRIMARY | MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
+ MPIC_BIG_ENDIAN | MPIC_WANTS_RESET |
MPIC_SPV_EOI | MPIC_NO_PTHROU_DIS | MPIC_REGSET_TSI108,
24,
NR_IRQS-4, /* num_sources used */
diff --git a/arch/powerpc/platforms/embedded6xx/storcenter.c b/arch/powerpc/platforms/embedded6xx/storcenter.c
index a233d91..6b3fffe 100644
--- a/arch/powerpc/platforms/embedded6xx/storcenter.c
+++ b/arch/powerpc/platforms/embedded6xx/storcenter.c
@@ -84,7 +84,7 @@ static void __init storcenter_init_IRQ(void)
{
struct mpic *mpic;
- mpic = mpic_alloc(NULL, 0, MPIC_PRIMARY | MPIC_WANTS_RESET,
+ mpic = mpic_alloc(NULL, 0, MPIC_WANTS_RESET,
16, 32, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c
index 5b3388b..a14ac90 100644
--- a/arch/powerpc/platforms/maple/setup.c
+++ b/arch/powerpc/platforms/maple/setup.c
@@ -220,7 +220,7 @@ static void __init maple_init_IRQ(void)
unsigned long openpic_addr = 0;
int naddr, n, i, opplen, has_isus = 0;
struct mpic *mpic;
- unsigned int flags = MPIC_PRIMARY;
+ unsigned int flags = 0;
/* Locate MPIC in the device-tree. Note that there is a bug
* in Maple device-tree where the type of the controller is
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c
index 883757e..851bdab 100644
--- a/arch/powerpc/platforms/pasemi/setup.c
+++ b/arch/powerpc/platforms/pasemi/setup.c
@@ -223,7 +223,7 @@ static __init void pas_init_IRQ(void)
openpic_addr = of_read_number(opprop, naddr);
printk(KERN_DEBUG "OpenPIC addr: %lx\n", openpic_addr);
- mpic_flags = MPIC_PRIMARY | MPIC_LARGE_VECTORS | MPIC_NO_BIAS;
+ mpic_flags = MPIC_LARGE_VECTORS | MPIC_NO_BIAS;
nmiprop = of_get_property(mpic_node, "nmi-source", NULL);
if (nmiprop)
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index fe360f7c..f4dc247 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -501,7 +501,7 @@ static struct mpic * __init pmac_setup_one_mpic(struct device_node *np,
{
const char *name = master ? " MPIC 1 " : " MPIC 2 ";
struct mpic *mpic;
- unsigned int flags = master ? MPIC_PRIMARY : 0;
+ unsigned int flags = master ? 0 : MPIC_SECONDARY;
int rc;
pmac_call_feature(PMAC_FTR_ENABLE_MPIC, np, 0, 0);
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index 0969fd9..172980c 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -192,8 +192,7 @@ static void __init pseries_mpic_init_IRQ(void)
BUG_ON(openpic_addr == 0);
/* Setup the openpic driver */
- mpic = mpic_alloc(pSeries_mpic_node, openpic_addr,
- MPIC_PRIMARY,
+ mpic = mpic_alloc(pSeries_mpic_node, openpic_addr, 0,
16, 250, /* isu size, irq count */
" MPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 548ca16..31a9ada 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -154,7 +154,7 @@ static inline unsigned int mpic_processor_id(struct mpic *mpic)
{
unsigned int cpu = 0;
- if (mpic->flags & MPIC_PRIMARY)
+ if (!(mpic->flags & MPIC_SECONDARY))
cpu = hard_smp_processor_id();
return cpu;
@@ -992,7 +992,7 @@ static int mpic_host_map(struct irq_host *h, unsigned int virq,
#ifdef CONFIG_SMP
else if (hw >= mpic->ipi_vecs[0]) {
- WARN_ON(!(mpic->flags & MPIC_PRIMARY));
+ WARN_ON(mpic->flags & MPIC_SECONDARY);
DBG("mpic: mapping as IPI\n");
irq_set_chip_data(virq, mpic);
@@ -1003,7 +1003,7 @@ static int mpic_host_map(struct irq_host *h, unsigned int virq,
#endif /* CONFIG_SMP */
if (hw >= mpic->timer_vecs[0] && hw <= mpic->timer_vecs[7]) {
- WARN_ON(!(mpic->flags & MPIC_PRIMARY));
+ WARN_ON(mpic->flags & MPIC_SECONDARY);
DBG("mpic: mapping as timer\n");
irq_set_chip_data(virq, mpic);
@@ -1190,12 +1190,12 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic->hc_irq = mpic_irq_chip;
mpic->hc_irq.name = name;
- if (flags & MPIC_PRIMARY)
+ if (!(flags & MPIC_SECONDARY))
mpic->hc_irq.irq_set_affinity = mpic_set_affinity;
#ifdef CONFIG_MPIC_U3_HT_IRQS
mpic->hc_ht_irq = mpic_irq_ht_chip;
mpic->hc_ht_irq.name = name;
- if (flags & MPIC_PRIMARY)
+ if (!(flags & MPIC_SECONDARY))
mpic->hc_ht_irq.irq_set_affinity = mpic_set_affinity;
#endif /* CONFIG_MPIC_U3_HT_IRQS */
@@ -1361,7 +1361,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic->next = mpics;
mpics = mpic;
- if (flags & MPIC_PRIMARY) {
+ if (!(flags & MPIC_SECONDARY)) {
mpic_primary = mpic;
irq_set_default_host(mpic->irqhost);
}
@@ -1431,7 +1431,7 @@ void __init mpic_init(struct mpic *mpic)
/* Do the HT PIC fixups on U3 broken mpic */
DBG("MPIC flags: %x\n", mpic->flags);
- if ((mpic->flags & MPIC_U3_HT_IRQS) && (mpic->flags & MPIC_PRIMARY)) {
+ if ((mpic->flags & MPIC_U3_HT_IRQS) && !(mpic->flags & MPIC_SECONDARY)) {
mpic_scan_ht_pics(mpic);
mpic_u3msi_init(mpic);
}
--
1.7.2.5
^ permalink raw reply related
* Re: [PATCH v3] drm: do not sleep on vblank while holding a mutex
From: Ilija Hadzic @ 2011-10-31 21:13 UTC (permalink / raw)
To: Daniel Vetter; +Cc: dri-devel
In-Reply-To: <20111031210944.GD30108@phenom.ffwll.local>
OK, v4 coming up and your suggestion will be copied verbatim. Hopefully
that does it.
This patch is probably going to become a record-holder in comment/code
lines ratio ;-)
-- Ilija
On Mon, 31 Oct 2011, Daniel Vetter wrote:
> On Mon, Oct 31, 2011 at 01:10:21PM -0400, Ilija Hadzic wrote:
>> drm_wait_vblank must be DRM_UNLOCKED because otherwise it
>> will grab the drm_global_mutex and then go to sleep until the vblank
>> event it is waiting for. That can wreck havoc in the windowing system
>> because if one process issues this ioctl, it will block all other
>> processes for the duration of all vblanks between the current and the
>> one it is waiting for. In some cases it can block the entire windowing
>> system.
>>
>> v2: incorporate comments received from Daniel Vetter and
>> Michel Daenzer.
>>
>> v3: after a lengty discussion with Daniel Vetter, it was concluded
>> we should not worry about any locking, within drm_wait_vblank
>> function so this patch becomes a rather trivial removal
>> of drm_global_mutex from drm_wait_vblank
>
> That commit message is a bit garbage. What about ...
>
> "... it was concluded that the only think not yet protected with locks and
> atomic ops is the write to dev->last_vblank_wait. It's only used in a
> debug file in proc, and the current code already employs no correct
> locking: the proc file only takes dev->struct_mutex, whereas
> drm_wait_vblank implicitly took the drm_global_mutex. Given all this, it's
> not worth bothering to try to fix this at this time."
>
> I think it's important to correctly document the conclusion of this
> discussion, because we've worried quite a bit about correct locking.
>
> Yours, Daniel
> --
> Daniel Vetter
> Mail: daniel@ffwll.ch
> Mobile: +41 (0)79 365 57 48
>
^ permalink raw reply
* [RFC PATCH 09/10] powerpc/mpic: Cache the device-tree node in "struct mpic"
From: Kyle Moffett @ 2011-10-31 21:10 UTC (permalink / raw)
To: linux-kernel, linuxppc-dev
Cc: Kyle Moffett, Benjamin Herrenschmidt, Paul Mackerras,
Grant Likely, Kumar Gala, Scott Wood, Dave Liu, Milton Miller,
devicetree-discuss
In-Reply-To: <1320095411-20667-1-git-send-email-Kyle.D.Moffett@boeing.com>
Store the node pointer in the MPIC during initialization so that all of
the later operational code can just reuse the cached pointer.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
---
arch/powerpc/include/asm/mpic.h | 3 +++
arch/powerpc/sysdev/mpic.c | 32 ++++++++++++++++----------------
2 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/arch/powerpc/include/asm/mpic.h b/arch/powerpc/include/asm/mpic.h
index a241076..db78b89 100644
--- a/arch/powerpc/include/asm/mpic.h
+++ b/arch/powerpc/include/asm/mpic.h
@@ -251,6 +251,9 @@ struct mpic_irq_save {
/* The instance data of a given MPIC */
struct mpic
{
+ /* The OpenFirmware dt node for this MPIC */
+ struct device_node *node;
+
/* The remapper for this MPIC */
struct irq_host *irqhost;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 8b4f022..1826dae 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -315,26 +315,25 @@ static void _mpic_map_mmio(struct mpic *mpic, phys_addr_t phys_addr,
}
#ifdef CONFIG_PPC_DCR
-static void _mpic_map_dcr(struct mpic *mpic, struct device_node *node,
- struct mpic_reg_bank *rb,
+static void _mpic_map_dcr(struct mpic *mpic, struct mpic_reg_bank *rb,
unsigned int offset, unsigned int size)
{
- phys_addr_t phys_addr = dcr_resource_start(node);
+ phys_addr_t phys_addr = dcr_resource_start(mpic->node);
rb->dhost = dcr_map(mpic->node, phys_addr + offset, size);
BUG_ON(!DCR_MAP_OK(rb->dhost));
}
-static inline void mpic_map(struct mpic *mpic, struct device_node *node,
+static inline void mpic_map(struct mpic *mpic,
phys_addr_t phys_addr, struct mpic_reg_bank *rb,
unsigned int offset, unsigned int size)
{
if (mpic->flags & MPIC_USES_DCR)
- _mpic_map_dcr(mpic, node, rb, offset, size);
+ _mpic_map_dcr(mpic, rb, offset, size);
else
_mpic_map_mmio(mpic, phys_addr, rb, offset, size);
}
#else /* CONFIG_PPC_DCR */
-#define mpic_map(m,n,p,b,o,s) _mpic_map_mmio(m,p,b,o,s)
+#define mpic_map(m,p,b,o,s) _mpic_map_mmio(m,p,b,o,s)
#endif /* !CONFIG_PPC_DCR */
@@ -1178,6 +1177,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
return NULL;
mpic->name = name;
+ mpic->node = node;
mpic->paddr = phys_addr;
mpic->hc_irq = mpic_irq_chip;
@@ -1224,13 +1224,13 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic->spurious_vec = intvec_top;
/* Check for "big-endian" in device-tree */
- if (of_get_property(node, "big-endian", NULL) != NULL)
+ if (of_get_property(mpic->node, "big-endian", NULL) != NULL)
mpic->flags |= MPIC_BIG_ENDIAN;
- if (of_device_is_compatible(node, "fsl,mpic"))
+ if (of_device_is_compatible(mpic->node, "fsl,mpic"))
mpic->flags |= MPIC_FSL;
/* Look for protected sources */
- psrc = of_get_property(node, "protected-sources", &psize);
+ psrc = of_get_property(mpic->node, "protected-sources", &psize);
if (psrc) {
/* Allocate a bitmap with one bit per interrupt */
unsigned int mapsize = BITS_TO_LONGS(intvec_top + 1);
@@ -1256,15 +1256,15 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic->reg_type = mpic_access_mmio_le;
/* Map the global registers */
- mpic_map(mpic, node, mpic->paddr, &mpic->gregs, MPIC_INFO(GREG_BASE), 0x1000);
- mpic_map(mpic, node, mpic->paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
+ mpic_map(mpic, mpic->paddr, &mpic->gregs, MPIC_INFO(GREG_BASE), 0x1000);
+ mpic_map(mpic, mpic->paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
/* Reset */
/* When using a device-node, reset requests are only honored if the MPIC
* is allowed to reset.
*/
- if (of_get_property(node, "pic-no-reset", NULL))
+ if (of_get_property(mpic->node, "pic-no-reset", NULL))
mpic->flags |= MPIC_NO_RESET;
if ((flags & MPIC_WANTS_RESET) && !(mpic->flags & MPIC_NO_RESET)) {
@@ -1306,7 +1306,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
/* Map the per-CPU registers */
for (i = 0; i < mpic->num_cpus; i++) {
- mpic_map(mpic, node, mpic->paddr, &mpic->cpuregs[i],
+ mpic_map(mpic, mpic->paddr, &mpic->cpuregs[i],
MPIC_INFO(CPU_BASE) + i * MPIC_INFO(CPU_STRIDE),
0x1000);
}
@@ -1314,13 +1314,13 @@ struct mpic * __init mpic_alloc(struct device_node *node,
/* Initialize main ISU if none provided */
if (mpic->isu_size == 0) {
mpic->isu_size = mpic->num_sources;
- mpic_map(mpic, node, mpic->paddr, &mpic->isus[0],
+ mpic_map(mpic, mpic->paddr, &mpic->isus[0],
MPIC_INFO(IRQ_BASE), MPIC_INFO(IRQ_STRIDE) * mpic->isu_size);
}
mpic->isu_shift = 1 + __ilog2(mpic->isu_size - 1);
mpic->isu_mask = (1 << mpic->isu_shift) - 1;
- mpic->irqhost = irq_alloc_host(node, IRQ_HOST_MAP_LINEAR,
+ mpic->irqhost = irq_alloc_host(mpic->node, IRQ_HOST_MAP_LINEAR,
isu_size ? isu_size : mpic->num_sources,
&mpic_host_ops,
flags & MPIC_LARGE_VECTORS ? 2048 : 256);
@@ -1368,7 +1368,7 @@ void __init mpic_assign_isu(struct mpic *mpic, unsigned int isu_num,
BUG_ON(isu_num >= MPIC_MAX_ISU);
- mpic_map(mpic, mpic->irqhost->of_node,
+ mpic_map(mpic,
paddr, &mpic->isus[isu_num], 0,
MPIC_INFO(IRQ_STRIDE) * mpic->isu_size);
--
1.7.2.5
^ permalink raw reply related
* [RFC PATCH 10/10] powerpc/mpic: Add in-core support for cascaded MPICs
From: Kyle Moffett @ 2011-10-31 21:10 UTC (permalink / raw)
To: linux-kernel, linuxppc-dev
Cc: Kyle Moffett, Arnd Bergmann, Benjamin Herrenschmidt,
Paul Mackerras, Milton Miller, Kumar Gala, Scott Wood,
cbe-oss-dev
In-Reply-To: <1320095411-20667-1-git-send-email-Kyle.D.Moffett@boeing.com>
The Cell and PowerMac platforms use virtually identical cascaded-IRQ
setup code, so just merge it into the core. This does the obvious thing
when an MPIC device-node specifies an "interrupts" property.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
---
arch/powerpc/platforms/cell/setup.c | 22 --------------------
arch/powerpc/platforms/powermac/pic.c | 36 ++++----------------------------
arch/powerpc/sysdev/mpic.c | 27 ++++++++++++++++++++++-
3 files changed, 30 insertions(+), 55 deletions(-)
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index 392cbdb..8708a71 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -183,19 +183,6 @@ static int __init cell_publish_devices(void)
}
machine_subsys_initcall(cell, cell_publish_devices);
-static void cell_mpic_cascade(unsigned int irq, struct irq_desc *desc)
-{
- struct irq_chip *chip = irq_desc_get_chip(desc);
- struct mpic *mpic = irq_desc_get_handler_data(desc);
- unsigned int virq;
-
- virq = mpic_get_one_irq(mpic);
- if (virq != NO_IRQ)
- generic_handle_irq(virq);
-
- chip->irq_eoi(&desc->irq_data);
-}
-
static void __init mpic_init_IRQ(void)
{
struct device_node *dn;
@@ -214,15 +201,6 @@ static void __init mpic_init_IRQ(void)
if (mpic == NULL)
continue;
mpic_init(mpic);
-
- virq = irq_of_parse_and_map(dn, 0);
- if (virq == NO_IRQ)
- continue;
-
- printk(KERN_INFO "%s : hooking up to IRQ %d\n",
- dn->full_name, virq);
- irq_set_handler_data(virq, mpic);
- irq_set_chained_handler(virq, cell_mpic_cascade);
}
}
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index f4dc247..e02cd79 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -466,18 +466,6 @@ int of_irq_map_oldworld(struct device_node *device, int index,
}
#endif /* CONFIG_PPC32 */
-static void pmac_u3_cascade(unsigned int irq, struct irq_desc *desc)
-{
- struct irq_chip *chip = irq_desc_get_chip(desc);
- struct mpic *mpic = irq_desc_get_handler_data(desc);
- unsigned int cascade_irq = mpic_get_one_irq(mpic);
-
- if (cascade_irq != NO_IRQ)
- generic_handle_irq(cascade_irq);
-
- chip->irq_eoi(&desc->irq_data);
-}
-
static void __init pmac_pic_setup_mpic_nmi(struct mpic *mpic)
{
#if defined(CONFIG_XMON) && defined(CONFIG_PPC32)
@@ -529,7 +517,6 @@ static int __init pmac_pic_probe_mpic(void)
{
struct mpic *mpic1, *mpic2;
struct device_node *np, *master = NULL, *slave = NULL;
- unsigned int cascade;
/* We can have up to 2 MPICs cascaded */
for (np = NULL; (np = of_find_node_by_type(np, "open-pic"))
@@ -565,27 +552,14 @@ static int __init pmac_pic_probe_mpic(void)
of_node_put(master);
- /* No slave, let's go out */
- if (slave == NULL)
- return 0;
-
- /* Get/Map slave interrupt */
- cascade = irq_of_parse_and_map(slave, 0);
- if (cascade == NO_IRQ) {
- printk(KERN_ERR "Failed to map cascade IRQ\n");
- return 0;
- }
-
- mpic2 = pmac_setup_one_mpic(slave, 0);
- if (mpic2 == NULL) {
- printk(KERN_ERR "Failed to setup slave MPIC\n");
+ /* Set up a cascaded controller, if present */
+ if (slave) {
+ mpic2 = pmac_setup_one_mpic(slave, 0);
+ if (mpic2 == NULL)
+ printk(KERN_ERR "Failed to setup slave MPIC\n");
of_node_put(slave);
- return 0;
}
- irq_set_handler_data(cascade, mpic2);
- irq_set_chained_handler(cascade, pmac_u3_cascade);
- of_node_put(slave);
return 0;
}
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 1826dae..d5cf276 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1113,6 +1113,21 @@ static int mpic_host_xlate(struct irq_host *h, struct device_node *ct,
return 0;
}
+/* IRQ handler for a secondary MPIC cascaded from another IRQ controller */
+static void mpic_cascade(unsigned int irq, struct irq_desc *desc)
+{
+ struct irq_chip *chip = irq_desc_get_chip(desc);
+ struct mpic *mpic = irq_desc_get_handler_data(desc);
+
+ BUG_ON(!(mpic->flags & MPIC_SECONDARY));
+
+ unsigned int virq = mpic_get_one_irq(mpic);
+ if (virq != NO_IRQ)
+ generic_handle_irq(virq);
+
+ chip->irq_eoi(&desc->irq_data);
+}
+
static struct irq_host_ops mpic_host_ops = {
.match = mpic_host_match,
.map = mpic_host_map,
@@ -1384,8 +1399,7 @@ void __init mpic_set_default_senses(struct mpic *mpic, u8 *senses, int count)
void __init mpic_init(struct mpic *mpic)
{
- int i;
- int cpu;
+ int i, cpu, virq;
BUG_ON(mpic->num_sources == 0);
@@ -1470,6 +1484,15 @@ void __init mpic_init(struct mpic *mpic)
GFP_KERNEL);
BUG_ON(mpic->save_data == NULL);
#endif
+
+ /* Check if this MPIC is chained from a parent interrupt controller */
+ virq = irq_of_parse_and_map(mpic->node, 0);
+ if (virq != NO_IRQ) {
+ printk(KERN_INFO "%s: hooking up to IRQ %d\n",
+ dn->full_name, virq);
+ irq_set_handler_data(virq, mpic);
+ irq_set_chained_handler(virq, &mpic_cascade);
+ }
}
void __init mpic_set_clk_ratio(struct mpic *mpic, u32 clock_ratio)
--
1.7.2.5
^ permalink raw reply related
* [RFC PATCH 08/10] powerpc/mpic: Put "pic-no-reset" test back into the MPIC code
From: Kyle Moffett @ 2011-10-31 21:10 UTC (permalink / raw)
To: linux-kernel, linuxppc-dev
Cc: Kyle Moffett, Benjamin Herrenschmidt, Paul Mackerras,
Grant Likely, Milton Miller, Kumar Gala, Scott Wood,
devicetree-discuss
In-Reply-To: <1320095411-20667-1-git-send-email-Kyle.D.Moffett@boeing.com>
There's not really any reason to have this one-liner in a separate
static inline function, given that all the other similar tests are
already in the alloc_mpic() code.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
---
arch/powerpc/sysdev/mpic.c | 7 +------
1 files changed, 1 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 0342ab8..8b4f022 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1120,11 +1120,6 @@ static struct irq_host_ops mpic_host_ops = {
.xlate = mpic_host_xlate,
};
-static int mpic_reset_prohibited(struct device_node *node)
-{
- return node && of_get_property(node, "pic-no-reset", NULL);
-}
-
/*
* Exported functions
*/
@@ -1269,7 +1264,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
/* When using a device-node, reset requests are only honored if the MPIC
* is allowed to reset.
*/
- if (mpic_reset_prohibited(node))
+ if (of_get_property(node, "pic-no-reset", NULL))
mpic->flags |= MPIC_NO_RESET;
if ((flags & MPIC_WANTS_RESET) && !(mpic->flags & MPIC_NO_RESET)) {
--
1.7.2.5
^ permalink raw reply related
* [RFC PATCH 10/10] powerpc/mpic: Add in-core support for cascaded MPICs
From: Kyle Moffett @ 2011-10-31 21:10 UTC (permalink / raw)
To: linux-kernel, linuxppc-dev
Cc: cbe-oss-dev, Arnd Bergmann, Milton Miller, Paul Mackerras,
Kyle Moffett, Scott Wood
In-Reply-To: <1320095411-20667-1-git-send-email-Kyle.D.Moffett@boeing.com>
The Cell and PowerMac platforms use virtually identical cascaded-IRQ
setup code, so just merge it into the core. This does the obvious thing
when an MPIC device-node specifies an "interrupts" property.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
---
arch/powerpc/platforms/cell/setup.c | 22 --------------------
arch/powerpc/platforms/powermac/pic.c | 36 ++++----------------------------
arch/powerpc/sysdev/mpic.c | 27 ++++++++++++++++++++++-
3 files changed, 30 insertions(+), 55 deletions(-)
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c
index 392cbdb..8708a71 100644
--- a/arch/powerpc/platforms/cell/setup.c
+++ b/arch/powerpc/platforms/cell/setup.c
@@ -183,19 +183,6 @@ static int __init cell_publish_devices(void)
}
machine_subsys_initcall(cell, cell_publish_devices);
-static void cell_mpic_cascade(unsigned int irq, struct irq_desc *desc)
-{
- struct irq_chip *chip = irq_desc_get_chip(desc);
- struct mpic *mpic = irq_desc_get_handler_data(desc);
- unsigned int virq;
-
- virq = mpic_get_one_irq(mpic);
- if (virq != NO_IRQ)
- generic_handle_irq(virq);
-
- chip->irq_eoi(&desc->irq_data);
-}
-
static void __init mpic_init_IRQ(void)
{
struct device_node *dn;
@@ -214,15 +201,6 @@ static void __init mpic_init_IRQ(void)
if (mpic == NULL)
continue;
mpic_init(mpic);
-
- virq = irq_of_parse_and_map(dn, 0);
- if (virq == NO_IRQ)
- continue;
-
- printk(KERN_INFO "%s : hooking up to IRQ %d\n",
- dn->full_name, virq);
- irq_set_handler_data(virq, mpic);
- irq_set_chained_handler(virq, cell_mpic_cascade);
}
}
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index f4dc247..e02cd79 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -466,18 +466,6 @@ int of_irq_map_oldworld(struct device_node *device, int index,
}
#endif /* CONFIG_PPC32 */
-static void pmac_u3_cascade(unsigned int irq, struct irq_desc *desc)
-{
- struct irq_chip *chip = irq_desc_get_chip(desc);
- struct mpic *mpic = irq_desc_get_handler_data(desc);
- unsigned int cascade_irq = mpic_get_one_irq(mpic);
-
- if (cascade_irq != NO_IRQ)
- generic_handle_irq(cascade_irq);
-
- chip->irq_eoi(&desc->irq_data);
-}
-
static void __init pmac_pic_setup_mpic_nmi(struct mpic *mpic)
{
#if defined(CONFIG_XMON) && defined(CONFIG_PPC32)
@@ -529,7 +517,6 @@ static int __init pmac_pic_probe_mpic(void)
{
struct mpic *mpic1, *mpic2;
struct device_node *np, *master = NULL, *slave = NULL;
- unsigned int cascade;
/* We can have up to 2 MPICs cascaded */
for (np = NULL; (np = of_find_node_by_type(np, "open-pic"))
@@ -565,27 +552,14 @@ static int __init pmac_pic_probe_mpic(void)
of_node_put(master);
- /* No slave, let's go out */
- if (slave == NULL)
- return 0;
-
- /* Get/Map slave interrupt */
- cascade = irq_of_parse_and_map(slave, 0);
- if (cascade == NO_IRQ) {
- printk(KERN_ERR "Failed to map cascade IRQ\n");
- return 0;
- }
-
- mpic2 = pmac_setup_one_mpic(slave, 0);
- if (mpic2 == NULL) {
- printk(KERN_ERR "Failed to setup slave MPIC\n");
+ /* Set up a cascaded controller, if present */
+ if (slave) {
+ mpic2 = pmac_setup_one_mpic(slave, 0);
+ if (mpic2 == NULL)
+ printk(KERN_ERR "Failed to setup slave MPIC\n");
of_node_put(slave);
- return 0;
}
- irq_set_handler_data(cascade, mpic2);
- irq_set_chained_handler(cascade, pmac_u3_cascade);
- of_node_put(slave);
return 0;
}
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 1826dae..d5cf276 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1113,6 +1113,21 @@ static int mpic_host_xlate(struct irq_host *h, struct device_node *ct,
return 0;
}
+/* IRQ handler for a secondary MPIC cascaded from another IRQ controller */
+static void mpic_cascade(unsigned int irq, struct irq_desc *desc)
+{
+ struct irq_chip *chip = irq_desc_get_chip(desc);
+ struct mpic *mpic = irq_desc_get_handler_data(desc);
+
+ BUG_ON(!(mpic->flags & MPIC_SECONDARY));
+
+ unsigned int virq = mpic_get_one_irq(mpic);
+ if (virq != NO_IRQ)
+ generic_handle_irq(virq);
+
+ chip->irq_eoi(&desc->irq_data);
+}
+
static struct irq_host_ops mpic_host_ops = {
.match = mpic_host_match,
.map = mpic_host_map,
@@ -1384,8 +1399,7 @@ void __init mpic_set_default_senses(struct mpic *mpic, u8 *senses, int count)
void __init mpic_init(struct mpic *mpic)
{
- int i;
- int cpu;
+ int i, cpu, virq;
BUG_ON(mpic->num_sources == 0);
@@ -1470,6 +1484,15 @@ void __init mpic_init(struct mpic *mpic)
GFP_KERNEL);
BUG_ON(mpic->save_data == NULL);
#endif
+
+ /* Check if this MPIC is chained from a parent interrupt controller */
+ virq = irq_of_parse_and_map(mpic->node, 0);
+ if (virq != NO_IRQ) {
+ printk(KERN_INFO "%s: hooking up to IRQ %d\n",
+ dn->full_name, virq);
+ irq_set_handler_data(virq, mpic);
+ irq_set_chained_handler(virq, &mpic_cascade);
+ }
}
void __init mpic_set_clk_ratio(struct mpic *mpic, u32 clock_ratio)
--
1.7.2.5
^ permalink raw reply related
* [RFC PATCH 07/10] powerpc/mpic: Don't open-code dcr_resource_start
From: Kyle Moffett @ 2011-10-31 21:10 UTC (permalink / raw)
To: linux-kernel, linuxppc-dev
Cc: Kyle Moffett, Benjamin Herrenschmidt, Paul Mackerras,
Grant Likely, Milton Miller, Kumar Gala, Scott Wood,
devicetree-discuss
In-Reply-To: <1320095411-20667-1-git-send-email-Kyle.D.Moffett@boeing.com>
Don't open-code the OpenFirmware "dcr-reg" property lookup trying to map
DCR resources. This makes the code a bit easier to read.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
---
arch/powerpc/sysdev/mpic.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 31a9ada..0342ab8 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -319,11 +319,8 @@ static void _mpic_map_dcr(struct mpic *mpic, struct device_node *node,
struct mpic_reg_bank *rb,
unsigned int offset, unsigned int size)
{
- const u32 *dbasep;
-
- dbasep = of_get_property(node, "dcr-reg", NULL);
-
- rb->dhost = dcr_map(node, *dbasep + offset, size);
+ phys_addr_t phys_addr = dcr_resource_start(node);
+ rb->dhost = dcr_map(mpic->node, phys_addr + offset, size);
BUG_ON(!DCR_MAP_OK(rb->dhost));
}
--
1.7.2.5
^ permalink raw reply related
* 3c505.c: Does not compile on linus/master [f362f98]
From: Boaz Harrosh @ 2011-10-31 21:12 UTC (permalink / raw)
To: Philip Blundell, linux-kernel, netdev; +Cc: Randy Dunlap, Stephen Rothwell
Doing an "make ARCH=i386 allmodconfig" on linus/master [f362f98] gives me the below
compilation breakage.
(Fedora_15_amd64 machine)
It's probably old news but I thought I'll report it as part of my obligation
as a Kernel monkey
Cheers
Boaz
----
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘send_pcb’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:390:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:390:4: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:436:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:435:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘start_receive’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:557:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:557:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘receive_packet’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:629:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:629:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_interrupt’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:667:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:665:5: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:689:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:689:6: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:724:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:723:8: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:729:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:728:9: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:736:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:736:8: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:746:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:746:7: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:756:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:755:7: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:766:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:765:7: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:776:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:775:7: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:792:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:792:7: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:800:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:800:7: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:821:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:820:6: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_open’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:854:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:854:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:916:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:916:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:940:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:940:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:962:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:962:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘send_packet’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:992:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:992:4: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1014:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1014:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1040:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1040:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_timeout’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1057:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1057:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_start_xmit’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1079:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1079:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1088:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1088:4: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1094:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1094:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_get_stats’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1113:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1113:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_close’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1175:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1175:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_set_mc_list’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1219:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1219:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1253:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1253:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_sense’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1289:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1289:3: error: expected ‘}’ before ‘.’ token
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c: In function ‘elp_autodetect’:
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1355:1: error: expected identifier before string constant
/net/ca-quad-11a-boot/samana/bharrosh/git/loo-ct/drivers/net/ethernet/i825xx/3c505.c:1355:3: error: expected ‘}’ before ‘.’ token
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.