<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Serverphorums.com - Linux Kernel</title>
        <description>Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net. It aims towards POSIX and Single UNIX Specification compliance. This is the archive of the linux kernel mailinglist. Archive started at 2009/09/01.</description>
        <link>http://www.serverphorums.com/list.php?12</link>
        <lastBuildDate>Thu, 23 May 2013 18:32:54 +0200</lastBuildDate>
        <generator>Phorum 5.2.18</generator>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,703120,712089#msg-712089</guid>
            <title>RE: [RFC 1/8] serial:st-asc: Add ST ASC driver.</title>
            <link>http://www.serverphorums.com/read.php?12,703120,712089#msg-712089</link>
            <description><![CDATA[ On Wednesday 22 May 2013, Arnd Bergmann wrote:<br />
&gt; &gt; Also all of the custom_divisor functionality is basically commented as &quot;old&quot;<br />
&gt; &gt; or has a kernel warning saying it is deprecated (see uart_set_info), so as<br />
&gt; &gt; far as I can see for our (and I suspect most) hardware it is completely<br />
&gt; &gt; irrelevant functionality.<br />
&gt; <br />
&gt; What may have happened here is that custom_divisor was used in a different<br />
&gt; way when I added that code than it is today, and the change was not propagated<br />
&gt; into the of_serial driver. However, going back to 2.6.20 shows no different<br />
&gt; code than what we have today in this regard. It may simply have been<br />
&gt; a mistake on my side.<br />
<br />
Thanks for looking into this and digging around in the history. At least I didn't<br />
miss something really obvious.<br />
<br />
&gt; I looked it up in the original serial port binding at<br />
&gt; <a href="http://www.openfirmware.org/1275/bindings/devices/html/serial.ht" target="_blank"  rel="nofollow">http://www.openfirmware.org/1275/bindings/devices/html/serial.ht</a><br />
&gt; ml, which does<br />
&gt; not specify the property, and in ePAPR, which does have it in the<br />
&gt; section about<br />
&gt; &quot;serial class devices&quot;:<br />
&gt; <br />
&gt; 18 6.2.1.2 current-speed<br />
&gt; 19 Property: current-speed<br />
&gt; 20 Value type: &lt;u32&gt;<br />
&gt; 21 Description:<br />
&gt; 22 Specifies the current speed of a serial device in bits per second. A<br />
&gt; boot program should set<br />
&gt; 23 this property if it has initialized the serial device.<br />
&gt; 24 Example:<br />
&gt; 25 current - speed = &lt;115200&gt;; # 115200 baud<br />
&gt; <br />
&gt; The reason you want this is so that the driver can initialize the hardware from<br />
&gt; scratch more easily and get back to the same settings. Why they only specified<br />
&gt; the baud rate but not also start/stop bits and flow control I don't understand<br />
&gt; though.<br />
<br />
Yes, I had been made aware of the ePAPR definition by Srini after I sent the post.<br />
In fact I had exactly the same question in my head about the other settings as<br />
well.  <br />
<br />
&gt; <br />
&gt; I guess you can ignore my original comment.<br />
&gt; <br />
OK.<br />
<br />
Thanks again for your time.<br />
<br />
Regards,<br />
-stephen<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Stephen GALLIMORE</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:30:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711815,712088#msg-712088</guid>
            <title>Re: [GIT PULL] KVM fixes for 3.10-rc2</title>
            <link>http://www.serverphorums.com/read.php?12,711815,712088#msg-712088</link>
            <description><![CDATA[ On Thu, May 23, 2013 at 3:41 AM, Gleb Natapov &lt;gleb@redhat.com&gt; wrote:<br />
&gt;<br />
&gt;  MAINTAINERS                      |    7 ++--<br />
&gt;  arch/mips/include/asm/kvm.h      |   55 ---------------------------------------<br />
&gt;  arch/mips/include/uapi/asm/kvm.h |   55 +++++++++++++++++++++++++++++++++++++++<br />
&gt;  arch/mips/kvm/kvm_tlb.c          |   35 ++++++++++++++++++------<br />
&gt;  4 files changed, 85 insertions(+), 67 deletions(-)<br />
<br />
This was wrong. Please make sure you use the &quot;-M&quot; flag to make git<br />
diff look for file renames, and the &quot;--summary&quot; flag to show metadata<br />
changes separately.<br />
<br />
IOW, it *should* have looked like this:<br />
<br />
 MAINTAINERS                            |  7 ++++---<br />
 arch/mips/include/{ =&gt; uapi}/asm/kvm.h |  0<br />
 arch/mips/kvm/kvm_tlb.c                | 35 ++++++++++++++++++++++++++---------<br />
 3 files changed, 30 insertions(+), 12 deletions(-)<br />
 rename arch/mips/include/{ =&gt; uapi}/asm/kvm.h (100%)<br />
<br />
Thanks,<br />
<br />
           Linus<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Linus Torvalds</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:30:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712087,712087#msg-712087</guid>
            <title>[git pull] Input updates for 3.10-rc2</title>
            <link>http://www.serverphorums.com/read.php?12,712087,712087#msg-712087</link>
            <description><![CDATA[ Hi Linus,<br />
<br />
Please pull from:<br />
<br />
	git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git for-linus<br />
or<br />
	master.kernel.org:/pub/scm/linux/kernel/git/dtor/input.git for-linus<br />
<br />
to receive updates for the input subsystem. You will get a few fixups to<br />
Wacom and eGalax touchscreen driver.<br />
<br />
Changelog:<br />
---------<br />
<br />
Heiko Abraham (1):<br />
      Input: egalax_ts - ABS_MT_POSITION_Y not reported well<br />
<br />
Ping Cheng (3):<br />
      Input: wacom - add three new display tablets<br />
      Input: wacom - add a few new styli for Cintiq series<br />
      Input: wacom - add an eraser to DTH2242/DTK2241<br />
<br />
<br />
Diffstat:<br />
--------<br />
<br />
 drivers/input/tablet/wacom_wac.c      | 89 ++++++++++++++++++++++++++---------<br />
 drivers/input/tablet/wacom_wac.h      |  1 +<br />
 drivers/input/touchscreen/egalax_ts.c |  2 +-<br />
 3 files changed, 69 insertions(+), 23 deletions(-)<br />
<br />
-- <br />
Dmitry]]></description>
            <dc:creator>Dmitry Torokhov</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:03 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712086,712086#msg-712086</guid>
            <title>[GIT PATCH] TTY/Serial fixes for 3.10-rc3</title>
            <link>http://www.serverphorums.com/read.php?12,712086,712086#msg-712086</link>
            <description><![CDATA[ The following changes since commit f722406faae2d073cc1d01063d1123c35425939e:<br />
<br />
  Linux 3.10-rc1 (2013-05-11 17:14:08 -0700)<br />
<br />
are available in the git repository at:<br />
<br />
  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/ tags/tty-3.10-rc2<br />
<br />
for you to fetch changes up to e037f95ffb5355ffe295e1d106d02fefd284d882:<br />
<br />
  tty: mxser: Fix build warning introduced by dfc7b837c7f9 (Re: linux-next: build warning after merge of the tty.current tree) (2013-05-22 10:26:02 -0700)<br />
<br />
----------------------------------------------------------------<br />
tty/serial fixes for 3.10-rc2<br />
<br />
Here are some tty / serial driver fixes for 3.10-rc2.<br />
<br />
Nothing huge, although the rocket driver fix looks large, it's just<br />
moving the code around to fix the reported build issues in it.  Other<br />
than that, this has the fix for the of-reported lockdep warning from the<br />
vt layer, as well as some other needed bugfixes.<br />
<br />
All of these have been in linux-next for a while.<br />
<br />
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;<br />
<br />
----------------------------------------------------------------<br />
Ezequiel Garcia (1):<br />
      serial: 8250_dw: Add valid clk pointer check<br />
<br />
Heikki Krogerus (1):<br />
      serial: 8250_dw: add ACPI ID for Intel BayTrail<br />
<br />
Jiri Slaby (1):<br />
      TTY: rocket, fix more no-PCI warnings<br />
<br />
Lars-Peter Clausen (1):<br />
      tty: nwpserial: Pass correct pointer to free_irq()<br />
<br />
Lee Jones (1):<br />
      serial: pl011: protect attribute read from NULL platform data struct<br />
<br />
Matwey V. Kornilov (2):<br />
      tty: mxser: fix usage of opmode_ioaddr<br />
      tty: mxser: Fix build warning introduced by dfc7b837c7f9 (Re: linux-next: build warning after merge of the tty.current tree)<br />
<br />
Peter Hurley (1):<br />
      tty/vt: Fix vc_deallocate() lock order<br />
<br />
Wang YanQing (1):<br />
      TTY: Fix tty miss restart after we turn off flow-control<br />
<br />
Wei Yongjun (4):<br />
      serial: samsung: add missing platform_driver_unregister() when module exit<br />
      tty: serial: mpc5xxx: fix error handing in mpc52xx_uart_init()<br />
      serial: mcf: missing uart_unregister_driver() on error in mcf_init()<br />
      TTY: ehv_bytechan: add missing platform_driver_unregister() when module exit<br />
<br />
 drivers/tty/ehv_bytechan.c        |   1 +<br />
 drivers/tty/mxser.c               |  11 +-<br />
 drivers/tty/n_tty.c               |   8 ++<br />
 drivers/tty/rocket.c              | 288 +++++++++++++++++++-------------------<br />
 drivers/tty/serial/8250/8250_dw.c |   7 +-<br />
 drivers/tty/serial/amba-pl011.c   |   2 +-<br />
 drivers/tty/serial/mcf.c          |   4 +-<br />
 drivers/tty/serial/mpc52xx_uart.c |  11 +-<br />
 drivers/tty/serial/nwpserial.c    |   2 +-<br />
 drivers/tty/serial/samsung.c      |   1 +<br />
 drivers/tty/vt/vt.c               |  14 +-<br />
 drivers/tty/vt/vt_ioctl.c         |  67 ++++++---<br />
 include/linux/vt_kern.h           |   2 +-<br />
 13 files changed, 234 insertions(+), 184 deletions(-)<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Greg KH</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:03 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712085,712085#msg-712085</guid>
            <title>[GIT PATCH] Staging driver fixes for 3.10-rc3</title>
            <link>http://www.serverphorums.com/read.php?12,712085,712085#msg-712085</link>
            <description><![CDATA[ The following changes since commit f722406faae2d073cc1d01063d1123c35425939e:<br />
<br />
  Linux 3.10-rc1 (2013-05-11 17:14:08 -0700)<br />
<br />
are available in the git repository at:<br />
<br />
  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git/ tags/staging-3.10-rc2<br />
<br />
for you to fetch changes up to 0797c3a3e9660682b5df80911f35b523995a40bd:<br />
<br />
  staging: dwc2: remove compile warning for USB_DWC2_TRACK_MISSED_SOFS (2013-05-22 15:19:18 -0700)<br />
<br />
----------------------------------------------------------------<br />
Staging driver fixes for 3.10-rc2<br />
<br />
Here are some staging tree driver fixes for 3.10-rc2<br />
<br />
The drivers/iio/ changes are here as they are still tied into<br />
drivers/staging/iio/.<br />
<br />
Nothing major, just a number of small bugfixes, and a larger documentation<br />
update for the ramster code.<br />
<br />
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;<br />
<br />
----------------------------------------------------------------<br />
Arnd Bergmann (2):<br />
      staging/drm: imx: add missing dependencies<br />
      staging/solo6x10: depend on CONFIG_FONTS<br />
<br />
Axel Lin (1):<br />
      iio: dac: Fix build error when CONFIG_SPI_MASTER=y &amp;&amp; CONFIG_I2C=m<br />
<br />
Dan Magenheimer (1):<br />
      staging: ramster: add how-to document<br />
<br />
Denis CIOCCA (1):<br />
      iio:common:st: added disable function after read info raw data<br />
<br />
Denis Efremov (1):<br />
      staging: nvec: remove inline marking of EXPORT_SYMBOL functions<br />
<br />
Fabio Estevam (1):<br />
      staging: imx-drm: imx-tve: Check the return value of 'regulator_enable()'<br />
<br />
Geert Uytterhoeven (1):<br />
      staging: zcache: Fix incorrect module_param_array types<br />
<br />
Greg Kroah-Hartman (1):<br />
      Merge tag 'iio-fixes-for-3.10a' of git://git.kernel.org/.../jic23/iio into staging-linus<br />
<br />
H Hartley Sweeten (1):<br />
      staging: comedi: ni_labpc: fix build when VIRT_TO_BUS is not defined<br />
<br />
Hema Prathaban (1):<br />
      staging: vt6656: use free_netdev instead of kfree<br />
<br />
Ian Abbott (4):<br />
      staging: comedi: allow buffer resize if previous resize failed<br />
      staging: comedi: work without HAS_DMA<br />
      staging: comedi: ni_mio_common: only do counter commands for ni_pcimio<br />
      staging: comedi: complain if dma buffer allocation not supported<br />
<br />
Jean Delvare (1):<br />
      staging: Swap zram and zsmalloc in Kconfig<br />
<br />
Lee Jones (1):<br />
      staging: ste_rmi4: Suppress 'ignoring return value of ‘regulator_enable()' warning<br />
<br />
Malcolm Priestley (1):<br />
      staging: vt6656: [bug] Fix missing spin lock in iwctl_siwpower.<br />
<br />
Marc Dietrich (3):<br />
      staging: nvec: add missing module aliases<br />
      staging: nvec: implement unregistering of notifiers<br />
      staging: nvec: cleanup childs on remove<br />
<br />
Marek Vasut (1):<br />
      staging: video: imx: Select VIDEOMODE_HELPERS for parallel display<br />
<br />
Matthijs Kooijman (1):<br />
      staging: dwc2: Fix dma-enabled platform devices using a default dma_mask<br />
<br />
Michał Mirosław (1):<br />
      staging/iio/mxs-lradc: fix preenable for multiple buffers<br />
<br />
Naveen Krishna Chatradhi (1):<br />
      iio: exynos_adc: fix wrong structure extration in suspend and resume<br />
<br />
Paul Zimmerman (1):<br />
      staging: dwc2: remove compile warning for USB_DWC2_TRACK_MISSED_SOFS<br />
<br />
Randy Dunlap (1):<br />
      staging: sep: fix driver build and kconfig<br />
<br />
Wei Yongjun (1):<br />
      staging:iio:light:tsl2x7x: fix the error handling in tsl2x7x_probe()<br />
<br />
Xiong Zhou (1):<br />
      staging: android: logger: use kuid_t instead of uid_t<br />
<br />
 drivers/iio/adc/exynos_adc.c                     |   8 +-<br />
 drivers/iio/common/st_sensors/st_sensors_core.c  |   2 +<br />
 drivers/iio/dac/Kconfig                          |   6 +-<br />
 drivers/staging/Kconfig                          |   4 +-<br />
 drivers/staging/android/logger.c                 |   4 +-<br />
 drivers/staging/android/logger.h                 |   2 +-<br />
 drivers/staging/comedi/Kconfig                   |   9 +<br />
 drivers/staging/comedi/comedi_buf.c              |  12 +<br />
 drivers/staging/comedi/comedi_fops.c             |   3 -<br />
 drivers/staging/comedi/drivers/ni_labpc.c        |   8 +-<br />
 drivers/staging/comedi/drivers/ni_labpc.h        |   1 +<br />
 drivers/staging/comedi/drivers/ni_mio_common.c   |  20 +-<br />
 drivers/staging/dwc2/Kconfig                     |   1 +<br />
 drivers/staging/dwc2/hcd_intr.c                  |   2 -<br />
 drivers/staging/dwc2/platform.c                  |   8 +<br />
 drivers/staging/iio/adc/mxs-lradc.c              |   5 +-<br />
 drivers/staging/iio/light/tsl2x7x_core.c         |   9 +-<br />
 drivers/staging/imx-drm/Kconfig                  |   5 +<br />
 drivers/staging/imx-drm/imx-tve.c                |   4 +-<br />
 drivers/staging/media/solo6x10/Kconfig           |   1 +<br />
 drivers/staging/nvec/nvec.c                      |  21 +-<br />
 drivers/staging/nvec/nvec.h                      |   5 +-<br />
 drivers/staging/nvec/nvec_kbd.c                  |  10 +-<br />
 drivers/staging/nvec/nvec_power.c                |   1 +<br />
 drivers/staging/nvec/nvec_ps2.c                  |   8 +-<br />
 drivers/staging/sep/Kconfig                      |   2 +-<br />
 drivers/staging/ste_rmi4/synaptics_i2c_rmi4.c    |   6 +-<br />
 drivers/staging/vt6656/hostap.c                  |   2 +-<br />
 drivers/staging/vt6656/iwctl.c                   |   6 +<br />
 drivers/staging/zcache/ramster/ramster-howto.txt | 366 +++++++++++++++++++++++<br />
 drivers/staging/zcache/zcache-main.c             |   8 +-<br />
 drivers/video/console/Makefile                   |   2 +<br />
 32 files changed, 499 insertions(+), 52 deletions(-)<br />
 create mode 100644 drivers/staging/zcache/ramster/ramster-howto.txt<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Greg KH</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712084,712084#msg-712084</guid>
            <title>[GIT PATCH] Driver core fixes for 3.10-rc3</title>
            <link>http://www.serverphorums.com/read.php?12,712084,712084#msg-712084</link>
            <description><![CDATA[ The following changes since commit f722406faae2d073cc1d01063d1123c35425939e:<br />
<br />
  Linux 3.10-rc1 (2013-05-11 17:14:08 -0700)<br />
<br />
are available in the git repository at:<br />
<br />
  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/ tags/driver-core-3.10-rc2<br />
<br />
for you to fetch changes up to ac5a2962b02f57dea76d314ef2521a2170b28ab6:<br />
<br />
  klist: del waiter from klist_remove_waiters before wakeup waitting process (2013-05-21 10:16:39 -0700)<br />
<br />
----------------------------------------------------------------<br />
Driver core fixes for 3.10-rc2<br />
<br />
Here are 3 tiny driver core fixes for 3.10-rc2.<br />
<br />
A needed symbol export, a change to make it easier to track down<br />
offending sysfs files with incorrect attributes, and a klist bugfix.<br />
<br />
All have been in linux-next for a while.<br />
<br />
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;<br />
<br />
----------------------------------------------------------------<br />
Greg Kroah-Hartman (1):<br />
      driver core: export subsys_virtual_register<br />
<br />
<a href="mailto:&#100;&#121;&#111;&#117;&#110;&#103;&#64;&#114;&#101;&#100;&#104;&#97;&#116;&#46;&#99;&#111;&#109;">&#100;&#121;&#111;&#117;&#110;&#103;&#64;&#114;&#101;&#100;&#104;&#97;&#116;&#46;&#99;&#111;&#109;</a> (1):<br />
      driver core: print sysfs attribute name when warning about bogus permissions<br />
<br />
wang, biao (1):<br />
      klist: del waiter from klist_remove_waiters before wakeup waitting process<br />
<br />
 drivers/base/bus.c  | 1 +<br />
 drivers/base/core.c | 6 ++++--<br />
 lib/klist.c         | 2 +-<br />
 3 files changed, 6 insertions(+), 3 deletions(-)<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Greg KH</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712083,712083#msg-712083</guid>
            <title>[GIT PATCH] char/misc fixes for 3.10-rc3</title>
            <link>http://www.serverphorums.com/read.php?12,712083,712083#msg-712083</link>
            <description><![CDATA[ The following changes since commit f722406faae2d073cc1d01063d1123c35425939e:<br />
<br />
  Linux 3.10-rc1 (2013-05-11 17:14:08 -0700)<br />
<br />
are available in the git repository at:<br />
<br />
  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git/ tags/char-misc-3.10-rc2<br />
<br />
for you to fetch changes up to b5325a02aa84c794cf520d6d68cae4b150988a32:<br />
<br />
  ttyprintk: Fix NULL pointer deref by setting tty_port ops after initializing port (2013-05-21 10:13:23 -0700)<br />
<br />
----------------------------------------------------------------<br />
char/misc driver fixes for 3.10-rc2<br />
<br />
Here are some small char/misc driver fixes for 3.10-rc2.<br />
<br />
Nothing major here, just a number of fixes for things that people have<br />
reported, and a MAINTAINERS update for the recent changes for the hyperv<br />
files that went into 3.10-rc1.<br />
<br />
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;<br />
<br />
----------------------------------------------------------------<br />
Darrick J. Wong (1):<br />
      ttyprintk: Fix NULL pointer deref by setting tty_port ops after initializing port<br />
<br />
Geert Uytterhoeven (1):<br />
      uio: UIO_DMEM_GENIRQ should depend on HAS_DMA<br />
<br />
Haiyang Zhang (1):<br />
      MAINTAINERS: update Hyper-V file list<br />
<br />
Jonathan Corbet (1):<br />
      dummy-irq: require the user to specify an IRQ number<br />
<br />
K. Y. Srinivasan (1):<br />
      Drivers: hv: Fix a bug in get_vp_index()<br />
<br />
Samuel Ortiz (1):<br />
      mei: bus: Reset event_cb when disabling a device<br />
<br />
Tomas Winkler (1):<br />
      mei: fix out of array access to me clients array<br />
<br />
<a href="mailto:&#115;&#97;&#108;&#105;&#110;&#97;&#64;&#117;&#115;&#46;&#105;&#98;&#109;&#46;&#99;&#111;&#109;">&#115;&#97;&#108;&#105;&#110;&#97;&#64;&#117;&#115;&#46;&#105;&#98;&#109;&#46;&#99;&#111;&#109;</a> (1):<br />
      Char: lp, protect LPGETSTATUS with port_mutex<br />
<br />
 MAINTAINERS               |  9 ++++++++-<br />
 drivers/char/lp.c         |  3 +++<br />
 drivers/char/ttyprintk.c  |  2 +-<br />
 drivers/hv/channel_mgmt.c |  2 +-<br />
 drivers/misc/dummy-irq.c  |  6 +++++-<br />
 drivers/misc/mei/bus.c    |  2 ++<br />
 drivers/misc/mei/main.c   | 17 ++++++++---------<br />
 drivers/uio/Kconfig       |  1 +<br />
 8 files changed, 29 insertions(+), 13 deletions(-)<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Greg KH</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712082,712082#msg-712082</guid>
            <title>[PATCH v2 0/3] ARM: at91: move aic driver to drivers/irqchip</title>
            <link>http://www.serverphorums.com/read.php?12,712082,712082#msg-712082</link>
            <description><![CDATA[ Hello,<br />
<br />
This patch series :<br />
 - register the arch specific irq handler inside the the init functions<br />
   using set_handle_irq. This way we can remove all the machine specific<br />
   &quot;handle_irq&quot;<br />
 - move the at91 AIC (Advance Interrupt Controller) driver to the <br />
   irqchip subsystem directory (drivers/irqchip)<br />
 - make use of IRQCHIP_DECLARE to register irqchip for dt boards<br />
   instead of using the machine specific &quot;init_irq&quot; function<br />
<br />
This patch series was tested on kizbox board (sam9g20 SoC) using<br />
device tree. Could someone test it on other boards (both dt and non dt)?<br />
<br />
Changes since v1:<br />
 - reorder patch (3rd patch is now applied first).<br />
 - remove references to machine specific header (&lt;mach/at91_aic.h&gt;).<br />
<br />
Maybe we should cleanup include/linux/irqchip/at91.h<br />
(as suggested by Russel).<br />
Currently, the only MACROs needed outside of irq-at91.c are:<br />
 - pm.c : at91_aic_read, AT91_AIC_IMR and AT91_AIC_IPR<br />
 - at91xxx.c : NR_AICX_IRQS<br />
<br />
Please let me know what you think is best.<br />
<br />
Best Regards,<br />
Boris<br />
<br />
Boris BREZILLON (3):<br />
  ARM: at91: use set_handle_irq instead of machine specific handle_irq<br />
  ARM: at91: move at91 aic driver to drivers/irqchip<br />
  ARM: at91: use IRQCHIP_DECLARE instead of machine specific init_irq<br />
<br />
 arch/arm/mach-at91/Makefile                        |    2 +-<br />
 arch/arm/mach-at91/at91rm9200.c                    |    2 +-<br />
 arch/arm/mach-at91/at91sam9260.c                   |    2 +-<br />
 arch/arm/mach-at91/at91sam9261.c                   |    2 +-<br />
 arch/arm/mach-at91/at91sam9263.c                   |    2 +-<br />
 arch/arm/mach-at91/at91sam9g45.c                   |    2 +-<br />
 arch/arm/mach-at91/at91sam9rl.c                    |    2 +-<br />
 arch/arm/mach-at91/at91x40.c                       |    2 +-<br />
 arch/arm/mach-at91/board-1arm.c                    |    3 +--<br />
 arch/arm/mach-at91/board-afeb-9260v1.c             |    3 +--<br />
 arch/arm/mach-at91/board-cam60.c                   |    3 +--<br />
 arch/arm/mach-at91/board-carmeva.c                 |    3 +--<br />
 arch/arm/mach-at91/board-cpu9krea.c                |    3 +--<br />
 arch/arm/mach-at91/board-cpuat91.c                 |    3 +--<br />
 arch/arm/mach-at91/board-csb337.c                  |    3 +--<br />
 arch/arm/mach-at91/board-csb637.c                  |    3 +--<br />
 arch/arm/mach-at91/board-dt-rm9200.c               |   14 +-------------<br />
 arch/arm/mach-at91/board-dt-sam9.c                 |   15 +--------------<br />
 arch/arm/mach-at91/board-dt-sama5.c                |   15 +--------------<br />
 arch/arm/mach-at91/board-eb01.c                    |    3 +--<br />
 arch/arm/mach-at91/board-eb9200.c                  |    3 +--<br />
 arch/arm/mach-at91/board-ecbat91.c                 |    3 +--<br />
 arch/arm/mach-at91/board-eco920.c                  |    3 +--<br />
 arch/arm/mach-at91/board-flexibity.c               |    3 +--<br />
 arch/arm/mach-at91/board-foxg20.c                  |    3 +--<br />
 arch/arm/mach-at91/board-gsia18s.c                 |    3 +--<br />
 arch/arm/mach-at91/board-kafa.c                    |    3 +--<br />
 arch/arm/mach-at91/board-kb9202.c                  |    3 +--<br />
 arch/arm/mach-at91/board-pcontrol-g20.c            |    3 +--<br />
 arch/arm/mach-at91/board-picotux200.c              |    3 +--<br />
 arch/arm/mach-at91/board-qil-a9260.c               |    3 +--<br />
 arch/arm/mach-at91/board-rm9200dk.c                |    3 +--<br />
 arch/arm/mach-at91/board-rm9200ek.c                |    3 +--<br />
 arch/arm/mach-at91/board-rsi-ews.c                 |    3 +--<br />
 arch/arm/mach-at91/board-sam9-l9260.c              |    3 +--<br />
 arch/arm/mach-at91/board-sam9260ek.c               |    3 +--<br />
 arch/arm/mach-at91/board-sam9261ek.c               |    3 +--<br />
 arch/arm/mach-at91/board-sam9263ek.c               |    3 +--<br />
 arch/arm/mach-at91/board-sam9g20ek.c               |    4 +---<br />
 arch/arm/mach-at91/board-sam9m10g45ek.c            |    3 +--<br />
 arch/arm/mach-at91/board-sam9rlek.c                |    3 +--<br />
 arch/arm/mach-at91/board-snapper9260.c             |    3 +--<br />
 arch/arm/mach-at91/board-stamp9g20.c               |    4 +---<br />
 arch/arm/mach-at91/board-usb-a926x.c               |    5 +----<br />
 arch/arm/mach-at91/board-yl-9200.c                 |    3 +--<br />
 arch/arm/mach-at91/generic.h                       |    5 -----<br />
 arch/arm/mach-at91/pm.c                            |    2 +-<br />
 drivers/irqchip/Makefile                           |    1 +<br />
 .../mach-at91/irq.c =&gt; drivers/irqchip/irq-at91.c  |   14 ++++++++++++--<br />
 .../at91_aic.h =&gt; include/linux/irqchip/at91.h     |    9 +--------<br />
 50 files changed, 60 insertions(+), 137 deletions(-)<br />
 rename arch/arm/mach-at91/irq.c =&gt; drivers/irqchip/irq-at91.c (97%)<br />
 rename arch/arm/mach-at91/at91_aic.h =&gt; include/linux/irqchip/at91.h (95%)<br />
<br />
-- <br />
1.7.9.5<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Boris BREZILLON</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712080,712081#msg-712081</guid>
            <title>Re: [GIT PATCH] USB fixes for 3.10-rc3</title>
            <link>http://www.serverphorums.com/read.php?12,712080,712081#msg-712081</link>
            <description><![CDATA[ On Thu, May 23, 2013 at 09:14:57AM -0700, Greg KH wrote:<br />
&gt; The following changes since commit f722406faae2d073cc1d01063d1123c35425939e:<br />
&gt; <br />
&gt;   Linux 3.10-rc1 (2013-05-11 17:14:08 -0700)<br />
&gt; <br />
&gt; are available in the git repository at:<br />
&gt; <br />
&gt;   git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/ tags/usb-3.10-rc2<br />
&gt; <br />
&gt; for you to fetch changes up to 2a0ebf80aa95cc758d4725f74a7016e992606a39:<br />
&gt; <br />
&gt;   USB: cxacru: potential underflow in cxacru_cm_get_array() (2013-05-20 11:35:47 -0700)<br />
<br />
Linus, you will get a merge conflict with this pull request, in one of<br />
the USB host controller driver.  The fixup should be obvious, but if you<br />
need me to resolve it, I can create another branch for it.<br />
<br />
thanks,<br />
<br />
greg k-h<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Greg KH</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712080,712080#msg-712080</guid>
            <title>[GIT PATCH] USB fixes for 3.10-rc3</title>
            <link>http://www.serverphorums.com/read.php?12,712080,712080#msg-712080</link>
            <description><![CDATA[ The following changes since commit f722406faae2d073cc1d01063d1123c35425939e:<br />
<br />
  Linux 3.10-rc1 (2013-05-11 17:14:08 -0700)<br />
<br />
are available in the git repository at:<br />
<br />
  git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git/ tags/usb-3.10-rc2<br />
<br />
for you to fetch changes up to 2a0ebf80aa95cc758d4725f74a7016e992606a39:<br />
<br />
  USB: cxacru: potential underflow in cxacru_cm_get_array() (2013-05-20 11:35:47 -0700)<br />
<br />
----------------------------------------------------------------<br />
USB fixes for 3.10-rc2<br />
<br />
Here are a number of tiny USB bugfixes / new device ids for 3.10-rc2<br />
<br />
The majority of these are USB gadget fixes, but they are all small.<br />
Other than that, some USB host controller fixes, and USB serial driver<br />
fixes for problems reported with them.<br />
<br />
Also hopefully a fixed up USB_OTG Kconfig dependancy, that one seems to<br />
be almost impossible to get right for all of the different platforms<br />
these days.<br />
<br />
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;<br />
<br />
----------------------------------------------------------------<br />
Alan Stern (6):<br />
      USB: xHCI: override bogus bulk wMaxPacketSize values<br />
      USB: fix Kconfig logic for USB_UHCI_HCD<br />
      USB: UHCI: fix for suspend of virtual HP controller<br />
      USB: fix latency in uhci-hcd and ohci-hcd<br />
      USB: OHCI: fix logic for scheduling isochronous URBs<br />
      USB: remove remaining instances of USB_SUSPEND<br />
<br />
Arnd Bergmann (1):<br />
      USB: EHCI: remove bogus #error<br />
<br />
Dan Carpenter (1):<br />
      USB: cxacru: potential underflow in cxacru_cm_get_array()<br />
<br />
Dan Williams (1):<br />
      USB: option: add device IDs for Dell 5804 (Novatel E371) WWAN card<br />
<br />
David Rientjes (1):<br />
      usb, chipidea: fix link error when USB_EHCI_HCD is a module<br />
<br />
Gomella, Andrew (NIH/NHLBI) [F] (1):<br />
      USB: ftdi_sio: Add support for Newport CONEX motor drivers<br />
<br />
Greg Kroah-Hartman (1):<br />
      Merge tag 'fixes-for-v3.10-rc2' of git://git.kernel.org/.../balbi/usb into usb-linus<br />
<br />
Jingoo Han (1):<br />
      usb: gadget: s3c-hsotg: pass 'struct usb_request *' to usb_gadget_unmap_request()<br />
<br />
Johan Hovold (7):<br />
      USB: serial: add wait_until_sent operation<br />
      USB: serial: add generic wait_until_sent implementation<br />
      USB: ftdi_sio: clean up get_modem_status<br />
      USB: ftdi_sio: fix chars_in_buffer overhead<br />
      USB: io_ti: fix chars_in_buffer overhead<br />
      USB: ti_usb_3410_5052: fix chars_in_buffer overhead<br />
      USB: serial: clean up chars_in_buffer<br />
<br />
Libo Chen (3):<br />
      usb: ehci-s5p: fix memleak when fallback to pdata<br />
      usb: isp1760-if: fix memleak when platform_get_resource fail<br />
      usb: ohci: fix goto wrong tag in err case<br />
<br />
Michael Grzeschik (1):<br />
      usb: otg: mxs-phy: add missing type to usb_phy<br />
<br />
Oliver Neukum (1):<br />
      USB: reset resume quirk needed by a hub<br />
<br />
Paul Bolle (1):<br />
      usb: phy: remove CONFIG_USB_OTG_UTILS once more<br />
<br />
Robert Jarzmik (1):<br />
      usb: phy: Fix NULL pointer exception during usb_get_phy<br />
<br />
Robert P. J. Day (2):<br />
      Correct typo &quot;supperspeed&quot; to &quot;superspeed&quot;.<br />
      Add a couple kernel-doc lines to prevent warnings.<br />
<br />
Sachin Kamat (12):<br />
      usb: gadget: atmel_usba_udc: Remove redundant platform_set_drvdata()<br />
      usb: gadget: bcm63xx_udc: Remove redundant platform_set_drvdata()<br />
      usb: gadget: dummy_hcd: Remove redundant platform_set_drvdata()<br />
      usb: gadget: f_uac2: Remove redundant platform_set_drvdata()<br />
      usb: gadget: imx_udc: Remove redundant platform_set_drvdata()<br />
      usb: gadget: pxa25x_udc: Remove redundant platform_set_drvdata()<br />
      usb: gadget: s3c2410_udc: Remove redundant platform_set_drvdata()<br />
      usb: phy: ab8500-usb: Remove redundant platform_set_drvdata()<br />
      usb: phy: gpio-vbus-usb: Remove redundant platform_set_drvdata()<br />
      usb: phy: mv-usb: Remove redundant platform_set_drvdata()<br />
      usb: phy: mxs-usb: Remove redundant platform_set_drvdata()<br />
      usb: phy: nop: Remove redundant platform_set_drvdata()<br />
<br />
Schemmel Hans-Christoph (1):<br />
      USB: Blacklisted Cinterion's PLxx WWAN Interface<br />
<br />
Stephen Warren (1):<br />
      USB: set device dma_mask without reference to global data<br />
<br />
Teppo Kotilainen (1):<br />
      usb: option: Add Telewell TW-LTE 4G<br />
<br />
Vivek Gautam (1):<br />
      usb: dwc3: Fix compilation break when building with USB_DWC3_DUAL_ROLE=y<br />
<br />
Wei WANG (1):<br />
      USB: usb-stor: realtek_cr: Fix compile error<br />
<br />
Wei Yongjun (9):<br />
      usb: gadget: zero: fix error return code in zero_bind()<br />
      usb: musb: omap2430: add missing platform_device_put() on error in omap2430_probe()<br />
      usb: musb: dsps: fix error return code in dsps_create_musb_pdev()<br />
      usb: gadget: s3c2410_udc: fix error return code in s3c2410_udc_probe()<br />
      usb: gadget: r8a66597-udc: fix error return code in r8a66597_probe()<br />
      usb: gadget: m66592-udc: fix error return code in m66592_probe()<br />
      usb: gadget: fusb300_udc: fix error return code in fusb300_probe()<br />
      usb: gadget: dummy_hcd: fix error return code in init()<br />
      usb: gadget: fix error return code in configfs_composite_bind()<br />
<br />
Wolfram Sang (2):<br />
      usb: gadget: don't check resource with devm_ioremap_resource<br />
      usb: phy: don't check resource with devm_ioremap_resource<br />
<br />
 arch/arm/configs/omap1_defconfig      |  1 -<br />
 arch/arm/configs/omap2plus_defconfig  |  1 -<br />
 arch/mips/configs/db1000_defconfig    |  1 -<br />
 arch/mips/configs/db1235_defconfig    |  1 -<br />
 arch/mips/configs/lemote2f_defconfig  |  1 -<br />
 arch/powerpc/configs/ps3_defconfig    |  1 -<br />
 drivers/net/usb/usbnet.c              |  2 +-<br />
 drivers/staging/dwc2/Kconfig          |  1 -<br />
 drivers/staging/gdm72xx/Kconfig       |  2 +-<br />
 drivers/usb/atm/cxacru.c              |  3 ++-<br />
 drivers/usb/chipidea/Kconfig          |  2 +-<br />
 drivers/usb/chipidea/ci13xxx_imx.c    | 15 +++---------<br />
 drivers/usb/core/Kconfig              |  2 +-<br />
 drivers/usb/core/quirks.c             |  3 +++<br />
 drivers/usb/dwc3/Kconfig              |  6 ++---<br />
 drivers/usb/dwc3/dwc3-exynos.c        |  6 ++---<br />
 drivers/usb/gadget/Kconfig            |  1 -<br />
 drivers/usb/gadget/atmel_usba_udc.c   |  2 --<br />
 drivers/usb/gadget/bcm63xx_udc.c      | 11 ---------<br />
 drivers/usb/gadget/configfs.c         |  8 ++++--<br />
 drivers/usb/gadget/dummy_hcd.c        |  5 ++--<br />
 drivers/usb/gadget/f_ecm.c            |  1 +<br />
 drivers/usb/gadget/f_subset.c         |  1 +<br />
 drivers/usb/gadget/f_uac2.c           |  2 --<br />
 drivers/usb/gadget/fusb300_udc.c      |  4 ++-<br />
 drivers/usb/gadget/imx_udc.c          |  2 --<br />
 drivers/usb/gadget/m66592-udc.c       |  4 ++-<br />
 drivers/usb/gadget/pxa25x_udc.c       |  1 -<br />
 drivers/usb/gadget/r8a66597-udc.c     |  4 ++-<br />
 drivers/usb/gadget/s3c-hsotg.c        |  2 +-<br />
 drivers/usb/gadget/s3c2410_udc.c      |  3 +--<br />
 drivers/usb/gadget/zero.c             |  8 ++++--<br />
 drivers/usb/host/Kconfig              | 17 ++++---------<br />
 drivers/usb/host/ehci-atmel.c         |  6 ++---<br />
 drivers/usb/host/ehci-hcd.c           | 17 -------------<br />
 drivers/usb/host/ehci-omap.c          |  8 +++---<br />
 drivers/usb/host/ehci-orion.c         |  6 ++---<br />
 drivers/usb/host/ehci-s5p.c           |  5 ++--<br />
 drivers/usb/host/ehci-spear.c         |  6 ++---<br />
 drivers/usb/host/ehci-tegra.c         |  6 ++---<br />
 drivers/usb/host/isp1760-hcd.c        |  2 +-<br />
 drivers/usb/host/isp1760-if.c         |  4 ++-<br />
 drivers/usb/host/ohci-at91.c          |  6 ++---<br />
 drivers/usb/host/ohci-exynos.c        |  4 +--<br />
 drivers/usb/host/ohci-hcd.c           | 34 ++++++++++++++------------<br />
 drivers/usb/host/ohci-nxp.c           | 46 +++++++++++++++++------------------<br />
 drivers/usb/host/ohci-omap3.c         |  8 +++---<br />
 drivers/usb/host/ohci-pxa27x.c        |  6 ++---<br />
 drivers/usb/host/ohci-spear.c         |  6 ++---<br />
 drivers/usb/host/oxu210hp-hcd.c       |  2 +-<br />
 drivers/usb/host/sl811-hcd.c          |  2 +-<br />
 drivers/usb/host/uhci-hub.c           |  3 ++-<br />
 drivers/usb/host/uhci-platform.c      |  6 ++---<br />
 drivers/usb/host/uhci-q.c             |  2 +-<br />
 drivers/usb/host/xhci-mem.c           | 17 +++++++------<br />
 drivers/usb/musb/musb_dsps.c          |  1 +<br />
 drivers/usb/musb/omap2430.c           |  3 ++-<br />
 drivers/usb/phy/Kconfig               |  5 ++--<br />
 drivers/usb/phy/phy-ab8500-usb.c      |  2 --<br />
 drivers/usb/phy/phy-fsl-usb.c         |  1 +<br />
 drivers/usb/phy/phy-gpio-vbus-usb.c   |  3 +--<br />
 drivers/usb/phy/phy-isp1301.c         |  1 +<br />
 drivers/usb/phy/phy-mv-u3d-usb.c      |  5 ----<br />
 drivers/usb/phy/phy-mv-usb.c          |  3 ---<br />
 drivers/usb/phy/phy-mxs-usb.c         |  8 +-----<br />
 drivers/usb/phy/phy-nop.c             |  2 --<br />
 drivers/usb/phy/phy-samsung-usb2.c    |  5 ----<br />
 drivers/usb/phy/phy-samsung-usb3.c    |  5 ----<br />
 drivers/usb/serial/ftdi_sio.c         | 30 +++++++++--------------<br />
 drivers/usb/serial/ftdi_sio_ids.h     |  2 ++<br />
 drivers/usb/serial/generic.c          | 31 +++++++++++++++++++++++<br />
 drivers/usb/serial/io_ti.c            | 22 +++++++++++------<br />
 drivers/usb/serial/option.c           | 13 +++++++---<br />
 drivers/usb/serial/ti_usb_3410_5052.c | 23 ++++++++++++------<br />
 drivers/usb/serial/usb-serial.c       | 30 ++++++++++++++++-------<br />
 drivers/usb/storage/realtek_cr.c      |  8 +++---<br />
 include/linux/usb/gadget.h            |  5 ++--<br />
 include/linux/usb/serial.h            |  4 +++<br />
 78 files changed, 269 insertions(+), 269 deletions(-)<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Greg KH</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712079,712079#msg-712079</guid>
            <title>[PATCH v2 2/3] ARM: at91: move at91 aic driver to drivers/irqchip</title>
            <link>http://www.serverphorums.com/read.php?12,712079,712079#msg-712079</link>
            <description><![CDATA[ Move arch/arm/mach-at91/irq.c to drivers/irqchip/irq-at91.c.<br />
Move arch/arm/mach-at91/at91_aic.h to include/linux/irqchip/at91.h to<br />
avoid reference to machine specific hearder files.<br />
Remove __ASSEMBLY__ section in header file (at91_aic_base is only used<br />
in .c files).<br />
<br />
Signed-off-by: Boris BREZILLON &lt;b.brezillon@overkiz.com&gt;<br />
---<br />
 arch/arm/mach-at91/Makefile                        |    2 +-<br />
 arch/arm/mach-at91/at91rm9200.c                    |    2 +-<br />
 arch/arm/mach-at91/at91sam9260.c                   |    2 +-<br />
 arch/arm/mach-at91/at91sam9261.c                   |    2 +-<br />
 arch/arm/mach-at91/at91sam9263.c                   |    2 +-<br />
 arch/arm/mach-at91/at91sam9g45.c                   |    2 +-<br />
 arch/arm/mach-at91/at91sam9rl.c                    |    2 +-<br />
 arch/arm/mach-at91/at91x40.c                       |    2 +-<br />
 arch/arm/mach-at91/board-1arm.c                    |    2 +-<br />
 arch/arm/mach-at91/board-afeb-9260v1.c             |    2 +-<br />
 arch/arm/mach-at91/board-cam60.c                   |    2 +-<br />
 arch/arm/mach-at91/board-carmeva.c                 |    2 +-<br />
 arch/arm/mach-at91/board-cpu9krea.c                |    2 +-<br />
 arch/arm/mach-at91/board-cpuat91.c                 |    2 +-<br />
 arch/arm/mach-at91/board-csb337.c                  |    2 +-<br />
 arch/arm/mach-at91/board-csb637.c                  |    2 +-<br />
 arch/arm/mach-at91/board-dt-rm9200.c               |    2 +-<br />
 arch/arm/mach-at91/board-dt-sam9.c                 |    2 +-<br />
 arch/arm/mach-at91/board-dt-sama5.c                |    2 +-<br />
 arch/arm/mach-at91/board-eb01.c                    |    2 +-<br />
 arch/arm/mach-at91/board-eb9200.c                  |    2 +-<br />
 arch/arm/mach-at91/board-ecbat91.c                 |    2 +-<br />
 arch/arm/mach-at91/board-eco920.c                  |    2 +-<br />
 arch/arm/mach-at91/board-flexibity.c               |    2 +-<br />
 arch/arm/mach-at91/board-foxg20.c                  |    2 +-<br />
 arch/arm/mach-at91/board-gsia18s.c                 |    2 +-<br />
 arch/arm/mach-at91/board-kafa.c                    |    2 +-<br />
 arch/arm/mach-at91/board-kb9202.c                  |    2 +-<br />
 arch/arm/mach-at91/board-pcontrol-g20.c            |    2 +-<br />
 arch/arm/mach-at91/board-picotux200.c              |    2 +-<br />
 arch/arm/mach-at91/board-qil-a9260.c               |    2 +-<br />
 arch/arm/mach-at91/board-rm9200dk.c                |    2 +-<br />
 arch/arm/mach-at91/board-rm9200ek.c                |    2 +-<br />
 arch/arm/mach-at91/board-rsi-ews.c                 |    2 +-<br />
 arch/arm/mach-at91/board-sam9-l9260.c              |    2 +-<br />
 arch/arm/mach-at91/board-sam9260ek.c               |    2 +-<br />
 arch/arm/mach-at91/board-sam9261ek.c               |    2 +-<br />
 arch/arm/mach-at91/board-sam9263ek.c               |    2 +-<br />
 arch/arm/mach-at91/board-sam9g20ek.c               |    2 +-<br />
 arch/arm/mach-at91/board-sam9m10g45ek.c            |    2 +-<br />
 arch/arm/mach-at91/board-sam9rlek.c                |    2 +-<br />
 arch/arm/mach-at91/board-snapper9260.c             |    2 +-<br />
 arch/arm/mach-at91/board-stamp9g20.c               |    2 +-<br />
 arch/arm/mach-at91/board-usb-a926x.c               |    2 +-<br />
 arch/arm/mach-at91/board-yl-9200.c                 |    2 +-<br />
 arch/arm/mach-at91/pm.c                            |    2 +-<br />
 drivers/irqchip/Makefile                           |    1 +<br />
 .../mach-at91/irq.c =&gt; drivers/irqchip/irq-at91.c  |    4 ++--<br />
 .../at91_aic.h =&gt; include/linux/irqchip/at91.h     |    6 +-----<br />
 49 files changed, 50 insertions(+), 53 deletions(-)<br />
<br />
diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile<br />
index 788562d..5333701 100644<br />
--- a/arch/arm/mach-at91/Makefile<br />
+++ b/arch/arm/mach-at91/Makefile<br />
@@ -2,7 +2,7 @@<br />
 # Makefile for the linux kernel.<br />
 #<br />
 <br />
-obj-y		:= irq.o gpio.o setup.o<br />
+obj-y		:= gpio.o setup.o<br />
 obj-m		:=<br />
 obj-n		:=<br />
 obj-		:=<br />
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c<br />
index d193a40..39e7845 100644<br />
--- a/arch/arm/mach-at91/at91rm9200.c<br />
+++ b/arch/arm/mach-at91/at91rm9200.c<br />
@@ -11,6 +11,7 @@<br />
  */<br />
 <br />
 #include &lt;linux/module.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/irq.h&gt;<br />
 #include &lt;asm/mach/arch.h&gt;<br />
@@ -21,7 +22,6 @@<br />
 #include &lt;mach/at91_st.h&gt;<br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;soc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 #include &quot;clock.h&quot;<br />
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c<br />
index a8ce245..5d06727 100644<br />
--- a/arch/arm/mach-at91/at91sam9260.c<br />
+++ b/arch/arm/mach-at91/at91sam9260.c<br />
@@ -11,6 +11,7 @@<br />
  */<br />
 <br />
 #include &lt;linux/module.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/proc-fns.h&gt;<br />
 #include &lt;asm/irq.h&gt;<br />
@@ -22,7 +23,6 @@<br />
 #include &lt;mach/at91sam9260.h&gt;<br />
 #include &lt;mach/at91_pmc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_rstc.h&quot;<br />
 #include &quot;soc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c<br />
index 25efb5a..554aa43 100644<br />
--- a/arch/arm/mach-at91/at91sam9261.c<br />
+++ b/arch/arm/mach-at91/at91sam9261.c<br />
@@ -11,6 +11,7 @@<br />
  */<br />
 <br />
 #include &lt;linux/module.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/proc-fns.h&gt;<br />
 #include &lt;asm/irq.h&gt;<br />
@@ -21,7 +22,6 @@<br />
 #include &lt;mach/at91sam9261.h&gt;<br />
 #include &lt;mach/at91_pmc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_rstc.h&quot;<br />
 #include &quot;soc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c<br />
index f44ffd2..481e993 100644<br />
--- a/arch/arm/mach-at91/at91sam9263.c<br />
+++ b/arch/arm/mach-at91/at91sam9263.c<br />
@@ -11,6 +11,7 @@<br />
  */<br />
 <br />
 #include &lt;linux/module.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/proc-fns.h&gt;<br />
 #include &lt;asm/irq.h&gt;<br />
@@ -20,7 +21,6 @@<br />
 #include &lt;mach/at91sam9263.h&gt;<br />
 #include &lt;mach/at91_pmc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_rstc.h&quot;<br />
 #include &quot;soc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c<br />
index 8b7fce0..bc198a9 100644<br />
--- a/arch/arm/mach-at91/at91sam9g45.c<br />
+++ b/arch/arm/mach-at91/at91sam9g45.c<br />
@@ -12,6 +12,7 @@<br />
 <br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/dma-mapping.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/irq.h&gt;<br />
 #include &lt;asm/mach/arch.h&gt;<br />
@@ -21,7 +22,6 @@<br />
 #include &lt;mach/at91_pmc.h&gt;<br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;soc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 #include &quot;clock.h&quot;<br />
diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c<br />
index f77fae5..65154f0 100644<br />
--- a/arch/arm/mach-at91/at91sam9rl.c<br />
+++ b/arch/arm/mach-at91/at91sam9rl.c<br />
@@ -10,6 +10,7 @@<br />
  */<br />
 <br />
 #include &lt;linux/module.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/proc-fns.h&gt;<br />
 #include &lt;asm/irq.h&gt;<br />
@@ -21,7 +22,6 @@<br />
 #include &lt;mach/at91sam9rl.h&gt;<br />
 #include &lt;mach/at91_pmc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_rstc.h&quot;<br />
 #include &quot;soc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/at91x40.c b/arch/arm/mach-at91/at91x40.c<br />
index 19ca793..4ae1400 100644<br />
--- a/arch/arm/mach-at91/at91x40.c<br />
+++ b/arch/arm/mach-at91/at91x40.c<br />
@@ -14,6 +14,7 @@<br />
 #include &lt;linux/init.h&gt;<br />
 #include &lt;linux/irq.h&gt;<br />
 #include &lt;linux/io.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 #include &lt;asm/proc-fns.h&gt;<br />
 #include &lt;asm/system_misc.h&gt;<br />
 #include &lt;asm/mach/arch.h&gt;<br />
@@ -21,7 +22,6 @@<br />
 #include &lt;mach/at91_st.h&gt;<br />
 #include &lt;mach/timex.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
 /*<br />
diff --git a/arch/arm/mach-at91/board-1arm.c b/arch/arm/mach-at91/board-1arm.c<br />
index 8389e81..7c18c14 100644<br />
--- a/arch/arm/mach-at91/board-1arm.c<br />
+++ b/arch/arm/mach-at91/board-1arm.c<br />
@@ -24,6 +24,7 @@<br />
 #include &lt;linux/mm.h&gt;<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/platform_device.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -36,7 +37,6 @@<br />
 <br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c<br />
index 82832f1..f22552b 100644<br />
--- a/arch/arm/mach-at91/board-afeb-9260v1.c<br />
+++ b/arch/arm/mach-at91/board-afeb-9260v1.c<br />
@@ -33,6 +33,7 @@<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/clk.h&gt;<br />
 #include &lt;linux/dma-mapping.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -43,7 +44,6 @@<br />
 #include &lt;asm/mach/map.h&gt;<br />
 #include &lt;asm/mach/irq.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c<br />
index c1146d9..be01453 100644<br />
--- a/arch/arm/mach-at91/board-cam60.c<br />
+++ b/arch/arm/mach-at91/board-cam60.c<br />
@@ -28,6 +28,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/spi/flash.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -40,7 +41,6 @@<br />
 <br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c<br />
index c0aac79..96a9bee 100644<br />
--- a/arch/arm/mach-at91/board-carmeva.c<br />
+++ b/arch/arm/mach-at91/board-carmeva.c<br />
@@ -25,6 +25,7 @@<br />
 #include &lt;linux/mm.h&gt;<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/platform_device.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -36,7 +37,6 @@<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c<br />
index c8ddf60..1148009 100644<br />
--- a/arch/arm/mach-at91/board-cpu9krea.c<br />
+++ b/arch/arm/mach-at91/board-cpu9krea.c<br />
@@ -30,6 +30,7 @@<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -44,7 +45,6 @@<br />
 #include &lt;mach/at91sam9260_matrix.h&gt;<br />
 #include &lt;mach/at91_matrix.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c<br />
index b7675c8..75c5cd2 100644<br />
--- a/arch/arm/mach-at91/board-cpuat91.c<br />
+++ b/arch/arm/mach-at91/board-cpuat91.c<br />
@@ -26,6 +26,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
 #include &lt;linux/mtd/plat-ram.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -40,7 +41,6 @@<br />
 #include &lt;mach/at91_ramc.h&gt;<br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c<br />
index 746120d..e651d5f 100644<br />
--- a/arch/arm/mach-at91/board-csb337.c<br />
+++ b/arch/arm/mach-at91/board-csb337.c<br />
@@ -28,6 +28,7 @@<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -39,7 +40,6 @@<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c<br />
index c61f7d9..bec8c25 100644<br />
--- a/arch/arm/mach-at91/board-csb637.c<br />
+++ b/arch/arm/mach-at91/board-csb637.c<br />
@@ -25,6 +25,7 @@<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -36,7 +37,6 @@<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-dt-rm9200.c b/arch/arm/mach-at91/board-dt-rm9200.c<br />
index 13d7c62..67fff54 100644<br />
--- a/arch/arm/mach-at91/board-dt-rm9200.c<br />
+++ b/arch/arm/mach-at91/board-dt-rm9200.c<br />
@@ -15,6 +15,7 @@<br />
 #include &lt;linux/of.h&gt;<br />
 #include &lt;linux/of_irq.h&gt;<br />
 #include &lt;linux/of_platform.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/irq.h&gt;<br />
@@ -22,7 +23,6 @@<br />
 #include &lt;asm/mach/map.h&gt;<br />
 #include &lt;asm/mach/irq.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
 <br />
diff --git a/arch/arm/mach-at91/board-dt-sam9.c b/arch/arm/mach-at91/board-dt-sam9.c<br />
index 4d291ae..65edc6e 100644<br />
--- a/arch/arm/mach-at91/board-dt-sam9.c<br />
+++ b/arch/arm/mach-at91/board-dt-sam9.c<br />
@@ -14,6 +14,7 @@<br />
 #include &lt;linux/of.h&gt;<br />
 #include &lt;linux/of_irq.h&gt;<br />
 #include &lt;linux/of_platform.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/irq.h&gt;<br />
@@ -21,7 +22,6 @@<br />
 #include &lt;asm/mach/map.h&gt;<br />
 #include &lt;asm/mach/irq.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-dt-sama5.c b/arch/arm/mach-at91/board-dt-sama5.c<br />
index d39a459..015178f 100644<br />
--- a/arch/arm/mach-at91/board-dt-sama5.c<br />
+++ b/arch/arm/mach-at91/board-dt-sama5.c<br />
@@ -16,6 +16,7 @@<br />
 #include &lt;linux/of_irq.h&gt;<br />
 #include &lt;linux/of_platform.h&gt;<br />
 #include &lt;linux/phy.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/irq.h&gt;<br />
@@ -23,7 +24,6 @@<br />
 #include &lt;asm/mach/map.h&gt;<br />
 #include &lt;asm/mach/irq.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
 <br />
diff --git a/arch/arm/mach-at91/board-eb01.c b/arch/arm/mach-at91/board-eb01.c<br />
index 8d84f46..f0804fd 100644<br />
--- a/arch/arm/mach-at91/board-eb01.c<br />
+++ b/arch/arm/mach-at91/board-eb01.c<br />
@@ -23,12 +23,12 @@<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/irq.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/mach/arch.h&gt;<br />
 #include &lt;asm/mach/map.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c<br />
index 95a4a65..ce9ddb5 100644<br />
--- a/arch/arm/mach-at91/board-eb9200.c<br />
+++ b/arch/arm/mach-at91/board-eb9200.c<br />
@@ -25,6 +25,7 @@<br />
 #include &lt;linux/mm.h&gt;<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/device.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -35,7 +36,6 @@<br />
 #include &lt;asm/mach/map.h&gt;<br />
 #include &lt;asm/mach/irq.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c<br />
index 4bababc..971a309 100644<br />
--- a/arch/arm/mach-at91/board-ecbat91.c<br />
+++ b/arch/arm/mach-at91/board-ecbat91.c<br />
@@ -27,6 +27,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/spi/flash.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -39,7 +40,6 @@<br />
 <br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c<br />
index ba6c6f7..f8463e1 100644<br />
--- a/arch/arm/mach-at91/board-eco920.c<br />
+++ b/arch/arm/mach-at91/board-eco920.c<br />
@@ -18,6 +18,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
 #include &lt;linux/gpio.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/mach-types.h&gt;<br />
 <br />
@@ -28,7 +29,6 @@<br />
 #include &lt;mach/at91_ramc.h&gt;<br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-flexibity.c b/arch/arm/mach-at91/board-flexibity.c<br />
index b9b1f59..8d3ea6d 100644<br />
--- a/arch/arm/mach-at91/board-flexibity.c<br />
+++ b/arch/arm/mach-at91/board-flexibity.c<br />
@@ -25,6 +25,7 @@<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
 #include &lt;linux/gpio.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/mach-types.h&gt;<br />
 <br />
@@ -34,7 +35,6 @@<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-foxg20.c b/arch/arm/mach-at91/board-foxg20.c<br />
index 816db05..14ec339 100644<br />
--- a/arch/arm/mach-at91/board-foxg20.c<br />
+++ b/arch/arm/mach-at91/board-foxg20.c<br />
@@ -31,6 +31,7 @@<br />
 #include &lt;linux/input.h&gt;<br />
 #include &lt;linux/clk.h&gt;<br />
 #include &lt;linux/w1-gpio.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -43,7 +44,6 @@<br />
 <br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-gsia18s.c b/arch/arm/mach-at91/board-gsia18s.c<br />
index af6a925..0912ba5 100644<br />
--- a/arch/arm/mach-at91/board-gsia18s.c<br />
+++ b/arch/arm/mach-at91/board-gsia18s.c<br />
@@ -26,13 +26,13 @@<br />
 #include &lt;linux/i2c/pcf857x.h&gt;<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/mach-types.h&gt;<br />
 #include &lt;asm/mach/arch.h&gt;<br />
 <br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c<br />
index 31bd8c9..10970ba 100644<br />
--- a/arch/arm/mach-at91/board-kafa.c<br />
+++ b/arch/arm/mach-at91/board-kafa.c<br />
@@ -24,6 +24,7 @@<br />
 #include &lt;linux/mm.h&gt;<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/platform_device.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -36,7 +37,6 @@<br />
 <br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c<br />
index df43c2e..6a4a93c 100644<br />
--- a/arch/arm/mach-at91/board-kb9202.c<br />
+++ b/arch/arm/mach-at91/board-kb9202.c<br />
@@ -25,6 +25,7 @@<br />
 #include &lt;linux/mm.h&gt;<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/platform_device.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -39,7 +40,6 @@<br />
 #include &lt;mach/at91rm9200_mc.h&gt;<br />
 #include &lt;mach/at91_ramc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-pcontrol-g20.c b/arch/arm/mach-at91/board-pcontrol-g20.c<br />
index 724c91b..456a5db 100644<br />
--- a/arch/arm/mach-at91/board-pcontrol-g20.c<br />
+++ b/arch/arm/mach-at91/board-pcontrol-g20.c<br />
@@ -25,13 +25,13 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/gpio.h&gt;<br />
 #include &lt;linux/w1-gpio.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/mach-types.h&gt;<br />
 #include &lt;asm/mach/arch.h&gt;<br />
 <br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c<br />
index 479a034..e511065 100644<br />
--- a/arch/arm/mach-at91/board-picotux200.c<br />
+++ b/arch/arm/mach-at91/board-picotux200.c<br />
@@ -27,6 +27,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -40,7 +41,6 @@<br />
 #include &lt;mach/at91rm9200_mc.h&gt;<br />
 #include &lt;mach/at91_ramc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c<br />
index 1d7a4e7..2ffe497 100644<br />
--- a/arch/arm/mach-at91/board-qil-a9260.c<br />
+++ b/arch/arm/mach-at91/board-qil-a9260.c<br />
@@ -30,6 +30,7 @@<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
 #include &lt;linux/clk.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -42,7 +43,6 @@<br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_shdwc.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c<br />
index cc04718..7a1e71d 100644<br />
--- a/arch/arm/mach-at91/board-rm9200dk.c<br />
+++ b/arch/arm/mach-at91/board-rm9200dk.c<br />
@@ -29,6 +29,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -42,7 +43,6 @@<br />
 #include &lt;mach/at91rm9200_mc.h&gt;<br />
 #include &lt;mach/at91_ramc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c<br />
index 13a121a..46acbf9 100644<br />
--- a/arch/arm/mach-at91/board-rm9200ek.c<br />
+++ b/arch/arm/mach-at91/board-rm9200ek.c<br />
@@ -29,6 +29,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -42,7 +43,6 @@<br />
 #include &lt;mach/at91rm9200_mc.h&gt;<br />
 #include &lt;mach/at91_ramc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-rsi-ews.c b/arch/arm/mach-at91/board-rsi-ews.c<br />
index d15ef0c..f7f4406 100644<br />
--- a/arch/arm/mach-at91/board-rsi-ews.c<br />
+++ b/arch/arm/mach-at91/board-rsi-ews.c<br />
@@ -15,6 +15,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -28,7 +29,6 @@<br />
 <br />
 #include &lt;linux/gpio.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c<br />
index 0907df4..72f9163 100644<br />
--- a/arch/arm/mach-at91/board-sam9-l9260.c<br />
+++ b/arch/arm/mach-at91/board-sam9-l9260.c<br />
@@ -27,6 +27,7 @@<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/spi/spi.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/setup.h&gt;<br />
@@ -39,7 +40,6 @@<br />
 <br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c<br />
index 0361c4d..ea5a9cb 100644<br />
--- a/arch/arm/mach-at91/board-sam9260ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9260ek.c<br />
@@ -31,6 +31,7 @@<br />
 #include &lt;linux/i2c/at24.h&gt;<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -44,7 +45,6 @@<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 #include &lt;mach/system_rev.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_shdwc.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c<br />
index c28401a..a181855 100644<br />
--- a/arch/arm/mach-at91/board-sam9261ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9261ek.c<br />
@@ -33,6 +33,7 @@<br />
 #include &lt;linux/fb.h&gt;<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;video/atmel_lcdc.h&gt;<br />
 <br />
@@ -48,7 +49,6 @@<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 #include &lt;mach/system_rev.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_shdwc.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c<br />
index 1287d81..8f8e3f7 100644<br />
--- a/arch/arm/mach-at91/board-sam9263ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9263ek.c<br />
@@ -32,6 +32,7 @@<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
 #include &lt;linux/leds.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;video/atmel_lcdc.h&gt;<br />
 <br />
@@ -47,7 +48,6 @@<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 #include &lt;mach/system_rev.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_shdwc.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c<br />
index c6ea31d..13a4c16 100644<br />
--- a/arch/arm/mach-at91/board-sam9g20ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9g20ek.c<br />
@@ -31,6 +31,7 @@<br />
 #include &lt;linux/regulator/machine.h&gt;<br />
 #include &lt;linux/regulator/fixed.h&gt;<br />
 #include &lt;linux/regulator/consumer.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;linux/platform_data/at91_adc.h&gt;<br />
 <br />
@@ -46,7 +47,6 @@<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 #include &lt;mach/system_rev.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c<br />
index 139a67e..98f88f2 100644<br />
--- a/arch/arm/mach-at91/board-sam9m10g45ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9m10g45ek.c<br />
@@ -26,6 +26,7 @@<br />
 #include &lt;linux/leds.h&gt;<br />
 #include &lt;linux/atmel-mci.h&gt;<br />
 #include &lt;linux/delay.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;linux/platform_data/at91_adc.h&gt;<br />
 <br />
@@ -45,7 +46,6 @@<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 #include &lt;mach/system_rev.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_shdwc.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c<br />
index fdcb1cc..6da0fdb 100644<br />
--- a/arch/arm/mach-at91/board-sam9rlek.c<br />
+++ b/arch/arm/mach-at91/board-sam9rlek.c<br />
@@ -18,6 +18,7 @@<br />
 #include &lt;linux/clk.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;video/atmel_lcdc.h&gt;<br />
 <br />
@@ -33,7 +34,6 @@<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_shdwc.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c<br />
index c07e86a..7cfc767 100644<br />
--- a/arch/arm/mach-at91/board-snapper9260.c<br />
+++ b/arch/arm/mach-at91/board-snapper9260.c<br />
@@ -27,6 +27,7 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/spi/spi.h&gt;<br />
 #include &lt;linux/i2c/pca953x.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/mach-types.h&gt;<br />
 #include &lt;asm/mach/arch.h&gt;<br />
@@ -34,7 +35,6 @@<br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-stamp9g20.c b/arch/arm/mach-at91/board-stamp9g20.c<br />
index 4977e6e..01d7245 100644<br />
--- a/arch/arm/mach-at91/board-stamp9g20.c<br />
+++ b/arch/arm/mach-at91/board-stamp9g20.c<br />
@@ -21,13 +21,13 @@<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/gpio.h&gt;<br />
 #include &lt;linux/w1-gpio.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/mach-types.h&gt;<br />
 #include &lt;asm/mach/arch.h&gt;<br />
 <br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
 #include &quot;generic.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c<br />
index a0f7d74..a89b733 100644<br />
--- a/arch/arm/mach-at91/board-usb-a926x.c<br />
+++ b/arch/arm/mach-at91/board-usb-a926x.c<br />
@@ -31,6 +31,7 @@<br />
 #include &lt;linux/gpio.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
 #include &lt;linux/spi/mmc_spi.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -43,7 +44,6 @@<br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;mach/at91sam9_smc.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;at91_shdwc.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;sam9_smc.h&quot;<br />
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c<br />
index ac3b263..a858ea1 100644<br />
--- a/arch/arm/mach-at91/board-yl-9200.c<br />
+++ b/arch/arm/mach-at91/board-yl-9200.c<br />
@@ -33,6 +33,7 @@<br />
 #include &lt;linux/mtd/physmap.h&gt;<br />
 #include &lt;linux/gpio_keys.h&gt;<br />
 #include &lt;linux/input.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/setup.h&gt;<br />
 #include &lt;asm/mach-types.h&gt;<br />
@@ -47,7 +48,6 @@<br />
 #include &lt;mach/at91_ramc.h&gt;<br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;board.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 <br />
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c<br />
index 530db30..6577307 100644<br />
--- a/arch/arm/mach-at91/pm.c<br />
+++ b/arch/arm/mach-at91/pm.c<br />
@@ -19,6 +19,7 @@<br />
 #include &lt;linux/module.h&gt;<br />
 #include &lt;linux/platform_device.h&gt;<br />
 #include &lt;linux/io.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;asm/irq.h&gt;<br />
 #include &lt;linux/atomic.h&gt;<br />
@@ -28,7 +29,6 @@<br />
 #include &lt;mach/at91_pmc.h&gt;<br />
 #include &lt;mach/cpu.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 #include &quot;generic.h&quot;<br />
 #include &quot;pm.h&quot;<br />
 <br />
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile<br />
index cda4cb5..208b708 100644<br />
--- a/drivers/irqchip/Makefile<br />
+++ b/drivers/irqchip/Makefile<br />
@@ -1,5 +1,6 @@<br />
 obj-$(CONFIG_IRQCHIP)			+= irqchip.o<br />
 <br />
+obj-$(CONFIG_ARCH_AT91)			+= irq-at91.o<br />
 obj-$(CONFIG_ARCH_BCM2835)		+= irq-bcm2835.o<br />
 obj-$(CONFIG_ARCH_EXYNOS)		+= exynos-combiner.o<br />
 obj-$(CONFIG_ARCH_MVEBU)		+= irq-armada-370-xp.o<br />
diff --git a/arch/arm/mach-at91/irq.c b/drivers/irqchip/irq-at91.c<br />
similarity index 99%<br />
rename from arch/arm/mach-at91/irq.c<br />
rename to drivers/irqchip/irq-at91.c<br />
index 18c653f..ca49096 100644<br />
--- a/arch/arm/mach-at91/irq.c<br />
+++ b/drivers/irqchip/irq-at91.c<br />
@@ -1,5 +1,5 @@<br />
 /*<br />
- * linux/arch/arm/mach-at91/irq.c<br />
+ * drivers/irqchip/irq-at91.c<br />
  *<br />
  *  Copyright (C) 2004 SAN People<br />
  *  Copyright (C) 2004 ATMEL<br />
@@ -32,6 +32,7 @@<br />
 #include &lt;linux/irqdomain.h&gt;<br />
 #include &lt;linux/err.h&gt;<br />
 #include &lt;linux/slab.h&gt;<br />
+#include &lt;linux/irqchip/at91.h&gt;<br />
 <br />
 #include &lt;mach/hardware.h&gt;<br />
 #include &lt;asm/irq.h&gt;<br />
@@ -42,7 +43,6 @@<br />
 #include &lt;asm/mach/irq.h&gt;<br />
 #include &lt;asm/mach/map.h&gt;<br />
 <br />
-#include &quot;at91_aic.h&quot;<br />
 <br />
 void __iomem *at91_aic_base;<br />
 static struct irq_domain *at91_aic_domain;<br />
diff --git a/arch/arm/mach-at91/at91_aic.h b/include/linux/irqchip/at91.h<br />
similarity index 97%<br />
rename from arch/arm/mach-at91/at91_aic.h<br />
rename to include/linux/irqchip/at91.h<br />
index be8680d..42f1260 100644<br />
--- a/arch/arm/mach-at91/at91_aic.h<br />
+++ b/include/linux/irqchip/at91.h<br />
@@ -1,5 +1,5 @@<br />
 /*<br />
- * arch/arm/mach-at91/include/mach/at91_aic.h<br />
+ * include/linux/irqchip/at91.h<br />
  *<br />
  * Copyright (C) 2005 Ivan Kokshaysky<br />
  * Copyright (C) SAN People<br />
@@ -16,7 +16,6 @@<br />
 #ifndef AT91_AIC_H<br />
 #define AT91_AIC_H<br />
 <br />
-#ifndef __ASSEMBLY__<br />
 extern void __iomem *at91_aic_base;<br />
 <br />
 #define at91_aic_read(field) \<br />
@@ -24,9 +23,6 @@ extern void __iomem *at91_aic_base;<br />
 <br />
 #define at91_aic_write(field, value) \<br />
 	__raw_writel(value, at91_aic_base + field)<br />
-#else<br />
-.extern at91_aic_base<br />
-#endif<br />
 <br />
 /* Number of irq lines managed by AIC */<br />
 #define NR_AIC_IRQS	32<br />
-- <br />
1.7.9.5<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Boris BREZILLON</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712078,712078#msg-712078</guid>
            <title>[PATCH v2 1/3] ARM: at91: use set_handle_irq instead of machine specific handle_irq</title>
            <link>http://www.serverphorums.com/read.php?12,712078,712078#msg-712078</link>
            <description><![CDATA[ Set machine specific irq handler using set_handle_irq inside aic init<br />
functions instead of handle_irq pointer from machine_desc.<br />
<br />
Signed-off-by: Boris BREZILLON &lt;b.brezillon@overkiz.com&gt;<br />
---<br />
 arch/arm/mach-at91/at91_aic.h           |    3 ---<br />
 arch/arm/mach-at91/board-1arm.c         |    1 -<br />
 arch/arm/mach-at91/board-afeb-9260v1.c  |    1 -<br />
 arch/arm/mach-at91/board-cam60.c        |    1 -<br />
 arch/arm/mach-at91/board-carmeva.c      |    1 -<br />
 arch/arm/mach-at91/board-cpu9krea.c     |    1 -<br />
 arch/arm/mach-at91/board-cpuat91.c      |    1 -<br />
 arch/arm/mach-at91/board-csb337.c       |    1 -<br />
 arch/arm/mach-at91/board-csb637.c       |    1 -<br />
 arch/arm/mach-at91/board-dt-rm9200.c    |    1 -<br />
 arch/arm/mach-at91/board-dt-sam9.c      |    1 -<br />
 arch/arm/mach-at91/board-dt-sama5.c     |    1 -<br />
 arch/arm/mach-at91/board-eb01.c         |    1 -<br />
 arch/arm/mach-at91/board-eb9200.c       |    1 -<br />
 arch/arm/mach-at91/board-ecbat91.c      |    1 -<br />
 arch/arm/mach-at91/board-eco920.c       |    1 -<br />
 arch/arm/mach-at91/board-flexibity.c    |    1 -<br />
 arch/arm/mach-at91/board-foxg20.c       |    1 -<br />
 arch/arm/mach-at91/board-gsia18s.c      |    1 -<br />
 arch/arm/mach-at91/board-kafa.c         |    1 -<br />
 arch/arm/mach-at91/board-kb9202.c       |    1 -<br />
 arch/arm/mach-at91/board-pcontrol-g20.c |    1 -<br />
 arch/arm/mach-at91/board-picotux200.c   |    1 -<br />
 arch/arm/mach-at91/board-qil-a9260.c    |    1 -<br />
 arch/arm/mach-at91/board-rm9200dk.c     |    1 -<br />
 arch/arm/mach-at91/board-rm9200ek.c     |    1 -<br />
 arch/arm/mach-at91/board-rsi-ews.c      |    1 -<br />
 arch/arm/mach-at91/board-sam9-l9260.c   |    1 -<br />
 arch/arm/mach-at91/board-sam9260ek.c    |    1 -<br />
 arch/arm/mach-at91/board-sam9261ek.c    |    1 -<br />
 arch/arm/mach-at91/board-sam9263ek.c    |    1 -<br />
 arch/arm/mach-at91/board-sam9g20ek.c    |    2 --<br />
 arch/arm/mach-at91/board-sam9m10g45ek.c |    1 -<br />
 arch/arm/mach-at91/board-sam9rlek.c     |    1 -<br />
 arch/arm/mach-at91/board-snapper9260.c  |    1 -<br />
 arch/arm/mach-at91/board-stamp9g20.c    |    2 --<br />
 arch/arm/mach-at91/board-usb-a926x.c    |    3 ---<br />
 arch/arm/mach-at91/board-yl-9200.c      |    1 -<br />
 arch/arm/mach-at91/irq.c                |    6 ++++++<br />
 39 files changed, 6 insertions(+), 44 deletions(-)<br />
<br />
diff --git a/arch/arm/mach-at91/at91_aic.h b/arch/arm/mach-at91/at91_aic.h<br />
index eaea661..be8680d 100644<br />
--- a/arch/arm/mach-at91/at91_aic.h<br />
+++ b/arch/arm/mach-at91/at91_aic.h<br />
@@ -93,7 +93,4 @@ extern void __iomem *at91_aic_base;<br />
 #define AT91_AIC_FFSR		0x148			/* Fast Forcing Status Register [SAM9 only] */<br />
 #define AT91_AIC5_FFSR		0x58			/* Fast Forcing Status Register [AIC5] */<br />
 <br />
-void at91_aic_handle_irq(struct pt_regs *regs);<br />
-void at91_aic5_handle_irq(struct pt_regs *regs);<br />
-<br />
 #endif<br />
diff --git a/arch/arm/mach-at91/board-1arm.c b/arch/arm/mach-at91/board-1arm.c<br />
index 35ab632..8389e81 100644<br />
--- a/arch/arm/mach-at91/board-1arm.c<br />
+++ b/arch/arm/mach-at91/board-1arm.c<br />
@@ -92,7 +92,6 @@ MACHINE_START(ONEARM, &quot;Ajeco 1ARM single board computer&quot;)<br />
 	/* Maintainer: Lennert Buytenhek &lt;buytenh@wantstofly.org&gt; */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= onearm_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= onearm_board_init,<br />
diff --git a/arch/arm/mach-at91/board-afeb-9260v1.c b/arch/arm/mach-at91/board-afeb-9260v1.c<br />
index f95e31c..82832f1 100644<br />
--- a/arch/arm/mach-at91/board-afeb-9260v1.c<br />
+++ b/arch/arm/mach-at91/board-afeb-9260v1.c<br />
@@ -212,7 +212,6 @@ MACHINE_START(AFEB9260, &quot;Custom afeb9260 board&quot;)<br />
 	/* Maintainer: Sergey Lapin &lt;slapin@ossfans.org&gt; */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= afeb9260_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= afeb9260_board_init,<br />
diff --git a/arch/arm/mach-at91/board-cam60.c b/arch/arm/mach-at91/board-cam60.c<br />
index ade948b..c1146d9 100644<br />
--- a/arch/arm/mach-at91/board-cam60.c<br />
+++ b/arch/arm/mach-at91/board-cam60.c<br />
@@ -189,7 +189,6 @@ MACHINE_START(CAM60, &quot;KwikByte CAM60&quot;)<br />
 	/* Maintainer: KwikByte */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= cam60_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= cam60_board_init,<br />
diff --git a/arch/arm/mach-at91/board-carmeva.c b/arch/arm/mach-at91/board-carmeva.c<br />
index 9298305..c0aac79 100644<br />
--- a/arch/arm/mach-at91/board-carmeva.c<br />
+++ b/arch/arm/mach-at91/board-carmeva.c<br />
@@ -159,7 +159,6 @@ MACHINE_START(CARMEVA, &quot;Carmeva&quot;)<br />
 	/* Maintainer: Conitec Datasystems */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= carmeva_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= carmeva_board_init,<br />
diff --git a/arch/arm/mach-at91/board-cpu9krea.c b/arch/arm/mach-at91/board-cpu9krea.c<br />
index 008527e..c8ddf60 100644<br />
--- a/arch/arm/mach-at91/board-cpu9krea.c<br />
+++ b/arch/arm/mach-at91/board-cpu9krea.c<br />
@@ -376,7 +376,6 @@ MACHINE_START(CPUAT9G20, &quot;Eukrea CPU9G20&quot;)<br />
 	/* Maintainer: Eric Benard - EUKREA Electromatique */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= cpu9krea_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= cpu9krea_board_init,<br />
diff --git a/arch/arm/mach-at91/board-cpuat91.c b/arch/arm/mach-at91/board-cpuat91.c<br />
index 42f1353..b7675c8 100644<br />
--- a/arch/arm/mach-at91/board-cpuat91.c<br />
+++ b/arch/arm/mach-at91/board-cpuat91.c<br />
@@ -180,7 +180,6 @@ MACHINE_START(CPUAT91, &quot;Eukrea&quot;)<br />
 	/* Maintainer: Eric Benard - EUKREA Electromatique */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= cpuat91_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= cpuat91_board_init,<br />
diff --git a/arch/arm/mach-at91/board-csb337.c b/arch/arm/mach-at91/board-csb337.c<br />
index e5fde215..746120d 100644<br />
--- a/arch/arm/mach-at91/board-csb337.c<br />
+++ b/arch/arm/mach-at91/board-csb337.c<br />
@@ -253,7 +253,6 @@ MACHINE_START(CSB337, &quot;Cogent CSB337&quot;)<br />
 	/* Maintainer: Bill Gatliff */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= csb337_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= csb337_board_init,<br />
diff --git a/arch/arm/mach-at91/board-csb637.c b/arch/arm/mach-at91/board-csb637.c<br />
index fdf1106..c61f7d9 100644<br />
--- a/arch/arm/mach-at91/board-csb637.c<br />
+++ b/arch/arm/mach-at91/board-csb637.c<br />
@@ -134,7 +134,6 @@ MACHINE_START(CSB637, &quot;Cogent CSB637&quot;)<br />
 	/* Maintainer: Bill Gatliff */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= csb637_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= csb637_board_init,<br />
diff --git a/arch/arm/mach-at91/board-dt-rm9200.c b/arch/arm/mach-at91/board-dt-rm9200.c<br />
index 3fcb662..13d7c62 100644<br />
--- a/arch/arm/mach-at91/board-dt-rm9200.c<br />
+++ b/arch/arm/mach-at91/board-dt-rm9200.c<br />
@@ -49,7 +49,6 @@ static const char *at91rm9200_dt_board_compat[] __initdata = {<br />
 DT_MACHINE_START(at91rm9200_dt, &quot;Atmel AT91RM9200 (Device Tree)&quot;)<br />
 	.init_time      = at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= at91rm9200_dt_initialize,<br />
 	.init_irq	= at91rm9200_dt_init_irq,<br />
 	.init_machine	= at91rm9200_dt_device_init,<br />
diff --git a/arch/arm/mach-at91/board-dt-sam9.c b/arch/arm/mach-at91/board-dt-sam9.c<br />
index 8db3013..4d291ae 100644<br />
--- a/arch/arm/mach-at91/board-dt-sam9.c<br />
+++ b/arch/arm/mach-at91/board-dt-sam9.c<br />
@@ -51,7 +51,6 @@ DT_MACHINE_START(at91sam_dt, &quot;Atmel AT91SAM (Device Tree)&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= at91_dt_initialize,<br />
 	.init_irq	= at91_dt_init_irq,<br />
 	.init_machine	= at91_dt_device_init,<br />
diff --git a/arch/arm/mach-at91/board-dt-sama5.c b/arch/arm/mach-at91/board-dt-sama5.c<br />
index 705305e..d39a459 100644<br />
--- a/arch/arm/mach-at91/board-dt-sama5.c<br />
+++ b/arch/arm/mach-at91/board-dt-sama5.c<br />
@@ -78,7 +78,6 @@ DT_MACHINE_START(sama5_dt, &quot;Atmel SAMA5 (Device Tree)&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic5_handle_irq,<br />
 	.init_early	= at91_dt_initialize,<br />
 	.init_irq	= at91_dt_init_irq,<br />
 	.init_machine	= sama5_dt_device_init,<br />
diff --git a/arch/arm/mach-at91/board-eb01.c b/arch/arm/mach-at91/board-eb01.c<br />
index becf0a6..8d84f46 100644<br />
--- a/arch/arm/mach-at91/board-eb01.c<br />
+++ b/arch/arm/mach-at91/board-eb01.c<br />
@@ -45,7 +45,6 @@ static void __init at91eb01_init_early(void)<br />
 MACHINE_START(AT91EB01, &quot;Atmel AT91 EB01&quot;)<br />
 	/* Maintainer: Greg Ungerer &lt;gerg@snapgear.com&gt; */<br />
 	.init_time	= at91x40_timer_init,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= at91eb01_init_early,<br />
 	.init_irq	= at91eb01_init_irq,<br />
 MACHINE_END<br />
diff --git a/arch/arm/mach-at91/board-eb9200.c b/arch/arm/mach-at91/board-eb9200.c<br />
index f9be816..95a4a65 100644<br />
--- a/arch/arm/mach-at91/board-eb9200.c<br />
+++ b/arch/arm/mach-at91/board-eb9200.c<br />
@@ -118,7 +118,6 @@ static void __init eb9200_board_init(void)<br />
 MACHINE_START(ATEB9200, &quot;Embest ATEB9200&quot;)<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= eb9200_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= eb9200_board_init,<br />
diff --git a/arch/arm/mach-at91/board-ecbat91.c b/arch/arm/mach-at91/board-ecbat91.c<br />
index b2fcd71..4bababc 100644<br />
--- a/arch/arm/mach-at91/board-ecbat91.c<br />
+++ b/arch/arm/mach-at91/board-ecbat91.c<br />
@@ -183,7 +183,6 @@ MACHINE_START(ECBAT91, &quot;emQbit's ECB_AT91&quot;)<br />
 	/* Maintainer: emQbit.com */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ecb_at91init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ecb_at91board_init,<br />
diff --git a/arch/arm/mach-at91/board-eco920.c b/arch/arm/mach-at91/board-eco920.c<br />
index 77de410..ba6c6f7 100644<br />
--- a/arch/arm/mach-at91/board-eco920.c<br />
+++ b/arch/arm/mach-at91/board-eco920.c<br />
@@ -151,7 +151,6 @@ MACHINE_START(ECO920, &quot;eco920&quot;)<br />
 	/* Maintainer: Sascha Hauer */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= eco920_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= eco920_board_init,<br />
diff --git a/arch/arm/mach-at91/board-flexibity.c b/arch/arm/mach-at91/board-flexibity.c<br />
index 737c085..b9b1f59 100644<br />
--- a/arch/arm/mach-at91/board-flexibity.c<br />
+++ b/arch/arm/mach-at91/board-flexibity.c<br />
@@ -161,7 +161,6 @@ MACHINE_START(FLEXIBITY, &quot;Flexibity Connect&quot;)<br />
 	/* Maintainer: Maxim Osipov */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= flexibity_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= flexibity_board_init,<br />
diff --git a/arch/arm/mach-at91/board-foxg20.c b/arch/arm/mach-at91/board-foxg20.c<br />
index c20a870..816db05 100644<br />
--- a/arch/arm/mach-at91/board-foxg20.c<br />
+++ b/arch/arm/mach-at91/board-foxg20.c<br />
@@ -264,7 +264,6 @@ MACHINE_START(ACMENETUSFOXG20, &quot;Acme Systems srl FOX Board G20&quot;)<br />
 	/* Maintainer: Sergio Tanzilli */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= foxg20_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= foxg20_board_init,<br />
diff --git a/arch/arm/mach-at91/board-gsia18s.c b/arch/arm/mach-at91/board-gsia18s.c<br />
index c1d61d2..af6a925 100644<br />
--- a/arch/arm/mach-at91/board-gsia18s.c<br />
+++ b/arch/arm/mach-at91/board-gsia18s.c<br />
@@ -576,7 +576,6 @@ static void __init gsia18s_board_init(void)<br />
 MACHINE_START(GSIA18S, &quot;GS_IA18_S&quot;)<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= gsia18s_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= gsia18s_board_init,<br />
diff --git a/arch/arm/mach-at91/board-kafa.c b/arch/arm/mach-at91/board-kafa.c<br />
index 88e2f5d..31bd8c9 100644<br />
--- a/arch/arm/mach-at91/board-kafa.c<br />
+++ b/arch/arm/mach-at91/board-kafa.c<br />
@@ -105,7 +105,6 @@ MACHINE_START(KAFA, &quot;Sperry-Sun KAFA&quot;)<br />
 	/* Maintainer: Sergei Sharonov */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= kafa_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= kafa_board_init,<br />
diff --git a/arch/arm/mach-at91/board-kb9202.c b/arch/arm/mach-at91/board-kb9202.c<br />
index 0c519d9..df43c2e 100644<br />
--- a/arch/arm/mach-at91/board-kb9202.c<br />
+++ b/arch/arm/mach-at91/board-kb9202.c<br />
@@ -151,7 +151,6 @@ MACHINE_START(KB9200, &quot;KB920x&quot;)<br />
 	/* Maintainer: KwikByte, Inc. */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= kb9202_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= kb9202_board_init,<br />
diff --git a/arch/arm/mach-at91/board-pcontrol-g20.c b/arch/arm/mach-at91/board-pcontrol-g20.c<br />
index 65c0d6b..724c91b 100644<br />
--- a/arch/arm/mach-at91/board-pcontrol-g20.c<br />
+++ b/arch/arm/mach-at91/board-pcontrol-g20.c<br />
@@ -219,7 +219,6 @@ MACHINE_START(PCONTROL_G20, &quot;PControl G20&quot;)<br />
 	/* Maintainer: <a href="mailto:&#112;&#103;&#115;&#101;&#108;&#108;&#109;&#97;&#110;&#110;&#64;&#112;&#111;&#114;&#116;&#110;&#101;&#114;&#45;&#101;&#108;&#101;&#107;&#116;&#114;&#111;&#110;&#105;&#107;&#46;&#97;&#116;">&#112;&#103;&#115;&#101;&#108;&#108;&#109;&#97;&#110;&#110;&#64;&#112;&#111;&#114;&#116;&#110;&#101;&#114;&#45;&#101;&#108;&#101;&#107;&#116;&#114;&#111;&#110;&#105;&#107;&#46;&#97;&#116;</a> */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= pcontrol_g20_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= pcontrol_g20_board_init,<br />
diff --git a/arch/arm/mach-at91/board-picotux200.c b/arch/arm/mach-at91/board-picotux200.c<br />
index ab2b2ec..479a034 100644<br />
--- a/arch/arm/mach-at91/board-picotux200.c<br />
+++ b/arch/arm/mach-at91/board-picotux200.c<br />
@@ -121,7 +121,6 @@ MACHINE_START(PICOTUX2XX, &quot;picotux 200&quot;)<br />
 	/* Maintainer: Kleinhenz Elektronik GmbH */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= picotux200_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= picotux200_board_init,<br />
diff --git a/arch/arm/mach-at91/board-qil-a9260.c b/arch/arm/mach-at91/board-qil-a9260.c<br />
index aa3bc9b..1d7a4e7 100644<br />
--- a/arch/arm/mach-at91/board-qil-a9260.c<br />
+++ b/arch/arm/mach-at91/board-qil-a9260.c<br />
@@ -259,7 +259,6 @@ MACHINE_START(QIL_A9260, &quot;CALAO QIL_A9260&quot;)<br />
 	/* Maintainer: calao-systems */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-rm9200dk.c b/arch/arm/mach-at91/board-rm9200dk.c<br />
index 690541b..cc04718 100644<br />
--- a/arch/arm/mach-at91/board-rm9200dk.c<br />
+++ b/arch/arm/mach-at91/board-rm9200dk.c<br />
@@ -221,7 +221,6 @@ MACHINE_START(AT91RM9200DK, &quot;Atmel AT91RM9200-DK&quot;)<br />
 	/* Maintainer: SAN People/Atmel */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= dk_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= dk_board_init,<br />
diff --git a/arch/arm/mach-at91/board-rm9200ek.c b/arch/arm/mach-at91/board-rm9200ek.c<br />
index 8b17dad..13a121a 100644<br />
--- a/arch/arm/mach-at91/board-rm9200ek.c<br />
+++ b/arch/arm/mach-at91/board-rm9200ek.c<br />
@@ -188,7 +188,6 @@ MACHINE_START(AT91RM9200EK, &quot;Atmel AT91RM9200-EK&quot;)<br />
 	/* Maintainer: SAN People/Atmel */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-rsi-ews.c b/arch/arm/mach-at91/board-rsi-ews.c<br />
index f6d7f19..d15ef0c 100644<br />
--- a/arch/arm/mach-at91/board-rsi-ews.c<br />
+++ b/arch/arm/mach-at91/board-rsi-ews.c<br />
@@ -224,7 +224,6 @@ MACHINE_START(RSI_EWS, &quot;RSI EWS&quot;)<br />
 	/* Maintainer: Josef Holzmayr &lt;holzmayr@rsi-elektrotechnik.de&gt; */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= rsi_ews_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= rsi_ews_board_init,<br />
diff --git a/arch/arm/mach-at91/board-sam9-l9260.c b/arch/arm/mach-at91/board-sam9-l9260.c<br />
index 43ee4dc..0907df4 100644<br />
--- a/arch/arm/mach-at91/board-sam9-l9260.c<br />
+++ b/arch/arm/mach-at91/board-sam9-l9260.c<br />
@@ -220,7 +220,6 @@ MACHINE_START(SAM9_L9260, &quot;Olimex SAM9-L9260&quot;)<br />
 	/* Maintainer: Olimex */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-sam9260ek.c b/arch/arm/mach-at91/board-sam9260ek.c<br />
index 0b153c8..0361c4d 100644<br />
--- a/arch/arm/mach-at91/board-sam9260ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9260ek.c<br />
@@ -345,7 +345,6 @@ MACHINE_START(AT91SAM9260EK, &quot;Atmel AT91SAM9260-EK&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c<br />
index b446645..c28401a 100644<br />
--- a/arch/arm/mach-at91/board-sam9261ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9261ek.c<br />
@@ -614,7 +614,6 @@ MACHINE_START(AT91SAM9G10EK, &quot;Atmel AT91SAM9G10-EK&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c<br />
index 3284df0..1287d81 100644<br />
--- a/arch/arm/mach-at91/board-sam9263ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9263ek.c<br />
@@ -445,7 +445,6 @@ MACHINE_START(AT91SAM9263EK, &quot;Atmel AT91SAM9263-EK&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-sam9g20ek.c b/arch/arm/mach-at91/board-sam9g20ek.c<br />
index f9cd1f2..c6ea31d 100644<br />
--- a/arch/arm/mach-at91/board-sam9g20ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9g20ek.c<br />
@@ -411,7 +411,6 @@ MACHINE_START(AT91SAM9G20EK, &quot;Atmel AT91SAM9G20-EK&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
@@ -421,7 +420,6 @@ MACHINE_START(AT91SAM9G20EK_2MMC, &quot;Atmel AT91SAM9G20-EK 2 MMC Slot Mod&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-sam9m10g45ek.c b/arch/arm/mach-at91/board-sam9m10g45ek.c<br />
index 2a94896..139a67e 100644<br />
--- a/arch/arm/mach-at91/board-sam9m10g45ek.c<br />
+++ b/arch/arm/mach-at91/board-sam9m10g45ek.c<br />
@@ -504,7 +504,6 @@ MACHINE_START(AT91SAM9M10G45EK, &quot;Atmel AT91SAM9M10G45-EK&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-sam9rlek.c b/arch/arm/mach-at91/board-sam9rlek.c<br />
index aa265dc..fdcb1cc 100644<br />
--- a/arch/arm/mach-at91/board-sam9rlek.c<br />
+++ b/arch/arm/mach-at91/board-sam9rlek.c<br />
@@ -322,7 +322,6 @@ MACHINE_START(AT91SAM9RLEK, &quot;Atmel AT91SAM9RL-EK&quot;)<br />
 	/* Maintainer: Atmel */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-snapper9260.c b/arch/arm/mach-at91/board-snapper9260.c<br />
index 3aaa978..c07e86a 100644<br />
--- a/arch/arm/mach-at91/board-snapper9260.c<br />
+++ b/arch/arm/mach-at91/board-snapper9260.c<br />
@@ -179,7 +179,6 @@ static void __init snapper9260_board_init(void)<br />
 MACHINE_START(SNAPPER_9260, &quot;Bluewater Systems Snapper 9260/9G20 module&quot;)<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= snapper9260_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= snapper9260_board_init,<br />
diff --git a/arch/arm/mach-at91/board-stamp9g20.c b/arch/arm/mach-at91/board-stamp9g20.c<br />
index 869cbec..4977e6e 100644<br />
--- a/arch/arm/mach-at91/board-stamp9g20.c<br />
+++ b/arch/arm/mach-at91/board-stamp9g20.c<br />
@@ -275,7 +275,6 @@ MACHINE_START(PORTUXG20, &quot;taskit PortuxG20&quot;)<br />
 	/* Maintainer: taskit GmbH */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= stamp9g20_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= portuxg20_board_init,<br />
@@ -285,7 +284,6 @@ MACHINE_START(STAMP9G20, &quot;taskit Stamp9G20&quot;)<br />
 	/* Maintainer: taskit GmbH */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= stamp9g20_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= stamp9g20evb_board_init,<br />
diff --git a/arch/arm/mach-at91/board-usb-a926x.c b/arch/arm/mach-at91/board-usb-a926x.c<br />
index 2487d94..a0f7d74 100644<br />
--- a/arch/arm/mach-at91/board-usb-a926x.c<br />
+++ b/arch/arm/mach-at91/board-usb-a926x.c<br />
@@ -357,7 +357,6 @@ MACHINE_START(USB_A9263, &quot;CALAO USB_A9263&quot;)<br />
 	/* Maintainer: calao-systems */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
@@ -367,7 +366,6 @@ MACHINE_START(USB_A9260, &quot;CALAO USB_A9260&quot;)<br />
 	/* Maintainer: calao-systems */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
@@ -377,7 +375,6 @@ MACHINE_START(USB_A9G20, &quot;CALAO USB_A92G0&quot;)<br />
 	/* Maintainer: Jean-Christophe PLAGNIOL-VILLARD */<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= ek_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= ek_board_init,<br />
diff --git a/arch/arm/mach-at91/board-yl-9200.c b/arch/arm/mach-at91/board-yl-9200.c<br />
index be08377..ac3b263 100644<br />
--- a/arch/arm/mach-at91/board-yl-9200.c<br />
+++ b/arch/arm/mach-at91/board-yl-9200.c<br />
@@ -589,7 +589,6 @@ MACHINE_START(YL9200, &quot;uCdragon YL-9200&quot;)<br />
 	/* Maintainer: S.Birtles */<br />
 	.init_time	= at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
-	.handle_irq	= at91_aic_handle_irq,<br />
 	.init_early	= yl9200_init_early,<br />
 	.init_irq	= at91_init_irq_default,<br />
 	.init_machine	= yl9200_board_init,<br />
diff --git a/arch/arm/mach-at91/irq.c b/arch/arm/mach-at91/irq.c<br />
index e0ca591..18c653f 100644<br />
--- a/arch/arm/mach-at91/irq.c<br />
+++ b/arch/arm/mach-at91/irq.c<br />
@@ -469,6 +469,8 @@ int __init at91_aic_of_init(struct device_node *node,<br />
 <br />
 	at91_aic_hw_init(n_irqs);<br />
 <br />
+	set_handle_irq(at91_aic_handle_irq);<br />
+<br />
 	return 0;<br />
 }<br />
 <br />
@@ -491,6 +493,8 @@ int __init at91_aic5_of_init(struct device_node *node,<br />
 <br />
 	at91_aic5_hw_init(n_irqs);<br />
 <br />
+	set_handle_irq(at91_aic5_handle_irq);<br />
+<br />
 	return 0;<br />
 }<br />
 #endif<br />
@@ -544,4 +548,6 @@ void __init at91_aic_init(unsigned int *priority, unsigned int ext_irq_mask)<br />
 	}<br />
 <br />
 	at91_aic_hw_init(n_irqs);<br />
+<br />
+	set_handle_irq(at91_aic_handle_irq);<br />
 }<br />
-- <br />
1.7.9.5<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Boris BREZILLON</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711663,712077#msg-712077</guid>
            <title>Re: linux-next: Tree for May 23 (asus-wmi)</title>
            <link>http://www.serverphorums.com/read.php?12,711663,712077#msg-712077</link>
            <description><![CDATA[ On 05/22/13 22:49, Stephen Rothwell wrote:<br />
&gt; Hi all,<br />
&gt; <br />
&gt; There will be no linux-next release tomorrow.<br />
&gt; <br />
&gt; Changes since 20130522:<br />
&gt; <br />
<br />
<br />
when CONFIG_ACPI_VIDEO=m and ASUS_WMI=y:<br />
<br />
drivers/built-in.o: In function `asus_wmi_add':<br />
asus-wmi.c:(.text+0x252514): undefined reference to `acpi_video_unregister'<br />
<br />
<br />
-- <br />
~Randy<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Randy Dunlap</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711416,712076#msg-712076</guid>
            <title>Re: OOPS in perf_mmap_close()</title>
            <link>http://www.serverphorums.com/read.php?12,711416,712076#msg-712076</link>
            <description><![CDATA[ On Thu, 23 May 2013, Peter Zijlstra wrote:<br />
<br />
&gt; The patch completely fails to explain how RLIMIT_LOCKED is supposed to<br />
&gt; deal with pinned vs locked. Perf used to account its pages against<br />
&gt; RLIMIT_LOCKED, with the patch it compares pinned against RLIMIT_LOCKED<br />
&gt; but completely discards any possible locked pages.<br />
<br />
Pinned pages are different from mlock. Mlock semantics means that the<br />
pages are kept in memory but the pages are movable (subject to page<br />
migration f.e.).<br />
<br />
Pinned pages have to stay where they are since the physical addresses may<br />
be used for device I/O or other stuff.<br />
<br />
Both pinned and mlocked pages cannot be evicted from memory. If one wants<br />
to account for unevictable pages then both are contributing. However,<br />
since a pinned page may be mlocked simply adding up the counter may cause<br />
problems. The sum could be used as a worst case estimate though.<br />
<br />
We could mlock all pinned pages but then the issue arises on how to track<br />
that properly in order to unpin when the I/O action is done since the app<br />
may have also mlocked pages.<br />
<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Christoph Lameter</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711925,712075#msg-712075</guid>
            <title>Re: [PATCH 2/2] regmap: Make regmap-mmio usable from different contexts</title>
            <link>http://www.serverphorums.com/read.php?12,711925,712075#msg-712075</link>
            <description><![CDATA[ On Thu, May 23, 2013 at 05:50:15PM +0200, Lars-Peter Clausen wrote:<br />
&gt; On 05/23/2013 05:42 PM, Stephen Warren wrote:<br />
<br />
&gt; &gt; I guess the core of the issue is that you want to replace spin_lock()<br />
&gt; &gt; with spin_lock_irqsave(). I'd like to see that explicitly described in<br />
&gt; &gt; the commit description, if that is the core aspect of this change.<br />
<br />
&gt; Hm, it does.<br />
<br />
&gt; 	regmap-mmio uses a spinlock with spin_lock() and spin_unlock() for<br />
&gt; 	locking.<br />
&gt; 	...<br />
&gt; 	This patch updates the adds a flags parameter to the regmap lock<br />
&gt; 	and unlock callbacks and uses spin_lock_irqsave() and<br />
&gt; 	spin_unlock_restore() ...<br />
<br />
That's pretty buried in the changelog though - really all the first<br />
paragraph needs to say is that we want to use the irqsave versions to<br />
allow interaction with interrupt context.]]></description>
            <dc:creator>Mark Brown</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:20:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711925,712074#msg-712074</guid>
            <title>Re: [PATCH 2/2] regmap: Make regmap-mmio usable from different contexts</title>
            <link>http://www.serverphorums.com/read.php?12,711925,712074#msg-712074</link>
            <description><![CDATA[ On 05/23/2013 09:50 AM, Lars-Peter Clausen wrote:<br />
&gt; On 05/23/2013 05:42 PM, Stephen Warren wrote:<br />
&gt;&gt; On 05/23/2013 07:06 AM, Lars-Peter Clausen wrote:<br />
&gt;&gt;&gt; regmap-mmio uses a spinlock with spin_lock() and spin_unlock() for locking.<br />
&gt;&gt;&gt; Which means in order to avoid race conditions the lock always needs to be taken<br />
&gt;&gt;&gt; from the same context.<br />
&gt;&gt;<br />
&gt;&gt; I'm not really sure what this means. I assume contexts are<br />
&gt;&gt; atomic-vs-nonatomic?<br />
&gt; <br />
&gt; Yes.<br />
&gt; <br />
&gt;&gt; If so, spinlocks should work fine for this, right?<br />
&gt; <br />
&gt; No, you have to take special care if you want to take the same spinlock from<br />
&gt; different contexts. And you have to take even more care if the code that<br />
&gt; takes the lock can run in different contexts.<br />
<br />
OK, but what is that &quot;special care&quot; that must be taken? I assume from<br />
this patch, you mean using spin_lock_irqsave() rather than spin_lock().<br />
So the issue isn't so much that spin locks are used, but rather how<br />
they're used. The code still has a spin_lock_t before and after...<br />
<br />
&gt;&gt; I guess the core of the issue is that you want to replace spin_lock()<br />
&gt;&gt; with spin_lock_irqsave(). I'd like to see that explicitly described in<br />
&gt;&gt; the commit description, if that is the core aspect of this change.<br />
&gt; <br />
&gt; Hm, it does.<br />
&gt; <br />
&gt; 	regmap-mmio uses a spinlock with spin_lock() and spin_unlock() for<br />
&gt; 	locking.<br />
&gt; 	...<br />
&gt; 	This patch updates the adds a flags parameter to the regmap lock<br />
&gt; 	and unlock callbacks and uses spin_lock_irqsave() and<br />
&gt; 	spin_unlock_restore() ...<br />
<br />
To me, that doesn't make me realize that the core part of this change is<br />
to switch between the two different APIs that operate on the spin lock.<br />
I'd expect the commit description to say something more like:<br />
<br />
regmap-mmio uses a spinlock for locking. In order for this to work<br />
correctly from different contexts (atomic vs non-atomic), this spinlock<br />
must be locked using spin_lock_irqsave() rather than spin_lock(). To<br />
support this, a spinlock_flags field is added to struct regmap to store<br />
the flags between regmap_{,un}lock_spinlock().<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Stephen Warren</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:10:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712024,712073#msg-712073</guid>
            <title>Re: [PATCH for 3.10-rc2] regmap: regcache: Fixup locking for custom lock callbacks</title>
            <link>http://www.serverphorums.com/read.php?12,712024,712073#msg-712073</link>
            <description><![CDATA[ On Thu, May 23, 2013 at 05:23:49PM +0200, Lars-Peter Clausen wrote:<br />
&gt; The parameter passed to the regmap lock/unlock callbacks needs to be<br />
&gt; map-&gt;lock_arg, regcache passes just map. This works fine in the case that no<br />
&gt; custom locking callbacks are used since in this case map-&gt;lock_arg equals map,<br />
&gt; but will break when custom locking callbacks are used. The issue was introduced<br />
&gt; in commit 0d4529c5(&quot;regmap: make lock/unlock functions customizable&quot;) and is<br />
&gt; fixed by this patch.<br />
<br />
Applied this one as well.]]></description>
            <dc:creator>Mark Brown</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:10:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,710589,712072#msg-712072</guid>
            <title>Re: [PATCH 2/2] net: mv643xx_eth: proper initialization for Kirkwood SoCs</title>
            <link>http://www.serverphorums.com/read.php?12,710589,712072#msg-712072</link>
            <description><![CDATA[ Sebastian,<br />
<br />
On Wed, May 22, 2013 at 02:16:07PM -0600, Jason Gunthorpe wrote:<br />
&gt; On Wed, May 22, 2013 at 10:04:02PM +0200, Sebastian Hesselbarth wrote:<br />
&gt; <br />
&gt; &gt; Ethernet controllers found on Kirkwood SoCs not only suffer from loosing<br />
&gt; &gt; MAC address register contents on clock gating but also some important<br />
&gt; &gt; registers are reset to values that would break ethernet. This patch<br />
&gt; <br />
&gt; FWIW, we found that the bootloader has to write to PSC1, the driver<br />
&gt; doesn't work with the power on/reset value of the register. So I think<br />
&gt; it is safe to assume that all kirkwood bootloaders alter the value.<br />
&gt; <br />
&gt; Our systems write the value 0x00638488 to PSC1.<br />
&gt; <br />
&gt; I looked at patching mv643xx_eth, but ran into the same complexity you<br />
&gt; did, it isn't clear what variants of this IP block have the<br />
&gt; register/etc.<br />
&gt; <br />
&gt; &gt; +	/* Kirkwood resets some registers on gated clocks. Especially<br />
&gt; &gt; +	 * CLK125_BYPASS_EN must be cleared but is not available on<br />
&gt; &gt; +	 * all other SoCs/System Controllers using this driver.<br />
&gt; &gt; +	 */<br />
&gt; &gt; +	if (of_machine_is_compatible(&quot;marvell,kirkwood&quot;))<br />
&gt; &gt; +		wrlp(mp, PORT_SERIAL_CONTROL1,<br />
&gt; &gt; +		     rdlp(mp, PORT_SERIAL_CONTROL1) &amp; ~CLK125_BYPASS_EN);<br />
&gt; <br />
&gt; of_machine_is_compatible seems heavy handed, I would expect this to be<br />
&gt; based on the compatible string of the ethernet node itself, not the<br />
&gt; machine??<br />
<br />
Is there a model number variation between IP that needs this and IP that<br />
doesn't?  If not, I'm fine with of_machine_is_compatible().<br />
<br />
thx,<br />
<br />
Jason.<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Jason Cooper</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:10:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711925,712071#msg-712071</guid>
            <title>Re: [PATCH 2/2] regmap: Make regmap-mmio usable from different contexts</title>
            <link>http://www.serverphorums.com/read.php?12,711925,712071#msg-712071</link>
            <description><![CDATA[ On Thu, May 23, 2013 at 09:42:37AM -0600, Stephen Warren wrote:<br />
<br />
&gt; I guess the core of the issue is that you want to replace spin_lock()<br />
&gt; with spin_lock_irqsave(). I'd like to see that explicitly described in<br />
&gt; the commit description, if that is the core aspect of this change.<br />
<br />
Yes, I was just going to rewrite the commit log to make this a lot<br />
clearer - the entire first paragraph could pretty much just be replaced<br />
by just saying that we need spin_lock_irqsave() to allow interaction<br />
with interrupt context.<br />
<br />
&gt; ... and obviously add a spinlock_flags field to struct regmap (perhaps<br />
&gt; start unioning the mutex and spinlock data fields there if you want to<br />
&gt; save space).<br />
<br />
This should work, yes - care to respin Lars-Peter?]]></description>
            <dc:creator>Mark Brown</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:10:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712070,712070#msg-712070</guid>
            <title>[PATCH] ARM: at91/dt: fix macb pinctrl_macb_rmii_mii_alt definition</title>
            <link>http://www.serverphorums.com/read.php?12,712070,712070#msg-712070</link>
            <description><![CDATA[ The PA24 pin is wrongly assigned to peripheral B.<br />
In the current config there is 2 ETX3 pins (PA11 and PA24) and<br />
no ETXER pin (PA22).<br />
<br />
Signed-off-by: Boris BREZILLON &lt;b.brezillon@overkiz.com&gt;<br />
---<br />
 arch/arm/boot/dts/at91sam9260.dtsi |    2 +-<br />
 1 file changed, 1 insertion(+), 1 deletion(-)<br />
<br />
diff --git a/arch/arm/boot/dts/at91sam9260.dtsi b/arch/arm/boot/dts/at91sam9260.dtsi<br />
index 70b5ccb..84c4bef 100644<br />
--- a/arch/arm/boot/dts/at91sam9260.dtsi<br />
+++ b/arch/arm/boot/dts/at91sam9260.dtsi<br />
@@ -264,7 +264,7 @@<br />
 						atmel,pins =<br />
 							&lt;0 10 0x2 0x0	/* PA10 periph B */<br />
 							 0 11 0x2 0x0	/* PA11 periph B */<br />
-							 0 24 0x2 0x0	/* PA24 periph B */<br />
+							 0 22 0x2 0x0	/* PA22 periph B */<br />
 							 0 25 0x2 0x0	/* PA25 periph B */<br />
 							 0 26 0x2 0x0	/* PA26 periph B */<br />
 							 0 27 0x2 0x0	/* PA27 periph B */<br />
-- <br />
1.7.9.5<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Boris BREZILLON</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:10:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,705282,712069#msg-712069</guid>
            <title>Re: [PATCHv4 12/39] thp, mm: rewrite add_to_page_cache_locked() to support huge pages</title>
            <link>http://www.serverphorums.com/read.php?12,705282,712069#msg-712069</link>
            <description><![CDATA[ On 05/23/2013 07:36 AM, Kirill A. Shutemov wrote:<br />
&gt;&gt;&gt; +	if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE_PAGECACHE)) {<br />
&gt;&gt;&gt; +		BUILD_BUG_ON(HPAGE_CACHE_NR &gt; RADIX_TREE_PRELOAD_NR);<br />
&gt;&gt;&gt; +		nr = hpage_nr_pages(page);<br />
&gt;&gt;&gt; +	} else {<br />
&gt;&gt;&gt; +		BUG_ON(PageTransHuge(page));<br />
&gt;&gt;&gt; +		nr = 1;<br />
&gt;&gt;&gt; +	}<br />
&gt;&gt;<br />
&gt;&gt; Why can't this just be<br />
&gt;&gt;<br />
&gt;&gt; 		nr = hpage_nr_pages(page);<br />
&gt;&gt;<br />
&gt;&gt; Are you trying to optimize for the THP=y, but THP-pagecache=n case?<br />
&gt; <br />
&gt; Yes, I try to optimize for the case.<br />
<br />
I'd suggest either optimizing in _common_ code, or not optimizing it at<br />
all.  Once in production, and all the config options are on, the<br />
optimization goes away anyway.<br />
<br />
You could create a hpagecache_nr_pages() helper or something I guess.<br />
<br />
&gt;&gt;&gt; +	}<br />
&gt;&gt;&gt; +	__mod_zone_page_state(page_zone(page), NR_FILE_PAGES, nr);<br />
&gt;&gt;&gt; +	if (PageTransHuge(page))<br />
&gt;&gt;&gt; +		__inc_zone_page_state(page, NR_FILE_TRANSPARENT_HUGEPAGES);<br />
&gt;&gt;&gt; +	mapping-&gt;nrpages += nr;<br />
&gt;&gt;&gt; +	spin_unlock_irq(&amp;mapping-&gt;tree_lock);<br />
&gt;&gt;&gt; +	radix_tree_preload_end();<br />
&gt;&gt;&gt; +	trace_mm_filemap_add_to_page_cache(page);<br />
&gt;&gt;&gt; +	return 0;<br />
&gt;&gt;&gt; +err:<br />
&gt;&gt;&gt; +	if (i != 0)<br />
&gt;&gt;&gt; +		error = -ENOSPC; /* no space for a huge page */<br />
&gt;&gt;&gt; +	page_cache_release(page + i);<br />
&gt;&gt;&gt; +	page<i>.mapping = NULL;<br />
&gt;&gt;<br />
&gt;&gt; I guess it's a slight behaviour change (I think it's harmless) but if<br />
&gt;&gt; you delay doing the page_cache_get() and page<i>.mapping= until after<br />
&gt;&gt; the radix tree insertion, you can avoid these two lines.<br />
&gt; <br />
&gt; Hm. I don't think it's safe. The spinlock protects radix-tree against<br />
&gt; modification, but find_get_page() can see it just after<br />
&gt; radix_tree_insert().<br />
<br />
Except that the mapping-&gt;tree_lock is still held.  I don't think<br />
find_get_page() can find it in the radix tree without taking the lock.<br />
<br />
&gt; The page is locked and IIUC never uptodate at this point, so nobody will<br />
&gt; be able to do much with it, but leave it without valid -&gt;mapping is a bad<br />
&gt; idea.<br />
<br />
-&gt;mapping changes are protected by lock_page().  You can't keep<br />
-&gt;mapping stable without holding it.  If you unlock_page(), you have to<br />
recheck -&gt;mapping after you reacquire the lock.<br />
<br />
In other words, I think the code is fine.<br />
<br />
&gt;&gt; I'm also trying to figure out how and when you'd actually have to unroll<br />
&gt;&gt; a partial-huge-page worth of radix_tree_insert().  In the small-page<br />
&gt;&gt; case, you can collide with another guy inserting in to the page cache.<br />
&gt;&gt; But, can that happen in the _middle_ of a THP?<br />
&gt; <br />
&gt; E.g. if you enable THP after some uptime, the mapping can contain small pages<br />
&gt; already.<br />
&gt; Or if a process map the file with bad alignement (MAP_FIXED) and touch the<br />
&gt; area, it will get small pages.<br />
<br />
Could you put a comment in explaining this case a bit?  It's a bit subtle.<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a></i></i>]]></description>
            <dc:creator>Dave Hansen</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:10:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712068,712068#msg-712068</guid>
            <title>[PATCH v2 3/3] ARM: at91: use IRQCHIP_DECLARE instead of machine specific init_irq</title>
            <link>http://www.serverphorums.com/read.php?12,712068,712068#msg-712068</link>
            <description><![CDATA[ Replace machine specific init_irq functions with IRQCHIP_DECLARE.<br />
<br />
Signed-off-by: Boris BREZILLON &lt;b.brezillon@overkiz.com&gt;<br />
---<br />
 arch/arm/mach-at91/board-dt-rm9200.c |   11 -----------<br />
 arch/arm/mach-at91/board-dt-sam9.c   |   12 ------------<br />
 arch/arm/mach-at91/board-dt-sama5.c  |   12 ------------<br />
 arch/arm/mach-at91/generic.h         |    5 -----<br />
 drivers/irqchip/irq-at91.c           |    4 ++++<br />
 5 files changed, 4 insertions(+), 40 deletions(-)<br />
<br />
diff --git a/arch/arm/mach-at91/board-dt-rm9200.c b/arch/arm/mach-at91/board-dt-rm9200.c<br />
index 67fff54..7ee7e5f 100644<br />
--- a/arch/arm/mach-at91/board-dt-rm9200.c<br />
+++ b/arch/arm/mach-at91/board-dt-rm9200.c<br />
@@ -26,16 +26,6 @@<br />
 #include &quot;generic.h&quot;<br />
 <br />
 <br />
-static const struct of_device_id irq_of_match[] __initconst = {<br />
-	{ .compatible = &quot;atmel,at91rm9200-aic&quot;, .data = at91_aic_of_init },<br />
-	{ /*sentinel*/ }<br />
-};<br />
-<br />
-static void __init at91rm9200_dt_init_irq(void)<br />
-{<br />
-	of_irq_init(irq_of_match);<br />
-}<br />
-<br />
 static void __init at91rm9200_dt_device_init(void)<br />
 {<br />
 	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);<br />
@@ -50,7 +40,6 @@ DT_MACHINE_START(at91rm9200_dt, &quot;Atmel AT91RM9200 (Device Tree)&quot;)<br />
 	.init_time      = at91rm9200_timer_init,<br />
 	.map_io		= at91_map_io,<br />
 	.init_early	= at91rm9200_dt_initialize,<br />
-	.init_irq	= at91rm9200_dt_init_irq,<br />
 	.init_machine	= at91rm9200_dt_device_init,<br />
 	.dt_compat	= at91rm9200_dt_board_compat,<br />
 MACHINE_END<br />
diff --git a/arch/arm/mach-at91/board-dt-sam9.c b/arch/arm/mach-at91/board-dt-sam9.c<br />
index 65edc6e..e7aa089 100644<br />
--- a/arch/arm/mach-at91/board-dt-sam9.c<br />
+++ b/arch/arm/mach-at91/board-dt-sam9.c<br />
@@ -26,17 +26,6 @@<br />
 #include &quot;generic.h&quot;<br />
 <br />
 <br />
-static const struct of_device_id irq_of_match[] __initconst = {<br />
-<br />
-	{ .compatible = &quot;atmel,at91rm9200-aic&quot;, .data = at91_aic_of_init },<br />
-	{ /*sentinel*/ }<br />
-};<br />
-<br />
-static void __init at91_dt_init_irq(void)<br />
-{<br />
-	of_irq_init(irq_of_match);<br />
-}<br />
-<br />
 static void __init at91_dt_device_init(void)<br />
 {<br />
 	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);<br />
@@ -52,7 +41,6 @@ DT_MACHINE_START(at91sam_dt, &quot;Atmel AT91SAM (Device Tree)&quot;)<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
 	.init_early	= at91_dt_initialize,<br />
-	.init_irq	= at91_dt_init_irq,<br />
 	.init_machine	= at91_dt_device_init,<br />
 	.dt_compat	= at91_dt_board_compat,<br />
 MACHINE_END<br />
diff --git a/arch/arm/mach-at91/board-dt-sama5.c b/arch/arm/mach-at91/board-dt-sama5.c<br />
index 015178f..b3b6a1b 100644<br />
--- a/arch/arm/mach-at91/board-dt-sama5.c<br />
+++ b/arch/arm/mach-at91/board-dt-sama5.c<br />
@@ -27,17 +27,6 @@<br />
 #include &quot;generic.h&quot;<br />
 <br />
 <br />
-static const struct of_device_id irq_of_match[] __initconst = {<br />
-<br />
-	{ .compatible = &quot;atmel,sama5d3-aic&quot;, .data = at91_aic5_of_init },<br />
-	{ /*sentinel*/ }<br />
-};<br />
-<br />
-static void __init at91_dt_init_irq(void)<br />
-{<br />
-	of_irq_init(irq_of_match);<br />
-}<br />
-<br />
 static int ksz9021rn_phy_fixup(struct phy_device *phy)<br />
 {<br />
 	int value;<br />
@@ -79,7 +68,6 @@ DT_MACHINE_START(sama5_dt, &quot;Atmel SAMA5 (Device Tree)&quot;)<br />
 	.init_time	= at91sam926x_pit_init,<br />
 	.map_io		= at91_map_io,<br />
 	.init_early	= at91_dt_initialize,<br />
-	.init_irq	= at91_dt_init_irq,<br />
 	.init_machine	= sama5_dt_device_init,<br />
 	.dt_compat	= sama5_dt_board_compat,<br />
 MACHINE_END<br />
diff --git a/arch/arm/mach-at91/generic.h b/arch/arm/mach-at91/generic.h<br />
index 78ab065..23077cf 100644<br />
--- a/arch/arm/mach-at91/generic.h<br />
+++ b/arch/arm/mach-at91/generic.h<br />
@@ -29,11 +29,6 @@ extern void __init at91_init_interrupts(unsigned int priority[]);<br />
 extern void __init at91x40_init_interrupts(unsigned int priority[]);<br />
 extern void __init at91_aic_init(unsigned int priority[],<br />
 				 unsigned int ext_irq_mask);<br />
-extern int  __init at91_aic_of_init(struct device_node *node,<br />
-				    struct device_node *parent);<br />
-extern int  __init at91_aic5_of_init(struct device_node *node,<br />
-				    struct device_node *parent);<br />
-<br />
 <br />
  /* Timer */<br />
 extern void at91rm9200_ioremap_st(u32 addr);<br />
diff --git a/drivers/irqchip/irq-at91.c b/drivers/irqchip/irq-at91.c<br />
index ca49096..137d428 100644<br />
--- a/drivers/irqchip/irq-at91.c<br />
+++ b/drivers/irqchip/irq-at91.c<br />
@@ -43,6 +43,8 @@<br />
 #include &lt;asm/mach/irq.h&gt;<br />
 #include &lt;asm/mach/map.h&gt;<br />
 <br />
+#include &quot;irqchip.h&quot;<br />
+<br />
 <br />
 void __iomem *at91_aic_base;<br />
 static struct irq_domain *at91_aic_domain;<br />
@@ -473,6 +475,7 @@ int __init at91_aic_of_init(struct device_node *node,<br />
 <br />
 	return 0;<br />
 }<br />
+IRQCHIP_DECLARE(at91rm9200_aic, &quot;atmel,at91rm9200-aic&quot;, at91_aic_of_init);<br />
 <br />
 int __init at91_aic5_of_init(struct device_node *node,<br />
 				     struct device_node *parent)<br />
@@ -497,6 +500,7 @@ int __init at91_aic5_of_init(struct device_node *node,<br />
 <br />
 	return 0;<br />
 }<br />
+IRQCHIP_DECLARE(sama5d3_aic, &quot;atmel,sama5d3-aic&quot;, at91_aic5_of_init);<br />
 #endif<br />
 <br />
 /*<br />
-- <br />
1.7.9.5<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Boris BREZILLON</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:10:01 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711433,712067#msg-712067</guid>
            <title>Re: [PATCH v7 09/11] KVM: MMU: introduce kvm_mmu_prepare_zap_obsolete_page</title>
            <link>http://www.serverphorums.com/read.php?12,711433,712067#msg-712067</link>
            <description><![CDATA[ On Thu, May 23, 2013 at 09:03:50PM +0800, Xiao Guangrong wrote:<br />
&gt; On 05/23/2013 08:39 PM, Gleb Natapov wrote:<br />
&gt; &gt; On Thu, May 23, 2013 at 07:13:58PM +0800, Xiao Guangrong wrote:<br />
&gt; &gt;&gt; On 05/23/2013 04:09 PM, Gleb Natapov wrote:<br />
&gt; &gt;&gt;&gt; On Thu, May 23, 2013 at 03:50:16PM +0800, Xiao Guangrong wrote:<br />
&gt; &gt;&gt;&gt;&gt; On 05/23/2013 03:37 PM, Gleb Natapov wrote:<br />
&gt; &gt;&gt;&gt;&gt;&gt; On Thu, May 23, 2013 at 02:31:47PM +0800, Xiao Guangrong wrote:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; On 05/23/2013 02:18 PM, Gleb Natapov wrote:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; On Thu, May 23, 2013 at 02:13:06PM +0800, Xiao Guangrong wrote:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On 05/23/2013 01:57 PM, Gleb Natapov wrote:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; On Thu, May 23, 2013 at 03:55:58AM +0800, Xiao Guangrong wrote:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; It is only used to zap the obsolete page. Since the obsolete page<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; will not be used, we need not spend time to find its unsync children<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; out. Also, we delete the page from shadow page cache so that the page<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; is completely isolated after call this function.<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The later patch will use it to collapse tlb flushes<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Signed-off-by: Xiao Guangrong &lt;xiaoguangrong@linux.vnet.ibm.com&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; ---<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  arch/x86/kvm/mmu.c |   46 +++++++++++++++++++++++++++++++++++++++++-----<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  1 files changed, 41 insertions(+), 5 deletions(-)<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; index 9b57faa..e676356 100644<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; --- a/arch/x86/kvm/mmu.c<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +++ b/arch/x86/kvm/mmu.c<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; @@ -1466,7 +1466,7 @@ static inline void kvm_mod_used_mmu_pages(struct kvm *kvm, int nr)<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  static void kvm_mmu_free_page(struct kvm_mmu_page *sp)<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  {<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  	ASSERT(is_empty_shadow_page(sp-&gt;spt));<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; -	hlist_del(&amp;sp-&gt;hash_link);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; +	hlist_del_init(&amp;sp-&gt;hash_link);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Why do you need hlist_del_init() here? Why not move it into<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Since the hlist will be double freed. We will it like this:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; kvm_mmu_prepare_zap_obsolete_page(page, list);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; kvm_mmu_commit_zap_page(list);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;    kvm_mmu_free_page(page);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; The first place is kvm_mmu_prepare_zap_obsolete_page(page), which have<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; deleted the hash list.<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; kvm_mmu_prepare_zap_page() like we discussed it here:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; <a href="https://patchwork.kernel.org/patch/2580351/" target="_blank"  rel="nofollow">https://patchwork.kernel.org/patch/2580351/</a> instead of doing<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; it differently for obsolete and non obsolete pages?<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; It is can break the hash-list walking: we should rescan the<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; hash list once the page is prepared-ly zapped.<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; I mentioned it in the changelog:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;   4): drop the patch which deleted page from hash list at the &quot;prepare&quot;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;       time since it can break the walk based on hash list.<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;&gt; Can you elaborate on how this can happen?<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; There is a example:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; int kvm_mmu_unprotect_page(struct kvm *kvm, gfn_t gfn)<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; {<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	struct kvm_mmu_page *sp;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	LIST_HEAD(invalid_list);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	int r;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	pgprintk(&quot;%s: looking for gfn %llx\n&quot;, __func__, gfn);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	r = 0;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	spin_lock(&amp;kvm-&gt;mmu_lock);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	for_each_gfn_indirect_valid_sp(kvm, sp, gfn) {<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 		pgprintk(&quot;%s: gfn %llx role %x\n&quot;, __func__, gfn,<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 			 sp-&gt;role.word);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 		r = 1;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 		kvm_mmu_prepare_zap_page(kvm, sp, &amp;invalid_list);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	}<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	kvm_mmu_commit_zap_page(kvm, &amp;invalid_list);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	spin_unlock(&amp;kvm-&gt;mmu_lock);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	return r;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; }<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; It works fine since kvm_mmu_prepare_zap_page does not touch the hash list.<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; If we delete hlist in kvm_mmu_prepare_zap_page(), this kind of codes should<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; be changed to:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; restart:<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	for_each_gfn_indirect_valid_sp(kvm, sp, gfn) {<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 		pgprintk(&quot;%s: gfn %llx role %x\n&quot;, __func__, gfn,<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 			 sp-&gt;role.word);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 		r = 1;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 		if (kvm_mmu_prepare_zap_page(kvm, sp, &amp;invalid_list))<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 			goto restart;<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	}<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt; 	kvm_mmu_commit_zap_page(kvm, &amp;invalid_list);<br />
&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt;&gt; Hmm, yes. So lets leave it as is and always commit invalid_list before<br />
&gt; &gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt;&gt; So, you mean drop this patch and the patch of<br />
&gt; &gt;&gt;&gt;&gt; KVM: MMU: collapse TLB flushes when zap all pages?<br />
&gt; &gt;&gt;&gt;&gt;<br />
&gt; &gt;&gt;&gt; We still want to add kvm_reload_remote_mmus() to<br />
&gt; &gt;&gt;&gt; kvm_mmu_invalidate_zap_all_pages(). But yes, we disable a nice<br />
&gt; &gt;&gt;&gt; optimization here. So may be skipping obsolete pages while walking<br />
&gt; &gt;&gt;&gt; hashtable is better solution.<br />
&gt; &gt;&gt;<br />
&gt; &gt;&gt; I am willing to use this way instead, but it looks worse than this<br />
&gt; &gt;&gt; patch:<br />
&gt; &gt;&gt;<br />
&gt; &gt;&gt; diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c<br />
&gt; &gt;&gt; index 9b57faa..810410c 100644<br />
&gt; &gt;&gt; --- a/arch/x86/kvm/mmu.c<br />
&gt; &gt;&gt; +++ b/arch/x86/kvm/mmu.c<br />
&gt; &gt;&gt; @@ -1466,7 +1466,7 @@ static inline void kvm_mod_used_mmu_pages(struct kvm *kvm, int nr)<br />
&gt; &gt;&gt;  static void kvm_mmu_free_page(struct kvm_mmu_page *sp)<br />
&gt; &gt;&gt;  {<br />
&gt; &gt;&gt;  	ASSERT(is_empty_shadow_page(sp-&gt;spt));<br />
&gt; &gt;&gt; -	hlist_del(&amp;sp-&gt;hash_link);<br />
&gt; &gt;&gt; +	hlist_del_init(&amp;sp-&gt;hash_link);<br />
&gt; &gt; Why not drop this<br />
&gt; &gt; <br />
&gt; &gt;&gt;  	list_del(&amp;sp-&gt;link);<br />
&gt; &gt;&gt;  	free_page((unsigned long)sp-&gt;spt);<br />
&gt; &gt;&gt;  	if (!sp-&gt;role.direct)<br />
&gt; &gt;&gt; @@ -1648,14 +1648,20 @@ static int kvm_mmu_prepare_zap_page(struct kvm *kvm, struct kvm_mmu_page *sp,<br />
&gt; &gt;&gt;  static void kvm_mmu_commit_zap_page(struct kvm *kvm,<br />
&gt; &gt;&gt;  				    struct list_head *invalid_list);<br />
&gt; &gt;&gt;<br />
&gt; &gt;&gt; +static bool is_obsolete_sp(struct kvm *kvm, struct kvm_mmu_page *sp)<br />
&gt; &gt;&gt; +{<br />
&gt; &gt;&gt; +	return unlikely(sp-&gt;mmu_valid_gen != kvm-&gt;arch.mmu_valid_gen);<br />
&gt; &gt;&gt; +}<br />
&gt; &gt;&gt; +<br />
&gt; &gt;&gt;  #define for_each_gfn_sp(_kvm, _sp, _gfn)				\<br />
&gt; &gt;&gt;  	hlist_for_each_entry(_sp,					\<br />
&gt; &gt;&gt;  	  &amp;(_kvm)-&gt;arch.mmu_page_hash[kvm_page_table_hashfn(_gfn)], hash_link) \<br />
&gt; &gt;&gt; -		if ((_sp)-&gt;gfn != (_gfn)) {} else<br />
&gt; &gt;&gt; +		if ((_sp)-&gt;gfn != (_gfn) || is_obsolete_sp(_kvm, _sp)) {} else<br />
&gt; &gt;&gt;<br />
&gt; &gt;&gt;  #define for_each_gfn_indirect_valid_sp(_kvm, _sp, _gfn)			\<br />
&gt; &gt;&gt;  	for_each_gfn_sp(_kvm, _sp, _gfn)				\<br />
&gt; &gt;&gt; -		if ((_sp)-&gt;role.direct || (_sp)-&gt;role.invalid) {} else<br />
&gt; &gt;&gt; +		if ((_sp)-&gt;role.direct ||				\<br />
&gt; &gt;&gt; +		      (_sp)-&gt;role.invalid || is_obsolete_sp(_kvm, _sp)) {} else<br />
&gt; &gt;&gt;<br />
&gt; &gt;&gt;  /* @sp-&gt;gfn should be write-protected at the call site */<br />
&gt; &gt;&gt;  static int __kvm_sync_page(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp,<br />
&gt; &gt;&gt; @@ -1838,11 +1844,6 @@ static void clear_sp_write_flooding_count(u64 *spte)<br />
&gt; &gt;&gt;  	__clear_sp_write_flooding_count(sp);<br />
&gt; &gt;&gt;  }<br />
&gt; &gt;&gt;<br />
&gt; &gt;&gt; -static bool is_obsolete_sp(struct kvm *kvm, struct kvm_mmu_page *sp)<br />
&gt; &gt;&gt; -{<br />
&gt; &gt;&gt; -	return unlikely(sp-&gt;mmu_valid_gen != kvm-&gt;arch.mmu_valid_gen);<br />
&gt; &gt;&gt; -}<br />
&gt; &gt;&gt; -<br />
&gt; &gt;&gt;  static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu,<br />
&gt; &gt;&gt;  					     gfn_t gfn,<br />
&gt; &gt;&gt;  					     gva_t gaddr,<br />
&gt; &gt;&gt; @@ -2085,11 +2086,15 @@ static int kvm_mmu_prepare_zap_page(struct kvm *kvm, struct kvm_mmu_page *sp,<br />
&gt; &gt;&gt;<br />
&gt; &gt;&gt;  	if (sp-&gt;unsync)<br />
&gt; &gt;&gt;  		kvm_unlink_unsync_page(kvm, sp);<br />
&gt; &gt;&gt; +<br />
&gt; &gt;&gt;  	if (!sp-&gt;root_count) {<br />
&gt; &gt;&gt;  		/* Count self */<br />
&gt; &gt;&gt;  		ret++;<br />
&gt; &gt;&gt;  		list_move(&amp;sp-&gt;link, invalid_list);<br />
&gt; &gt;&gt;  		kvm_mod_used_mmu_pages(kvm, -1);<br />
&gt; &gt;&gt; +<br />
&gt; &gt;&gt; +		if (unlikely(is_obsolete_sp(kvm, sp)))<br />
&gt; &gt;&gt; +			hlist_del_init(&amp;sp-&gt;hash_link);<br />
&gt; &gt; and this.<br />
&gt; &gt; <br />
&gt; &gt; Since we check for obsolete while searching hashtable why delete it<br />
&gt; &gt; here?<br />
&gt; <br />
&gt; In order to zap obsolete pages without tlb flush, we should delete them from<br />
&gt; hash list at the &quot;prepare&quot; time. Here, we only delete the obsolete pages so<br />
&gt; that the hashtable walking functions, like kvm_mmu_unprotect_page(), can work<br />
&gt; properly by skipping obsolete page.<br />
&gt; <br />
Why we have to delete them from the hash at &quot;prepare&quot; time? I hash walk<br />
ignores them they are as good as deleted, no?<br />
<br />
&gt; And, kvm_mmu_prepare_zap_page() is a recursion function:<br />
&gt; kvm_mmu_prepare_zap_page() -&gt; zap_unsync_children -&gt; kvm_mmu_prepare_zap_page().<br />
&gt; It seems it is the only place to do this thing. For example, below code is not<br />
&gt; allowed in kvm_zap_obsolete_pages():<br />
&gt; <br />
&gt; if (kvm_mmu_prepare_zap_page(sp, list))<br />
&gt; 	hlist_del(sp-&gt;hlist);<br />
&gt; <br />
&gt; Or, i missed your suggestion?<br />
My assumption is that we can leave obsolete shadow pages on hashtable<br />
till commit_zap time.<br />
<br />
BTW is it such a good idea to call kvm_mmu_commit_zap_page() once on all<br />
obsolete pages? We basically loop over all of them under the lock<br />
without lock break.<br />
<br />
--<br />
			Gleb.<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Gleb Natapov</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:00:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711869,712066#msg-712066</guid>
            <title>Re: mxsfb: DATA_FORMAT_24_BIT flag outputs invalid colours</title>
            <link>http://www.serverphorums.com/read.php?12,711869,712066#msg-712066</link>
            <description><![CDATA[ Hi Juergen,<br />
<br />
On 05/23/2013 03:31 PM, Juergen Beisert wrote:<br />
&gt; Hi Maxime,<br />
&gt;<br />
&gt; <a href="mailto:&#109;&#97;&#120;&#105;&#109;&#101;&#46;&#114;&#105;&#112;&#97;&#114;&#100;&#64;&#102;&#114;&#101;&#101;&#45;&#101;&#108;&#101;&#99;&#116;&#114;&#111;&#110;&#115;&#46;&#99;&#111;&#109;">&#109;&#97;&#120;&#105;&#109;&#101;&#46;&#114;&#105;&#112;&#97;&#114;&#100;&#64;&#102;&#114;&#101;&#101;&#45;&#101;&#108;&#101;&#99;&#116;&#114;&#111;&#110;&#115;&#46;&#99;&#111;&#109;</a> wrote:<br />
&gt;&gt; On Thu, May 23, 2013 at 01:55:28PM +0200, Hector Palacios wrote:<br />
&gt;&gt;&gt; I'm using an i.MX28 based board with lcd connected with 18bits data bus.<br />
&gt;&gt;&gt; My platform uses 32 bits per pixel:<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; 	mxsfb_pdata.default_bpp = 32;<br />
&gt;&gt;&gt; 	mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; With these settings the mxsfb.c driver sets flag DATA_FORMAT_24_BIT<br />
&gt;&gt;&gt; at HW_LCDIF_CTRL register in function mxsfb_set_par():<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; 	case 32:<br />
&gt;&gt;&gt; 		dev_dbg(&amp;host-&gt;pdev-&gt;dev, &quot;Setting up RGB888/666 mode\n&quot;);<br />
&gt;&gt;&gt; 		ctrl |= CTRL_SET_WORD_LENGTH(3);<br />
&gt;&gt;&gt; 		switch (host-&gt;ld_intf_width) {<br />
&gt;&gt;&gt; 		case STMLCDIF_8BIT:<br />
&gt;&gt;&gt; 			dev_dbg(&amp;host-&gt;pdev-&gt;dev,<br />
&gt;&gt;&gt; 					&quot;Unsupported LCD bus width mapping\n&quot;);<br />
&gt;&gt;&gt; 			return -EINVAL;<br />
&gt;&gt;&gt; 		case STMLCDIF_16BIT:<br />
&gt;&gt;&gt; 		case STMLCDIF_18BIT:<br />
&gt;&gt;&gt; 			/* 24 bit to 18 bit mapping */<br />
&gt;&gt;&gt; 			ctrl |= CTRL_DF24; /* ignore the upper 2 bits in<br />
&gt;&gt;&gt; 					    *  each colour component<br />
&gt;&gt;&gt; 					    */<br />
&gt;&gt;&gt; 			break;<br />
&gt;&gt;&gt; 		case STMLCDIF_24BIT:<br />
&gt;&gt;&gt; 			/* real 24 bit */<br />
&gt;&gt;&gt; 			break;<br />
&gt;&gt;&gt; 		}<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; According to the manual, this flag does:<br />
&gt;&gt;&gt; 	0x0: ALL_24_BITS_VALID: Data input to the block is in 24 bpp<br />
&gt;&gt;&gt; format, such that all RGB 888 data is contained in 24 bits.<br />
&gt;&gt;&gt; 	0x1: DROP_UPPER_2_BITS_PER_BYTE — Data input to the block is<br />
&gt;&gt;&gt; actually RGB 18 bpp, but there is 1 colour per byte, hence the upper<br />
&gt;&gt;&gt; 2 bits in each byte do not contain any useful data, and should be<br />
&gt;&gt;&gt; dropped.<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; The setting of this flag is producing bad colours with true colour<br />
&gt;&gt;&gt; images (i.e. the Linux penguin is displayed ok, but QT applications<br />
&gt;&gt;&gt; or images displayed with fbv are not).<br />
&gt;&gt;&gt; I believe the setting of this flag is not correct (after all, if my<br />
&gt;&gt;&gt; bpp is 32, then all 24bit colours are useful and dropping the upper<br />
&gt;&gt;&gt; 2 bits is a bad idea).<br />
&gt;&gt;&gt; If I don't set it, then true colour images are displayed correctly.<br />
&gt;&gt;&gt; The only problem is that the Linux penguin is displayed much darker<br />
&gt;&gt;&gt; than usual (correct colours, but darker). Perhaps the 224 colour<br />
&gt;&gt;&gt; format of this image justifies it?<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; I noticed the cfa10049 platform also uses the same configuration (18<br />
&gt;&gt;&gt; bits data bus and 32bpp) and was wondering if true colour images are<br />
&gt;&gt;&gt; correctly displayed in this platform with this flag set (for example<br />
&gt;&gt;&gt; with fbv application [1]).<br />
&gt;&gt;<br />
&gt;&gt; I had the exact same problem, and suggested the exact same solution a<br />
&gt;&gt; few weeks back.<br />
&gt;&gt;<br />
&gt;&gt; <a href="https://patchwork.kernel.org/patch/2470441/" target="_blank"  rel="nofollow">https://patchwork.kernel.org/patch/2470441/</a><br />
&gt;&gt;<br />
&gt;&gt; The conclusion of that discussion what that the userspace applications<br />
&gt;&gt; were not honouring the bitfield correctly set by the mxsfb driver, and<br />
&gt;&gt; as such, it was not a bug in the driver.<br />
&gt;&gt;<br />
&gt;&gt; While this is correct, I wonder, now that since we had that same problem<br />
&gt;&gt; in a very short amount of time, if we couldn't set this behaviour<br />
&gt;&gt; dependant of some (dt? kernel argument?) property so that one could<br />
&gt;&gt; customise it anyway he want.<br />
&gt;&gt;<br />
&gt;&gt; Maxime<br />
&gt;<br />
&gt; i.MX2[3|8]    LCD1       LCD2       LCD3<br />
&gt;                24bit      18bit      18bit<br />
&gt; --------------------------------------------<br />
&gt; LCD_D0         B0         B0         --<br />
&gt; LCD_D1         B1         B1         --<br />
&gt; LCD_D2         B2         B2         B0<br />
&gt; LCD_D3         B3         B3         B1<br />
&gt; LCD_D4         B4         B4         B2<br />
&gt; LCD_D5         B5         B5         B3<br />
&gt; LCD_D6         B6         G0         B4<br />
&gt; LCD_D7         B7         G1         B5<br />
&gt;<br />
&gt; LCD_D8         G0         G2         --<br />
&gt; LCD_D9         G1         G3         --<br />
&gt; LCD_D10        G2         G4         G0<br />
&gt; LCD_D11        G3         G5         G1<br />
&gt; LCD_D12        G4         R0         G2<br />
&gt; LCD_D13        G5         R1         G3<br />
&gt; LCD_D14        G6         R2         G4<br />
&gt; LCD_D15        G7         R3         G5<br />
&gt;<br />
&gt; LCD_D16        R0         R4         --<br />
&gt; LCD_D17        R1         R5         --<br />
&gt; LCD_D18        R2                    R0<br />
&gt; LCD_D19        R3                    R1<br />
&gt; LCD_D20        R4                    R2<br />
&gt; LCD_D21        R5                    R3<br />
&gt; LCD_D22        R6                    R4<br />
&gt; LCD_D23        R7                    R5<br />
&gt;<br />
&gt; Is your display connected like LCD2 or LCD3? LCD3 must still handled like a 24<br />
&gt; bit display shown in LCD1, while only the LCD2-case is the &quot;24 bit to 18 bit<br />
&gt; mapping&quot; case.<br />
&gt;<br />
&gt; At least my current tests with an i.MX23 and a connection like LCD2 are<br />
&gt; working here with a Qt application. Qt honours the pixel bitfield<br />
&gt; description. And I'm using the &quot;bits-per-pixel = &lt;32&gt;&quot; and &quot;bus-width = &lt;18&gt;&quot;<br />
&gt; entries in the device tree.<br />
<br />
I have a 24bit LCD display but my connection to it is done at 18bits data width.<br />
Represented below as LCD4.<br />
NOTE: In my LCD4 column, notation Rx/Gx/Bx represent the color bit in memory as well <br />
as the display data line.<br />
Since we use 32bpp each channel has 8 bits (R7..R0, etc.).<br />
I understand that you have an 18bit display and that your notation in LCD2 column <br />
represents the display data lines, not the color bit indexes in memory.<br />
<br />
i.MX2[3|8]    LCD1       LCD2       LCD3	LCD4<br />
               24bit      18bit      18bit	24bit connected at 18bit<br />
-------------------------------------------------------<br />
LCD_D0         B0         B0         --		B2<br />
LCD_D1         B1         B1         --		B3<br />
LCD_D2         B2         B2         B0		B4<br />
LCD_D3         B3         B3         B1		B5<br />
LCD_D4         B4         B4         B2		B6<br />
LCD_D5         B5         B5         B3		B7<br />
LCD_D6         B6         G0         B4		G2<br />
LCD_D7         B7         G1         B5		G3<br />
<br />
LCD_D8         G0         G2         --		G4<br />
LCD_D9         G1         G3         --		G5<br />
LCD_D10        G2         G4         G0		G6<br />
LCD_D11        G3         G5         G1		G7<br />
LCD_D12        G4         R0         G2		R2<br />
LCD_D13        G5         R1         G3		R3<br />
LCD_D14        G6         R2         G4		R4<br />
LCD_D15        G7         R3         G5		R5<br />
<br />
LCD_D16        R0         R4         --		R6<br />
LCD_D17        R1         R5         --		R7<br />
LCD_D18        R2                    R0<br />
LCD_D19        R3                    R1<br />
LCD_D20        R4                    R2<br />
LCD_D21        R5                    R3<br />
LCD_D22        R6                    R4<br />
LCD_D23        R7                    R5<br />
<br />
For 32bpp (RGB888) and 18bit data bus I would expect the LCD controller to take the <br />
six *most significant* bits [7..2] from each color byte out to the LCD data bus <br />
(LCD_D17..D0) in the order depicted in my LCD4 column.<br />
<br />
I'm not sure what the DATA_FORMAT_24_BIT flag is doing, but dropping the two most <br />
significant bits of color in memory doesn't seem to be a good idea unless (maybe) <br />
color is in 18bpp. Previous kernels did not even touch this flag.<br />
<br />
Does the following patch make sense?<br />
<br />
diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c<br />
index b1c1a80..bb0a4e1 100644<br />
--- a/drivers/video/mxsfb.c<br />
+++ b/drivers/video/mxsfb.c<br />
@@ -298,9 +298,6 @@ static int mxsfb_check_var(struct fb_var_screeninfo *var,<br />
                         break;<br />
                 case STMLCDIF_16BIT:<br />
                 case STMLCDIF_18BIT:<br />
-                       /* 24 bit to 18 bit mapping */<br />
-                       rgb = def_rgb666;<br />
-                       break;<br />
                 case STMLCDIF_24BIT:<br />
                         /* real 24 bit */<br />
                         rgb = def_rgb888;<br />
@@ -424,11 +421,6 @@ static int mxsfb_set_par(struct fb_info *fb_info)<br />
                         return -EINVAL;<br />
                 case STMLCDIF_16BIT:<br />
                 case STMLCDIF_18BIT:<br />
-                       /* 24 bit to 18 bit mapping */<br />
-                       ctrl |= CTRL_DF24; /* ignore the upper 2 bits in<br />
-                                           *  each colour component<br />
-                                           */<br />
-                       break;<br />
                 case STMLCDIF_24BIT:<br />
                         /* real 24 bit */<br />
                         break;<br />
<br />
The setting of def_rgb666 for a 32bpp color depth does not make sense to me because <br />
the color in memory is really rgb888.<br />
<br />
With this patch, my true color images are displayed ok and so does the penguin logo.<br />
I don't know however how other displays connections at 18bit will do.<br />
<br />
Regards,<br />
-- <br />
Héctor Palacios<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Hector Palacios</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:00:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,710785,712065#msg-712065</guid>
            <title>Re: microcode loading got really slow.</title>
            <link>http://www.serverphorums.com/read.php?12,710785,712065#msg-712065</link>
            <description><![CDATA[ On Thu, May 23, 2013 at 11:27:08PM +0800, Ming Lei wrote:<br />
 &gt; &gt; Yes, in your case, everything is fine in the kernel itself.  And no<br />
 &gt; &gt; microcode update is needed for new CPU, thus no firmware.<br />
 &gt; <br />
 &gt; Can the driver decide if the CPU need microcode? Or there will<br />
 &gt; be the microcode for the CPU in future?<br />
<br />
The kernel can't know. The microcode updates are asynchonously released<br />
from the kernel. I might be running a months old kernel, and get a new<br />
microcode tomorrow.  The kernel handles this by looking for a file<br />
with a name matching the cpu family/model/stepping. (See how they are<br />
formed in /lib/firmware/intel-ucode/*)<br />
<br />
	DAve<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Dave Jones</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:00:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,710618,712064#msg-712064</guid>
            <title>Re: WARNING: at kernel/rcutree.c:388 rcu_eqs_enter</title>
            <link>http://www.serverphorums.com/read.php?12,710618,712064#msg-712064</link>
            <description><![CDATA[ On Wed, May 22, 2013 at 02:51:29AM -0700, Paul E. McKenney wrote:<br />
<br />
 &gt; trace: Allow idle-safe tracepoints to be called from irq<br />
 &gt; <br />
 &gt; __DECLARE_TRACE_RCU() currently creates an _rcuidle() tracepoint which<br />
 &gt; may safely be invoked from what RCU considers to be an idle CPU.<br />
 &gt; However, these _rcuidle() tracepoints may -not- be invoked from the<br />
 &gt; handler of an irq taken from idle, because rcu_idle_enter() zeroes<br />
 &gt; RCU's nesting-level counter, so that the rcu_irq_exit() returning to<br />
 &gt; idle will trigger a WARN_ON_ONCE().<br />
 &gt; <br />
 &gt; This commit therefore substitutes rcu_irq_enter() for rcu_idle_exit()<br />
 &gt; and rcu_irq_exit() for rcu_idle_enter() in order to make the _rcuidle()<br />
 &gt; tracepoints usable from irq handlers as well as from process context.<br />
 &gt; <br />
 &gt; Reported-by: Dave Jones &lt;davej@redhat.com&gt;<br />
 &gt; Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;<br />
 &gt; Cc: Steven Rostedt &lt;rostedt@goodmis.org&gt;<br />
 &gt; <br />
 &gt; diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h<br />
 &gt; index 2f322c3..f8e084d 100644<br />
 &gt; --- a/include/linux/tracepoint.h<br />
 &gt; +++ b/include/linux/tracepoint.h<br />
 &gt; @@ -145,8 +145,8 @@ static inline void tracepoint_synchronize_unregister(void)<br />
 &gt;  				TP_PROTO(data_proto),			\<br />
 &gt;  				TP_ARGS(data_args),			\<br />
 &gt;  				TP_CONDITION(cond),			\<br />
 &gt; -				rcu_idle_exit(),			\<br />
 &gt; -				rcu_idle_enter());			\<br />
 &gt; +				rcu_irq_enter(),			\<br />
 &gt; +				rcu_irq_exit());			\<br />
 &gt;  	}<br />
 &gt;  #else<br />
 &gt;  #define __DECLARE_TRACE_RCU(name, proto, args, cond, data_proto, data_args)<br />
<br />
This stops the &quot;WARNING: at kernel/context_tracking.c:55 user_enter+0xb5/0xd0()&quot;<br />
but I still see..<br />
<br />
<br />
[  363.399348] ===============================<br />
[  363.400617] [ INFO: suspicious RCU usage. ]<br />
[  363.401880] 3.10.0-rc2+ #31 Not tainted<br />
[  363.403210] -------------------------------<br />
[  363.403787] include/linux/rcupdate.h:771 rcu_read_lock() used illegally while idle!<br />
[  363.403831] <br />
other info that might help us debug this:<br />
<br />
[  363.403880] <br />
RCU used illegally from idle CPU!<br />
rcu_scheduler_active = 1, debug_locks = 0<br />
[  363.403942] RCU used illegally from extended quiescent state!<br />
[  363.403976] 2 locks held by trinity-child0/27319:<br />
[  363.404006]  #0:  (&amp;rq-&gt;lock){-.-.-.}, at: [&lt;ffffffff816e91bf&gt;] __schedule+0xef/0x9c0<br />
[  363.404076]  #1:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff810a5605&gt;] cpuacct_charge+0x5/0x1f0<br />
[  363.404146] <br />
stack backtrace:<br />
[  363.404176] CPU: 1 PID: 27319 Comm: trinity-child0 Not tainted 3.10.0-rc2+ #31 <br />
[  363.405536]  0000000000000000 ffff880208ddfcf8 ffffffff816e2a5b ffff880208ddfd28<br />
[  363.406835]  ffffffff810b5917 ffff880243362568 00000000003c3c18 ffff880243362520<br />
[  363.408140]  0000000000000001 ffff880208ddfd60 ffffffff810a5785 ffffffff810a5605<br />
[  363.409451] Call Trace:<br />
[  363.410726]  [&lt;ffffffff816e2a5b&gt;] dump_stack+0x19/0x1b<br />
[  363.412005]  [&lt;ffffffff810b5917&gt;] lockdep_rcu_suspicious+0xe7/0x120<br />
[  363.413281]  [&lt;ffffffff810a5785&gt;] cpuacct_charge+0x185/0x1f0<br />
[  363.414543]  [&lt;ffffffff810a5605&gt;] ? cpuacct_charge+0x5/0x1f0<br />
[  363.415793]  [&lt;ffffffff8109607c&gt;] update_curr+0xec/0x250<br />
[  363.417035]  [&lt;ffffffff810975a8&gt;] put_prev_task_fair+0x228/0x480<br />
[  363.418273]  [&lt;ffffffff816e9236&gt;] __schedule+0x166/0x9c0<br />
[  363.419497]  [&lt;ffffffff816e9ee4&gt;] preempt_schedule+0x44/0x60<br />
[  363.420717]  [&lt;ffffffff816e9fb0&gt;] ? __cond_resched_softirq+0x60/0x60<br />
[  363.421940]  [&lt;ffffffff816ebfa4&gt;] ? retint_careful+0x12/0x2e<br />
[  363.423155]  [&lt;ffffffff8110e2b3&gt;] ftrace_ops_control_func+0x1d3/0x210<br />
[  363.424373]  [&lt;ffffffff816f3a40&gt;] ftrace_call+0x5/0x2f<br />
[  363.425577]  [&lt;ffffffff816ebf9d&gt;] ? retint_careful+0xb/0x2e<br />
[  363.426784]  [&lt;ffffffff816e9fb5&gt;] ? schedule_user+0x5/0x70<br />
[  363.427988]  [&lt;ffffffff816e9fb5&gt;] ? schedule_user+0x5/0x70<br />
[  363.429184]  [&lt;ffffffff816ebfa4&gt;] ? retint_careful+0x12/0x2e<br />
<br />
I'll try Steve's patch on top next.<br />
<br />
	Dave<br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Dave Jones</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:00:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711925,712063#msg-712063</guid>
            <title>Re: [PATCH 2/2] regmap: Make regmap-mmio usable from different contexts</title>
            <link>http://www.serverphorums.com/read.php?12,711925,712063#msg-712063</link>
            <description><![CDATA[ On 05/23/2013 05:42 PM, Stephen Warren wrote:<br />
&gt; On 05/23/2013 07:06 AM, Lars-Peter Clausen wrote:<br />
&gt;&gt; regmap-mmio uses a spinlock with spin_lock() and spin_unlock() for locking.<br />
&gt;&gt; Which means in order to avoid race conditions the lock always needs to be taken<br />
&gt;&gt; from the same context.<br />
&gt; <br />
&gt; I'm not really sure what this means. I assume contexts are<br />
&gt; atomic-vs-nonatomic?<br />
<br />
Yes.<br />
<br />
&gt; If so, spinlocks should work fine for this, right?<br />
<br />
No, you have to take special care if you want to take the same spinlock from<br />
different contexts. And you have to take even more care if the code that<br />
takes the lock can run in different contexts.<br />
<br />
&gt; <br />
&gt; I guess the core of the issue is that you want to replace spin_lock()<br />
&gt; with spin_lock_irqsave(). I'd like to see that explicitly described in<br />
&gt; the commit description, if that is the core aspect of this change.<br />
<br />
Hm, it does.<br />
<br />
	regmap-mmio uses a spinlock with spin_lock() and spin_unlock() for<br />
	locking.<br />
	...<br />
	This patch updates the adds a flags parameter to the regmap lock<br />
	and unlock callbacks and uses spin_lock_irqsave() and<br />
	spin_unlock_restore() ...<br />
<br />
<br />
&gt; <br />
&gt; Re: the other comments about the API change: I think this can be done<br />
&gt; non-invasively:<br />
&gt; <br />
&gt; static void regmap_lock_spinlock(void *__map)<br />
&gt; {<br />
&gt; 	struct regmap *map = __map;<br />
&gt; 	unsigned long local_flags;<br />
&gt; <br />
&gt; 	spin_lock_irqsave(&amp;map-&gt;spinlock, local_flags);<br />
&gt; 	/*<br />
&gt; 	 * Here, we have the lock locked, so we own the flags,<br />
&gt; 	 * and can write to them.<br />
&gt; 	 */<br />
&gt; 	map-&gt;spinlock_flags = local_flags;<br />
&gt; }<br />
&gt; <br />
&gt; static void regmap_unlock_spinlock(void *__map, unsigned long *flags)<br />
&gt; {<br />
&gt; 	struct regmap *map = __map;<br />
&gt; 	spin_unlock_irqrestore(&amp;map-&gt;spinlock, map-&gt;spinlock_flags);<br />
&gt; }<br />
&gt; <br />
&gt; ... and obviously add a spinlock_flags field to struct regmap (perhaps<br />
&gt; start unioning the mutex and spinlock data fields there if you want to<br />
&gt; save space).<br />
<br />
Hm, that might work.<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Lars-Peter Clausen</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:00:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,712062,712062#msg-712062</guid>
            <title>[PATCH] x86/UV: GRU distributed mode mappings</title>
            <link>http://www.serverphorums.com/read.php?12,712062,712062#msg-712062</link>
            <description><![CDATA[ Setup mappings for GRU distributed mode and include them as untracked<br />
pat ranges.<br />
<br />
Signed-off-by: Dimitri Sivanich &lt;sivanich@sgi.com&gt;<br />
---<br />
 arch/x86/kernel/apic/x2apic_uv_x.c |   63 +++++++++++++++++++++++++++++----<br />
 1 file changed, 57 insertions(+), 6 deletions(-)<br />
<br />
Index: linux/arch/x86/kernel/apic/x2apic_uv_x.c<br />
===================================================================<br />
--- linux.orig/arch/x86/kernel/apic/x2apic_uv_x.c<br />
+++ linux/arch/x86/kernel/apic/x2apic_uv_x.c<br />
@@ -51,6 +51,8 @@ DEFINE_PER_CPU(int, x2apic_extra_bits);<br />
 <br />
 static enum uv_system_type uv_system_type;<br />
 static u64 gru_start_paddr, gru_end_paddr;<br />
+static u64 gru_dist_base, gru_first_node_paddr = -1LL, gru_last_node_paddr;<br />
+static u64 gru_dist_lmask, gru_dist_umask;<br />
 static union uvh_apicid uvh_apicid;<br />
 int uv_min_hub_revision_id;<br />
 EXPORT_SYMBOL_GPL(uv_min_hub_revision_id);<br />
@@ -72,7 +74,19 @@ static unsigned long __init uv_early_rea<br />
 <br />
 static inline bool is_GRU_range(u64 start, u64 end)<br />
 {<br />
-	return start &gt;= gru_start_paddr &amp;&amp; end &lt;= gru_end_paddr;<br />
+	if (gru_dist_base) {<br />
+		u64 su = start &amp; gru_dist_umask; /* upper (incl pnode) bits */<br />
+		u64 sl = start &amp; gru_dist_lmask; /* base offset bits */<br />
+		u64 eu = end &amp; gru_dist_umask;<br />
+		u64 el = end &amp; gru_dist_lmask;<br />
+<br />
+		/* Must reside completely within a single GRU range */<br />
+		return (sl == gru_dist_base &amp;&amp; el == gru_dist_base &amp;&amp;<br />
+			su &gt;= gru_first_node_paddr &amp;&amp;<br />
+			su &lt;= gru_last_node_paddr &amp;&amp;<br />
+			eu == su);<br />
+	} else<br />
+		return start &gt;= gru_start_paddr &amp;&amp; end &lt;= gru_end_paddr;<br />
 }<br />
 <br />
 static bool uv_is_untracked_pat_range(u64 start, u64 end)<br />
@@ -470,19 +484,56 @@ static __init void map_high(char *id, un<br />
 		init_extra_mapping_wb(paddr, bytes);<br />
 }<br />
 <br />
+static __init void map_gru_distributed(unsigned long c)<br />
+{<br />
+	union uvh_rh_gam_gru_overlay_config_mmr_u gru;<br />
+	u64 paddr;<br />
+	unsigned long bytes;<br />
+	int nid;<br />
+<br />
+	gru.v = c;<br />
+	/* only base bits 42:28 relevant in dist mode */<br />
+	gru_dist_base = gru.v &amp; 0x000007fff0000000UL;<br />
+	if (!gru_dist_base) {<br />
+		pr_info(&quot;UV: Map GRU_DIST base address NULL\n&quot;);<br />
+		return;<br />
+	}<br />
+	bytes = 1UL &lt;&lt; UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_BASE_SHFT;<br />
+	gru_dist_lmask = ((1UL &lt;&lt; uv_hub_info-&gt;m_val) - 1) &amp; ~(bytes - 1);<br />
+	gru_dist_umask = ~((1UL &lt;&lt; uv_hub_info-&gt;m_val) - 1);<br />
+	gru_dist_base &amp;= gru_dist_lmask; /* Clear bits above M */<br />
+	for_each_online_node(nid) {<br />
+		paddr = ((u64)uv_node_to_pnode(nid) &lt;&lt; uv_hub_info-&gt;m_val) |<br />
+				gru_dist_base;<br />
+		init_extra_mapping_wb(paddr, bytes);<br />
+		gru_first_node_paddr = min(paddr, gru_first_node_paddr);<br />
+		gru_last_node_paddr = max(paddr, gru_last_node_paddr);<br />
+	}<br />
+	/* Save upper (63:M) bits of address only for is_GRU_range */<br />
+	gru_first_node_paddr &amp;= gru_dist_umask;<br />
+	gru_last_node_paddr &amp;= gru_dist_umask;<br />
+	pr_info(&quot;UV: Map GRU_DIST base 0x%016llx  0x%016llx - 0x%016llx\n&quot;,<br />
+		gru_dist_base, gru_first_node_paddr, gru_last_node_paddr);<br />
+}<br />
+<br />
 static __init void map_gru_high(int max_pnode)<br />
 {<br />
 	union uvh_rh_gam_gru_overlay_config_mmr_u gru;<br />
 	int shift = UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_BASE_SHFT;<br />
 <br />
 	gru.v = uv_read_local_mmr(UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR);<br />
-	if (gru.s.enable) {<br />
-		map_high(&quot;GRU&quot;, gru.s.base, shift, shift, max_pnode, map_wb);<br />
-		gru_start_paddr = ((u64)gru.s.base &lt;&lt; shift);<br />
-		gru_end_paddr = gru_start_paddr + (1UL &lt;&lt; shift) * (max_pnode + 1);<br />
-	} else {<br />
+	if (!gru.s.enable) {<br />
 		pr_info(&quot;UV: GRU disabled\n&quot;);<br />
+		return;<br />
+	}<br />
+<br />
+	if (is_uv3_hub() &amp;&amp; gru.s3.mode) {<br />
+		map_gru_distributed(gru.v);<br />
+		return;<br />
 	}<br />
+	map_high(&quot;GRU&quot;, gru.s.base, shift, shift, max_pnode, map_wb);<br />
+	gru_start_paddr = ((u64)gru.s.base &lt;&lt; shift);<br />
+	gru_end_paddr = gru_start_paddr + (1UL &lt;&lt; shift) * (max_pnode + 1);<br />
 }<br />
 <br />
 static __init void map_mmr_high(int max_pnode)<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Dimitri Sivanich</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 18:00:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,705274,712060#msg-712060</guid>
            <title>Re: [PATCHv4 07/39] thp, mm: basic defines for transparent huge page cache</title>
            <link>http://www.serverphorums.com/read.php?12,705274,712060#msg-712060</link>
            <description><![CDATA[ On 05/23/2013 03:36 AM, Hillf Danton wrote:<br />
&gt; On Sun, May 12, 2013 at 9:23 AM, Kirill A. Shutemov<br />
&gt; &lt;kirill.shutemov@linux.intel.com&gt; wrote:<br />
&gt;&gt; &gt; From: &quot;Kirill A. Shutemov&quot; &lt;kirill.shutemov@linux.intel.com&gt;<br />
&gt; Better if one or two sentences are prepared to show that the following<br />
&gt; defines are necessary.<br />
....<br />
&gt;&gt; &gt;<br />
&gt;&gt; &gt; +#define HPAGE_CACHE_ORDER      (HPAGE_SHIFT - PAGE_CACHE_SHIFT)<br />
&gt;&gt; &gt; +#define HPAGE_CACHE_NR         (1L &lt;&lt; HPAGE_CACHE_ORDER)<br />
&gt;&gt; &gt; +#define HPAGE_CACHE_INDEX_MASK (HPAGE_CACHE_NR - 1)<br />
<br />
Yeah, or just stick them in the patch that uses them first.  These<br />
aren't exactly rocket science.<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Dave Hansen</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 17:50:02 +0200</pubDate>
        </item>
        <item>
            <guid>http://www.serverphorums.com/read.php?12,711416,712059#msg-712059</guid>
            <title>Re: OOPS in perf_mmap_close()</title>
            <link>http://www.serverphorums.com/read.php?12,711416,712059#msg-712059</link>
            <description><![CDATA[ On Thu, 23 May 2013, Peter Zijlstra wrote:<br />
<br />
&gt; On Thu, May 23, 2013 at 10:10:36AM -0400, Vince Weaver wrote:<br />
&gt; &gt; <br />
&gt; &gt; I can confirm your patch avoids the oops on my machine.<br />
&gt; &gt; <br />
&gt; &gt; It does lead to interesting behavior if I run the sample program<br />
&gt; &gt; multiple times (with added printfs):<br />
&gt; &gt; <br />
&gt; &gt; vince@core2:~$ ./perf_mmap_close_bug <br />
&gt; &gt; mmap1=0x7f06a6e90000<br />
&gt; &gt; mmap2=0x7f06a6e7f000<br />
&gt; &gt; vince@core2:~$ ./perf_mmap_close_bug <br />
&gt; &gt; mmap1=0x7f878a138000<br />
&gt; &gt; mmap2=0x7f878a127000<br />
&gt; &gt; vince@core2:~$ ./perf_mmap_close_bug <br />
&gt; &gt; mmap1=0xffffffffffffffff<br />
&gt; &gt; Error opening fd2 Invalid argument<br />
&gt; &gt; <br />
&gt; &gt; and then it never successfully completes again.  Is this unexpected <br />
&gt; &gt; behavior?  <br />
&gt; <br />
&gt; Sounds weird to me, I'll see if I can reproduce/understand.<br />
&gt; <br />
<br />
I don't know if it's related, but even with 3.10-rc2 with your patch <br />
applied and running the fuzzer a bit the system eventually becomes <br />
unstable and oopsing like mad, but in non-perf related ways.  hmmm.<br />
<br />
I've set up a serial console and maybe I can get some better messages.<br />
<br />
Vince<br />
<br />
[ 1188.896010] kernel BUG at mm/slab.c:3005!                                    <br />
[ 1188.896010] invalid opcode: 0000 [#1] SMP                                    <br />
[ 1188.896010] Modules linked in: nfsd auth_rpcgss oid_registry nfs_acl nfs locn<br />
[ 1188.896010] CPU: 1 PID: 3406 Comm: sudo Not tainted 3.10.0-rc2 #3            <br />
[ 1188.896010] Hardware name: AOpen   DE7000/nMCP7ALPx-DE R1.06 Oct.19.2012, BI2<br />
[ 1188.896010] task: ffff880116726770 ti: ffff880117564000 task.ti: ffff88011750<br />
[ 1188.896010] RIP: 0010:[&lt;ffffffff810e9c16&gt;]  [&lt;ffffffff810e9c16&gt;] ____cache_a0<br />
[ 1188.896010] RSP: 0018:ffff880117565e88  EFLAGS: 00010096                     <br />
[ 1188.896010] RAX: ffff880119dbf748 RBX: ffff88011974c200 RCX: 0000000000000007<br />
[ 1188.896010] RDX: 000000000000001e RSI: 0000000000000000 RDI: 0000000000000000<br />
[ 1188.896010] RBP: ffff880119dbf740 R08: ffff880117834c00 R09: ffff880117832000<br />
[ 1188.896010] R10: 00007fffb1360440 R11: 0000000000000246 R12: ffff880119c92a40<br />
[ 1188.896010] R13: 0000000000000000 R14: ffff880117834c00 R15: 0000000000000010<br />
[ 1188.896010] FS:  00007f1339467800(0000) GS:ffff88011fc80000(0000) knlGS:00000<br />
[ 1188.896010] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033                <br />
[ 1188.896010] CR2: 00007f133898a040 CR3: 00000001176ab000 CR4: 00000000000407e0<br />
[ 1188.896010] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br />
[ 1188.896010] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400<br />
[ 1188.896010] Stack:                                                           <br />
[ 1188.896010]  0000000000000001 000080d000000000 ffff880117941c80 ffff880119c90<br />
[ 1188.896010]  00000000000080d0 0000000000000246 00000000000080d0 00007fffb1360<br />
[ 1188.896010]  ffffffff810eace7 ffff880117941c80 00000000000003e8 0000000000000<br />
[ 1188.896010] Call Trace:                                                      <br />
[ 1188.896010]  [&lt;ffffffff810eace7&gt;] ? kmem_cache_alloc+0x47/0xf8               <br />
[ 1188.896010]  [&lt;ffffffff8103abb6&gt;] ? alloc_uid+0x5c/0xee                      <br />
[ 1188.896010]  [&lt;ffffffff8103efda&gt;] ? set_user+0xd/0x70                        <br />
[ 1188.896010]  [&lt;ffffffff81040529&gt;] ? SyS_setresuid+0xb6/0x113                 <br />
[ 1188.896010]  [&lt;ffffffff81369b92&gt;] ? system_call_fastpath+0x16/0x1b           <br />
[ 1188.896010] Code: 20 48 8b 5d 28 48 8d 55 28 c7 45 60 01 00 00 00 48 39 d3 7 <br />
[ 1188.896010] RIP  [&lt;ffffffff810e9c16&gt;] ____cache_alloc+0x11c/0x290            <br />
[ 1188.896010]  RSP &lt;ffff880117565e88&gt;                                          <br />
[ 1188.896010] ---[ end trace a14ae9e1a2282660 ]---                             <br />
[ 1192.279580] ------------[ cut here ]------------                             <br />
[ 1192.279580] WARNING: at kernel/watchdog.c:245 watchdog_overflow_callback+0x7)<br />
[ 1192.279580] Watchdog detected hard LOCKUP on cpu 1                           <br />
[ 1192.279580] Modules linked in: nfsd auth_rpcgss oid_registry nfs_acl nfs locn<br />
[ 1192.279580] CPU: 1 PID: 24 Comm: kworker/1:1 Tainted: G      D      3.10.0-r3<br />
[ 1192.279580] Hardware name: AOpen   DE7000/nMCP7ALPx-DE R1.06 Oct.19.2012, BI2<br />
[ 1192.279580] Workqueue: events cache_reap                                     <br />
[ 1192.279580]  0000000000000000 ffffffff8102e205 ffff88011fc87d00 ffff88011a220<br />
[ 1192.279580]  ffff88011fc87d50 ffff88011fc87de0 ffff88011fc87ef8 ffffffff81020<br />
[ 1192.279580]  ffffffff814ecec5 0000000000000020 ffff88011fc87d60 ffff88011fc80<br />
[ 1192.279580] Call Trace:                                                      <br />
[ 1192.279580]  &lt;NMI&gt;  [&lt;ffffffff8102e205&gt;] ? warn_slowpath_common+0x5b/0x70    <br />
[ 1192.279580]  [&lt;ffffffff8102e2b0&gt;] ? warn_slowpath_fmt+0x47/0x49              <br />
[ 1192.279580]  [&lt;ffffffff8108a920&gt;] ? watchdog_overflow_callback+0x7e/0x9d     <br />
[ 1192.279580]  [&lt;ffffffff810ad1f8&gt;] ? __perf_event_overflow+0x12c/0x1ae        <br />
[ 1192.279580]  [&lt;ffffffff810ab29b&gt;] ? perf_event_update_userpage+0x12/0xbd     <br />
[ 1192.279580]  [&lt;ffffffff81011f41&gt;] ? intel_pmu_handle_irq+0x242/0x2aa         <br />
[ 1192.279580]  [&lt;ffffffff81365a21&gt;] ? nmi_handle.isra.0+0x3c/0x5a              <br />
[ 1192.279580]  [&lt;ffffffff81365adc&gt;] ? do_nmi+0x9d/0x2ab                        <br />
[ 1192.279580]  [&lt;ffffffff813652b7&gt;] ? end_repeat_nmi+0x1e/0x2e                 <br />
[ 1192.279580]  [&lt;ffffffff810704c6&gt;] ? do_raw_spin_lock+0x15/0x1b               <br />
[ 1192.279580]  [&lt;ffffffff810704c6&gt;] ? do_raw_spin_lock+0x15/0x1b               <br />
[ 1192.279580]  [&lt;ffffffff810704c6&gt;] ? do_raw_spin_lock+0x15/0x1b               <br />
[ 1192.279580]  &lt;&lt;EOE&gt;&gt;  [&lt;ffffffff810e944e&gt;] ? drain_array+0x46/0xc1           <br />
[ 1192.279580]  [&lt;ffffffff810e967d&gt;] ? cache_reap+0xba/0x1b5                    <br />
[ 1192.279580]  [&lt;ffffffff81044e68&gt;] ? process_one_work+0x18b/0x287             <br />
[ 1192.279580]  [&lt;ffffffff8104530d&gt;] ? worker_thread+0x121/0x1e7                <br />
[ 1192.279580]  [&lt;ffffffff810451ec&gt;] ? rescuer_thread+0x265/0x265               <br />
[ 1192.279580]  [&lt;ffffffff810496be&gt;] ? kthread+0x7d/0x85                        <br />
[ 1192.279580]  [&lt;ffffffff81049641&gt;] ? __kthread_parkme+0x59/0x59               <br />
[ 1192.279580]  [&lt;ffffffff81369aec&gt;] ? ret_from_fork+0x7c/0xb0                  <br />
[ 1192.279580]  [&lt;ffffffff81049641&gt;] ? __kthread_parkme+0x59/0x59               <br />
[ 1192.279580] ---[ end trace a14ae9e1a2282661 ]---                             <br />
<br />
--<br />
To unsubscribe from this list: send the line &quot;unsubscribe linux-kernel&quot; in<br />
the body of a message to <a href="mailto:&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;">&#109;&#97;&#106;&#111;&#114;&#100;&#111;&#109;&#111;&#64;&#118;&#103;&#101;&#114;&#46;&#107;&#101;&#114;&#110;&#101;&#108;&#46;&#111;&#114;&#103;</a><br />
More majordomo info at  <a href="http://vger.kernel.org/majordomo-info.html" target="_blank"  rel="nofollow">http://vger.kernel.org/majordomo-info.html</a><br />
Please read the FAQ at  <a href="http://www.tux.org/lkml/" target="_blank"  rel="nofollow">http://www.tux.org/lkml/</a>]]></description>
            <dc:creator>Vince Weaver</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Thu, 23 May 2013 17:50:01 +0200</pubDate>
        </item>
    </channel>
</rss>
