Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 5.4-2.2.x-imx to v5.4.93 #234

Merged
merged 89 commits into from
Jan 29, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
60066d5
i2c: bpmp-tegra: Ignore unknown I2C_M flags
cyndis Jan 12, 2021
ea8d3c7
platform/x86: i2c-multi-instantiate: Don't create platform device for…
Dec 23, 2020
9c30113
platform/x86: ideapad-laptop: Disable touchpad_switch for ELAN0634
FlyGoat Jan 7, 2021
1607adf
ALSA: seq: oss: Fix missing error check in snd_seq_oss_synth_make_info()
tiwai Jan 15, 2021
08fa4ae
ALSA: hda/via: Add minimum mute flag
tiwai Jan 14, 2021
a826af1
ACPI: scan: Make acpi_bus_get_device() clear return pointer on error
jwrdegoede Jan 15, 2021
6871845
btrfs: don't get an EINTR during drop_snapshot for reloc
josefbacik Dec 16, 2020
e106533
btrfs: fix lockdep splat in btrfs_recover_relocation
josefbacik Dec 16, 2020
4d1cf8e
btrfs: don't clear ret in btrfs_start_dirty_block_groups
josefbacik Dec 16, 2020
d8a487e
btrfs: send: fix invalid clone operations when cloning from the same …
fdmanana Jan 11, 2021
6acdefd
mmc: core: don't initialize block size from ext_csd if not present
pcc Jan 14, 2021
cd3aa14
mmc: sdhci-xenon: fix 1.8v regulator stabilization
Dec 11, 2020
a03ce9c
dm: avoid filesystem lookup in dm_get_dev_t()
hreinecke Jan 21, 2021
42d855f
dm integrity: fix a crash if "recalculate" used without "internal_hash"
Jan 20, 2021
559c0ff
drm/atomic: put state on error path
SinkFinder Jan 19, 2021
6b59bd9
drm/syncobj: Fix use-after-free
danvet Jan 19, 2021
ad1df24
drm/i915/gt: Prevent use of engine->wa_ctx after error
ickle Jan 18, 2021
6af4916
ASoC: Intel: haswell: Add missing pm_ops
crojewsk-intel Dec 17, 2020
8ebe26a
HID: multitouch: Enable multi-input for Synaptics pointstick/touchpad…
khfeng Dec 30, 2020
b477f43
dm integrity: select CRYPTO_SKCIPHER
Dec 14, 2020
97853a7
scsi: ufs: Correct the LUN used in eh_device_reset_handler() callback
Dec 28, 2020
68f9910
scsi: qedi: Correct max length of CHAP secret
njavali Dec 17, 2020
5a1d7bb
scsi: sd: Suppress spurious errors when WRITE SAME is being disabled
Dec 7, 2020
cd0c468
riscv: Fix kernel time_init()
damien-lemoal Dec 13, 2020
b1b943f
riscv: Fix sifive serial driver
damien-lemoal Dec 13, 2020
9cec63a
HID: logitech-dj: add the G602 receiver
FFY00 Jan 4, 2021
c074680
HID: Ignore battery for Elan touchscreen on ASUS UX550
sethmiller Jan 5, 2021
8ab3478
clk: tegra30: Add hda clock default rates to clock driver
pgwipeout Jan 8, 2021
acc402f
arm64: make atomic helpers __always_inline
arndb Jan 8, 2021
a09d4e7
xen: Fix event channel callback via INTX/GSI
dwmw2 Jan 13, 2021
5fa6987
x86/xen: Add xen_no_vector_callback option to test PCI INTX delivery
dwmw2 Jan 6, 2021
7eef736
dts: phy: fix missing mdio device and probe failure of vsc8541-01 device
sagsifive Nov 10, 2020
5b2266d
riscv: defconfig: enable gpio support for HiFive Unleashed
sagsifive Nov 10, 2020
9f6d85e
drm/amdgpu/psp: fix psp gfx ctrl cmds
vizhao Jan 5, 2021
f5dc962
drm/amd/display: Fix to be able to stop crc calculation
Nov 24, 2020
8c3d3b3
drm/nouveau/bios: fix issue shadowing expansion ROMs
Jan 13, 2021
38f3502
drm/nouveau/privring: ack interrupts the same way as RM
Jan 13, 2021
ee2c9e5
drm/nouveau/i2c/gm200: increase width of aux semaphore owner fields
Jan 13, 2021
af91a2e
drm/nouveau/mmu: fix vram heap sizing
Jan 13, 2021
73a2291
drm/nouveau/kms/nv50-: fix case where notifier buffer is at offset 0
Jan 13, 2021
5625c3d
powerpc: Use the common INIT_DATA_SECTION macro in vmlinux.lds.S
Nov 4, 2020
da3324e
pinctrl: aspeed: g6: Fix PWMG0 pinctrl setting
billy-tsai Dec 17, 2020
cfea5cd
scsi: megaraid_sas: Fix MEGASAS_IOC_FIRMWARE regression
arndb Jan 4, 2021
485e025
powerpc: Fix alignment bug within the init sections
arielmarco-hz Jan 2, 2021
57f0f0d
i2c: octeon: check correct size of maximum RECV_LEN packet
Jan 9, 2021
2373750
platform/x86: intel-vbtn: Drop HP Stream x360 Convertible PC 11 from …
jwrdegoede Jan 14, 2021
3911877
selftests: net: fib_tests: remove duplicate log test
liuhangbin Jan 19, 2021
ac48ef1
can: dev: can_restart: fix use after free bug
vincent-mailhol Jan 20, 2021
a24476b
can: vxcan: vxcan_xmit: fix use after free bug
vincent-mailhol Jan 20, 2021
ddd1416
can: peak_usb: fix use after free bugs
vincent-mailhol Jan 20, 2021
745229c
iio: ad5504: Fix setting power-down state
larsclausen Dec 9, 2020
9a2f600
cifs: do not fail __smb_send_rqst if non-fatal signals are pending
Jan 20, 2021
cd1c488
irqchip/mips-cpu: Set IPI domain parent chip
mkresin Jan 7, 2021
cdb4ce9
x86/fpu: Add kernel_fpu_begin_mask() to selectively initialize state
amluto Jan 21, 2021
d1a9cd1
x86/topology: Make __max_die_per_package available unconditionally
suryasaimadhu Jan 14, 2021
c588588
x86/mmx: Use KFPU_387 for MMX string operations
amluto Jan 21, 2021
5e4bace
intel_th: pci: Add Alder Lake-P support
virtuoso Jan 15, 2021
a8fade5
stm class: Fix module init return on allocation failure
Jan 15, 2021
5eda5db
serial: mvebu-uart: fix tx lost characters at power off
pali Dec 23, 2020
9a66076
ehci: fix EHCI host controller initialization sequence
Jan 10, 2021
f89a193
USB: ehci: fix an interrupt calltrace error
Jan 12, 2021
564f3c5
usb: gadget: aspeed: fix stop dma register setting.
aspeedtech Jan 8, 2021
f764f90
usb: udc: core: Use lock when write to soft_connect
Jan 14, 2021
7f3cfc7
usb: bdc: Make bdc pci driver depend on BROKEN
patjak Jan 18, 2021
a6a5d08
xhci: make sure TRB is fully written before giving it to the controller
matnyman Jan 15, 2021
4e749a2
xhci: tegra: Delay for disabling LFPS detector
jckuo Jan 15, 2021
382ffe7
driver core: Extend device_is_dependent()
rafaeljw Jan 15, 2021
6f8ba0a
pinctrl: ingenic: Fix JZ4760 support
pcercuei Dec 11, 2020
99328b4
x86/cpu/amd: Set __max_die_per_package on AMD
yghannam Jan 11, 2021
8a0b8e2
netfilter: rpfilter: mask ecn bits before fib lookup
Jan 16, 2021
4e1d17a
sh: dma: fix kconfig dependency for G2_DMA
necipfazil Sep 17, 2020
fd2f513
net: dsa: mv88e6xxx: also read STU state in mv88e6250_g1_vtu_getnext
Jan 16, 2021
0ff55fc
sh_eth: Fix power down vs. is_opened flag ordering
geertu Jan 18, 2021
49aaf01
lightnvm: fix memory leak when submit fails
SinkFinder Jan 21, 2021
5a3890b
skbuff: back tiny skbs with kmalloc() in __netdev_alloc_skb() too
solbjorn Jan 15, 2021
0d190f5
kasan: fix unaligned address is unhandled in kasan_remove_zero_shadow
lecopzer Jan 24, 2021
da3711f
kasan: fix incorrect arguments passing in kasan_add_zero_shadow
lecopzer Jan 24, 2021
60fb547
udp: mask TOS bits in udp_v4_early_demux()
Jan 16, 2021
bc757ba
ipv6: create multicast route with RTPROT_KERNEL
teknoraver Jan 15, 2021
4ed3479
net_sched: avoid shift-out-of-bounds in tcindex_set_parms()
Jan 14, 2021
b778940
net_sched: reject silly cell_log in qdisc_get_rtab()
Jan 14, 2021
b47a3c3
ipv6: set multicast flag on the multicast route
teknoraver Jan 15, 2021
3e5b335
net: mscc: ocelot: allow offloading of bridge on top of LAG
vladimiroltean Jan 18, 2021
ff64094
net: Disable NETIF_F_HW_TLS_RX when RXCSUM is disabled
Jan 17, 2021
ccc248b
net: dsa: b53: fix an off by one in checking "vlan->vid"
Jan 19, 2021
945d182
tcp: do not mess with cloned skbs in tcp_add_backlog()
Jan 19, 2021
f7020c4
tcp: fix TCP_USER_TIMEOUT with zero window
enkechen-panw Jan 15, 2021
131f8d8
Linux 5.4.93
gregkh Jan 27, 2021
ec63282
Merge tag 'v5.4.93' into 5.4-2.2.x-imx
zandrey Jan 28, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Documentation/admin-guide/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5452,6 +5452,10 @@
This option is obsoleted by the "nopv" option, which
has equivalent effect for XEN platform.

