All of lore.kernel.org
 help / color / mirror / Atom feed
* Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
@ 2015-04-17  2:36 신정섭
  2015-04-17  9:49 ` Ian Campbell
  0 siblings, 1 reply; 14+ messages in thread
From: 신정섭 @ 2015-04-17  2:36 UTC (permalink / raw)
  To: xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 19523 bytes --]

 
I'm studying periperal irq routing to Domain0's vCPU
 
I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
So Xen can select vcpu0 or vcpu1 to inject periperal irq.
 
I tested periperal routing on Xen 4.4.1 and it works well.
But I tested periperal routing on Xen 4.5.0 but irq dosen't works well.
 
So I tested very simple periperal routing code like this.
'flag' is grobal variable. 
 
* In "do_IRQ" function on Xen 4.4.1 
-----------------------------------------------------
- from
if ( desc->status & IRQ_GUEST )
{
struct domain *d = action->dev_id;
 
desc->handler->end(desc);
 
desc->status = IRQ_INPROGRESS;
desc->arch.eoi_cpu = smp_processor_id();
 
/* XXX: inject irq into all guest vcpus */
vgic_vcpu_inject_irq(d->vcpu[0], irq, 0);
goto out_no_end;
}
-to if ( desc->status & IRQ_GUEST ) {
struct domain *d = action->dev_id;
 
desc->handler->end(desc);
 
desc->status = IRQ_INPROGRESS;
desc->arch.eoi_cpu = smp_processor_id();
 
/* XXX: inject irq into all guest vcpus */
vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq, 0);
goto out_no_end;
}
-----------------------------------------------------
 
* In "vgic_vcpu_inject_spi" function on Xen 4.5.0 
-----------------------------------------------------
-from
void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
{
struct vcpu *v;
 
/* the IRQ needs to be an SPI */
ASSERT(irq >= 32 && irq <= gic_number_lines());
 
v = vgic_get_target_vcpu(d->vcpu[0], irq);
vgic_vcpu_inject_irq(v, irq);
}
-tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
{
struct vcpu *v;
 
/* the IRQ needs to be an SPI */
ASSERT(irq >= 32 && irq <= gic_number_lines());
 
vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq);
}
-----------------------------------------------------
so periperal irq injected to Domain0's vCPU0 or vCPU1.
 
on Xen 4.4.1 it work well and i can confirm 
periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts command.
 
* cat /proc/interrupts command on Xen 4.4.1
--------------------------------------------------
CPU0 CPU1 
27: 8690 8558 GIC 27 arch_timer
31: 34 1 GIC 31 events
65: 0 0 GIC 65 10800000.mdma
66: 0 0 GIC 66 121a0000.pdma
67: 0 0 GIC 67 121b0000.pdma
74: 0 0 GIC 74 101d0000.watchdog
75: 0 0 GIC 75 s3c2410-rtc alarm
76: 0 0 GIC 76 s3c2410-rtc tick
77: 0 0 GIC 77 13400000.pinctrl
78: 0 0 GIC 78 11400000.pinctrl
79: 0 0 GIC 79 3860000.pinctrl
82: 0 0 GIC 82 10d10000.pinctrl
88: 229 233 GIC 88 12c60000.i2c
90: 0 0 GIC 90 12c80000.i2c
91: 0 0 GIC 91 12c90000.i2c
96: 0 0 GIC 96 12ce0000.i2c
97: 0 0 GIC 97 10060000.tmu
103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
104: 0 0 GIC 104 xhci-hcd:usb1
107: 710 710 GIC 107 dw-mci
109: 9602 9610 GIC 109 dw-mci
156: 0 0 GIC 156 11c10000.mdma
160: 0 0 xen-dyn-event xenbus
183: 1 0 exynos_wkup_irq_chip 2 s5m8767
184: 33 0 xen-percpu-virq hvc_console
185: 0 0 s5m8767 12 rtc-alarm0
186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
IPI0: 0 0 CPU wakeup interrupts
IPI1: 0 0 Timer broadcast interrupts
IPI2: 6660 6920 Rescheduling interrupts
IPI3: 0 0 Function call interrupts
IPI4: 9 3 Single function call interrupts
IPI5: 0 0 CPU stop interrupts
IPI6: 0 0 IRQ work interrupts
IPI7: 0 0 completion interrupts
 
Err: 0
-----------------------------------------------------
 
But on Xen 4.5.0, Dom0 can not booting.
below is domain0's booting message on Xen 4.5.0
 
* domain0's booting message on Xen 4.5.0
-----------------------------------------------------
[ 3.900830] usb 3-3.2: new high-speed USB device number 3 using exynos-ehci
[ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3, idProduct=0610
[ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 4.025075] usb 3-3.2: Product: USB2.0 Hub
[ 4.030156] hub 3-3.2:1.0: USB hub found
[ 4.033555] hub 3-3.2:1.0: 4 ports detected
[ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using exynos-ehci
[ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95, idProduct=772a
[ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4.419921] usb 3-3.2.4: Product: AX88772 
[ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
[ 4.429393] usb 3-3.2.4: SerialNumber: 000001
[ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized): invalid hw address, using random
[ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
[ 7.925810] kjournald starting. Commit interval 5 seconds
[ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
[ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
[ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data mode
[ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
[ 7.963607] devtmpfs: mounted
[ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
[ 8.156858] random: init urandom read with 86 bits of entropy available
[ 8.378207] init: ureadahead main process (1407) terminated with status 5
[ 12.790491] random: nonblocking pool is initialized
[ 240.105444] INFO: task kjournald:1402 blocked for more than 120 seconds.
[ 240.110770] Not tainted 3.18.3-svn1 #2
[ 240.115105] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
[ 240.129430] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule+0x70/0x9c)
[ 240.136811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>] (bit_wait_io+0x34/0x58)
[ 240.144273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>] (__wait_on_bit+0x80/0xb8)
[ 240.151912] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>] (out_of_line_wait_on_bit+0x6c/0x74)
[ 240.160593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>] (__sync_dirty_buffer+0xc0/0xec)
[ 240.169797] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>] (journal_commit_transaction+0xfc8/0x139c)
[ 240.179518] [<c0182244>] (journal_commit_transaction) from [<c0184e48>] (kjournald+0xe4/0x268)
[ 240.188206] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread+0xd8/0xf0)
[ 240.195137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork+0x14/0x3c)
[ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than 120 seconds.
[ 240.209712] Not tainted 3.18.3-svn1 #2
[ 240.214051] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
[ 240.228385] [<c04aa028>] (__schedule) from [<c01848cc>] (log_wait_commit+0xd8/0x120)
[ 240.236203] [<c01848cc>] (log_wait_commit) from [<c00f0f44>] (do_fsync+0x50/0x78)
[ 240.243746] [<c00f0f44>] (do_fsync) from [<c000f120>] (ret_fast_syscall+0x0/0x30)
[ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120 seconds.
[ 240.258417] Not tainted 3.18.3-svn1 #2
[ 240.262746] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
[ 240.277076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule+0x70/0x9c)
[ 240.284454] [<c04aa5f0>] (io_schedule) from [<c04aaccc>] (bit_wait_io+0x34/0x58)
[ 240.291920] [<c04aaccc>] (bit_wait_io) from [<c04aa920>] (__wait_on_bit+0x80/0xb8)
[ 240.299556] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>] (out_of_line_wait_on_bit+0x6c/0x74)
[ 240.308238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>] (__bread_gfp+0xa8/0xec)
[ 240.316747] [<c00f4f04>] (__bread_gfp) from [<c0127c14>] (ext3_get_branch+0x88/0x14c)
[ 240.324656] [<c0127c14>] (ext3_get_branch) from [<c0129800>] (ext3_get_blocks_handle+0x90/0xa40)
[ 240.333498] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>] (ext3_get_block+0x9c/0xdc)
[ 240.342180] [<c012a24c>] (ext3_get_block) from [<c00fce08>] (do_mpage_readpage+0x470/0x7ac)
[ 240.350605] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>] (mpage_readpages+0xc8/0x118)
[ 240.359016] [<c00fd20c>] (mpage_readpages) from [<c00943d8>] (__do_page_cache_readahead+0x1b0/0x260)
[ 240.368224] [<c00943d8>] (__do_page_cache_readahead) from [<c008c0fc>] (filemap_fault+0x3ac/0x474)
[ 240.377247] [<c008c0fc>] (filemap_fault) from [<c00aa310>] (__do_fault+0x34/0x88)
[ 240.384798] [<c00aa310>] (__do_fault) from [<c00abfc8>] (do_cow_fault.isra.95+0x5c/0x17c)
[ 240.393044] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>] (handle_mm_fault+0x410/0x8d8)
[ 240.401815] [<c00add2c>] (handle_mm_fault) from [<c0019140>] (do_page_fault+0x194/0x280)
[ 240.409966] [<c0019140>] (do_page_fault) from [<c0008560>] (do_DataAbort+0x38/0x9c)
[ 240.417691] [<c0008560>] (do_DataAbort) from [<c0012a18>] (__dabt_svc+0x38/0x60)
[ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
[ 240.430272] 7e60: 00037044 00000fb4
[ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0 00037044 cba3b900 cae46c00
[ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4 c020cb84 20000013 ffffffff
[ 240.455028] [<c0012a18>] (__dabt_svc) from [<c020cb84>] (__clear_user_std+0x34/0x64)
[ 360.460441] INFO: task kjournald:1402 blocked for more than 120 seconds.
[ 360.465763] Not tainted 3.18.3-svn1 #2
[ 360.470089] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
[ 360.484419] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule+0x70/0x9c)
[ 360.491805] [<c04aa5f0>] (io_schedule) from [<c04aaccc>] (bit_wait_io+0x34/0x58)
[ 360.499268] [<c04aaccc>] (bit_wait_io) from [<c04aa920>] (__wait_on_bit+0x80/0xb8)
[ 360.506908] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>] (out_of_line_wait_on_bit+0x6c/0x74)
[ 360.515586] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>] (__sync_dirty_buffer+0xc0/0xec)
[ 360.524789] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>] (journal_commit_transaction+0xfc8/0x139c)
[ 360.534512] [<c0182244>] (journal_commit_transaction) from [<c0184e48>] (kjournald+0xe4/0x268)
[ 360.543201] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread+0xd8/0xf0)
[ 360.550132] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork+0x14/0x3c)
[ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than 120 seconds.
[ 360.564708] Not tainted 3.18.3-svn1 #2
[ 360.569047] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
[ 360.583380] [<c04aa028>] (__schedule) from [<c01848cc>] (log_wait_commit+0xd8/0x120)
[ 360.591197] [<c01848cc>] (log_wait_commit) from [<c00f0f44>] (do_fsync+0x50/0x78)
[ 360.598741] [<c00f0f44>] (do_fsync) from [<c000f120>] (ret_fast_syscall+0x0/0x30)
[ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120 seconds.
[ 360.613412] Not tainted 3.18.3-svn1 #2
[ 360.617742] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
[ 360.632071] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule+0x70/0x9c)
[ 360.639449] [<c04aa5f0>] (io_schedule) from [<c04aaccc>] (bit_wait_io+0x34/0x58)
[ 360.646916] [<c04aaccc>] (bit_wait_io) from [<c04aa920>] (__wait_on_bit+0x80/0xb8)
[ 360.654552] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>] (out_of_line_wait_on_bit+0x6c/0x74)
[ 360.663234] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>] (__bread_gfp+0xa8/0xec)
[ 360.671742] [<c00f4f04>] (__bread_gfp) from [<c0127c14>] (ext3_get_branch+0x88/0x14c)
[ 360.679651] [<c0127c14>] (ext3_get_branch) from [<c0129800>] (ext3_get_blocks_handle+0x90/0xa40)
[ 360.688494] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>] (ext3_get_block+0x9c/0xdc)
[ 360.697174] [<c012a24c>] (ext3_get_block) from [<c00fce08>] (do_mpage_readpage+0x470/0x7ac)
[ 360.705600] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>] (mpage_readpages+0xc8/0x118)
[ 360.714011] [<c00fd20c>] (mpage_readpages) from [<c00943d8>] (__do_page_cache_readahead+0x1b0/0x260)
[ 360.723217] [<c00943d8>] (__do_page_cache_readahead) from [<c008c0fc>] (filemap_fault+0x3ac/0x474)
[ 360.732243] [<c008c0fc>] (filemap_fault) from [<c00aa310>] (__do_fault+0x34/0x88)
[ 360.739792] [<c00aa310>] (__do_fault) from [<c00abfc8>] (do_cow_fault.isra.95+0x5c/0x17c)
[ 360.748040] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>] (handle_mm_fault+0x410/0x8d8)
[ 360.756807] [<c00add2c>] (handle_mm_fault) from [<c0019140>] (do_page_fault+0x194/0x280)
[ 360.764961] [<c0019140>] (do_page_fault) from [<c0008560>] (do_DataAbort+0x38/0x9c)
[ 360.772688] [<c0008560>] (do_DataAbort) from [<c0012a18>] (__dabt_svc+0x38/0x60)
[ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
[ 360.785269] 7e60: 00037044 00000fb4
[ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0 00037044 cba3b900 cae46c00
[ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4 c020cb84 20000013 ffffffff
[ 360.810023] [<c0012a18>] (__dabt_svc) from [<c020cb84>] (__clear_user_std+0x34/0x64)
[ 480.815443] INFO: task kjournald:1402 blocked for more than 120 seconds.
[ 480.820838] Not tainted 3.18.3-svn1 #2
[ 480.825094] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
[ 480.839427] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule+0x70/0x9c)
[ 480.846811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>] (bit_wait_io+0x34/0x58)
[ 480.854273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>] (__wait_on_bit+0x80/0xb8)
[ 480.861914] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>] (out_of_line_wait_on_bit+0x6c/0x74)
[ 480.870593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>] (__sync_dirty_buffer+0xc0/0xec)
[ 480.879795] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>] (journal_commit_transaction+0xfc8/0x139c)
[ 480.889518] [<c0182244>] (journal_commit_transaction) from [<c0184e48>] (kjournald+0xe4/0x268)
[ 480.898196] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread+0xd8/0xf0)
[ 480.905137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork+0x14/0x3c)
[ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than 120 seconds.
[ 480.919713] Not tainted 3.18.3-svn1 #2
[ 480.924052] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
[ 480.938392] [<c04aa028>] (__schedule) from [<c01848cc>] (log_wait_commit+0xd8/0x120)
[ 480.946200] [<c01848cc>] (log_wait_commit) from [<c00f0f44>] (do_fsync+0x50/0x78)
[ 480.953747] [<c00f0f44>] (do_fsync) from [<c000f120>] (ret_fast_syscall+0x0/0x30)
[ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120 seconds.
[ 480.968417] Not tainted 3.18.3-svn1 #2
[ 480.972747] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
[ 480.987076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule+0x70/0x9c)
[ 480.994473] [<c04aa5f0>] (io_schedule) from [<c04aaccc>] (bit_wait_io+0x34/0x58)
[ 481.001922] [<c04aaccc>] (bit_wait_io) from [<c04aa920>] (__wait_on_bit+0x80/0xb8)
[ 481.009557] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>] (out_of_line_wait_on_bit+0x6c/0x74)
[ 481.018238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>] (__bread_gfp+0xa8/0xec)
[ 481.026746] [<c00f4f04>] (__bread_gfp) from [<c0127c14>] (ext3_get_branch+0x88/0x14c)
[ 481.034644] [<c0127c14>] (ext3_get_branch) from [<c0129800>] (ext3_get_blocks_handle+0x90/0xa40)
[ 481.043500] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>] (ext3_get_block+0x9c/0xdc)
[ 481.052180] [<c012a24c>] (ext3_get_block) from [<c00fce08>] (do_mpage_readpage+0x470/0x7ac)
[ 481.060606] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>] (mpage_readpages+0xc8/0x118)
[ 481.069015] [<c00fd20c>] (mpage_readpages) from [<c00943d8>] (__do_page_cache_readahead+0x1b0/0x260)
[ 481.078223] [<c00943d8>] (__do_page_cache_readahead) from [<c008c0fc>] (filemap_fault+0x3ac/0x474)
[ 481.087247] [<c008c0fc>] (filemap_fault) from [<c00aa310>] (__do_fault+0x34/0x88)
[ 481.094797] [<c00aa310>] (__do_fault) from [<c00abfc8>] (do_cow_fault.isra.95+0x5c/0x17c)
[ 481.103045] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>] (handle_mm_fault+0x410/0x8d8)
[ 481.111813] [<c00add2c>] (handle_mm_fault) from [<c0019140>] (do_page_fault+0x194/0x280)
[ 481.119966] [<c0019140>] (do_page_fault) from [<c0008560>] (do_DataAbort+0x38/0x9c)
[ 481.127692] [<c0008560>] (do_DataAbort) from [<c0012a18>] (__dabt_svc+0x38/0x60)
[ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
[ 481.140273] 7e60: 00037044 00000fb4
[ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0 00037044 cba3b900 cae46c00
[ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4 c020cb84 20000013 ffffffff
[ 481.165028] [<c0012a18>] (__dabt_svc) from [<c020cb84>] (__clear_user_std+0x34/0x64)
[ 601.170443] INFO: task kjournald:1402 blocked for more than 120 seconds.
[ 601.175773] Not tainted 3.18.3-svn1 #2
[ 601.180099] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
[ 601.194433] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule+0x70/0x9c)
[ 601.201816] [<c04aa5f0>] (io_schedule) from [<c04aaccc>] (bit_wait_io+0x34/0x58)
[ 601.209278] [<c04aaccc>] (bit_wait_io) from [<c04aa920>] (__wait_on_bit+0x80/0xb8)
[ 601.216918] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>] (out_of_line_wait_on_bit+0x6c/0x74)
[ 601.225598] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>] (__sync_dirty_buffer+0xc0/0xec)
[ 601.234800] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>] (journal_commit_transaction+0xfc8/0x139c)
[ 601.244535] [<c0182244>] (journal_commit_transaction) from [<c0184e48>] (kjournald+0xe4/0x268)
[ 601.253200] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread+0xd8/0xf0)
[ 601.260142] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork+0x14/0x3c)
---------------------------------------------------------------------------------
 
Accroding to log.
It seems that periperal irq arn't injected properly.
 
I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any irq. right?
 
This is Bug??
or Intended on Xen 4.5.x?

[-- Attachment #1.2: Type: text/html, Size: 21853 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-17  2:36 Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x? 신정섭
@ 2015-04-17  9:49 ` Ian Campbell
  2015-04-17 18:29   ` 신정섭
  0 siblings, 1 reply; 14+ messages in thread
From: Ian Campbell @ 2015-04-17  9:49 UTC (permalink / raw)
  To: 신정섭; +Cc: Stefano Stabellini, xen-devel

On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
>  
> 
> I'm studying periperal irq routing to Domain0's vCPU

What do you mean by "peripheral irq routing"? Do you mean supporting the
guest writing to GICD_ITARGER to cause an interrupt to be injected to a
specific vcpu?

I thought that was supposed to work, Stefano?

> 
>  
> 
> I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
> 
> So Xen can select vcpu0 or vcpu1 to inject periperal irq.
> 
>  
> 
> I tested periperal routing on Xen 4.4.1 and it works well.
> 
> But I tested periperal routing on Xen 4.5.0 but irq dosen't works
> well.
> 
>  
> 
> So I tested very simple periperal routing code like this.
> 
> 'flag' is grobal variable. 
> 
>  
> 
> * In "do_IRQ" function on Xen 4.4.1 
> 
> -----------------------------------------------------
> 
> - from
> 
> if ( desc->status & IRQ_GUEST )
> 
> {
> 
> struct domain *d = action->dev_id;
> 
>  
> 
> desc->handler->end(desc);
> 
>  
> 
> desc->status = IRQ_INPROGRESS;
> 
> desc->arch.eoi_cpu = smp_processor_id();
> 
>  
> 
> /* XXX: inject irq into all guest vcpus */
> 
> vgic_vcpu_inject_irq(d->vcpu[0], irq, 0);
> 
> goto out_no_end;
> 
> }
> 
> -to if ( desc->status & IRQ_GUEST ) {
> 
> struct domain *d = action->dev_id;
> 
>  
> 
> desc->handler->end(desc);
> 
>  
> 
> desc->status = IRQ_INPROGRESS;
> 
> desc->arch.eoi_cpu = smp_processor_id();
> 
>  
> 
> /* XXX: inject irq into all guest vcpus */
> 
> vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq, 0);
> 
> goto out_no_end;
> 
> }
> 
> -----------------------------------------------------
> 
>  
> 
> * In "vgic_vcpu_inject_spi" function on Xen 4.5.0 
> 
> -----------------------------------------------------
> 
> -from
> 
> void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> 
> {
> 
> struct vcpu *v;
> 
>  
> 
> /* the IRQ needs to be an SPI */
> 
> ASSERT(irq >= 32 && irq <= gic_number_lines());
> 
>  
> 
> v = vgic_get_target_vcpu(d->vcpu[0], irq);
> 
> vgic_vcpu_inject_irq(v, irq);
> 
> }
> 
> -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> 
> {
> 
> struct vcpu *v;
> 
>  
> 
> /* the IRQ needs to be an SPI */
> 
> ASSERT(irq >= 32 && irq <= gic_number_lines());
> 
>  
> 
> vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq);
> 
> }
> 
> -----------------------------------------------------
> 
> so periperal irq injected to Domain0's vCPU0 or vCPU1.
> 
>  
> 
> on Xen 4.4.1 it work well and i can confirm 
> 
> periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
> command.
> 
>  
> 
> * cat /proc/interrupts command on Xen 4.4.1
> 
> --------------------------------------------------
> 
> CPU0 CPU1 
> 
> 27: 8690 8558 GIC 27 arch_timer
> 
> 31: 34 1 GIC 31 events
> 
> 65: 0 0 GIC 65 10800000.mdma
> 
> 66: 0 0 GIC 66 121a0000.pdma
> 
> 67: 0 0 GIC 67 121b0000.pdma
> 
> 74: 0 0 GIC 74 101d0000.watchdog
> 
> 75: 0 0 GIC 75 s3c2410-rtc alarm
> 
> 76: 0 0 GIC 76 s3c2410-rtc tick
> 
> 77: 0 0 GIC 77 13400000.pinctrl
> 
> 78: 0 0 GIC 78 11400000.pinctrl
> 
> 79: 0 0 GIC 79 3860000.pinctrl
> 
> 82: 0 0 GIC 82 10d10000.pinctrl
> 
> 88: 229 233 GIC 88 12c60000.i2c
> 
> 90: 0 0 GIC 90 12c80000.i2c
> 
> 91: 0 0 GIC 91 12c90000.i2c
> 
> 96: 0 0 GIC 96 12ce0000.i2c
> 
> 97: 0 0 GIC 97 10060000.tmu
> 
> 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
> 
> 104: 0 0 GIC 104 xhci-hcd:usb1
> 
> 107: 710 710 GIC 107 dw-mci
> 
> 109: 9602 9610 GIC 109 dw-mci
> 
> 156: 0 0 GIC 156 11c10000.mdma
> 
> 160: 0 0 xen-dyn-event xenbus
> 
> 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
> 
> 184: 33 0 xen-percpu-virq hvc_console
> 
> 185: 0 0 s5m8767 12 rtc-alarm0
> 
> 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
> 
> 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
> 
> 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
> 
> 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
> 
> 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
> 
> 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
> 
> IPI0: 0 0 CPU wakeup interrupts
> 
> IPI1: 0 0 Timer broadcast interrupts
> 
> IPI2: 6660 6920 Rescheduling interrupts
> 
> IPI3: 0 0 Function call interrupts
> 
> IPI4: 9 3 Single function call interrupts
> 
> IPI5: 0 0 CPU stop interrupts
> 
> IPI6: 0 0 IRQ work interrupts
> 
> IPI7: 0 0 completion interrupts
> 
>  
> 
> Err: 0
> 
> -----------------------------------------------------
> 
>  
> 
> But on Xen 4.5.0, Dom0 can not booting.
> 
> below is domain0's booting message on Xen 4.5.0
> 
>  
> 
> * domain0's booting message on Xen 4.5.0
> 
> -----------------------------------------------------
> 
> [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
> exynos-ehci
> 
> [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
> idProduct=0610
> 
> [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
> SerialNumber=0
> 
> [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
> 
> [ 4.030156] hub 3-3.2:1.0: USB hub found
> 
> [ 4.033555] hub 3-3.2:1.0: 4 ports detected
> 
> [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
> exynos-ehci
> 
> [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
> idProduct=772a
> 
> [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
> SerialNumber=3
> 
> [ 4.419921] usb 3-3.2.4: Product: AX88772 
> 
> [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
> 
> [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
> 
> [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
> invalid hw address, using random
> 
> [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
> usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
> 
> [ 7.925810] kjournald starting. Commit interval 5 seconds
> 
> [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
> 
> [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
> 
> [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
> mode
> 
> [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
> 
> [ 7.963607] devtmpfs: mounted
> 
> [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
> 
> [ 8.156858] random: init urandom read with 86 bits of entropy
> available
> 
> [ 8.378207] init: ureadahead main process (1407) terminated with
> status 5
> 
> [ 12.790491] random: nonblocking pool is initialized
> 
> [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
> seconds.
> 
> [ 240.110770] Not tainted 3.18.3-svn1 #2
> 
> [ 240.115105] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
> 
> [ 240.129430] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> +0x70/0x9c)
> 
> [ 240.136811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> (bit_wait_io+0x34/0x58)
> 
> [ 240.144273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> (__wait_on_bit+0x80/0xb8)
> 
> [ 240.151912] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> (out_of_line_wait_on_bit+0x6c/0x74)
> 
> [ 240.160593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> (__sync_dirty_buffer+0xc0/0xec)
> 
> [ 240.169797] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> (journal_commit_transaction+0xfc8/0x139c)
> 
> [ 240.179518] [<c0182244>] (journal_commit_transaction) from
> [<c0184e48>] (kjournald+0xe4/0x268)
> 
> [ 240.188206] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> +0xd8/0xf0)
> 
> [ 240.195137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> +0x14/0x3c)
> 
> [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
> 120 seconds.
> 
> [ 240.209712] Not tainted 3.18.3-svn1 #2
> 
> [ 240.214051] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> 
> [ 240.228385] [<c04aa028>] (__schedule) from [<c01848cc>]
> (log_wait_commit+0xd8/0x120)
> 
> [ 240.236203] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> (do_fsync+0x50/0x78)
> 
> [ 240.243746] [<c00f0f44>] (do_fsync) from [<c000f120>]
> (ret_fast_syscall+0x0/0x30)
> 
> [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
> seconds.
> 
> [ 240.258417] Not tainted 3.18.3-svn1 #2
> 
> [ 240.262746] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
> 
> [ 240.277076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> +0x70/0x9c)
> 
> [ 240.284454] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> (bit_wait_io+0x34/0x58)
> 
> [ 240.291920] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> (__wait_on_bit+0x80/0xb8)
> 
> [ 240.299556] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> (out_of_line_wait_on_bit+0x6c/0x74)
> 
> [ 240.308238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> (__bread_gfp+0xa8/0xec)
> 
> [ 240.316747] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> (ext3_get_branch+0x88/0x14c)
> 
> [ 240.324656] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> (ext3_get_blocks_handle+0x90/0xa40)
> 
> [ 240.333498] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> (ext3_get_block+0x9c/0xdc)
> 
> [ 240.342180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> (do_mpage_readpage+0x470/0x7ac)
> 
> [ 240.350605] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> (mpage_readpages+0xc8/0x118)
> 
> [ 240.359016] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> (__do_page_cache_readahead+0x1b0/0x260)
> 
> [ 240.368224] [<c00943d8>] (__do_page_cache_readahead) from
> [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> 
> [ 240.377247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> (__do_fault+0x34/0x88)
> 
> [ 240.384798] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> (do_cow_fault.isra.95+0x5c/0x17c)
> 
> [ 240.393044] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> (handle_mm_fault+0x410/0x8d8)
> 
> [ 240.401815] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> (do_page_fault+0x194/0x280)
> 
> [ 240.409966] [<c0019140>] (do_page_fault) from [<c0008560>]
> (do_DataAbort+0x38/0x9c)
> 
> [ 240.417691] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> (__dabt_svc+0x38/0x60)
> 
> [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> 
> [ 240.430272] 7e60: 00037044 00000fb4
> 
> [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> 00037044 cba3b900 cae46c00
> 
> [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> c020cb84 20000013 ffffffff
> 
> [ 240.455028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> (__clear_user_std+0x34/0x64)
> 
> [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
> seconds.
> 
> [ 360.465763] Not tainted 3.18.3-svn1 #2
> 
> [ 360.470089] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
> 
> [ 360.484419] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> +0x70/0x9c)
> 
> [ 360.491805] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> (bit_wait_io+0x34/0x58)
> 
> [ 360.499268] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> (__wait_on_bit+0x80/0xb8)
> 
> [ 360.506908] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> (out_of_line_wait_on_bit+0x6c/0x74)
> 
> [ 360.515586] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> (__sync_dirty_buffer+0xc0/0xec)
> 
> [ 360.524789] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> (journal_commit_transaction+0xfc8/0x139c)
> 
> [ 360.534512] [<c0182244>] (journal_commit_transaction) from
> [<c0184e48>] (kjournald+0xe4/0x268)
> 
> [ 360.543201] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> +0xd8/0xf0)
> 
> [ 360.550132] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> +0x14/0x3c)
> 
> [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
> 120 seconds.
> 
> [ 360.564708] Not tainted 3.18.3-svn1 #2
> 
> [ 360.569047] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> 
> [ 360.583380] [<c04aa028>] (__schedule) from [<c01848cc>]
> (log_wait_commit+0xd8/0x120)
> 
> [ 360.591197] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> (do_fsync+0x50/0x78)
> 
> [ 360.598741] [<c00f0f44>] (do_fsync) from [<c000f120>]
> (ret_fast_syscall+0x0/0x30)
> 
> [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
> seconds.
> 
> [ 360.613412] Not tainted 3.18.3-svn1 #2
> 
> [ 360.617742] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
> 
> [ 360.632071] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> +0x70/0x9c)
> 
> [ 360.639449] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> (bit_wait_io+0x34/0x58)
> 
> [ 360.646916] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> (__wait_on_bit+0x80/0xb8)
> 
> [ 360.654552] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> (out_of_line_wait_on_bit+0x6c/0x74)
> 
> [ 360.663234] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> (__bread_gfp+0xa8/0xec)
> 
> [ 360.671742] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> (ext3_get_branch+0x88/0x14c)
> 
> [ 360.679651] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> (ext3_get_blocks_handle+0x90/0xa40)
> 
> [ 360.688494] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> (ext3_get_block+0x9c/0xdc)
> 
> [ 360.697174] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> (do_mpage_readpage+0x470/0x7ac)
> 
> [ 360.705600] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> (mpage_readpages+0xc8/0x118)
> 
> [ 360.714011] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> (__do_page_cache_readahead+0x1b0/0x260)
> 
> [ 360.723217] [<c00943d8>] (__do_page_cache_readahead) from
> [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> 
> [ 360.732243] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> (__do_fault+0x34/0x88)
> 
> [ 360.739792] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> (do_cow_fault.isra.95+0x5c/0x17c)
> 
> [ 360.748040] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> (handle_mm_fault+0x410/0x8d8)
> 
> [ 360.756807] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> (do_page_fault+0x194/0x280)
> 
> [ 360.764961] [<c0019140>] (do_page_fault) from [<c0008560>]
> (do_DataAbort+0x38/0x9c)
> 
> [ 360.772688] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> (__dabt_svc+0x38/0x60)
> 
> [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> 
> [ 360.785269] 7e60: 00037044 00000fb4
> 
> [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> 00037044 cba3b900 cae46c00
> 
> [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> c020cb84 20000013 ffffffff
> 
> [ 360.810023] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> (__clear_user_std+0x34/0x64)
> 
> [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
> seconds.
> 
> [ 480.820838] Not tainted 3.18.3-svn1 #2
> 
> [ 480.825094] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
> 
> [ 480.839427] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> +0x70/0x9c)
> 
> [ 480.846811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> (bit_wait_io+0x34/0x58)
> 
> [ 480.854273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> (__wait_on_bit+0x80/0xb8)
> 
> [ 480.861914] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> (out_of_line_wait_on_bit+0x6c/0x74)
> 
> [ 480.870593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> (__sync_dirty_buffer+0xc0/0xec)
> 
> [ 480.879795] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> (journal_commit_transaction+0xfc8/0x139c)
> 
> [ 480.889518] [<c0182244>] (journal_commit_transaction) from
> [<c0184e48>] (kjournald+0xe4/0x268)
> 
> [ 480.898196] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> +0xd8/0xf0)
> 
> [ 480.905137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> +0x14/0x3c)
> 
> [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
> 120 seconds.
> 
> [ 480.919713] Not tainted 3.18.3-svn1 #2
> 
> [ 480.924052] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> 
> [ 480.938392] [<c04aa028>] (__schedule) from [<c01848cc>]
> (log_wait_commit+0xd8/0x120)
> 
> [ 480.946200] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> (do_fsync+0x50/0x78)
> 
> [ 480.953747] [<c00f0f44>] (do_fsync) from [<c000f120>]
> (ret_fast_syscall+0x0/0x30)
> 
> [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
> seconds.
> 
> [ 480.968417] Not tainted 3.18.3-svn1 #2
> 
> [ 480.972747] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
> 
> [ 480.987076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> +0x70/0x9c)
> 
> [ 480.994473] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> (bit_wait_io+0x34/0x58)
> 
> [ 481.001922] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> (__wait_on_bit+0x80/0xb8)
> 
> [ 481.009557] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> (out_of_line_wait_on_bit+0x6c/0x74)
> 
> [ 481.018238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> (__bread_gfp+0xa8/0xec)
> 
> [ 481.026746] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> (ext3_get_branch+0x88/0x14c)
> 
> [ 481.034644] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> (ext3_get_blocks_handle+0x90/0xa40)
> 
> [ 481.043500] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> (ext3_get_block+0x9c/0xdc)
> 
> [ 481.052180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> (do_mpage_readpage+0x470/0x7ac)
> 
> [ 481.060606] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> (mpage_readpages+0xc8/0x118)
> 
> [ 481.069015] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> (__do_page_cache_readahead+0x1b0/0x260)
> 
> [ 481.078223] [<c00943d8>] (__do_page_cache_readahead) from
> [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> 
> [ 481.087247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> (__do_fault+0x34/0x88)
> 
> [ 481.094797] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> (do_cow_fault.isra.95+0x5c/0x17c)
> 
> [ 481.103045] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> (handle_mm_fault+0x410/0x8d8)
> 
> [ 481.111813] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> (do_page_fault+0x194/0x280)
> 
> [ 481.119966] [<c0019140>] (do_page_fault) from [<c0008560>]
> (do_DataAbort+0x38/0x9c)
> 
> [ 481.127692] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> (__dabt_svc+0x38/0x60)
> 
> [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> 
> [ 481.140273] 7e60: 00037044 00000fb4
> 
> [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> 00037044 cba3b900 cae46c00
> 
> [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> c020cb84 20000013 ffffffff
> 
> [ 481.165028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> (__clear_user_std+0x34/0x64)
> 
> [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
> seconds.
> 
> [ 601.175773] Not tainted 3.18.3-svn1 #2
> 
> [ 601.180099] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> disables this message.
> 
> [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
> 
> [ 601.194433] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> +0x70/0x9c)
> 
> [ 601.201816] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> (bit_wait_io+0x34/0x58)
> 
> [ 601.209278] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> (__wait_on_bit+0x80/0xb8)
> 
> [ 601.216918] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> (out_of_line_wait_on_bit+0x6c/0x74)
> 
> [ 601.225598] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> (__sync_dirty_buffer+0xc0/0xec)
> 
> [ 601.234800] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> (journal_commit_transaction+0xfc8/0x139c)
> 
> [ 601.244535] [<c0182244>] (journal_commit_transaction) from
> [<c0184e48>] (kjournald+0xe4/0x268)
> 
> [ 601.253200] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> +0xd8/0xf0)
> 
> [ 601.260142] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> +0x14/0x3c)
> 
> ---------------------------------------------------------------------------------
> 
>  
> 
> Accroding to log.
> 
> It seems that periperal irq arn't injected properly.
> 
>  
> 
> I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
> irq. right?
> 
>  
> 
> This is Bug??
> 
> or Intended on Xen 4.5.x?
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-17  9:49 ` Ian Campbell
@ 2015-04-17 18:29   ` 신정섭
  2015-04-20 10:49     ` Stefano Stabellini
  0 siblings, 1 reply; 14+ messages in thread
