<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>CHOON.NET Forums</title>
        <description>CHOON.NET Forums</description>
        <link>http://choon.net/forum/index.php</link>
        <lastBuildDate>Fri, 18 May 2012 22:56:48 +0800</lastBuildDate>
        <generator>Phorum 5.2.18</generator>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084811,1085070#msg-1085070</guid>
            <title>Re: [Xen-devel] [PATCH] libxl: Introduce LIBXL_DOMAIN_TYPE_INVALID to make gcc happy</title>
            <link>http://choon.net/forum/read.php?22,1084811,1085070#msg-1085070</link>
            <description><![CDATA[ On Fri, 2012-05-18 at 15:39 +0100, Ian Campbell wrote:<br />
&gt; &gt; Which actually seems to be right:<br />
&gt; &gt; <br />
&gt; &gt; $ grep LIBXL_DOMAIN_TYPE_INVALID tools/* -R<br />
&gt; &gt; tools/libxl/libxl_dm.c:    case LIBXL_DOMAIN_TYPE_INVALID:<br />
&gt; &gt; tools/libxl/libxl_dm.c:    case LIBXL_DOMAIN_TYPE_INVALID:<br />
&gt; &gt; tools/libxl/libxl_dom.c:        return LIBXL_DOMAIN_TYPE_INVALID;<br />
&gt; &gt; tools/libxl/libxl_dom.c:        return LIBXL_DOMAIN_TYPE_INVALID;<br />
&gt; &gt; tools/libxl/libxl.c:        case LIBXL_DOMAIN_TYPE_INVALID:<br />
&gt; &gt; <br />
&gt; &gt; Am I missing something?<br />
&gt; <br />
&gt; This should be defined in tools/libxl/libxl_types.idl but the patch<br />
&gt; doesn't seem to add it.<br />
&gt; <br />
Yep, I'm adding it myself with the attached patch, but I'm now getting<br />
this:<br />
<br />
_libxl_types.c: In function ‘libxl_domain_build_info_dispose’:<br />
_libxl_types.c:91:5: error: enumeration value ‘LIBXL_DOMAIN_TYPE_INVALID’ not handled in switch [-Werror=switch]<br />
_libxl_types.c: In function ‘libxl_domain_build_info_init_type’:<br />
_libxl_types.c:284:5: error: enumeration value ‘LIBXL_DOMAIN_TYPE_INVALID’ not handled in switch [-Werror=switch]<br />
testidl.c: In function ‘libxl_domain_build_info_rand_init’:<br />
testidl.c:366:5: error: enumeration value ‘LIBXL_DOMAIN_TYPE_INVALID’ not handled in switch [-Werror=switch]<br />
_libxl_types.c: In function ‘libxl_domain_build_info_gen_json’:<br />
_libxl_types.c:1713:5: error: enumeration value ‘LIBXL_DOMAIN_TYPE_INVALID’ not handled in switch [-Werror=switch]<br />
cc1: all warnings being treated as errors<br />
<br />
:-O<br />
<br />
Dario<br />
<br />
-- <br />
&lt;&lt;This happens because I choose it to happen!&gt;&gt; (Raistlin Majere)<br />
-----------------------------------------------------------------<br />
Dario Faggioli, Ph.D, [<a href="http://retis.sssup.it/people/faggioli"  rel="nofollow">retis.sssup.it</a>]<br />
Senior Software Engineer, Citrix Systems R&amp;D Ltd., Cambridge (UK)<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Dario Faggioli</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:53:13 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1083716,1085069#msg-1085069</guid>
            <title>Re: [RFC v2 PATCH 2/4] block: add queue runtime pm callbacks</title>
            <link>http://choon.net/forum/read.php?21,1083716,1085069#msg-1085069</link>
            <description><![CDATA[ On Thu, 2012-05-17 at 14:29 -0400, Alan Stern wrote:<br />
<br />
[ ... ]<br />
<br />
&gt; <br />
&gt; I may have left some parts out from this brief description.  Hopefully <br />
&gt; you'll be able to figure out the general idea and get it to work.<br />
<br />
Thanks for the detail idea.<br />
<br />
Let me look at it closely first.<br />
<br />
&gt; <br />
&gt; Alan Stern<br />
&gt; <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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Lin Ming</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:53:12 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1085068,1085068#msg-1085068</guid>
            <title>[PATCH] drivers/staging/line6/config.h: Delete unused header</title>
            <link>http://choon.net/forum/read.php?21,1085068,1085068#msg-1085068</link>
            <description><![CDATA[ Delete unused header file drivers/staging/line6/config.h<br />
<br />
Signed-off-by: Johannes Thumshirn &lt;morbidrsa@googlemail.com&gt;<br />
---<br />
 drivers/staging/line6/config.h |   43 ----------------------------------------<br />
 1 files changed, 0 insertions(+), 43 deletions(-)<br />
 delete mode 100644 drivers/staging/line6/config.h<br />
<br />
diff --git a/drivers/staging/line6/config.h b/drivers/staging/line6/config.h<br />
deleted file mode 100644<br />
index 2493491..0000000<br />
--- a/drivers/staging/line6/config.h<br />
+++ /dev/null<br />
@@ -1,43 +0,0 @@<br />
-/*<br />
- * Line6 Linux USB driver - 0.8.0<br />
- *<br />
- * Copyright (C) 2004-2009 Markus Grabner (grabner@icg.tugraz.at)<br />
- *<br />
- *	This program is free software; you can redistribute it and/or<br />
- *	modify it under the terms of the GNU General Public License as<br />
- *	published by the Free Software Foundation, version 2.<br />
- *<br />
- */<br />
-<br />
-#ifndef CONFIG_H<br />
-#define CONFIG_H<br />
-<br />
-<br />
-#ifdef CONFIG_USB_DEBUG<br />
-#define DEBUG 1<br />
-#endif<br />
-<br />
-<br />
-/*<br />
- * Development tools.<br />
- */<br />
-#define DO_DEBUG_MESSAGES    0<br />
-#define DO_DUMP_URB_SEND     DO_DEBUG_MESSAGES<br />
-#define DO_DUMP_URB_RECEIVE  DO_DEBUG_MESSAGES<br />
-#define DO_DUMP_PCM_SEND     0<br />
-#define DO_DUMP_PCM_RECEIVE  0<br />
-#define DO_DUMP_MIDI_SEND    DO_DEBUG_MESSAGES<br />
-#define DO_DUMP_MIDI_RECEIVE DO_DEBUG_MESSAGES<br />
-#define DO_DUMP_ANY          (DO_DUMP_URB_SEND || DO_DUMP_URB_RECEIVE || \<br />
-			      DO_DUMP_PCM_SEND || DO_DUMP_PCM_RECEIVE || \<br />
-			      DO_DUMP_MIDI_SEND || DO_DUMP_MIDI_RECEIVE)<br />
-#define CREATE_RAW_FILE      0<br />
-<br />
-#if DO_DEBUG_MESSAGES<br />
-#define DEBUG_MESSAGES(x) (x)<br />
-#else<br />
-#define DEBUG_MESSAGES(x)<br />
-#endif<br />
-<br />
-<br />
-#endif<br />
-- <br />
1.7.7.6<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Johannes Thumshirn</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:53:06 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085058#msg-1085058</guid>
            <title>Re: [Xen-devel] [PATCH v6 05/11] libxl: introduce libxl__device_disk_add</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085058#msg-1085058</link>
            <description><![CDATA[ Ian Campbell writes (&quot;Re: [PATCH v6 05/11] libxl: introduce libxl__device_disk_add&quot;):<br />
&gt; On Fri, 2012-05-18 at 15:36 +0100, Ian Jackson wrote:<br />
&gt; &gt; There is no need IMO to move the<br />
&gt; &gt; internal function to libxl_internal.c. <br />
&gt; <br />
&gt; I've always thought the existence libxl_internal.c was just begging for<br />
&gt; people to group functions along the wrong criteria anyway...<br />
<br />
Yes.<br />
<br />
&gt; The whole concept of what lives where inside tools/libxl/libxl*.c is all<br />
&gt; pretty ad-hoc anyway.<br />
<br />
Quite.<br />
<br />
Ian.<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:50:09 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1071644,1085057#msg-1085057</guid>
            <title>Re: [RESEND,PATCH] DCA, x86: fix invalid memory access in DCA core</title>
            <link>http://choon.net/forum/read.php?21,1071644,1085057#msg-1085057</link>
            <description><![CDATA[ Hi Maciej,<br />
	Thanks for your help!<br />
	I think your patch is correct but I could only test it on next Monday.<br />
My previous patch may cause NULL pointer dereference when calling <br />
dca_sysfs_remove_provider(dca) the second time for the same DCA device. <br />
I'm just curious why the NULL pointer dereference issue hasn't been triggered<br />
during tests, will ping my team member about that.<br />
	Thanks!<br />
	Gerry<br />
<br />
On 05/18/2012 10:04 PM, Sosnowski, Maciej wrote:<br />
&gt; On Mon, May 07, 2012 5:58 PM, Jiang Liu &lt;liuj97@gmail.com&gt; wrote:<br />
&gt;&gt;<br />
&gt;&gt; From: Jiang Liu &lt;jiang.liu@huawei.com&gt;<br />
&gt;&gt;<br />
&gt;&gt; When unregister_dca_providers() is called, it will remove all registered<br />
&gt;&gt; providers from the dca_providrers list by calling list_del(&amp;dca-&gt;node).<br />
&gt;&gt; list_del(node) poisons node-&gt;next and node-&gt;prev as 0xDEADBEEF and<br />
&gt;&gt; 0xBEEFDEAD.<br />
&gt;&gt; Later when unregister_dca_provider() is called to remove a DCA provier,<br />
&gt;&gt; it calls list_del(&amp;dca-&gt;node) to remove the dca from the list again,<br />
&gt;&gt; but dca-&gt;node has already been poisoned, then causes invalid memory<br />
&gt;&gt; access.<br />
&gt;&gt;<br />
&gt;&gt; The solution here is to use list_del_init(&amp;dca-&gt;node) instead of<br />
&gt;&gt; list_del(&amp;dca-&gt;node) in function unregister_dca_providers(), so it won't<br />
&gt;&gt; cause invalid memory access in unregister_dca_provider() later.<br />
&gt;&gt;<br />
&gt;&gt; ---<br />
&gt;&gt;<br />
&gt;&gt; This issue is triggered when hot-removing IOHs on Intel platforms, which<br />
&gt;&gt; will remove all IOAT devices built in the IOHs.<br />
&gt;&gt;<br />
&gt;&gt; ioatdma 0000:80:16.7: Removing dma and dca services<br />
&gt;&gt; ioatdma 0000:80:16.7: PCI INT D disabled<br />
&gt;&gt; ioatdma 0000:80:16.6: Removing dma and dca services<br />
&gt;&gt; ioatdma 0000:80:16.7: Removing dma and dca services<br />
&gt;&gt; ioatdma 0000:80:16.7: PCI INT D disabled<br />
&gt;&gt; ioatdma 0000:80:16.6: Removing dma and dca services<br />
&gt;&gt; ioatdma 0000:80:16.6: PCI INT C disabled<br />
&gt;&gt; ioatdma 0000:00:16.0: Removing dma and dca services<br />
&gt;&gt; ------------[ cut here ]------------<br />
&gt;&gt; WARNING: at lib/list_debug.c:47 __list_del_entry+0x63/0xd0()<br />
&gt;&gt; Hardware name: System x3850 X5 -[7143O3G]-<br />
&gt;&gt; list_del corruption, ffff880463540bc0-&gt;next is LIST_POISON1<br />
&gt;&gt; (dead000000100100)<br />
&gt;&gt; Modules linked in: ebtable_nat ebtables ipt_MASQUERADE iptable_nat<br />
&gt;&gt; nf_nat xt_CHECKSUM iptable_mangle bridge stp llc autofs4 sunrpc<br />
&gt;&gt; cpufreq_ondemand acpi_cpufreq freq_table mperf ipt_REJECT<br />
&gt;&gt; nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT<br />
&gt;&gt; nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter<br />
&gt;&gt; ip6_tables ipv6 vfat fat vhost_net macvtap macvlan tun kvm_intel kvm uinput<br />
&gt;&gt; microcode pcspkr serio_raw pmcraid sg be2net cdc_ether usbnet mii i2c_i801<br />
&gt;&gt; i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma i7core_edac<br />
&gt;&gt; edac_core igb dca e1000e bnx2 ext4 mbcache jbd2 sr_mod cdrom sd_mod<br />
&gt;&gt; crc_t10dif qla2xxx pata_acpi ata_generic ata_piix bfa scsi_transport_fc<br />
&gt;&gt; scsi_tgt megaraid_sas dm_mirror dm_region_hash dm_log dm_mod [last<br />
&gt;&gt; unloaded: scsi_wait_scan]<br />
&gt;&gt; Pid: 10049, comm: bash.sh Not tainted 3.2.0IOAT+ #5<br />
&gt;&gt; Call Trace:<br />
&gt;&gt; [&lt;ffffffff8106426f&gt;] warn_slowpath_common+0x7f/0xc0<br />
&gt;&gt; [&lt;ffffffff81064366&gt;] warn_slowpath_fmt+0x46/0x50<br />
&gt;&gt; [&lt;ffffffff8108c675&gt;] ? __blocking_notifier_call_chain+0x65/0x80<br />
&gt;&gt; [&lt;ffffffff81256073&gt;] __list_del_entry+0x63/0xd0<br />
&gt;&gt; [&lt;ffffffff812560f1&gt;] list_del+0x11/0x40<br />
&gt;&gt; [&lt;ffffffffa001b2e2&gt;] unregister_dca_provider+0x42/0xe0 [dca]<br />
&gt;&gt; [&lt;ffffffffa021f87d&gt;] ioat_remove+0x43/0x67 [ioatdma]<br />
&gt;&gt; [&lt;ffffffff8126b1a2&gt;] pci_device_remove+0x52/0x120<br />
&gt;&gt; [&lt;ffffffff8132b2dc&gt;] __device_release_driver+0x7c/0xe0<br />
&gt;&gt; [&lt;ffffffff8132b42d&gt;] device_release_driver+0x2d/0x40<br />
&gt;&gt; [&lt;ffffffff8132a871&gt;] driver_unbind+0xa1/0xc0<br />
&gt;&gt; [&lt;ffffffff81329cbc&gt;] drv_attr_store+0x2c/0x30<br />
&gt;&gt; [&lt;ffffffff811d72ef&gt;] sysfs_write_file+0xef/0x170<br />
&gt;&gt; [&lt;ffffffff81167338&gt;] vfs_write+0xc8/0x190<br />
&gt;&gt; [&lt;ffffffff81167501&gt;] sys_write+0x51/0x90<br />
&gt;&gt; [&lt;ffffffff814fa382&gt;] system_call_fastpath+0x16/0x1b<br />
&gt;&gt; ---[ end trace b81b51e7c494ec0d ]---<br />
&gt;&gt; BUG: unable to handle kernel NULL pointer dereference at 0000000000000010<br />
&gt;&gt; IP: [&lt;ffffffffa001b360&gt;] unregister_dca_provider+0xc0/0xe0 [dca]<br />
&gt;&gt; PGD 1465b48067 PUD 1465035067 PMD 0<br />
&gt;&gt; Oops: 0000 [#1] SMP<br />
&gt;&gt; CPU 57<br />
&gt;&gt; Modules linked in: ebtable_nat ebtables ipt_MASQUERADE iptable_nat<br />
&gt;&gt; nf_nat xt_CHECKSUM iptable_mangle bridge stp llc autofs4 sunrpc<br />
&gt;&gt; cpufreq_ondemand acpi_cpufreq freq_table mperf ipt_REJECT<br />
&gt;&gt; nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT<br />
&gt;&gt; nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter<br />
&gt;&gt; ip6_tables ipv6 vfat fat vhost_net macvtap macvlan tun kvm_intel kvm uinput<br />
&gt;&gt; microcode pcspkr serio_raw pmcraid sg be2net cdc_ether usbnet mii i2c_i801<br />
&gt;&gt; i2c_core iTCO_wdt iTCO_vendor_support shpchp ioatdma i7core_edac<br />
&gt;&gt; edac_core igb dca e1000e bnx2 ext4 mbcache jbd2 sr_mod cdrom sd_mod<br />
&gt;&gt; crc_t10dif qla2xxx pata_acpi ata_generic ata_piix bfa scsi_transport_fc<br />
&gt;&gt; scsi_tgt megaraid_sas dm_mirror dm_region_hash dm_log dm_mod [last<br />
&gt;&gt; unloaded: scsi_wait_scan]<br />
&gt;&gt;<br />
&gt;&gt; Pid: 10049, comm: bash.sh Tainted: G        W    3.2.0IOAT+ #5 IBM System x3850<br />
&gt;&gt; X5 -[7143O3G]-/Node 1, Processor Card<br />
&gt;&gt; RIP: 0010:[&lt;ffffffffa001b360&gt;]  [&lt;ffffffffa001b360&gt;]<br />
&gt;&gt; unregister_dca_provider+0xc0/0xe0 [dca]<br />
&gt;&gt; RSP: 0018:ffff880c4eafbdb8  EFLAGS: 00010046<br />
&gt;&gt; RAX: 0000000000000010 RBX: ffff880463540bc0 RCX: 0000000000002288<br />
&gt;&gt; RDX: ffff881465a51800 RSI: 0000000000000046 RDI: 0000000000000009<br />
&gt;&gt; RBP: ffff880c4eafbdd8 R08: 0000000000000000 R09: 0000000000000000<br />
&gt;&gt; R10: 0000000000000010 R11: 000000000000000b R12: 0000000000000000<br />
&gt;&gt; R13: 0000000000000257 R14: ffff881465abe000 R15: ffff881464199840<br />
&gt;&gt; FS:  00007f91d8314700(0000) GS:ffff88147fd20000(0000)<br />
&gt;&gt; knlGS:0000000000000000<br />
&gt;&gt; CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br />
&gt;&gt; CR2: 0000000000000010 CR3: 0000001457b07000 CR4: 00000000000006e0<br />
&gt;&gt; DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000<br />
&gt;&gt; DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400<br />
&gt;&gt; Process bash.sh (pid: 10049, threadinfo ffff880c4eafa000, task<br />
&gt;&gt; ffff880c4e3b8af0)<br />
&gt;&gt; Stack:<br />
&gt;&gt; 0000000000000206 ffff88046133a218 ffff881465abe090 ffffffffa0222560<br />
&gt;&gt; ffff880c4eafbdf8 ffffffffa021f87d ffff881465abe090 ffff881465abe208<br />
&gt;&gt; ffff880c4eafbe28 ffffffff8126b1a2 ffff881465abe090 ffffffffa02225c0<br />
&gt;&gt; Call Trace:<br />
&gt;&gt; [&lt;ffffffffa021f87d&gt;] ioat_remove+0x43/0x67 [ioatdma]<br />
&gt;&gt; [&lt;ffffffff8126b1a2&gt;] pci_device_remove+0x52/0x120<br />
&gt;&gt; [&lt;ffffffff8132b2dc&gt;] __device_release_driver+0x7c/0xe0<br />
&gt;&gt; [&lt;ffffffff8132b42d&gt;] device_release_driver+0x2d/0x40<br />
&gt;&gt; [&lt;ffffffff8132a871&gt;] driver_unbind+0xa1/0xc0<br />
&gt;&gt; [&lt;ffffffff81329cbc&gt;] drv_attr_store+0x2c/0x30<br />
&gt;&gt; [&lt;ffffffff811d72ef&gt;] sysfs_write_file+0xef/0x170<br />
&gt;&gt; [&lt;ffffffff81167338&gt;] vfs_write+0xc8/0x190<br />
&gt;&gt; [&lt;ffffffff81167501&gt;] sys_write+0x51/0x90<br />
&gt;&gt; [&lt;ffffffff814fa382&gt;] system_call_fastpath+0x16/0x1b<br />
&gt;&gt; Code: c7 20 c0 01 a0 e8 51 6c 4d e1 48 89 df e8 c9 05 00 00 48 83 c4 08 5b 41 5c 41<br />
&gt;&gt; 5d c9 c3 66 0f 1f 44 00 00 45 31 e4 49 8d 44 24 10 &lt;49&gt; 39 44 24 10 75 c9 4c 89 e7<br />
&gt;&gt; e8 71 ad 23 e1 4c 89 e7 e8 19 7b<br />
&gt;&gt; RIP  [&lt;ffffffffa001b360&gt;] unregister_dca_provider+0xc0/0xe0 [dca]<br />
&gt;&gt; RSP &lt;ffff880c4eafbdb8&gt;<br />
&gt;&gt; CR2: 0000000000000010<br />
&gt;&gt; ---[ end trace b81b51e7c494ec0e ]---<br />
&gt; <br />
&gt; Jiang,<br />
&gt; <br />
&gt; Could you verify if the following fixes the issue above?<br />
&gt; <br />
&gt; Thanks,<br />
&gt; Maciej<br />
&gt; ---<br />
&gt; <br />
&gt;  drivers/dca/dca-core.c |    5 +++++<br />
&gt;  1 files changed, 5 insertions(+), 0 deletions(-)<br />
&gt; <br />
&gt; diff --git a/drivers/dca/dca-core.c b/drivers/dca/dca-core.c<br />
&gt; index bc6f5fa..819dfda 100644<br />
&gt; --- a/drivers/dca/dca-core.c<br />
&gt; +++ b/drivers/dca/dca-core.c<br />
&gt; @@ -420,6 +420,11 @@ void unregister_dca_provider(struct dca_<br />
&gt;  <br />
&gt;  	raw_spin_lock_irqsave(&amp;dca_lock, flags);<br />
&gt;  <br />
&gt; +	if (list_empty(&amp;dca_domains)) {<br />
&gt; +		raw_spin_unlock_irqrestore(&amp;dca_lock, flags);<br />
&gt; +		return;<br />
&gt; +	}<br />
&gt; +<br />
&gt;  	list_del(&amp;dca-&gt;node);<br />
&gt;  <br />
&gt;  	pci_rc = dca_pci_rc_from_dev(dev);<br />
<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Jiang Liu</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:50:08 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1081185,1085056#msg-1085056</guid>
            <title>Re: NVM Mapping API</title>
            <link>http://choon.net/forum/read.php?21,1081185,1085056#msg-1085056</link>
            <description><![CDATA[ On Fri, May 18, 2012 at 10:03:53AM +0100, James Bottomley wrote:<br />
&gt; On Thu, 2012-05-17 at 14:59 -0400, Matthew Wilcox wrote:<br />
&gt; &gt; On Thu, May 17, 2012 at 10:54:38AM +0100, James Bottomley wrote:<br />
&gt; &gt; &gt; On Wed, 2012-05-16 at 13:35 -0400, Matthew Wilcox wrote:<br />
&gt; &gt; &gt; &gt; I'm not talking about a specific piece of technology, I'm assuming that<br />
&gt; &gt; &gt; &gt; one of the competing storage technologies will eventually make it to<br />
&gt; &gt; &gt; &gt; widespread production usage.  Let's assume what we have is DRAM with a<br />
&gt; &gt; &gt; &gt; giant battery on it.<br />
&gt; &gt; &gt; &gt; <br />
&gt; &gt; &gt; &gt; So, while we can use it just as DRAM, we're not taking advantage of the<br />
&gt; &gt; &gt; &gt; persistent aspect of it if we don't have an API that lets us find the<br />
&gt; &gt; &gt; &gt; data we wrote before the last reboot.  And that sounds like a filesystem<br />
&gt; &gt; &gt; &gt; to me.<br />
&gt; &gt; &gt; <br />
&gt; &gt; &gt; Well, it sounds like a unix file to me rather than a filesystem (it's a<br />
&gt; &gt; &gt; flat region with a beginning and end and no structure in between).<br />
&gt; &gt; <br />
&gt; &gt; That's true, but I think we want to put a structure on top of it.<br />
&gt; &gt; Presumably there will be multiple independent users, and each will want<br />
&gt; &gt; only a fraction of it.<br />
&gt; &gt; <br />
&gt; &gt; &gt; However, I'm not precluding doing this, I'm merely asking that if it<br />
&gt; &gt; &gt; looks and smells like DRAM with the only additional property being<br />
&gt; &gt; &gt; persistency, shouldn't we begin with the memory APIs and see if we can<br />
&gt; &gt; &gt; add persistency to them?<br />
&gt; &gt; <br />
&gt; &gt; I don't think so.  It feels harder to add useful persistent<br />
&gt; &gt; properties to the memory APIs than it does to add memory-like<br />
&gt; &gt; properties to our file APIs, at least partially because for<br />
&gt; &gt; userspace we already have memory properties for our file APIs (ie<br />
&gt; &gt; mmap/msync/munmap/mprotect/mincore/mlock/munlock/mremap).<br />
&gt; <br />
&gt; This is what I don't quite get.  At the OS level, it's all memory; we<br />
&gt; just have to flag one region as persistent.  This is easy, I'd do it in<br />
&gt; the physical memory map.  once this is done, we need either to tell the<br />
&gt; allocators only use volatile, only use persistent, or don't care (I<br />
&gt; presume the latter would only be if you needed the extra ram).<br />
&gt; <br />
&gt; The missing thing is persistent key management of the memory space (so<br />
&gt; if a user or kernel wants 10Mb of persistent space, they get the same<br />
&gt; 10Mb back again across boots).<br />
&gt; <br />
&gt; The reason a memory API looks better to me is because a memory API can<br />
&gt; be used within the kernel.  For instance, I want a persistent /var/tmp<br />
&gt; on tmpfs, I just tell tmpfs to allocate it in persistent memory and it<br />
&gt; survives reboots.  Likewise, if I want an area to dump panics, I just<br />
&gt; use it ... in fact, I'd probably always place the dmesg buffer in<br />
&gt; persistent memory.<br />
&gt; <br />
&gt; If you start off with a vfs API, it becomes far harder to use it easily<br />
&gt; from within the kernel.<br />
&gt; <br />
&gt; The question, really is all about space management: how many persistent<br />
&gt; spaces would there be.  I think, given the use cases above it would be a<br />
&gt; small number (it's basically one for every kernel use and one for ever<br />
&gt; user use ... a filesystem mount counting as one use), so a flat key to<br />
&gt; space management mapping (probably using u32 keys) makes sense, and<br />
&gt; that's similar to our current shared memory API.<br />
<br />
So who manages the key space?  If we do it based on names, it's easy; all<br />
kernel uses are &quot;.kernel/...&quot; and we manage our own sub-hierarchy within<br />
the namespace.  If there's only a u32, somebody has to lay down the rules<br />
about which numbers are used for what things.  This isn't quite as ugly<br />
as the initial proposal somebody made to me &quot;We just use the physical<br />
address as the key&quot;, and I told them all about how a.out libraries worked.<br />
<br />
Nevertheless, I'm not interested in being the Mitch DSouza of NVM.<br />
<br />
&gt; &gt; Discussion of use cases is exactly what I want!  I think that a<br />
&gt; &gt; non-hierarchical attempt at naming chunks of memory quickly expands<br />
&gt; &gt; into cases where we learn we really do want a hierarchy after all.<br />
&gt; <br />
&gt; OK, so enumerate the uses.  I can be persuaded the namespace has to be<br />
&gt; hierarchical if there are orders of magnitude more users than I think<br />
&gt; there will be.<br />
<br />
I don't know what the potential use cases might be.  I just don't think<br />
the use cases are all that bounded.<br />
<br />
&gt; &gt; &gt; Again, this depends on use case.  The SYSV shm API has a global flat<br />
&gt; &gt; &gt; keyspace.  Perhaps your envisaged use requires a hierarchical key space<br />
&gt; &gt; &gt; and therefore a FS interface looks more natural with the leaves being<br />
&gt; &gt; &gt; divided memory regions?<br />
&gt; &gt; <br />
&gt; &gt; I've really never heard anybody hold up the SYSV shm API as something<br />
&gt; &gt; to be desired before.  Indeed, POSIX shared memory is much closer to<br />
&gt; &gt; the filesystem API;<br />
&gt; <br />
&gt; I'm not really ... I was just thinking this needs key -&gt; region mapping<br />
&gt; and SYSV shm does that.  The POSIX anonymous memory API needs you to<br />
&gt; map /dev/zero and then pass file descriptors around for sharing.  It's<br />
&gt; not clear how you manage a persistent key space with that.<br />
<br />
I didn't say &quot;POSIX anonymous memory&quot;.  I said &quot;POSIX shared memory&quot;.<br />
I even pointed you at the right manpage to read if you haven't heard<br />
of it before.  The POSIX committee took a look at SYSV shm and said<br />
&quot;This is too ugly&quot;.  So they invented their own API.<br />
<br />
&gt; &gt;  the only difference being use of shm_open() and<br />
&gt; &gt; shm_unlink() instead of open() and unlink() [see shm_overview(7)].<br />
&gt; <br />
&gt; The internal kernel API addition is simply a key -&gt; region mapping.<br />
&gt; Once that's done, you need an allocation API for userspace and you're<br />
&gt; done.  I bet most userspace uses will be either give me xGB and put a<br />
&gt; tmpfs on it or give me xGB and put a something filesystem on it, but if<br />
&gt; the user wants an xGB mmap'd region, you can give them that as well.<br />
&gt; <br />
&gt; For a vfs interface, you have to do all of this as well, but in a much<br />
&gt; more complex way because the file name becomes the key and the metadata<br />
&gt; becomes the mapping.<br />
<br />
You're downplaying the complexity of your own solution while overstating<br />
the complexity of mine.  Let's compare, using your suggestion of the<br />
dmesg buffer.<br />
<br />
Mine:<br />
<br />
struct file *filp = filp_open(&quot;.kernel/dmesg&quot;, O_RDWR, 0);<br />
if (!IS_ERR(filp))<br />
	log_buf = nvm_map(filp, 0, __LOG_BUF_LEN, PAGE_KERNEL);<br />
<br />
Yours:<br />
<br />
log_buf = nvm_attach(492, NULL, 0);  /* Hope nobody else used 492! */<br />
<br />
Hm.  Doesn't look all that different, does it?  I've modelled nvm_attach()<br />
after shmat().  Of course, this ignores the need to be able to sync,<br />
which may vary between different NVM technologies, and the (desired<br />
by some users) ability to change portions of the mapped NVM between<br />
read-only and read-write.<br />
<br />
If the extra parameters and extra lines of code hinder adoption, I have<br />
no problems with adding a helper for the simple use cases:<br />
<br />
void *nvm_attach(const char *name, int perms)<br />
{<br />
	void *mem;<br />
	struct file *filp = filp_open(name, perms, 0);<br />
	if (IS_ERR(filp))<br />
		return NULL;<br />
	mem = nvm_map(filp, 0, filp-&gt;f_dentry-&gt;d_inode-&gt;i_size, PAGE_KERNEL);<br />
	fput(filp);<br />
	return mem;<br />
}<br />
<br />
I do think that using numbers to refer to regions of NVM is a complete<br />
non-starter.  This was one of the big mistakes of SYSV; one so big that<br />
even POSIX couldn't stomach it.<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Matthew Wilcox</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:49:13 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,984101,1085055#msg-1085055</guid>
            <title>Re: RCU related performance regression in 3.3</title>
            <link>http://choon.net/forum/read.php?21,984101,1085055#msg-1085055</link>
            <description><![CDATA[ Le 18/05/2012 14:14, Paul E. McKenney a écrit :<br />
&gt; On Fri, May 18, 2012 at 01:01:41PM +0200, Pascal Chapperon wrote:<br />
&gt;&gt; Le 15/05/2012 00:32, Paul E. McKenney a écrit :<br />
&gt;&gt;&gt; On Fri, May 04, 2012 at 04:14:42PM -0700, Paul E. McKenney wrote:<br />
&gt;&gt;&gt;&gt; On Fri, May 04, 2012 at 11:41:13PM +0200, Pascal Chapperon wrote:<br />
&gt;&gt;&gt;&gt;&gt; Le 04/05/2012 17:04, Paul E. McKenney a écrit :<br />
&gt;&gt;&gt;&gt;&gt;&gt; On Fri, May 04, 2012 at 04:42:54PM +0200, Pascal Chapperon wrote:<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt; Le 01/05/2012 17:45, Paul E. McKenney a écrit :<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Here is my RCU_FAST_NO_HZ patch stack on top of v3.4-rc4.<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Or you can pull branch fnh.2012.05.01a from:<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 	git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; 							Thanx, Paul<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt; I applied your global patch on top of v3.4-rc4. But the slowdown is<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt; worse than before : boot sequence took 80s instead 20-30s (12s for<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt; initramfs instead of 2s).<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt; I'll send you rcu tracing log in a second mail.<br />
&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt; Hmmm...  Well, I guess I am glad that I finally did something that<br />
&gt;&gt;&gt;&gt;&gt;&gt; had an effect, but I sure wish that the effect had been in the other<br />
&gt;&gt;&gt;&gt;&gt;&gt; direction!<br />
&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt; Just to make sure I understand: the difference between the 20-30s and<br />
&gt;&gt;&gt;&gt;&gt;&gt; the 80s is exactly the patch I sent you?<br />
&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt; 							Thanx, Paul<br />
&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt; Yes. Exactly same kernel config as in previous results, I applied<br />
&gt;&gt;&gt;&gt;&gt; your patch against v3.4-rc4, and sorry, the result is exactly what I<br />
&gt;&gt;&gt;&gt;&gt; said;<br />
&gt;&gt;&gt;&gt;&gt; I saw that your global patch was quite huge, and addresses things which<br />
&gt;&gt;&gt;&gt;&gt; are not directly related with the initial patch (commit<br />
&gt;&gt;&gt;&gt;&gt; 7cb92499000e3c86dae653077b1465458a039ef6); maybe a side effect?<br />
&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt; However, I'm ready to try this patch on my smaller laptop which<br />
&gt;&gt;&gt;&gt;&gt; supports well CONFIG_FAST_NO_HZ=y and systemd, if you think it can<br />
&gt;&gt;&gt;&gt;&gt; help ?<br />
&gt;&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt;&gt; Another thought: this issue as nothing to do with i7 Hyper-threading<br />
&gt;&gt;&gt;&gt;&gt; capacities ? (as I test core2duo, Pentium ulv in same conditions and I<br />
&gt;&gt;&gt;&gt;&gt; don't encountered any slowdown ?)<br />
&gt;&gt;&gt;&gt;<br />
&gt;&gt;&gt;&gt; Well, one possibility is that your setup starts the jiffies counter<br />
&gt;&gt;&gt;&gt; at some interesting value.  The attached patch (also against v3.4-rc4)<br />
&gt;&gt;&gt;&gt; applies a bit more paranoia to the initialization to handle this<br />
&gt;&gt;&gt;&gt; and other possibilities.<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; This patchset fixes the problem where RCU_FAST_NO_HZ's timers were<br />
&gt;&gt;&gt; being ignored due to the dyntick-idle code having already calculated<br />
&gt;&gt;&gt; the CPU's wakeup time (which I sent earlier, mistakenly offlist), but<br />
&gt;&gt;&gt; also fixes a botched check in my workaround.<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; Could you please try it out?  This patch is against 3.4-rc4.<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; 							Thanx, Paul<br />
&gt;&gt;&gt;<br />
&gt;&gt; Hi Paul,<br />
&gt;&gt;<br />
&gt;&gt; &lt;  +     if (!rcu_cpu_has_nonlazy_callbacks(cpu))<br />
&gt;&gt; ---<br />
&gt;&gt;&gt; +     if (rcu_cpu_has_nonlazy_callbacks(cpu))<br />
&gt;&gt;<br />
&gt;&gt; I was a little disappointed by the previous patch (boot sequence still<br />
&gt;&gt; took 72 s.), but this one makes a huge difference ;-)<br />
&gt;&gt; Slowdown during boot or shutdown with CONFIG_RCU_FAST_NO_HZ has<br />
&gt;&gt; disappeared (~ 10 attempts) :<br />
&gt;&gt; # systemd-analyze<br />
&gt;&gt; Startup finished in 1990ms (kernel) + 1174ms (initramfs) + 3121ms<br />
&gt;&gt; (userspace) = 6285ms<br />
&gt;&gt; .<br />
&gt;<br />
&gt; Very good!  And thank you very much for all your testing efforts and<br />
&gt; for bearing with me through this!<br />
&gt;<br />
&gt; Does this mean that I can add your Tested-by?<br />
<br />
Yes: the results are good and stable, at least for my hardware.<br />
I tried with both a standard fedora 16 kernel configuration and a custom<br />
one (hardware optimized, preempted, etc...) and this on over more 20<br />
attempts.<br />
With or without FAST_NO_HZ makes no difference now.<br />
<br />
&gt;<br />
&gt;&gt; Do you want the rcu tracing log for this patch ?<br />
&gt;<br />
&gt; Could you please?  Just in case there is some other surprise that<br />
&gt; I should know about that might not be visible.  ;-)<br />
&gt;<br />
&gt; 							Thanx, Paul<br />
I'll send you the logs in a second mail (offlist).<br />
<br />
Pascal<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Pascal Chapperon</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:49:07 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1084257,1085054#msg-1085054</guid>
            <title>Re: [ 00/53] 3.2.18-stable review</title>
            <link>http://choon.net/forum/read.php?21,1084257,1085054#msg-1085054</link>
            <description><![CDATA[ On Fri, May 18, 2012 at 03:32:54AM +0100, Ben Hutchings wrote:<br />
&gt; This is the start of the stable review cycle for the 3.2.18 release.<br />
&gt; There are 53 patches in this series, which will be posted as responses<br />
&gt; to this one.  If anyone has any issues with these being applied, please<br />
&gt; let me know.<br />
&gt; <br />
&gt; Responses should be made by Sun May 20 13:00:00 UTC 2012.<br />
&gt; Anything received after that time might be too late.<br />
&gt; <br />
&gt; The whole patch series should soon be available in one patch at:<br />
&gt; 	kernel.org/pub/linux/kernel/v3.x/stable-review/patch-3.2.18-rc1.gz<br />
&gt; and the diffstat can be found below.<br />
<br />
$ wget  kernel.org/pub/linux/kernel/v3.x/stable-review/patch-3.2.18-rc1.gz<br />
--2012-05-18 10:44:23--  [<a href="http://kernel.org/pub/linux/kernel/v3.x/stable-review/patch-3.2.18-rc1.gz"  rel="nofollow">kernel.org</a>]<br />
Resolving kernel.org (kernel.org)... 149.20.4.69<br />
Connecting to kernel.org (kernel.org)|149.20.4.69|:80... connected.<br />
HTTP request sent, awaiting response... 404 Not Found<br />
2012-05-18 10:44:23 ERROR 404: Not Found.<br />
<br />
How much is &quot;soon&quot;? Did you push it to the repo yet and I'm just waiting<br />
on the mirroring? Or do you still need to push it yourself?<br />
<br />
-- Steve<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Steven Rostedt</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:48:08 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085052#msg-1085052</guid>
            <title>Re: [Xen-devel] [PATCH v6 10/11] libxl_string_to_backend: add qdisk</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085052#msg-1085052</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 10/11] libxl_string_to_backend: add qdisk&quot;):<br />
&gt; Signed-off-by: Stefano Stabellini &lt;stefano.stabellini@eu.citrix.com&gt;<br />
<br />
Acked-by: Ian Jackson &lt;ian.jackson@eu.citrix.com&gt;<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:47:06 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085051#msg-1085051</guid>
            <title>Re: [Xen-devel] [PATCH v6 11/11] main_blockdetach: destroy the disk on successful removal</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085051#msg-1085051</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 11/11] main_blockdetach: destroy the disk on successful removal&quot;):<br />
&gt; main_blockdetach needs to call libxl_device_disk_destroy so that all the<br />
&gt; disk related entries are properly removed from xenstore.<br />
&gt; <br />
&gt; Signed-off-by: Stefano Stabellini &lt;stefano.stabellini@eu.citrix.com&gt;<br />
<br />
Acked-by: Ian Jackson &lt;ian.jackson@eu.citrix.com&gt;<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:47:05 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085050#msg-1085050</guid>
            <title>Re: [Xen-devel] [PATCH v6 09/11] libxl__device_disk_local_attach: wait for state &quot;connected&quot;</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085050#msg-1085050</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 09/11] libxl__device_disk_local_attach: wait for state &quot;connected&quot;&quot;):<br />
&gt; In order to make sure that the block device is available and ready to be<br />
&gt; used, wait for state &quot;connected&quot; in the backend before returning.<br />
&gt; <br />
&gt; Signed-off-by: Stefano Stabellini &lt;stefano.stabellini@eu.citrix.com&gt;<br />
<br />
Acked-by: Ian Jackson &lt;ian.jackson@eu.citrix.com&gt;<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:47:04 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1081378,1085047#msg-1085047</guid>
            <title>Re: [PATCH 1/2] lib: Proportions with flexible period</title>
            <link>http://choon.net/forum/read.php?21,1081378,1085047#msg-1085047</link>
            <description><![CDATA[ On Fri 18-05-12 12:43:44, Peter Zijlstra wrote:<br />
&gt; On Tue, 2012-05-15 at 17:43 +0200, Jan Kara wrote:<br />
&gt; &gt; +void __fprop_inc_percpu_max(struct fprop_global *p,<br />
&gt; &gt; +                           struct fprop_local_percpu *pl, int max_frac)<br />
&gt; &gt; +{<br />
&gt; &gt; +       if (unlikely(max_frac &lt; 100)) {<br />
&gt; &gt; +               unsigned long numerator, denominator;<br />
&gt; &gt; +<br />
&gt; &gt; +               fprop_fraction_percpu(p, pl, &amp;numerator, &amp;denominator);<br />
&gt; &gt; +               if (numerator &gt; ((long long)denominator) * max_frac / 100)<br />
&gt; &gt; +                       return;<br />
&gt; <br />
&gt; Another thing, your fprop_fraction_percpu() can he horribly expensive<br />
&gt; due to using _sum() (and to a lesser degree the retry), remember that<br />
&gt; this function is called for _every_ page written out.<br />
  The retry happens only when new period is declared while<br />
fprop_fraction_percpu() is running. So that should be rather exceptional.<br />
Regarding the _sum I agree, luckily that's easy enough to fix.<br />
<br />
&gt; Esp. on the mega fast storage (multi-spindle or SSD) they're pushing cpu<br />
&gt; limits as it is with iops, we should be very careful not to make it more<br />
&gt; expensive than absolutely needed.<br />
  Yup.<br />
<br />
&gt; &gt; +       } else<br />
&gt; &gt; +               fprop_reflect_period_percpu(p, pl);<br />
&gt; &gt; +       __percpu_counter_add(&amp;pl-&gt;events, 1, PROP_BATCH);<br />
&gt; &gt; +       percpu_counter_add(&amp;p-&gt;events, 1);<br />
&gt; &gt; +} <br />
<br />
								Honza<br />
-- <br />
Jan Kara &lt;jack@suse.cz&gt;<br />
SUSE Labs, CR<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Jan Kara</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:46:08 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085046#msg-1085046</guid>
            <title>Re: [Xen-devel] [PATCH v6 05/11] libxl: introduce libxl__device_disk_add</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085046#msg-1085046</link>
            <description><![CDATA[ On Fri, 2012-05-18 at 15:36 +0100, Ian Jackson wrote:<br />
&gt; There is no need IMO to move the<br />
&gt; internal function to libxl_internal.c. <br />
<br />
I've always thought the existence libxl_internal.c was just begging for<br />
people to group functions along the wrong criteria anyway...<br />
<br />
The whole concept of what lives where inside tools/libxl/libxl*.c is all<br />
pretty ad-hoc anyway.<br />
<br />
Ian.<br />
<br />
<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Campbell</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:45:02 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085045#msg-1085045</guid>
            <title>Re: [Xen-devel] [PATCH v6 08/11] xl/libxl: implement QDISK libxl_device_disk_local_attach</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085045#msg-1085045</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 08/11] xl/libxl: implement QDISK libxl_device_disk_local_attach&quot;):<br />
&gt; - Spawn a QEMU instance at boot time to handle disk local attach<br />
&gt; requests.<br />
<br />
&gt; Signed-off-by: Stefano Stabellini &lt;stefano.stabellini@eu.citrix.com&gt;<br />
&gt; Acked-by:Ian Campbell &lt;ian.campbell@citrix.com&gt;<br />
<br />
Acked-by: Ian Jackson &lt;ian.jackson@eu.citrix.com&gt;<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:44:10 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1082947,1085044#msg-1085044</guid>
            <title>Re: lockdep false positive in double_lock_balance()?</title>
            <link>http://choon.net/forum/read.php?21,1082947,1085044#msg-1085044</link>
            <description><![CDATA[ On Thu, 2012-05-17 at 21:19 +0200, Peter Zijlstra wrote:<br />
<br />
&gt; Something like this should fix it I think..<br />
&gt; <br />
&gt; <br />
&gt; ---<br />
&gt;  kernel/sched/rt.c |    2 +-<br />
&gt;  1 file changed, 1 insertion(+), 1 deletion(-)<br />
&gt; <br />
&gt; diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c<br />
&gt; index c5565c3..b649108 100644<br />
&gt; --- a/kernel/sched/rt.c<br />
&gt; +++ b/kernel/sched/rt.c<br />
&gt; @@ -1556,7 +1556,7 @@ static struct rq *find_lock_lowest_rq(struct task_struct *task, struct rq *rq)<br />
&gt;  				     task_running(rq, task) ||<br />
&gt;  				     !task-&gt;on_rq)) {<br />
&gt;  <br />
&gt; -				raw_spin_unlock(&amp;lowest_rq-&gt;lock);<br />
&gt; +				double_unlock_balance(rq, lowest_rq);<br />
<br />
Acked-by: Steven Rostedt &lt;rostedt@goodmis.org&gt;<br />
<br />
-- Steve<br />
<br />
&gt;  				lowest_rq = NULL;<br />
&gt;  				break;<br />
&gt;  			}<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Steven Rostedt</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:44:08 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085043#msg-1085043</guid>
            <title>Re: [Xen-devel] [PATCH v6 07/11] libxl: introduce libxl__alloc_vdev</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085043#msg-1085043</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 07/11] libxl: introduce libxl__alloc_vdev&quot;):<br />
&gt; Introduce libxl__alloc_vdev: find a spare virtual block device in the<br />
&gt; domain passed as argument.<br />
...<br />
&gt; +/* Same as in Linux.<br />
&gt; + * The maximum buffer length is 32 bytes.<br />
&gt; + * The code is safe thanks to the upper bound enforced by the caller. */<br />
&gt; +static char *encode_disk_name(char *ptr, unsigned int n)<br />
<br />
So this says that encode_disk_name may use up to 32 bytes in *ptr<br />
(including or excluding the trailing nul?)<br />
<br />
_Why_ may the maximum buffer length used be 32 bytes ?  Also, &quot;maximum<br />
buffer length&quot; is a confusing phrase because it seems to refer to the<br />
/actual/ length of the buffer rather than the amount /used/.<br />
<br />
And this...<br />
<br />
&gt; +    char *ret = libxl__zalloc(gc, 32);<br />
<br />
... allocates a 32 byte buffer which we then fill with ...<br />
<br />
&gt; +    strcpy(ret, &quot;xvd&quot;);<br />
&gt; +    ptr = encode_disk_name(ret + 3, offset);<br />
<br />
3 characters plus the encoded disk name.  So possibly using up to 36<br />
bytes.<br />
<br />
In fact it seems to me that there could be a much tighter upper bound<br />
on the length of output of encode_disk_name (based on arithmetic) but<br />
it needs to be properly calculated and documented and perhaps put in a<br />
#define.<br />
<br />
Ian.<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:43:16 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084811,1085042#msg-1085042</guid>
            <title>Re: [Xen-devel] [PATCH] libxl: Introduce LIBXL_DOMAIN_TYPE_INVALID to make gcc happy</title>
            <link>http://choon.net/forum/read.php?22,1084811,1085042#msg-1085042</link>
            <description><![CDATA[ On Fri, 2012-05-18 at 15:30 +0100, Dario Faggioli wrote:<br />
&gt; On Fri, 2012-05-18 at 14:21 +0200, Christoph Egger wrote:<br />
&gt; &gt; Introduce LIBXL_DOMAIN_TYPE_INVALID.<br />
&gt; &gt; Change libxl__domain_type() to return LIBXL_DOMAIN_TYPE_INVALID rather<br />
&gt; &gt; hardcoding -1.<br />
&gt; &gt; Adjust code pieces where gcc 4.5.3 claims that LIBXL_DOMAIN_TYPE_INVALID<br />
&gt; &gt; is not handled.<br />
&gt; &gt; <br />
&gt; &gt; This fixes the build error with gcc 4.5.3 reported here:<br />
&gt; &gt; [<a href="http://lists.xen.org/archives/html/xen-devel/2012-05/msg01269.html"  rel="nofollow">lists.xen.org</a>]<br />
&gt; &gt; <br />
&gt; I was also running into that error and thus I applied this patch, which<br />
&gt; brought me here:<br />
&gt; <br />
&gt; libxl.c: In function ‘libxl_primary_console_exec’:<br />
&gt; libxl.c:1233:14: error: ‘LIBXL_DOMAIN_TYPE_INVALID’ undeclared (first use in this function)<br />
&gt; libxl.c:1233:14: note: each undeclared identifier is reported only once for each function it appears in<br />
&gt; <br />
&gt; Which actually seems to be right:<br />
&gt; <br />
&gt; $ grep LIBXL_DOMAIN_TYPE_INVALID tools/* -R<br />
&gt; tools/libxl/libxl_dm.c:    case LIBXL_DOMAIN_TYPE_INVALID:<br />
&gt; tools/libxl/libxl_dm.c:    case LIBXL_DOMAIN_TYPE_INVALID:<br />
&gt; tools/libxl/libxl_dom.c:        return LIBXL_DOMAIN_TYPE_INVALID;<br />
&gt; tools/libxl/libxl_dom.c:        return LIBXL_DOMAIN_TYPE_INVALID;<br />
&gt; tools/libxl/libxl.c:        case LIBXL_DOMAIN_TYPE_INVALID:<br />
&gt; <br />
&gt; Am I missing something?<br />
<br />
This should be defined in tools/libxl/libxl_types.idl but the patch<br />
doesn't seem to add it.<br />
<br />
Ian.<br />
<br />
<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Campbell</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:43:15 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1081378,1085041#msg-1085041</guid>
            <title>Re: [PATCH 1/2] lib: Proportions with flexible period</title>
            <link>http://choon.net/forum/read.php?21,1081378,1085041#msg-1085041</link>
            <description><![CDATA[ On Thu 17-05-12 23:56:45, Peter Zijlstra wrote:<br />
&gt; On Tue, 2012-05-15 at 17:43 +0200, Jan Kara wrote:<br />
&gt; &gt; +void fprop_fraction_percpu(struct fprop_global *p,<br />
&gt; &gt; +                          struct fprop_local_percpu *pl,<br />
&gt; &gt; +                          unsigned long *numerator, unsigned long *denominator)<br />
&gt; &gt; +{<br />
&gt; &gt; +       unsigned int seq;<br />
&gt; &gt; +       s64 den;<br />
&gt; &gt; +<br />
&gt; &gt; +       do {<br />
&gt; &gt; +               seq = read_seqcount_begin(&amp;p-&gt;sequence);<br />
&gt; &gt; +               fprop_reflect_period_percpu(p, pl);<br />
&gt; &gt; +               *numerator = percpu_counter_read_positive(&amp;pl-&gt;events);<br />
&gt; &gt; +               den = percpu_counter_read(&amp;p-&gt;events);<br />
&gt; &gt; +               if (den &lt;= 0)<br />
&gt; &gt; +                       den = percpu_counter_sum(&amp;p-&gt;events);<br />
&gt; &gt; +               *denominator = den;<br />
&gt; &gt; +       } while (read_seqcount_retry(&amp;p-&gt;sequence, seq));<br />
&gt; &gt; +} <br />
&gt; <br />
&gt; <br />
&gt; why not use percpu_counter_read_positive(&amp;p-&gt;events) and ditch<br />
&gt; percpu_counter_sum()? That sum can be terribly expensive..<br />
  Yes. I'm actually not sure why I used the _sum here... Thanks for<br />
spotting this.<br />
<br />
								Honza<br />
-- <br />
Jan Kara &lt;jack@suse.cz&gt;<br />
SUSE Labs, CR<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Jan Kara</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:43:14 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1084721,1085040#msg-1085040</guid>
            <title>Re: [PATCH 2/3] x86: x2apic/cluster: Make use of lowest priority delivery mode</title>
            <link>http://choon.net/forum/read.php?21,1084721,1085040#msg-1085040</link>
            <description><![CDATA[ On Fri, May 18, 2012 at 12:26:41PM +0200, Alexander Gordeev wrote:<br />
&gt; Currently x2APIC in logical destination mode delivers interrupts to a<br />
&gt; single CPU, no matter how many CPUs were specified in the destination<br />
&gt; cpumask.<br />
&gt; <br />
&gt; This fix enables delivery of interrupts to multiple CPUs by bit-ORing<br />
&gt; Logical IDs of destination CPUs that have matching Cluster ID.<br />
&gt; <br />
&gt; Because only one cluster could be specified in a message destination<br />
&gt; address, the destination cpumask is tried for a cluster that contains<br />
&gt; maximum number of CPUs matching this cpumask. The CPUs in this cluster<br />
&gt; are selected to receive the interrupts while all other CPUs (in the<br />
&gt; cpumask) are ignored.<br />
<br />
Hi Alexander,<br />
<br />
I'm a bit confused, we do compose destination id from target cpumask<br />
and send one ipi per _cluster_ with all cpus belonging to this cluster<br />
OR'ed. So if my memory doesn't betray me all specified cpus in cluster<br />
should obtain this message. Thus I'm wondering where do you find that<br />
only one apic obtains ipi? (note i don't have the real physical<br />
machine with x2apic enabled handy to test, so please share<br />
the experience).<br />
<br />
	Cyrill<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Cyrill Gorcunov</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:43:08 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085034#msg-1085034</guid>
            <title>Re: [Xen-devel] [PATCH v6 05/11] libxl: introduce libxl__device_disk_add</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085034#msg-1085034</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 05/11] libxl: introduce libxl__device_disk_add&quot;):<br />
&gt; Introduce libxl__device_disk_add that takes an additional<br />
&gt; xs_transaction_t paramter.<br />
&gt; Implement libxl_device_disk_add using libxl__device_disk_add.<br />
<br />
Can't this be done in such a way that the diff isn't &quot;delete this<br />
function completely&quot; followed by &quot;here is a new function&quot; ?<br />
<br />
I don't really understand why you want to move the function at all,<br />
TBH.  I think keeping the public wrapper and the internal<br />
implementation together is fine.  There is no need IMO to move the<br />
internal function to libxl_internal.c.<br />
<br />
Ian.<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:39:11 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1003833,1085033#msg-1085033</guid>
            <title>Re: [PATCH v6 3/3] gpio: TS-5500 GPIO support</title>
            <link>http://choon.net/forum/read.php?21,1003833,1085033#msg-1085033</link>
            <description><![CDATA[ Hi Grant,<br />
<br />
On Thu, 2012-05-17 at 16:59 -0600, Grant Likely wrote:<br />
&gt; On Thu, May 17, 2012 at 3:40 PM, Vivien Didelot<br />
&gt; &lt;vivien.didelot@savoirfairelinux.com&gt; wrote:<br />
&gt; &gt; On Thu, 2012-05-17 at 15:06 -0600, Grant Likely wrote:<br />
&gt; &gt;&gt; &gt;  arch/x86/include/asm/ts5500.h |   62 ++++++++<br />
&gt; &gt;&gt;<br />
&gt; &gt;&gt; Why the separate header file?  What will use these defines?  I<br />
&gt; &gt;&gt; normally expect driver-specific defines to be in the driver .c file<br />
&gt; &gt;&gt; directly; particularly for things like gpio drivers which should be a<br />
&gt; &gt;&gt; generic interface that doesn't need to export symbols.<br />
&gt; &gt;<br />
&gt; &gt; Should an intermediate driver directly use values for GPIOs instead of<br />
&gt; &gt; these symbols? For example, how should a temperature sensor plugged on<br />
&gt; &gt; this platform refer to inputs and outputs?<br />
&gt; <br />
&gt; Tell me more about this platform.  Where does the data about<br />
&gt; connections come from?  Is it a purpose-built embedded system?<br />
<br />
This is a generic purpose platform, the GPIO bus is exposed on an<br />
external DB25 connector. End-users can use it however they like.<br />
<br />
&gt; Is the<br />
&gt; GPIO controller described in ACPI? (probably not since GPIOs were only<br />
&gt; added to ACPI in v5)  Does the end-user attach her own hardware to the<br />
&gt; board like the temperature sensor you describe?  If so, is that<br />
&gt; hardware driven by kernel drivers or user-space drivers?<br />
<br />
Both in fact. For instance, we are connecting an SHT15<br />
humidity/temperature sensor, which already has support in the kernel.<br />
<br />
&gt; <br />
&gt; For userspace drivers you can get information about the GPIO number<br />
&gt; assignments from /sys, but it isn't well documented and can probably<br />
&gt; be improved.<br />
&gt; <br />
&gt; If it is kernelspace, then you really need a way to add data about the<br />
&gt; platform to the kernel at runtime.  Having it statically compiled in<br />
&gt; isn't a very good solution.  I would recommend injecting configuration<br />
&gt; data into the kernel from userspace.  You could invent something, but<br />
&gt; that wouldn't be very portable.  Xilinx has done some work on this<br />
&gt; using Flattened Device Tree and the firmware loading infrastructure.<br />
&gt; The kernel requests a .dtb (device tree blob) from userspace and uses<br />
&gt; that to configure devices.  That may do the job for you.  GPIO and<br />
&gt; platform device infrastructure already have FDT support which will<br />
&gt; help you here.  I expect it could be done with an ACPI fragment too,<br />
&gt; but I just don't know of anybody having done any work in this area.<br />
&gt; <br />
&gt; That probably isn't the answer you want though since I assume you just<br />
&gt; need to get something that works rather than investing a whole bunch<br />
&gt; of time on generic infrastructure.<br />
<br />
Exactly.<br />
<br />
&gt;  What I would recommend is for your<br />
&gt; platform setup code to use a notifier to wait for the<br />
&gt; BUS_NOTIFY_BOUND_DRIVER event and then register the temperature sensor<br />
&gt; with the correct gpio number at that time (because once you have a<br />
&gt; reference to the gpio controller you can calculate the assigned gpio<br />
&gt; numbers).<br />
<br />
Thanks.<br />
<br />
I've been working on pushing this code mainline for a while. To<br />
summarize, for you to accept this code, you'd prefer me to move every<br />
symbol into the driver itself (in addition to addressing your and Joe's<br />
other requests), and then we're good?<br />
<br />
&gt; <br />
&gt; g.<br />
<br />
Thanks,<br />
Vivien.<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Vivien Didelot</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:39:10 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,950763,1085031#msg-1085031</guid>
            <title>Re: [PATCH 1/2] perf: Add persistent event facilities</title>
            <link>http://choon.net/forum/read.php?21,950763,1085031#msg-1085031</link>
            <description><![CDATA[ On Fri, 2012-05-18 at 16:21 +0200, Borislav Petkov wrote:<br />
&gt; On Fri, May 18, 2012 at 04:14:22PM +0200, Peter Zijlstra wrote:<br />
&gt; &gt; On Fri, 2012-05-18 at 16:09 +0200, Borislav Petkov wrote:<br />
&gt; &gt; &gt; What happens here if a second user wants to enable a second set of<br />
&gt; &gt; &gt; persistent events, allocate a second set of per-CPU buffers? <br />
&gt; &gt; <br />
&gt; &gt; I'm not seeing the relation to VM_SHARED here.<br />
&gt; <br />
&gt; Well, in the sense that if mmap fails in the !VM_SHARED case, I can't<br />
&gt; enable any persistent events except the ones which are enabled and so<br />
&gt; I need to allocate another set of resources for that second persistent<br />
&gt; events user.<br />
<br />
Right, well, you could actually allow operations on the fd, just not a<br />
second mapping :-)<br />
<br />
Anyway.. I'd push that error back to the user. If they need a second<br />
set, let them create it.<br />
<br />
Do you really need multiple consumers for your MCE stuff? If so, what<br />
would be the problem of using VM_SHARED?<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Peter Zijlstra</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:38:08 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085030#msg-1085030</guid>
            <title>Re: [Xen-devel] [PATCH v6 04/11] libxl: move libxl__device_from_disk to libxl_internal.c</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085030#msg-1085030</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 04/11] libxl: move libxl__device_from_disk to libxl_internal.c&quot;):<br />
&gt; Signed-off-by: Stefano Stabellini &lt;stefano.stabellini@eu.citrix.com&gt;<br />
<br />
Acked-by: Ian Jackson &lt;ian.jackson@eu.citrix.com&gt;<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:37:03 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085029#msg-1085029</guid>
            <title>Re: [Xen-devel] [PATCH v6 02/11] libxl: libxl__device_disk_local_attach return a new libxl_device_disk</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085029#msg-1085029</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 02/11] libxl: libxl__device_disk_local_attach return a new libxl_device_disk&quot;):<br />
&gt; Introduce a new libxl_device_disk* parameter to<br />
&gt; libxl__device_disk_local_attach, the parameter is allocated by the<br />
&gt; caller. libxl__device_disk_local_attach is going to fill the new disk<br />
&gt; with informations about the new locally attached disk.  The new<br />
&gt; libxl_device_disk should be passed to libxl_device_disk_local_detach<br />
&gt; afterwards.<br />
<br />
In this declaration:<br />
<br />
&gt; @@ -1767,6 +1768,7 @@ struct libxl__bootloader_state {<br />
&gt;      libxl__bootloader_console_callback *console_available;<br />
&gt;      libxl_domain_build_info *info; /* u.pv.{kernel,ramdisk,cmdline} updated */<br />
&gt;      libxl_device_disk *disk;<br />
&gt; +    libxl_device_disk tmpdisk;<br />
&gt;      uint32_t domid;<br />
<br />
We need information about what this &quot;tmpdisk&quot; is.  All of the other<br />
parameters here are input parameters, except as otherwise noted in the<br />
comment.<br />
<br />
Also I'm not convinced that &quot;tmpdisk&quot; is quite the right name.  You<br />
also need to explain the distinction between &quot;disk&quot; and &quot;tmpdisk&quot;.<br />
<br />
Perhaps:<br />
<br />
   const libxl_device_disk *disk; /* as specified by user */<br />
   libxl_device_disk localdisk;<br />
      /* Should be zeroed by caller on entry.  Will be filled in by<br />
       * bootloader machinery; represents the local attachment of the<br />
       * disk for the benefit of the bootloader.  Must be detached by<br />
       * the caller using libxl__device_disk_local_detach, but only<br />
       * after the domain's kernel and initramfs have been loaded into<br />
       * memory and the file references disposed of. */<br />
<br />
?<br />
<br />
The implementation looks sane.<br />
<br />
Ian.<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:37:02 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1081378,1085027#msg-1085027</guid>
            <title>Re: [PATCH 2/2] block: Convert BDI proportion calculations to flexible proportions</title>
            <link>http://choon.net/forum/read.php?21,1081378,1085027#msg-1085027</link>
            <description><![CDATA[ On Fri, 2012-05-18 at 16:24 +0200, Jan Kara wrote:<br />
&gt;   Yeah, that should be easy enough so I'll try it that way since I presume<br />
&gt; it's nicer to power usage to use deferred timers if it's reasonably<br />
&gt; possible. <br />
<br />
Btw, your current scheme also drifts. Since you do jiffes + 3*HZ you<br />
period might actually be longer if the timer got delayed.<br />
<br />
If you keep an external jiffies count like:<br />
<br />
unsigned long period_jiffies = jiffies;<br />
<br />
void my_timer_func()<br />
{<br />
	unsigned long delta = jiffies - period_jiffies;<br />
	unsigned long periods = delta / 3*HZ;<br />
<br />
	age(periods);<br />
<br />
	period_jiffies += 3*HZ * periods;<br />
	mod_timer(&amp;my_timer, period_jiffies);<br />
}<br />
<br />
<br />
it all works without drift (+- bugs of course).<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Peter Zijlstra</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:35:08 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084811,1085024#msg-1085024</guid>
            <title>Re: [Xen-devel] [PATCH] libxl: Introduce LIBXL_DOMAIN_TYPE_INVALID to make gcc happy</title>
            <link>http://choon.net/forum/read.php?22,1084811,1085024#msg-1085024</link>
            <description><![CDATA[ On Fri, 2012-05-18 at 14:21 +0200, Christoph Egger wrote:<br />
&gt; Introduce LIBXL_DOMAIN_TYPE_INVALID.<br />
&gt; Change libxl__domain_type() to return LIBXL_DOMAIN_TYPE_INVALID rather<br />
&gt; hardcoding -1.<br />
&gt; Adjust code pieces where gcc 4.5.3 claims that LIBXL_DOMAIN_TYPE_INVALID<br />
&gt; is not handled.<br />
&gt; <br />
&gt; This fixes the build error with gcc 4.5.3 reported here:<br />
&gt; [<a href="http://lists.xen.org/archives/html/xen-devel/2012-05/msg01269.html"  rel="nofollow">lists.xen.org</a>]<br />
&gt; <br />
I was also running into that error and thus I applied this patch, which<br />
brought me here:<br />
<br />
libxl.c: In function ‘libxl_primary_console_exec’:<br />
libxl.c:1233:14: error: ‘LIBXL_DOMAIN_TYPE_INVALID’ undeclared (first use in this function)<br />
libxl.c:1233:14: note: each undeclared identifier is reported only once for each function it appears in<br />
<br />
Which actually seems to be right:<br />
<br />
$ grep LIBXL_DOMAIN_TYPE_INVALID tools/* -R<br />
tools/libxl/libxl_dm.c:    case LIBXL_DOMAIN_TYPE_INVALID:<br />
tools/libxl/libxl_dm.c:    case LIBXL_DOMAIN_TYPE_INVALID:<br />
tools/libxl/libxl_dom.c:        return LIBXL_DOMAIN_TYPE_INVALID;<br />
tools/libxl/libxl_dom.c:        return LIBXL_DOMAIN_TYPE_INVALID;<br />
tools/libxl/libxl.c:        case LIBXL_DOMAIN_TYPE_INVALID:<br />
<br />
Am I missing something?<br />
<br />
Dario<br />
<br />
-- <br />
&lt;&lt;This happens because I choose it to happen!&gt;&gt; (Raistlin Majere)<br />
-----------------------------------------------------------------<br />
Dario Faggioli, Ph.D, [<a href="http://retis.sssup.it/people/faggioli"  rel="nofollow">retis.sssup.it</a>]<br />
Senior Software Engineer, Citrix Systems R&amp;D Ltd., Cambridge (UK)<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Dario Faggioli</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:34:10 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1081378,1085023#msg-1085023</guid>
            <title>Re: [PATCH 1/2] lib: Proportions with flexible period</title>
            <link>http://choon.net/forum/read.php?21,1081378,1085023#msg-1085023</link>
            <description><![CDATA[ On Thu 17-05-12 23:35:12, Peter Zijlstra wrote:<br />
&gt; On Tue, 2012-05-15 at 17:43 +0200, Jan Kara wrote:<br />
&gt; &gt; +               if (numerator &gt; ((long long)denominator) * max_frac / 100)<br />
&gt; <br />
&gt; Does that even compile on 32bit archs?<br />
&gt; <br />
&gt; Operator precedence is *,/ left-to-right, so that's:<br />
&gt; <br />
&gt;   long long t1 = (long long)denom * max_frac<br />
&gt;   long long t2 = t1 / 100;<br />
&gt; <br />
&gt; Which is a 64bit signed division.<br />
&gt; <br />
&gt; There's a reason I used that max_prop_frac thing you removed, it avoids<br />
&gt; having to do the division at all and allows a mult and shift instead.<br />
  Yeah, I misunderstood it's purpose when I read the code originally. I'll<br />
put it back to avoid the division since this is a hot path.<br />
<br />
									Honza<br />
-- <br />
Jan Kara &lt;jack@suse.cz&gt;<br />
SUSE Labs, CR<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Jan Kara</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:34:09 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1084017,1085021#msg-1085021</guid>
            <title>Re: [PATCH v24b] RAS: Add a tracepoint for reporting memory controller events</title>
            <link>http://choon.net/forum/read.php?21,1084017,1085021#msg-1085021</link>
            <description><![CDATA[ Em 18-05-2012 11:05, Borislav Petkov escreveu:<br />
&gt; On Fri, May 18, 2012 at 10:23:39AM -0300, Mauro Carvalho Chehab wrote:<br />
&gt;&gt; Em 18-05-2012 09:43, Borislav Petkov escreveu:<br />
&gt;&gt;<br />
&gt;&gt; (offensive/ironic comments skipped)<br />
&gt;&gt;<br />
&gt;&gt;&gt; you fail to see that I'm trying to make this as generic as possible and<br />
&gt;&gt;&gt; not fit it into anything so that EVERYONE can use it.<br />
&gt;&gt;<br />
&gt;&gt; Tracepoints are generic enough. Everyone can use it. If need new fields are<br />
&gt;&gt; needed, just add a new tracepoint.<br />
&gt; <br />
&gt; This is exactly what I'm talking about - this is wrong on so many levels<br />
&gt; that it ain't even funny! You can add as many tracepoints if you want<br />
&gt; to to your pet project but in the kernel we add one tracepoint for one<br />
&gt; thing which fits all users.<br />
&gt; <br />
&gt; I want to see you be successful at adding a new tracepoint<br />
&gt; to, say, prepare_task_switch() in kernel/sched/core.c because<br />
&gt; trace_sched_switch() does not fit your needs.<br />
<br />
Ok, but you won't use trace_sched_switch() as a memory tracepoint, as<br />
they represent different things.<br />
<br />
Memory errors are different than CPU errors. So, their tracepoints<br />
will be different.<br />
<br />
&lt;skip&gt;<br />
<br />
&gt; Right, and this is why I'm asking you to have the following tracepoint proto:<br />
&gt; <br />
&gt; +       TP_PROTO(const unsigned int err_type,<br />
&gt; +                const unsigned int mc_index,<br />
&gt; +                const char *error_msg,<br />
&gt; +                const char *label,<br />
&gt; +                const char *location,<br />
&gt; +                const char *detail)<br />
&gt; <br />
&gt; where detail contains all the crap one driver adds for technical people<br />
&gt; to pinpoint where the error is.<br />
&gt; <br />
&gt; And not have _TWO_ detail arguments!<br />
<br />
And what I'm saying is that this should be, instead:<br />
<br />
+ TP_PROTO(const unsigned int err_type,<br />
+          const unsigned int mc_index,<br />
+          const char *error_msg,<br />
+          const char *label,<br />
+          int layer0,<br />
+          int layer1,<br />
+          int layer2,<br />
+          unsigned long pfn,<br />
+          unsigned long offset,<br />
+          unsigned long grain,<br />
+          unsigned long syndrome,<br />
+          const char *driver_detail),<br />
<br />
So, having just one detail argument, filled by the driver, and not<br />
folding &quot;location&quot; and core &quot;details&quot; into strings, but keeping as they<br />
are.<br />
<br />
&gt; <br />
&gt; Btw, the output looks like this here:<br />
&gt; <br />
&gt;            &lt;...&gt;-2723  [001] .N..    89.107045: mc_event: Corrected error: on memory stick &quot;unknown memory&quot; (mc:0 csrow:3 channel:1 page:0x5bac7 offset:0x388 grain:0 syndrome:0xfc5b driver:amd64_edac)<br />
&gt; <br />
&gt; Come to think of it, the &quot;driver:amd64_edac&quot; is not really needed<br />
&gt; because on every single system there's only one EDAC driver running and<br />
&gt; I don't think the fact that we're telling in the tracepoint who detected<br />
&gt; the error is meaningfull information.<br />
&gt; <br />
&gt; Which means, you can remove the EDAC_MOD_STR argument you're passing to<br />
&gt; edac_mc_handle_error() and have one less argument.<br />
<br />
That's what I said you, but you didn't seem to agree, as I understood that<br />
you've required to keep &quot;amd64_edac&quot;  at the trace, due to:<br />
	[<a href="http://markmail.org/message/nr3ooep7gc7mhgdl"  rel="nofollow">markmail.org</a>].<br />
<br />
If you're ok, I'll remove EDAC_MOD_STR argument from the amd64_edac calls<br />
on a separate patch (with can be merged latter with the patch that converted<br />
amd64_edac to the new function calls).<br />
<br />
&gt; <br />
&gt;&gt;&gt;&gt; Also, doing that will avoid the extra effort of joining everything into<br />
&gt;&gt;&gt;&gt; a single string, and then breaking them back into their individual fields<br />
&gt;&gt;&gt;&gt; on userspace.<br />
&gt;&gt;&gt;<br />
&gt;&gt;&gt; I'm being told this is very easy to do in userspace in your garden<br />
&gt;&gt;&gt; variety language.<br />
&gt;&gt;<br />
&gt;&gt; Well, ask the one that told you that to write a parser that will get all <br />
&gt;&gt; EDAC error reports on all drivers, on several kernel versions using dmesg.<br />
&gt; <br />
&gt; Nobody is talking about dmesg - I'm talking about the &quot;const char<br />
&gt; *detail&quot; string in the tracepoint above and how I want it to be a single<br />
&gt; char * so that userspace can read it out and fumble with it the way it<br />
&gt; sees fit.<br />
&gt; <br />
&gt; Having &quot;detail&quot; and &quot;other_detail&quot; is simply misleading and unneeded and<br />
&gt; a clear sign that this ABI is not designed properly yet.<br />
&gt; <br />
&gt; That's it.<br />
<br />
I agree with that.<br />
<br />
It follows a version removing the &quot;core_detail&quot; parameter from the trace.<br />
<br />
I removed the changes at amd64_edac from it. I'll address them on a latter<br />
patch, removing the EDAC_MOD_STR argument from the calls, after we've<br />
done with this patch.<br />
<br />
Regards,<br />
Mauro<br />
<br />
-<br />
<br />
RAS: Add a tracepoint for reporting memory controller events<br />
<br />
From: Mauro Carvalho Chehab &lt;mchehab@redhat.com&gt;<br />
<br />
Add a new tracepoint-based hardware events report method for<br />
reporting Memory Controller events.<br />
<br />
Part of the description bellow is shamelessly copied from Tony<br />
Luck's notes about the Hardware Error BoF during LPC 2010 [1].<br />
Tony, thanks for your notes and discussions to generate the<br />
h/w error reporting requirements.<br />
<br />
[1] [<a href="http://lwn.net/Articles/416669/"  rel="nofollow">lwn.net</a>]<br />
<br />
    We have several subsystems &amp; methods for reporting hardware errors:<br />
<br />
    1) EDAC (&quot;Error Detection and Correction&quot;).  In its original form<br />
    this consisted of a platform specific driver that read topology<br />
    information and error counts from chipset registers and reported<br />
    the results via a sysfs interface.<br />
<br />
    2) mcelog - x86 specific decoding of machine check bank registers<br />
    reporting in binary form via /dev/mcelog. Recent additions make use<br />
    of the APEI extensions that were documented in version 4.0a of the<br />
    ACPI specification to acquire more information about errors without<br />
    having to rely reading chipset registers directly. A user level<br />
    programs decodes into somewhat human readable format.<br />
<br />
    3) drivers/edac/mce_amd.c - this driver hooks into the mcelog path and<br />
    decodes errors reported via machine check bank registers in AMD<br />
    processors to the console log using printk();<br />
<br />
    Each of these mechanisms has a band of followers ... and none<br />
    of them appear to meet all the needs of all users.<br />
<br />
As part of a RAS subsystem, let's encapsulate the memory error hardware<br />
events into a trace facility.<br />
<br />
The tracepoint printk will be displayed like:<br />
<br />
mc_event: (Corrected|Uncorrected|Fatal) error:[error msg] on memory stick &quot;[label]&quot; ([location] [edac_mc detail] [driver_detail])<br />
<br />
Where:<br />
	[error msg] is the driver-specific error message<br />
		    (e. g. &quot;memory read&quot;, &quot;bus error&quot;, ...);<br />
	[location] is the location in terms of memory controller and<br />
		   branch/channel/slot, channel/slot or csrow/channel;<br />
	[label] is the memory stick label;<br />
	[edac_mc detail] describes the address location of the error<br />
			 and the syndrome;<br />
	[driver detail] is driver-specifig error message details,<br />
			when needed/provided (e. g. &quot;area:DMA&quot;, ...)<br />
<br />
For example:<br />
<br />
mc_event: Corrected error:memory read on memory stick &quot;DIMM_1A&quot; (mc:0 channel:0 slot:0 page:0x586b6e offset:0xa66 grain:32 syndrome:0x0 area:DMA)<br />
<br />
Of course, any userspace tools meant to handle errors should not parse<br />
the above data. They should, instead, use the binary fields provided by<br />
the tracepoint, mapping them directly into their Management Information<br />
Base.<br />
<br />
NOTE: The original patch was providing an additional mechanism for<br />
MCA-based trace events that also contained MCA error register data.<br />
However, as no agreement was reached so far for the MCA-based trace<br />
events, for now, let's add events only for memory errors.<br />
A latter patch is planned to change the tracepoint, for those types<br />
of event.<br />
<br />
Cc: Aristeu Rozanski &lt;arozansk@redhat.com&gt;<br />
Cc: Doug Thompson &lt;norsk5@yahoo.com&gt;<br />
Cc: Steven Rostedt &lt;rostedt@goodmis.org&gt;<br />
Cc: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;<br />
Cc: Ingo Molnar &lt;mingo@redhat.com&gt;<br />
Signed-off-by: Mauro Carvalho Chehab &lt;mchehab@redhat.com&gt;<br />
<br />
diff --git a/drivers/edac/edac_core.h b/drivers/edac/edac_core.h<br />
index f06ce9a..eee7360 100644<br />
--- a/drivers/edac/edac_core.h<br />
+++ b/drivers/edac/edac_core.h<br />
@@ -468,7 +468,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,<br />
 			  const int layer2,<br />
 			  const char *msg,<br />
 			  const char *other_detail,<br />
-			  const void *mcelog);<br />
+			  const void *arch_log);<br />
 <br />
 /*<br />
  * edac_device APIs<br />
diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c<br />
index 10f3750..5006461 100644<br />
--- a/drivers/edac/edac_mc.c<br />
+++ b/drivers/edac/edac_mc.c<br />
@@ -33,6 +33,10 @@<br />
 #include &quot;edac_core.h&quot;<br />
 #include &quot;edac_module.h&quot;<br />
 <br />
+#define CREATE_TRACE_POINTS<br />
+#define TRACE_INCLUDE_PATH ../../include/ras<br />
+#include &lt;ras/ras_event.h&gt;<br />
+<br />
 /* lock to memory controller's control array */<br />
 static DEFINE_MUTEX(mem_ctls_mutex);<br />
 static LIST_HEAD(mc_devices);<br />
@@ -384,6 +388,7 @@ struct mem_ctl_info *edac_mc_alloc(unsigned mc_num,<br />
 	 * which will perform kobj unregistration and the actual free<br />
 	 * will occur during the kobject callback operation<br />
 	 */<br />
+<br />
 	return mci;<br />
 }<br />
 EXPORT_SYMBOL_GPL(edac_mc_alloc);<br />
@@ -909,12 +914,12 @@ static void edac_ce_error(struct mem_ctl_info *mci,<br />
 	if (edac_mc_get_log_ce()) {<br />
 		if (other_detail &amp;&amp; *other_detail)<br />
 			edac_mc_printk(mci, KERN_WARNING,<br />
-				       &quot;CE %s on %s (%s%s - %s)\n&quot;,<br />
+				       &quot;CE %s on %s (%s %s - %s)\n&quot;,<br />
 				       msg, label, location,<br />
 				       detail, other_detail);<br />
 		else<br />
 			edac_mc_printk(mci, KERN_WARNING,<br />
-				       &quot;CE %s on %s (%s%s)\n&quot;,<br />
+				       &quot;CE %s on %s (%s %s)\n&quot;,<br />
 				       msg, label, location,<br />
 				       detail);<br />
 	}<br />
@@ -953,12 +958,12 @@ static void edac_ue_error(struct mem_ctl_info *mci,<br />
 	if (edac_mc_get_log_ue()) {<br />
 		if (other_detail &amp;&amp; *other_detail)<br />
 			edac_mc_printk(mci, KERN_WARNING,<br />
-				       &quot;UE %s on %s (%s%s - %s)\n&quot;,<br />
+				       &quot;UE %s on %s (%s %s - %s)\n&quot;,<br />
 			               msg, label, location, detail,<br />
 				       other_detail);<br />
 		else<br />
 			edac_mc_printk(mci, KERN_WARNING,<br />
-				       &quot;UE %s on %s (%s%s)\n&quot;,<br />
+				       &quot;UE %s on %s (%s %s)\n&quot;,<br />
 			               msg, label, location, detail);<br />
 	}<br />
 <br />
@@ -975,6 +980,27 @@ static void edac_ue_error(struct mem_ctl_info *mci,<br />
 }<br />
 <br />
 #define OTHER_LABEL &quot; or &quot;<br />
+<br />
+/**<br />
+ * edac_mc_handle_error - reports a memory event to userspace<br />
+ *<br />
+ * @type:		severity of the error (CE/UE/Fatal)<br />
+ * @mci:		a struct mem_ctl_info pointer<br />
+ * @page_frame_number:	mem page where the error occurred<br />
+ * @offset_in_page:	offset of the error inside the page<br />
+ * @syndrome:		ECC syndrome<br />
+ * @layer0:		Memory layer0 position<br />
+ * @layer1:		Memory layer2 position<br />
+ * @layer2:		Memory layer3 position<br />
+ * @msg:		Message meaningful to the end users that<br />
+ *			explains the event<br />
+ * @other_detail:	Technical details about the event that<br />
+ *			may help hardware manufacturers and<br />
+ *			EDAC developers to analyse the event<br />
+ * @arch_log:		Architecture-specific struct that can<br />
+ *			be used to add extended information to the<br />
+ *			tracepoint, like dumping MCE registers.<br />
+ */<br />
 void edac_mc_handle_error(const enum hw_event_mc_err_type type,<br />
 			  struct mem_ctl_info *mci,<br />
 			  const unsigned long page_frame_number,<br />
@@ -985,7 +1011,7 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,<br />
 			  const int layer2,<br />
 			  const char *msg,<br />
 			  const char *other_detail,<br />
-			  const void *mcelog)<br />
+			  const void *arch_log)<br />
 {<br />
 	/* FIXME: too much for stack: move it to some pre-alocated area */<br />
 	char detail[80], location[80];<br />
@@ -1120,6 +1146,13 @@ void edac_mc_handle_error(const enum hw_event_mc_err_type type,<br />
 			     edac_layer_name[mci-&gt;layers<i>.type],<br />
 			     pos<i>);<br />
 	}<br />
+	if (p &gt; location)<br />
+		*(p - 1) = '\0';<br />
+<br />
+	/* Report the error via the trace interface */<br />
+	trace_mc_event(type, mci-&gt;mc_idx, msg, label, layer0, layer1, layer2,<br />
+		       page_frame_number, offset_in_page, grain, syndrome,<br />
+		       other_detail);<br />
 <br />
 	/* Memory type dependent details about the error */<br />
 	if (type == HW_EVENT_ERR_CORRECTED) {<br />
diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h<br />
new file mode 100644<br />
index 0000000..65835df<br />
--- /dev/null<br />
+++ b/include/ras/ras_event.h<br />
@@ -0,0 +1,100 @@<br />
+#undef TRACE_SYSTEM<br />
+#define TRACE_SYSTEM ras<br />
+#define TRACE_INCLUDE_FILE ras_event<br />
+<br />
+#if !defined(_TRACE_HW_EVENT_MC_H) || defined(TRACE_HEADER_MULTI_READ)<br />
+#define _TRACE_HW_EVENT_MC_H<br />
+<br />
+#include &lt;linux/tracepoint.h&gt;<br />
+#include &lt;linux/edac.h&gt;<br />
+#include &lt;linux/ktime.h&gt;<br />
+<br />
+/*<br />
+ * Hardware Events Report<br />
+ *<br />
+ * Those events are generated when hardware detected a corrected or<br />
+ * uncorrected event, and are meant to replace the current API to report<br />
+ * errors defined on both EDAC and MCE subsystems.<br />
+ *<br />
+ * FIXME: Add events for handling memory errors originated from the<br />
+ *        MCE subsystem.<br />
+ */<br />
+<br />
+/*<br />
+ * Hardware-independent Memory Controller specific events<br />
+ */<br />
+<br />
+/*<br />
+ * Default error mechanisms for Memory Controller errors (CE and UE)<br />
+ */<br />
+TRACE_EVENT(mc_event,<br />
+<br />
+	TP_PROTO(const unsigned int err_type,<br />
+		 const unsigned int mc_index,<br />
+		 const char *error_msg,<br />
+		 const char *label,<br />
+		 int layer0,<br />
+		 int layer1,<br />
+		 int layer2,<br />
+		 unsigned long pfn,<br />
+		 unsigned long offset,<br />
+		 unsigned long grain,<br />
+		 unsigned long syndrome,<br />
+		 const char *driver_detail),<br />
+<br />
+	TP_ARGS(err_type, mc_index, error_msg, label, layer0, layer1, layer2,<br />
+		pfn, offset, grain, syndrome, driver_detail),<br />
+<br />
+	TP_STRUCT__entry(<br />
+		__field(	unsigned int,	err_type		)<br />
+		__field(	unsigned int,	mc_index		)<br />
+		__string(	msg,		error_msg		)<br />
+		__string(	label,		label			)<br />
+		__field(	int,		layer0			)<br />
+		__field(	int,		layer1			)<br />
+		__field(	int,		layer2			)<br />
+		__field(	int,		pfn			)<br />
+		__field(	int,		offset			)<br />
+		__field(	int,		grain			)<br />
+		__field(	int,		syndrome		)<br />
+		__string(	driver_detail,	driver_detail		)<br />
+	),<br />
+<br />
+	TP_fast_assign(<br />
+		__entry-&gt;err_type		= err_type;<br />
+		__entry-&gt;mc_index		= mc_index;<br />
+		__assign_str(msg, error_msg);<br />
+		__assign_str(label, label);<br />
+		__entry-&gt;layer0			= layer0;<br />
+		__entry-&gt;layer1			= layer1;<br />
+		__entry-&gt;layer2			= layer2;<br />
+		__entry-&gt;pfn			= pfn;<br />
+		__entry-&gt;offset			= offset;<br />
+		__entry-&gt;grain			= grain;<br />
+		__entry-&gt;syndrome		= syndrome;<br />
+		__assign_str(driver_detail, driver_detail);<br />
+	),<br />
+<br />
+	TP_printk(&quot;%s error:%s%s on memory stick \&quot;%s\&quot; (mc:%d location:%d:%d:%d page:0x%08x offset:0x%08x grain:%d syndrome:0x%08x%s%s)&quot;,<br />
+		  (__entry-&gt;err_type == HW_EVENT_ERR_CORRECTED) ? &quot;Corrected&quot; :<br />
+			((__entry-&gt;err_type == HW_EVENT_ERR_FATAL) ?<br />
+			&quot;Fatal&quot; : &quot;Uncorrected&quot;),<br />
+		  ((char *)__get_str(msg))[0] ? &quot; &quot; : &quot;&quot;,<br />
+		  __get_str(msg),<br />
+		  __get_str(label),<br />
+		  __entry-&gt;mc_index,<br />
+		  __entry-&gt;layer0,<br />
+		  __entry-&gt;layer1,<br />
+		  __entry-&gt;layer2,<br />
+		  __entry-&gt;pfn,<br />
+		  __entry-&gt;offset,<br />
+		  __entry-&gt;grain,<br />
+		  __entry-&gt;syndrome,<br />
+		  ((char *)__get_str(driver_detail))[0] ? &quot; &quot; : &quot;&quot;,<br />
+		  __get_str(driver_detail))<br />
+);<br />
+<br />
+#endif /* _TRACE_HW_EVENT_MC_H */<br />
+<br />
+/* This part must be outside protection */<br />
+#include &lt;trace/define_trace.h&gt;<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]</i></i>]]></description>
            <dc:creator>Mauro Carvalho Chehab</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:33:09 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?21,1071644,1085019#msg-1085019</guid>
            <title>Re: [RESEND,PATCH] DCA, x86: fix invalid memory access in DCA core</title>
            <link>http://choon.net/forum/read.php?21,1071644,1085019#msg-1085019</link>
            <description><![CDATA[ On 05/18/2012 10:10 PM, Sosnowski, Maciej wrote:<br />
&gt; On Thu, May 07, May 10, 2012 3:59 AM, Jiang Liu &lt;liuj97@gmail.com&gt; wrote:<br />
&gt;&gt;<br />
&gt;&gt; Hi Maciej,<br />
&gt;&gt; 	I feel we may also need to tune the multiple IOH support in DCA.<br />
&gt;&gt; Multiple IOH support is disabled for CB3.0 devices, how about CB3.1 devices<br />
&gt;&gt; in Ivrbridge or SandyBridge? Does the hardware limitation still exist? Or<br />
&gt;&gt; could we support multiple IOHs with IvyBridge and SandyBridge?<br />
&gt;&gt; 	If multiple IOH is supported, I think we should move the logic to<br />
&gt;&gt; disable multiple IOH support for CB3.0 from DCA core into ioatdma. I have<br />
&gt;&gt; also prepared two patches for that two.<br />
&gt;&gt; 	Thanks!<br />
&gt;&gt;<br />
&gt; <br />
&gt; At this point I do not think we would need to tune multiple IOH for DCA.<br />
&gt; The limitation you mention applies only to CB3.0. I do not think DCA is supported<br />
&gt; with Sandy Bridge / Ivy Bridge regardless of multi-IOH case but let me confirm it<br />
&gt; yet.<br />
It seems that Intel introduces DDIO technology for IvyBridge. Does it replace DCA<br />
technology on new platforms?<br />
Thanks!<br />
<br />
&gt; <br />
&gt; Thanks,<br />
&gt; Maciej<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"  rel="nofollow">vger.kernel.org</a>]<br />
Please read the FAQ at  [<a href="http://www.tux.org/lkml/"  rel="nofollow">www.tux.org</a>]]]></description>
            <dc:creator>Jiang Liu</dc:creator>
            <category>Linux Kernel</category>
            <pubDate>Fri, 18 May 2012 22:32:09 +0800</pubDate>
        </item>
        <item>
            <guid>http://choon.net/forum/read.php?22,1084987,1085017#msg-1085017</guid>
            <title>Re: [Xen-devel] [PATCH v6 01/11] libxl: make libxl_device_disk_local_attach/detach internal functions</title>
            <link>http://choon.net/forum/read.php?22,1084987,1085017#msg-1085017</link>
            <description><![CDATA[ Stefano Stabellini writes (&quot;[PATCH v6 01/11] libxl: make libxl_device_disk_local_attach/detach internal functions&quot;):<br />
&gt; Changes in v5:<br />
&gt; <br />
&gt; - remove _hidden from the implementation.<br />
&gt; <br />
&gt; Signed-off-by: Stefano Stabellini &lt;stefano.stabellini@eu.citrix.com&gt;<br />
&gt; Acked-by: Ian Campbell &lt;ian.campbell@citrix.com&gt;<br />
<br />
Acked-by: Ian Jackson &lt;ian.jackson@eu.citrix.com&gt;<br />
<br />
_______________________________________________<br />
Xen-devel mailing list<br />
<a href="mailto:&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;">&#88;&#101;&#110;&#45;&#100;&#101;&#118;&#101;&#108;&#64;&#108;&#105;&#115;&#116;&#115;&#46;&#120;&#101;&#110;&#46;&#111;&#114;&#103;</a><br />
[<a href="http://lists.xen.org/xen-devel"  rel="nofollow">lists.xen.org</a>]]]></description>
            <dc:creator>Ian Jackson</dc:creator>
            <category>Xen-devel</category>
            <pubDate>Fri, 18 May 2012 22:28:03 +0800</pubDate>
        </item>
    </channel>
</rss>