xen_no_vector_callback
[KNL,X86,XEN] Disable the vector callback for Xen
event channel interrupts.

xen_scrub_pages= [XEN]
Boolean option to control scrubbing pages before giving them back
to Xen, for use by other domains. Can be also changed at runtime
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 4
SUBLEVEL = 92
SUBLEVEL = 93
EXTRAVERSION =
NAME = Kleptomaniac Octopus

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/xen/enlighten.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ static int __init xen_guest_init(void)
}
gnttab_init();
if (!xen_initial_domain())
xenbus_probe(NULL);
xenbus_probe();

/*
* Making sure board specific code will not set up ops for
Expand Down
10 changes: 5 additions & 5 deletions arch/arm64/include/asm/atomic.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include <asm/lse.h>

#define ATOMIC_OP(op) \
static inline void arch_##op(int i, atomic_t *v) \
static __always_inline void arch_##op(int i, atomic_t *v) \
{ \
__lse_ll_sc_body(op, i, v); \
}
Expand All @@ -32,7 +32,7 @@ ATOMIC_OP(atomic_sub)
#undef ATOMIC_OP

#define ATOMIC_FETCH_OP(name, op) \
static inline int arch_##op##name(int i, atomic_t *v) \
static __always_inline int arch_##op##name(int i, atomic_t *v) \
{ \
return __lse_ll_sc_body(op##name, i, v); \
}
Expand All @@ -56,7 +56,7 @@ ATOMIC_FETCH_OPS(atomic_sub_return)
#undef ATOMIC_FETCH_OPS

#define ATOMIC64_OP(op) \
static inline void arch_##op(long i, atomic64_t *v) \
static __always_inline void arch_##op(long i, atomic64_t *v) \
{ \
__lse_ll_sc_body(op, i, v); \
}
Expand All @@ -71,7 +71,7 @@ ATOMIC64_OP(atomic64_sub)
#undef ATOMIC64_OP

#define ATOMIC64_FETCH_OP(name, op) \
static inline long arch_##op##name(long i, atomic64_t *v) \
static __always_inline long arch_##op##name(long i, atomic64_t *v) \
{ \
return __lse_ll_sc_body(op##name, i, v); \
}
Expand All @@ -94,7 +94,7 @@ ATOMIC64_FETCH_OPS(atomic64_sub_return)
#undef ATOMIC64_FETCH_OP
#undef ATOMIC64_FETCH_OPS

static inline long arch_atomic64_dec_if_positive(atomic64_t *v)
static __always_inline long arch_atomic64_dec_if_positive(atomic64_t *v)
{
return __lse_ll_sc_body(atomic64_dec_if_positive, v);
}
Expand Down
25 changes: 8 additions & 17 deletions arch/powerpc/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,12 @@ SECTIONS
.init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
_sinittext = .;
INIT_TEXT

/*
*.init.text might be RO so we must ensure this section ends on
* a page boundary.
*/
. = ALIGN(PAGE_SIZE);
_einittext = .;
#ifdef CONFIG_PPC64
*(.tramp.ftrace.init);
Expand All @@ -223,21 +229,9 @@ SECTIONS
EXIT_TEXT
}

