<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.kernel">
    <title>gmane.linux.kernel</title>
    <link>http://blog.gmane.org/gmane.linux.kernel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303530"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303529"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303528"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303526"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303525"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303524"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303523"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303522"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303521"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303520"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303519"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303518"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303517"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303516"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303515"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303514"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303511"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303510"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303509"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.kernel/1303508"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303530">
    <title>[PATCH] PCI: Mark INTx masking support of Chelsio T310 10GbE NIC as broken</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303530</link>
    <description>&lt;pre&gt;According to Alexey, the T310 does not properly support INTx masking as
it fails to keep the PCI_STATUS_INTERRUPT bit updated once the interrupt
is masked. Mark this adapter as broken so that pci_intx_mask_supported
won't report it as compatible.

Reported-by: Alexey Kardashevskiy &amp;lt;aik&amp;lt; at &amp;gt;ozlabs.ru&amp;gt;
Signed-off-by: Jan Kiszka &amp;lt;jan.kiszka&amp;lt; at &amp;gt;web.de&amp;gt;
---

Alexey, please test if this catches your case correctly.

 drivers/pci/pci.c    |    3 +++
 drivers/pci/quirks.c |   12 ++++++++++++
 include/linux/pci.h  |    2 ++
 3 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 8f16900..3a1aeb5 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2876,6 +2876,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; bool pci_intx_mask_supported(struct pci_dev *dev)
 bool mask_supported = false;
 u16 orig, new;
 
+if (dev-&amp;gt;broken_intx_masking)
+return false;
+
 pci_cfg_access_lock(dev);
 
 pci_read_config_word(dev, PCI_COMMAND, &amp;amp;orig);
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 2a75216..151e174 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2929,6 +2929,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void __devinit disable_igfx_irq(struct pci_dev *dev)
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0102, disable_igfx_irq);
 DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
 