From: 신정섭 @ 2015-04-17 18:29 UTC (permalink / raw)
  To: Ian Campbell; +Cc: Stefano Stabellini, xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 24948 bytes --]

 
NO
 
"Peripheral IRQ routing" means that  
Xen select itself one of domain0's vCPU to inject periperal IRQ.
 
So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
 
I know that periperal IRQ can be process on any cpu in linux.
So All Domain0's vcpu can process periperal IRQ injected by Xen.
 
On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
But Xen 4.5.0 it dosen't.
 
 
-----Original Message-----
From: "Ian Campbell"&lt;ian.campbell@citrix.com&gt; 
To: "신정섭"&lt;supsup5642@naver.com&gt;; 
Cc: &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;; 
Sent: 2015-04-17 (금) 18:49:39
Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
 
On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
&gt;  
&gt; 
&gt; I'm studying periperal irq routing to Domain0's vCPU

What do you mean by "peripheral irq routing"? Do you mean supporting the
guest writing to GICD_ITARGER to cause an interrupt to be injected to a
specific vcpu?

I thought that was supposed to work, Stefano?

&gt; 
&gt;  
&gt; 
&gt; I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
&gt; 
&gt; So Xen can select vcpu0 or vcpu1 to inject periperal irq.
&gt; 
&gt;  
&gt; 
&gt; I tested periperal routing on Xen 4.4.1 and it works well.
&gt; 
&gt; But I tested periperal routing on Xen 4.5.0 but irq dosen't works
&gt; well.
&gt; 
&gt;  
&gt; 
&gt; So I tested very simple periperal routing code like this.
&gt; 
&gt; 'flag' is grobal variable. 
&gt; 
&gt;  
&gt; 
&gt; * In "do_IRQ" function on Xen 4.4.1 
&gt; 
&gt; -----------------------------------------------------
&gt; 
&gt; - from
&gt; 
&gt; if ( desc-&gt;status &amp; IRQ_GUEST )
&gt; 
&gt; {
&gt; 
&gt; struct domain *d = action-&gt;dev_id;
&gt; 
&gt;  
&gt; 
&gt; desc-&gt;handler-&gt;end(desc);
&gt; 
&gt;  
&gt; 
&gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; 
&gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; 
&gt;  
&gt; 
&gt; /* XXX: inject irq into all guest vcpus */
&gt; 
&gt; vgic_vcpu_inject_irq(d-&gt;vcpu[0], irq, 0);
&gt; 
&gt; goto out_no_end;
&gt; 
&gt; }
&gt; 
&gt; -to if ( desc-&gt;status &amp; IRQ_GUEST ) {
&gt; 
&gt; struct domain *d = action-&gt;dev_id;
&gt; 
&gt;  
&gt; 
&gt; desc-&gt;handler-&gt;end(desc);
&gt; 
&gt;  
&gt; 
&gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; 
&gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; 
&gt;  
&gt; 
&gt; /* XXX: inject irq into all guest vcpus */
&gt; 
&gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq, 0);
&gt; 
&gt; goto out_no_end;
&gt; 
&gt; }
&gt; 
&gt; -----------------------------------------------------
&gt; 
&gt;  
&gt; 
&gt; * In "vgic_vcpu_inject_spi" function on Xen 4.5.0 
&gt; 
&gt; -----------------------------------------------------
&gt; 
&gt; -from
&gt; 
&gt; void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; 
&gt; {
&gt; 
&gt; struct vcpu *v;
&gt; 
&gt;  
&gt; 
&gt; /* the IRQ needs to be an SPI */
&gt; 
&gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; 
&gt;  
&gt; 
&gt; v = vgic_get_target_vcpu(d-&gt;vcpu[0], irq);
&gt; 
&gt; vgic_vcpu_inject_irq(v, irq);
&gt; 
&gt; }
&gt; 
&gt; -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; 
&gt; {
&gt; 
&gt; struct vcpu *v;
&gt; 
&gt;  
&gt; 
&gt; /* the IRQ needs to be an SPI */
&gt; 
&gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; 
&gt;  
&gt; 
&gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq);
&gt; 
&gt; }
&gt; 
&gt; -----------------------------------------------------
&gt; 
&gt; so periperal irq injected to Domain0's vCPU0 or vCPU1.
&gt; 
&gt;  
&gt; 
&gt; on Xen 4.4.1 it work well and i can confirm 
&gt; 
&gt; periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
&gt; command.
&gt; 
&gt;  
&gt; 
&gt; * cat /proc/interrupts command on Xen 4.4.1
&gt; 
&gt; --------------------------------------------------
&gt; 
&gt; CPU0 CPU1 
&gt; 
&gt; 27: 8690 8558 GIC 27 arch_timer
&gt; 
&gt; 31: 34 1 GIC 31 events
&gt; 
&gt; 65: 0 0 GIC 65 10800000.mdma
&gt; 
&gt; 66: 0 0 GIC 66 121a0000.pdma
&gt; 
&gt; 67: 0 0 GIC 67 121b0000.pdma
&gt; 
&gt; 74: 0 0 GIC 74 101d0000.watchdog
&gt; 
&gt; 75: 0 0 GIC 75 s3c2410-rtc alarm
&gt; 
&gt; 76: 0 0 GIC 76 s3c2410-rtc tick
&gt; 
&gt; 77: 0 0 GIC 77 13400000.pinctrl
&gt; 
&gt; 78: 0 0 GIC 78 11400000.pinctrl
&gt; 
&gt; 79: 0 0 GIC 79 3860000.pinctrl
&gt; 
&gt; 82: 0 0 GIC 82 10d10000.pinctrl
&gt; 
&gt; 88: 229 233 GIC 88 12c60000.i2c
&gt; 
&gt; 90: 0 0 GIC 90 12c80000.i2c
&gt; 
&gt; 91: 0 0 GIC 91 12c90000.i2c
&gt; 
&gt; 96: 0 0 GIC 96 12ce0000.i2c
&gt; 
&gt; 97: 0 0 GIC 97 10060000.tmu
&gt; 
&gt; 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
&gt; 
&gt; 104: 0 0 GIC 104 xhci-hcd:usb1
&gt; 
&gt; 107: 710 710 GIC 107 dw-mci
&gt; 
&gt; 109: 9602 9610 GIC 109 dw-mci
&gt; 
&gt; 156: 0 0 GIC 156 11c10000.mdma
&gt; 
&gt; 160: 0 0 xen-dyn-event xenbus
&gt; 
&gt; 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
&gt; 
&gt; 184: 33 0 xen-percpu-virq hvc_console
&gt; 
&gt; 185: 0 0 s5m8767 12 rtc-alarm0
&gt; 
&gt; 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
&gt; 
&gt; 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
&gt; 
&gt; 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
&gt; 
&gt; 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
&gt; 
&gt; 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
&gt; 
&gt; 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
&gt; 
&gt; IPI0: 0 0 CPU wakeup interrupts
&gt; 
&gt; IPI1: 0 0 Timer broadcast interrupts
&gt; 
&gt; IPI2: 6660 6920 Rescheduling interrupts
&gt; 
&gt; IPI3: 0 0 Function call interrupts
&gt; 
&gt; IPI4: 9 3 Single function call interrupts
&gt; 
&gt; IPI5: 0 0 CPU stop interrupts
&gt; 
&gt; IPI6: 0 0 IRQ work interrupts
&gt; 
&gt; IPI7: 0 0 completion interrupts
&gt; 
&gt;  
&gt; 
&gt; Err: 0
&gt; 
&gt; -----------------------------------------------------
&gt; 
&gt;  
&gt; 
&gt; But on Xen 4.5.0, Dom0 can not booting.
&gt; 
&gt; below is domain0's booting message on Xen 4.5.0
&gt; 
&gt;  
&gt; 
&gt; * domain0's booting message on Xen 4.5.0
&gt; 
&gt; -----------------------------------------------------
&gt; 
&gt; [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
&gt; exynos-ehci
&gt; 
&gt; [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
&gt; idProduct=0610
&gt; 
&gt; [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
&gt; SerialNumber=0
&gt; 
&gt; [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
&gt; 
&gt; [ 4.030156] hub 3-3.2:1.0: USB hub found
&gt; 
&gt; [ 4.033555] hub 3-3.2:1.0: 4 ports detected
&gt; 
&gt; [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
&gt; exynos-ehci
&gt; 
&gt; [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
&gt; idProduct=772a
&gt; 
&gt; [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
&gt; SerialNumber=3
&gt; 
&gt; [ 4.419921] usb 3-3.2.4: Product: AX88772 
&gt; 
&gt; [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
&gt; 
&gt; [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
&gt; 
&gt; [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
&gt; invalid hw address, using random
&gt; 
&gt; [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
&gt; usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
&gt; 
&gt; [ 7.925810] kjournald starting. Commit interval 5 seconds
&gt; 
&gt; [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
&gt; 
&gt; [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
&gt; 
&gt; [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
&gt; mode
&gt; 
&gt; [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
&gt; 
&gt; [ 7.963607] devtmpfs: mounted
&gt; 
&gt; [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
&gt; 
&gt; [ 8.156858] random: init urandom read with 86 bits of entropy
&gt; available
&gt; 
&gt; [ 8.378207] init: ureadahead main process (1407) terminated with
&gt; status 5
&gt; 
&gt; [ 12.790491] random: nonblocking pool is initialized
&gt; 
&gt; [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
&gt; seconds.
&gt; 
&gt; [ 240.110770] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 240.115105] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
&gt; 
&gt; [ 240.129430] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; +0x70/0x9c)
&gt; 
&gt; [ 240.136811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; (bit_wait_io+0x34/0x58)
&gt; 
&gt; [ 240.144273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; (__wait_on_bit+0x80/0xb8)
&gt; 
&gt; [ 240.151912] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; 
&gt; [ 240.160593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; 
&gt; [ 240.169797] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; 
&gt; [ 240.179518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; 
&gt; [ 240.188206] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; +0xd8/0xf0)
&gt; 
&gt; [ 240.195137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; +0x14/0x3c)
&gt; 
&gt; [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
&gt; 120 seconds.
&gt; 
&gt; [ 240.209712] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 240.214051] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; 
&gt; [ 240.228385] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; (log_wait_commit+0xd8/0x120)
&gt; 
&gt; [ 240.236203] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; (do_fsync+0x50/0x78)
&gt; 
&gt; [ 240.243746] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; (ret_fast_syscall+0x0/0x30)
&gt; 
&gt; [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; seconds.
&gt; 
&gt; [ 240.258417] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 240.262746] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; 
&gt; [ 240.277076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; +0x70/0x9c)
&gt; 
&gt; [ 240.284454] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; (bit_wait_io+0x34/0x58)
&gt; 
&gt; [ 240.291920] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; (__wait_on_bit+0x80/0xb8)
&gt; 
&gt; [ 240.299556] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; 
&gt; [ 240.308238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; (__bread_gfp+0xa8/0xec)
&gt; 
&gt; [ 240.316747] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; (ext3_get_branch+0x88/0x14c)
&gt; 
&gt; [ 240.324656] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; 
&gt; [ 240.333498] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; (ext3_get_block+0x9c/0xdc)
&gt; 
&gt; [ 240.342180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; (do_mpage_readpage+0x470/0x7ac)
&gt; 
&gt; [ 240.350605] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; (mpage_readpages+0xc8/0x118)
&gt; 
&gt; [ 240.359016] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; 
&gt; [ 240.368224] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; 
&gt; [ 240.377247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; (__do_fault+0x34/0x88)
&gt; 
&gt; [ 240.384798] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; 
&gt; [ 240.393044] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; (handle_mm_fault+0x410/0x8d8)
&gt; 
&gt; [ 240.401815] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; (do_page_fault+0x194/0x280)
&gt; 
&gt; [ 240.409966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; (do_DataAbort+0x38/0x9c)
&gt; 
&gt; [ 240.417691] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; (__dabt_svc+0x38/0x60)
&gt; 
&gt; [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; 
&gt; [ 240.430272] 7e60: 00037044 00000fb4
&gt; 
&gt; [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; 00037044 cba3b900 cae46c00
&gt; 
&gt; [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; c020cb84 20000013 ffffffff
&gt; 
&gt; [ 240.455028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; (__clear_user_std+0x34/0x64)
&gt; 
&gt; [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
&gt; seconds.
&gt; 
&gt; [ 360.465763] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 360.470089] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
&gt; 
&gt; [ 360.484419] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; +0x70/0x9c)
&gt; 
&gt; [ 360.491805] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; (bit_wait_io+0x34/0x58)
&gt; 
&gt; [ 360.499268] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; (__wait_on_bit+0x80/0xb8)
&gt; 
&gt; [ 360.506908] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; 
&gt; [ 360.515586] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; 
&gt; [ 360.524789] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; 
&gt; [ 360.534512] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; 
&gt; [ 360.543201] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; +0xd8/0xf0)
&gt; 
&gt; [ 360.550132] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; +0x14/0x3c)
&gt; 
&gt; [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
&gt; 120 seconds.
&gt; 
&gt; [ 360.564708] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 360.569047] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; 
&gt; [ 360.583380] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; (log_wait_commit+0xd8/0x120)
&gt; 
&gt; [ 360.591197] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; (do_fsync+0x50/0x78)
&gt; 
&gt; [ 360.598741] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; (ret_fast_syscall+0x0/0x30)
&gt; 
&gt; [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; seconds.
&gt; 
&gt; [ 360.613412] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 360.617742] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; 
&gt; [ 360.632071] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; +0x70/0x9c)
&gt; 
&gt; [ 360.639449] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; (bit_wait_io+0x34/0x58)
&gt; 
&gt; [ 360.646916] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; (__wait_on_bit+0x80/0xb8)
&gt; 
&gt; [ 360.654552] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; 
&gt; [ 360.663234] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; (__bread_gfp+0xa8/0xec)
&gt; 
&gt; [ 360.671742] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; (ext3_get_branch+0x88/0x14c)
&gt; 
&gt; [ 360.679651] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; 
&gt; [ 360.688494] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; (ext3_get_block+0x9c/0xdc)
&gt; 
&gt; [ 360.697174] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; (do_mpage_readpage+0x470/0x7ac)
&gt; 
&gt; [ 360.705600] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; (mpage_readpages+0xc8/0x118)
&gt; 
&gt; [ 360.714011] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; 
&gt; [ 360.723217] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; 
&gt; [ 360.732243] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; (__do_fault+0x34/0x88)
&gt; 
&gt; [ 360.739792] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; 
&gt; [ 360.748040] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; (handle_mm_fault+0x410/0x8d8)
&gt; 
&gt; [ 360.756807] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; (do_page_fault+0x194/0x280)
&gt; 
&gt; [ 360.764961] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; (do_DataAbort+0x38/0x9c)
&gt; 
&gt; [ 360.772688] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; (__dabt_svc+0x38/0x60)
&gt; 
&gt; [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; 
&gt; [ 360.785269] 7e60: 00037044 00000fb4
&gt; 
&gt; [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; 00037044 cba3b900 cae46c00
&gt; 
&gt; [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; c020cb84 20000013 ffffffff
&gt; 
&gt; [ 360.810023] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; (__clear_user_std+0x34/0x64)
&gt; 
&gt; [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
&gt; seconds.
&gt; 
&gt; [ 480.820838] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 480.825094] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
&gt; 
&gt; [ 480.839427] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; +0x70/0x9c)
&gt; 
&gt; [ 480.846811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; (bit_wait_io+0x34/0x58)
&gt; 
&gt; [ 480.854273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; (__wait_on_bit+0x80/0xb8)
&gt; 
&gt; [ 480.861914] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; 
&gt; [ 480.870593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; 
&gt; [ 480.879795] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; 
&gt; [ 480.889518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; 
&gt; [ 480.898196] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; +0xd8/0xf0)
&gt; 
&gt; [ 480.905137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; +0x14/0x3c)
&gt; 
&gt; [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
&gt; 120 seconds.
&gt; 
&gt; [ 480.919713] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 480.924052] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; 
&gt; [ 480.938392] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; (log_wait_commit+0xd8/0x120)
&gt; 
&gt; [ 480.946200] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; (do_fsync+0x50/0x78)
&gt; 
&gt; [ 480.953747] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; (ret_fast_syscall+0x0/0x30)
&gt; 
&gt; [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; seconds.
&gt; 
&gt; [ 480.968417] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 480.972747] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; 
&gt; [ 480.987076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; +0x70/0x9c)
&gt; 
&gt; [ 480.994473] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; (bit_wait_io+0x34/0x58)
&gt; 
&gt; [ 481.001922] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; (__wait_on_bit+0x80/0xb8)
&gt; 
&gt; [ 481.009557] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; 
&gt; [ 481.018238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; (__bread_gfp+0xa8/0xec)
&gt; 
&gt; [ 481.026746] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; (ext3_get_branch+0x88/0x14c)
&gt; 
&gt; [ 481.034644] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; 
&gt; [ 481.043500] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; (ext3_get_block+0x9c/0xdc)
&gt; 
&gt; [ 481.052180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; (do_mpage_readpage+0x470/0x7ac)
&gt; 
&gt; [ 481.060606] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; (mpage_readpages+0xc8/0x118)
&gt; 
&gt; [ 481.069015] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; 
&gt; [ 481.078223] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; 
&gt; [ 481.087247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; (__do_fault+0x34/0x88)
&gt; 
&gt; [ 481.094797] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; 
&gt; [ 481.103045] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; (handle_mm_fault+0x410/0x8d8)
&gt; 
&gt; [ 481.111813] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; (do_page_fault+0x194/0x280)
&gt; 
&gt; [ 481.119966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; (do_DataAbort+0x38/0x9c)
&gt; 
&gt; [ 481.127692] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; (__dabt_svc+0x38/0x60)
&gt; 
&gt; [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; 
&gt; [ 481.140273] 7e60: 00037044 00000fb4
&gt; 
&gt; [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; 00037044 cba3b900 cae46c00
&gt; 
&gt; [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; c020cb84 20000013 ffffffff
&gt; 
&gt; [ 481.165028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; (__clear_user_std+0x34/0x64)
&gt; 
&gt; [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
&gt; seconds.
&gt; 
&gt; [ 601.175773] Not tainted 3.18.3-svn1 #2
&gt; 
&gt; [ 601.180099] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; disables this message.
&gt; 
&gt; [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
&gt; 
&gt; [ 601.194433] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; +0x70/0x9c)
&gt; 
&gt; [ 601.201816] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; (bit_wait_io+0x34/0x58)
&gt; 
&gt; [ 601.209278] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; (__wait_on_bit+0x80/0xb8)
&gt; 
&gt; [ 601.216918] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; 
&gt; [ 601.225598] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; 
&gt; [ 601.234800] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; 
&gt; [ 601.244535] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; 
&gt; [ 601.253200] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; +0xd8/0xf0)
&gt; 
&gt; [ 601.260142] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; +0x14/0x3c)
&gt; 
&gt; ---------------------------------------------------------------------------------
&gt; 
&gt;  
&gt; 
&gt; Accroding to log.
&gt; 
&gt; It seems that periperal irq arn't injected properly.
&gt; 
&gt;  
&gt; 
&gt; I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
&gt; irq. right?
&gt; 
&gt;  
&gt; 
&gt; This is Bug??
&gt; 
&gt; or Intended on Xen 4.5.x?
&gt; 
&gt; 
&gt; 
&gt; _______________________________________________
&gt; Xen-devel mailing list
&gt; Xen-devel@lists.xen.org
&gt; http://lists.xen.org/xen-devel





[-- Attachment #1.2: Type: text/html, Size: 28820 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-17 18:29   ` 신정섭
@ 2015-04-20 10:49     ` Stefano Stabellini
  2015-04-20 12:35       ` 신정섭
  0 siblings, 1 reply; 14+ messages in thread
From: Stefano Stabellini @ 2015-04-20 10:49 UTC (permalink / raw)
  To: 신정섭; +Cc: Stefano Stabellini, Ian Campbell, xen-devel

[-- Attachment #1: Type: text/plain, Size: 23928 bytes --]

In Xen 4.5 we rely on the fact that the physical irq is routed to the
physical cpu running the vcpu of the domain that needs to receive the
corresponding virq.

So if you want to inject IRQ 100 to CPU 1, while Dom0 is set to receive
vIRQ 100 (virtual irq corresponding to IRQ 100) to vcpu0, running on
CPU 0, that won't work.


On Sat, 18 Apr 2015, 신정섭 wrote:
> NO
>
>  
>
> "Peripheral IRQ routing" means that  
>
> Xen select itself one of domain0's vCPU to inject periperal IRQ.
>
>  
>
> So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
>
> periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
>
>  
>
> I know that periperal IRQ can be process on any cpu in linux.
>
> So All Domain0's vcpu can process periperal IRQ injected by Xen.
>
>  
>
> On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
>
> But Xen 4.5.0 it dosen't.
>
>  
>
>  
>
> -----Original Message-----
> From: "Ian Campbell"<ian.campbell@citrix.com>
> To: "신정섭"<supsup5642@naver.com>;
> Cc: <xen-devel@lists.xen.org>; "Stefano Stabellini"<Stefano.Stabellini@eu.citrix.com>;
> Sent: 2015-04-17 (금) 18:49:39
> Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
>  
>
> On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
> >
> >
> > I'm studying periperal irq routing to Domain0's vCPU
>
> What do you mean by "peripheral irq routing"? Do you mean supporting the
> guest writing to GICD_ITARGER to cause an interrupt to be injected to a
> specific vcpu?
>
> I thought that was supposed to work, Stefano?
>
> >
> >
> >
> > I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
> >
> > So Xen can select vcpu0 or vcpu1 to inject periperal irq.
> >
> >
> >
> > I tested periperal routing on Xen 4.4.1 and it works well.
> >
> > But I tested periperal routing on Xen 4.5.0 but irq dosen't works
> > well.
> >
> >
> >
> > So I tested very simple periperal routing code like this.
> >
> > 'flag' is grobal variable.
> >
> >
> >
> > * In "do_IRQ" function on Xen 4.4.1
> >
> > -----------------------------------------------------
> >
> > - from
> >
> > if ( desc->status & IRQ_GUEST )
> >
> > {
> >
> > struct domain *d = action->dev_id;
> >
> >
> >
> > desc->handler->end(desc);
> >
> >
> >
> > desc->status = IRQ_INPROGRESS;
> >
> > desc->arch.eoi_cpu = smp_processor_id();
> >
> >
> >
> > /* XXX: inject irq into all guest vcpus */
> >
> > vgic_vcpu_inject_irq(d->vcpu[0], irq, 0);
> >
> > goto out_no_end;
> >
> > }
> >
> > -to if ( desc->status & IRQ_GUEST ) {
> >
> > struct domain *d = action->dev_id;
> >
> >
> >
> > desc->handler->end(desc);
> >
> >
> >
> > desc->status = IRQ_INPROGRESS;
> >
> > desc->arch.eoi_cpu = smp_processor_id();
> >
> >
> >
> > /* XXX: inject irq into all guest vcpus */
> >
> > vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq, 0);
> >
> > goto out_no_end;
> >
> > }
> >
> > -----------------------------------------------------
> >
> >
> >
> > * In "vgic_vcpu_inject_spi" function on Xen 4.5.0
> >
> > -----------------------------------------------------
> >
> > -from
> >
> > void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> >
> > {
> >
> > struct vcpu *v;
> >
> >
> >
> > /* the IRQ needs to be an SPI */
> >
> > ASSERT(irq >= 32 && irq <= gic_number_lines());
> >
> >
> >
> > v = vgic_get_target_vcpu(d->vcpu[0], irq);
> >
> > vgic_vcpu_inject_irq(v, irq);
> >
> > }
> >
> > -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> >
> > {
> >
> > struct vcpu *v;
> >
> >
> >
> > /* the IRQ needs to be an SPI */
> >
> > ASSERT(irq >= 32 && irq <= gic_number_lines());
> >
> >
> >
> > vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq);
> >
> > }
> >
> > -----------------------------------------------------
> >
> > so periperal irq injected to Domain0's vCPU0 or vCPU1.
> >
> >
> >
> > on Xen 4.4.1 it work well and i can confirm
> >
> > periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
> > command.
> >
> >
> >
> > * cat /proc/interrupts command on Xen 4.4.1
> >
> > --------------------------------------------------
> >
> > CPU0 CPU1
> >
> > 27: 8690 8558 GIC 27 arch_timer
> >
> > 31: 34 1 GIC 31 events
> >
> > 65: 0 0 GIC 65 10800000.mdma
> >
> > 66: 0 0 GIC 66 121a0000.pdma
> >
> > 67: 0 0 GIC 67 121b0000.pdma
> >
> > 74: 0 0 GIC 74 101d0000.watchdog
> >
> > 75: 0 0 GIC 75 s3c2410-rtc alarm
> >
> > 76: 0 0 GIC 76 s3c2410-rtc tick
> >
> > 77: 0 0 GIC 77 13400000.pinctrl
> >
> > 78: 0 0 GIC 78 11400000.pinctrl
> >
> > 79: 0 0 GIC 79 3860000.pinctrl
> >
> > 82: 0 0 GIC 82 10d10000.pinctrl
> >
> > 88: 229 233 GIC 88 12c60000.i2c
> >
> > 90: 0 0 GIC 90 12c80000.i2c
> >
> > 91: 0 0 GIC 91 12c90000.i2c
> >
> > 96: 0 0 GIC 96 12ce0000.i2c
> >
> > 97: 0 0 GIC 97 10060000.tmu
> >
> > 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
> >
> > 104: 0 0 GIC 104 xhci-hcd:usb1
> >
> > 107: 710 710 GIC 107 dw-mci
> >
> > 109: 9602 9610 GIC 109 dw-mci
> >
> > 156: 0 0 GIC 156 11c10000.mdma
> >
> > 160: 0 0 xen-dyn-event xenbus
> >
> > 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
> >
> > 184: 33 0 xen-percpu-virq hvc_console
> >
> > 185: 0 0 s5m8767 12 rtc-alarm0
> >
> > 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
> >
> > 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
> >
> > 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
> >
> > 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
> >
> > 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
> >
> > 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
> >
> > IPI0: 0 0 CPU wakeup interrupts
> >
> > IPI1: 0 0 Timer broadcast interrupts
> >
> > IPI2: 6660 6920 Rescheduling interrupts
> >
> > IPI3: 0 0 Function call interrupts
> >
> > IPI4: 9 3 Single function call interrupts
> >
> > IPI5: 0 0 CPU stop interrupts
> >
> > IPI6: 0 0 IRQ work interrupts
> >
> > IPI7: 0 0 completion interrupts
> >
> >
> >
> > Err: 0
> >
> > -----------------------------------------------------
> >
> >
> >
> > But on Xen 4.5.0, Dom0 can not booting.
> >
> > below is domain0's booting message on Xen 4.5.0
> >
> >
> >
> > * domain0's booting message on Xen 4.5.0
> >
> > -----------------------------------------------------
> >
> > [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
> > exynos-ehci
> >
> > [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
> > idProduct=0610
> >
> > [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
> > SerialNumber=0
> >
> > [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
> >
> > [ 4.030156] hub 3-3.2:1.0: USB hub found
> >
> > [ 4.033555] hub 3-3.2:1.0: 4 ports detected
> >
> > [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
> > exynos-ehci
> >
> > [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
> > idProduct=772a
> >
> > [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
> > SerialNumber=3
> >
> > [ 4.419921] usb 3-3.2.4: Product: AX88772
> >
> > [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
> >
> > [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
> >
> > [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
> > invalid hw address, using random
> >
> > [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
> > usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
> >
> > [ 7.925810] kjournald starting. Commit interval 5 seconds
> >
> > [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
> >
> > [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
> >
> > [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
> > mode
> >
> > [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
> >
> > [ 7.963607] devtmpfs: mounted
> >
> > [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
> >
> > [ 8.156858] random: init urandom read with 86 bits of entropy
> > available
> >
> > [ 8.378207] init: ureadahead main process (1407) terminated with
> > status 5
> >
> > [ 12.790491] random: nonblocking pool is initialized
> >
> > [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
> > seconds.
> >
> > [ 240.110770] Not tainted 3.18.3-svn1 #2
> >
> > [ 240.115105] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
> >
> > [ 240.129430] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > +0x70/0x9c)
> >
> > [ 240.136811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > (bit_wait_io+0x34/0x58)
> >
> > [ 240.144273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > (__wait_on_bit+0x80/0xb8)
> >
> > [ 240.151912] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > (out_of_line_wait_on_bit+0x6c/0x74)
> >
> > [ 240.160593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > (__sync_dirty_buffer+0xc0/0xec)
> >
> > [ 240.169797] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > (journal_commit_transaction+0xfc8/0x139c)
> >
> > [ 240.179518] [<c0182244>] (journal_commit_transaction) from
> > [<c0184e48>] (kjournald+0xe4/0x268)
> >
> > [ 240.188206] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > +0xd8/0xf0)
> >
> > [ 240.195137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > +0x14/0x3c)
> >
> > [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
> > 120 seconds.
> >
> > [ 240.209712] Not tainted 3.18.3-svn1 #2
> >
> > [ 240.214051] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> >
> > [ 240.228385] [<c04aa028>] (__schedule) from [<c01848cc>]
> > (log_wait_commit+0xd8/0x120)
> >
> > [ 240.236203] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > (do_fsync+0x50/0x78)
> >
> > [ 240.243746] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > (ret_fast_syscall+0x0/0x30)
> >
> > [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
> > seconds.
> >
> > [ 240.258417] Not tainted 3.18.3-svn1 #2
> >
> > [ 240.262746] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
> >
> > [ 240.277076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > +0x70/0x9c)
> >
> > [ 240.284454] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > (bit_wait_io+0x34/0x58)
> >
> > [ 240.291920] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > (__wait_on_bit+0x80/0xb8)
> >
> > [ 240.299556] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > (out_of_line_wait_on_bit+0x6c/0x74)
> >
> > [ 240.308238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > (__bread_gfp+0xa8/0xec)
> >
> > [ 240.316747] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > (ext3_get_branch+0x88/0x14c)
> >
> > [ 240.324656] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > (ext3_get_blocks_handle+0x90/0xa40)
> >
> > [ 240.333498] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > (ext3_get_block+0x9c/0xdc)
> >
> > [ 240.342180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > (do_mpage_readpage+0x470/0x7ac)
> >
> > [ 240.350605] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > (mpage_readpages+0xc8/0x118)
> >
> > [ 240.359016] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > (__do_page_cache_readahead+0x1b0/0x260)
> >
> > [ 240.368224] [<c00943d8>] (__do_page_cache_readahead) from
> > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> >
> > [ 240.377247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > (__do_fault+0x34/0x88)
> >
> > [ 240.384798] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > (do_cow_fault.isra.95+0x5c/0x17c)
> >
> > [ 240.393044] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > (handle_mm_fault+0x410/0x8d8)
> >
> > [ 240.401815] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > (do_page_fault+0x194/0x280)
> >
> > [ 240.409966] [<c0019140>] (do_page_fault) from [<c0008560>]
> > (do_DataAbort+0x38/0x9c)
> >
> > [ 240.417691] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > (__dabt_svc+0x38/0x60)
> >
> > [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> >
> > [ 240.430272] 7e60: 00037044 00000fb4
> >
> > [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > 00037044 cba3b900 cae46c00
> >
> > [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > c020cb84 20000013 ffffffff
> >
> > [ 240.455028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > (__clear_user_std+0x34/0x64)
> >
> > [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
> > seconds.
> >
> > [ 360.465763] Not tainted 3.18.3-svn1 #2
> >
> > [ 360.470089] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
> >
> > [ 360.484419] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > +0x70/0x9c)
> >
> > [ 360.491805] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > (bit_wait_io+0x34/0x58)
> >
> > [ 360.499268] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > (__wait_on_bit+0x80/0xb8)
> >
> > [ 360.506908] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > (out_of_line_wait_on_bit+0x6c/0x74)
> >
> > [ 360.515586] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > (__sync_dirty_buffer+0xc0/0xec)
> >
> > [ 360.524789] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > (journal_commit_transaction+0xfc8/0x139c)
> >
> > [ 360.534512] [<c0182244>] (journal_commit_transaction) from
> > [<c0184e48>] (kjournald+0xe4/0x268)
> >
> > [ 360.543201] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > +0xd8/0xf0)
> >
> > [ 360.550132] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > +0x14/0x3c)
> >
> > [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
> > 120 seconds.
> >
> > [ 360.564708] Not tainted 3.18.3-svn1 #2
> >
> > [ 360.569047] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> >
> > [ 360.583380] [<c04aa028>] (__schedule) from [<c01848cc>]
> > (log_wait_commit+0xd8/0x120)
> >
> > [ 360.591197] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > (do_fsync+0x50/0x78)
> >
> > [ 360.598741] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > (ret_fast_syscall+0x0/0x30)
> >
> > [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
> > seconds.
> >
> > [ 360.613412] Not tainted 3.18.3-svn1 #2
> >
> > [ 360.617742] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
> >
> > [ 360.632071] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > +0x70/0x9c)
> >
> > [ 360.639449] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > (bit_wait_io+0x34/0x58)
> >
> > [ 360.646916] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > (__wait_on_bit+0x80/0xb8)
> >
> > [ 360.654552] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > (out_of_line_wait_on_bit+0x6c/0x74)
> >
> > [ 360.663234] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > (__bread_gfp+0xa8/0xec)
> >
> > [ 360.671742] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > (ext3_get_branch+0x88/0x14c)
> >
> > [ 360.679651] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > (ext3_get_blocks_handle+0x90/0xa40)
> >
> > [ 360.688494] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > (ext3_get_block+0x9c/0xdc)
> >
> > [ 360.697174] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > (do_mpage_readpage+0x470/0x7ac)
> >
> > [ 360.705600] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > (mpage_readpages+0xc8/0x118)
> >
> > [ 360.714011] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > (__do_page_cache_readahead+0x1b0/0x260)
> >
> > [ 360.723217] [<c00943d8>] (__do_page_cache_readahead) from
> > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> >
> > [ 360.732243] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > (__do_fault+0x34/0x88)
> >
> > [ 360.739792] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > (do_cow_fault.isra.95+0x5c/0x17c)
> >
> > [ 360.748040] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > (handle_mm_fault+0x410/0x8d8)
> >
> > [ 360.756807] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > (do_page_fault+0x194/0x280)
> >
> > [ 360.764961] [<c0019140>] (do_page_fault) from [<c0008560>]
> > (do_DataAbort+0x38/0x9c)
> >
> > [ 360.772688] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > (__dabt_svc+0x38/0x60)
> >
> > [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> >
> > [ 360.785269] 7e60: 00037044 00000fb4
> >
> > [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > 00037044 cba3b900 cae46c00
> >
> > [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > c020cb84 20000013 ffffffff
> >
> > [ 360.810023] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > (__clear_user_std+0x34/0x64)
> >
> > [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
> > seconds.
> >
> > [ 480.820838] Not tainted 3.18.3-svn1 #2
> >
> > [ 480.825094] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
> >
> > [ 480.839427] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > +0x70/0x9c)
> >
> > [ 480.846811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > (bit_wait_io+0x34/0x58)
> >
> > [ 480.854273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > (__wait_on_bit+0x80/0xb8)
> >
> > [ 480.861914] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > (out_of_line_wait_on_bit+0x6c/0x74)
> >
> > [ 480.870593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > (__sync_dirty_buffer+0xc0/0xec)
> >
> > [ 480.879795] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > (journal_commit_transaction+0xfc8/0x139c)
> >
> > [ 480.889518] [<c0182244>] (journal_commit_transaction) from
> > [<c0184e48>] (kjournald+0xe4/0x268)
> >
> > [ 480.898196] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > +0xd8/0xf0)
> >
> > [ 480.905137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > +0x14/0x3c)
> >
> > [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
> > 120 seconds.
> >
> > [ 480.919713] Not tainted 3.18.3-svn1 #2
> >
> > [ 480.924052] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> >
> > [ 480.938392] [<c04aa028>] (__schedule) from [<c01848cc>]
> > (log_wait_commit+0xd8/0x120)
> >
> > [ 480.946200] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > (do_fsync+0x50/0x78)
> >
> > [ 480.953747] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > (ret_fast_syscall+0x0/0x30)
> >
> > [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
> > seconds.
> >
> > [ 480.968417] Not tainted 3.18.3-svn1 #2
> >
> > [ 480.972747] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
> >
> > [ 480.987076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > +0x70/0x9c)
> >
> > [ 480.994473] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > (bit_wait_io+0x34/0x58)
> >
> > [ 481.001922] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > (__wait_on_bit+0x80/0xb8)
> >
> > [ 481.009557] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > (out_of_line_wait_on_bit+0x6c/0x74)
> >
> > [ 481.018238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > (__bread_gfp+0xa8/0xec)
> >
> > [ 481.026746] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > (ext3_get_branch+0x88/0x14c)
> >
> > [ 481.034644] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > (ext3_get_blocks_handle+0x90/0xa40)
> >
> > [ 481.043500] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > (ext3_get_block+0x9c/0xdc)
> >
> > [ 481.052180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > (do_mpage_readpage+0x470/0x7ac)
> >
> > [ 481.060606] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > (mpage_readpages+0xc8/0x118)
> >
> > [ 481.069015] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > (__do_page_cache_readahead+0x1b0/0x260)
> >
> > [ 481.078223] [<c00943d8>] (__do_page_cache_readahead) from
> > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> >
> > [ 481.087247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > (__do_fault+0x34/0x88)
> >
> > [ 481.094797] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > (do_cow_fault.isra.95+0x5c/0x17c)
> >
> > [ 481.103045] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > (handle_mm_fault+0x410/0x8d8)
> >
> > [ 481.111813] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > (do_page_fault+0x194/0x280)
> >
> > [ 481.119966] [<c0019140>] (do_page_fault) from [<c0008560>]
> > (do_DataAbort+0x38/0x9c)
> >
> > [ 481.127692] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > (__dabt_svc+0x38/0x60)
> >
> > [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> >
> > [ 481.140273] 7e60: 00037044 00000fb4
> >
> > [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > 00037044 cba3b900 cae46c00
> >
> > [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > c020cb84 20000013 ffffffff
> >
> > [ 481.165028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > (__clear_user_std+0x34/0x64)
> >
> > [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
> > seconds.
> >
> > [ 601.175773] Not tainted 3.18.3-svn1 #2
> >
> > [ 601.180099] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > disables this message.
> >
> > [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
> >
> > [ 601.194433] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > +0x70/0x9c)
> >
> > [ 601.201816] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > (bit_wait_io+0x34/0x58)
> >
> > [ 601.209278] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > (__wait_on_bit+0x80/0xb8)
> >
> > [ 601.216918] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > (out_of_line_wait_on_bit+0x6c/0x74)
> >
> > [ 601.225598] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > (__sync_dirty_buffer+0xc0/0xec)
> >
> > [ 601.234800] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > (journal_commit_transaction+0xfc8/0x139c)
> >
> > [ 601.244535] [<c0182244>] (journal_commit_transaction) from
> > [<c0184e48>] (kjournald+0xe4/0x268)
> >
> > [ 601.253200] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > +0xd8/0xf0)
> >
> > [ 601.260142] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > +0x14/0x3c)
> >
> > ---------------------------------------------------------------------------------
> >
> >
> >
> > Accroding to log.
> >
> > It seems that periperal irq arn't injected properly.
> >
> >
> >
> > I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
> > irq. right?
> >
> >
> >
> > This is Bug??
> >
> > or Intended on Xen 4.5.x?
> >
> >
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@lists.xen.org
> > http://lists.xen.org/xen-devel
>
>
>
>
> [?img=mr%2Bm%2BBFm%2BBK9hAnZFAM9FqMdFrMqKo%2BSFrM%2FFrudF4tqMxFvKouXM4twFrKZtzFXp6UmaLl5WLl51zlqDBFdp6d5
> MreRhoRx%2Bzk4M6lT70FdM6i0WzwGW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
> 

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-20 10:49     ` Stefano Stabellini
@ 2015-04-20 12:35       ` 신정섭
  2015-04-20 17:25         ` Stefano Stabellini
  0 siblings, 1 reply; 14+ messages in thread
From: 신정섭 @ 2015-04-20 12:35 UTC (permalink / raw)
  To: Stefano Stabellini; +Cc: Ian Campbell, xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 30046 bytes --]

Thanks your rely. But sorry i can't understand your explanation fully.
 
I don't want to change GICD setting. I only want to change target Domain0' vcpu injected SPI. vcpu0 or vcpu1.
 
I understand like below.
In Xen4.4, vgic_vcpu_inject_irq() can inject SPI to any Domain0's vcpu on any pcpu.
But int Xen4.5 vgic_vcpu_inject_irq() can inject SPI on only pcpu that receive SPI from GICD.
Right?
 
 
-----Original Message-----
From: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt; 
To: "신정섭"&lt;supsup5642@naver.com&gt;; 
Cc: "Ian Campbell"&lt;ian.campbell@citrix.com&gt;; &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;; 
Sent: 2015-04-20 (월) 19:49:50
Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
 
In Xen 4.5 we rely on the fact that the physical irq is routed to the
physical cpu running the vcpu of the domain that needs to receive the
corresponding virq.

So if you want to inject IRQ 100 to CPU 1, while Dom0 is set to receive
vIRQ 100 (virtual irq corresponding to IRQ 100) to vcpu0, running on
CPU 0, that won't work.


On Sat, 18 Apr 2015, 신정섭 wrote:
&gt; NO
&gt; 
&gt;  
&gt; 
&gt; "Peripheral IRQ routing" means that  
&gt; 
&gt; Xen select itself one of domain0's vCPU to inject periperal IRQ.
&gt; 
&gt;  
&gt; 
&gt; So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
&gt; 
&gt; periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
&gt; 
&gt;  
&gt; 
&gt; I know that periperal IRQ can be process on any cpu in linux.
&gt; 
&gt; So All Domain0's vcpu can process periperal IRQ injected by Xen.
&gt; 
&gt;  
&gt; 
&gt; On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
&gt; 
&gt; But Xen 4.5.0 it dosen't.
&gt; 
&gt;  
&gt; 
&gt;  
&gt; 
&gt; -----Original Message-----
&gt; From: "Ian Campbell"&lt;ian.campbell@citrix.com&gt;
&gt; To: "신정섭"&lt;supsup5642@naver.com&gt;;
&gt; Cc: &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;;
&gt; Sent: 2015-04-17 (금) 18:49:39
&gt; Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
&gt;  
&gt; 
&gt; On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
&gt; &gt;
&gt; &gt;
&gt; &gt; I'm studying periperal irq routing to Domain0's vCPU
&gt; 
&gt; What do you mean by "peripheral irq routing"? Do you mean supporting the
&gt; guest writing to GICD_ITARGER to cause an interrupt to be injected to a
&gt; specific vcpu?
&gt; 
&gt; I thought that was supposed to work, Stefano?
&gt; 
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
&gt; &gt;
&gt; &gt; So Xen can select vcpu0 or vcpu1 to inject periperal irq.
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; I tested periperal routing on Xen 4.4.1 and it works well.
&gt; &gt;
&gt; &gt; But I tested periperal routing on Xen 4.5.0 but irq dosen't works
&gt; &gt; well.
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; So I tested very simple periperal routing code like this.
&gt; &gt;
&gt; &gt; 'flag' is grobal variable.
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; * In "do_IRQ" function on Xen 4.4.1
&gt; &gt;
&gt; &gt; -----------------------------------------------------
&gt; &gt;
&gt; &gt; - from
&gt; &gt;
&gt; &gt; if ( desc-&gt;status &amp; IRQ_GUEST )
&gt; &gt;
&gt; &gt; {
&gt; &gt;
&gt; &gt; struct domain *d = action-&gt;dev_id;
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; desc-&gt;handler-&gt;end(desc);
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; &gt;
&gt; &gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; /* XXX: inject irq into all guest vcpus */
&gt; &gt;
&gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[0], irq, 0);
&gt; &gt;
&gt; &gt; goto out_no_end;
&gt; &gt;
&gt; &gt; }
&gt; &gt;
&gt; &gt; -to if ( desc-&gt;status &amp; IRQ_GUEST ) {
&gt; &gt;
&gt; &gt; struct domain *d = action-&gt;dev_id;
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; desc-&gt;handler-&gt;end(desc);
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; &gt;
&gt; &gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; /* XXX: inject irq into all guest vcpus */
&gt; &gt;
&gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq, 0);
&gt; &gt;
&gt; &gt; goto out_no_end;
&gt; &gt;
&gt; &gt; }
&gt; &gt;
&gt; &gt; -----------------------------------------------------
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; * In "vgic_vcpu_inject_spi" function on Xen 4.5.0
&gt; &gt;
&gt; &gt; -----------------------------------------------------
&gt; &gt;
&gt; &gt; -from
&gt; &gt;
&gt; &gt; void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; &gt;
&gt; &gt; {
&gt; &gt;
&gt; &gt; struct vcpu *v;
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; /* the IRQ needs to be an SPI */
&gt; &gt;
&gt; &gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; v = vgic_get_target_vcpu(d-&gt;vcpu[0], irq);
&gt; &gt;
&gt; &gt; vgic_vcpu_inject_irq(v, irq);
&gt; &gt;
&gt; &gt; }
&gt; &gt;
&gt; &gt; -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; &gt;
&gt; &gt; {
&gt; &gt;
&gt; &gt; struct vcpu *v;
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; /* the IRQ needs to be an SPI */
&gt; &gt;
&gt; &gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq);
&gt; &gt;
&gt; &gt; }
&gt; &gt;
&gt; &gt; -----------------------------------------------------
&gt; &gt;
&gt; &gt; so periperal irq injected to Domain0's vCPU0 or vCPU1.
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; on Xen 4.4.1 it work well and i can confirm
&gt; &gt;
&gt; &gt; periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
&gt; &gt; command.
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; * cat /proc/interrupts command on Xen 4.4.1
&gt; &gt;
&gt; &gt; --------------------------------------------------
&gt; &gt;
&gt; &gt; CPU0 CPU1
&gt; &gt;
&gt; &gt; 27: 8690 8558 GIC 27 arch_timer
&gt; &gt;
&gt; &gt; 31: 34 1 GIC 31 events
&gt; &gt;
&gt; &gt; 65: 0 0 GIC 65 10800000.mdma
&gt; &gt;
&gt; &gt; 66: 0 0 GIC 66 121a0000.pdma
&gt; &gt;
&gt; &gt; 67: 0 0 GIC 67 121b0000.pdma
&gt; &gt;
&gt; &gt; 74: 0 0 GIC 74 101d0000.watchdog
&gt; &gt;
&gt; &gt; 75: 0 0 GIC 75 s3c2410-rtc alarm
&gt; &gt;
&gt; &gt; 76: 0 0 GIC 76 s3c2410-rtc tick
&gt; &gt;
&gt; &gt; 77: 0 0 GIC 77 13400000.pinctrl
&gt; &gt;
&gt; &gt; 78: 0 0 GIC 78 11400000.pinctrl
&gt; &gt;
&gt; &gt; 79: 0 0 GIC 79 3860000.pinctrl
&gt; &gt;
&gt; &gt; 82: 0 0 GIC 82 10d10000.pinctrl
&gt; &gt;
&gt; &gt; 88: 229 233 GIC 88 12c60000.i2c
&gt; &gt;
&gt; &gt; 90: 0 0 GIC 90 12c80000.i2c
&gt; &gt;
&gt; &gt; 91: 0 0 GIC 91 12c90000.i2c
&gt; &gt;
&gt; &gt; 96: 0 0 GIC 96 12ce0000.i2c
&gt; &gt;
&gt; &gt; 97: 0 0 GIC 97 10060000.tmu
&gt; &gt;
&gt; &gt; 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
&gt; &gt;
&gt; &gt; 104: 0 0 GIC 104 xhci-hcd:usb1
&gt; &gt;
&gt; &gt; 107: 710 710 GIC 107 dw-mci
&gt; &gt;
&gt; &gt; 109: 9602 9610 GIC 109 dw-mci
&gt; &gt;
&gt; &gt; 156: 0 0 GIC 156 11c10000.mdma
&gt; &gt;
&gt; &gt; 160: 0 0 xen-dyn-event xenbus
&gt; &gt;
&gt; &gt; 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
&gt; &gt;
&gt; &gt; 184: 33 0 xen-percpu-virq hvc_console
&gt; &gt;
&gt; &gt; 185: 0 0 s5m8767 12 rtc-alarm0
&gt; &gt;
&gt; &gt; 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
&gt; &gt;
&gt; &gt; 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
&gt; &gt;
&gt; &gt; 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
&gt; &gt;
&gt; &gt; 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
&gt; &gt;
&gt; &gt; 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
&gt; &gt;
&gt; &gt; 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
&gt; &gt;
&gt; &gt; IPI0: 0 0 CPU wakeup interrupts
&gt; &gt;
&gt; &gt; IPI1: 0 0 Timer broadcast interrupts
&gt; &gt;
&gt; &gt; IPI2: 6660 6920 Rescheduling interrupts
&gt; &gt;
&gt; &gt; IPI3: 0 0 Function call interrupts
&gt; &gt;
&gt; &gt; IPI4: 9 3 Single function call interrupts
&gt; &gt;
&gt; &gt; IPI5: 0 0 CPU stop interrupts
&gt; &gt;
&gt; &gt; IPI6: 0 0 IRQ work interrupts
&gt; &gt;
&gt; &gt; IPI7: 0 0 completion interrupts
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; Err: 0
&gt; &gt;
&gt; &gt; -----------------------------------------------------
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; But on Xen 4.5.0, Dom0 can not booting.
&gt; &gt;
&gt; &gt; below is domain0's booting message on Xen 4.5.0
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; * domain0's booting message on Xen 4.5.0
&gt; &gt;
&gt; &gt; -----------------------------------------------------
&gt; &gt;
&gt; &gt; [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
&gt; &gt; exynos-ehci
&gt; &gt;
&gt; &gt; [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
&gt; &gt; idProduct=0610
&gt; &gt;
&gt; &gt; [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
&gt; &gt; SerialNumber=0
&gt; &gt;
&gt; &gt; [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
&gt; &gt;
&gt; &gt; [ 4.030156] hub 3-3.2:1.0: USB hub found
&gt; &gt;
&gt; &gt; [ 4.033555] hub 3-3.2:1.0: 4 ports detected
&gt; &gt;
&gt; &gt; [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
&gt; &gt; exynos-ehci
&gt; &gt;
&gt; &gt; [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
&gt; &gt; idProduct=772a
&gt; &gt;
&gt; &gt; [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
&gt; &gt; SerialNumber=3
&gt; &gt;
&gt; &gt; [ 4.419921] usb 3-3.2.4: Product: AX88772
&gt; &gt;
&gt; &gt; [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
&gt; &gt;
&gt; &gt; [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
&gt; &gt;
&gt; &gt; [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
&gt; &gt; invalid hw address, using random
&gt; &gt;
&gt; &gt; [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
&gt; &gt; usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
&gt; &gt;
&gt; &gt; [ 7.925810] kjournald starting. Commit interval 5 seconds
&gt; &gt;
&gt; &gt; [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
&gt; &gt;
&gt; &gt; [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
&gt; &gt;
&gt; &gt; [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
&gt; &gt; mode
&gt; &gt;
&gt; &gt; [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
&gt; &gt;
&gt; &gt; [ 7.963607] devtmpfs: mounted
&gt; &gt;
&gt; &gt; [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
&gt; &gt;
&gt; &gt; [ 8.156858] random: init urandom read with 86 bits of entropy
&gt; &gt; available
&gt; &gt;
&gt; &gt; [ 8.378207] init: ureadahead main process (1407) terminated with
&gt; &gt; status 5
&gt; &gt;
&gt; &gt; [ 12.790491] random: nonblocking pool is initialized
&gt; &gt;
&gt; &gt; [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; seconds.
&gt; &gt;
&gt; &gt; [ 240.110770] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 240.115105] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt;
&gt; &gt; [ 240.129430] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; +0x70/0x9c)
&gt; &gt;
&gt; &gt; [ 240.136811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt;
&gt; &gt; [ 240.144273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt;
&gt; &gt; [ 240.151912] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt;
&gt; &gt; [ 240.160593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt;
&gt; &gt; [ 240.169797] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt;
&gt; &gt; [ 240.179518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt;
&gt; &gt; [ 240.188206] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; +0xd8/0xf0)
&gt; &gt;
&gt; &gt; [ 240.195137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; +0x14/0x3c)
&gt; &gt;
&gt; &gt; [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; 120 seconds.
&gt; &gt;
&gt; &gt; [ 240.209712] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 240.214051] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt;
&gt; &gt; [ 240.228385] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt;
&gt; &gt; [ 240.236203] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt;
&gt; &gt; [ 240.243746] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt;
&gt; &gt; [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; seconds.
&gt; &gt;
&gt; &gt; [ 240.258417] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 240.262746] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt;
&gt; &gt; [ 240.277076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; +0x70/0x9c)
&gt; &gt;
&gt; &gt; [ 240.284454] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt;
&gt; &gt; [ 240.291920] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt;
&gt; &gt; [ 240.299556] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt;
&gt; &gt; [ 240.308238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt;
&gt; &gt; [ 240.316747] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt;
&gt; &gt; [ 240.324656] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt;
&gt; &gt; [ 240.333498] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt;
&gt; &gt; [ 240.342180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt;
&gt; &gt; [ 240.350605] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt;
&gt; &gt; [ 240.359016] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt;
&gt; &gt; [ 240.368224] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt;
&gt; &gt; [ 240.377247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt;
&gt; &gt; [ 240.384798] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt;
&gt; &gt; [ 240.393044] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt;
&gt; &gt; [ 240.401815] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt;
&gt; &gt; [ 240.409966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt;
&gt; &gt; [ 240.417691] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt;
&gt; &gt; [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt;
&gt; &gt; [ 240.430272] 7e60: 00037044 00000fb4
&gt; &gt;
&gt; &gt; [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt;
&gt; &gt; [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt;
&gt; &gt; [ 240.455028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt;
&gt; &gt; [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; seconds.
&gt; &gt;
&gt; &gt; [ 360.465763] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 360.470089] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt;
&gt; &gt; [ 360.484419] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; +0x70/0x9c)
&gt; &gt;
&gt; &gt; [ 360.491805] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt;
&gt; &gt; [ 360.499268] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt;
&gt; &gt; [ 360.506908] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt;
&gt; &gt; [ 360.515586] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt;
&gt; &gt; [ 360.524789] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt;
&gt; &gt; [ 360.534512] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt;
&gt; &gt; [ 360.543201] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; +0xd8/0xf0)
&gt; &gt;
&gt; &gt; [ 360.550132] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; +0x14/0x3c)
&gt; &gt;
&gt; &gt; [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; 120 seconds.
&gt; &gt;
&gt; &gt; [ 360.564708] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 360.569047] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt;
&gt; &gt; [ 360.583380] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt;
&gt; &gt; [ 360.591197] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt;
&gt; &gt; [ 360.598741] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt;
&gt; &gt; [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; seconds.
&gt; &gt;
&gt; &gt; [ 360.613412] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 360.617742] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt;
&gt; &gt; [ 360.632071] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; +0x70/0x9c)
&gt; &gt;
&gt; &gt; [ 360.639449] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt;
&gt; &gt; [ 360.646916] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt;
&gt; &gt; [ 360.654552] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt;
&gt; &gt; [ 360.663234] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt;
&gt; &gt; [ 360.671742] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt;
&gt; &gt; [ 360.679651] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt;
&gt; &gt; [ 360.688494] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt;
&gt; &gt; [ 360.697174] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt;
&gt; &gt; [ 360.705600] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt;
&gt; &gt; [ 360.714011] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt;
&gt; &gt; [ 360.723217] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt;
&gt; &gt; [ 360.732243] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt;
&gt; &gt; [ 360.739792] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt;
&gt; &gt; [ 360.748040] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt;
&gt; &gt; [ 360.756807] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt;
&gt; &gt; [ 360.764961] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt;
&gt; &gt; [ 360.772688] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt;
&gt; &gt; [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt;
&gt; &gt; [ 360.785269] 7e60: 00037044 00000fb4
&gt; &gt;
&gt; &gt; [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt;
&gt; &gt; [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt;
&gt; &gt; [ 360.810023] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt;
&gt; &gt; [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; seconds.
&gt; &gt;
&gt; &gt; [ 480.820838] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 480.825094] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt;
&gt; &gt; [ 480.839427] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; +0x70/0x9c)
&gt; &gt;
&gt; &gt; [ 480.846811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt;
&gt; &gt; [ 480.854273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt;
&gt; &gt; [ 480.861914] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt;
&gt; &gt; [ 480.870593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt;
&gt; &gt; [ 480.879795] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt;
&gt; &gt; [ 480.889518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt;
&gt; &gt; [ 480.898196] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; +0xd8/0xf0)
&gt; &gt;
&gt; &gt; [ 480.905137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; +0x14/0x3c)
&gt; &gt;
&gt; &gt; [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; 120 seconds.
&gt; &gt;
&gt; &gt; [ 480.919713] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 480.924052] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt;
&gt; &gt; [ 480.938392] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt;
&gt; &gt; [ 480.946200] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt;
&gt; &gt; [ 480.953747] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt;
&gt; &gt; [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; seconds.
&gt; &gt;
&gt; &gt; [ 480.968417] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 480.972747] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt;
&gt; &gt; [ 480.987076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; +0x70/0x9c)
&gt; &gt;
&gt; &gt; [ 480.994473] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt;
&gt; &gt; [ 481.001922] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt;
&gt; &gt; [ 481.009557] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt;
&gt; &gt; [ 481.018238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt;
&gt; &gt; [ 481.026746] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt;
&gt; &gt; [ 481.034644] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt;
&gt; &gt; [ 481.043500] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt;
&gt; &gt; [ 481.052180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt;
&gt; &gt; [ 481.060606] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt;
&gt; &gt; [ 481.069015] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt;
&gt; &gt; [ 481.078223] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt;
&gt; &gt; [ 481.087247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt;
&gt; &gt; [ 481.094797] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt;
&gt; &gt; [ 481.103045] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt;
&gt; &gt; [ 481.111813] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt;
&gt; &gt; [ 481.119966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt;
&gt; &gt; [ 481.127692] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt;
&gt; &gt; [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt;
&gt; &gt; [ 481.140273] 7e60: 00037044 00000fb4
&gt; &gt;
&gt; &gt; [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt;
&gt; &gt; [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt;
&gt; &gt; [ 481.165028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt;
&gt; &gt; [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; seconds.
&gt; &gt;
&gt; &gt; [ 601.175773] Not tainted 3.18.3-svn1 #2
&gt; &gt;
&gt; &gt; [ 601.180099] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; disables this message.
&gt; &gt;
&gt; &gt; [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt;
&gt; &gt; [ 601.194433] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; +0x70/0x9c)
&gt; &gt;
&gt; &gt; [ 601.201816] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt;
&gt; &gt; [ 601.209278] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt;
&gt; &gt; [ 601.216918] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt;
&gt; &gt; [ 601.225598] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt;
&gt; &gt; [ 601.234800] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt;
&gt; &gt; [ 601.244535] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt;
&gt; &gt; [ 601.253200] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; +0xd8/0xf0)
&gt; &gt;
&gt; &gt; [ 601.260142] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; +0x14/0x3c)
&gt; &gt;
&gt; &gt; ---------------------------------------------------------------------------------
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; Accroding to log.
&gt; &gt;
&gt; &gt; It seems that periperal irq arn't injected properly.
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
&gt; &gt; irq. right?
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; This is Bug??
&gt; &gt;
&gt; &gt; or Intended on Xen 4.5.x?
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; _______________________________________________
&gt; &gt; Xen-devel mailing list
&gt; &gt; Xen-devel@lists.xen.org
&gt; &gt; http://lists.xen.org/xen-devel
&gt; 
&gt; 
&gt; 
&gt; 
&gt; [?img=mr%2Bm%2BBFm%2BBK9hAnZFAM9FqMdFrMqKo%2BSFrM%2FFrudF4tqMxFvKouXM4twFrKZtzFXp6UmaLl5WLl51zlqDBFdp6d5
&gt; MreRhoRx%2Bzk4M6lT70FdM6i0WzwGW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
&gt; 

[-- Attachment #1.2: Type: text/html, Size: 34194 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-20 12:35       ` 신정섭
@ 2015-04-20 17:25         ` Stefano Stabellini
  2015-04-21  2:03           ` 신정섭
  0 siblings, 1 reply; 14+ messages in thread
From: Stefano Stabellini @ 2015-04-20 17:25 UTC (permalink / raw)
  To: 신정섭; +Cc: xen-devel, Ian Campbell, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 27101 bytes --]

On Mon, 20 Apr 2015, 신정섭 wrote:
> Thanks your rely. But sorry i can't understand your explanation fully.
>
>  
>
> I don't want to change GICD setting. I only want to change target Domain0' vcpu injected SPI. vcpu0 or vcpu1.
>
>  
>
> I understand like below.
>
> In Xen4.4, vgic_vcpu_inject_irq() can inject SPI to any Domain0's vcpu on any pcpu.
>
> But int Xen4.5 vgic_vcpu_inject_irq() can inject SPI on only pcpu that receive SPI from GICD.
>
> Right?

Yes, if you meant the virtual GICD (not the physical GICD).

I'll repeat:

In Xen 4.5 vgic_vcpu_inject_irq can inject a given SPI only to the pcpu
that is set to run the vcpu that should receive the interrupt, as per
the vGICD configuration.

So if you

echo VCPU_NUMBER > /proc/irq/IRQ_NUMBER/smp_affinity

in the guest, it should work and it should have a concrete effect in the
delivery of the physical interrupt.


>  
>
>  
>
> -----Original Message-----
> From: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>
> To: "신정섭"<supsup5642@naver.com>;
> Cc: "Ian Campbell"<ian.campbell@citrix.com>; <xen-devel@lists.xen.org>; "Stefano Stabellini"<Stefano.Stabellini@eu.citrix.com>;
> Sent: 2015-04-20 (월) 19:49:50
> Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
>  
>
> In Xen 4.5 we rely on the fact that the physical irq is routed to the
> physical cpu running the vcpu of the domain that needs to receive the
> corresponding virq.
>
> So if you want to inject IRQ 100 to CPU 1, while Dom0 is set to receive
> vIRQ 100 (virtual irq corresponding to IRQ 100) to vcpu0, running on
> CPU 0, that won't work.
>
>
> On Sat, 18 Apr 2015, 신정섭 wrote:
> > NO
> >
> >  
> >
> > "Peripheral IRQ routing" means that  
> >
> > Xen select itself one of domain0's vCPU to inject periperal IRQ.
> >
> >  
> >
> > So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
> >
> > periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
> >
> >  
> >
> > I know that periperal IRQ can be process on any cpu in linux.
> >
> > So All Domain0's vcpu can process periperal IRQ injected by Xen.
> >
> >  
> >
> > On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
> >
> > But Xen 4.5.0 it dosen't.
> >
> >  
> >
> >  
> >
> > -----Original Message-----
> > From: "Ian Campbell"<ian.campbell@citrix.com>
> > To: "신정섭"<supsup5642@naver.com>;
> > Cc: <xen-devel@lists.xen.org>; "Stefano Stabellini"<Stefano.Stabellini@eu.citrix.com>;
> > Sent: 2015-04-17 (금) 18:49:39
> > Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
> >  
> >
> > On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
> > >
> > >
> > > I'm studying periperal irq routing to Domain0's vCPU
> >
> > What do you mean by "peripheral irq routing"? Do you mean supporting the
> > guest writing to GICD_ITARGER to cause an interrupt to be injected to a
> > specific vcpu?
> >
> > I thought that was supposed to work, Stefano?
> >
> > >
> > >
> > >
> > > I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
> > >
> > > So Xen can select vcpu0 or vcpu1 to inject periperal irq.
> > >
> > >
> > >
> > > I tested periperal routing on Xen 4.4.1 and it works well.
> > >
> > > But I tested periperal routing on Xen 4.5.0 but irq dosen't works
> > > well.
> > >
> > >
> > >
> > > So I tested very simple periperal routing code like this.
> > >
> > > 'flag' is grobal variable.
> > >
> > >
> > >
> > > * In "do_IRQ" function on Xen 4.4.1
> > >
> > > -----------------------------------------------------
> > >
> > > - from
> > >
> > > if ( desc->status & IRQ_GUEST )
> > >
> > > {
> > >
> > > struct domain *d = action->dev_id;
> > >
> > >
> > >
> > > desc->handler->end(desc);
> > >
> > >
> > >
> > > desc->status = IRQ_INPROGRESS;
> > >
> > > desc->arch.eoi_cpu = smp_processor_id();
> > >
> > >
> > >
> > > /* XXX: inject irq into all guest vcpus */
> > >
> > > vgic_vcpu_inject_irq(d->vcpu[0], irq, 0);
> > >
> > > goto out_no_end;
> > >
> > > }
> > >
> > > -to if ( desc->status & IRQ_GUEST ) {
> > >
> > > struct domain *d = action->dev_id;
> > >
> > >
> > >
> > > desc->handler->end(desc);
> > >
> > >
> > >
> > > desc->status = IRQ_INPROGRESS;
> > >
> > > desc->arch.eoi_cpu = smp_processor_id();
> > >
> > >
> > >
> > > /* XXX: inject irq into all guest vcpus */
> > >
> > > vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq, 0);
> > >
> > > goto out_no_end;
> > >
> > > }
> > >
> > > -----------------------------------------------------
> > >
> > >
> > >
> > > * In "vgic_vcpu_inject_spi" function on Xen 4.5.0
> > >
> > > -----------------------------------------------------
> > >
> > > -from
> > >
> > > void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> > >
> > > {
> > >
> > > struct vcpu *v;
> > >
> > >
> > >
> > > /* the IRQ needs to be an SPI */
> > >
> > > ASSERT(irq >= 32 && irq <= gic_number_lines());
> > >
> > >
> > >
> > > v = vgic_get_target_vcpu(d->vcpu[0], irq);
> > >
> > > vgic_vcpu_inject_irq(v, irq);
> > >
> > > }
> > >
> > > -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> > >
> > > {
> > >
> > > struct vcpu *v;
> > >
> > >
> > >
> > > /* the IRQ needs to be an SPI */
> > >
> > > ASSERT(irq >= 32 && irq <= gic_number_lines());
> > >
> > >
> > >
> > > vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq);
> > >
> > > }
> > >
> > > -----------------------------------------------------
> > >
> > > so periperal irq injected to Domain0's vCPU0 or vCPU1.
> > >
> > >
> > >
> > > on Xen 4.4.1 it work well and i can confirm
> > >
> > > periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
> > > command.
> > >
> > >
> > >
> > > * cat /proc/interrupts command on Xen 4.4.1
> > >
> > > --------------------------------------------------
> > >
> > > CPU0 CPU1
> > >
> > > 27: 8690 8558 GIC 27 arch_timer
> > >
> > > 31: 34 1 GIC 31 events
> > >
> > > 65: 0 0 GIC 65 10800000.mdma
> > >
> > > 66: 0 0 GIC 66 121a0000.pdma
> > >
> > > 67: 0 0 GIC 67 121b0000.pdma
> > >
> > > 74: 0 0 GIC 74 101d0000.watchdog
> > >
> > > 75: 0 0 GIC 75 s3c2410-rtc alarm
> > >
> > > 76: 0 0 GIC 76 s3c2410-rtc tick
> > >
> > > 77: 0 0 GIC 77 13400000.pinctrl
> > >
> > > 78: 0 0 GIC 78 11400000.pinctrl
> > >
> > > 79: 0 0 GIC 79 3860000.pinctrl
> > >
> > > 82: 0 0 GIC 82 10d10000.pinctrl
> > >
> > > 88: 229 233 GIC 88 12c60000.i2c
> > >
> > > 90: 0 0 GIC 90 12c80000.i2c
> > >
> > > 91: 0 0 GIC 91 12c90000.i2c
> > >
> > > 96: 0 0 GIC 96 12ce0000.i2c
> > >
> > > 97: 0 0 GIC 97 10060000.tmu
> > >
> > > 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
> > >
> > > 104: 0 0 GIC 104 xhci-hcd:usb1
> > >
> > > 107: 710 710 GIC 107 dw-mci
> > >
> > > 109: 9602 9610 GIC 109 dw-mci
> > >
> > > 156: 0 0 GIC 156 11c10000.mdma
> > >
> > > 160: 0 0 xen-dyn-event xenbus
> > >
> > > 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
> > >
> > > 184: 33 0 xen-percpu-virq hvc_console
> > >
> > > 185: 0 0 s5m8767 12 rtc-alarm0
> > >
> > > 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
> > >
> > > 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
> > >
> > > 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
> > >
> > > 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
> > >
> > > 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
> > >
> > > 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
> > >
> > > IPI0: 0 0 CPU wakeup interrupts
> > >
> > > IPI1: 0 0 Timer broadcast interrupts
> > >
> > > IPI2: 6660 6920 Rescheduling interrupts
> > >
> > > IPI3: 0 0 Function call interrupts
> > >
> > > IPI4: 9 3 Single function call interrupts
> > >
> > > IPI5: 0 0 CPU stop interrupts
> > >
> > > IPI6: 0 0 IRQ work interrupts
> > >
> > > IPI7: 0 0 completion interrupts
> > >
> > >
> > >
> > > Err: 0
> > >
> > > -----------------------------------------------------
> > >
> > >
> > >
> > > But on Xen 4.5.0, Dom0 can not booting.
> > >
> > > below is domain0's booting message on Xen 4.5.0
> > >
> > >
> > >
> > > * domain0's booting message on Xen 4.5.0
> > >
> > > -----------------------------------------------------
> > >
> > > [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
> > > exynos-ehci
> > >
> > > [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
> > > idProduct=0610
> > >
> > > [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
> > > SerialNumber=0
> > >
> > > [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
> > >
> > > [ 4.030156] hub 3-3.2:1.0: USB hub found
> > >
> > > [ 4.033555] hub 3-3.2:1.0: 4 ports detected
> > >
> > > [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
> > > exynos-ehci
> > >
> > > [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
> > > idProduct=772a
> > >
> > > [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
> > > SerialNumber=3
> > >
> > > [ 4.419921] usb 3-3.2.4: Product: AX88772
> > >
> > > [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
> > >
> > > [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
> > >
> > > [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
> > > invalid hw address, using random
> > >
> > > [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
> > > usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
> > >
> > > [ 7.925810] kjournald starting. Commit interval 5 seconds
> > >
> > > [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
> > >
> > > [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
> > >
> > > [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
> > > mode
> > >
> > > [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
> > >
> > > [ 7.963607] devtmpfs: mounted
> > >
> > > [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
> > >
> > > [ 8.156858] random: init urandom read with 86 bits of entropy
> > > available
> > >
> > > [ 8.378207] init: ureadahead main process (1407) terminated with
> > > status 5
> > >
> > > [ 12.790491] random: nonblocking pool is initialized
> > >
> > > [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
> > > seconds.
> > >
> > > [ 240.110770] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 240.115105] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
> > >
> > > [ 240.129430] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > +0x70/0x9c)
> > >
> > > [ 240.136811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > (bit_wait_io+0x34/0x58)
> > >
> > > [ 240.144273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > (__wait_on_bit+0x80/0xb8)
> > >
> > > [ 240.151912] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > (out_of_line_wait_on_bit+0x6c/0x74)
> > >
> > > [ 240.160593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > (__sync_dirty_buffer+0xc0/0xec)
> > >
> > > [ 240.169797] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > (journal_commit_transaction+0xfc8/0x139c)
> > >
> > > [ 240.179518] [<c0182244>] (journal_commit_transaction) from
> > > [<c0184e48>] (kjournald+0xe4/0x268)
> > >
> > > [ 240.188206] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > +0xd8/0xf0)
> > >
> > > [ 240.195137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > +0x14/0x3c)
> > >
> > > [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
> > > 120 seconds.
> > >
> > > [ 240.209712] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 240.214051] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > >
> > > [ 240.228385] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > (log_wait_commit+0xd8/0x120)
> > >
> > > [ 240.236203] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > (do_fsync+0x50/0x78)
> > >
> > > [ 240.243746] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > (ret_fast_syscall+0x0/0x30)
> > >
> > > [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
> > > seconds.
> > >
> > > [ 240.258417] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 240.262746] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > >
> > > [ 240.277076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > +0x70/0x9c)
> > >
> > > [ 240.284454] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > (bit_wait_io+0x34/0x58)
> > >
> > > [ 240.291920] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > (__wait_on_bit+0x80/0xb8)
> > >
> > > [ 240.299556] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > (out_of_line_wait_on_bit+0x6c/0x74)
> > >
> > > [ 240.308238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > (__bread_gfp+0xa8/0xec)
> > >
> > > [ 240.316747] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > (ext3_get_branch+0x88/0x14c)
> > >
> > > [ 240.324656] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > (ext3_get_blocks_handle+0x90/0xa40)
> > >
> > > [ 240.333498] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > (ext3_get_block+0x9c/0xdc)
> > >
> > > [ 240.342180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > (do_mpage_readpage+0x470/0x7ac)
> > >
> > > [ 240.350605] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > (mpage_readpages+0xc8/0x118)
> > >
> > > [ 240.359016] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > (__do_page_cache_readahead+0x1b0/0x260)
> > >
> > > [ 240.368224] [<c00943d8>] (__do_page_cache_readahead) from
> > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > >
> > > [ 240.377247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > (__do_fault+0x34/0x88)
> > >
> > > [ 240.384798] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > (do_cow_fault.isra.95+0x5c/0x17c)
> > >
> > > [ 240.393044] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > (handle_mm_fault+0x410/0x8d8)
> > >
> > > [ 240.401815] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > (do_page_fault+0x194/0x280)
> > >
> > > [ 240.409966] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > (do_DataAbort+0x38/0x9c)
> > >
> > > [ 240.417691] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > (__dabt_svc+0x38/0x60)
> > >
> > > [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > >
> > > [ 240.430272] 7e60: 00037044 00000fb4
> > >
> > > [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > 00037044 cba3b900 cae46c00
> > >
> > > [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > c020cb84 20000013 ffffffff
> > >
> > > [ 240.455028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > (__clear_user_std+0x34/0x64)
> > >
> > > [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
> > > seconds.
> > >
> > > [ 360.465763] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 360.470089] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
> > >
> > > [ 360.484419] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > +0x70/0x9c)
> > >
> > > [ 360.491805] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > (bit_wait_io+0x34/0x58)
> > >
> > > [ 360.499268] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > (__wait_on_bit+0x80/0xb8)
> > >
> > > [ 360.506908] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > (out_of_line_wait_on_bit+0x6c/0x74)
> > >
> > > [ 360.515586] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > (__sync_dirty_buffer+0xc0/0xec)
> > >
> > > [ 360.524789] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > (journal_commit_transaction+0xfc8/0x139c)
> > >
> > > [ 360.534512] [<c0182244>] (journal_commit_transaction) from
> > > [<c0184e48>] (kjournald+0xe4/0x268)
> > >
> > > [ 360.543201] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > +0xd8/0xf0)
> > >
> > > [ 360.550132] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > +0x14/0x3c)
> > >
> > > [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
> > > 120 seconds.
> > >
> > > [ 360.564708] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 360.569047] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > >
> > > [ 360.583380] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > (log_wait_commit+0xd8/0x120)
> > >
> > > [ 360.591197] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > (do_fsync+0x50/0x78)
> > >
> > > [ 360.598741] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > (ret_fast_syscall+0x0/0x30)
> > >
> > > [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
> > > seconds.
> > >
> > > [ 360.613412] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 360.617742] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > >
> > > [ 360.632071] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > +0x70/0x9c)
> > >
> > > [ 360.639449] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > (bit_wait_io+0x34/0x58)
> > >
> > > [ 360.646916] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > (__wait_on_bit+0x80/0xb8)
> > >
> > > [ 360.654552] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > (out_of_line_wait_on_bit+0x6c/0x74)
> > >
> > > [ 360.663234] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > (__bread_gfp+0xa8/0xec)
> > >
> > > [ 360.671742] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > (ext3_get_branch+0x88/0x14c)
> > >
> > > [ 360.679651] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > (ext3_get_blocks_handle+0x90/0xa40)
> > >
> > > [ 360.688494] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > (ext3_get_block+0x9c/0xdc)
> > >
> > > [ 360.697174] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > (do_mpage_readpage+0x470/0x7ac)
> > >
> > > [ 360.705600] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > (mpage_readpages+0xc8/0x118)
> > >
> > > [ 360.714011] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > (__do_page_cache_readahead+0x1b0/0x260)
> > >
> > > [ 360.723217] [<c00943d8>] (__do_page_cache_readahead) from
> > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > >
> > > [ 360.732243] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > (__do_fault+0x34/0x88)
> > >
> > > [ 360.739792] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > (do_cow_fault.isra.95+0x5c/0x17c)
> > >
> > > [ 360.748040] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > (handle_mm_fault+0x410/0x8d8)
> > >
> > > [ 360.756807] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > (do_page_fault+0x194/0x280)
> > >
> > > [ 360.764961] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > (do_DataAbort+0x38/0x9c)
> > >
> > > [ 360.772688] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > (__dabt_svc+0x38/0x60)
> > >
> > > [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > >
> > > [ 360.785269] 7e60: 00037044 00000fb4
> > >
> > > [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > 00037044 cba3b900 cae46c00
> > >
> > > [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > c020cb84 20000013 ffffffff
> > >
> > > [ 360.810023] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > (__clear_user_std+0x34/0x64)
> > >
> > > [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
> > > seconds.
> > >
> > > [ 480.820838] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 480.825094] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
> > >
> > > [ 480.839427] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > +0x70/0x9c)
> > >
> > > [ 480.846811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > (bit_wait_io+0x34/0x58)
> > >
> > > [ 480.854273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > (__wait_on_bit+0x80/0xb8)
> > >
> > > [ 480.861914] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > (out_of_line_wait_on_bit+0x6c/0x74)
> > >
> > > [ 480.870593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > (__sync_dirty_buffer+0xc0/0xec)
> > >
> > > [ 480.879795] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > (journal_commit_transaction+0xfc8/0x139c)
> > >
> > > [ 480.889518] [<c0182244>] (journal_commit_transaction) from
> > > [<c0184e48>] (kjournald+0xe4/0x268)
> > >
> > > [ 480.898196] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > +0xd8/0xf0)
> > >
> > > [ 480.905137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > +0x14/0x3c)
> > >
> > > [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
> > > 120 seconds.
> > >
> > > [ 480.919713] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 480.924052] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > >
> > > [ 480.938392] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > (log_wait_commit+0xd8/0x120)
> > >
> > > [ 480.946200] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > (do_fsync+0x50/0x78)
> > >
> > > [ 480.953747] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > (ret_fast_syscall+0x0/0x30)
> > >
> > > [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
> > > seconds.
> > >
> > > [ 480.968417] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 480.972747] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > >
> > > [ 480.987076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > +0x70/0x9c)
> > >
> > > [ 480.994473] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > (bit_wait_io+0x34/0x58)
> > >
> > > [ 481.001922] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > (__wait_on_bit+0x80/0xb8)
> > >
> > > [ 481.009557] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > (out_of_line_wait_on_bit+0x6c/0x74)
> > >
> > > [ 481.018238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > (__bread_gfp+0xa8/0xec)
> > >
> > > [ 481.026746] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > (ext3_get_branch+0x88/0x14c)
> > >
> > > [ 481.034644] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > (ext3_get_blocks_handle+0x90/0xa40)
> > >
> > > [ 481.043500] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > (ext3_get_block+0x9c/0xdc)
> > >
> > > [ 481.052180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > (do_mpage_readpage+0x470/0x7ac)
> > >
> > > [ 481.060606] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > (mpage_readpages+0xc8/0x118)
> > >
> > > [ 481.069015] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > (__do_page_cache_readahead+0x1b0/0x260)
> > >
> > > [ 481.078223] [<c00943d8>] (__do_page_cache_readahead) from
> > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > >
> > > [ 481.087247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > (__do_fault+0x34/0x88)
> > >
> > > [ 481.094797] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > (do_cow_fault.isra.95+0x5c/0x17c)
> > >
> > > [ 481.103045] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > (handle_mm_fault+0x410/0x8d8)
> > >
> > > [ 481.111813] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > (do_page_fault+0x194/0x280)
> > >
> > > [ 481.119966] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > (do_DataAbort+0x38/0x9c)
> > >
> > > [ 481.127692] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > (__dabt_svc+0x38/0x60)
> > >
> > > [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > >
> > > [ 481.140273] 7e60: 00037044 00000fb4
> > >
> > > [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > 00037044 cba3b900 cae46c00
> > >
> > > [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > c020cb84 20000013 ffffffff
> > >
> > > [ 481.165028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > (__clear_user_std+0x34/0x64)
> > >
> > > [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
> > > seconds.
> > >
> > > [ 601.175773] Not tainted 3.18.3-svn1 #2
> > >
> > > [ 601.180099] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > disables this message.
> > >
> > > [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
> > >
> > > [ 601.194433] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > +0x70/0x9c)
> > >
> > > [ 601.201816] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > (bit_wait_io+0x34/0x58)
> > >
> > > [ 601.209278] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > (__wait_on_bit+0x80/0xb8)
> > >
> > > [ 601.216918] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > (out_of_line_wait_on_bit+0x6c/0x74)
> > >
> > > [ 601.225598] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > (__sync_dirty_buffer+0xc0/0xec)
> > >
> > > [ 601.234800] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > (journal_commit_transaction+0xfc8/0x139c)
> > >
> > > [ 601.244535] [<c0182244>] (journal_commit_transaction) from
> > > [<c0184e48>] (kjournald+0xe4/0x268)
> > >
> > > [ 601.253200] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > +0xd8/0xf0)
> > >
> > > [ 601.260142] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > +0x14/0x3c)
> > >
> > > ---------------------------------------------------------------------------------
> > >
> > >
> > >
> > > Accroding to log.
> > >
> > > It seems that periperal irq arn't injected properly.
> > >
> > >
> > >
> > > I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
> > > irq. right?
> > >
> > >
> > >
> > > This is Bug??
> > >
> > > or Intended on Xen 4.5.x?
> > >
> > >
> > >
> > > _______________________________________________
> > > Xen-devel mailing list
> > > Xen-devel@lists.xen.org
> > > http://lists.xen.org/xen-devel
> >
> >
> >
> >
> > [?img=mr%2Bm%2BBFm%2BBK9hAnZFAM9FqMdFrMqKo%2BSFrM%2FFrudF4tqMxFvKouXM4twFrKZtzFXp6UmaLl5WLl51zlqDBFdp6d5
> > MreRhoRx%2Bzk4M6lT70FdM6i0WzwGW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
> >
> [?img=mqFm%2BBFm%2BBF0hAnZFAM9FqFoM6twazErKxk0FxgrMo3CF6MwM6UZpAp0K6JgMX%2B0Mou974lR74lcWNFlbX30WLloWrdQaXFdp6pCW4Y5bX3CM4knWz051
> EI0%2BLlo1B3Z1B25MreR.gif]
> 

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-20 17:25         ` Stefano Stabellini
@ 2015-04-21  2:03           ` 신정섭
  2015-04-21  2:46             ` 신정섭
  2015-04-21 10:13             ` Stefano Stabellini
  0 siblings, 2 replies; 14+ messages in thread
From: 신정섭 @ 2015-04-21  2:03 UTC (permalink / raw)
  To: Stefano Stabellini; +Cc: Ian Campbell, xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 35785 bytes --]

I have a one more question. 
 
In Xen ARM 4.5, All SPI is routed to pcpu0 that run domain0's vcpu0.
If domain0's vcpu0 run on pcpu0 All SPI is routed to pcpu0
If domain0's vcpu0 run on pcpu1 All SPI is routed to pcpu1
 
these mean that Xen ARM 4.5 can inject spi only to domain0's vcpu0
and Xen ARM 4.5 cannot inject spi to domain0's vcpu1.
Right?
 
And is this reason ARM 4.5 don't use maintanance interrupt?
 
Thanks
 
-----Original Message-----
From: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt; 
To: "신정섭"&lt;supsup5642@naver.com&gt;; 
Cc: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt;; "Ian Campbell"&lt;ian.campbell@citrix.com&gt;; &lt;xen-devel@lists.xen.org&gt;; 
Sent: 2015-04-21 (화) 02:25:09
Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
 
On Mon, 20 Apr 2015, 신정섭 wrote:
&gt; Thanks your rely. But sorry i can't understand your explanation fully.
&gt; 
&gt;  
&gt; 
&gt; I don't want to change GICD setting. I only want to change target Domain0' vcpu injected SPI. vcpu0 or vcpu1.
&gt; 
&gt;  
&gt; 
&gt; I understand like below.
&gt; 
&gt; In Xen4.4, vgic_vcpu_inject_irq() can inject SPI to any Domain0's vcpu on any pcpu.
&gt; 
&gt; But int Xen4.5 vgic_vcpu_inject_irq() can inject SPI on only pcpu that receive SPI from GICD.
&gt; 
&gt; Right?

Yes, if you meant the virtual GICD (not the physical GICD).

I'll repeat:

In Xen 4.5 vgic_vcpu_inject_irq can inject a given SPI only to the pcpu
that is set to run the vcpu that should receive the interrupt, as per
the vGICD configuration.

So if you

echo VCPU_NUMBER &gt; /proc/irq/IRQ_NUMBER/smp_affinity

in the guest, it should work and it should have a concrete effect in the
delivery of the physical interrupt.


&gt;  
&gt; 
&gt;  
&gt; 
&gt; -----Original Message-----
&gt; From: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt;
&gt; To: "신정섭"&lt;supsup5642@naver.com&gt;;
&gt; Cc: "Ian Campbell"&lt;ian.campbell@citrix.com&gt;; &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;;
&gt; Sent: 2015-04-20 (월) 19:49:50
&gt; Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
&gt;  
&gt; 
&gt; In Xen 4.5 we rely on the fact that the physical irq is routed to the
&gt; physical cpu running the vcpu of the domain that needs to receive the
&gt; corresponding virq.
&gt; 
&gt; So if you want to inject IRQ 100 to CPU 1, while Dom0 is set to receive
&gt; vIRQ 100 (virtual irq corresponding to IRQ 100) to vcpu0, running on
&gt; CPU 0, that won't work.
&gt; 
&gt; 
&gt; On Sat, 18 Apr 2015, 신정섭 wrote:
&gt; &gt; NO
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; "Peripheral IRQ routing" means that  
&gt; &gt;
&gt; &gt; Xen select itself one of domain0's vCPU to inject periperal IRQ.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
&gt; &gt;
&gt; &gt; periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; I know that periperal IRQ can be process on any cpu in linux.
&gt; &gt;
&gt; &gt; So All Domain0's vcpu can process periperal IRQ injected by Xen.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
&gt; &gt;
&gt; &gt; But Xen 4.5.0 it dosen't.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; -----Original Message-----
&gt; &gt; From: "Ian Campbell"&lt;ian.campbell@citrix.com&gt;
&gt; &gt; To: "신정섭"&lt;supsup5642@naver.com&gt;;
&gt; &gt; Cc: &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;;
&gt; &gt; Sent: 2015-04-17 (금) 18:49:39
&gt; &gt; Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
&gt; &gt;  
&gt; &gt;
&gt; &gt; On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; I'm studying periperal irq routing to Domain0's vCPU
&gt; &gt;
&gt; &gt; What do you mean by "peripheral irq routing"? Do you mean supporting the
&gt; &gt; guest writing to GICD_ITARGER to cause an interrupt to be injected to a
&gt; &gt; specific vcpu?
&gt; &gt;
&gt; &gt; I thought that was supposed to work, Stefano?
&gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
&gt; &gt; &gt;
&gt; &gt; &gt; So Xen can select vcpu0 or vcpu1 to inject periperal irq.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; I tested periperal routing on Xen 4.4.1 and it works well.
&gt; &gt; &gt;
&gt; &gt; &gt; But I tested periperal routing on Xen 4.5.0 but irq dosen't works
&gt; &gt; &gt; well.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; So I tested very simple periperal routing code like this.
&gt; &gt; &gt;
&gt; &gt; &gt; 'flag' is grobal variable.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; * In "do_IRQ" function on Xen 4.4.1
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; - from
&gt; &gt; &gt;
&gt; &gt; &gt; if ( desc-&gt;status &amp; IRQ_GUEST )
&gt; &gt; &gt;
&gt; &gt; &gt; {
&gt; &gt; &gt;
&gt; &gt; &gt; struct domain *d = action-&gt;dev_id;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;handler-&gt;end(desc);
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; /* XXX: inject irq into all guest vcpus */
&gt; &gt; &gt;
&gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[0], irq, 0);
&gt; &gt; &gt;
&gt; &gt; &gt; goto out_no_end;
&gt; &gt; &gt;
&gt; &gt; &gt; }
&gt; &gt; &gt;
&gt; &gt; &gt; -to if ( desc-&gt;status &amp; IRQ_GUEST ) {
&gt; &gt; &gt;
&gt; &gt; &gt; struct domain *d = action-&gt;dev_id;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;handler-&gt;end(desc);
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; /* XXX: inject irq into all guest vcpus */
&gt; &gt; &gt;
&gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq, 0);
&gt; &gt; &gt;
&gt; &gt; &gt; goto out_no_end;
&gt; &gt; &gt;
&gt; &gt; &gt; }
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; * In "vgic_vcpu_inject_spi" function on Xen 4.5.0
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; -from
&gt; &gt; &gt;
&gt; &gt; &gt; void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; &gt; &gt;
&gt; &gt; &gt; {
&gt; &gt; &gt;
&gt; &gt; &gt; struct vcpu *v;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; /* the IRQ needs to be an SPI */
&gt; &gt; &gt;
&gt; &gt; &gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; v = vgic_get_target_vcpu(d-&gt;vcpu[0], irq);
&gt; &gt; &gt;
&gt; &gt; &gt; vgic_vcpu_inject_irq(v, irq);
&gt; &gt; &gt;
&gt; &gt; &gt; }
&gt; &gt; &gt;
&gt; &gt; &gt; -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; &gt; &gt;
&gt; &gt; &gt; {
&gt; &gt; &gt;
&gt; &gt; &gt; struct vcpu *v;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; /* the IRQ needs to be an SPI */
&gt; &gt; &gt;
&gt; &gt; &gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq);
&gt; &gt; &gt;
&gt; &gt; &gt; }
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; so periperal irq injected to Domain0's vCPU0 or vCPU1.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; on Xen 4.4.1 it work well and i can confirm
&gt; &gt; &gt;
&gt; &gt; &gt; periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
&gt; &gt; &gt; command.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; * cat /proc/interrupts command on Xen 4.4.1
&gt; &gt; &gt;
&gt; &gt; &gt; --------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; CPU0 CPU1
&gt; &gt; &gt;
&gt; &gt; &gt; 27: 8690 8558 GIC 27 arch_timer
&gt; &gt; &gt;
&gt; &gt; &gt; 31: 34 1 GIC 31 events
&gt; &gt; &gt;
&gt; &gt; &gt; 65: 0 0 GIC 65 10800000.mdma
&gt; &gt; &gt;
&gt; &gt; &gt; 66: 0 0 GIC 66 121a0000.pdma
&gt; &gt; &gt;
&gt; &gt; &gt; 67: 0 0 GIC 67 121b0000.pdma
&gt; &gt; &gt;
&gt; &gt; &gt; 74: 0 0 GIC 74 101d0000.watchdog
&gt; &gt; &gt;
&gt; &gt; &gt; 75: 0 0 GIC 75 s3c2410-rtc alarm
&gt; &gt; &gt;
&gt; &gt; &gt; 76: 0 0 GIC 76 s3c2410-rtc tick
&gt; &gt; &gt;
&gt; &gt; &gt; 77: 0 0 GIC 77 13400000.pinctrl
&gt; &gt; &gt;
&gt; &gt; &gt; 78: 0 0 GIC 78 11400000.pinctrl
&gt; &gt; &gt;
&gt; &gt; &gt; 79: 0 0 GIC 79 3860000.pinctrl
&gt; &gt; &gt;
&gt; &gt; &gt; 82: 0 0 GIC 82 10d10000.pinctrl
&gt; &gt; &gt;
&gt; &gt; &gt; 88: 229 233 GIC 88 12c60000.i2c
&gt; &gt; &gt;
&gt; &gt; &gt; 90: 0 0 GIC 90 12c80000.i2c
&gt; &gt; &gt;
&gt; &gt; &gt; 91: 0 0 GIC 91 12c90000.i2c
&gt; &gt; &gt;
&gt; &gt; &gt; 96: 0 0 GIC 96 12ce0000.i2c
&gt; &gt; &gt;
&gt; &gt; &gt; 97: 0 0 GIC 97 10060000.tmu
&gt; &gt; &gt;
&gt; &gt; &gt; 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
&gt; &gt; &gt;
&gt; &gt; &gt; 104: 0 0 GIC 104 xhci-hcd:usb1
&gt; &gt; &gt;
&gt; &gt; &gt; 107: 710 710 GIC 107 dw-mci
&gt; &gt; &gt;
&gt; &gt; &gt; 109: 9602 9610 GIC 109 dw-mci
&gt; &gt; &gt;
&gt; &gt; &gt; 156: 0 0 GIC 156 11c10000.mdma
&gt; &gt; &gt;
&gt; &gt; &gt; 160: 0 0 xen-dyn-event xenbus
&gt; &gt; &gt;
&gt; &gt; &gt; 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
&gt; &gt; &gt;
&gt; &gt; &gt; 184: 33 0 xen-percpu-virq hvc_console
&gt; &gt; &gt;
&gt; &gt; &gt; 185: 0 0 s5m8767 12 rtc-alarm0
&gt; &gt; &gt;
&gt; &gt; &gt; 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
&gt; &gt; &gt;
&gt; &gt; &gt; 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
&gt; &gt; &gt;
&gt; &gt; &gt; 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
&gt; &gt; &gt;
&gt; &gt; &gt; 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
&gt; &gt; &gt;
&gt; &gt; &gt; 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
&gt; &gt; &gt;
&gt; &gt; &gt; 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
&gt; &gt; &gt;
&gt; &gt; &gt; IPI0: 0 0 CPU wakeup interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI1: 0 0 Timer broadcast interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI2: 6660 6920 Rescheduling interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI3: 0 0 Function call interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI4: 9 3 Single function call interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI5: 0 0 CPU stop interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI6: 0 0 IRQ work interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI7: 0 0 completion interrupts
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; Err: 0
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; But on Xen 4.5.0, Dom0 can not booting.
&gt; &gt; &gt;
&gt; &gt; &gt; below is domain0's booting message on Xen 4.5.0
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; * domain0's booting message on Xen 4.5.0
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
&gt; &gt; &gt; exynos-ehci
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
&gt; &gt; &gt; idProduct=0610
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
&gt; &gt; &gt; SerialNumber=0
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.030156] hub 3-3.2:1.0: USB hub found
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.033555] hub 3-3.2:1.0: 4 ports detected
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
&gt; &gt; &gt; exynos-ehci
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
&gt; &gt; &gt; idProduct=772a
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
&gt; &gt; &gt; SerialNumber=3
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.419921] usb 3-3.2.4: Product: AX88772
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
&gt; &gt; &gt; invalid hw address, using random
&gt; &gt; &gt;
&gt; &gt; &gt; [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
&gt; &gt; &gt; usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.925810] kjournald starting. Commit interval 5 seconds
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
&gt; &gt; &gt; mode
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.963607] devtmpfs: mounted
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 8.156858] random: init urandom read with 86 bits of entropy
&gt; &gt; &gt; available
&gt; &gt; &gt;
&gt; &gt; &gt; [ 8.378207] init: ureadahead main process (1407) terminated with
&gt; &gt; &gt; status 5
&gt; &gt; &gt;
&gt; &gt; &gt; [ 12.790491] random: nonblocking pool is initialized
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.110770] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.115105] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.129430] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.136811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.144273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.151912] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.160593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.169797] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.179518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.188206] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.195137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.209712] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.214051] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.228385] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.236203] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.243746] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.258417] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.262746] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.277076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.284454] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.291920] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.299556] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.308238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.316747] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.324656] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.333498] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.342180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.350605] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.359016] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.368224] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.377247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.384798] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.393044] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.401815] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.409966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.417691] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.430272] 7e60: 00037044 00000fb4
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.455028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.465763] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.470089] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.484419] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.491805] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.499268] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.506908] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.515586] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.524789] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.534512] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.543201] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.550132] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.564708] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.569047] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.583380] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.591197] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.598741] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.613412] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.617742] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.632071] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.639449] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.646916] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.654552] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.663234] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.671742] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.679651] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.688494] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.697174] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.705600] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.714011] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.723217] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.732243] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.739792] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.748040] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.756807] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.764961] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.772688] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.785269] 7e60: 00037044 00000fb4
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.810023] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.820838] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.825094] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.839427] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.846811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.854273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.861914] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.870593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.879795] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.889518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.898196] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.905137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.919713] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.924052] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.938392] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.946200] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.953747] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.968417] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.972747] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.987076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.994473] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.001922] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.009557] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.018238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.026746] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.034644] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.043500] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.052180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.060606] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.069015] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.078223] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.087247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.094797] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.103045] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.111813] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.119966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.127692] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.140273] 7e60: 00037044 00000fb4
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.165028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.175773] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.180099] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.194433] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.201816] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.209278] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.216918] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.225598] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.234800] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.244535] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.253200] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.260142] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt;
&gt; &gt; &gt; ---------------------------------------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; Accroding to log.
&gt; &gt; &gt;
&gt; &gt; &gt; It seems that periperal irq arn't injected properly.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
&gt; &gt; &gt; irq. right?
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; This is Bug??
&gt; &gt; &gt;
&gt; &gt; &gt; or Intended on Xen 4.5.x?
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; _______________________________________________
&gt; &gt; &gt; Xen-devel mailing list
&gt; &gt; &gt; Xen-devel@lists.xen.org
&gt; &gt; &gt; http://lists.xen.org/xen-devel
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; [?img=mr%2Bm%2BBFm%2BBK9hAnZFAM9FqMdFrMqKo%2BSFrM%2FFrudF4tqMxFvKouXM4twFrKZtzFXp6UmaLl5WLl51zlqDBFdp6d5
&gt; &gt; MreRhoRx%2Bzk4M6lT70FdM6i0WzwGW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
&gt; &gt;
&gt; [?img=mqFm%2BBFm%2BBF0hAnZFAM9FqFoM6twazErKxk0FxgrMo3CF6MwM6UZpAp0K6JgMX%2B0Mou974lR74lcWNFlbX30WLloWrdQaXFdp6pCW4Y5bX3CM4knWz051
&gt; EI0%2BLlo1B3Z1B25MreR.gif]
&gt; 

[-- Attachment #1.2: Type: text/html, Size: 40041 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-21  2:03           ` 신정섭
@ 2015-04-21  2:46             ` 신정섭
  2015-04-21 10:13             ` Stefano Stabellini
  1 sibling, 0 replies; 14+ messages in thread
From: 신정섭 @ 2015-04-21  2:46 UTC (permalink / raw)
  To: Stefano Stabellini; +Cc: Ian Campbell, xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 36842 bytes --]

I have a one more question. 
 
In Xen ARM 4.5, All SPI is routed to pcpu0 that run domain0's vcpu0.
If domain0's vcpu0 run on pcpu0 All SPI is routed to pcpu0
If domain0's vcpu0 run on pcpu1 All SPI is routed to pcpu1
 
these mean that Xen ARM 4.5 can inject spi only to domain0's vcpu0
and Xen ARM 4.5 cannot inject spi to domain0's vcpu1.
Right?
 
And is this reason ARM 4.5 don't use maintanance interrupt?
 
Thanks
 
-----------------------------------------------------------------
I tested this code in Xen ARM 4.5
My Dom0 kernel set ALL SPI IRQ SMP affinity to '3'
 
so I tested 2 code below.
 
void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
{
    struct vcpu *v;
 
    /* the IRQ needs to be an SPI */
    ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
 
    vgic_vcpu_inject_irq(d-&gt;vcpu[0], irq);
}
 
void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
{
    struct vcpu *v;
 
    /* the IRQ needs to be an SPI */
    ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
 
    vgic_vcpu_inject_irq(d-&gt;vcpu[1], irq);
}

All code working welland i can comfirm interrupts in /proc/interrupts....

I But why only below code is dosen't work.I cant understand again..
void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
{
    struct vcpu *v;
 
    /* the IRQ needs to be an SPI */
    ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
 
    vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq);
}
 