.init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
INIT_DATA
}

.init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
INIT_SETUP(16)
}
. = ALIGN(PAGE_SIZE);

.initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
INIT_CALLS
}

.con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
CON_INITCALL
}
INIT_DATA_SECTION(16)

. = ALIGN(8);
__ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) {
Expand Down Expand Up @@ -265,9 +259,6 @@ SECTIONS
__stop___fw_ftr_fixup = .;
}
#endif
.init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
INIT_RAM_FS
}

PERCPU_SECTION(L1_CACHE_BYTES)

Expand Down
1 change: 1 addition & 0 deletions arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@
phy-mode = "gmii";
phy-handle = <&phy0>;
phy0: ethernet-phy@0 {
compatible = "ethernet-phy-id0007.0771";
reg = <0>;
};
};
Expand Down
2 changes: 2 additions & 0 deletions arch/riscv/configs/defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_VIRTIO=y
CONFIG_SPI=y
CONFIG_SPI_SIFIVE=y
CONFIG_GPIOLIB=y
CONFIG_GPIO_SIFIVE=y
# CONFIG_PTP_1588_CLOCK is not set
CONFIG_DRM=y
CONFIG_DRM_RADEON=y
Expand Down
3 changes: 3 additions & 0 deletions arch/riscv/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
* Copyright (C) 2017 SiFive
*/