+/*
+ * Some devices may pass our check in pci_intx_mask_supported if
+ * PCI_COMMAND_INTX_DISABLE works though they actually do not properly
+ * support this feature.
+ */
+static void __devinit quirk_broken_intx_masking(struct pci_dev *dev)
+{
+dev-&amp;gt;broken_intx_masking = 1;
+}
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_CHELSIO, 0x0010,
+quirk_broken_intx_masking);
+
 static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
   struct pci_fixup *end)
 {
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 17b7b5b..c7cfd73 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -324,6 +324,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct pci_dev {
 unsigned int    is_hotplug_bridge:1;
 unsigned int    __aer_firmware_first_valid:1;
 unsigned int__aer_firmware_first:1;
+unsigned intbroken_intx_masking:1;/* device's INTx masking
+   support is not working */
 pci_dev_flags_t dev_flags;
 atomic_tenable_cnt;/* pci_enable_device has been called */
 
&lt;/pre&gt;</description>
    <dc:creator>Jan Kiszka</dc:creator>
    <dc:date>2012-05-25T14:02:13</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303529">
    <title>Re: Possible race in request_irq() (__setup_irq())</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303529</link>
    <description>&lt;pre&gt;Hello Thomas, David, Venkat,

On 05/16/2012 03:44 PM, Thomas Gleixner wrote:

Could someone comment please, why exactly this happens in current linux-next for Octeon:

In arch/mips/cavium-octeon/octeon-irq.c MBOX IRQs are set up to be handled by handle_percpu_irq():

static void __init octeon_irq_init_ciu(void)
{
...
octeon_irq_set_ciu_mapping(OCTEON_IRQ_MBOX0, 0, 32, chip_mbox, handle_percpu_irq);
octeon_irq_set_ciu_mapping(OCTEON_IRQ_MBOX1, 0, 33, chip_mbox, handle_percpu_irq);

But in arch/mips/cavium-octeon/smp.c it's requested as normal IRQ:

void octeon_prepare_cpus(unsigned int max_cpus)
{
...
if (request_irq(OCTEON_IRQ_MBOX0, mailbox_interrupt,
IRQF_PERCPU | IRQF_NO_THREAD, "SMP-IPI",
mailbox_interrupt)) {
panic("Cannot request_irq(OCTEON_IRQ_MBOX0)");
}

Is it a bug, or some kind of special case?

&lt;/pre&gt;</description>
    <dc:creator>Alexander Sverdlin</dc:creator>
    <dc:date>2012-05-25T14:01:29</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303528">
    <title>Re: [PATCH] tty: tty_mutex: fix lockdep warning in tty_lock_pair(v1)</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303528</link>
    <description>&lt;pre&gt;On Fri, 25 May 2012 15:52:02 +0200
Peter Zijlstra &amp;lt;peterz&amp;lt; at &amp;gt;infradead.org&amp;gt; wrote:


It applies on top of the other patches being tested in the thread on the
lockdep warning.

Alan
&lt;/pre&gt;</description>
    <dc:creator>Alan Cox</dc:creator>
    <dc:date>2012-05-25T14:01:41</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303526">
    <title>Re: [PATCH] tty: tty_mutex: fix lockdep warning in tty_lock_pair(v1)</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303526</link>
    <description>&lt;pre&gt;
http://marc.info/?l=linux-kernel&amp;amp;m=133794355529930

That one? To what tree does one apply that? Because the tty_lock_pair()
in Linus is still missing a lockdep annotation afaict.

&lt;/pre&gt;</description>
    <dc:creator>Peter Zijlstra</dc:creator>
    <dc:date>2012-05-25T13:52:02</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303525">
    <title>Re: [Xen-devel] [PATCH 4/4] xen/events: Add WARN_ON when quick lookup found invalid type.</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303525</link>
    <description>&lt;pre&gt;
Good eyes! The final version will have those unmolested.

&lt;/pre&gt;</description>
    <dc:creator>Konrad Rzeszutek Wilk</dc:creator>
    <dc:date>2012-05-25T13:42:31</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303524">
    <title>[patch] BFS 420: get correct runqueue when waking up newly created task</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303524</link>
    <description>&lt;pre&gt;When waking up newly created task, runqueue should be determined based on the
parent task for correctly checking if the current task is parent.

--- a/kernel/sched/bfs.cMon May 14 20:50:38 2012
+++ b/kernel/sched/bfs.cFri May 25 20:07:06 2012
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1771,7 +1771,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void wake_up_new_task(struct task_struct
 unsigned long flags;
 struct rq *rq;

-rq = task_grq_lock(p, &amp;amp;flags);
+rq = task_grq_lock(p-&amp;gt;parent, &amp;amp;flags);
 p-&amp;gt;state = TASK_RUNNING;
 parent = p-&amp;gt;parent;
 /* Unnecessary but small chance that the parent changed CPU */
--
&lt;/pre&gt;</description>
    <dc:creator>Hillf Danton</dc:creator>
    <dc:date>2012-05-25T13:41:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303523">
    <title>Re: [PATCH] pipe: return -ENOIOCTLCMD instead of -EINVAL on unknown ioctl command</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303523</link>
    <description>&lt;pre&gt;On Fri, 25 May 2012 11:39:13 +0100
Will Deacon &amp;lt;will.deacon&amp;lt; at &amp;gt;arm.com&amp;gt; wrote:


Acked-by: Alan Cox &amp;lt;alan&amp;lt; at &amp;gt;linux.intel.com&amp;gt;
&lt;/pre&gt;</description>
    <dc:creator>Alan Cox</dc:creator>
    <dc:date>2012-05-25T13:43:59</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303522">
    <title>Re: [PATCH 1/4] async: introduce 'async_domain' type</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303522</link>
    <description>&lt;pre&gt;I applied these 4 patches on top of todays git (one trivial conflict 
with include removal) and it does not work - hangs here:

[   65.322282] PCI: Enabling device: (0000:00:0d.0), cmd 5
[   65.394252] scsi0 : pata_ali
[   65.432976] scsi1 : pata_ali
[   65.471610] ata1: PATA max UDMA/66 cmd 0x1fe02010200 ctl 0x1fe02010218 bmdma 0x1fe02010220 irq 12
[   65.588340] ata2: PATA max UDMA/66 cmd 0x1fe02010210 ctl 0x1fe02010208 bmdma 0x1fe02010228 irq 12
[   65.705941] Linux Tulip driver version 1.1.15-NAPI (Feb 27, 2007)
[   65.788850] tulip0: Old style EEPROM with no media selection information
[   65.877209] tulip0:  MII transceiver #1 config 1000 status 782d advertising 01e1
[   65.978529] net eth0: Davicom DM9102/DM9102A rev 49 at MMIO 0x1ff00000000, EEPROM not present, 00:03:ba:0c:06:cd, IRQ 9
[   66.123140] tulip1: Old style EEPROM with no media selection information
[   66.211483] tulip1:  MII transceiver #1 config 1000 status 7809 advertising 01e1
[   66.312539] net eth1: Davicom DM9102/DM9102A rev 49 at MMIO 0x1ff00002000, EEPROM not present, 00:03:ba:0c:06:ce, IRQ 10
[   66.456108] ata1.00: ATA-7: SAMSUNG SP1213N, TL100-30, max UDMA/100
[   66.538542] ata1.00: 234493056 sectors, multi 16: LBA48
[   66.608850] mousedev: PS/2 mouse device common for all mice
[   66.683438] rtc_cmos rtc_cmos: rtc core: registered rtc_cmos as rtc0
[   66.766961] rtc0: no alarms, 114 bytes nvram
[   66.823471] ata1.00: configured for UDMA/66
[   66.879054] scsi 0:0:0:0: Direct-Access     ATA      SAMSUNG SP1213N  TL10 PQ: 0 ANSI: 5
[   66.988422] TCP: cubic registered
[   67.032002] NET: Registered protocol family 17
[   67.090463] Key type dns_resolver registered
[   67.146589] initlevel:7=late, 15 registered initcalls
[   67.214787] sd 0:0:0:0: [sda] 234493056 512-byte logical blocks: (120 GB/111 GiB)
[   67.314623] sd 0:0:0:0: [sda] Write Protect is off
[   67.377601] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   67.444782] registered taskstats version 1
[   67.510339] console [netcon0] enabled
[   67.558375] netconsole: network logging started
[   67.617966] rtc_cmos rtc_cmos: setting system clock to 2012-05-25 13:11:47 UTC (1337951507)
[   89.787327] BUG: soft lockup - CPU#0 stuck for 23s! [swapper:1]
[   89.865086] Modules linked in:
[   89.905086] TSTATE: 0000004480001600 TPC: 0000000000471f10 TNPC: 0000000000471f14 Y: 00000000    Not tainted
[   90.034288] TPC: &amp;lt;async_synchronize_cookie_domain+0x170/0x240&amp;gt;
[   90.110926] g0: fffff8006e341001 g1: 0000000000000000 g2: 0000000000000000 g3: 0000000000000000
[   90.225242] g4: fffff8006e054000 g5: 0000000000000000 g6: fffff8006e058000 g7: 0000000000846da0
[   90.339642] o0: 0000000000000001 o1: fffff8006e058400 o2: 0000000000471ff0 o3: 0000000000000000
[   90.454045] o4: 0000000000000000 o5: 000000000085b800 sp: fffff8006e05b371 ret_pc: 00000000004209d4
[   90.573025] RPC: &amp;lt;tl0_irq14+0x14/0x20&amp;gt;
[   90.622249] l0: 0000000000001000 l1: 0000000080001607 l2: 0000000000471fec l3: 0000000000000400
[   90.736565] l4: 0000000000000000 l5: 0000000000000000 l6: 0000000000000000 l7: 0000000000000008
[   90.850969] i0: 0000000000000004 i1: 0000000000846d70 i2: 0000000000846d80 i3: 00000000004d3a4c
[   90.965369] i4: 00000000000005c3 i5: 000000000089a000 i6: fffff8006e05b451 i7: 0000000000472014
[   91.079775] I7: &amp;lt;async_synchronize_full+0x14/0x40&amp;gt;
[   91.142711] Call Trace:
[   91.174721]  [0000000000472014] async_synchronize_full+0x14/0x40
[   91.253593]  [0000000000601134] wait_for_device_probe+0x74/0xa0
[   91.331420]  [0000000000876e30] prepare_namespace+0x44/0x198
[   91.405812]  [00000000008769a0] kernel_init+0x100/0x114
[   91.474394]  [000000000042b0d0] kernel_thread+0x30/0x60
[   91.543074]  [00000000006f71c8] rest_init+0x10/0x68

&lt;/pre&gt;</description>
    <dc:creator>mroos&lt; at &gt;linux.ee</dc:creator>
    <dc:date>2012-05-25T13:40:42</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303521">
    <title>[patch] BFS 420: fix handling CPU_ONLINE</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303521</link>
    <description>&lt;pre&gt;The check of the given CPU belonging to root domain is inverse when handling
CPU_ONLINE, so correct it.

--- a/kernel/sched/bfs.cMon May 14 20:50:38 2012
+++ b/kernel/sched/bfs.cFri May 25 20:03:48 2012
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -5422,7 +5422,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; migration_call(struct notifier_block *nf
 /* Update our root-domain */
 grq_lock_irqsave(&amp;amp;flags);
 if (rq-&amp;gt;rd) {
-BUG_ON(!cpumask_test_cpu(cpu, rq-&amp;gt;rd-&amp;gt;span));
+BUG_ON(cpumask_test_cpu(cpu, rq-&amp;gt;rd-&amp;gt;span));

 set_rq_online(rq);
 }
--
&lt;/pre&gt;</description>
    <dc:creator>Hillf Danton</dc:creator>
    <dc:date>2012-05-25T13:39:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303520">
    <title>Re: [PATCH] tty: tty_mutex: fix lockdep warning in tty_lock_pair(v1)</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303520</link>
    <description>&lt;pre&gt;
A git grep reveals tty_release() is the only user of tty_lock_pair() and
while we hold tty_mutex over the tty_lock_pair() its not held over
ldisc_release().

Thus afaict we can create the following deadlock:


cpu-Acpu-B

lock tty_mutex
  lock tty
  lock o_tty
unlock tty_mutex

  unlock tty
lock tty_mutex
  lock tty
  lock o_tty -&amp;gt; block on A
  lock tty -&amp;gt; block on B



Also, what is that plain call to schedule() doing in tty_release()?!

&lt;/pre&gt;</description>
    <dc:creator>Peter Zijlstra</dc:creator>
    <dc:date>2012-05-25T13:39:21</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303519">
    <title>Re: [PATCH] tty: remove recursive implementation of tty_ldisc_release</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303519</link>
    <description>&lt;pre&gt;On Fri, 25 May 2012 13:13:15 +0200
Sasha Levin &amp;lt;levinsasha928&amp;lt; at &amp;gt;gmail.com&amp;gt; wrote:


Yay thanks for reporting/testing
&lt;/pre&gt;</description>
    <dc:creator>Alan Cox</dc:creator>
    <dc:date>2012-05-25T13:42:06</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303518">
    <title>[tip:x86/urgent] x86: hpet:  Fix copy-and-paste mistake in earlier change</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303518</link>
    <description>&lt;pre&gt;Commit-ID:  1b38a3a10f2ad96a3c0130f63b7f3610bab7090d
Gitweb:     http://git.kernel.org/tip/1b38a3a10f2ad96a3c0130f63b7f3610bab7090d
Author:     Jan Beulich &amp;lt;JBeulich&amp;lt; at &amp;gt;suse.com&amp;gt;
AuthorDate: Fri, 25 May 2012 11:40:09 +0100
Committer:  Thomas Gleixner &amp;lt;tglx&amp;lt; at &amp;gt;linutronix.de&amp;gt;
CommitDate: Fri, 25 May 2012 15:32:29 +0200

x86: hpet: Fix copy-and-paste mistake in earlier change

This fixes an oversight in 396e2c6fed4ff13b53ce0e573105531cf53b0cad
("x86: Clear HPET configuration registers on startup"), noticed by
Thomas Gleixner.

Signed-off-by: Jan Beulich &amp;lt;jbeulich&amp;lt; at &amp;gt;suse.com&amp;gt;
Link: http://lkml.kernel.org/r/4FBF7DA902000078000861EE&amp;lt; at &amp;gt;nat28.tlf.novell.com
Signed-off-by: Thomas Gleixner &amp;lt;tglx&amp;lt; at &amp;gt;linutronix.de&amp;gt;

---
 arch/x86/kernel/hpet.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 9cc7b43..1460a5d 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -870,7 +870,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int __init hpet_enable(void)
 else
 pr_warn("HPET initial state will not be saved\n");
 cfg &amp;amp;= ~(HPET_CFG_ENABLE | HPET_CFG_LEGACY);
-hpet_writel(cfg, HPET_Tn_CFG(i));
+hpet_writel(cfg, HPET_CFG);
 if (cfg)
 pr_warn("HPET: Unrecognized bits %#x set in global cfg\n",
 cfg);
&lt;/pre&gt;</description>
    <dc:creator>tip-bot for Jan Beulich</dc:creator>
    <dc:date>2012-05-25T13:37:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303517">
    <title>[patch 4/4] BFS 420: fix try_to_wake_up_local</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303517</link>
    <description>&lt;pre&gt;It is changed to be the same behavior with ttwu.

--- a/kernel/sched/bfs.cMon May 14 20:50:38 2012
+++ b/kernel/sched/bfs.cFri May 25 20:28:00 2012
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1630,18 +1630,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void try_to_wake_up_local(struct
 lockdep_assert_held(&amp;amp;grq.lock);

 if (!(p-&amp;gt;state &amp;amp; TASK_NORMAL))
-return;
+goto out;

-if (!task_queued(p)) {
-if (likely(!task_running(p))) {
-schedstat_inc(rq, ttwu_count);
-schedstat_inc(rq, ttwu_local);
-}
-ttwu_activate(p, rq, false);
-ttwu_stat(p, smp_processor_id(), true);
-success = true;
-}
+if (task_queued(p) || task_running(p))
+goto out;
+
+ttwu_activate(p, rq, false);
+success = true;
+out:
 ttwu_post_activation(p, rq, success);
+ttwu_stat(p, smp_processor_id(), success);
 }

 /**
--
&lt;/pre&gt;</description>
    <dc:creator>Hillf Danton</dc:creator>
    <dc:date>2012-05-25T13:37:45</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303516">
    <title>[patch 3/4] BFS 420: add task state check in ttwu</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303516</link>
    <description>&lt;pre&gt;If the given state does not match task, no bother acquiring the global
runqueue lock.

--- a/kernel/sched/bfs.cMon May 14 20:50:38 2012
+++ b/kernel/sched/bfs.cFri May 25 20:28:00 2012
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1583,6 +1583,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static bool try_to_wake_up(struct task_s
 /* This barrier is undocumented, probably for p-&amp;gt;state? くそ */
 smp_wmb();

+if (!(p-&amp;gt;state &amp;amp; state))
+goto out;
 /*
  * No need to do time_lock_grq as we only need to update the rq clock
  * if we activate the task
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1597,14 +1599,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static bool try_to_wake_up(struct task_s
 if (task_queued(p) || task_running(p))
 goto out_running;

-ttwu_activate(p, rq, wake_flags &amp;amp; WF_SYNC);
+ttwu_activate(p, rq, !!(wake_flags &amp;amp; WF_SYNC));
 success = true;

 out_running:
 ttwu_post_activation(p, rq, success);
 out_unlock:
 task_grq_unlock(&amp;amp;flags);
-
+out:
 ttwu_stat(p, cpu, success);

 put_cpu();
--
&lt;/pre&gt;</description>
    <dc:creator>Hillf Danton</dc:creator>
    <dc:date>2012-05-25T13:35:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303515">
    <title>Re: [BUG?] warning from native_smp_send_reschedule() in 3.4.</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303515</link>
    <description>&lt;pre&gt;
Nope, a bunch of us has seen it for awhile.  I made a recent change which
Ingo pushd for 3.5 that changes the reboot behaviour from NMIs back to
IRQs.  I would be surprised if that makes a difference as I think another
change in 3.4 exposed this issue.

Let me know if 3.5 changes the behaviour at all (once it stabilizes).

Cheers,
Don







&lt;/pre&gt;</description>
    <dc:creator>Don Zickus</dc:creator>
    <dc:date>2012-05-25T13:33:49</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303514">
    <title>[patch 2/4] BFS 420: fix ttwu_stat</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303514</link>
    <description>&lt;pre&gt;The last parameter, wake_flags, as not used, is replaced by the result that the
sleeper is activated successfully or not. If not, only to increase ttwu counter.

--- a/kernel/sched/bfs.cMon May 14 20:50:38 2012
+++ b/kernel/sched/bfs.cFri May 25 20:28:00 2012
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1486,7 +1486,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void try_preempt(struct task_stru
 #endif /* CONFIG_SMP */

 static void
-ttwu_stat(struct task_struct *p, int cpu, int wake_flags)
+ttwu_stat(struct task_struct *p, int cpu, bool success)
 {
 #ifdef CONFIG_SCHEDSTATS
 struct rq *rq = this_rq();
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1494,6 +1494,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ttwu_stat(struct task_struct *p, int cpu
 #ifdef CONFIG_SMP
 int this_cpu = smp_processor_id();

+if (!success)
+goto out;
 if (cpu == this_cpu)
 schedstat_inc(rq, ttwu_local);
 else {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1508,7 +1510,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ttwu_stat(struct task_struct *p, int cpu
 }
 rcu_read_unlock();
 }
-
+out:
 #endif /* CONFIG_SMP */

 schedstat_inc(rq, ttwu_count);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1603,7 +1605,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; out_running:
 out_unlock:
 task_grq_unlock(&amp;amp;flags);

-ttwu_stat(p, cpu, wake_flags);
+ttwu_stat(p, cpu, success);

 put_cpu();

&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1634,7 +1636,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void try_to_wake_up_local(struct
 schedstat_inc(rq, ttwu_local);
 }
 ttwu_activate(p, rq, false);
-ttwu_stat(p, smp_processor_id(), 0);
+ttwu_stat(p, smp_processor_id(), true);
 success = true;
 }
 ttwu_post_activation(p, rq, success);
--
&lt;/pre&gt;</description>
    <dc:creator>Hillf Danton</dc:creator>
    <dc:date>2012-05-25T13:34:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303511">
    <title>[PATCH v4 2/6] gpio: re-add of_node_to_gpiochip function</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303511</link>
    <description>&lt;pre&gt;From: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;

Signed-off-by: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;
---
 drivers/gpio/gpiolib-of.c |   11 +++++++++++
 include/linux/of_gpio.h   |    5 +++++
 2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
index 8389d4a..b8010a9 100644
--- a/drivers/gpio/gpiolib-of.c
+++ b/drivers/gpio/gpiolib-of.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -234,3 +234,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void of_gpiochip_remove(struct gpio_chip *chip)
 if (chip-&amp;gt;of_node)
 of_node_put(chip-&amp;gt;of_node);
 }
+
+/* Private function for resolving node pointer to gpio_chip */
+static int of_gpiochip_is_match(struct gpio_chip *chip, void *data)
+{
+return chip-&amp;gt;of_node == data;
+}
+
+struct gpio_chip *of_node_to_gpiochip(struct device_node *np)
+{
+return gpiochip_find(np, of_gpiochip_is_match);
+}
diff --git a/include/linux/of_gpio.h b/include/linux/of_gpio.h
index c454f57..880783b 100644
--- a/include/linux/of_gpio.h
+++ b/include/linux/of_gpio.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -61,6 +61,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern void of_gpiochip_remove(struct gpio_chip *gc);
 extern int of_gpio_simple_xlate(struct gpio_chip *gc,
 const struct of_phandle_args *gpiospec,
 u32 *flags);
+extern struct gpio_chip *of_node_to_gpiochip(struct device_node *np);
 
 #else /* CONFIG_OF_GPIO */
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -84,6 +85,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static inline int of_gpio_simple_xlate(struct gpio_chip *gc,
 return -ENOSYS;
 }
 
+static struct gpio_chip *of_node_to_gpiochip(struct device_node *np)
+{
+return NULL;
+}
 static inline void of_gpiochip_add(struct gpio_chip *gc) { }
 static inline void of_gpiochip_remove(struct gpio_chip *gc) { }
 
&lt;/pre&gt;</description>
    <dc:creator>Dong Aisheng</dc:creator>
    <dc:date>2012-05-25T13:36:16</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303510">
    <title>[PATCH v4 6/6] pinctrl: add pinctrl gpio binding support</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303510</link>
    <description>&lt;pre&gt;From: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;

This patch implements a standard common binding for pinctrl gpio ranges.
Each SoC can add gpio ranges through device tree by adding a gpio-maps property
under their pinctrl devices node with the format:
&amp;lt;&amp;amp;gpio $gpio-specifier $pin_offset $count&amp;gt;
while the gpio phandle and gpio-specifier are the standard approach
to represent a gpio in device tree.
Then we can cooperate it with the gpio xlate function to get the gpio number
from device tree to set up the gpio ranges map.

Then the pinctrl driver can call pinctrl_dt_add_gpio_ranges(pctldev, node)
to parse and register the gpio ranges from device tree.

Signed-off-by: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;
---
Personally i'm not very satisfied with current solution due to a few reasons:
1) i can not user standard gpio api to get gpio number
2) i need to reinvent a new api of_parse_phandles_with_args_ext which i'm not
sure if it can be accepted by DT maintainer.
If i did not invent that API, i need to rewrite a lot of duplicated code
with slight differences with the exist functions like of_get_named_gpio_flags
and of_parse_phandle_with_args for the special pinctrl gpio maps format.

So i just sent it out first to see people's comment and if any better solution.

One alternative solution is that that the gpio-maps into two parts:
pinctrl-gpios = &amp;lt;&amp;amp;gpio_phandle gpio-specifier ..&amp;gt;
pinctrl-gpio-maps = &amp;lt;pin_id count ..&amp;gt;
Then we can reuse the standard gpio api altough it's not better than the
original one.

Comments are welcome!

ChangeLog v3-&amp;gt;v4:
* using standard gpio parsing approach to get the gpio number from device
  tree. The gpio-maps becomes a little slightly different as before:
  &amp;lt;&amp;amp;gpio $gpio_specifier $pin_offset $npin&amp;gt;.
  The $gpio_specifier length is controller dependent which is specified by
  '#gpio-cells' in in gpio controller node.

ChangeLog v2-&amp;gt;v3:
* standardise the gpio ranges node name to 'gpio-maps'. Each SoC should use this
node name to define gpio ranges.
* defer probe if can not get gpiochip from node in case gpio driver is still
not loaded.
* some other minor fixes suggested by Stephen Warren.

ChangeLog v1-&amp;gt;v2:
* introduce standard binding for gpio range.
---
 .../bindings/pinctrl/pinctrl-bindings.txt          |   22 +++++
 drivers/pinctrl/devicetree.c                       |   95 ++++++++++++++++++++
 include/linux/pinctrl/pinctrl.h                    |   11 +++
 3 files changed, 128 insertions(+), 0 deletions(-)

diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
index c95ea82..e999be5 100644
--- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
+++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -126,3 +126,25 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; device; they may be grandchildren, for example. Whether this is legal, and
 whether there is any interaction between the child and intermediate parent
 nodes, is again defined entirely by the binding for the individual pin
 controller device.
+
+=== pinctrl gpio ranges ===
+Some pins in pinctrl device can also be multiplexed as gpio. With a gpio range
+map, user can know which pin in the range can be used as gpio.
+
+Required properties:
+gpio-maps: integers array, each entry in the array represents a gpio range
+with the format: &amp;lt;&amp;amp;gpio $gpio-specifier $pin_offset $count&amp;gt;
+- gpio: phandle pointing at gpio device node
+- gpio-specifier: array of #gpio-cells specifying specific gpio, the length is
+  controller specific. Usually it may be two cells for simple gpio.
+- pin_offset: integer, the pin offset or pin id
+- npins: integer, the gpio ranges starting from pin_offset
+
+For example:
+pincontroller {
+/* gpio-specifier is two cells */
+gpio-maps = &amp;lt;&amp;amp;gpio1 0 0 0 32
+     &amp;amp;gpio2 0 0 0 30
+     &amp;amp;gpio3 1 0 100 1
+     ....&amp;gt;;
+};
diff --git a/drivers/pinctrl/devicetree.c b/drivers/pinctrl/devicetree.c
index fcb1de4..bc5f0f8 100644
--- a/drivers/pinctrl/devicetree.c
+++ b/drivers/pinctrl/devicetree.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17,7 +17,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  */
 
 #include &amp;lt;linux/device.h&amp;gt;
+#include &amp;lt;linux/module.h&amp;gt;
 #include &amp;lt;linux/of.h&amp;gt;
+#include &amp;lt;linux/of_gpio.h&amp;gt;
 #include &amp;lt;linux/pinctrl/pinctrl.h&amp;gt;
 #include &amp;lt;linux/slab.h&amp;gt;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -247,3 +249,96 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; err:
 pinctrl_dt_free_maps(p);
 return ret;
 }
+
+/*
+ * pinctrl_dt_add_gpio_range() - parse and register GPIO ranges from device tree
+ * &amp;lt; at &amp;gt;pctldev: pin controller device to add the range to
+ * &amp;lt; at &amp;gt;np: the device node contains the gpio-maps node
+ *  The format of gpio-maps should be:
+ *  &amp;lt;&amp;amp;gpio $gpio-specifier $pin_offset $count&amp;gt;
+ *  The gpio-specifier length is controller dependent which is specified by
+ *  #gpio-cells in in gpio controller node.
+ */
+int pinctrl_dt_add_gpio_ranges(struct pinctrl_dev *pctldev,
+struct device_node *np)
+{
+struct pinctrl_gpio_range *ranges;
+unsigned int gpio_offset, pin_offset, npins;
+struct device_node *np_gpio;
+struct of_phandle_args gpiospec;
+struct property *prop;
+const __be32 *list;
+phandle phandle;
+int nranges = 0;
+int size;
+int i;
+int ret;
+
+if (!np) {
+dev_err(pctldev-&amp;gt;dev, "no device node\n");
+return -EINVAL;
+}
+
+/* count gpio ranges */
+do {
+ret = of_parse_phandle_with_args_ext(np, "gpio-maps", "#gpio-cells",
+ nranges, 2, NULL);
+if (ret)
+break;
+} while (++nranges);
+
+if (!nranges) {
+dev_err(pctldev-&amp;gt;dev, "no gpio ranges found\n");
+return -ENODEV;
+}
+
+/* setup gpio ranges table */
+ranges = devm_kzalloc(pctldev-&amp;gt;dev, nranges * sizeof(*ranges),
+GFP_KERNEL);
+for (i = 0; i &amp;lt; nranges; i++) {
+ret = of_parse_phandle_with_args_ext(np, "gpio-maps", "#gpio-cells",
+ i, 2, &amp;amp;gpiospec);
+if (ret)
+return ret;
+
+ranges[i].gc = of_node_to_gpiochip(gpiospec.np);
+if (!ranges[i].gc) {
+dev_err(pctldev-&amp;gt;dev,
+"can not find gpio chip of node(%s)\n",
+gpiospec.np-&amp;gt;full_name);
+ret = -EPROBE_DEFER;
+goto out;
+}
+
+if (!ranges[i].gc-&amp;gt;of_xlate) {
+dev_err(pctldev-&amp;gt;dev,
+"no of_xlate function found for gpio(%s)\n",
+gpiospec.np-&amp;gt;full_name);
+ret = -EINVAL;
+goto out;
+}
+
+ranges[i].name = dev_name(pctldev-&amp;gt;dev);
+ranges[i].base = ranges[i].gc-&amp;gt;of_xlate(ranges[i].gc, &amp;amp;gpiospec, NULL);
+if (ranges[i].base &amp;lt; 0) {
+ret = -EINVAL;
+goto out;
+}
+ranges[i].base += ranges[i].gc-&amp;gt;base;
+ranges[i].pin_base = gpiospec.args[gpiospec.args_count - 2];
+ranges[i].npins = gpiospec.args[gpiospec.args_count - 1];
+
+gpiochip_put(ranges[i].gc);
+of_node_put(gpiospec.np);
+}
+
+pinctrl_add_gpio_ranges(pctldev, ranges, nranges);
+
+return 0;
+
+out:
+of_node_put(gpiospec.np);
+
+return ret;
+}
+EXPORT_SYMBOL_GPL(pinctrl_dt_add_gpio_ranges);
diff --git a/include/linux/pinctrl/pinctrl.h b/include/linux/pinctrl/pinctrl.h
index 3b894a6..947ab9f 100644
--- a/include/linux/pinctrl/pinctrl.h
+++ b/include/linux/pinctrl/pinctrl.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -135,6 +135,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern void pinctrl_remove_gpio_range(struct pinctrl_dev *pctldev,
 struct pinctrl_gpio_range *range);
 extern const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev);
 extern void *pinctrl_dev_get_drvdata(struct pinctrl_dev *pctldev);
+#ifdef CONFIG_OF
+extern int pinctrl_dt_add_gpio_ranges(struct pinctrl_dev *pctldev,
+struct device_node *np);
+#else
+static inline int pinctrl_dt_add_gpio_ranges(struct pinctrl_dev *pctldev,
+struct device_node *np);
+{
+return 0;
+}
+#endif/* !CONFIG_OF */
+
 #else
 
 struct pinctrl_dev;
&lt;/pre&gt;</description>
    <dc:creator>Dong Aisheng</dc:creator>
    <dc:date>2012-05-25T13:36:20</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303509">
    <title>[PATCH v4 3/6] of: release node fix for of_parse_phandle_with_args</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303509</link>
    <description>&lt;pre&gt;From: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;

Since this API requires user to call of_node_put for the node
it returned via outargs, if no outargs provided, user have no
chance to release it, so release it internally if no outargs
provided.

Signed-off-by: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;
---
 drivers/of/base.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index d9bfd49..91c1fb4 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -961,6 +961,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int of_parse_phandle_with_args(struct device_node *np, const char *list_name,
 out_args-&amp;gt;args_count = count;
 for (i = 0; i &amp;lt; count; i++)
 out_args-&amp;gt;args[i] = be32_to_cpup(list++);
+} else {
+of_node_put(node);
 }
 return 0;
 }
