You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'perf/urgent' into perf/core, to resolve conflict
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -1,13 +1,16 @@
|
|||||||
== Amlogic Meson pinmux controller ==
|
== Amlogic Meson pinmux controller ==
|
||||||
|
|
||||||
Required properties for the root node:
|
Required properties for the root node:
|
||||||
- compatible: "amlogic,meson8-pinctrl" or "amlogic,meson8b-pinctrl"
|
- compatible: one of "amlogic,meson8-cbus-pinctrl"
|
||||||
|
"amlogic,meson8b-cbus-pinctrl"
|
||||||
|
"amlogic,meson8-aobus-pinctrl"
|
||||||
|
"amlogic,meson8b-aobus-pinctrl"
|
||||||
- reg: address and size of registers controlling irq functionality
|
- reg: address and size of registers controlling irq functionality
|
||||||
|
|
||||||
=== GPIO sub-nodes ===
|
=== GPIO sub-nodes ===
|
||||||
|
|
||||||
The 2 power domains of the controller (regular and always-on) are
|
The GPIO bank for the controller is represented as a sub-node and it acts as a
|
||||||
represented as sub-nodes and each of them acts as a GPIO controller.
|
GPIO controller.
|
||||||
|
|
||||||
Required properties for sub-nodes are:
|
Required properties for sub-nodes are:
|
||||||
- reg: should contain address and size for mux, pull-enable, pull and
|
- reg: should contain address and size for mux, pull-enable, pull and
|
||||||
@@ -18,10 +21,6 @@ Required properties for sub-nodes are:
|
|||||||
- gpio-controller: identifies the node as a gpio controller
|
- gpio-controller: identifies the node as a gpio controller
|
||||||
- #gpio-cells: must be 2
|
- #gpio-cells: must be 2
|
||||||
|
|
||||||
Valid sub-node names are:
|
|
||||||
- "banks" for the regular domain
|
|
||||||
- "ao-bank" for the always-on domain
|
|
||||||
|
|
||||||
=== Other sub-nodes ===
|
=== Other sub-nodes ===
|
||||||
|
|
||||||
Child nodes without the "gpio-controller" represent some desired
|
Child nodes without the "gpio-controller" represent some desired
|
||||||
@@ -45,7 +44,7 @@ pinctrl-bindings.txt
|
|||||||
=== Example ===
|
=== Example ===
|
||||||
|
|
||||||
pinctrl: pinctrl@c1109880 {
|
pinctrl: pinctrl@c1109880 {
|
||||||
compatible = "amlogic,meson8-pinctrl";
|
compatible = "amlogic,meson8-cbus-pinctrl";
|
||||||
reg = <0xc1109880 0x10>;
|
reg = <0xc1109880 0x10>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
@@ -61,15 +60,6 @@ pinctrl-bindings.txt
|
|||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio_ao: ao-bank@c1108030 {
|
|
||||||
reg = <0xc8100014 0x4>,
|
|
||||||
<0xc810002c 0x4>,
|
|
||||||
<0xc8100024 0x8>;
|
|
||||||
reg-names = "mux", "pull", "gpio";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
nand {
|
nand {
|
||||||
mux {
|
mux {
|
||||||
groups = "nand_io", "nand_io_ce0", "nand_io_ce1",
|
groups = "nand_io", "nand_io_ce0", "nand_io_ce1",
|
||||||
@@ -79,18 +69,4 @@ pinctrl-bindings.txt
|
|||||||
function = "nand";
|
function = "nand";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
uart_ao_a {
|
|
||||||
mux {
|
|
||||||
groups = "uart_tx_ao_a", "uart_rx_ao_a",
|
|
||||||
"uart_cts_ao_a", "uart_rts_ao_a";
|
|
||||||
function = "uart_ao";
|
|
||||||
};
|
|
||||||
|
|
||||||
conf {
|
|
||||||
pins = "GPIOAO_0", "GPIOAO_1",
|
|
||||||
"GPIOAO_2", "GPIOAO_3";
|
|
||||||
bias-disable;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -4077,6 +4077,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
sector if the number is odd);
|
sector if the number is odd);
|
||||||
i = IGNORE_DEVICE (don't bind to this
|
i = IGNORE_DEVICE (don't bind to this
|
||||||
device);
|
device);
|
||||||
|
j = NO_REPORT_LUNS (don't use report luns
|
||||||
|
command, uas only);
|
||||||
l = NOT_LOCKABLE (don't try to lock and
|
l = NOT_LOCKABLE (don't try to lock and
|
||||||
unlock ejectable media);
|
unlock ejectable media);
|
||||||
m = MAX_SECTORS_64 (don't transfer more
|
m = MAX_SECTORS_64 (don't transfer more
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ For the gadget two work under Windows two conditions have to be met:
|
|||||||
First of all, Windows need to detect the gadget as an USB composite
|
First of all, Windows need to detect the gadget as an USB composite
|
||||||
gadget which on its own have some conditions[4]. If they are met,
|
gadget which on its own have some conditions[4]. If they are met,
|
||||||
Windows lets USB Generic Parent Driver[5] handle the device which then
|
Windows lets USB Generic Parent Driver[5] handle the device which then
|
||||||
tries to much drivers for each individual interface (sort of, don't
|
tries to match drivers for each individual interface (sort of, don't
|
||||||
get into too many details).
|
get into too many details).
|
||||||
|
|
||||||
The good news is: you do not have to worry about most of the
|
The good news is: you do not have to worry about most of the
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
Memory Protection Keys for Userspace (PKU aka PKEYs) is a CPU feature
|
||||||
|
which will be found on future Intel CPUs.
|
||||||
|
|
||||||
|
Memory Protection Keys provides a mechanism for enforcing page-based
|
||||||
|
protections, but without requiring modification of the page tables
|
||||||
|
when an application changes protection domains. It works by
|
||||||
|
dedicating 4 previously ignored bits in each page table entry to a
|
||||||
|
"protection key", giving 16 possible keys.
|
||||||
|
|
||||||
|
There is also a new user-accessible register (PKRU) with two separate
|
||||||
|
bits (Access Disable and Write Disable) for each key. Being a CPU
|
||||||
|
register, PKRU is inherently thread-local, potentially giving each
|
||||||
|
thread a different set of protections from every other thread.
|
||||||
|
|
||||||
|
There are two new instructions (RDPKRU/WRPKRU) for reading and writing
|
||||||
|
to the new register. The feature is only available in 64-bit mode,
|
||||||
|
even though there is theoretically space in the PAE PTEs. These
|
||||||
|
permissions are enforced on data access only and have no effect on
|
||||||
|
instruction fetches.
|
||||||
|
|
||||||
|
=========================== Config Option ===========================
|
||||||
|
|
||||||
|
This config option adds approximately 1.5kb of text. and 50 bytes of
|
||||||
|
data to the executable. A workload which does large O_DIRECT reads
|
||||||
|
of holes in XFS files was run to exercise get_user_pages_fast(). No
|
||||||
|
performance delta was observed with the config option
|
||||||
|
enabled or disabled.
|
||||||
+1
-1
@@ -6252,8 +6252,8 @@ S: Maintained
|
|||||||
F: tools/testing/selftests
|
F: tools/testing/selftests
|
||||||
|
|
||||||
KERNEL VIRTUAL MACHINE (KVM)
|
KERNEL VIRTUAL MACHINE (KVM)
|
||||||
M: Gleb Natapov <gleb@kernel.org>
|
|
||||||
M: Paolo Bonzini <pbonzini@redhat.com>
|
M: Paolo Bonzini <pbonzini@redhat.com>
|
||||||
|
M: Radim Krčmář <rkrcmar@redhat.com>
|
||||||
L: kvm@vger.kernel.org
|
L: kvm@vger.kernel.org
|
||||||
W: http://www.linux-kvm.org
|
W: http://www.linux-kvm.org
|
||||||
T: git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
|
T: git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc3
|
EXTRAVERSION = -rc4
|
||||||
NAME = Blurry Fish Butt
|
NAME = Blurry Fish Butt
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|||||||
@@ -593,7 +593,6 @@ config PCI_SYSCALL
|
|||||||
def_bool PCI
|
def_bool PCI
|
||||||
|
|
||||||
source "drivers/pci/Kconfig"
|
source "drivers/pci/Kconfig"
|
||||||
source "drivers/pci/pcie/Kconfig"
|
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
|||||||
@@ -47,14 +47,6 @@
|
|||||||
clocks = <&apbclk>;
|
clocks = <&apbclk>;
|
||||||
clock-names = "stmmaceth";
|
clock-names = "stmmaceth";
|
||||||
max-speed = <100>;
|
max-speed = <100>;
|
||||||
mdio0 {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "snps,dwmac-mdio";
|
|
||||||
phy1: ethernet-phy@1 {
|
|
||||||
reg = <1>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ehci@0x40000 {
|
ehci@0x40000 {
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ CONFIG_DEVTMPFS=y
|
|||||||
# CONFIG_STANDALONE is not set
|
# CONFIG_STANDALONE is not set
|
||||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||||
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ CONFIG_DEVTMPFS=y
|
|||||||
# CONFIG_STANDALONE is not set
|
# CONFIG_STANDALONE is not set
|
||||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||||
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
CONFIG_BLK_DEV_SD=y
|
CONFIG_BLK_DEV_SD=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
#ifndef _ASM_FB_H_
|
||||||
|
#define _ASM_FB_H_
|
||||||
|
|
||||||
|
#include <linux/fb.h>
|
||||||
|
#include <linux/fs.h>
|
||||||
|
#include <asm/page.h>
|
||||||
|
|
||||||
|
static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
|
||||||
|
unsigned long off)
|
||||||
|
{
|
||||||
|
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int fb_is_primary_device(struct fb_info *info)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _ASM_FB_H_ */
|
||||||
@@ -470,9 +470,12 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac0 {
|
&cpsw_emac0 {
|
||||||
phy_id = <&davinci_mdio>, <0>;
|
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
dual_emac_res_vlan = <1>;
|
dual_emac_res_vlan = <1>;
|
||||||
|
fixed-link {
|
||||||
|
speed = <100>;
|
||||||
|
full-duplex;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&cpsw_emac1 {
|
&cpsw_emac1 {
|
||||||
|
|||||||
@@ -207,7 +207,7 @@
|
|||||||
ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
|
ti,tptcs = <&edma_tptc0 7>, <&edma_tptc1 5>,
|
||||||
<&edma_tptc2 0>;
|
<&edma_tptc2 0>;
|
||||||
|
|
||||||
ti,edma-memcpy-channels = <32 33>;
|
ti,edma-memcpy-channels = <58 59>;
|
||||||
};
|
};
|
||||||
|
|
||||||
edma_tptc0: tptc@49800000 {
|
edma_tptc0: tptc@49800000 {
|
||||||
|
|||||||
@@ -794,3 +794,8 @@
|
|||||||
tx-num-evt = <32>;
|
tx-num-evt = <32>;
|
||||||
rx-num-evt = <32>;
|
rx-num-evt = <32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&synctimer_32kclk {
|
||||||
|
assigned-clocks = <&mux_synctimer32k_ck>;
|
||||||
|
assigned-clock-parents = <&clkdiv32k_ick>;
|
||||||
|
};
|
||||||
|
|||||||
@@ -117,7 +117,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* USB part of the eSATA/USB 2.0 port */
|
/* USB part of the eSATA/USB 2.0 port */
|
||||||
usb@50000 {
|
usb@58000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -91,8 +91,8 @@
|
|||||||
clock-frequency = <141666666>;
|
clock-frequency = <141666666>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl: pinctrl@c1109880 {
|
pinctrl_cbus: pinctrl@c1109880 {
|
||||||
compatible = "amlogic,meson8-pinctrl";
|
compatible = "amlogic,meson8-cbus-pinctrl";
|
||||||
reg = <0xc1109880 0x10>;
|
reg = <0xc1109880 0x10>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
@@ -108,29 +108,6 @@
|
|||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio_ao: ao-bank@c1108030 {
|
|
||||||
reg = <0xc8100014 0x4>,
|
|
||||||
<0xc810002c 0x4>,
|
|
||||||
<0xc8100024 0x8>;
|
|
||||||
reg-names = "mux", "pull", "gpio";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
};
|
|
||||||
|
|
||||||
uart_ao_a_pins: uart_ao_a {
|
|
||||||
mux {
|
|
||||||
groups = "uart_tx_ao_a", "uart_rx_ao_a";
|
|
||||||
function = "uart_ao";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
i2c_ao_pins: i2c_mst_ao {
|
|
||||||
mux {
|
|
||||||
groups = "i2c_mst_sck_ao", "i2c_mst_sda_ao";
|
|
||||||
function = "i2c_mst_ao";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
spi_nor_pins: nor {
|
spi_nor_pins: nor {
|
||||||
mux {
|
mux {
|
||||||
groups = "nor_d", "nor_q", "nor_c", "nor_cs";
|
groups = "nor_d", "nor_q", "nor_c", "nor_cs";
|
||||||
@@ -157,4 +134,34 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pinctrl_aobus: pinctrl@c8100084 {
|
||||||
|
compatible = "amlogic,meson8-aobus-pinctrl";
|
||||||
|
reg = <0xc8100084 0xc>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
|
gpio_ao: ao-bank@c1108030 {
|
||||||
|
reg = <0xc8100014 0x4>,
|
||||||
|
<0xc810002c 0x4>,
|
||||||
|
<0xc8100024 0x8>;
|
||||||
|
reg-names = "mux", "pull", "gpio";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
uart_ao_a_pins: uart_ao_a {
|
||||||
|
mux {
|
||||||
|
groups = "uart_tx_ao_a", "uart_rx_ao_a";
|
||||||
|
function = "uart_ao";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c_ao_pins: i2c_mst_ao {
|
||||||
|
mux {
|
||||||
|
groups = "i2c_mst_sck_ao", "i2c_mst_sda_ao";
|
||||||
|
function = "i2c_mst_ao";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}; /* end of / */
|
}; /* end of / */
|
||||||
|
|||||||
@@ -155,8 +155,8 @@
|
|||||||
reg = <0xc1108000 0x4>, <0xc1104000 0x460>;
|
reg = <0xc1108000 0x4>, <0xc1104000 0x460>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl: pinctrl@c1109880 {
|
pinctrl_cbus: pinctrl@c1109880 {
|
||||||
compatible = "amlogic,meson8b-pinctrl";
|
compatible = "amlogic,meson8b-cbus-pinctrl";
|
||||||
reg = <0xc1109880 0x10>;
|
reg = <0xc1109880 0x10>;
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
@@ -171,6 +171,14 @@
|
|||||||
gpio-controller;
|
gpio-controller;
|
||||||
#gpio-cells = <2>;
|
#gpio-cells = <2>;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
pinctrl_aobus: pinctrl@c8100084 {
|
||||||
|
compatible = "amlogic,meson8b-aobus-pinctrl";
|
||||||
|
reg = <0xc8100084 0xc>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges;
|
||||||
|
|
||||||
gpio_ao: ao-bank@c1108030 {
|
gpio_ao: ao-bank@c1108030 {
|
||||||
reg = <0xc8100014 0x4>,
|
reg = <0xc8100014 0x4>,
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
compatible = "arm,cortex-a9-twd-timer";
|
compatible = "arm,cortex-a9-twd-timer";
|
||||||
clocks = <&mpu_periphclk>;
|
clocks = <&mpu_periphclk>;
|
||||||
reg = <0x48240600 0x20>;
|
reg = <0x48240600 0x20>;
|
||||||
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_LEVEL_HIGH)>;
|
interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_EDGE_RISING)>;
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,9 @@ CONFIG_INPUT_TOUCHSCREEN=y
|
|||||||
CONFIG_TOUCHSCREEN_BU21013=y
|
CONFIG_TOUCHSCREEN_BU21013=y
|
||||||
CONFIG_INPUT_MISC=y
|
CONFIG_INPUT_MISC=y
|
||||||
CONFIG_INPUT_AB8500_PONKEY=y
|
CONFIG_INPUT_AB8500_PONKEY=y
|
||||||
|
CONFIG_RMI4_CORE=y
|
||||||
|
CONFIG_RMI4_I2C=y
|
||||||
|
CONFIG_RMI4_F11=y
|
||||||
# CONFIG_SERIO is not set
|
# CONFIG_SERIO is not set
|
||||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||||
# CONFIG_LEGACY_PTYS is not set
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
|
|||||||
+10
-3
@@ -1112,10 +1112,17 @@ static void __init hyp_cpu_pm_init(void)
|
|||||||
{
|
{
|
||||||
cpu_pm_register_notifier(&hyp_init_cpu_pm_nb);
|
cpu_pm_register_notifier(&hyp_init_cpu_pm_nb);
|
||||||
}
|
}
|
||||||
|
static void __init hyp_cpu_pm_exit(void)
|
||||||
|
{
|
||||||
|
cpu_pm_unregister_notifier(&hyp_init_cpu_pm_nb);
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
static inline void hyp_cpu_pm_init(void)
|
static inline void hyp_cpu_pm_init(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
static inline void hyp_cpu_pm_exit(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void teardown_common_resources(void)
|
static void teardown_common_resources(void)
|
||||||
@@ -1141,9 +1148,7 @@ static int init_subsystems(void)
|
|||||||
/*
|
/*
|
||||||
* Register CPU Hotplug notifier
|
* Register CPU Hotplug notifier
|
||||||
*/
|
*/
|
||||||
cpu_notifier_register_begin();
|
err = register_cpu_notifier(&hyp_init_cpu_nb);
|
||||||
err = __register_cpu_notifier(&hyp_init_cpu_nb);
|
|
||||||
cpu_notifier_register_done();
|
|
||||||
if (err) {
|
if (err) {
|
||||||
kvm_err("Cannot register KVM init CPU notifier (%d)\n", err);
|
kvm_err("Cannot register KVM init CPU notifier (%d)\n", err);
|
||||||
return err;
|
return err;
|
||||||
@@ -1193,6 +1198,8 @@ static void teardown_hyp_mode(void)
|
|||||||
free_hyp_pgds();
|
free_hyp_pgds();
|
||||||
for_each_possible_cpu(cpu)
|
for_each_possible_cpu(cpu)
|
||||||
free_page(per_cpu(kvm_arm_hyp_stack_page, cpu));
|
free_page(per_cpu(kvm_arm_hyp_stack_page, cpu));
|
||||||
|
unregister_cpu_notifier(&hyp_init_cpu_nb);
|
||||||
|
hyp_cpu_pm_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
static int init_vhe_mode(void)
|
static int init_vhe_mode(void)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user