Searched hist:e73f61e41f3bb9bc453fd9c21b82d0b89c2b83e7 (Results 1 – 1 of 1) sorted by relevance
/linux/virt/kvm/ |
H A D | irqchip.c | diff e73f61e41f3bb9bc453fd9c21b82d0b89c2b83e7 Fri May 08 14:31:44 CEST 2015 Joerg Roedel <jroedel@suse.de> kvm: irqchip: Break up high order allocations of kvm_irq_routing_table
The allocation size of the kvm_irq_routing_table depends on the number of irq routing entries because they are all allocated with one kzalloc call.
When the irq routing table gets bigger this requires high order allocations which fail from time to time:
qemu-kvm: page allocation failure: order:4, mode:0xd0
This patch fixes this issue by breaking up the allocation of the table and its entries into individual kzalloc calls. These could all be satisfied with order-0 allocations, which are less likely to fail.
The downside of this change is the lower performance, because of more calls to kzalloc. But given how often kvm_set_irq_routing is called in the lifetime of a guest, it doesn't really matter much.
Signed-off-by: Joerg Roedel <jroedel@suse.de> [Avoid sparse warning through rcu_access_pointer. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|