&lt;/pre&gt;</description>
    <dc:creator>Dong Aisheng</dc:creator>
    <dc:date>2012-05-25T13:36:17</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303508">
    <title>[PATCH v4 5/6] of: add of_parse_phandle_with_args_ext function</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303508</link>
    <description>&lt;pre&gt;From: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;

The api is used when user wants to get some more extended args except ones
indicated by the cells_name.
For example, gpio cells is 2.
list = &amp;lt;&amp;amp;gpio 1 2 3 4&amp;gt;;
If users want to get extended args including 3, 4, he can call:
of_parse_phandle_with_args_ext(np, "gpios", "#gpio-cells", index, 2, &amp;amp;outargs);

Signed-off-by: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;
---
 drivers/of/base.c  |   25 ++++++++++++++++++++++++-
 include/linux/of.h |    5 ++++-
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index 91c1fb4..e51ee5f 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -893,6 +893,28 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int of_parse_phandle_with_args(struct device_node *np, const char *list_name,
 const char *cells_name, int index,
 struct of_phandle_args *out_args)
 {
+return of_parse_phandle_with_args_ext(np, list_name, cells_name,
+index, 0, out_args);
+}
+EXPORT_SYMBOL(of_parse_phandle_with_args);
+
+/*
+ * of_parse_phandle_with_args_ext() - Find a node pointed by phandle in a list
+ * with extended args.
+ * &amp;lt; at &amp;gt;np:pointer to a device tree node containing a list
+ * &amp;lt; at &amp;gt;list_name:property name that contains a list
+ * &amp;lt; at &amp;gt;cells_name:property name that specifies phandles' arguments count
+ * &amp;lt; at &amp;gt;index:index of a phandle to parse out
+ * &amp;lt; at &amp;gt;cells_ext:property name that specifies the extended args count except
+ *phandles' arguments count
+ * &amp;lt; at &amp;gt;out_args:optional pointer to output arguments structure (will be filled)
+ */
+int of_parse_phandle_with_args_ext(struct device_node *np,
+const char *list_name,
+const char *cells_name, int index,
+unsigned int cells_ext,
+struct of_phandle_args *out_args)
+{
 const __be32 *list, *list_end;
 int size, cur_index = 0;
 uint32_t count = 0;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -936,6 +958,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int of_parse_phandle_with_args(struct device_node *np, const char *list_name,
  * Make sure that the arguments actually fit in the
  * remaining property data length
  */
+count += cells_ext;
 if (list + count &amp;gt; list_end) {
 pr_err("%s: arguments longer than property\n",
  np-&amp;gt;full_name);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -978,7 +1001,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int of_parse_phandle_with_args(struct device_node *np, const char *list_name,
 of_node_put(node);
 return -EINVAL;
 }
-EXPORT_SYMBOL(of_parse_phandle_with_args);
+EXPORT_SYMBOL(of_parse_phandle_with_args_ext);
 
 /**
  * prom_add_property - Add a property to a node
diff --git a/include/linux/of.h b/include/linux/of.h
index 2ec1083..27b4d67 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -251,7 +251,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern struct device_node *of_parse_phandle(struct device_node *np,
 extern int of_parse_phandle_with_args(struct device_node *np,
 const char *list_name, const char *cells_name, int index,
 struct of_phandle_args *out_args);
-
+extern int of_parse_phandle_with_args_ext(struct device_node *np,
+const char *list_name, const char *cells_name, int index,
+unsigned int cells_ext,
+struct of_phandle_args *out_args);
 extern void of_alias_scan(void * (*dt_alloc)(u64 size, u64 align));
 extern int of_alias_get_id(struct device_node *np, const char *stem);
 
&lt;/pre&gt;</description>
    <dc:creator>Dong Aisheng</dc:creator>
    <dc:date>2012-05-25T13:36:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.kernel/1303507">
    <title>[PATCH v4 1/6] gpio: fix a typo of comment message</title>
    <link>http://permalink.gmane.org/gmane.linux.kernel/1303507</link>
    <description>&lt;pre&gt;From: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;

Signed-off-by: Dong Aisheng &amp;lt;dong.aisheng&amp;lt; at &amp;gt;linaro.org&amp;gt;
---
 drivers/gpio/gpiolib-of.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
index d18068a..8389d4a 100644
--- a/drivers/gpio/gpiolib-of.c
+++ b/drivers/gpio/gpiolib-of.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -21,7 +21,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;linux/of_gpio.h&amp;gt;
 #include &amp;lt;linux/slab.h&amp;gt;
 
-/* Private data structure for of_gpiochip_is_match */
+/* Private data structure for of_gpiochip_find_and_xlate */
 struct gg_data {
 enum of_gpio_flags *flags;
 struct of_phandle_args gpiospec;
&lt;/pre&gt;</description>
    <dc:creator>Dong Aisheng</dc:creator>
    <dc:date>2012-05-25T13:36:15</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.kernel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.kernel</link>
  </textinput>
</rdf:RDF>