#include <linux/of_clk.h>
#include <linux/clocksource.h>
#include <linux/delay.h>
#include <asm/sbi.h>
Expand All @@ -24,5 +25,7 @@ void __init time_init(void)
riscv_timebase = prop;

lpj_fine = riscv_timebase / HZ;

of_clk_init(NULL);
timer_probe();
}
3 changes: 1 addition & 2 deletions arch/sh/drivers/dma/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,7 @@ config PVR2_DMA

config G2_DMA
tristate "G2 Bus DMA support"
depends on SH_DREAMCAST
select SH_DMA_API
depends on SH_DREAMCAST && SH_DMA_API
help
This enables support for the DMA controller for the Dreamcast's
G2 bus. Drivers that want this will generally enable this on
Expand Down
15 changes: 13 additions & 2 deletions arch/x86/include/asm/fpu/api.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,25 @@
* Use kernel_fpu_begin/end() if you intend to use FPU in kernel context. It
* disables preemption so be careful if you intend to use it for long periods
* of time.
* If you intend to use the FPU in softirq you need to check first with
* If you intend to use the FPU in irq/softirq you need to check first with
* irq_fpu_usable() if it is possible.
*/
extern void kernel_fpu_begin(void);

/* Kernel FPU states to initialize in kernel_fpu_begin_mask() */
#define KFPU_387 _BITUL(0) /* 387 state will be initialized */
#define KFPU_MXCSR _BITUL(1) /* MXCSR will be initialized */

extern void kernel_fpu_begin_mask(unsigned int kfpu_mask);
extern void kernel_fpu_end(void);
extern bool irq_fpu_usable(void);
extern void fpregs_mark_activate(void);

/* Code that is unaware of kernel_fpu_begin_mask() can use this */
static inline void kernel_fpu_begin(void)
{
kernel_fpu_begin_mask(KFPU_387 | KFPU_MXCSR);
}