-----Original Message-----
From: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt; 
To: "신정섭"&lt;supsup5642@naver.com&gt;; 
Cc: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt;; "Ian Campbell"&lt;ian.campbell@citrix.com&gt;; &lt;xen-devel@lists.xen.org&gt;; 
Sent: 2015-04-21 (화) 02:25:09
Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
 
On Mon, 20 Apr 2015, 신정섭 wrote:
&gt; Thanks your rely. But sorry i can't understand your explanation fully.
&gt; 
&gt;  
&gt; 
&gt; I don't want to change GICD setting. I only want to change target Domain0' vcpu injected SPI. vcpu0 or vcpu1.
&gt; 
&gt;  
&gt; 
&gt; I understand like below.
&gt; 
&gt; In Xen4.4, vgic_vcpu_inject_irq() can inject SPI to any Domain0's vcpu on any pcpu.
&gt; 
&gt; But int Xen4.5 vgic_vcpu_inject_irq() can inject SPI on only pcpu that receive SPI from GICD.
&gt; 
&gt; Right?

Yes, if you meant the virtual GICD (not the physical GICD).

I'll repeat:

In Xen 4.5 vgic_vcpu_inject_irq can inject a given SPI only to the pcpu
that is set to run the vcpu that should receive the interrupt, as per
the vGICD configuration.

