Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'for-linus-6.7a-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull xen fixes from Juergen Gross:

- A fix for the Xen event driver setting the correct return value when
experiencing an allocation failure

- A fix for allocating space for a struct in the percpu area to not
cross page boundaries (this one is for x86, a similar one for Arm was
already in the pull request for rc3)

* tag 'for-linus-6.7a-rc4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
xen/events: fix error code in xen_bind_pirq_msi_to_irq()
x86/xen: fix percpu vcpu_info allocation

+9 -3
+5 -1
arch/x86/xen/enlighten.c
··· 33 33 * and xen_vcpu_setup for details. By default it points to share_info->vcpu_info 34 34 * but during boot it is switched to point to xen_vcpu_info. 35 35 * The pointer is used in xen_evtchn_do_upcall to acknowledge pending events. 36 + * Make sure that xen_vcpu_info doesn't cross a page boundary by making it 37 + * cache-line aligned (the struct is guaranteed to have a size of 64 bytes, 38 + * which matches the cache line size of 64-bit x86 processors). 36 39 */ 37 40 DEFINE_PER_CPU(struct vcpu_info *, xen_vcpu); 38 - DEFINE_PER_CPU(struct vcpu_info, xen_vcpu_info); 41 + DEFINE_PER_CPU_ALIGNED(struct vcpu_info, xen_vcpu_info); 39 42 40 43 /* Linux <-> Xen vCPU id mapping */ 41 44 DEFINE_PER_CPU(uint32_t, xen_vcpu_id); ··· 163 160 int err; 164 161 struct vcpu_info *vcpup; 165 162 163 + BUILD_BUG_ON(sizeof(*vcpup) > SMP_CACHE_BYTES); 166 164 BUG_ON(HYPERVISOR_shared_info == &xen_dummy_shared_info); 167 165 168 166 /*
+1 -1
arch/x86/xen/xen-ops.h
··· 21 21 struct trap_info; 22 22 void xen_copy_trap_info(struct trap_info *traps); 23 23 24 - DECLARE_PER_CPU(struct vcpu_info, xen_vcpu_info); 24 + DECLARE_PER_CPU_ALIGNED(struct vcpu_info, xen_vcpu_info); 25 25 DECLARE_PER_CPU(unsigned long, xen_cr3); 26 26 DECLARE_PER_CPU(unsigned long, xen_current_cr3); 27 27
+3 -1
drivers/xen/events/events_base.c
··· 1110 1110 1111 1111 for (i = 0; i < nvec; i++) { 1112 1112 info = xen_irq_init(irq + i); 1113 - if (!info) 1113 + if (!info) { 1114 + ret = -ENOMEM; 1114 1115 goto error_irq; 1116 + } 1115 1117 1116 1118 irq_set_chip_and_handler_name(irq + i, &xen_pirq_chip, handle_edge_irq, name); 1117 1119