/*
* Use fpregs_lock() while editing CPU's FPU registers or fpu->state.
* A context switch will (and softirq might) save CPU's FPU registers to
Expand Down
4 changes: 2 additions & 2 deletions arch/x86/include/asm/topology.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ extern const struct cpumask *cpu_coregroup_mask(int cpu);
#define topology_die_id(cpu) (cpu_data(cpu).cpu_die_id)
#define topology_core_id(cpu) (cpu_data(cpu).cpu_core_id)

extern unsigned int __max_die_per_package;

#ifdef CONFIG_SMP
#define topology_die_cpumask(cpu) (per_cpu(cpu_die_map, cpu))
#define topology_core_cpumask(cpu) (per_cpu(cpu_core_map, cpu))
Expand All @@ -118,8 +120,6 @@ extern const struct cpumask *cpu_coregroup_mask(int cpu);
extern unsigned int __max_logical_packages;
#define topology_max_packages() (__max_logical_packages)

extern unsigned int __max_die_per_package;

static inline int topology_max_die_per_package(void)
{
return __max_die_per_package;
Expand Down
4 changes: 2 additions & 2 deletions arch/x86/kernel/cpu/amd.c
Original file line number Diff line number Diff line change
Expand Up @@ -545,12 +545,12 @@ static void bsp_init_amd(struct cpuinfo_x86 *c)
u32 ecx;

ecx = cpuid_ecx(0x8000001e);
nodes_per_socket = ((ecx >> 8) & 7) + 1;
__max_die_per_package = nodes_per_socket = ((ecx >> 8) & 7) + 1;
} else if (boot_cpu_has(X86_FEATURE_NODEID_MSR)) {
u64 value;

rdmsrl(MSR_FAM10H_NODE_ID, value);
nodes_per_socket = ((value >> 3) & 7) + 1;
__max_die_per_package = nodes_per_socket = ((value >> 3) & 7) + 1;
}

if (!boot_cpu_has(X86_FEATURE_AMD_SSBD) &&
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/kernel/cpu/topology.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@
#define BITS_SHIFT_NEXT_LEVEL(eax) ((eax) & 0x1f)
#define LEVEL_MAX_SIBLINGS(ebx) ((ebx) & 0xffff)

#ifdef CONFIG_SMP
unsigned int __max_die_per_package __read_mostly = 1;
EXPORT_SYMBOL(__max_die_per_package);

#ifdef CONFIG_SMP
/*
* Check if given CPUID extended toplogy "leaf" is implemented
*/
Expand Down
9 changes: 5 additions & 4 deletions arch/x86/kernel/fpu/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ bool irq_fpu_usable(void)
}
EXPORT_SYMBOL(irq_fpu_usable);

void kernel_fpu_begin(void)
void kernel_fpu_begin_mask(unsigned int kfpu_mask)
{
preempt_disable();

Expand All @@ -102,13 +102,14 @@ void kernel_fpu_begin(void)
}
__cpu_invalidate_fpregs_state();

if (boot_cpu_has(X86_FEATURE_XMM))
/* Put sane initial values into the control registers. */
if (likely(kfpu_mask & KFPU_MXCSR) && boot_cpu_has(X86_FEATURE_XMM))
ldmxcsr(MXCSR_DEFAULT);

if (boot_cpu_has(X86_FEATURE_FPU))
if (unlikely(kfpu_mask & KFPU_387) && boot_cpu_has(X86_FEATURE_FPU))
asm volatile ("fninit");
}
EXPORT_SYMBOL_GPL(kernel_fpu_begin);
EXPORT_SYMBOL_GPL(kernel_fpu_begin_mask);