So if you

echo VCPU_NUMBER &gt; /proc/irq/IRQ_NUMBER/smp_affinity

in the guest, it should work and it should have a concrete effect in the
delivery of the physical interrupt.


&gt;  
&gt; 
&gt;  
&gt; 
&gt; -----Original Message-----
&gt; From: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt;
&gt; To: "신정섭"&lt;supsup5642@naver.com&gt;;
&gt; Cc: "Ian Campbell"&lt;ian.campbell@citrix.com&gt;; &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;;
&gt; Sent: 2015-04-20 (월) 19:49:50
&gt; Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
&gt;  
&gt; 
&gt; In Xen 4.5 we rely on the fact that the physical irq is routed to the
&gt; physical cpu running the vcpu of the domain that needs to receive the
&gt; corresponding virq.
&gt; 
&gt; So if you want to inject IRQ 100 to CPU 1, while Dom0 is set to receive
&gt; vIRQ 100 (virtual irq corresponding to IRQ 100) to vcpu0, running on
&gt; CPU 0, that won't work.
&gt; 
&gt; 
&gt; On Sat, 18 Apr 2015, 신정섭 wrote:
&gt; &gt; NO
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; "Peripheral IRQ routing" means that  
&gt; &gt;
&gt; &gt; Xen select itself one of domain0's vCPU to inject periperal IRQ.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
&gt; &gt;
&gt; &gt; periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; I know that periperal IRQ can be process on any cpu in linux.
&gt; &gt;
&gt; &gt; So All Domain0's vcpu can process periperal IRQ injected by Xen.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
&gt; &gt;
&gt; &gt; But Xen 4.5.0 it dosen't.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; -----Original Message-----
&gt; &gt; From: "Ian Campbell"&lt;ian.campbell@citrix.com&gt;
&gt; &gt; To: "신정섭"&lt;supsup5642@naver.com&gt;;
&gt; &gt; Cc: &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;;
&gt; &gt; Sent: 2015-04-17 (금) 18:49:39
&gt; &gt; Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
&gt; &gt;  
&gt; &gt;
&gt; &gt; On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; I'm studying periperal irq routing to Domain0's vCPU
&gt; &gt;
&gt; &gt; What do you mean by "peripheral irq routing"? Do you mean supporting the
&gt; &gt; guest writing to GICD_ITARGER to cause an interrupt to be injected to a
&gt; &gt; specific vcpu?
&gt; &gt;
&gt; &gt; I thought that was supposed to work, Stefano?
&gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
&gt; &gt; &gt;
&gt; &gt; &gt; So Xen can select vcpu0 or vcpu1 to inject periperal irq.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; I tested periperal routing on Xen 4.4.1 and it works well.
&gt; &gt; &gt;
&gt; &gt; &gt; But I tested periperal routing on Xen 4.5.0 but irq dosen't works
&gt; &gt; &gt; well.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; So I tested very simple periperal routing code like this.
&gt; &gt; &gt;
&gt; &gt; &gt; 'flag' is grobal variable.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; * In "do_IRQ" function on Xen 4.4.1
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; - from
&gt; &gt; &gt;
&gt; &gt; &gt; if ( desc-&gt;status &amp; IRQ_GUEST )
&gt; &gt; &gt;
&gt; &gt; &gt; {
&gt; &gt; &gt;
&gt; &gt; &gt; struct domain *d = action-&gt;dev_id;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;handler-&gt;end(desc);
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; /* XXX: inject irq into all guest vcpus */
&gt; &gt; &gt;
&gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[0], irq, 0);
&gt; &gt; &gt;
&gt; &gt; &gt; goto out_no_end;
&gt; &gt; &gt;
&gt; &gt; &gt; }
&gt; &gt; &gt;
&gt; &gt; &gt; -to if ( desc-&gt;status &amp; IRQ_GUEST ) {
&gt; &gt; &gt;
&gt; &gt; &gt; struct domain *d = action-&gt;dev_id;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;handler-&gt;end(desc);
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; &gt; &gt;
&gt; &gt; &gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; /* XXX: inject irq into all guest vcpus */
&gt; &gt; &gt;
&gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq, 0);
&gt; &gt; &gt;
&gt; &gt; &gt; goto out_no_end;
&gt; &gt; &gt;
&gt; &gt; &gt; }
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; * In "vgic_vcpu_inject_spi" function on Xen 4.5.0
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; -from
&gt; &gt; &gt;
&gt; &gt; &gt; void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; &gt; &gt;
&gt; &gt; &gt; {
&gt; &gt; &gt;
&gt; &gt; &gt; struct vcpu *v;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; /* the IRQ needs to be an SPI */
&gt; &gt; &gt;
&gt; &gt; &gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; v = vgic_get_target_vcpu(d-&gt;vcpu[0], irq);
&gt; &gt; &gt;
&gt; &gt; &gt; vgic_vcpu_inject_irq(v, irq);
&gt; &gt; &gt;
&gt; &gt; &gt; }
&gt; &gt; &gt;
&gt; &gt; &gt; -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; &gt; &gt;
&gt; &gt; &gt; {
&gt; &gt; &gt;
&gt; &gt; &gt; struct vcpu *v;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; /* the IRQ needs to be an SPI */
&gt; &gt; &gt;
&gt; &gt; &gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq);
&gt; &gt; &gt;
&gt; &gt; &gt; }
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; so periperal irq injected to Domain0's vCPU0 or vCPU1.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; on Xen 4.4.1 it work well and i can confirm
&gt; &gt; &gt;
&gt; &gt; &gt; periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
&gt; &gt; &gt; command.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; * cat /proc/interrupts command on Xen 4.4.1
&gt; &gt; &gt;
&gt; &gt; &gt; --------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; CPU0 CPU1
&gt; &gt; &gt;
&gt; &gt; &gt; 27: 8690 8558 GIC 27 arch_timer
&gt; &gt; &gt;
&gt; &gt; &gt; 31: 34 1 GIC 31 events
&gt; &gt; &gt;
&gt; &gt; &gt; 65: 0 0 GIC 65 10800000.mdma
&gt; &gt; &gt;
&gt; &gt; &gt; 66: 0 0 GIC 66 121a0000.pdma
&gt; &gt; &gt;
&gt; &gt; &gt; 67: 0 0 GIC 67 121b0000.pdma
&gt; &gt; &gt;
&gt; &gt; &gt; 74: 0 0 GIC 74 101d0000.watchdog
&gt; &gt; &gt;
&gt; &gt; &gt; 75: 0 0 GIC 75 s3c2410-rtc alarm
&gt; &gt; &gt;
&gt; &gt; &gt; 76: 0 0 GIC 76 s3c2410-rtc tick
&gt; &gt; &gt;
&gt; &gt; &gt; 77: 0 0 GIC 77 13400000.pinctrl
&gt; &gt; &gt;
&gt; &gt; &gt; 78: 0 0 GIC 78 11400000.pinctrl
&gt; &gt; &gt;
&gt; &gt; &gt; 79: 0 0 GIC 79 3860000.pinctrl
&gt; &gt; &gt;
&gt; &gt; &gt; 82: 0 0 GIC 82 10d10000.pinctrl
&gt; &gt; &gt;
&gt; &gt; &gt; 88: 229 233 GIC 88 12c60000.i2c
&gt; &gt; &gt;
&gt; &gt; &gt; 90: 0 0 GIC 90 12c80000.i2c
&gt; &gt; &gt;
&gt; &gt; &gt; 91: 0 0 GIC 91 12c90000.i2c
&gt; &gt; &gt;
&gt; &gt; &gt; 96: 0 0 GIC 96 12ce0000.i2c
&gt; &gt; &gt;
&gt; &gt; &gt; 97: 0 0 GIC 97 10060000.tmu
&gt; &gt; &gt;
&gt; &gt; &gt; 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
&gt; &gt; &gt;
&gt; &gt; &gt; 104: 0 0 GIC 104 xhci-hcd:usb1
&gt; &gt; &gt;
&gt; &gt; &gt; 107: 710 710 GIC 107 dw-mci
&gt; &gt; &gt;
&gt; &gt; &gt; 109: 9602 9610 GIC 109 dw-mci
&gt; &gt; &gt;
&gt; &gt; &gt; 156: 0 0 GIC 156 11c10000.mdma
&gt; &gt; &gt;
&gt; &gt; &gt; 160: 0 0 xen-dyn-event xenbus
&gt; &gt; &gt;
&gt; &gt; &gt; 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
&gt; &gt; &gt;
&gt; &gt; &gt; 184: 33 0 xen-percpu-virq hvc_console
&gt; &gt; &gt;
&gt; &gt; &gt; 185: 0 0 s5m8767 12 rtc-alarm0
&gt; &gt; &gt;
&gt; &gt; &gt; 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
&gt; &gt; &gt;
&gt; &gt; &gt; 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
&gt; &gt; &gt;
&gt; &gt; &gt; 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
&gt; &gt; &gt;
&gt; &gt; &gt; 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
&gt; &gt; &gt;
&gt; &gt; &gt; 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
&gt; &gt; &gt;
&gt; &gt; &gt; 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
&gt; &gt; &gt;
&gt; &gt; &gt; IPI0: 0 0 CPU wakeup interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI1: 0 0 Timer broadcast interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI2: 6660 6920 Rescheduling interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI3: 0 0 Function call interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI4: 9 3 Single function call interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI5: 0 0 CPU stop interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI6: 0 0 IRQ work interrupts
&gt; &gt; &gt;
&gt; &gt; &gt; IPI7: 0 0 completion interrupts
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; Err: 0
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; But on Xen 4.5.0, Dom0 can not booting.
&gt; &gt; &gt;
&gt; &gt; &gt; below is domain0's booting message on Xen 4.5.0
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; * domain0's booting message on Xen 4.5.0
&gt; &gt; &gt;
&gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt; [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
&gt; &gt; &gt; exynos-ehci
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
&gt; &gt; &gt; idProduct=0610
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
&gt; &gt; &gt; SerialNumber=0
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.030156] hub 3-3.2:1.0: USB hub found
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.033555] hub 3-3.2:1.0: 4 ports detected
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
&gt; &gt; &gt; exynos-ehci
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
&gt; &gt; &gt; idProduct=772a
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
&gt; &gt; &gt; SerialNumber=3
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.419921] usb 3-3.2.4: Product: AX88772
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
&gt; &gt; &gt;
&gt; &gt; &gt; [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
&gt; &gt; &gt; invalid hw address, using random
&gt; &gt; &gt;
&gt; &gt; &gt; [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
&gt; &gt; &gt; usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.925810] kjournald starting. Commit interval 5 seconds
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
&gt; &gt; &gt; mode
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.963607] devtmpfs: mounted
&gt; &gt; &gt;
&gt; &gt; &gt; [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 8.156858] random: init urandom read with 86 bits of entropy
&gt; &gt; &gt; available
&gt; &gt; &gt;
&gt; &gt; &gt; [ 8.378207] init: ureadahead main process (1407) terminated with
&gt; &gt; &gt; status 5
&gt; &gt; &gt;
&gt; &gt; &gt; [ 12.790491] random: nonblocking pool is initialized
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.110770] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.115105] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.129430] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.136811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.144273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.151912] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.160593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.169797] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.179518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.188206] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.195137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.209712] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.214051] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.228385] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.236203] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.243746] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.258417] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.262746] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.277076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.284454] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.291920] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.299556] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.308238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.316747] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.324656] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.333498] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.342180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.350605] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.359016] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.368224] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.377247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.384798] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.393044] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.401815] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.409966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.417691] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.430272] 7e60: 00037044 00000fb4
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt;
&gt; &gt; &gt; [ 240.455028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.465763] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.470089] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.484419] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.491805] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.499268] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.506908] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.515586] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.524789] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.534512] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.543201] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.550132] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.564708] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.569047] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.583380] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.591197] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.598741] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.613412] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.617742] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.632071] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.639449] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.646916] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.654552] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.663234] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.671742] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.679651] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.688494] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.697174] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.705600] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.714011] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.723217] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.732243] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.739792] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.748040] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.756807] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.764961] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.772688] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.785269] 7e60: 00037044 00000fb4
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt;
&gt; &gt; &gt; [ 360.810023] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.820838] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.825094] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.839427] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.846811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.854273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.861914] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.870593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.879795] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.889518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.898196] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.905137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.919713] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.924052] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.938392] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.946200] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.953747] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.968417] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.972747] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.987076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 480.994473] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.001922] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.009557] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.018238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.026746] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.034644] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.043500] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.052180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.060606] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.069015] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.078223] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.087247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.094797] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.103045] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.111813] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.119966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.127692] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.140273] 7e60: 00037044 00000fb4
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt;
&gt; &gt; &gt; [ 481.165028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; seconds.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.175773] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.180099] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; disables this message.
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.194433] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.201816] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.209278] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.216918] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.225598] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.234800] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.244535] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.253200] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt;
&gt; &gt; &gt; [ 601.260142] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt;
&gt; &gt; &gt; ---------------------------------------------------------------------------------
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; Accroding to log.
&gt; &gt; &gt;
&gt; &gt; &gt; It seems that periperal irq arn't injected properly.
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
&gt; &gt; &gt; irq. right?
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; This is Bug??
&gt; &gt; &gt;
&gt; &gt; &gt; or Intended on Xen 4.5.x?
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; _______________________________________________
&gt; &gt; &gt; Xen-devel mailing list
&gt; &gt; &gt; Xen-devel@lists.xen.org
&gt; &gt; &gt; http://lists.xen.org/xen-devel
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt;
&gt; &gt; [?img=mr%2Bm%2BBFm%2BBK9hAnZFAM9FqMdFrMqKo%2BSFrM%2FFrudF4tqMxFvKouXM4twFrKZtzFXp6UmaLl5WLl51zlqDBFdp6d5
&gt; &gt; MreRhoRx%2Bzk4M6lT70FdM6i0WzwGW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
&gt; &gt;
&gt; [?img=mqFm%2BBFm%2BBF0hAnZFAM9FqFoM6twazErKxk0FxgrMo3CF6MwM6UZpAp0K6JgMX%2B0Mou974lR74lcWNFlbX30WLloWrdQaXFdp6pCW4Y5bX3CM4knWz051
&gt; EI0%2BLlo1B3Z1B25MreR.gif]
&gt; 


[-- Attachment #1.2: Type: text/html, Size: 76599 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-21  2:03           ` 신정섭
  2015-04-21  2:46             ` 신정섭
@ 2015-04-21 10:13             ` Stefano Stabellini
  2015-04-21 10:29               ` 신정섭
  1 sibling, 1 reply; 14+ messages in thread
From: Stefano Stabellini @ 2015-04-21 10:13 UTC (permalink / raw)
  To: 신정섭; +Cc: xen-devel, Ian Campbell, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 30404 bytes --]

On Tue, 21 Apr 2015, 신정섭 wrote:
> I have a one more question. 
>
>  
>
> In Xen ARM 4.5, All SPI is routed to pcpu0 that run domain0's vcpu0.
>
> If domain0's vcpu0 run on pcpu0 All SPI is routed to pcpu0
>
> If domain0's vcpu0 run on pcpu1 All SPI is routed to pcpu1

That is correct.


> these mean that Xen ARM 4.5 can inject spi only to domain0's vcpu0
>
> and Xen ARM 4.5 cannot inject spi to domain0's vcpu1.
>
> Right?

No, that is wrong. If the guest requests the spis to be routed to
another vcpu, writing the appropriate values to the virtual GICD, then
Xen will route the spis to the pcpu running the requested vcpu.

So if your guest is Linux and you

echo 2 > /proc/irq/SPI_NUMBER/smp_affinity

then you should see that Xen will start injecting the SPI to vcpu1.



> And is this reason ARM 4.5 don't use maintanance interrupt?

No, that is just a performance optimization.


 
>
> Thanks
>
>  
>
> -----Original Message-----
> From: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>
> To: "신정섭"<supsup5642@naver.com>;
> Cc: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>; "Ian Campbell"<ian.campbell@citrix.com>; <xen-devel@lists.xen.org>;
> Sent: 2015-04-21 (화) 02:25:09
> Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
>  
>
> On Mon, 20 Apr 2015, 신정섭 wrote:
> > Thanks your rely. But sorry i can't understand your explanation fully.
> >
> >  
> >
> > I don't want to change GICD setting. I only want to change target Domain0' vcpu injected SPI. vcpu0 or vcpu1.
> >
> >  
> >
> > I understand like below.
> >
> > In Xen4.4, vgic_vcpu_inject_irq() can inject SPI to any Domain0's vcpu on any pcpu.
> >
> > But int Xen4.5 vgic_vcpu_inject_irq() can inject SPI on only pcpu that receive SPI from GICD.
> >
> > Right?
>
> Yes, if you meant the virtual GICD (not the physical GICD).
>
> I'll repeat:
>
> In Xen 4.5 vgic_vcpu_inject_irq can inject a given SPI only to the pcpu
> that is set to run the vcpu that should receive the interrupt, as per
> the vGICD configuration.
>
> So if you
>
> echo VCPU_NUMBER > /proc/irq/IRQ_NUMBER/smp_affinity
>
> in the guest, it should work and it should have a concrete effect in the
> delivery of the physical interrupt.
>
>
> >  
> >
> >  
> >
> > -----Original Message-----
> > From: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>
> > To: "신정섭"<supsup5642@naver.com>;
> > Cc: "Ian Campbell"<ian.campbell@citrix.com>; <xen-devel@lists.xen.org>; "Stefano Stabellini"<Stefano.Stabellini@eu.citrix.com>;
> > Sent: 2015-04-20 (월) 19:49:50
> > Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
> >  
> >
> > In Xen 4.5 we rely on the fact that the physical irq is routed to the
> > physical cpu running the vcpu of the domain that needs to receive the
> > corresponding virq.
> >
> > So if you want to inject IRQ 100 to CPU 1, while Dom0 is set to receive
> > vIRQ 100 (virtual irq corresponding to IRQ 100) to vcpu0, running on
> > CPU 0, that won't work.
> >
> >
> > On Sat, 18 Apr 2015, 신정섭 wrote:
> > > NO
> > >
> > >  
> > >
> > > "Peripheral IRQ routing" means that  
> > >
> > > Xen select itself one of domain0's vCPU to inject periperal IRQ.
> > >
> > >  
> > >
> > > So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
> > >
> > > periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
> > >
> > >  
> > >
> > > I know that periperal IRQ can be process on any cpu in linux.
> > >
> > > So All Domain0's vcpu can process periperal IRQ injected by Xen.
> > >
> > >  
> > >
> > > On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
> > >
> > > But Xen 4.5.0 it dosen't.
> > >
> > >  
> > >
> > >  
> > >
> > > -----Original Message-----
> > > From: "Ian Campbell"<ian.campbell@citrix.com>
> > > To: "신정섭"<supsup5642@naver.com>;
> > > Cc: <xen-devel@lists.xen.org>; "Stefano Stabellini"<Stefano.Stabellini@eu.citrix.com>;
> > > Sent: 2015-04-17 (금) 18:49:39
> > > Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
> > >  
> > >
> > > On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
> > > >
> > > >
> > > > I'm studying periperal irq routing to Domain0's vCPU
> > >
> > > What do you mean by "peripheral irq routing"? Do you mean supporting the
> > > guest writing to GICD_ITARGER to cause an interrupt to be injected to a
> > > specific vcpu?
> > >
> > > I thought that was supposed to work, Stefano?
> > >
> > > >
> > > >
> > > >
> > > > I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
> > > >
> > > > So Xen can select vcpu0 or vcpu1 to inject periperal irq.
> > > >
> > > >
> > > >
> > > > I tested periperal routing on Xen 4.4.1 and it works well.
> > > >
> > > > But I tested periperal routing on Xen 4.5.0 but irq dosen't works
> > > > well.
> > > >
> > > >
> > > >
> > > > So I tested very simple periperal routing code like this.
> > > >
> > > > 'flag' is grobal variable.
> > > >
> > > >
> > > >
> > > > * In "do_IRQ" function on Xen 4.4.1
> > > >
> > > > -----------------------------------------------------
> > > >
> > > > - from
> > > >
> > > > if ( desc->status & IRQ_GUEST )
> > > >
> > > > {
> > > >
> > > > struct domain *d = action->dev_id;
> > > >
> > > >
> > > >
> > > > desc->handler->end(desc);
> > > >
> > > >
> > > >
> > > > desc->status = IRQ_INPROGRESS;
> > > >
> > > > desc->arch.eoi_cpu = smp_processor_id();
> > > >
> > > >
> > > >
> > > > /* XXX: inject irq into all guest vcpus */
> > > >
> > > > vgic_vcpu_inject_irq(d->vcpu[0], irq, 0);
> > > >
> > > > goto out_no_end;
> > > >
> > > > }
> > > >
> > > > -to if ( desc->status & IRQ_GUEST ) {
> > > >
> > > > struct domain *d = action->dev_id;
> > > >
> > > >
> > > >
> > > > desc->handler->end(desc);
> > > >
> > > >
> > > >
> > > > desc->status = IRQ_INPROGRESS;
> > > >
> > > > desc->arch.eoi_cpu = smp_processor_id();
> > > >
> > > >
> > > >
> > > > /* XXX: inject irq into all guest vcpus */
> > > >
> > > > vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq, 0);
> > > >
> > > > goto out_no_end;
> > > >
> > > > }
> > > >
> > > > -----------------------------------------------------
> > > >
> > > >
> > > >
> > > > * In "vgic_vcpu_inject_spi" function on Xen 4.5.0
> > > >
> > > > -----------------------------------------------------
> > > >
> > > > -from
> > > >
> > > > void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> > > >
> > > > {
> > > >
> > > > struct vcpu *v;
> > > >
> > > >
> > > >
> > > > /* the IRQ needs to be an SPI */
> > > >
> > > > ASSERT(irq >= 32 && irq <= gic_number_lines());
> > > >
> > > >
> > > >
> > > > v = vgic_get_target_vcpu(d->vcpu[0], irq);
> > > >
> > > > vgic_vcpu_inject_irq(v, irq);
> > > >
> > > > }
> > > >
> > > > -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> > > >
> > > > {
> > > >
> > > > struct vcpu *v;
> > > >
> > > >
> > > >
> > > > /* the IRQ needs to be an SPI */
> > > >
> > > > ASSERT(irq >= 32 && irq <= gic_number_lines());
> > > >
> > > >
> > > >
> > > > vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq);
> > > >
> > > > }
> > > >
> > > > -----------------------------------------------------
> > > >
> > > > so periperal irq injected to Domain0's vCPU0 or vCPU1.
> > > >
> > > >
> > > >
> > > > on Xen 4.4.1 it work well and i can confirm
> > > >
> > > > periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
> > > > command.
> > > >
> > > >
> > > >
> > > > * cat /proc/interrupts command on Xen 4.4.1
> > > >
> > > > --------------------------------------------------
> > > >
> > > > CPU0 CPU1
> > > >
> > > > 27: 8690 8558 GIC 27 arch_timer
> > > >
> > > > 31: 34 1 GIC 31 events
> > > >
> > > > 65: 0 0 GIC 65 10800000.mdma
> > > >
> > > > 66: 0 0 GIC 66 121a0000.pdma
> > > >
> > > > 67: 0 0 GIC 67 121b0000.pdma
> > > >
> > > > 74: 0 0 GIC 74 101d0000.watchdog
> > > >
> > > > 75: 0 0 GIC 75 s3c2410-rtc alarm
> > > >
> > > > 76: 0 0 GIC 76 s3c2410-rtc tick
> > > >
> > > > 77: 0 0 GIC 77 13400000.pinctrl
> > > >
> > > > 78: 0 0 GIC 78 11400000.pinctrl
> > > >
> > > > 79: 0 0 GIC 79 3860000.pinctrl
> > > >
> > > > 82: 0 0 GIC 82 10d10000.pinctrl
> > > >
> > > > 88: 229 233 GIC 88 12c60000.i2c
> > > >
> > > > 90: 0 0 GIC 90 12c80000.i2c
> > > >
> > > > 91: 0 0 GIC 91 12c90000.i2c
> > > >
> > > > 96: 0 0 GIC 96 12ce0000.i2c
> > > >
> > > > 97: 0 0 GIC 97 10060000.tmu
> > > >
> > > > 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
> > > >
> > > > 104: 0 0 GIC 104 xhci-hcd:usb1
> > > >
> > > > 107: 710 710 GIC 107 dw-mci
> > > >
> > > > 109: 9602 9610 GIC 109 dw-mci
> > > >
> > > > 156: 0 0 GIC 156 11c10000.mdma
> > > >
> > > > 160: 0 0 xen-dyn-event xenbus
> > > >
> > > > 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
> > > >
> > > > 184: 33 0 xen-percpu-virq hvc_console
> > > >
> > > > 185: 0 0 s5m8767 12 rtc-alarm0
> > > >
> > > > 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
> > > >
> > > > 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
> > > >
> > > > 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
> > > >
> > > > 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
> > > >
> > > > 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
> > > >
> > > > 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
> > > >
> > > > IPI0: 0 0 CPU wakeup interrupts
> > > >
> > > > IPI1: 0 0 Timer broadcast interrupts
> > > >
> > > > IPI2: 6660 6920 Rescheduling interrupts
> > > >
> > > > IPI3: 0 0 Function call interrupts
> > > >
> > > > IPI4: 9 3 Single function call interrupts
> > > >
> > > > IPI5: 0 0 CPU stop interrupts
> > > >
> > > > IPI6: 0 0 IRQ work interrupts
> > > >
> > > > IPI7: 0 0 completion interrupts
> > > >
> > > >
> > > >
> > > > Err: 0
> > > >
> > > > -----------------------------------------------------
> > > >
> > > >
> > > >
> > > > But on Xen 4.5.0, Dom0 can not booting.
> > > >
> > > > below is domain0's booting message on Xen 4.5.0
> > > >
> > > >
> > > >
> > > > * domain0's booting message on Xen 4.5.0
> > > >
> > > > -----------------------------------------------------
> > > >
> > > > [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
> > > > exynos-ehci
> > > >
> > > > [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
> > > > idProduct=0610
> > > >
> > > > [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
> > > > SerialNumber=0
> > > >
> > > > [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
> > > >
> > > > [ 4.030156] hub 3-3.2:1.0: USB hub found
> > > >
> > > > [ 4.033555] hub 3-3.2:1.0: 4 ports detected
> > > >
> > > > [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
> > > > exynos-ehci
> > > >
> > > > [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
> > > > idProduct=772a
> > > >
> > > > [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
> > > > SerialNumber=3
> > > >
> > > > [ 4.419921] usb 3-3.2.4: Product: AX88772
> > > >
> > > > [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
> > > >
> > > > [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
> > > >
> > > > [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
> > > > invalid hw address, using random
> > > >
> > > > [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
> > > > usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
> > > >
> > > > [ 7.925810] kjournald starting. Commit interval 5 seconds
> > > >
> > > > [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
> > > >
> > > > [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
> > > >
> > > > [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
> > > > mode
> > > >
> > > > [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
> > > >
> > > > [ 7.963607] devtmpfs: mounted
> > > >
> > > > [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
> > > >
> > > > [ 8.156858] random: init urandom read with 86 bits of entropy
> > > > available
> > > >
> > > > [ 8.378207] init: ureadahead main process (1407) terminated with
> > > > status 5
> > > >
> > > > [ 12.790491] random: nonblocking pool is initialized
> > > >
> > > > [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
> > > > seconds.
> > > >
> > > > [ 240.110770] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 240.115105] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
> > > >
> > > > [ 240.129430] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > +0x70/0x9c)
> > > >
> > > > [ 240.136811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > (bit_wait_io+0x34/0x58)
> > > >
> > > > [ 240.144273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > (__wait_on_bit+0x80/0xb8)
> > > >
> > > > [ 240.151912] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > >
> > > > [ 240.160593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > > (__sync_dirty_buffer+0xc0/0xec)
> > > >
> > > > [ 240.169797] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > > (journal_commit_transaction+0xfc8/0x139c)
> > > >
> > > > [ 240.179518] [<c0182244>] (journal_commit_transaction) from
> > > > [<c0184e48>] (kjournald+0xe4/0x268)
> > > >
> > > > [ 240.188206] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > > +0xd8/0xf0)
> > > >
> > > > [ 240.195137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > > +0x14/0x3c)
> > > >
> > > > [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
> > > > 120 seconds.
> > > >
> > > > [ 240.209712] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 240.214051] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > > >
> > > > [ 240.228385] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > > (log_wait_commit+0xd8/0x120)
> > > >
> > > > [ 240.236203] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > > (do_fsync+0x50/0x78)
> > > >
> > > > [ 240.243746] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > > (ret_fast_syscall+0x0/0x30)
> > > >
> > > > [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
> > > > seconds.
> > > >
> > > > [ 240.258417] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 240.262746] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > > >
> > > > [ 240.277076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > +0x70/0x9c)
> > > >
> > > > [ 240.284454] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > (bit_wait_io+0x34/0x58)
> > > >
> > > > [ 240.291920] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > (__wait_on_bit+0x80/0xb8)
> > > >
> > > > [ 240.299556] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > >
> > > > [ 240.308238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > > (__bread_gfp+0xa8/0xec)
> > > >
> > > > [ 240.316747] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > > (ext3_get_branch+0x88/0x14c)
> > > >
> > > > [ 240.324656] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > > (ext3_get_blocks_handle+0x90/0xa40)
> > > >
> > > > [ 240.333498] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > > (ext3_get_block+0x9c/0xdc)
> > > >
> > > > [ 240.342180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > > (do_mpage_readpage+0x470/0x7ac)
> > > >
> > > > [ 240.350605] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > > (mpage_readpages+0xc8/0x118)
> > > >
> > > > [ 240.359016] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > > (__do_page_cache_readahead+0x1b0/0x260)
> > > >
> > > > [ 240.368224] [<c00943d8>] (__do_page_cache_readahead) from
> > > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > > >
> > > > [ 240.377247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > > (__do_fault+0x34/0x88)
> > > >
> > > > [ 240.384798] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > > (do_cow_fault.isra.95+0x5c/0x17c)
> > > >
> > > > [ 240.393044] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > > (handle_mm_fault+0x410/0x8d8)
> > > >
> > > > [ 240.401815] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > > (do_page_fault+0x194/0x280)
> > > >
> > > > [ 240.409966] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > > (do_DataAbort+0x38/0x9c)
> > > >
> > > > [ 240.417691] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > > (__dabt_svc+0x38/0x60)
> > > >
> > > > [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > > >
> > > > [ 240.430272] 7e60: 00037044 00000fb4
> > > >
> > > > [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > > 00037044 cba3b900 cae46c00
> > > >
> > > > [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > > c020cb84 20000013 ffffffff
> > > >
> > > > [ 240.455028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > > (__clear_user_std+0x34/0x64)
> > > >
> > > > [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
> > > > seconds.
> > > >
> > > > [ 360.465763] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 360.470089] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
> > > >
> > > > [ 360.484419] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > +0x70/0x9c)
> > > >
> > > > [ 360.491805] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > (bit_wait_io+0x34/0x58)
> > > >
> > > > [ 360.499268] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > (__wait_on_bit+0x80/0xb8)
> > > >
> > > > [ 360.506908] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > >
> > > > [ 360.515586] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > > (__sync_dirty_buffer+0xc0/0xec)
> > > >
> > > > [ 360.524789] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > > (journal_commit_transaction+0xfc8/0x139c)
> > > >
> > > > [ 360.534512] [<c0182244>] (journal_commit_transaction) from
> > > > [<c0184e48>] (kjournald+0xe4/0x268)
> > > >
> > > > [ 360.543201] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > > +0xd8/0xf0)
> > > >
> > > > [ 360.550132] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > > +0x14/0x3c)
> > > >
> > > > [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
> > > > 120 seconds.
> > > >
> > > > [ 360.564708] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 360.569047] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > > >
> > > > [ 360.583380] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > > (log_wait_commit+0xd8/0x120)
> > > >
> > > > [ 360.591197] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > > (do_fsync+0x50/0x78)
> > > >
> > > > [ 360.598741] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > > (ret_fast_syscall+0x0/0x30)
> > > >
> > > > [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
> > > > seconds.
> > > >
> > > > [ 360.613412] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 360.617742] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > > >
> > > > [ 360.632071] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > +0x70/0x9c)
> > > >
> > > > [ 360.639449] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > (bit_wait_io+0x34/0x58)
> > > >
> > > > [ 360.646916] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > (__wait_on_bit+0x80/0xb8)
> > > >
> > > > [ 360.654552] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > >
> > > > [ 360.663234] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > > (__bread_gfp+0xa8/0xec)
> > > >
> > > > [ 360.671742] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > > (ext3_get_branch+0x88/0x14c)
> > > >
> > > > [ 360.679651] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > > (ext3_get_blocks_handle+0x90/0xa40)
> > > >
> > > > [ 360.688494] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > > (ext3_get_block+0x9c/0xdc)
> > > >
> > > > [ 360.697174] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > > (do_mpage_readpage+0x470/0x7ac)
> > > >
> > > > [ 360.705600] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > > (mpage_readpages+0xc8/0x118)
> > > >
> > > > [ 360.714011] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > > (__do_page_cache_readahead+0x1b0/0x260)
> > > >
> > > > [ 360.723217] [<c00943d8>] (__do_page_cache_readahead) from
> > > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > > >
> > > > [ 360.732243] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > > (__do_fault+0x34/0x88)
> > > >
> > > > [ 360.739792] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > > (do_cow_fault.isra.95+0x5c/0x17c)
> > > >
> > > > [ 360.748040] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > > (handle_mm_fault+0x410/0x8d8)
> > > >
> > > > [ 360.756807] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > > (do_page_fault+0x194/0x280)
> > > >
> > > > [ 360.764961] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > > (do_DataAbort+0x38/0x9c)
> > > >
> > > > [ 360.772688] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > > (__dabt_svc+0x38/0x60)
> > > >
> > > > [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > > >
> > > > [ 360.785269] 7e60: 00037044 00000fb4
> > > >
> > > > [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > > 00037044 cba3b900 cae46c00
> > > >
> > > > [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > > c020cb84 20000013 ffffffff
> > > >
> > > > [ 360.810023] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > > (__clear_user_std+0x34/0x64)
> > > >
> > > > [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
> > > > seconds.
> > > >
> > > > [ 480.820838] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 480.825094] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
> > > >
> > > > [ 480.839427] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > +0x70/0x9c)
> > > >
> > > > [ 480.846811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > (bit_wait_io+0x34/0x58)
> > > >
> > > > [ 480.854273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > (__wait_on_bit+0x80/0xb8)
> > > >
> > > > [ 480.861914] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > >
> > > > [ 480.870593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > > (__sync_dirty_buffer+0xc0/0xec)
> > > >
> > > > [ 480.879795] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > > (journal_commit_transaction+0xfc8/0x139c)
> > > >
> > > > [ 480.889518] [<c0182244>] (journal_commit_transaction) from
> > > > [<c0184e48>] (kjournald+0xe4/0x268)
> > > >
> > > > [ 480.898196] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > > +0xd8/0xf0)
> > > >
> > > > [ 480.905137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > > +0x14/0x3c)
> > > >
> > > > [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
> > > > 120 seconds.
> > > >
> > > > [ 480.919713] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 480.924052] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > > >
> > > > [ 480.938392] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > > (log_wait_commit+0xd8/0x120)
> > > >
> > > > [ 480.946200] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > > (do_fsync+0x50/0x78)
> > > >
> > > > [ 480.953747] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > > (ret_fast_syscall+0x0/0x30)
> > > >
> > > > [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
> > > > seconds.
> > > >
> > > > [ 480.968417] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 480.972747] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > > >
> > > > [ 480.987076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > +0x70/0x9c)
> > > >
> > > > [ 480.994473] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > (bit_wait_io+0x34/0x58)
> > > >
> > > > [ 481.001922] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > (__wait_on_bit+0x80/0xb8)
> > > >
> > > > [ 481.009557] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > >
> > > > [ 481.018238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > > (__bread_gfp+0xa8/0xec)
> > > >
> > > > [ 481.026746] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > > (ext3_get_branch+0x88/0x14c)
> > > >
> > > > [ 481.034644] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > > (ext3_get_blocks_handle+0x90/0xa40)
> > > >
> > > > [ 481.043500] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > > (ext3_get_block+0x9c/0xdc)
> > > >
> > > > [ 481.052180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > > (do_mpage_readpage+0x470/0x7ac)
> > > >
> > > > [ 481.060606] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > > (mpage_readpages+0xc8/0x118)
> > > >
> > > > [ 481.069015] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > > (__do_page_cache_readahead+0x1b0/0x260)
> > > >
> > > > [ 481.078223] [<c00943d8>] (__do_page_cache_readahead) from
> > > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > > >
> > > > [ 481.087247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > > (__do_fault+0x34/0x88)
> > > >
> > > > [ 481.094797] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > > (do_cow_fault.isra.95+0x5c/0x17c)
> > > >
> > > > [ 481.103045] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > > (handle_mm_fault+0x410/0x8d8)
> > > >
> > > > [ 481.111813] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > > (do_page_fault+0x194/0x280)
> > > >
> > > > [ 481.119966] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > > (do_DataAbort+0x38/0x9c)
> > > >
> > > > [ 481.127692] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > > (__dabt_svc+0x38/0x60)
> > > >
> > > > [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > > >
> > > > [ 481.140273] 7e60: 00037044 00000fb4
> > > >
> > > > [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > > 00037044 cba3b900 cae46c00
> > > >
> > > > [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > > c020cb84 20000013 ffffffff
> > > >
> > > > [ 481.165028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > > (__clear_user_std+0x34/0x64)
> > > >
> > > > [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
> > > > seconds.
> > > >
> > > > [ 601.175773] Not tainted 3.18.3-svn1 #2
> > > >
> > > > [ 601.180099] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > disables this message.
> > > >
> > > > [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
> > > >
> > > > [ 601.194433] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > +0x70/0x9c)
> > > >
> > > > [ 601.201816] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > (bit_wait_io+0x34/0x58)
> > > >
> > > > [ 601.209278] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > (__wait_on_bit+0x80/0xb8)
> > > >
> > > > [ 601.216918] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > >
> > > > [ 601.225598] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > > (__sync_dirty_buffer+0xc0/0xec)
> > > >
> > > > [ 601.234800] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > > (journal_commit_transaction+0xfc8/0x139c)
> > > >
> > > > [ 601.244535] [<c0182244>] (journal_commit_transaction) from
> > > > [<c0184e48>] (kjournald+0xe4/0x268)
> > > >
> > > > [ 601.253200] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > > +0xd8/0xf0)
> > > >
> > > > [ 601.260142] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > > +0x14/0x3c)
> > > >
> > > > ---------------------------------------------------------------------------------
> > > >
> > > >
> > > >
> > > > Accroding to log.
> > > >
> > > > It seems that periperal irq arn't injected properly.
> > > >
> > > >
> > > >
> > > > I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
> > > > irq. right?
> > > >
> > > >
> > > >
> > > > This is Bug??
> > > >
> > > > or Intended on Xen 4.5.x?
> > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Xen-devel mailing list
> > > > Xen-devel@lists.xen.org
> > > > http://lists.xen.org/xen-devel
> > >
> > >
> > >
> > >
> > > [?img=mr%2Bm%2BBFm%2BBK9hAnZFAM9FqMdFrMqKo%2BSFrM%2FFrudF4tqMxFvKouXM4twFrKZtzFXp6UmaLl5WLl51zlqDBFdp6d5
> > > MreRhoRx%2Bzk4M6lT70FdM6i0WzwGW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
> > >
> >[?img=mqFm%2BBFm%2BBF0hAnZFAM9FqFoM6twazErKxk0FxgrMo3CF6MwM6UZpAp0K6JgMX%2B0Mou974lR74lcWNFlbX30WLloWrdQaXFdp6pCW4Y5bX3CM4knWz051
>
> > EI0%2BLlo1B3Z1B25MreR.gif]
> >
> [?img=me%2Bm%2BBFm%2BBF0hAnZFAM9p6udp4ivaAuqFAUZFAI0pAKlpxura6uwF6i4p6FCtzFXp6UmFVl5WLl51zlqDBFdp6d5MreRhoRq%2Bzk4M6lT7NFdM6i0Wzw
> GW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
> 

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-21 10:13             ` Stefano Stabellini
@ 2015-04-21 10:29               ` 신정섭
  2015-04-21 10:39                 ` Stefano Stabellini
  0 siblings, 1 reply; 14+ messages in thread
From: 신정섭 @ 2015-04-21 10:29 UTC (permalink / raw)
  To: Stefano Stabellini; +Cc: Ian Campbell, xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 41623 bytes --]

Thanks your reply!
 
I Think I find a Interrupt mechanism problem in Xen ARM 4.5 and I fix that simply.
After fix it my irq routing code is working well on Xen ARM 4.5 too.
 
I will start new thread about that problem.
please confirm please.
 
Thanks
 
-----Original Message-----
From: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt; 
To: "신정섭"&lt;supsup5642@naver.com&gt;; 
Cc: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt;; "Ian Campbell"&lt;ian.campbell@citrix.com&gt;; &lt;xen-devel@lists.xen.org&gt;; 
Sent: 2015-04-21 (화) 19:13:54
Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
 
On Tue, 21 Apr 2015, 신정섭 wrote:
&gt; I have a one more question. 
&gt; 
&gt;  
&gt; 
&gt; In Xen ARM 4.5, All SPI is routed to pcpu0 that run domain0's vcpu0.
&gt; 
&gt; If domain0's vcpu0 run on pcpu0 All SPI is routed to pcpu0
&gt; 
&gt; If domain0's vcpu0 run on pcpu1 All SPI is routed to pcpu1

That is correct.


&gt; these mean that Xen ARM 4.5 can inject spi only to domain0's vcpu0
&gt; 
&gt; and Xen ARM 4.5 cannot inject spi to domain0's vcpu1.
&gt; 
&gt; Right?

No, that is wrong. If the guest requests the spis to be routed to
another vcpu, writing the appropriate values to the virtual GICD, then
Xen will route the spis to the pcpu running the requested vcpu.

So if your guest is Linux and you

echo 2 &gt; /proc/irq/SPI_NUMBER/smp_affinity

then you should see that Xen will start injecting the SPI to vcpu1.



&gt; And is this reason ARM 4.5 don't use maintanance interrupt?

No, that is just a performance optimization.


 
&gt; 
&gt; Thanks
&gt; 
&gt;  
&gt; 
&gt; -----Original Message-----
&gt; From: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt;
&gt; To: "신정섭"&lt;supsup5642@naver.com&gt;;
&gt; Cc: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt;; "Ian Campbell"&lt;ian.campbell@citrix.com&gt;; &lt;xen-devel@lists.xen.org&gt;;
&gt; Sent: 2015-04-21 (화) 02:25:09
&gt; Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
&gt;  
&gt; 
&gt; On Mon, 20 Apr 2015, 신정섭 wrote:
&gt; &gt; Thanks your rely. But sorry i can't understand your explanation fully.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; I don't want to change GICD setting. I only want to change target Domain0' vcpu injected SPI. vcpu0 or vcpu1.
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; I understand like below.
&gt; &gt;
&gt; &gt; In Xen4.4, vgic_vcpu_inject_irq() can inject SPI to any Domain0's vcpu on any pcpu.
&gt; &gt;
&gt; &gt; But int Xen4.5 vgic_vcpu_inject_irq() can inject SPI on only pcpu that receive SPI from GICD.
&gt; &gt;
&gt; &gt; Right?
&gt; 
&gt; Yes, if you meant the virtual GICD (not the physical GICD).
&gt; 
&gt; I'll repeat:
&gt; 
&gt; In Xen 4.5 vgic_vcpu_inject_irq can inject a given SPI only to the pcpu
&gt; that is set to run the vcpu that should receive the interrupt, as per
&gt; the vGICD configuration.
&gt; 
&gt; So if you
&gt; 
&gt; echo VCPU_NUMBER &gt; /proc/irq/IRQ_NUMBER/smp_affinity
&gt; 
&gt; in the guest, it should work and it should have a concrete effect in the
&gt; delivery of the physical interrupt.
&gt; 
&gt; 
&gt; &gt;  
&gt; &gt;
&gt; &gt;  
&gt; &gt;
&gt; &gt; -----Original Message-----
&gt; &gt; From: "Stefano Stabellini"&lt;stefano.stabellini@eu.citrix.com&gt;
&gt; &gt; To: "신정섭"&lt;supsup5642@naver.com&gt;;
&gt; &gt; Cc: "Ian Campbell"&lt;ian.campbell@citrix.com&gt;; &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;;
&gt; &gt; Sent: 2015-04-20 (월) 19:49:50
&gt; &gt; Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
&gt; &gt;  
&gt; &gt;
&gt; &gt; In Xen 4.5 we rely on the fact that the physical irq is routed to the
&gt; &gt; physical cpu running the vcpu of the domain that needs to receive the
&gt; &gt; corresponding virq.
&gt; &gt;
&gt; &gt; So if you want to inject IRQ 100 to CPU 1, while Dom0 is set to receive
&gt; &gt; vIRQ 100 (virtual irq corresponding to IRQ 100) to vcpu0, running on
&gt; &gt; CPU 0, that won't work.
&gt; &gt;
&gt; &gt;
&gt; &gt; On Sat, 18 Apr 2015, 신정섭 wrote:
&gt; &gt; &gt; NO
&gt; &gt; &gt;
&gt; &gt; &gt;  
&gt; &gt; &gt;
&gt; &gt; &gt; "Peripheral IRQ routing" means that  
&gt; &gt; &gt;
&gt; &gt; &gt; Xen select itself one of domain0's vCPU to inject periperal IRQ.
&gt; &gt; &gt;
&gt; &gt; &gt;  
&gt; &gt; &gt;
&gt; &gt; &gt; So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
&gt; &gt; &gt;
&gt; &gt; &gt; periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
&gt; &gt; &gt;
&gt; &gt; &gt;  
&gt; &gt; &gt;
&gt; &gt; &gt; I know that periperal IRQ can be process on any cpu in linux.
&gt; &gt; &gt;
&gt; &gt; &gt; So All Domain0's vcpu can process periperal IRQ injected by Xen.
&gt; &gt; &gt;
&gt; &gt; &gt;  
&gt; &gt; &gt;
&gt; &gt; &gt; On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
&gt; &gt; &gt;
&gt; &gt; &gt; But Xen 4.5.0 it dosen't.
&gt; &gt; &gt;
&gt; &gt; &gt;  
&gt; &gt; &gt;
&gt; &gt; &gt;  
&gt; &gt; &gt;
&gt; &gt; &gt; -----Original Message-----
&gt; &gt; &gt; From: "Ian Campbell"&lt;ian.campbell@citrix.com&gt;
&gt; &gt; &gt; To: "신정섭"&lt;supsup5642@naver.com&gt;;
&gt; &gt; &gt; Cc: &lt;xen-devel@lists.xen.org&gt;; "Stefano Stabellini"&lt;Stefano.Stabellini@eu.citrix.com&gt;;
&gt; &gt; &gt; Sent: 2015-04-17 (금) 18:49:39
&gt; &gt; &gt; Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
&gt; &gt; &gt;  
&gt; &gt; &gt;
&gt; &gt; &gt; On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; I'm studying periperal irq routing to Domain0's vCPU
&gt; &gt; &gt;
&gt; &gt; &gt; What do you mean by "peripheral irq routing"? Do you mean supporting the
&gt; &gt; &gt; guest writing to GICD_ITARGER to cause an interrupt to be injected to a
&gt; &gt; &gt; specific vcpu?
&gt; &gt; &gt;
&gt; &gt; &gt; I thought that was supposed to work, Stefano?
&gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; So Xen can select vcpu0 or vcpu1 to inject periperal irq.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; I tested periperal routing on Xen 4.4.1 and it works well.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; But I tested periperal routing on Xen 4.5.0 but irq dosen't works
&gt; &gt; &gt; &gt; well.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; So I tested very simple periperal routing code like this.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 'flag' is grobal variable.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; * In "do_IRQ" function on Xen 4.4.1
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; - from
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; if ( desc-&gt;status &amp; IRQ_GUEST )
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; {
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; struct domain *d = action-&gt;dev_id;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; desc-&gt;handler-&gt;end(desc);
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; /* XXX: inject irq into all guest vcpus */
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[0], irq, 0);
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; goto out_no_end;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; }
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -to if ( desc-&gt;status &amp; IRQ_GUEST ) {
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; struct domain *d = action-&gt;dev_id;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; desc-&gt;handler-&gt;end(desc);
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; desc-&gt;status = IRQ_INPROGRESS;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; desc-&gt;arch.eoi_cpu = smp_processor_id();
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; /* XXX: inject irq into all guest vcpus */
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq, 0);
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; goto out_no_end;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; }
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; * In "vgic_vcpu_inject_spi" function on Xen 4.5.0
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -from
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; {
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; struct vcpu *v;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; /* the IRQ needs to be an SPI */
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; v = vgic_get_target_vcpu(d-&gt;vcpu[0], irq);
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; vgic_vcpu_inject_irq(v, irq);
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; }
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; {
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; struct vcpu *v;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; /* the IRQ needs to be an SPI */
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; ASSERT(irq &gt;= 32 &amp;&amp; irq &lt;= gic_number_lines());
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; vgic_vcpu_inject_irq(d-&gt;vcpu[++flag % 2], irq);
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; }
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; so periperal irq injected to Domain0's vCPU0 or vCPU1.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; on Xen 4.4.1 it work well and i can confirm
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
&gt; &gt; &gt; &gt; command.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; * cat /proc/interrupts command on Xen 4.4.1
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; --------------------------------------------------
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; CPU0 CPU1
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 27: 8690 8558 GIC 27 arch_timer
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 31: 34 1 GIC 31 events
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 65: 0 0 GIC 65 10800000.mdma
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 66: 0 0 GIC 66 121a0000.pdma
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 67: 0 0 GIC 67 121b0000.pdma
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 74: 0 0 GIC 74 101d0000.watchdog
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 75: 0 0 GIC 75 s3c2410-rtc alarm
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 76: 0 0 GIC 76 s3c2410-rtc tick
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 77: 0 0 GIC 77 13400000.pinctrl
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 78: 0 0 GIC 78 11400000.pinctrl
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 79: 0 0 GIC 79 3860000.pinctrl
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 82: 0 0 GIC 82 10d10000.pinctrl
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 88: 229 233 GIC 88 12c60000.i2c
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 90: 0 0 GIC 90 12c80000.i2c
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 91: 0 0 GIC 91 12c90000.i2c
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 96: 0 0 GIC 96 12ce0000.i2c
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 97: 0 0 GIC 97 10060000.tmu
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 104: 0 0 GIC 104 xhci-hcd:usb1
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 107: 710 710 GIC 107 dw-mci
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 109: 9602 9610 GIC 109 dw-mci
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 156: 0 0 GIC 156 11c10000.mdma
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 160: 0 0 xen-dyn-event xenbus
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 184: 33 0 xen-percpu-virq hvc_console
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 185: 0 0 s5m8767 12 rtc-alarm0
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; IPI0: 0 0 CPU wakeup interrupts
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; IPI1: 0 0 Timer broadcast interrupts
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; IPI2: 6660 6920 Rescheduling interrupts
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; IPI3: 0 0 Function call interrupts
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; IPI4: 9 3 Single function call interrupts
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; IPI5: 0 0 CPU stop interrupts
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; IPI6: 0 0 IRQ work interrupts
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; IPI7: 0 0 completion interrupts
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; Err: 0
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; But on Xen 4.5.0, Dom0 can not booting.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; below is domain0's booting message on Xen 4.5.0
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; * domain0's booting message on Xen 4.5.0
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; -----------------------------------------------------
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
&gt; &gt; &gt; &gt; exynos-ehci
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
&gt; &gt; &gt; &gt; idProduct=0610
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
&gt; &gt; &gt; &gt; SerialNumber=0
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.030156] hub 3-3.2:1.0: USB hub found
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.033555] hub 3-3.2:1.0: 4 ports detected
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
&gt; &gt; &gt; &gt; exynos-ehci
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
&gt; &gt; &gt; &gt; idProduct=772a
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
&gt; &gt; &gt; &gt; SerialNumber=3
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.419921] usb 3-3.2.4: Product: AX88772
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
&gt; &gt; &gt; &gt; invalid hw address, using random
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
&gt; &gt; &gt; &gt; usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 7.925810] kjournald starting. Commit interval 5 seconds
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
&gt; &gt; &gt; &gt; mode
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 7.963607] devtmpfs: mounted
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 8.156858] random: init urandom read with 86 bits of entropy
&gt; &gt; &gt; &gt; available
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 8.378207] init: ureadahead main process (1407) terminated with
&gt; &gt; &gt; &gt; status 5
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 12.790491] random: nonblocking pool is initialized
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; &gt; seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.110770] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.115105] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.129430] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.136811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.144273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.151912] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.160593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.169797] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.179518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.188206] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.195137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.209712] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.214051] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.228385] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.236203] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.243746] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; &gt; seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.258417] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.262746] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.277076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.284454] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.291920] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.299556] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.308238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.316747] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.324656] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.333498] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.342180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.350605] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.359016] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.368224] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.377247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.384798] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.393044] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.401815] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.409966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.417691] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.430272] 7e60: 00037044 00000fb4
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 240.455028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; &gt; seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.465763] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.470089] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.484419] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.491805] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.499268] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.506908] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.515586] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.524789] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.534512] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.543201] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.550132] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.564708] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.569047] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.583380] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.591197] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.598741] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; &gt; seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.613412] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.617742] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.632071] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.639449] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.646916] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.654552] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.663234] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.671742] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.679651] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.688494] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.697174] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.705600] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.714011] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.723217] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.732243] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.739792] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.748040] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.756807] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.764961] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.772688] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.785269] 7e60: 00037044 00000fb4
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 360.810023] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; &gt; seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.820838] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.825094] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.839427] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.846811] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.854273] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.861914] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.870593] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.879795] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.889518] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.898196] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.905137] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
&gt; &gt; &gt; &gt; 120 seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.919713] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.924052] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.938392] [&lt;c04aa028&gt;] (__schedule) from [&lt;c01848cc&gt;]
&gt; &gt; &gt; &gt; (log_wait_commit+0xd8/0x120)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.946200] [&lt;c01848cc&gt;] (log_wait_commit) from [&lt;c00f0f44&gt;]
&gt; &gt; &gt; &gt; (do_fsync+0x50/0x78)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.953747] [&lt;c00f0f44&gt;] (do_fsync) from [&lt;c000f120&gt;]
&gt; &gt; &gt; &gt; (ret_fast_syscall+0x0/0x30)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
&gt; &gt; &gt; &gt; seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.968417] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.972747] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.987076] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 480.994473] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.001922] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.009557] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.018238] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f4f04&gt;]
&gt; &gt; &gt; &gt; (__bread_gfp+0xa8/0xec)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.026746] [&lt;c00f4f04&gt;] (__bread_gfp) from [&lt;c0127c14&gt;]
&gt; &gt; &gt; &gt; (ext3_get_branch+0x88/0x14c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.034644] [&lt;c0127c14&gt;] (ext3_get_branch) from [&lt;c0129800&gt;]
&gt; &gt; &gt; &gt; (ext3_get_blocks_handle+0x90/0xa40)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.043500] [&lt;c0129800&gt;] (ext3_get_blocks_handle) from [&lt;c012a24c&gt;]
&gt; &gt; &gt; &gt; (ext3_get_block+0x9c/0xdc)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.052180] [&lt;c012a24c&gt;] (ext3_get_block) from [&lt;c00fce08&gt;]
&gt; &gt; &gt; &gt; (do_mpage_readpage+0x470/0x7ac)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.060606] [&lt;c00fce08&gt;] (do_mpage_readpage) from [&lt;c00fd20c&gt;]
&gt; &gt; &gt; &gt; (mpage_readpages+0xc8/0x118)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.069015] [&lt;c00fd20c&gt;] (mpage_readpages) from [&lt;c00943d8&gt;]
&gt; &gt; &gt; &gt; (__do_page_cache_readahead+0x1b0/0x260)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.078223] [&lt;c00943d8&gt;] (__do_page_cache_readahead) from
&gt; &gt; &gt; &gt; [&lt;c008c0fc&gt;] (filemap_fault+0x3ac/0x474)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.087247] [&lt;c008c0fc&gt;] (filemap_fault) from [&lt;c00aa310&gt;]
&gt; &gt; &gt; &gt; (__do_fault+0x34/0x88)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.094797] [&lt;c00aa310&gt;] (__do_fault) from [&lt;c00abfc8&gt;]
&gt; &gt; &gt; &gt; (do_cow_fault.isra.95+0x5c/0x17c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.103045] [&lt;c00abfc8&gt;] (do_cow_fault.isra.95) from [&lt;c00add2c&gt;]
&gt; &gt; &gt; &gt; (handle_mm_fault+0x410/0x8d8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.111813] [&lt;c00add2c&gt;] (handle_mm_fault) from [&lt;c0019140&gt;]
&gt; &gt; &gt; &gt; (do_page_fault+0x194/0x280)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.119966] [&lt;c0019140&gt;] (do_page_fault) from [&lt;c0008560&gt;]
&gt; &gt; &gt; &gt; (do_DataAbort+0x38/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.127692] [&lt;c0008560&gt;] (do_DataAbort) from [&lt;c0012a18&gt;]
&gt; &gt; &gt; &gt; (__dabt_svc+0x38/0x60)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.140273] 7e60: 00037044 00000fb4
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
&gt; &gt; &gt; &gt; 00037044 cba3b900 cae46c00
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
&gt; &gt; &gt; &gt; c020cb84 20000013 ffffffff
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 481.165028] [&lt;c0012a18&gt;] (__dabt_svc) from [&lt;c020cb84&gt;]
&gt; &gt; &gt; &gt; (__clear_user_std+0x34/0x64)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
&gt; &gt; &gt; &gt; seconds.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.175773] Not tainted 3.18.3-svn1 #2
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.180099] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs"
&gt; &gt; &gt; &gt; disables this message.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.194433] [&lt;c04aa028&gt;] (__schedule) from [&lt;c04aa5f0&gt;] (io_schedule
&gt; &gt; &gt; &gt; +0x70/0x9c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.201816] [&lt;c04aa5f0&gt;] (io_schedule) from [&lt;c04aaccc&gt;]
&gt; &gt; &gt; &gt; (bit_wait_io+0x34/0x58)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.209278] [&lt;c04aaccc&gt;] (bit_wait_io) from [&lt;c04aa920&gt;]
&gt; &gt; &gt; &gt; (__wait_on_bit+0x80/0xb8)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.216918] [&lt;c04aa920&gt;] (__wait_on_bit) from [&lt;c04aa9c4&gt;]
&gt; &gt; &gt; &gt; (out_of_line_wait_on_bit+0x6c/0x74)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.225598] [&lt;c04aa9c4&gt;] (out_of_line_wait_on_bit) from [&lt;c00f69a8&gt;]
&gt; &gt; &gt; &gt; (__sync_dirty_buffer+0xc0/0xec)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.234800] [&lt;c00f69a8&gt;] (__sync_dirty_buffer) from [&lt;c0182244&gt;]
&gt; &gt; &gt; &gt; (journal_commit_transaction+0xfc8/0x139c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.244535] [&lt;c0182244&gt;] (journal_commit_transaction) from
&gt; &gt; &gt; &gt; [&lt;c0184e48&gt;] (kjournald+0xe4/0x268)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.253200] [&lt;c0184e48&gt;] (kjournald) from [&lt;c0039bb0&gt;] (kthread
&gt; &gt; &gt; &gt; +0xd8/0xf0)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; [ 601.260142] [&lt;c0039bb0&gt;] (kthread) from [&lt;c000f1b8&gt;] (ret_from_fork
&gt; &gt; &gt; &gt; +0x14/0x3c)
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; ---------------------------------------------------------------------------------
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; Accroding to log.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; It seems that periperal irq arn't injected properly.
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
&gt; &gt; &gt; &gt; irq. right?
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; This is Bug??
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; or Intended on Xen 4.5.x?
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt;
&gt; &gt; &gt; &gt; _______________________________________________
&gt; &gt; &gt; &gt; Xen-devel mailing list
&gt; &gt; &gt; &gt; Xen-devel@lists.xen.org
&gt; &gt; &gt; &gt; http://lists.xen.org/xen-devel
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt;
&gt; &gt; &gt; [?img=mr%2Bm%2BBFm%2BBK9hAnZFAM9FqMdFrMqKo%2BSFrM%2FFrudF4tqMxFvKouXM4twFrKZtzFXp6UmaLl5WLl51zlqDBFdp6d5
&gt; &gt; &gt; MreRhoRx%2Bzk4M6lT70FdM6i0WzwGW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
&gt; &gt; &gt;
&gt; &gt;[?img=mqFm%2BBFm%2BBF0hAnZFAM9FqFoM6twazErKxk0FxgrMo3CF6MwM6UZpAp0K6JgMX%2B0Mou974lR74lcWNFlbX30WLloWrdQaXFdp6pCW4Y5bX3CM4knWz051
&gt; 
&gt; &gt; EI0%2BLlo1B3Z1B25MreR.gif]
&gt; &gt;
&gt; [?img=me%2Bm%2BBFm%2BBF0hAnZFAM9p6udp4ivaAuqFAUZFAI0pAKlpxura6uwF6i4p6FCtzFXp6UmFVl5WLl51zlqDBFdp6d5MreRhoRq%2Bzk4M6lT7NFdM6i0Wzw
&gt; GW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
&gt; 

[-- Attachment #1.2: Type: text/html, Size: 45641 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
  2015-04-21 10:29               ` 신정섭
@ 2015-04-21 10:39                 ` Stefano Stabellini
  2015-04-22  2:43                   ` virq injection probelem in Xen ARM 4.5 신정섭
  0 siblings, 1 reply; 14+ messages in thread
From: Stefano Stabellini @ 2015-04-21 10:39 UTC (permalink / raw)
  To: 신정섭; +Cc: xen-devel, Ian Campbell, Stefano Stabellini

[-- Attachment #1: Type: text/plain, Size: 33312 bytes --]

On Tue, 21 Apr 2015, 신정섭 wrote:
> Thanks your reply!
>
>  
>
> I Think I find a Interrupt mechanism problem in Xen ARM 4.5 and I fix that simply.
>
> After fix it my irq routing code is working well on Xen ARM 4.5 too.
>
>  
>
> I will start new thread about that problem.
>
> please confirm please.

Confirm what? You are welcome to start a new thread an any interrupt
bugs you might have found.


>  
>
> Thanks
>
>  
>
> -----Original Message-----
> From: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>
> To: "신정섭"<supsup5642@naver.com>;
> Cc: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>; "Ian Campbell"<ian.campbell@citrix.com>; <xen-devel@lists.xen.org>;
> Sent: 2015-04-21 (화) 19:13:54
> Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
>  
>
> On Tue, 21 Apr 2015, 신정섭 wrote:
> > I have a one more question. 
> >
> >  
> >
> > In Xen ARM 4.5, All SPI is routed to pcpu0 that run domain0's vcpu0.
> >
> > If domain0's vcpu0 run on pcpu0 All SPI is routed to pcpu0
> >
> > If domain0's vcpu0 run on pcpu1 All SPI is routed to pcpu1
>
> That is correct.
>
>
> > these mean that Xen ARM 4.5 can inject spi only to domain0's vcpu0
> >
> > and Xen ARM 4.5 cannot inject spi to domain0's vcpu1.
> >
> > Right?
>
> No, that is wrong. If the guest requests the spis to be routed to
> another vcpu, writing the appropriate values to the virtual GICD, then
> Xen will route the spis to the pcpu running the requested vcpu.
>
> So if your guest is Linux and you
>
> echo 2 > /proc/irq/SPI_NUMBER/smp_affinity
>
> then you should see that Xen will start injecting the SPI to vcpu1.
>
>
>
> > And is this reason ARM 4.5 don't use maintanance interrupt?
>
> No, that is just a performance optimization.
>
>
>  
> >
> > Thanks
> >
> >  
> >
> > -----Original Message-----
> > From: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>
> > To: "신정섭"<supsup5642@naver.com>;
> > Cc: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>; "Ian Campbell"<ian.campbell@citrix.com>; <xen-devel@lists.xen.org>;
> > Sent: 2015-04-21 (화) 02:25:09
> > Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
> >  
> >
> > On Mon, 20 Apr 2015, 신정섭 wrote:
> > > Thanks your rely. But sorry i can't understand your explanation fully.
> > >
> > >  
> > >
> > > I don't want to change GICD setting. I only want to change target Domain0' vcpu injected SPI. vcpu0 or vcpu1.
> > >
> > >  
> > >
> > > I understand like below.
> > >
> > > In Xen4.4, vgic_vcpu_inject_irq() can inject SPI to any Domain0's vcpu on any pcpu.
> > >
> > > But int Xen4.5 vgic_vcpu_inject_irq() can inject SPI on only pcpu that receive SPI from GICD.
> > >
> > > Right?
> >
> > Yes, if you meant the virtual GICD (not the physical GICD).
> >
> > I'll repeat:
> >
> > In Xen 4.5 vgic_vcpu_inject_irq can inject a given SPI only to the pcpu
> > that is set to run the vcpu that should receive the interrupt, as per
> > the vGICD configuration.
> >
> > So if you
> >
> > echo VCPU_NUMBER > /proc/irq/IRQ_NUMBER/smp_affinity
> >
> > in the guest, it should work and it should have a concrete effect in the
> > delivery of the physical interrupt.
> >
> >
> > >  
> > >
> > >  
> > >
> > > -----Original Message-----
> > > From: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>
> > > To: "신정섭"<supsup5642@naver.com>;
> > > Cc: "Ian Campbell"<ian.campbell@citrix.com>; <xen-devel@lists.xen.org>; "Stefano
> Stabellini"<Stefano.Stabellini@eu.citrix.com>;
> > > Sent: 2015-04-20 (월) 19:49:50
> > > Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
> > >  
> > >
> > > In Xen 4.5 we rely on the fact that the physical irq is routed to the
> > > physical cpu running the vcpu of the domain that needs to receive the
> > > corresponding virq.
> > >
> > > So if you want to inject IRQ 100 to CPU 1, while Dom0 is set to receive
> > > vIRQ 100 (virtual irq corresponding to IRQ 100) to vcpu0, running on
> > > CPU 0, that won't work.
> > >
> > >
> > > On Sat, 18 Apr 2015, 신정섭 wrote:
> > > > NO
> > > >
> > > >  
> > > >
> > > > "Peripheral IRQ routing" means that  
> > > >
> > > > Xen select itself one of domain0's vCPU to inject periperal IRQ.
> > > >
> > > >  
> > > >
> > > > So below Simple peripheral IRQ routing Code is a Example of Peripheral IRQ routing.
> > > >
> > > > periperal IRQ is injected to Domain0' vcpu0 or vcpu1 without vGIC Information.
> > > >
> > > >  
> > > >
> > > > I know that periperal IRQ can be process on any cpu in linux.
> > > >
> > > > So All Domain0's vcpu can process periperal IRQ injected by Xen.
> > > >
> > > >  
> > > >
> > > > On Xen 4.4.1 my simple Simple peripheral irq routing Code is working well. (below)
> > > >
> > > > But Xen 4.5.0 it dosen't.
> > > >
> > > >  
> > > >
> > > >  
> > > >
> > > > -----Original Message-----
> > > > From: "Ian Campbell"<ian.campbell@citrix.com>
> > > > To: "신정섭"<supsup5642@naver.com>;
> > > > Cc: <xen-devel@lists.xen.org>; "Stefano Stabellini"<Stefano.Stabellini@eu.citrix.com>;
> > > > Sent: 2015-04-17 (금) 18:49:39
> > > > Subject: Re: [Xen-devel] Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x?
> > > >  
> > > >
> > > > On Fri, 2015-04-17 at 11:36 +0900, 신정섭 wrote:
> > > > >
> > > > >
> > > > > I'm studying periperal irq routing to Domain0's vCPU
> > > >
> > > > What do you mean by "peripheral irq routing"? Do you mean supporting the
> > > > guest writing to GICD_ITARGER to cause an interrupt to be injected to a
> > > > specific vcpu?
> > > >
> > > > I thought that was supposed to work, Stefano?
> > > >
> > > > >
> > > > >
> > > > >
> > > > > I'm testing on Arndale Broad and Domain 0 has 2 vCPU.
> > > > >
> > > > > So Xen can select vcpu0 or vcpu1 to inject periperal irq.
> > > > >
> > > > >
> > > > >
> > > > > I tested periperal routing on Xen 4.4.1 and it works well.
> > > > >
> > > > > But I tested periperal routing on Xen 4.5.0 but irq dosen't works
> > > > > well.
> > > > >
> > > > >
> > > > >
> > > > > So I tested very simple periperal routing code like this.
> > > > >
> > > > > 'flag' is grobal variable.
> > > > >
> > > > >
> > > > >
> > > > > * In "do_IRQ" function on Xen 4.4.1
> > > > >
> > > > > -----------------------------------------------------
> > > > >
> > > > > - from
> > > > >
> > > > > if ( desc->status & IRQ_GUEST )
> > > > >
> > > > > {
> > > > >
> > > > > struct domain *d = action->dev_id;
> > > > >
> > > > >
> > > > >
> > > > > desc->handler->end(desc);
> > > > >
> > > > >
> > > > >
> > > > > desc->status = IRQ_INPROGRESS;
> > > > >
> > > > > desc->arch.eoi_cpu = smp_processor_id();
> > > > >
> > > > >
> > > > >
> > > > > /* XXX: inject irq into all guest vcpus */
> > > > >
> > > > > vgic_vcpu_inject_irq(d->vcpu[0], irq, 0);
> > > > >
> > > > > goto out_no_end;
> > > > >
> > > > > }
> > > > >
> > > > > -to if ( desc->status & IRQ_GUEST ) {
> > > > >
> > > > > struct domain *d = action->dev_id;
> > > > >
> > > > >
> > > > >
> > > > > desc->handler->end(desc);
> > > > >
> > > > >
> > > > >
> > > > > desc->status = IRQ_INPROGRESS;
> > > > >
> > > > > desc->arch.eoi_cpu = smp_processor_id();
> > > > >
> > > > >
> > > > >
> > > > > /* XXX: inject irq into all guest vcpus */
> > > > >
> > > > > vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq, 0);
> > > > >
> > > > > goto out_no_end;
> > > > >
> > > > > }
> > > > >
> > > > > -----------------------------------------------------
> > > > >
> > > > >
> > > > >
> > > > > * In "vgic_vcpu_inject_spi" function on Xen 4.5.0
> > > > >
> > > > > -----------------------------------------------------
> > > > >
> > > > > -from
> > > > >
> > > > > void vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> > > > >
> > > > > {
> > > > >
> > > > > struct vcpu *v;
> > > > >
> > > > >
> > > > >
> > > > > /* the IRQ needs to be an SPI */
> > > > >
> > > > > ASSERT(irq >= 32 && irq <= gic_number_lines());
> > > > >
> > > > >
> > > > >
> > > > > v = vgic_get_target_vcpu(d->vcpu[0], irq);
> > > > >
> > > > > vgic_vcpu_inject_irq(v, irq);
> > > > >
> > > > > }
> > > > >
> > > > > -tovoid vgic_vcpu_inject_spi(struct domain *d, unsigned int irq)
> > > > >
> > > > > {
> > > > >
> > > > > struct vcpu *v;
> > > > >
> > > > >
> > > > >
> > > > > /* the IRQ needs to be an SPI */
> > > > >
> > > > > ASSERT(irq >= 32 && irq <= gic_number_lines());
> > > > >
> > > > >
> > > > >
> > > > > vgic_vcpu_inject_irq(d->vcpu[++flag % 2], irq);
> > > > >
> > > > > }
> > > > >
> > > > > -----------------------------------------------------
> > > > >
> > > > > so periperal irq injected to Domain0's vCPU0 or vCPU1.
> > > > >
> > > > >
> > > > >
> > > > > on Xen 4.4.1 it work well and i can confirm
> > > > >
> > > > > periperal irq routed vcpu0 or vcpu1 by using cat /proc/interrupts
> > > > > command.
> > > > >
> > > > >
> > > > >
> > > > > * cat /proc/interrupts command on Xen 4.4.1
> > > > >
> > > > > --------------------------------------------------
> > > > >
> > > > > CPU0 CPU1
> > > > >
> > > > > 27: 8690 8558 GIC 27 arch_timer
> > > > >
> > > > > 31: 34 1 GIC 31 events
> > > > >
> > > > > 65: 0 0 GIC 65 10800000.mdma
> > > > >
> > > > > 66: 0 0 GIC 66 121a0000.pdma
> > > > >
> > > > > 67: 0 0 GIC 67 121b0000.pdma
> > > > >
> > > > > 74: 0 0 GIC 74 101d0000.watchdog
> > > > >
> > > > > 75: 0 0 GIC 75 s3c2410-rtc alarm
> > > > >
> > > > > 76: 0 0 GIC 76 s3c2410-rtc tick
> > > > >
> > > > > 77: 0 0 GIC 77 13400000.pinctrl
> > > > >
> > > > > 78: 0 0 GIC 78 11400000.pinctrl
> > > > >
> > > > > 79: 0 0 GIC 79 3860000.pinctrl
> > > > >
> > > > > 82: 0 0 GIC 82 10d10000.pinctrl
> > > > >
> > > > > 88: 229 233 GIC 88 12c60000.i2c
> > > > >
> > > > > 90: 0 0 GIC 90 12c80000.i2c
> > > > >
> > > > > 91: 0 0 GIC 91 12c90000.i2c
> > > > >
> > > > > 96: 0 0 GIC 96 12ce0000.i2c
> > > > >
> > > > > 97: 0 0 GIC 97 10060000.tmu
> > > > >
> > > > > 103: 257 246 GIC 103 ehci_hcd:usb3, ohci_hcd:usb4
> > > > >
> > > > > 104: 0 0 GIC 104 xhci-hcd:usb1
> > > > >
> > > > > 107: 710 710 GIC 107 dw-mci
> > > > >
> > > > > 109: 9602 9610 GIC 109 dw-mci
> > > > >
> > > > > 156: 0 0 GIC 156 11c10000.mdma
> > > > >
> > > > > 160: 0 0 xen-dyn-event xenbus
> > > > >
> > > > > 183: 1 0 exynos_wkup_irq_chip 2 s5m8767
> > > > >
> > > > > 184: 33 0 xen-percpu-virq hvc_console
> > > > >
> > > > > 185: 0 0 s5m8767 12 rtc-alarm0
> > > > >
> > > > > 186: 0 0 exynos_wkup_irq_chip 4 SW-TACT2
> > > > >
> > > > > 187: 0 0 exynos_wkup_irq_chip 5 SW-TACT3
> > > > >
> > > > > 188: 0 0 exynos_wkup_irq_chip 6 SW-TACT4
> > > > >
> > > > > 189: 0 0 exynos_wkup_irq_chip 7 SW-TACT5
> > > > >
> > > > > 190: 0 0 exynos_wkup_irq_chip 0 SW-TACT6
> > > > >
> > > > > 191: 0 0 exynos_wkup_irq_chip 1 SW-TACT7
> > > > >
> > > > > IPI0: 0 0 CPU wakeup interrupts
> > > > >
> > > > > IPI1: 0 0 Timer broadcast interrupts
> > > > >
> > > > > IPI2: 6660 6920 Rescheduling interrupts
> > > > >
> > > > > IPI3: 0 0 Function call interrupts
> > > > >
> > > > > IPI4: 9 3 Single function call interrupts
> > > > >
> > > > > IPI5: 0 0 CPU stop interrupts
> > > > >
> > > > > IPI6: 0 0 IRQ work interrupts
> > > > >
> > > > > IPI7: 0 0 completion interrupts
> > > > >
> > > > >
> > > > >
> > > > > Err: 0
> > > > >
> > > > > -----------------------------------------------------
> > > > >
> > > > >
> > > > >
> > > > > But on Xen 4.5.0, Dom0 can not booting.
> > > > >
> > > > > below is domain0's booting message on Xen 4.5.0
> > > > >
> > > > >
> > > > >
> > > > > * domain0's booting message on Xen 4.5.0
> > > > >
> > > > > -----------------------------------------------------
> > > > >
> > > > > [ 3.900830] usb 3-3.2: new high-speed USB device number 3 using
> > > > > exynos-ehci
> > > > >
> > > > > [ 4.012184] usb 3-3.2: New USB device found, idVendor=05e3,
> > > > > idProduct=0610
> > > > >
> > > > > [ 4.017685] usb 3-3.2: New USB device strings: Mfr=0, Product=1,
> > > > > SerialNumber=0
> > > > >
> > > > > [ 4.025075] usb 3-3.2: Product: USB2.0 Hub
> > > > >
> > > > > [ 4.030156] hub 3-3.2:1.0: USB hub found
> > > > >
> > > > > [ 4.033555] hub 3-3.2:1.0: 4 ports detected
> > > > >
> > > > > [ 4.310681] usb 3-3.2.4: new high-speed USB device number 4 using
> > > > > exynos-ehci
> > > > >
> > > > > [ 4.406697] usb 3-3.2.4: New USB device found, idVendor=0b95,
> > > > > idProduct=772a
> > > > >
> > > > > [ 4.412372] usb 3-3.2.4: New USB device strings: Mfr=1, Product=2,
> > > > > SerialNumber=3
> > > > >
> > > > > [ 4.419921] usb 3-3.2.4: Product: AX88772
> > > > >
> > > > > [ 4.424087] usb 3-3.2.4: Manufacturer: ASIX Elec. Corp.
> > > > >
> > > > > [ 4.429393] usb 3-3.2.4: SerialNumber: 000001
> > > > >
> > > > > [ 4.435809] asix 3-3.2.4:1.0 (unnamed net_device) (uninitialized):
> > > > > invalid hw address, using random
> > > > >
> > > > > [ 5.229663] asix 3-3.2.4:1.0 eth0: register 'asix' at
> > > > > usb-12110000.usb-3.2.4, ASIX AX88772 USB 2.0 Ethernet, ee:21:96:b8:
> > > > >
> > > > > [ 7.925810] kjournald starting. Commit interval 5 seconds
> > > > >
> > > > > [ 7.929993] EXT3-fs (mmcblk1p2): using internal journal
> > > > >
> > > > > [ 7.944820] EXT3-fs (mmcblk1p2): recovery complete
> > > > >
> > > > > [ 7.948228] EXT3-fs (mmcblk1p2): mounted filesystem with ordered data
> > > > > mode
> > > > >
> > > > > [ 7.955194] VFS: Mounted root (ext3 filesystem) on device 179:34.
> > > > >
> > > > > [ 7.963607] devtmpfs: mounted
> > > > >
> > > > > [ 7.965377] Freeing unused kernel memory: 304K (c066e000 - c06ba000)
> > > > >
> > > > > [ 8.156858] random: init urandom read with 86 bits of entropy
> > > > > available
> > > > >
> > > > > [ 8.378207] init: ureadahead main process (1407) terminated with
> > > > > status 5
> > > > >
> > > > > [ 12.790491] random: nonblocking pool is initialized
> > > > >
> > > > > [ 240.105444] INFO: task kjournald:1402 blocked for more than 120
> > > > > seconds.
> > > > >
> > > > > [ 240.110770] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 240.115105] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 240.123005] kjournald D c04aa028 0 1402 2 0x00000000
> > > > >
> > > > > [ 240.129430] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > > +0x70/0x9c)
> > > > >
> > > > > [ 240.136811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > > (bit_wait_io+0x34/0x58)
> > > > >
> > > > > [ 240.144273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > > (__wait_on_bit+0x80/0xb8)
> > > > >
> > > > > [ 240.151912] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > > >
> > > > > [ 240.160593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > > > (__sync_dirty_buffer+0xc0/0xec)
> > > > >
> > > > > [ 240.169797] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > > > (journal_commit_transaction+0xfc8/0x139c)
> > > > >
> > > > > [ 240.179518] [<c0182244>] (journal_commit_transaction) from
> > > > > [<c0184e48>] (kjournald+0xe4/0x268)
> > > > >
> > > > > [ 240.188206] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > > > +0xd8/0xf0)
> > > > >
> > > > > [ 240.195137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > > > +0x14/0x3c)
> > > > >
> > > > > [ 240.202427] INFO: task upstart-udev-br:1524 blocked for more than
> > > > > 120 seconds.
> > > > >
> > > > > [ 240.209712] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 240.214051] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 240.221953] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > > > >
> > > > > [ 240.228385] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > > > (log_wait_commit+0xd8/0x120)
> > > > >
> > > > > [ 240.236203] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > > > (do_fsync+0x50/0x78)
> > > > >
> > > > > [ 240.243746] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > > > (ret_fast_syscall+0x0/0x30)
> > > > >
> > > > > [ 240.251295] INFO: task systemd-udevd:1528 blocked for more than 120
> > > > > seconds.
> > > > >
> > > > > [ 240.258417] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 240.262746] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 240.270646] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > > > >
> > > > > [ 240.277076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > > +0x70/0x9c)
> > > > >
> > > > > [ 240.284454] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > > (bit_wait_io+0x34/0x58)
> > > > >
> > > > > [ 240.291920] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > > (__wait_on_bit+0x80/0xb8)
> > > > >
> > > > > [ 240.299556] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > > >
> > > > > [ 240.308238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > > > (__bread_gfp+0xa8/0xec)
> > > > >
> > > > > [ 240.316747] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > > > (ext3_get_branch+0x88/0x14c)
> > > > >
> > > > > [ 240.324656] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > > > (ext3_get_blocks_handle+0x90/0xa40)
> > > > >
> > > > > [ 240.333498] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > > > (ext3_get_block+0x9c/0xdc)
> > > > >
> > > > > [ 240.342180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > > > (do_mpage_readpage+0x470/0x7ac)
> > > > >
> > > > > [ 240.350605] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > > > (mpage_readpages+0xc8/0x118)
> > > > >
> > > > > [ 240.359016] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > > > (__do_page_cache_readahead+0x1b0/0x260)
> > > > >
> > > > > [ 240.368224] [<c00943d8>] (__do_page_cache_readahead) from
> > > > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > > > >
> > > > > [ 240.377247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > > > (__do_fault+0x34/0x88)
> > > > >
> > > > > [ 240.384798] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > > > (do_cow_fault.isra.95+0x5c/0x17c)
> > > > >
> > > > > [ 240.393044] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > > > (handle_mm_fault+0x410/0x8d8)
> > > > >
> > > > > [ 240.401815] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > > > (do_page_fault+0x194/0x280)
> > > > >
> > > > > [ 240.409966] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > > > (do_DataAbort+0x38/0x9c)
> > > > >
> > > > > [ 240.417691] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > > > (__dabt_svc+0x38/0x60)
> > > > >
> > > > > [ 240.425151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > > > >
> > > > > [ 240.430272] 7e60: 00037044 00000fb4
> > > > >
> > > > > [ 240.438523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > > > 00037044 cba3b900 cae46c00
> > > > >
> > > > > [ 240.446768] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > > > c020cb84 20000013 ffffffff
> > > > >
> > > > > [ 240.455028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > > > (__clear_user_std+0x34/0x64)
> > > > >
> > > > > [ 360.460441] INFO: task kjournald:1402 blocked for more than 120
> > > > > seconds.
> > > > >
> > > > > [ 360.465763] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 360.470089] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 360.477997] kjournald D c04aa028 0 1402 2 0x00000000
> > > > >
> > > > > [ 360.484419] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > > +0x70/0x9c)
> > > > >
> > > > > [ 360.491805] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > > (bit_wait_io+0x34/0x58)
> > > > >
> > > > > [ 360.499268] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > > (__wait_on_bit+0x80/0xb8)
> > > > >
> > > > > [ 360.506908] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > > >
> > > > > [ 360.515586] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > > > (__sync_dirty_buffer+0xc0/0xec)
> > > > >
> > > > > [ 360.524789] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > > > (journal_commit_transaction+0xfc8/0x139c)
> > > > >
> > > > > [ 360.534512] [<c0182244>] (journal_commit_transaction) from
> > > > > [<c0184e48>] (kjournald+0xe4/0x268)
> > > > >
> > > > > [ 360.543201] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > > > +0xd8/0xf0)
> > > > >
> > > > > [ 360.550132] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > > > +0x14/0x3c)
> > > > >
> > > > > [ 360.557422] INFO: task upstart-udev-br:1524 blocked for more than
> > > > > 120 seconds.
> > > > >
> > > > > [ 360.564708] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 360.569047] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 360.576948] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > > > >
> > > > > [ 360.583380] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > > > (log_wait_commit+0xd8/0x120)
> > > > >
> > > > > [ 360.591197] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > > > (do_fsync+0x50/0x78)
> > > > >
> > > > > [ 360.598741] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > > > (ret_fast_syscall+0x0/0x30)
> > > > >
> > > > > [ 360.606289] INFO: task systemd-udevd:1528 blocked for more than 120
> > > > > seconds.
> > > > >
> > > > > [ 360.613412] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 360.617742] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 360.625642] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > > > >
> > > > > [ 360.632071] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > > +0x70/0x9c)
> > > > >
> > > > > [ 360.639449] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > > (bit_wait_io+0x34/0x58)
> > > > >
> > > > > [ 360.646916] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > > (__wait_on_bit+0x80/0xb8)
> > > > >
> > > > > [ 360.654552] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > > >
> > > > > [ 360.663234] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > > > (__bread_gfp+0xa8/0xec)
> > > > >
> > > > > [ 360.671742] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > > > (ext3_get_branch+0x88/0x14c)
> > > > >
> > > > > [ 360.679651] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > > > (ext3_get_blocks_handle+0x90/0xa40)
> > > > >
> > > > > [ 360.688494] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > > > (ext3_get_block+0x9c/0xdc)
> > > > >
> > > > > [ 360.697174] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > > > (do_mpage_readpage+0x470/0x7ac)
> > > > >
> > > > > [ 360.705600] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > > > (mpage_readpages+0xc8/0x118)
> > > > >
> > > > > [ 360.714011] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > > > (__do_page_cache_readahead+0x1b0/0x260)
> > > > >
> > > > > [ 360.723217] [<c00943d8>] (__do_page_cache_readahead) from
> > > > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > > > >
> > > > > [ 360.732243] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > > > (__do_fault+0x34/0x88)
> > > > >
> > > > > [ 360.739792] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > > > (do_cow_fault.isra.95+0x5c/0x17c)
> > > > >
> > > > > [ 360.748040] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > > > (handle_mm_fault+0x410/0x8d8)
> > > > >
> > > > > [ 360.756807] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > > > (do_page_fault+0x194/0x280)
> > > > >
> > > > > [ 360.764961] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > > > (do_DataAbort+0x38/0x9c)
> > > > >
> > > > > [ 360.772688] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > > > (__dabt_svc+0x38/0x60)
> > > > >
> > > > > [ 360.780147] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > > > >
> > > > > [ 360.785269] 7e60: 00037044 00000fb4
> > > > >
> > > > > [ 360.793540] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > > > 00037044 cba3b900 cae46c00
> > > > >
> > > > > [ 360.801765] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > > > c020cb84 20000013 ffffffff
> > > > >
> > > > > [ 360.810023] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > > > (__clear_user_std+0x34/0x64)
> > > > >
> > > > > [ 480.815443] INFO: task kjournald:1402 blocked for more than 120
> > > > > seconds.
> > > > >
> > > > > [ 480.820838] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 480.825094] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 480.833006] kjournald D c04aa028 0 1402 2 0x00000000
> > > > >
> > > > > [ 480.839427] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > > +0x70/0x9c)
> > > > >
> > > > > [ 480.846811] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > > (bit_wait_io+0x34/0x58)
> > > > >
> > > > > [ 480.854273] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > > (__wait_on_bit+0x80/0xb8)
> > > > >
> > > > > [ 480.861914] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > > >
> > > > > [ 480.870593] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > > > (__sync_dirty_buffer+0xc0/0xec)
> > > > >
> > > > > [ 480.879795] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > > > (journal_commit_transaction+0xfc8/0x139c)
> > > > >
> > > > > [ 480.889518] [<c0182244>] (journal_commit_transaction) from
> > > > > [<c0184e48>] (kjournald+0xe4/0x268)
> > > > >
> > > > > [ 480.898196] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > > > +0xd8/0xf0)
> > > > >
> > > > > [ 480.905137] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > > > +0x14/0x3c)
> > > > >
> > > > > [ 480.912426] INFO: task upstart-udev-br:1524 blocked for more than
> > > > > 120 seconds.
> > > > >
> > > > > [ 480.919713] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 480.924052] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 480.931952] upstart-udev-br D c04aa028 0 1524 1 0x00000000
> > > > >
> > > > > [ 480.938392] [<c04aa028>] (__schedule) from [<c01848cc>]
> > > > > (log_wait_commit+0xd8/0x120)
> > > > >
> > > > > [ 480.946200] [<c01848cc>] (log_wait_commit) from [<c00f0f44>]
> > > > > (do_fsync+0x50/0x78)
> > > > >
> > > > > [ 480.953747] [<c00f0f44>] (do_fsync) from [<c000f120>]
> > > > > (ret_fast_syscall+0x0/0x30)
> > > > >
> > > > > [ 480.961295] INFO: task systemd-udevd:1528 blocked for more than 120
> > > > > seconds.
> > > > >
> > > > > [ 480.968417] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 480.972747] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 480.980660] systemd-udevd D c04aa028 0 1528 1 0x00000004
> > > > >
> > > > > [ 480.987076] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > > +0x70/0x9c)
> > > > >
> > > > > [ 480.994473] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > > (bit_wait_io+0x34/0x58)
> > > > >
> > > > > [ 481.001922] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > > (__wait_on_bit+0x80/0xb8)
> > > > >
> > > > > [ 481.009557] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > > >
> > > > > [ 481.018238] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f4f04>]
> > > > > (__bread_gfp+0xa8/0xec)
> > > > >
> > > > > [ 481.026746] [<c00f4f04>] (__bread_gfp) from [<c0127c14>]
> > > > > (ext3_get_branch+0x88/0x14c)
> > > > >
> > > > > [ 481.034644] [<c0127c14>] (ext3_get_branch) from [<c0129800>]
> > > > > (ext3_get_blocks_handle+0x90/0xa40)
> > > > >
> > > > > [ 481.043500] [<c0129800>] (ext3_get_blocks_handle) from [<c012a24c>]
> > > > > (ext3_get_block+0x9c/0xdc)
> > > > >
> > > > > [ 481.052180] [<c012a24c>] (ext3_get_block) from [<c00fce08>]
> > > > > (do_mpage_readpage+0x470/0x7ac)
> > > > >
> > > > > [ 481.060606] [<c00fce08>] (do_mpage_readpage) from [<c00fd20c>]
> > > > > (mpage_readpages+0xc8/0x118)
> > > > >
> > > > > [ 481.069015] [<c00fd20c>] (mpage_readpages) from [<c00943d8>]
> > > > > (__do_page_cache_readahead+0x1b0/0x260)
> > > > >
> > > > > [ 481.078223] [<c00943d8>] (__do_page_cache_readahead) from
> > > > > [<c008c0fc>] (filemap_fault+0x3ac/0x474)
> > > > >
> > > > > [ 481.087247] [<c008c0fc>] (filemap_fault) from [<c00aa310>]
> > > > > (__do_fault+0x34/0x88)
> > > > >
> > > > > [ 481.094797] [<c00aa310>] (__do_fault) from [<c00abfc8>]
> > > > > (do_cow_fault.isra.95+0x5c/0x17c)
> > > > >
> > > > > [ 481.103045] [<c00abfc8>] (do_cow_fault.isra.95) from [<c00add2c>]
> > > > > (handle_mm_fault+0x410/0x8d8)
> > > > >
> > > > > [ 481.111813] [<c00add2c>] (handle_mm_fault) from [<c0019140>]
> > > > > (do_page_fault+0x194/0x280)
> > > > >
> > > > > [ 481.119966] [<c0019140>] (do_page_fault) from [<c0008560>]
> > > > > (do_DataAbort+0x38/0x9c)
> > > > >
> > > > > [ 481.127692] [<c0008560>] (do_DataAbort) from [<c0012a18>]
> > > > > (__dabt_svc+0x38/0x60)
> > > > >
> > > > > [ 481.135151] Exception stack(0xcaee7e78 to 0xcaee7ec0)
> > > > >
> > > > > [ 481.140273] 7e60: 00037044 00000fb4
> > > > >
> > > > > [ 481.148523] 7e80: 00000000 00000000 cbaf3880 caca7a00 caee7ed0
> > > > > 00037044 cba3b900 cae46c00
> > > > >
> > > > > [ 481.156769] 7ea0: 00037940 00037044 00000000 caee7ec0 c010ada4
> > > > > c020cb84 20000013 ffffffff
> > > > >
> > > > > [ 481.165028] [<c0012a18>] (__dabt_svc) from [<c020cb84>]
> > > > > (__clear_user_std+0x34/0x64)
> > > > >
> > > > > [ 601.170443] INFO: task kjournald:1402 blocked for more than 120
> > > > > seconds.
> > > > >
> > > > > [ 601.175773] Not tainted 3.18.3-svn1 #2
> > > > >
> > > > > [ 601.180099] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs"
> > > > > disables this message.
> > > > >
> > > > > [ 601.188008] kjournald D c04aa028 0 1402 2 0x00000000
> > > > >
> > > > > [ 601.194433] [<c04aa028>] (__schedule) from [<c04aa5f0>] (io_schedule
> > > > > +0x70/0x9c)
> > > > >
> > > > > [ 601.201816] [<c04aa5f0>] (io_schedule) from [<c04aaccc>]
> > > > > (bit_wait_io+0x34/0x58)
> > > > >
> > > > > [ 601.209278] [<c04aaccc>] (bit_wait_io) from [<c04aa920>]
> > > > > (__wait_on_bit+0x80/0xb8)
> > > > >
> > > > > [ 601.216918] [<c04aa920>] (__wait_on_bit) from [<c04aa9c4>]
> > > > > (out_of_line_wait_on_bit+0x6c/0x74)
> > > > >
> > > > > [ 601.225598] [<c04aa9c4>] (out_of_line_wait_on_bit) from [<c00f69a8>]
> > > > > (__sync_dirty_buffer+0xc0/0xec)
> > > > >
> > > > > [ 601.234800] [<c00f69a8>] (__sync_dirty_buffer) from [<c0182244>]
> > > > > (journal_commit_transaction+0xfc8/0x139c)
> > > > >
> > > > > [ 601.244535] [<c0182244>] (journal_commit_transaction) from
> > > > > [<c0184e48>] (kjournald+0xe4/0x268)
> > > > >
> > > > > [ 601.253200] [<c0184e48>] (kjournald) from [<c0039bb0>] (kthread
> > > > > +0xd8/0xf0)
> > > > >
> > > > > [ 601.260142] [<c0039bb0>] (kthread) from [<c000f1b8>] (ret_from_fork
> > > > > +0x14/0x3c)
> > > > >
> > > > > ---------------------------------------------------------------------------------
> > > > >
> > > > >
> > > > >
> > > > > Accroding to log.
> > > > >
> > > > > It seems that periperal irq arn't injected properly.
> > > > >
> > > > >
> > > > >
> > > > > I think vgic_vcpu_inject_irq function can inject irq to any vcpu, any
> > > > > irq. right?
> > > > >
> > > > >
> > > > >
> > > > > This is Bug??
> > > > >
> > > > > or Intended on Xen 4.5.x?
> > > > >
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Xen-devel mailing list
> > > > > Xen-devel@lists.xen.org
> > > > > http://lists.xen.org/xen-devel
> > > >
> > > >
> > > >
> > > >
> > > > [?img=mr%2Bm%2BBFm%2BBK9hAnZFAM9FqMdFrMqKo%2BSFrM%2FFrudF4tqMxFvKouXM4twFrKZtzFXp6UmaLl5WLl51zlqDBFdp6d5
> > > > MreRhoRx%2Bzk4M6lT70FdM6i0WzwGW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
> > > >
> >>[?img=mqFm%2BBFm%2BBF0hAnZFAM9FqFoM6twazErKxk0FxgrMo3CF6MwM6UZpAp0K6JgMX%2B0Mou974lR74lcWNFlbX30WLloWrdQaXFdp6pCW4Y5bX3CM4knWz05
> 1
> >
> > > EI0%2BLlo1B3Z1B25MreR.gif]
> > >
> >[?img=me%2Bm%2BBFm%2BBF0hAnZFAM9p6udp4ivaAuqFAUZFAI0pAKlpxura6uwF6i4p6FCtzFXp6UmFVl5WLl51zlqDBFdp6d5MreRhoRq%2Bzk4M6lT7NFdM6i0Wzw
>
> > GW40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
> >
> [?img=mXRm%2BBFm%2BBFShAnZFAM9axuZFAI0Krt%2FFqMlK4pvM6J0p4U%2FFqKlK6UrFuIo%2BrkSKAK5W4d5W4C5bX0q%2BzkR74FTWx%2FsbX30p4J5WZlq%2BzJ
> Sp6wn16lGtzk974FG%2BHiGDVloWrd%3D.gif]
> 

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* virq injection probelem in Xen ARM 4.5
  2015-04-21 10:39                 ` Stefano Stabellini
@ 2015-04-22  2:43                   ` 신정섭
  2015-04-22 14:41                     ` Stefano Stabellini
  0 siblings, 1 reply; 14+ messages in thread
From: 신정섭 @ 2015-04-22  2:43 UTC (permalink / raw)
  To: xen-devel; +Cc: Ian Campbell, Stefano Stabellini


[-- Attachment #1.1: Type: text/plain, Size: 5474 bytes --]

HI
 
I might find the VIRQ injection in Xen ARM 4.5 and fix with simple way.
Check please.
 
Problem
- In Xen ARM 4.5, SPI's pending_irq structure could be accessed simultaneously from each pCPU.
 
Reason
- When inject SPI VIRQ to domain0, Xen ARM 4.5 set bit HW(31bit) bit in list register. so domain0's EOI command makes deactivate IRQ without Xen ARM interference. But SPI's pending_irq is not updated immediately . because Xen ARM 4.5 dosen't use maintenance interrupt. After a while domain0's vcpu that receive SPI VIRQ is go to hyp mode and update SPI's pending_irq in enter_hypervisor_head() function. After EOI in domain0's, same SPI IRQ can occur immediately and SPI's pending_irq is updated in vgic_vcpu_inject_irq() function.
If enter_hypervisor_head() is excecuted in pcpu1 and SPI's pending_irq is updated in pcpu0, SPI's pending_irq is could be accesed simultaneously. To access SPI's pending_irq Xen have to acquire v-&gt;arch.vgic.lock. But this lock don't guarantee exclusive access of SPI's pending_irq.
 
Example
* Machine has 2 pcpu
* Domain0 has 2 vcpu. vcpu0 is running on pcpu0 and vcpu1 is running on pcpu1.
* All SPI is go to pcpu0 that run Domain0's vcpu0.
* Assume that second IRQ 100 occur immediately after deactivate first IRQ 100.
* Assume that first IRQ 100 injected Domain0's vcpu1 and second IRQ 100 injected Domain0's vcpu0. First IRQ 100 is managed in pcpu1 and second IRQ 100 is managed in pcpu0.
- After deactivate first IRQ 100 in pcpu1, IRQ 100's pending_irq struct is not updated immediately. But second IRQ 100 occur and IRQ 100's pending_irq pcpu0. enter_hypervisor_head() and vgic_vcpu_inject_irq() could be executed simultaneously and IRQ 100's pending_irq struct could be changed simultaneously.
 
Fix
- To prevent access SPI's pending_irq struct, deactivate irq must be executed after updated SPI's pending_irq struct. So Xen ARM 4.5 cannot use HW(31bit) bit in list register to prevent domain0 deactivated SPI. Xen ARM 4.5 have to manually deactivate SPI after updated SPI's pending_irq struct.
 
Code Changed
- I Modify below functions. and this functions works well in my SPI Routing Code in Arndale Board.
---------------------------------------------------------------------------------------------
* 
static void gic_update_one_lr(struct vcpu *v, int i)
{
    struct pending_irq *p;
    int irq;
    struct gic_lr lr_val;
 
    ASSERT(spin_is_locked(&amp;v-&gt;arch.vgic.lock));
    ASSERT(!local_irq_is_enabled());
 
    gic_hw_ops-&gt;read_lr(i, &amp;lr_val);
    irq = lr_val.virq;
    p = irq_to_pending(v, irq);
    if ( lr_val.state &amp; GICH_LR_ACTIVE )
    {
        set_bit(GIC_IRQ_GUEST_ACTIVE, &amp;p-&gt;status);
        if ( test_bit(GIC_IRQ_GUEST_ENABLED, &amp;p-&gt;status) &amp;&amp;
             test_and_clear_bit(GIC_IRQ_GUEST_QUEUED, &amp;p-&gt;status) )
        {
            if ( p-&gt;desc == NULL )
            {
                 lr_val.state |= GICH_LR_PENDING;
                 gic_hw_ops-&gt;write_lr(i, &amp;lr_val);
            }
            else
                gdprintk(XENLOG_WARNING, "unable to inject hw irq=%d into d%dv%d: already active in LR%d\n",
                         irq, v-&gt;domain-&gt;domain_id, v-&gt;vcpu_id, i);
        }
    }
    else if ( lr_val.state &amp; GICH_LR_PENDING )
    {
        int q __attribute__ ((unused)) = test_and_clear_bit(GIC_IRQ_GUEST_QUEUED, &amp;p-&gt;status);
#ifdef GIC_DEBUG
        if ( q )
            gdprintk(XENLOG_DEBUG, "trying to inject irq=%d into d%dv%d, when it is already pending in LR%d\n",
                    irq, v-&gt;domain-&gt;domain_id, v-&gt;vcpu_id, i);
#endif
    }
    else
    {
        gic_hw_ops-&gt;clear_lr(i);
        clear_bit(i, &amp;this_cpu(lr_mask));
 
        clear_bit(GIC_IRQ_GUEST_VISIBLE, &amp;p-&gt;status);
        clear_bit(GIC_IRQ_GUEST_ACTIVE, &amp;p-&gt;status);
        p-&gt;lr = GIC_INVALID_LR;
        if ( test_bit(GIC_IRQ_GUEST_ENABLED, &amp;p-&gt;status) &amp;&amp;
             test_bit(GIC_IRQ_GUEST_QUEUED, &amp;p-&gt;status) &amp;&amp;
             !test_bit(GIC_IRQ_GUEST_MIGRATING, &amp;p-&gt;status) )
            gic_raise_guest_irq(v, irq, p-&gt;priority);
        else {
            list_del_init(&amp;p-&gt;inflight);
            if ( test_and_clear_bit(GIC_IRQ_GUEST_MIGRATING, &amp;p-&gt;status) )
            {
                struct vcpu *v_target = vgic_get_target_vcpu(v, irq);
                irq_set_affinity(p-&gt;desc, cpumask_of(v_target-&gt;processor));
            }
        }
		
	//* supsupi
        if ( p-&gt;desc != NULL )
			gic_hw_ops-&gt;deactivate_irq(p-&gt;desc);
    }
 
}
---------------------------------------------------------------------------------------------static void gicv2_update_lr(int lr, const struct pending_irq *p,
                            unsigned int state)
{
    uint32_t lr_reg;
 
    BUG_ON(lr &gt;= gicv2_info.nr_lrs);
    BUG_ON(lr &lt; 0);
 
    lr_reg = (((state &amp; GICH_V2_LR_STATE_MASK) &lt;&lt; GICH_V2_LR_STATE_SHIFT)  |
              ((GIC_PRI_TO_GUEST(p-&gt;priority) &amp; GICH_V2_LR_PRIORITY_MASK)
                                             &lt;&lt; GICH_V2_LR_PRIORITY_SHIFT) |
              ((p-&gt;irq &amp; GICH_V2_LR_VIRTUAL_MASK) &lt;&lt; GICH_V2_LR_VIRTUAL_SHIFT));
 
	//* supsupi
    if ( p-&gt;desc != NULL )
		lr_reg |= GICH_V2_LR_MAINTENANCE_IRQ;
 
    writel_gich(lr_reg, GICH_LR + lr * 4);
 
}
---------------------------------------------------------------------------------------------

Thank you 

[-- Attachment #1.2: Type: text/html, Size: 11397 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: virq injection probelem in Xen ARM 4.5
  2015-04-22  2:43                   ` virq injection probelem in Xen ARM 4.5 신정섭
@ 2015-04-22 14:41                     ` Stefano Stabellini
  2015-04-27  2:08                       ` 신정섭
  0 siblings, 1 reply; 14+ messages in thread
From: Stefano Stabellini @ 2015-04-22 14:41 UTC (permalink / raw)
  To: 신정섭; +Cc: Stefano Stabellini, Ian Campbell, xen-devel

[-- Attachment #1: Type: text/plain, Size: 7198 bytes --]

On Wed, 22 Apr 2015, 신정섭 wrote:
> HI
>

Please send emails in plain text, it is very hard to read html on my
MUA.

>
> I might find the VIRQ injection in Xen ARM 4.5 and fix with simple way.
>
> Check please.
>
>  
>
> Problem
>
> - In Xen ARM 4.5, SPI's pending_irq structure could be accessed simultaneously from each pCPU.
>
>  
>
> Reason
>
> - When inject SPI VIRQ to domain0, Xen ARM 4.5 set bit HW(31bit) bit in list register. so domain0's EOI command makes deactivate
> IRQ without Xen ARM interference. But SPI's pending_irq is not updated immediately . because Xen ARM 4.5 dosen't use maintenance
> interrupt. After a while domain0's vcpu that receive SPI VIRQ is go to hyp mode and update SPI's pending_irq in
> enter_hypervisor_head() function. After EOI in domain0's, same SPI IRQ can occur immediately and SPI's pending_irq is updated in
> vgic_vcpu_inject_irq() function.
>
> If enter_hypervisor_head() is excecuted in pcpu1 and SPI's pending_irq is updated in pcpu0, SPI's pending_irq is could be
> accesed simultaneously. To access SPI's pending_irq Xen have to acquire v->arch.vgic.lock. But this lock don't guarantee exclusive
> access of SPI's pending_irq.
>
> Example
>
> * Machine has 2 pcpu
>
> * Domain0 has 2 vcpu. vcpu0 is running on pcpu0 and vcpu1 is running on pcpu1.
>
> * All SPI is go to pcpu0 that run Domain0's vcpu0.
>
> * Assume that second IRQ 100 occur immediately after deactivate first IRQ 100.
>
> * Assume that first IRQ 100 injected Domain0's vcpu1 and second IRQ 100 injected Domain0's vcpu0. First IRQ 100 is managed in
> pcpu1 and second IRQ 100 is managed in pcpu0.

This can only happen if Dom0 writes to the virtual GICD_ITARGETSR
register to change the delivery of IRQ 100.  If the write is done on
vcpu1, such a write would cause an immediate trap in the hypervisor and
clearing of the LRs, before the interrupt routing (virtual and physical)
is changed. If the write is done on vcpu0, the physical routing of the
irq won't be changed yet, see arch_move_irqs. The next interrupt will
still be delivererd to pcpu1, that is going to clear the LRs and only
then change the physical interrupt routing. Therefore only the third IRQ
100 interrupt will reach pcpu0 directly.


> - After deactivate first IRQ 100 in pcpu1, IRQ 100's pending_irq struct is not updated immediately. But second IRQ 100 occur
> and IRQ 100's pending_irq pcpu0. enter_hypervisor_head() and vgic_vcpu_inject_irq() could be executed simultaneously and IRQ 100's
> pending_irq struct could be changed simultaneously.
>
>  
>
> Fix
>
> - To prevent access SPI's pending_irq struct, deactivate irq must be executed after updated SPI's pending_irq struct. So Xen ARM
> 4.5 cannot use HW(31bit) bit in list register to prevent domain0 deactivated SPI. Xen ARM 4.5 have to manually deactivate SPI
> after updated SPI's pending_irq struct.
>
>  
>
> Code Changed
>
> - I Modify below functions. and this functions works well in my SPI Routing Code in Arndale Board.
>
> ---------------------------------------------------------------------------------------------
>
> * 
>
> static void gic_update_one_lr(struct vcpu *v, int i)
>
> {
>
>     struct pending_irq *p;
>
>     int irq;
>
>     struct gic_lr lr_val;
>
>  
>
>     ASSERT(spin_is_locked(&v->arch.vgic.lock));
>
>     ASSERT(!local_irq_is_enabled());
>
>  
>
>     gic_hw_ops->read_lr(i, &lr_val);
>
>     irq = lr_val.virq;
>
>     p = irq_to_pending(v, irq);
>
>     if ( lr_val.state & GICH_LR_ACTIVE )
>
>     {
>
>         set_bit(GIC_IRQ_GUEST_ACTIVE, &p->status);
>
>         if ( test_bit(GIC_IRQ_GUEST_ENABLED, &p->status) &&
>
>              test_and_clear_bit(GIC_IRQ_GUEST_QUEUED, &p->status) )
>
>         {
>
>             if ( p->desc == NULL )
>
>             {
>
>                  lr_val.state |= GICH_LR_PENDING;
>
>                  gic_hw_ops->write_lr(i, &lr_val);
>
>             }
>
>             else
>
>                 gdprintk(XENLOG_WARNING, "unable to inject hw irq=%d into d%dv%d: already active in LR%d\n",
>
>                          irq, v->domain->domain_id, v->vcpu_id, i);
>
>         }
>
>     }
>
>     else if ( lr_val.state & GICH_LR_PENDING )
>
>     {
>
>         int q __attribute__ ((unused)) = test_and_clear_bit(GIC_IRQ_GUEST_QUEUED, &p->status);
>
> #ifdef GIC_DEBUG
>
>         if ( q )
>
>             gdprintk(XENLOG_DEBUG, "trying to inject irq=%d into d%dv%d, when it is already pending in LR%d\n",
>
>                     irq, v->domain->domain_id, v->vcpu_id, i);
>
> #endif
>
>     }
>
>     else
>
>     {
>
>         gic_hw_ops->clear_lr(i);
>
>         clear_bit(i, &this_cpu(lr_mask));
>
>  
>
>         clear_bit(GIC_IRQ_GUEST_VISIBLE, &p->status);
>
>         clear_bit(GIC_IRQ_GUEST_ACTIVE, &p->status);
>
>         p->lr = GIC_INVALID_LR;
>
>         if ( test_bit(GIC_IRQ_GUEST_ENABLED, &p->status) &&
>
>              test_bit(GIC_IRQ_GUEST_QUEUED, &p->status) &&
>
>              !test_bit(GIC_IRQ_GUEST_MIGRATING, &p->status) )
>
>             gic_raise_guest_irq(v, irq, p->priority);
>
>         else {
>
>             list_del_init(&p->inflight);
>
>             if ( test_and_clear_bit(GIC_IRQ_GUEST_MIGRATING, &p->status) )
>
>             {
>
>                 struct vcpu *v_target = vgic_get_target_vcpu(v, irq);
>
>                 irq_set_affinity(p->desc, cpumask_of(v_target->processor));
>
>             }
>
>         }
>
> //* supsupi
>
>         if ( p->desc != NULL )
>
> gic_hw_ops->deactivate_irq(p->desc);
>
>     }
>
>  
>
> }
>
> ---------------------------------------------------------------------------------------------
>
> static void gicv2_update_lr(int lr, const struct pending_irq *p,
>
>                             unsigned int state)
>
> {
>
>     uint32_t lr_reg;
>
>  
>
>     BUG_ON(lr >= gicv2_info.nr_lrs);
>
>     BUG_ON(lr < 0);
>
>  
>
>     lr_reg = (((state & GICH_V2_LR_STATE_MASK) << GICH_V2_LR_STATE_SHIFT)  |
>
>               ((GIC_PRI_TO_GUEST(p->priority) & GICH_V2_LR_PRIORITY_MASK)
>
>                                              << GICH_V2_LR_PRIORITY_SHIFT) |
>
>               ((p->irq & GICH_V2_LR_VIRTUAL_MASK) << GICH_V2_LR_VIRTUAL_SHIFT));
>
>  
>
> //* supsupi
>
>     if ( p->desc != NULL )
>
> lr_reg |= GICH_V2_LR_MAINTENANCE_IRQ;
>
>  
>
>     writel_gich(lr_reg, GICH_LR + lr * 4);
>
>  
>
> }
>
> ---------------------------------------------------------------------------------------------
>
> Thank you
>
>  
>
> [?img=m9Rm%2BBFm%2BBFohAnZFAM9pxMXaAUlMxFoKxUwpoi0Fqk0MrUXFoEqM4ioFrpvtzFXp6UwFSl5WLl51zlqDBFdp6d5MreRhoRq%2Bzk4M6lT7NFdM6i0WzwGW
> 40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
> 

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: virq injection probelem in Xen ARM 4.5
  2015-04-22 14:41                     ` Stefano Stabellini
@ 2015-04-27  2:08                       ` 신정섭
  0 siblings, 0 replies; 14+ messages in thread
From: 신정섭 @ 2015-04-27  2:08 UTC (permalink / raw)
  To: Stefano Stabellini; +Cc: Ian Campbell, xen-devel


[-- Attachment #1.1: Type: text/plain, Size: 7097 bytes --]


Thank you
I understand your answer

Thanks !!

-----Original Message-----
From: "Stefano Stabellini"<stefano.stabellini@eu.citrix.com> 
To: "신정섭"<supsup5642@naver.com>; 
Cc: <xen-devel@lists.xen.org>; "Stefano Stabellini"<stefano.stabellini@eu.citrix.com>; "Ian Campbell"<ian.campbell@citrix.com>; 
Sent: 2015-04-22 (수) 23:41:53
Subject: Re: virq injection probelem in Xen ARM 4.5
 
On Wed, 22 Apr 2015, 신정섭 wrote:
> HI
> 

Please send emails in plain text, it is very hard to read html on my
MUA.

> 
> I might find the VIRQ injection in Xen ARM 4.5 and fix with simple way.
> 
> Check please.
> 
>  
> 
> Problem
> 
> - In Xen ARM 4.5, SPI's pending_irq structure could be accessed simultaneously from each pCPU.
> 
>  
> 
> Reason
> 
> - When inject SPI VIRQ to domain0, Xen ARM 4.5 set bit HW(31bit) bit in list register. so domain0's EOI command makes deactivate
> IRQ without Xen ARM interference. But SPI's pending_irq is not updated immediately . because Xen ARM 4.5 dosen't use maintenance
> interrupt. After a while domain0's vcpu that receive SPI VIRQ is go to hyp mode and update SPI's pending_irq in
> enter_hypervisor_head() function. After EOI in domain0's, same SPI IRQ can occur immediately and SPI's pending_irq is updated in
> vgic_vcpu_inject_irq() function.
> 
> If enter_hypervisor_head() is excecuted in pcpu1 and SPI's pending_irq is updated in pcpu0, SPI's pending_irq is could be
> accesed simultaneously. To access SPI's pending_irq Xen have to acquire v->arch.vgic.lock. But this lock don't guarantee exclusive
> access of SPI's pending_irq.
> 
> Example
> 
> * Machine has 2 pcpu
> 
> * Domain0 has 2 vcpu. vcpu0 is running on pcpu0 and vcpu1 is running on pcpu1.
> 
> * All SPI is go to pcpu0 that run Domain0's vcpu0.
> 
> * Assume that second IRQ 100 occur immediately after deactivate first IRQ 100.
> 
> * Assume that first IRQ 100 injected Domain0's vcpu1 and second IRQ 100 injected Domain0's vcpu0. First IRQ 100 is managed in
> pcpu1 and second IRQ 100 is managed in pcpu0.

This can only happen if Dom0 writes to the virtual GICD_ITARGETSR
register to change the delivery of IRQ 100.  If the write is done on
vcpu1, such a write would cause an immediate trap in the hypervisor and
clearing of the LRs, before the interrupt routing (virtual and physical)
is changed. If the write is done on vcpu0, the physical routing of the
irq won't be changed yet, see arch_move_irqs. The next interrupt will
still be delivererd to pcpu1, that is going to clear the LRs and only
then change the physical interrupt routing. Therefore only the third IRQ
100 interrupt will reach pcpu0 directly.


> - After deactivate first IRQ 100 in pcpu1, IRQ 100's pending_irq struct is not updated immediately. But second IRQ 100 occur
> and IRQ 100's pending_irq pcpu0. enter_hypervisor_head() and vgic_vcpu_inject_irq() could be executed simultaneously and IRQ 100's
> pending_irq struct could be changed simultaneously.
> 
>  
> 
> Fix
> 
> - To prevent access SPI's pending_irq struct, deactivate irq must be executed after updated SPI's pending_irq struct. So Xen ARM
> 4.5 cannot use HW(31bit) bit in list register to prevent domain0 deactivated SPI. Xen ARM 4.5 have to manually deactivate SPI
> after updated SPI's pending_irq struct.
> 
>  
> 
> Code Changed
> 
> - I Modify below functions. and this functions works well in my SPI Routing Code in Arndale Board.
> 
> ---------------------------------------------------------------------------------------------
> 
> * 
> 
> static void gic_update_one_lr(struct vcpu *v, int i)
> 
> {
> 
>     struct pending_irq *p;
> 
>     int irq;
> 
>     struct gic_lr lr_val;
> 
>  
> 
>     ASSERT(spin_is_locked(&v->arch.vgic.lock));
> 
>     ASSERT(!local_irq_is_enabled());
> 
>  
> 
>     gic_hw_ops->read_lr(i, &lr_val);
> 
>     irq = lr_val.virq;
> 
>     p = irq_to_pending(v, irq);
> 
>     if ( lr_val.state & GICH_LR_ACTIVE )
> 
>     {
> 
>         set_bit(GIC_IRQ_GUEST_ACTIVE, &p->status);
> 
>         if ( test_bit(GIC_IRQ_GUEST_ENABLED, &p->status) &&
> 
>              test_and_clear_bit(GIC_IRQ_GUEST_QUEUED, &p->status) )
> 
>         {
> 
>             if ( p->desc == NULL )
> 
>             {
> 
>                  lr_val.state = GICH_LR_PENDING;
> 
>                  gic_hw_ops->write_lr(i, &lr_val);
> 
>             }
> 
>             else
> 
>                 gdprintk(XENLOG_WARNING, "unable to inject hw irq=%d into d%dv%d: already active in LR%d\n",
> 
>                          irq, v->domain->domain_id, v->vcpu_id, i);
> 
>         }
> 
>     }
> 
>     else if ( lr_val.state & GICH_LR_PENDING )
> 
>     {
> 
>         int q __attribute__ ((unused)) = test_and_clear_bit(GIC_IRQ_GUEST_QUEUED, &p->status);
> 
> #ifdef GIC_DEBUG
> 
>         if ( q )
> 
>             gdprintk(XENLOG_DEBUG, "trying to inject irq=%d into d%dv%d, when it is already pending in LR%d\n",
> 
>                     irq, v->domain->domain_id, v->vcpu_id, i);
> 
> #endif
> 
>     }
> 
>     else
> 
>     {
> 
>         gic_hw_ops->clear_lr(i);
> 
>         clear_bit(i, &this_cpu(lr_mask));
> 
>  
> 
>         clear_bit(GIC_IRQ_GUEST_VISIBLE, &p->status);
> 
>         clear_bit(GIC_IRQ_GUEST_ACTIVE, &p->status);
> 
>         p->lr = GIC_INVALID_LR;
> 
>         if ( test_bit(GIC_IRQ_GUEST_ENABLED, &p->status) &&
> 
>              test_bit(GIC_IRQ_GUEST_QUEUED, &p->status) &&
> 
>              !test_bit(GIC_IRQ_GUEST_MIGRATING, &p->status) )
> 
>             gic_raise_guest_irq(v, irq, p->priority);
> 
>         else {
> 
>             list_del_init(&p->inflight);
> 
>             if ( test_and_clear_bit(GIC_IRQ_GUEST_MIGRATING, &p->status) )
> 
>             {
> 
>                 struct vcpu *v_target = vgic_get_target_vcpu(v, irq);
> 
>                 irq_set_affinity(p->desc, cpumask_of(v_target->processor));
> 
>             }
> 
>         }
> 
> //* supsupi
> 
>         if ( p->desc != NULL )
> 
> gic_hw_ops->deactivate_irq(p->desc);
> 
>     }
> 
>  
> 
> }
> 
> ---------------------------------------------------------------------------------------------
> 
> static void gicv2_update_lr(int lr, const struct pending_irq *p,
> 
>                             unsigned int state)
> 
> {
> 
>     uint32_t lr_reg;
> 
>  
> 
>     BUG_ON(lr >= gicv2_info.nr_lrs);
> 
>     BUG_ON(lr < 0);
> 
>  
> 
>     lr_reg = (((state & GICH_V2_LR_STATE_MASK) << GICH_V2_LR_STATE_SHIFT)  
> 
>               ((GIC_PRI_TO_GUEST(p->priority) & GICH_V2_LR_PRIORITY_MASK)
> 
>                                              << GICH_V2_LR_PRIORITY_SHIFT) 
> 
>               ((p->irq & GICH_V2_LR_VIRTUAL_MASK) << GICH_V2_LR_VIRTUAL_SHIFT));
> 
>  
> 
> //* supsupi
> 
>     if ( p->desc != NULL )
> 
> lr_reg = GICH_V2_LR_MAINTENANCE_IRQ;
> 
>  
> 
>     writel_gich(lr_reg, GICH_LR + lr * 4);
> 
>  
> 
> }
> 
> ---------------------------------------------------------------------------------------------
> 
> Thank you
> 
>  
> 
> [?img=m9Rm%2BBFm%2BBFohAnZFAM9pxMXaAUlMxFoKxUwpoi0Fqk0MrUXFoEqM4ioFrpvtzFXp6UwFSl5WLl51zlqDBFdp6d5MreRhoRq%2Bzk4M6lT7NFdM6i0WzwGW
> 40gpBE5Mr0db40%2F74FTWt%3D%3D.gif]
> 

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2015-04-27  2:08 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-17  2:36 Is it ok to routing periperal irq to any Domain0's vCPU on Xen ARM 4.5.x? 신정섭
2015-04-17  9:49 ` Ian Campbell
2015-04-17 18:29   ` 신정섭
2015-04-20 10:49     ` Stefano Stabellini
2015-04-20 12:35       ` 신정섭
2015-04-20 17:25         ` Stefano Stabellini
2015-04-21  2:03           ` 신정섭
2015-04-21  2:46             ` 신정섭
2015-04-21 10:13             ` Stefano Stabellini
2015-04-21 10:29               ` 신정섭
2015-04-21 10:39                 ` Stefano Stabellini
2015-04-22  2:43                   ` virq injection probelem in Xen ARM 4.5 신정섭
2015-04-22 14:41                     ` Stefano Stabellini
2015-04-27  2:08                       ` 신정섭

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.