void kernel_fpu_end(void)
{
Expand Down
20 changes: 15 additions & 5 deletions arch/x86/lib/mmx_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@
#include <asm/fpu/api.h>
#include <asm/asm.h>

/*
* Use KFPU_387. MMX instructions are not affected by MXCSR,
* but both AMD and Intel documentation states that even integer MMX
* operations will result in #MF if an exception is pending in FCW.
*
* EMMS is not needed afterwards because, after calling kernel_fpu_end(),
* any subsequent user of the 387 stack will reinitialize it using
* KFPU_387.
*/

void *_mmx_memcpy(void *to, const void *from, size_t len)
{
void *p;
Expand All @@ -37,7 +47,7 @@ void *_mmx_memcpy(void *to, const void *from, size_t len)
p = to;
i = len >> 6; /* len/64 */

kernel_fpu_begin();
kernel_fpu_begin_mask(KFPU_387);

__asm__ __volatile__ (
"1: prefetch (%0)\n" /* This set is 28 bytes */
Expand Down Expand Up @@ -127,7 +137,7 @@ static void fast_clear_page(void *page)
{
int i;

kernel_fpu_begin();
kernel_fpu_begin_mask(KFPU_387);

__asm__ __volatile__ (
" pxor %%mm0, %%mm0\n" : :
Expand Down Expand Up @@ -160,7 +170,7 @@ static void fast_copy_page(void *to, void *from)
{
int i;

kernel_fpu_begin();
kernel_fpu_begin_mask(KFPU_387);

/*
* maybe the prefetch stuff can go before the expensive fnsave...
Expand Down Expand Up @@ -247,7 +257,7 @@ static void fast_clear_page(void *page)
{
int i;

kernel_fpu_begin();
kernel_fpu_begin_mask(KFPU_387);

__asm__ __volatile__ (
" pxor %%mm0, %%mm0\n" : :
Expand Down Expand Up @@ -282,7 +292,7 @@ static void fast_copy_page(void *to, void *from)
{
int i;

kernel_fpu_begin();
kernel_fpu_begin_mask(KFPU_387);

__asm__ __volatile__ (
"1: prefetch (%0)\n"
Expand Down
11 changes: 10 additions & 1 deletion arch/x86/xen/enlighten_hvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,8 @@ static int xen_cpu_dead_hvm(unsigned int cpu)
return 0;
}

static bool no_vector_callback __initdata;

static void __init xen_hvm_guest_init(void)
{
if (xen_pv_domain())
Expand All @@ -194,7 +196,7 @@ static void __init xen_hvm_guest_init(void)

xen_panic_handler_init();

if (xen_feature(XENFEAT_hvm_callback_vector))
if (!no_vector_callback && xen_feature(XENFEAT_hvm_callback_vector))
xen_have_vector_callback = 1;

xen_hvm_smp_init();
Expand All @@ -220,6 +222,13 @@ static __init int xen_parse_nopv(char *arg)
}
early_param("xen_nopv", xen_parse_nopv);

static __init int xen_parse_no_vector_callback(char *arg)
{
no_vector_callback = true;
return 0;
}
early_param("xen_no_vector_callback", xen_parse_no_vector_callback);

bool __init xen_hvm_need_lapic(void)
{
if (xen_pv_domain())
Expand Down
2 changes: 2 additions & 0 deletions drivers/acpi/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -587,6 +587,8 @@ static int acpi_get_device_data(acpi_handle handle, struct acpi_device **device,
if (!device)
return -EINVAL;

*device = NULL;

status = acpi_get_data_full(handle, acpi_scan_drop_device,
(void **)device, callback);
if (ACPI_FAILURE(status) || !*device) {
Expand Down
17 changes: 16 additions & 1 deletion drivers/base/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,16 @@ int device_links_read_lock_held(void)
#endif
#endif /* !CONFIG_SRCU */

static bool device_is_ancestor(struct device *dev, struct device *target)
{
while (target->parent) {
target = target->parent;
if (dev == target)
return true;
}
return false;
}

/**
* device_is_dependent - Check if one device depends on another one
* @dev: Device to check dependencies for.
Expand All @@ -119,7 +129,12 @@ static int device_is_dependent(struct device *dev, void *target)
struct device_link *link;
int ret;

if (dev == target)
/*
* The "ancestors" check is needed to catch the case when the target
* device has not been completely initialized yet and it is still
* missing from the list of children of its parent device.
*/
if (dev == target || device_is_ancestor(dev, target))
return 1;

ret = device_for_each_child(dev, target, device_is_dependent);
Expand Down
Loading