aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c14
-rw-r--r--meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c32
-rw-r--r--meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c117
-rwxr-xr-xmeta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/linux-non-root-cell.sh21
-rwxr-xr-xmeta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/run-qemu-jailhouse.sh7
-rw-r--r--meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c50
-rw-r--r--meta-agl-jailhouse/recipes-extended/jailhouse/files/sample-inmates/agl-sample-inmate.tar.xzbin0 -> 8587700 bytes
-rw-r--r--meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb30
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/files/defconfig4882
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/kernel-devsrc.bb280
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-5.14.inc4
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-custom_git.bb23
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux/jailhouse.cfg (renamed from meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg)0
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc39
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend1
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch198
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch200
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch174
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch43
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch25
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch57
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch28
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch31
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch31
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch57
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch52
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch311
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch968
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch30
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch140
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch28
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch55
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch59
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch47
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch61
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch30
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch49
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch146
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch70
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch29
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch43
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch41
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch28
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch31
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch68
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch59
-rw-r--r--meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch650
-rw-r--r--templates/feature/agl-jailhouse/50_bblayers.conf.inc4
-rw-r--r--templates/feature/agl-jailhouse/50_local.conf.inc22
49 files changed, 5389 insertions, 3976 deletions
diff --git a/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c b/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c
index f49cd3a4..40696d71 100644
--- a/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c
+++ b/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-apic-demo.c
@@ -20,7 +20,7 @@ struct {
__u64 cpus[1];
struct jailhouse_memory mem_regions[2];
struct jailhouse_cache cache_regions[1];
- struct jailhouse_pio pio_regions[1];//[2]->[1] stop @0x3f8
+ struct jailhouse_pio pio_regions[3];
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
@@ -38,7 +38,7 @@ struct {
.console = {
.type = JAILHOUSE_CON_TYPE_8250,
.flags = JAILHOUSE_CON_ACCESS_PIO,
- .address = 0x2f8, /* ######## ttyS0 is host -> ttyS1 */
+ .address = 0x3e8, /* Serial 2: ttyS2(0x3e8) */
},
},
@@ -47,9 +47,9 @@ struct {
},
.mem_regions = {
- /* RAM */ { /* JH_memory: 0x22600000-0x271fffff */
- .phys_start = 0x26e00000 , /* agl-linux-x86: 0x22600000-0x26e00000 */
- .virt_start = 0, /* agl-ivshmem: 0x26e00000- (end of ivshmem cell) */
+ /* RAM */ {
+ .phys_start = 0x22f00000,
+ .virt_start = 0,
.size = 0x00100000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_LOADABLE,
@@ -71,8 +71,8 @@ struct {
},
.pio_regions = {
- PIO_RANGE(0x2f8, 8), /* serial 2 */
-// PIO_RANGE(0x3f8, 8), /* serial 1 */
+ PIO_RANGE(0x2e8, 8), /* serial 3: ttyS3(0x2e8) */
+ PIO_RANGE(0x3e8, 8), /* serial 2: ttyS2(0x3e8) */
PIO_RANGE(0xe010, 8), /* OXPCIe952 serial */
},
};
diff --git a/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c b/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c
index 79feb6c5..85dd5ebd 100644
--- a/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c
+++ b/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-ivshmem-demo.c
@@ -20,14 +20,14 @@ struct {
struct jailhouse_cell_desc cell;
__u64 cpus[1];
struct jailhouse_memory mem_regions[7];
- struct jailhouse_pio pio_regions[1];
+ struct jailhouse_pio pio_regions[2];
struct jailhouse_pci_device pci_devices[1];
struct jailhouse_pci_capability pci_caps[0];
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
.revision = JAILHOUSE_CONFIG_REVISION,
- .name = "ivshmem-demo",
+ .name = "agl-ivshmem-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG |
JAILHOUSE_CELL_VIRTUAL_CONSOLE_PERMITTED,
@@ -41,7 +41,7 @@ struct {
.console = {
.type = JAILHOUSE_CON_TYPE_8250,
.flags = JAILHOUSE_CON_ACCESS_PIO,
- .address = 0x2f8,/* ######## ttyS0 is host -> ttyS1 */
+ .address = 0x3e8, /* ######## ttyS2 is host -> ttyS3 */
},
},
@@ -52,39 +52,39 @@ struct {
.mem_regions = {
/* IVSHMEM shared memory regions (demo) */
{
- .phys_start = 0x271f0000,
- .virt_start = 0x271f0000,
+ .phys_start = 0x221f0000,
+ .virt_start = 0x221f0000,
.size = 0x1000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x271f1000,
- .virt_start = 0x271f1000,
+ .phys_start = 0x221f1000,
+ .virt_start = 0x221f1000,
.size = 0x9000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x271fa000,
- .virt_start = 0x271fa000,
+ .phys_start = 0x221fa000,
+ .virt_start = 0x221fa000,
.size = 0x2000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x271fc000,
- .virt_start = 0x271fc000,
+ .phys_start = 0x221fc000,
+ .virt_start = 0x221fc000,
.size = 0x2000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x271fe000,
- .virt_start = 0x271fe000,
+ .phys_start = 0x221fe000,
+ .virt_start = 0x221fe000,
.size = 0x2000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
},
/* RAM */ {
- .phys_start = 0x27200000,/* to 0x27300000 */
+ .phys_start = 0x22f00000,
.virt_start = 0,
.size = 0x00100000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
@@ -99,8 +99,8 @@ struct {
},
.pio_regions = {
- PIO_RANGE(0x2f8, 8), /* serial 2 */
-// PIO_RANGE(0x3f8, 8), /* serial 1 */
+ PIO_RANGE(0x2e8, 8), /* serial 3: ttyS3(0x2e8) */
+ PIO_RANGE(0x3e8, 8), /* serial 2: ttyS2(0x3e8) */
},
.pci_devices = {
diff --git a/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c b/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c
index 06085df5..4aa8db44 100644
--- a/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c
+++ b/meta-agl-jailhouse/recipes-extended/jailhouse/files/agl-linux-x86-demo.c
@@ -18,17 +18,25 @@
struct {
struct jailhouse_cell_desc cell;
__u64 cpus[1];
+#ifdef CONFIG_QEMU_E1000E_ASSIGNMENT
+ struct jailhouse_memory mem_regions[24];
+#else
struct jailhouse_memory mem_regions[20];
+#endif
struct jailhouse_cache cache_regions[1];
struct jailhouse_irqchip irqchips[1];
- struct jailhouse_pio pio_regions[1];
+ struct jailhouse_pio pio_regions[2];
+#ifdef CONFIG_QEMU_E1000E_ASSIGNMENT
+ struct jailhouse_pci_device pci_devices[5];
+#else
struct jailhouse_pci_device pci_devices[4];
+#endif
struct jailhouse_pci_capability pci_caps[6];
} __attribute__((packed)) config = {
.cell = {
.signature = JAILHOUSE_CELL_DESC_SIGNATURE,
.revision = JAILHOUSE_CONFIG_REVISION,
- .name = "linux-x86-demo",
+ .name = "agl-linux-x86-demo",
.flags = JAILHOUSE_CELL_PASSIVE_COMMREG |
JAILHOUSE_CELL_VIRTUAL_CONSOLE_PERMITTED,
@@ -46,16 +54,17 @@ struct {
},
.mem_regions = {
+
/* IVSHMEM shared memory region (virtio-blk front) */
{
- .phys_start = 0x27000000, /* to 0x27001000 */
- .virt_start = 0x27000000,
+ .phys_start = 0x22000000,
+ .virt_start = 0x22000000,
.size = 0x1000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x27001000,/* to 0x270e0000 */
- .virt_start = 0x27001000,
+ .phys_start = 0x22001000,
+ .virt_start = 0x22001000,
.size = 0xdf000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_ROOTSHARED,
@@ -64,57 +73,58 @@ struct {
{ 0 },
/* IVSHMEM shared memory region (virtio-con front) */
{
- .phys_start = 0x270e0000,/* to 0x270e1000 */
- .virt_start = 0x270e0000,
+ .phys_start = 0x220e0000,
+ .virt_start = 0x220e0000,
.size = 0x1000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x270e1000,/*to 0x270f0000 */
- .virt_start = 0x270e1000,
+ .phys_start = 0x220e1000,
+ .virt_start = 0x220e1000,
.size = 0xf000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_ROOTSHARED,
},
{ 0 },
{ 0 },
+
/* IVSHMEM shared memory regions (demo) */
{
- .phys_start = 0x270f0000,/*to 0x270f1000 */
- .virt_start = 0x270f0000,
+ .phys_start = 0x220f0000,
+ .virt_start = 0x220f0000,
.size = 0x1000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x270f1000,/*to 0x270fa000 */
- .virt_start = 0x270f1000,
+ .phys_start = 0x220f1000,
+ .virt_start = 0x220f1000,
.size = 0x9000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x270fa000,/* to 0x270fc000 */
- .virt_start = 0x270fa000,
+ .phys_start = 0x220fa000,
+ .virt_start = 0x220fa000,
.size = 0x2000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x270fc000,/* to 0x270fe000*/
- .virt_start = 0x270fc000,
+ .phys_start = 0x220fc000,
+ .virt_start = 0x220fc000,
.size = 0x2000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_ROOTSHARED,
},
{
- .phys_start = 0x270fe000,/* to 0x27100000 */
- .virt_start = 0x270fe000,
+ .phys_start = 0x220fe000,
+ .virt_start = 0x220fe000,
.size = 0x2000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_ROOTSHARED,
},
/* IVSHMEM shared memory regions (networking) */
- JAILHOUSE_SHMEM_NET_REGIONS(0x27100000, 1),
+ JAILHOUSE_SHMEM_NET_REGIONS(0x22100000, 1),
/* low RAM */ {
- .phys_start = 0x22600000,/* to 0x22700000*/
+ .phys_start = 0x22600000,
.virt_start = 0,
.size = 0x00100000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
@@ -122,20 +132,49 @@ struct {
JAILHOUSE_MEM_LOADABLE,
},
/* communication region */ {
- /*.phys_start = ? */
.virt_start = 0x00100000,
.size = 0x00001000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_COMM_REGION,
},
/* high RAM */ {
- .phys_start = 0x22700000,/*to 0x26e00000 */
+ .phys_start = 0x22700000,
.virt_start = 0x00200000,
.size = 0x4700000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA |
JAILHOUSE_MEM_LOADABLE,
},
+#ifdef CONFIG_QEMU_E1000E_ASSIGNMENT
+ /* MemRegion: feb40000-feb7ffff : 0000:00:02.0 */
+ {
+ .phys_start = 0xfeb40000,
+ .virt_start = 0xfeb40000,
+ .size = 0x40000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: feb80000-feb9ffff : e1000e */
+ {
+ .phys_start = 0xfeb80000,
+ .virt_start = 0xfeb80000,
+ .size = 0x20000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: feba0000-febbffff : e1000e */
+ {
+ .phys_start = 0xfeba0000,
+ .virt_start = 0xfeba0000,
+ .size = 0x20000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+ /* MemRegion: febd1000-febd3fff : e1000e */
+ {
+ .phys_start = 0xfebd1000,
+ .virt_start = 0xfebd1000,
+ .size = 0x3000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
+ },
+#endif
},
.cache_regions = {
@@ -157,9 +196,9 @@ struct {
},
.pio_regions = {
- PIO_RANGE(0x2f8, 8), /* serial 2 */
-// PIO_RANGE(0x3f8, 8), /* serial 1 */
- PIO_RANGE(0xe010, 8), /* OXPCIe952 serial1 */
+ PIO_RANGE(0x2e8, 8), /* serial 2: ttyS3(0x2e8) */
+ PIO_RANGE(0x3e8, 8), /* serial 1: ttyS2(0x3e8) */
+// PIO_RANGE(0xe010, 8), /* OXPCIe952 serial1 */
},
.pci_devices = {
@@ -209,9 +248,33 @@ struct {
.shmem_peers = 2,
.shmem_protocol = JAILHOUSE_SHMEM_PROTO_VETH,
},
+#ifdef CONFIG_QEMU_E1000E_ASSIGNMENT
+ { /* e1000e */
+ .type = JAILHOUSE_PCI_TYPE_DEVICE,
+ .domain = 0x0000,
+ .bdf = 0x0010,
+ .bar_mask = {
+ 0xfffe0000, 0xfffe0000, 0xffffffe0,
+ 0xffffc000, 0x00000000, 0x00000000,
+ },
+ .caps_start = 0,
+ .num_caps = 6,
+ .num_msi_vectors = 1,
+ .msi_64bits = 1,
+ .num_msix_vectors = 5,
+ .msix_region_size = 0x1000,
+ .msix_address = 0xfebd0000,
+ },
+#endif
},
.pci_caps = {
+ { /* e1000e */
+ .id = PCI_CAP_ID_PM,
+ .start = 0xc8,
+ .len = 8,
+ .flags = JAILHOUSE_PCICAPS_WRITE,
+ },
{
.id = PCI_CAP_ID_MSI,
.start = 0xd0,
diff --git a/meta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/linux-non-root-cell.sh b/meta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/linux-non-root-cell.sh
new file mode 100755
index 00000000..4915ed74
--- /dev/null
+++ b/meta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/linux-non-root-cell.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# For Networking
+dhclient enp0s2
+
+# For Enabling the Root-Cell
+jailhouse enable /usr/share/jailhouse/cells/qemu-agl.cell
+
+# For loading the Non-Root cell
+jailhouse cell linux /usr/share/jailhouse/cells/agl-linux-x86-demo.cell bzImage -i rootfs.cpio -w out.file -c "console=ttyS2,115200 earlycon earlyprintk"
+
+<<DEMO
+
+qemux86-64:~# ./linux-non-root-cell.sh
+Boot parameters written. Start Linux with the following commands (adjusting paths as needed):
+
+jailhouse cell create /usr/share/jailhouse/cells/agl-linux-x86-demo.cell
+jailhouse cell load linux-x86-demo linux-loader.bin -a 0x0 bzImage -a 0xffc600 rootfs.cpio -a 0x3d89000 out.file -a 0x1000
+jailhouse cell start linux-x86-demo
+
+DEMO
diff --git a/meta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/run-qemu-jailhouse.sh b/meta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/run-qemu-jailhouse.sh
new file mode 100755
index 00000000..c6688d1a
--- /dev/null
+++ b/meta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/run-qemu-jailhouse.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+echo "Running QEMU..."
+runqemu qemux86-64 slirp kvm publicvnc serial bootparams="verbose ipv6.disable=1 intel_iommu=off"
+echo "Powering Off..."
+
+# Note: If you want to run `$ jailhouse hardware check` then make `intel_iommu=on`, and `intel_iommu=off` for otherwise.
diff --git a/meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c b/meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c
index cf193c08..d134e971 100644
--- a/meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c
+++ b/meta-agl-jailhouse/recipes-extended/jailhouse/files/qemu-agl.c
@@ -81,7 +81,7 @@ struct {
},
},
.root_cell = {
- .name = "RootCell",
+ .name = "AGL-Jailhouse-RootCell",
.cpu_set_size = sizeof(config.cpus),
.num_memory_regions = ARRAY_SIZE(config.mem_regions),
.num_irqchips = ARRAY_SIZE(config.irqchips),
@@ -104,35 +104,33 @@ struct {
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
},
- /* MemRegion: 00100000-201fffff : System RAM */
+ /* MemRegion: 000a0000-000bffff : PCI Bus 0000:00 */
{
- .phys_start = 0x100000,
- .virt_start = 0x100000,
- .size = 0x20100000,
- .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
- JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+ .phys_start = 0xa0000,
+ .virt_start = 0xa0000,
+ .size = 0x20000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
},
- /* MemRegion: 20200000-21ffffff : Kernel */
+ /* MemRegion: 000f0000-000fffff : System ROM */
{
- .phys_start = 0x20200000,
- .virt_start = 0x20200000,
- .size = 0x1e00000,
- .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
- JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
+ .phys_start = 0xf0000,
+ .virt_start = 0xf0000,
+ .size = 0x10000,
+ .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
},
- /* MemRegion: 27200000-31ffffff : System RAM */
+ /* MemRegion: 00100000-21ffffff : System RAM */
{
- .phys_start = 0x27200000,
- .virt_start = 0x27200000,
- .size = 0xae00000,
+ .phys_start = 0x100000,
+ .virt_start = 0x100000,
+ .size = 0x21f00000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
},
- /* MemRegion: 32000000-33ffffff : RAM buffer */
+ /* MemRegion: 27200000-7ffd7fff : System RAM */
{
- .phys_start = 0x32000000,
- .virt_start = 0x32000000,
- .size = 0x2000000,
+ .phys_start = 0x27200000,
+ .virt_start = 0x27200000,
+ .size = 0x58dd8000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
},
@@ -178,7 +176,7 @@ struct {
.size = 0x40000,
.flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
},
- /* MemRegion: febd0000-febd3fff : ICH HD audio */
+ /* MemRegion: febd0000-febd3fff : 0000:00:1b.0 */
{
.phys_start = 0xfebd0000,
.virt_start = 0xfebd0000,
@@ -246,8 +244,8 @@ struct {
PIO_RANGE(0x60, 0x1),
/* Port I/O: 0064-0064 : keyboard */
PIO_RANGE(0x64, 0x1),
- /* Port I/O: 0070-0077 : rtc0 */
- PIO_RANGE(0x70, 0x8),
+ /* Port I/O: 0070-0071 : rtc0 */
+ PIO_RANGE(0x70, 0x2),
/* Port I/O: 0080-008f : dma page reg */
/* PIO_RANGE(0x80, 0x10), */
/* Port I/O: 00a0-00a1 : pic2 */
@@ -258,10 +256,10 @@ struct {
/* PIO_RANGE(0xf0, 0x10), */
/* Port I/O: 02f8-02ff : serial */
PIO_RANGE(0x2f8, 0x8),
- /* Port I/O: 0378-037a : parport0 */
- /* PIO_RANGE(0x378, 0x3), */
/* Port I/O: 03c0-03df : vga+ */
PIO_RANGE(0x3c0, 0x20),
+ /* Port I/O: 03e8-03ef : serial */
+ /* PIO_RANGE(0x3e8, 0x8), */
/* Port I/O: 03f8-03ff : serial */
PIO_RANGE(0x3f8, 0x8),
/* Port I/O: 0510-051b : QEMU0002:00 */
diff --git a/meta-agl-jailhouse/recipes-extended/jailhouse/files/sample-inmates/agl-sample-inmate.tar.xz b/meta-agl-jailhouse/recipes-extended/jailhouse/files/sample-inmates/agl-sample-inmate.tar.xz
new file mode 100644
index 00000000..21880674
--- /dev/null
+++ b/meta-agl-jailhouse/recipes-extended/jailhouse/files/sample-inmates/agl-sample-inmate.tar.xz
Binary files differ
diff --git a/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb b/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb
index 462f0a77..cc75d684 100644
--- a/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb
+++ b/meta-agl-jailhouse/recipes-extended/jailhouse/jailhouse_git.bb
@@ -10,22 +10,19 @@ LIC_FILES_CHKSUM = " \
file://COPYING;md5=9fa7f895f96bde2d47fd5b7d95b6ba4d \
"
-SRCREV = "4ce7658dddfd5a1682a379d5ac46657e93fe1ff0"
+SRCREV = "630001202caec85370fb4f956e581f51109e490c"
PV = "0.12+git${SRCPV}"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI = "git://github.com/siemens/jailhouse \
- file://0001-configs-arm64-Add-support-for-RPi4-with-more-than-1G.patch \
+ file://qemu-agl.c \
+ file://agl-apic-demo.c \
+ file://agl-pci-demo.c \
+ file://agl-ivshmem-demo.c \
+ file://agl-linux-x86-demo.c \
"
-SRC_URI += "file://qemu-agl.c \
- file://agl-apic-demo.c \
- file://agl-pci-demo.c \
- file://agl-ivshmem-demo.c \
- file://agl-linux-x86-demo.c \
- "
-
DEPENDS = "virtual/kernel dtc-native python3-mako-native make-native"
require jailhouse-arch.inc
@@ -42,22 +39,23 @@ DTS_DIR ?= "${JH_DATADIR}/cells/dts"
JH_CELL_FILES ?= "*.cell"
-EXTRA_OEMAKE = "ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} CC="${CC}" KDIR=${STAGING_KERNEL_BUILDDIR}"
+EXTRA_OEMAKE = "ARCH=${JH_ARCH} CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} -mfpmath=387" KDIR=${STAGING_KERNEL_BUILDDIR}"
do_configure() {
- # copy ${WORKDIR}/qemu-agl.c ${S}/configs/x86/ <--- folder where the cells are defined in the source tree to be compiled
- cp ${WORKDIR}/qemu-agl.c ${S}/configs/${JH_ARCH}
+ # copy ${WORKDIR}/<cell_config>.c ${S}/configs/x86/ <--- folder where the cells are defined in the source tree to be compiled
+ #cp ${WORKDIR}/qemu-agl.c ${S}/configs/${JH_ARCH}
cp ${WORKDIR}/agl-apic-demo.c ${S}/configs/x86/
- cp ${WORKDIR}/agl-pci-demo.c ${S}/configs/x86/
+ # cp ${WORKDIR}/agl-pci-demo.c ${S}/configs/x86/
cp ${WORKDIR}/agl-linux-x86-demo.c ${S}/configs/x86/
cp ${WORKDIR}/agl-ivshmem-demo.c ${S}/configs/x86/
+ cp ${WORKDIR}/qemu-agl.c ${S}/configs/x86/
sed -i '1s|^#!/usr/bin/env python$|#!/usr/bin/env python3|' ${B}/tools/${BPN}-*
}
do_compile() {
- oe_runmake
+ oe_runmake V=1
}
do_install() {
@@ -76,7 +74,6 @@ do_install() {
install -d ${D}${INMATES_DIR}
install -m 0644 ${B}/inmates/demos/${JH_ARCH}/*.bin ${D}${INMATES_DIR}
-
if [ ${JH_ARCH} != "x86" ]; then
install -d ${D}${DTS_DIR}
install -m 0644 ${B}/configs/${JH_ARCH}/dts/*.dtb ${D}${DTS_DIR}
@@ -89,6 +86,9 @@ FILES_pyjailhouse = "${PYTHON_SITEPACKAGES_DIR}"
FILES_${PN}-tools = "${libexecdir}/${BPN}/${BPN}-* ${JH_DATADIR}/*.tmpl"
FILES_${PN}-demos = "${JH_DATADIR}/ ${sbindir}/ivshmem-demo"
+# Default Linker Hash Style Changed to "sysv"
+TARGET_CC_ARCH += "${LDFLAGS}"
+
RDEPENDS_${PN}-tools = "pyjailhouse python3-mmap python3-math python3-datetime python3-curses python3-compression python3-mako"
RDEPENDS_pyjailhouse = "python3-core python3-ctypes python3-fcntl"
RDEPENDS_${PN}-demos = "jailhouse"
diff --git a/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/files/defconfig b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/files/defconfig
new file mode 100644
index 00000000..72c1cd97
--- /dev/null
+++ b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/files/defconfig
@@ -0,0 +1,4882 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/x86 5.12.0-rc4 Kernel Configuration
+#
+CONFIG_CC_VERSION_TEXT="x86_64-agl-linux-gcc (GCC) 9.3.0"
+CONFIG_CC_IS_GCC=y
+CONFIG_GCC_VERSION=90300
+CONFIG_CLANG_VERSION=0
+CONFIG_LD_IS_BFD=y
+CONFIG_LD_VERSION=23400
+CONFIG_LLD_VERSION=0
+CONFIG_CC_HAS_ASM_GOTO=y
+CONFIG_CC_HAS_ASM_INLINE=y
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_TABLE_SORT=y
+CONFIG_THREAD_INFO_IN_TASK=y
+
+#
+# General setup
+#
+CONFIG_INIT_ENV_ARG_LIMIT=32
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_BUILD_SALT=""
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_BZIP2=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
+CONFIG_HAVE_KERNEL_ZSTD=y
+# CONFIG_KERNEL_GZIP is not set
+CONFIG_KERNEL_BZIP2=y
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
+# CONFIG_KERNEL_ZSTD is not set
+CONFIG_DEFAULT_INIT=""
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+# CONFIG_WATCH_QUEUE is not set
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_USELIB=y
+CONFIG_AUDIT=y
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
+CONFIG_AUDITSYSCALL=y
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+CONFIG_GENERIC_PENDING_IRQ=y
+CONFIG_GENERIC_IRQ_MIGRATION=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_IRQ_DOMAIN_HIERARCHY=y
+CONFIG_GENERIC_MSI_IRQ=y
+CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
+CONFIG_IRQ_MSI_IOMMU=y
+CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y
+CONFIG_GENERIC_IRQ_RESERVATION_MODE=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+# CONFIG_GENERIC_IRQ_DEBUGFS is not set
+# end of IRQ subsystem
+
+CONFIG_CLOCKSOURCE_WATCHDOG=y
+CONFIG_ARCH_CLOCKSOURCE_INIT=y
+CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
+CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y
+CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+# CONFIG_NO_HZ_FULL is not set
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+# end of Timers subsystem
+
+# CONFIG_PREEMPT_NONE is not set
+CONFIG_PREEMPT_VOLUNTARY=y
+# CONFIG_PREEMPT is not set
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+CONFIG_TASK_XACCT=y
+CONFIG_TASK_IO_ACCOUNTING=y
+# CONFIG_PSI is not set
+# end of CPU/Task time and stats accounting
+
+CONFIG_CPU_ISOLATION=y
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_RCU=y
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+CONFIG_TREE_SRCU=y
+CONFIG_RCU_STALL_COMMON=y
+CONFIG_RCU_NEED_SEGCBLIST=y
+# end of RCU Subsystem
+
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+# CONFIG_IKHEADERS is not set
+CONFIG_LOG_BUF_SHIFT=18
+CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
+CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
+
+#
+# Scheduler features
+#
+# CONFIG_UCLAMP_TASK is not set
+# end of Scheduler features
+
+CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
+CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
+CONFIG_CC_HAS_INT128=y
+CONFIG_ARCH_SUPPORTS_INT128=y
+# CONFIG_NUMA_BALANCING is not set
+CONFIG_CGROUPS=y
+# CONFIG_MEMCG is not set
+# CONFIG_BLK_CGROUP is not set
+CONFIG_CGROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_CFS_BANDWIDTH is not set
+# CONFIG_RT_GROUP_SCHED is not set
+# CONFIG_CGROUP_PIDS is not set
+# CONFIG_CGROUP_RDMA is not set
+CONFIG_CGROUP_FREEZER=y
+# CONFIG_CGROUP_HUGETLB is not set
+CONFIG_CPUSETS=y
+CONFIG_PROC_PID_CPUSET=y
+# CONFIG_CGROUP_DEVICE is not set
+CONFIG_CGROUP_CPUACCT=y
+# CONFIG_CGROUP_PERF is not set
+# CONFIG_CGROUP_DEBUG is not set
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_TIME_NS=y
+CONFIG_IPC_NS=y
+# CONFIG_USER_NS is not set
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+# CONFIG_CHECKPOINT_RESTORE is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+CONFIG_RD_BZIP2=y
+CONFIG_RD_LZMA=y
+CONFIG_RD_XZ=y
+CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
+CONFIG_RD_ZSTD=y
+# CONFIG_BOOT_CONFIG is not set
+CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_LD_ORPHAN_WARN=y
+CONFIG_SYSCTL=y
+CONFIG_HAVE_UID16=y
+CONFIG_SYSCTL_EXCEPTION_TRACE=y
+CONFIG_HAVE_PCSPKR_PLATFORM=y
+CONFIG_BPF=y
+# CONFIG_EXPERT is not set
+CONFIG_UID16=y
+CONFIG_MULTIUSER=y
+CONFIG_SGETMASK_SYSCALL=y
+CONFIG_SYSFS_SYSCALL=y
+CONFIG_FHANDLE=y
+CONFIG_POSIX_TIMERS=y
+CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_PCSPKR_PLATFORM=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_FUTEX_PI=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_IO_URING=y
+CONFIG_ADVISE_SYSCALLS=y
+CONFIG_MEMBARRIER=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
+CONFIG_KALLSYMS_BASE_RELATIVE=y
+# CONFIG_BPF_SYSCALL is not set
+CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y
+# CONFIG_USERFAULTFD is not set
+CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
+CONFIG_KCMP=y
+CONFIG_RSEQ=y
+# CONFIG_EMBEDDED is not set
+CONFIG_HAVE_PERF_EVENTS=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+# end of Kernel Performance Events And Counters
+
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_COMPAT_BRK is not set
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+CONFIG_SLAB_MERGE_DEFAULT=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SLAB_FREELIST_HARDENED is not set
+# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set
+CONFIG_SLUB_CPU_PARTIAL=y
+CONFIG_SYSTEM_DATA_VERIFICATION=y
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+# end of General setup
+
+CONFIG_64BIT=y
+CONFIG_X86_64=y
+CONFIG_X86=y
+CONFIG_INSTRUCTION_DECODER=y
+CONFIG_OUTPUT_FORMAT="elf64-x86-64"
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=28
+CONFIG_ARCH_MMAP_RND_BITS_MAX=32
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_GENERIC_BUG=y
+CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_HAS_CPU_RELAX=y
+CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
+CONFIG_ARCH_HAS_FILTER_PGPROT=y
+CONFIG_HAVE_SETUP_PER_CPU_AREA=y
+CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
+CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+CONFIG_ZONE_DMA32=y
+CONFIG_AUDIT_ARCH=y
+CONFIG_HAVE_INTEL_TXT=y
+CONFIG_X86_64_SMP=y
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_PGTABLE_LEVELS=5
+CONFIG_CC_HAS_SANE_STACKPROTECTOR=y
+
+#
+# Processor type and features
+#
+CONFIG_ZONE_DMA=y
+CONFIG_SMP=y
+CONFIG_X86_FEATURE_NAMES=y
+CONFIG_X86_MPPARSE=y
+# CONFIG_GOLDFISH is not set
+CONFIG_RETPOLINE=y
+# CONFIG_X86_CPU_RESCTRL is not set
+CONFIG_X86_EXTENDED_PLATFORM=y
+# CONFIG_X86_VSMP is not set
+# CONFIG_X86_GOLDFISH is not set
+# CONFIG_X86_INTEL_MID is not set
+# CONFIG_X86_INTEL_LPSS is not set
+# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
+CONFIG_IOSF_MBI=y
+# CONFIG_IOSF_MBI_DEBUG is not set
+CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+# CONFIG_HYPERVISOR_GUEST is not set
+# CONFIG_MK8 is not set
+# CONFIG_MPSC is not set
+# CONFIG_MCORE2 is not set
+# CONFIG_MATOM is not set
+CONFIG_GENERIC_CPU=y
+CONFIG_X86_INTERNODE_CACHE_SHIFT=6
+CONFIG_X86_L1_CACHE_SHIFT=6
+CONFIG_X86_TSC=y
+CONFIG_X86_CMPXCHG64=y
+CONFIG_X86_CMOV=y
+CONFIG_X86_MINIMUM_CPU_FAMILY=64
+CONFIG_X86_DEBUGCTLMSR=y
+CONFIG_IA32_FEAT_CTL=y
+CONFIG_X86_VMX_FEATURE_NAMES=y
+CONFIG_CPU_SUP_INTEL=y
+CONFIG_CPU_SUP_AMD=y
+CONFIG_CPU_SUP_HYGON=y
+CONFIG_CPU_SUP_CENTAUR=y
+CONFIG_CPU_SUP_ZHAOXIN=y
+CONFIG_HPET_TIMER=y
+CONFIG_HPET_EMULATE_RTC=y
+CONFIG_DMI=y
+# CONFIG_GART_IOMMU is not set
+# CONFIG_MAXSMP is not set
+CONFIG_NR_CPUS_RANGE_BEGIN=2
+CONFIG_NR_CPUS_RANGE_END=512
+CONFIG_NR_CPUS_DEFAULT=64
+CONFIG_NR_CPUS=64
+CONFIG_SCHED_SMT=y
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_MC_PRIO=y
+CONFIG_X86_LOCAL_APIC=y
+CONFIG_X86_IO_APIC=y
+CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
+CONFIG_X86_MCE=y
+# CONFIG_X86_MCELOG_LEGACY is not set
+CONFIG_X86_MCE_INTEL=y
+CONFIG_X86_MCE_AMD=y
+CONFIG_X86_MCE_THRESHOLD=y
+# CONFIG_X86_MCE_INJECT is not set
+
+#
+# Performance monitoring
+#
+CONFIG_PERF_EVENTS_INTEL_UNCORE=y
+CONFIG_PERF_EVENTS_INTEL_RAPL=y
+CONFIG_PERF_EVENTS_INTEL_CSTATE=y
+# CONFIG_PERF_EVENTS_AMD_POWER is not set
+# end of Performance monitoring
+
+CONFIG_X86_16BIT=y
+CONFIG_X86_ESPFIX64=y
+CONFIG_X86_VSYSCALL_EMULATION=y
+CONFIG_X86_IOPL_IOPERM=y
+# CONFIG_I8K is not set
+CONFIG_MICROCODE=y
+CONFIG_MICROCODE_INTEL=y
+CONFIG_MICROCODE_AMD=y
+# CONFIG_MICROCODE_OLD_INTERFACE is not set
+CONFIG_X86_MSR=y
+CONFIG_X86_CPUID=y
+CONFIG_X86_5LEVEL=y
+CONFIG_X86_DIRECT_GBPAGES=y
+# CONFIG_X86_CPA_STATISTICS is not set
+# CONFIG_AMD_MEM_ENCRYPT is not set
+CONFIG_NUMA=y
+CONFIG_AMD_NUMA=y
+CONFIG_X86_64_ACPI_NUMA=y
+# CONFIG_NUMA_EMU is not set
+CONFIG_NODES_SHIFT=6
+CONFIG_ARCH_SPARSEMEM_ENABLE=y
+CONFIG_ARCH_SPARSEMEM_DEFAULT=y
+CONFIG_ARCH_SELECT_MEMORY_MODEL=y
+CONFIG_ARCH_PROC_KCORE_TEXT=y
+CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
+# CONFIG_X86_PMEM_LEGACY is not set
+CONFIG_X86_CHECK_BIOS_CORRUPTION=y
+CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
+CONFIG_X86_RESERVE_LOW=64
+CONFIG_MTRR=y
+# CONFIG_MTRR_SANITIZER is not set
+CONFIG_X86_PAT=y
+CONFIG_ARCH_USES_PG_UNCACHED=y
+CONFIG_ARCH_RANDOM=y
+CONFIG_X86_SMAP=y
+CONFIG_X86_UMIP=y
+CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
+CONFIG_X86_INTEL_TSX_MODE_OFF=y
+# CONFIG_X86_INTEL_TSX_MODE_ON is not set
+# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
+# CONFIG_X86_SGX is not set
+CONFIG_EFI=y
+CONFIG_EFI_STUB=y
+CONFIG_EFI_MIXED=y
+# CONFIG_HZ_100 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+CONFIG_HZ_1000=y
+CONFIG_HZ=1000
+CONFIG_SCHED_HRTICK=y
+CONFIG_KEXEC=y
+# CONFIG_KEXEC_FILE is not set
+CONFIG_CRASH_DUMP=y
+# CONFIG_KEXEC_JUMP is not set
+CONFIG_PHYSICAL_START=0x1000000
+CONFIG_RELOCATABLE=y
+CONFIG_RANDOMIZE_BASE=y
+CONFIG_X86_NEED_RELOCS=y
+CONFIG_PHYSICAL_ALIGN=0x200000
+CONFIG_DYNAMIC_MEMORY_LAYOUT=y
+CONFIG_RANDOMIZE_MEMORY=y
+CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0x0
+CONFIG_HOTPLUG_CPU=y
+# CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
+# CONFIG_DEBUG_HOTPLUG_CPU0 is not set
+# CONFIG_COMPAT_VDSO is not set
+# CONFIG_LEGACY_VSYSCALL_EMULATE is not set
+CONFIG_LEGACY_VSYSCALL_XONLY=y
+# CONFIG_LEGACY_VSYSCALL_NONE is not set
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_MODIFY_LDT_SYSCALL=y
+CONFIG_HAVE_LIVEPATCH=y
+# end of Processor type and features
+
+CONFIG_ARCH_HAS_ADD_PAGES=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_USE_PERCPU_NUMA_NODE_ID=y
+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
+CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
+
+#
+# Power management and ACPI options
+#
+CONFIG_ARCH_HIBERNATION_HEADER=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_HIBERNATE_CALLBACKS=y
+CONFIG_HIBERNATION=y
+CONFIG_HIBERNATION_SNAPSHOT_DEV=y
+CONFIG_PM_STD_PARTITION=""
+CONFIG_PM_SLEEP=y
+CONFIG_PM_SLEEP_SMP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_ADVANCED_DEBUG is not set
+# CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_PM_SLEEP_DEBUG=y
+CONFIG_PM_TRACE=y
+CONFIG_PM_TRACE_RTC=y
+CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+# CONFIG_ENERGY_MODEL is not set
+CONFIG_ARCH_SUPPORTS_ACPI=y
+CONFIG_ACPI=y
+CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
+CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
+CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
+# CONFIG_ACPI_DEBUGGER is not set
+CONFIG_ACPI_SPCR_TABLE=y
+# CONFIG_ACPI_FPDT is not set
+CONFIG_ACPI_LPIT=y
+CONFIG_ACPI_SLEEP=y
+CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
+# CONFIG_ACPI_EC_DEBUGFS is not set
+CONFIG_ACPI_AC=y
+CONFIG_ACPI_BATTERY=y
+CONFIG_ACPI_BUTTON=y
+CONFIG_ACPI_VIDEO=y
+CONFIG_ACPI_FAN=y
+# CONFIG_ACPI_TAD is not set
+CONFIG_ACPI_DOCK=y
+CONFIG_ACPI_CPU_FREQ_PSS=y
+CONFIG_ACPI_PROCESSOR_CSTATE=y
+CONFIG_ACPI_PROCESSOR_IDLE=y
+CONFIG_ACPI_CPPC_LIB=y
+CONFIG_ACPI_PROCESSOR=y
+CONFIG_ACPI_HOTPLUG_CPU=y
+# CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set
+CONFIG_ACPI_THERMAL=y
+CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y
+CONFIG_ACPI_TABLE_UPGRADE=y
+# CONFIG_ACPI_DEBUG is not set
+# CONFIG_ACPI_PCI_SLOT is not set
+CONFIG_ACPI_CONTAINER=y
+CONFIG_ACPI_HOTPLUG_IOAPIC=y
+# CONFIG_ACPI_SBS is not set
+# CONFIG_ACPI_HED is not set
+# CONFIG_ACPI_CUSTOM_METHOD is not set
+CONFIG_ACPI_BGRT=y
+# CONFIG_ACPI_NFIT is not set
+CONFIG_ACPI_NUMA=y
+# CONFIG_ACPI_HMAT is not set
+CONFIG_HAVE_ACPI_APEI=y
+CONFIG_HAVE_ACPI_APEI_NMI=y
+# CONFIG_ACPI_APEI is not set
+# CONFIG_ACPI_DPTF is not set
+# CONFIG_ACPI_CONFIGFS is not set
+# CONFIG_PMIC_OPREGION is not set
+CONFIG_X86_PM_TIMER=y
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_ATTR_SET=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+# CONFIG_CPU_FREQ_STAT is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
+
+#
+# CPU frequency scaling drivers
+#
+CONFIG_X86_INTEL_PSTATE=y
+# CONFIG_X86_PCC_CPUFREQ is not set
+CONFIG_X86_ACPI_CPUFREQ=y
+CONFIG_X86_ACPI_CPUFREQ_CPB=y
+# CONFIG_X86_POWERNOW_K8 is not set
+# CONFIG_X86_AMD_FREQ_SENSITIVITY is not set
+# CONFIG_X86_SPEEDSTEP_CENTRINO is not set
+# CONFIG_X86_P4_CLOCKMOD is not set
+
+#
+# shared options
+#
+# end of CPU Frequency scaling
+
+#
+# CPU Idle
+#
+CONFIG_CPU_IDLE=y
+# CONFIG_CPU_IDLE_GOV_LADDER is not set
+CONFIG_CPU_IDLE_GOV_MENU=y
+# CONFIG_CPU_IDLE_GOV_TEO is not set
+# end of CPU Idle
+
+# CONFIG_INTEL_IDLE is not set
+# end of Power management and ACPI options
+
+#
+# Bus options (PCI etc.)
+#
+CONFIG_PCI_DIRECT=y
+CONFIG_PCI_MMCONFIG=y
+CONFIG_MMCONF_FAM10H=y
+CONFIG_ISA_DMA_API=y
+CONFIG_AMD_NB=y
+# CONFIG_X86_SYSFB is not set
+# end of Bus options (PCI etc.)
+
+#
+# Binary Emulations
+#
+CONFIG_IA32_EMULATION=y
+# CONFIG_X86_X32 is not set
+CONFIG_COMPAT_32=y
+CONFIG_COMPAT=y
+CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
+CONFIG_SYSVIPC_COMPAT=y
+# end of Binary Emulations
+
+#
+# Firmware Drivers
+#
+# CONFIG_EDD is not set
+CONFIG_FIRMWARE_MEMMAP=y
+CONFIG_DMIID=y
+# CONFIG_DMI_SYSFS is not set
+CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
+# CONFIG_FW_CFG_SYSFS is not set
+# CONFIG_GOOGLE_FIRMWARE is not set
+
+#
+# EFI (Extensible Firmware Interface) Support
+#
+CONFIG_EFI_VARS=y
+CONFIG_EFI_ESRT=y
+CONFIG_EFI_RUNTIME_MAP=y
+# CONFIG_EFI_FAKE_MEMMAP is not set
+CONFIG_EFI_RUNTIME_WRAPPERS=y
+CONFIG_EFI_GENERIC_STUB_INITRD_CMDLINE_LOADER=y
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+# CONFIG_EFI_CAPSULE_LOADER is not set
+# CONFIG_EFI_TEST is not set
+# CONFIG_APPLE_PROPERTIES is not set
+# CONFIG_RESET_ATTACK_MITIGATION is not set
+# CONFIG_EFI_RCI2_TABLE is not set
+# CONFIG_EFI_DISABLE_PCI_DMA is not set
+# end of EFI (Extensible Firmware Interface) Support
+
+CONFIG_EFI_EARLYCON=y
+CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y
+
+#
+# Tegra firmware driver
+#
+# end of Tegra firmware driver
+# end of Firmware Drivers
+
+CONFIG_HAVE_KVM=y
+CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_IRQFD=y
+CONFIG_HAVE_KVM_IRQ_ROUTING=y
+CONFIG_HAVE_KVM_EVENTFD=y
+CONFIG_KVM_MMIO=y
+CONFIG_KVM_ASYNC_PF=y
+CONFIG_HAVE_KVM_MSI=y
+CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
+CONFIG_KVM_VFIO=y
+CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
+CONFIG_KVM_COMPAT=y
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
+CONFIG_HAVE_KVM_NO_POLL=y
+CONFIG_KVM_XFER_TO_GUEST_WORK=y
+CONFIG_VIRTUALIZATION=y
+CONFIG_KVM=y
+CONFIG_KVM_INTEL=y
+CONFIG_KVM_AMD=y
+# CONFIG_KVM_XEN is not set
+# CONFIG_KVM_MMU_AUDIT is not set
+CONFIG_AS_AVX512=y
+CONFIG_AS_SHA1_NI=y
+CONFIG_AS_SHA256_NI=y
+CONFIG_AS_TPAUSE=y
+
+#
+# General architecture-dependent options
+#
+CONFIG_CRASH_CORE=y
+CONFIG_KEXEC_CORE=y
+CONFIG_HOTPLUG_SMT=y
+CONFIG_GENERIC_ENTRY=y
+CONFIG_KPROBES=y
+CONFIG_JUMP_LABEL=y
+# CONFIG_STATIC_KEYS_SELFTEST is not set
+# CONFIG_STATIC_CALL_SELFTEST is not set
+CONFIG_OPTPROBES=y
+CONFIG_UPROBES=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_KRETPROBES=y
+CONFIG_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_KPROBES_ON_FTRACE=y
+CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
+CONFIG_HAVE_NMI=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
+CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
+CONFIG_HAVE_ASM_MODVERSIONS=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_RSEQ=y
+CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
+CONFIG_HAVE_USER_RETURN_NOTIFIER=y
+CONFIG_HAVE_PERF_EVENTS_NMI=y
+CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y
+CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
+CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
+CONFIG_HAVE_CMPXCHG_LOCAL=y
+CONFIG_HAVE_CMPXCHG_DOUBLE=y
+CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
+CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y
+CONFIG_HAVE_ARCH_SECCOMP=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_SECCOMP=y
+CONFIG_SECCOMP_FILTER=y
+# CONFIG_SECCOMP_CACHE_DEBUG is not set
+CONFIG_HAVE_ARCH_STACKLEAK=y
+CONFIG_HAVE_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
+CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y
+CONFIG_LTO_NONE=y
+CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOVE_PUD=y
+CONFIG_HAVE_MOVE_PMD=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y
+CONFIG_HAVE_ARCH_HUGE_VMAP=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
+CONFIG_HAVE_ARCH_SOFT_DIRTY=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
+CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=28
+CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y
+CONFIG_HAVE_STACK_VALIDATION=y
+CONFIG_HAVE_RELIABLE_STACKTRACE=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_COMPAT_OLD_SIGACTION=y
+CONFIG_COMPAT_32BIT_TIME=y
+CONFIG_HAVE_ARCH_VMAP_STACK=y
+CONFIG_VMAP_STACK=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
+CONFIG_ARCH_USE_MEMREMAP_PROT=y
+# CONFIG_LOCK_EVENT_COUNTS is not set
+CONFIG_ARCH_HAS_MEM_ENCRYPT=y
+CONFIG_HAVE_STATIC_CALL=y
+CONFIG_HAVE_STATIC_CALL_INLINE=y
+CONFIG_HAVE_PREEMPT_DYNAMIC=y
+CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_ARCH_HAS_ELFCORE_COMPAT=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+# end of GCOV-based kernel profiling
+
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set
+# CONFIG_GCC_PLUGIN_RANDSTRUCT is not set
+# end of General architecture-dependent options
+
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
+CONFIG_BLOCK=y
+CONFIG_BLK_SCSI_REQUEST=y
+CONFIG_BLK_DEV_BSG=y
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+# CONFIG_BLK_DEV_ZONED is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+# CONFIG_BLK_WBT is not set
+CONFIG_BLK_DEBUG_FS=y
+# CONFIG_BLK_SED_OPAL is not set
+# CONFIG_BLK_INLINE_ENCRYPTION is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+# end of Partition Types
+
+CONFIG_BLOCK_COMPAT=y
+CONFIG_BLK_MQ_PCI=y
+CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_BLK_PM=y
+
+#
+# IO Schedulers
+#
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+# CONFIG_IOSCHED_BFQ is not set
+# end of IO Schedulers
+
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_ASN1=y
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_MUTEX_SPIN_ON_OWNER=y
+CONFIG_RWSEM_SPIN_ON_OWNER=y
+CONFIG_LOCK_SPIN_ON_OWNER=y
+CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
+CONFIG_QUEUED_SPINLOCKS=y
+CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
+CONFIG_QUEUED_RWLOCKS=y
+CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y
+CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y
+CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
+CONFIG_FREEZER=y
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_COMPAT_BINFMT_ELF=y
+CONFIG_ELFCORE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+CONFIG_BINFMT_MISC=y
+CONFIG_COREDUMP=y
+# end of Executable file formats
+
+#
+# Memory Management options
+#
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_SPARSEMEM_MANUAL=y
+CONFIG_SPARSEMEM=y
+CONFIG_NEED_MULTIPLE_NODES=y
+CONFIG_SPARSEMEM_EXTREME=y
+CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
+CONFIG_SPARSEMEM_VMEMMAP=y
+CONFIG_HAVE_FAST_GUP=y
+# CONFIG_MEMORY_HOTPLUG is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MEMORY_BALLOON=y
+CONFIG_BALLOON_COMPACTION=y
+CONFIG_COMPACTION=y
+CONFIG_PAGE_REPORTING=y
+CONFIG_MIGRATION=y
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_MMU_NOTIFIER=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y
+# CONFIG_MEMORY_FAILURE is not set
+# CONFIG_TRANSPARENT_HUGEPAGE is not set
+CONFIG_ARCH_WANTS_THP_SWAP=y
+# CONFIG_CLEANCACHE is not set
+# CONFIG_FRONTSWAP is not set
+# CONFIG_CMA is not set
+# CONFIG_ZPOOL is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_ARCH_HAS_PTE_DEVMAP=y
+CONFIG_VMAP_PFN=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_ARCH_HAS_PKEYS=y
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_GUP_TEST is not set
+CONFIG_ARCH_HAS_PTE_SPECIAL=y
+# end of Memory Management options
+
+CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+CONFIG_SKB_EXTENSIONS=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_DIAG is not set
+CONFIG_UNIX=y
+CONFIG_UNIX_SCM=y
+# CONFIG_UNIX_DIAG is not set
+# CONFIG_TLS is not set
+CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_USER_COMPAT is not set
+# CONFIG_XFRM_INTERFACE is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_AH=y
+CONFIG_XFRM_ESP=y
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+# CONFIG_IP_FIB_TRIE_STATS is not set
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+CONFIG_NET_IP_TUNNEL=y
+CONFIG_IP_MROUTE_COMMON=y
+CONFIG_IP_MROUTE=y
+# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+CONFIG_IP_PIMSM_V1=y
+CONFIG_IP_PIMSM_V2=y
+CONFIG_SYN_COOKIES=y
+# CONFIG_NET_IPVTI is not set
+# CONFIG_NET_FOU is not set
+# CONFIG_NET_FOU_IP_TUNNELS is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+CONFIG_INET_TUNNEL=y
+# CONFIG_INET_DIAG is not set
+CONFIG_TCP_CONG_ADVANCED=y
+# CONFIG_TCP_CONG_BIC is not set
+CONFIG_TCP_CONG_CUBIC=y
+# CONFIG_TCP_CONG_WESTWOOD is not set
+# CONFIG_TCP_CONG_HTCP is not set
+# CONFIG_TCP_CONG_HSTCP is not set
+# CONFIG_TCP_CONG_HYBLA is not set
+# CONFIG_TCP_CONG_VEGAS is not set
+# CONFIG_TCP_CONG_NV is not set
+# CONFIG_TCP_CONG_SCALABLE is not set
+# CONFIG_TCP_CONG_LP is not set
+# CONFIG_TCP_CONG_VENO is not set
+# CONFIG_TCP_CONG_YEAH is not set
+# CONFIG_TCP_CONG_ILLINOIS is not set
+# CONFIG_TCP_CONG_DCTCP is not set
+# CONFIG_TCP_CONG_CDG is not set
+# CONFIG_TCP_CONG_BBR is not set
+CONFIG_DEFAULT_CUBIC=y
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
+CONFIG_IPV6=y
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=y
+CONFIG_INET6_ESP=y
+# CONFIG_INET6_ESP_OFFLOAD is not set
+# CONFIG_INET6_ESPINTCP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_IPV6_ILA is not set
+# CONFIG_IPV6_VTI is not set
+CONFIG_IPV6_SIT=y
+# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_IPV6_SEG6_LWTUNNEL is not set
+# CONFIG_IPV6_SEG6_HMAC is not set
+# CONFIG_IPV6_RPL_LWTUNNEL is not set
+CONFIG_NETLABEL=y
+# CONFIG_MPTCP is not set
+CONFIG_NETWORK_SECMARK=y
+CONFIG_NET_PTP_CLASSIFY=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_ADVANCED is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_INGRESS=y
+CONFIG_NETFILTER_NETLINK=y
+CONFIG_NETFILTER_NETLINK_LOG=y
+CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=m
+# CONFIG_NF_LOG_NETDEV is not set
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+# CONFIG_NF_CONNTRACK_LABELS is not set
+CONFIG_NF_CONNTRACK_FTP=y
+CONFIG_NF_CONNTRACK_IRC=y
+# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
+CONFIG_NF_CONNTRACK_SIP=y
+CONFIG_NF_CT_NETLINK=y
+# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
+CONFIG_NF_NAT=y
+CONFIG_NF_NAT_FTP=y
+CONFIG_NF_NAT_IRC=y
+CONFIG_NF_NAT_SIP=y
+CONFIG_NF_NAT_MASQUERADE=y
+# CONFIG_NF_TABLES is not set
+CONFIG_NETFILTER_XTABLES=y
+
+#
+# Xtables combined modules
+#
+CONFIG_NETFILTER_XT_MARK=m
+
+#
+# Xtables targets
+#
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_NAT=m
+# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set
+CONFIG_NETFILTER_XT_TARGET_NFLOG=y
+# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set
+CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=y
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
+
+#
+# Xtables matches
+#
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
+CONFIG_NETFILTER_XT_MATCH_POLICY=y
+CONFIG_NETFILTER_XT_MATCH_STATE=y
+# end of Core Netfilter Configuration
+
+# CONFIG_IP_SET is not set
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=y
+# CONFIG_NF_SOCKET_IPV4 is not set
+# CONFIG_NF_TPROXY_IPV4 is not set
+# CONFIG_NF_DUP_IPV4 is not set
+CONFIG_NF_LOG_ARP=m
+CONFIG_NF_LOG_IPV4=m
+CONFIG_NF_REJECT_IPV4=y
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_FILTER=y
+CONFIG_IP_NF_TARGET_REJECT=y
+CONFIG_IP_NF_NAT=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_MANGLE=y
+# CONFIG_IP_NF_RAW is not set
+# end of IP: Netfilter Configuration
+
+#
+# IPv6: Netfilter Configuration
+#
+# CONFIG_NF_SOCKET_IPV6 is not set
+# CONFIG_NF_TPROXY_IPV6 is not set
+# CONFIG_NF_DUP_IPV6 is not set
+CONFIG_NF_REJECT_IPV6=y
+CONFIG_NF_LOG_IPV6=m
+CONFIG_IP6_NF_IPTABLES=y
+CONFIG_IP6_NF_MATCH_IPV6HEADER=y
+CONFIG_IP6_NF_FILTER=y
+CONFIG_IP6_NF_TARGET_REJECT=y
+CONFIG_IP6_NF_MANGLE=y
+# CONFIG_IP6_NF_RAW is not set
+# end of IPv6: Netfilter Configuration
+
+CONFIG_NF_DEFRAG_IPV6=y
+# CONFIG_NF_CONNTRACK_BRIDGE is not set
+# CONFIG_BPFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_L2TP is not set
+# CONFIG_BRIDGE is not set
+CONFIG_HAVE_NET_DSA=y
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_PHONET is not set
+# CONFIG_6LOWPAN is not set
+# CONFIG_IEEE802154 is not set
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+# CONFIG_NET_SCH_CBQ is not set
+# CONFIG_NET_SCH_HTB is not set
+# CONFIG_NET_SCH_HFSC is not set
+# CONFIG_NET_SCH_PRIO is not set
+# CONFIG_NET_SCH_MULTIQ is not set
+# CONFIG_NET_SCH_RED is not set
+# CONFIG_NET_SCH_SFB is not set
+# CONFIG_NET_SCH_SFQ is not set
+# CONFIG_NET_SCH_TEQL is not set
+# CONFIG_NET_SCH_TBF is not set
+# CONFIG_NET_SCH_CBS is not set
+# CONFIG_NET_SCH_ETF is not set
+# CONFIG_NET_SCH_TAPRIO is not set
+# CONFIG_NET_SCH_GRED is not set
+# CONFIG_NET_SCH_DSMARK is not set
+# CONFIG_NET_SCH_NETEM is not set
+# CONFIG_NET_SCH_DRR is not set
+# CONFIG_NET_SCH_MQPRIO is not set
+# CONFIG_NET_SCH_SKBPRIO is not set
+# CONFIG_NET_SCH_CHOKE is not set
+# CONFIG_NET_SCH_QFQ is not set
+# CONFIG_NET_SCH_CODEL is not set
+# CONFIG_NET_SCH_FQ_CODEL is not set
+# CONFIG_NET_SCH_CAKE is not set
+# CONFIG_NET_SCH_FQ is not set
+# CONFIG_NET_SCH_HHF is not set
+# CONFIG_NET_SCH_PIE is not set
+# CONFIG_NET_SCH_INGRESS is not set
+# CONFIG_NET_SCH_PLUG is not set
+# CONFIG_NET_SCH_ETS is not set
+# CONFIG_NET_SCH_DEFAULT is not set
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+# CONFIG_NET_CLS_BASIC is not set
+# CONFIG_NET_CLS_TCINDEX is not set
+# CONFIG_NET_CLS_ROUTE4 is not set
+# CONFIG_NET_CLS_FW is not set
+# CONFIG_NET_CLS_U32 is not set
+# CONFIG_NET_CLS_RSVP is not set
+# CONFIG_NET_CLS_RSVP6 is not set
+# CONFIG_NET_CLS_FLOW is not set
+# CONFIG_NET_CLS_CGROUP is not set
+# CONFIG_NET_CLS_BPF is not set
+# CONFIG_NET_CLS_FLOWER is not set
+# CONFIG_NET_CLS_MATCHALL is not set
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+# CONFIG_NET_EMATCH_CMP is not set
+# CONFIG_NET_EMATCH_NBYTE is not set
+# CONFIG_NET_EMATCH_U32 is not set
+# CONFIG_NET_EMATCH_META is not set
+# CONFIG_NET_EMATCH_TEXT is not set
+# CONFIG_NET_EMATCH_IPT is not set
+CONFIG_NET_CLS_ACT=y
+# CONFIG_NET_ACT_POLICE is not set
+# CONFIG_NET_ACT_GACT is not set
+# CONFIG_NET_ACT_MIRRED is not set
+# CONFIG_NET_ACT_SAMPLE is not set
+# CONFIG_NET_ACT_IPT is not set
+# CONFIG_NET_ACT_NAT is not set
+# CONFIG_NET_ACT_PEDIT is not set
+# CONFIG_NET_ACT_SIMP is not set
+# CONFIG_NET_ACT_SKBEDIT is not set
+# CONFIG_NET_ACT_CSUM is not set
+# CONFIG_NET_ACT_MPLS is not set
+# CONFIG_NET_ACT_VLAN is not set
+# CONFIG_NET_ACT_BPF is not set
+# CONFIG_NET_ACT_SKBMOD is not set
+# CONFIG_NET_ACT_IFE is not set
+# CONFIG_NET_ACT_TUNNEL_KEY is not set
+# CONFIG_NET_ACT_GATE is not set
+# CONFIG_NET_TC_SKB_EXT is not set
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_DCB is not set
+CONFIG_DNS_RESOLVER=y
+# CONFIG_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_MPLS is not set
+# CONFIG_NET_NSH is not set
+# CONFIG_HSR is not set
+# CONFIG_NET_SWITCHDEV is not set
+# CONFIG_NET_L3_MASTER_DEV is not set
+# CONFIG_QRTR is not set
+# CONFIG_NET_NCSI is not set
+CONFIG_RPS=y
+CONFIG_RFS_ACCEL=y
+CONFIG_SOCK_RX_QUEUE_MAPPING=y
+CONFIG_XPS=y
+# CONFIG_CGROUP_NET_PRIO is not set
+# CONFIG_CGROUP_NET_CLASSID is not set
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+# CONFIG_BPF_JIT is not set
+CONFIG_NET_FLOW_LIMIT=y
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_DROP_MONITOR is not set
+# end of Network testing
+# end of Networking options
+
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=y
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
+CONFIG_CFG80211_DEFAULT_PS=y
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
+# CONFIG_CFG80211_WEXT is not set
+CONFIG_MAC80211=y
+CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
+# CONFIG_MAC80211_MESH is not set
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
+CONFIG_RFKILL=y
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+# CONFIG_PSAMPLE is not set
+# CONFIG_NET_IFE is not set
+# CONFIG_LWTUNNEL is not set
+CONFIG_DST_CACHE=y
+CONFIG_GRO_CELLS=y
+CONFIG_FAILOVER=m
+CONFIG_ETHTOOL_NETLINK=y
+CONFIG_HAVE_EBPF_JIT=y
+
+#
+# Device Drivers
+#
+CONFIG_HAVE_EISA=y
+# CONFIG_EISA is not set
+CONFIG_HAVE_PCI=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCIEPORTBUS=y
+# CONFIG_HOTPLUG_PCI_PCIE is not set
+# CONFIG_PCIEAER is not set
+CONFIG_PCIEASPM=y
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+CONFIG_PCIE_PME=y
+# CONFIG_PCIE_PTM is not set
+CONFIG_PCI_MSI=y
+CONFIG_PCI_MSI_IRQ_DOMAIN=y
+CONFIG_PCI_QUIRKS=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_STUB is not set
+CONFIG_PCI_ATS=y
+CONFIG_PCI_LOCKLESS_CONFIG=y
+# CONFIG_PCI_IOV is not set
+CONFIG_PCI_PRI=y
+CONFIG_PCI_PASID=y
+CONFIG_PCI_LABEL=y
+CONFIG_HOTPLUG_PCI=y
+# CONFIG_HOTPLUG_PCI_ACPI is not set
+# CONFIG_HOTPLUG_PCI_CPCI is not set
+# CONFIG_HOTPLUG_PCI_SHPC is not set
+
+#
+# PCI controller drivers
+#
+# CONFIG_VMD is not set
+
+#
+# DesignWare PCI Core Support
+#
+# CONFIG_PCIE_DW_PLAT_HOST is not set
+# CONFIG_PCI_MESON is not set
+# end of DesignWare PCI Core Support
+
+#
+# Mobiveil PCIe Core Support
+#
+# end of Mobiveil PCIe Core Support
+
+#
+# Cadence PCIe controllers support
+#
+# end of Cadence PCIe controllers support
+# end of PCI controller drivers
+
+#
+# PCI Endpoint
+#
+# CONFIG_PCI_ENDPOINT is not set
+# end of PCI Endpoint
+
+#
+# PCI switch controller drivers
+#
+# CONFIG_PCI_SW_SWITCHTEC is not set
+# end of PCI switch controller drivers
+
+# CONFIG_CXL_BUS is not set
+CONFIG_PCCARD=y
+CONFIG_PCMCIA=y
+CONFIG_PCMCIA_LOAD_CIS=y
+CONFIG_CARDBUS=y
+
+#
+# PC-card bridges
+#
+CONFIG_YENTA=y
+CONFIG_YENTA_O2=y
+CONFIG_YENTA_RICOH=y
+CONFIG_YENTA_TI=y
+CONFIG_YENTA_ENE_TUNE=y
+CONFIG_YENTA_TOSHIBA=y
+# CONFIG_PD6729 is not set
+# CONFIG_I82092 is not set
+CONFIG_PCCARD_NONSTATIC=y
+# CONFIG_RAPIDIO is not set
+
+#
+# Generic Driver Options
+#
+# CONFIG_UEVENT_HELPER is not set
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+
+#
+# Firmware loader
+#
+CONFIG_FW_LOADER=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_FW_LOADER_USER_HELPER is not set
+# CONFIG_FW_LOADER_COMPRESS is not set
+CONFIG_FW_CACHE=y
+# end of Firmware loader
+
+CONFIG_ALLOW_DEV_COREDUMP=y
+# CONFIG_DEBUG_DRIVER is not set
+CONFIG_DEBUG_DEVRES=y
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_CPU_VULNERABILITIES=y
+CONFIG_REGMAP=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_DMA_FENCE_TRACE is not set
+# end of Generic Driver Options
+
+#
+# Bus devices
+#
+# CONFIG_MHI_BUS is not set
+# end of Bus devices
+
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+# CONFIG_GNSS is not set
+# CONFIG_MTD is not set
+# CONFIG_OF is not set
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+# CONFIG_PARPORT is not set
+CONFIG_PNP=y
+CONFIG_PNP_DEBUG_MESSAGES=y
+
+#
+# Protocols
+#
+CONFIG_PNPACPI=y
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
+# CONFIG_BLK_DEV_FD is not set
+CONFIG_CDROM=y
+# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
+# CONFIG_BLK_DEV_UMEM is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+CONFIG_BLK_DEV_NBD=y
+# CONFIG_BLK_DEV_SX8 is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_VIRTIO_BLK=y
+# CONFIG_BLK_DEV_RBD is not set
+# CONFIG_BLK_DEV_RSXX is not set
+
+#
+# NVME Support
+#
+# CONFIG_BLK_DEV_NVME is not set
+# CONFIG_NVME_FC is not set
+# end of NVME Support
+
+#
+# Misc devices
+#
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_IBM_ASM is not set
+# CONFIG_PHANTOM is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_HP_ILO is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_SRAM is not set
+# CONFIG_PCI_ENDPOINT_TEST is not set
+# CONFIG_XILINX_SDFEC is not set
+# CONFIG_PVPANIC is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT24 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_EEPROM_IDT_89HPESX is not set
+# CONFIG_EEPROM_EE1004 is not set
+# end of EEPROM support
+
+# CONFIG_CB710_CORE is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# end of Texas Instruments shared transport line discipline
+
+# CONFIG_SENSORS_LIS3_I2C is not set
+# CONFIG_ALTERA_STAPL is not set
+# CONFIG_INTEL_MEI is not set
+# CONFIG_INTEL_MEI_ME is not set
+# CONFIG_INTEL_MEI_TXE is not set
+# CONFIG_INTEL_MEI_HDCP is not set
+# CONFIG_VMWARE_VMCI is not set
+# CONFIG_GENWQE is not set
+# CONFIG_ECHO is not set
+# CONFIG_BCM_VK is not set
+# CONFIG_MISC_ALCOR_PCI is not set
+# CONFIG_MISC_RTSX_PCI is not set
+# CONFIG_MISC_RTSX_USB is not set
+# CONFIG_HABANA_AI is not set
+# CONFIG_UACCE is not set
+# end of Misc devices
+
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+CONFIG_BLK_DEV_SR=y
+CONFIG_CHR_DEV_SG=y
+# CONFIG_CHR_DEV_SCH is not set
+CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=y
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+# end of SCSI Transports
+
+# CONFIG_SCSI_LOWLEVEL is not set
+# CONFIG_SCSI_DH is not set
+# end of SCSI device support
+
+CONFIG_ATA=y
+CONFIG_SATA_HOST=y
+CONFIG_PATA_TIMINGS=y
+CONFIG_ATA_VERBOSE_ERROR=y
+CONFIG_ATA_FORCE=y
+CONFIG_ATA_ACPI=y
+# CONFIG_SATA_ZPODD is not set
+CONFIG_SATA_PMP=y
+
+#
+# Controllers with non-SFF native interface
+#
+CONFIG_SATA_AHCI=y
+CONFIG_SATA_MOBILE_LPM_POLICY=0
+# CONFIG_SATA_AHCI_PLATFORM is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_SATA_ACARD_AHCI is not set
+# CONFIG_SATA_SIL24 is not set
+CONFIG_ATA_SFF=y
+
+#
+# SFF controllers with custom DMA interface
+#
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_SX4 is not set
+CONFIG_ATA_BMDMA=y
+
+#
+# SATA SFF controllers with BMDMA
+#
+CONFIG_ATA_PIIX=y
+# CONFIG_SATA_DWC is not set
+# CONFIG_SATA_MV is not set
+# CONFIG_SATA_NV is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_SVW is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+
+#
+# PATA SFF controllers with BMDMA
+#
+# CONFIG_PATA_ALI is not set
+CONFIG_PATA_AMD=y
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_ATP867X is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NINJA32 is not set
+# CONFIG_PATA_NS87415 is not set
+CONFIG_PATA_OLDPIIX=y
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RDC is not set
+CONFIG_PATA_SCH=y
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_TOSHIBA is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+
+#
+# PIO-only SFF controllers
+#
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_PCMCIA is not set
+# CONFIG_PATA_RZ1000 is not set
+
+#
+# Generic fallback / legacy drivers
+#
+# CONFIG_PATA_ACPI is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_LEGACY is not set
+CONFIG_MD=y
+CONFIG_BLK_DEV_MD=y
+CONFIG_MD_AUTODETECT=y
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID10 is not set
+# CONFIG_MD_RAID456 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_MD_FAULTY is not set
+# CONFIG_BCACHE is not set
+CONFIG_BLK_DEV_DM_BUILTIN=y
+CONFIG_BLK_DEV_DM=y
+# CONFIG_DM_DEBUG is not set
+# CONFIG_DM_UNSTRIPED is not set
+# CONFIG_DM_CRYPT is not set
+# CONFIG_DM_SNAPSHOT is not set
+# CONFIG_DM_THIN_PROVISIONING is not set
+# CONFIG_DM_CACHE is not set
+# CONFIG_DM_WRITECACHE is not set
+# CONFIG_DM_EBS is not set
+# CONFIG_DM_ERA is not set
+# CONFIG_DM_CLONE is not set
+CONFIG_DM_MIRROR=y
+# CONFIG_DM_LOG_USERSPACE is not set
+# CONFIG_DM_RAID is not set
+CONFIG_DM_ZERO=y
+# CONFIG_DM_MULTIPATH is not set
+# CONFIG_DM_DELAY is not set
+# CONFIG_DM_DUST is not set
+# CONFIG_DM_INIT is not set
+# CONFIG_DM_UEVENT is not set
+# CONFIG_DM_FLAKEY is not set
+# CONFIG_DM_VERITY is not set
+# CONFIG_DM_SWITCH is not set
+# CONFIG_DM_LOG_WRITES is not set
+# CONFIG_DM_INTEGRITY is not set
+# CONFIG_TARGET_CORE is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_FIREWIRE_NOSY is not set
+# end of IEEE 1394 (FireWire) support
+
+CONFIG_MACINTOSH_DRIVERS=y
+CONFIG_MAC_EMUMOUSEBTN=y
+CONFIG_NETDEVICES=y
+CONFIG_MII=y
+CONFIG_NET_CORE=y
+# CONFIG_BONDING is not set
+# CONFIG_DUMMY is not set
+# CONFIG_WIREGUARD is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_FC is not set
+# CONFIG_IFB is not set
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_IPVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_GENEVE is not set
+# CONFIG_BAREUDP is not set
+# CONFIG_GTP is not set
+# CONFIG_MACSEC is not set
+CONFIG_NETCONSOLE=y
+CONFIG_NETPOLL=y
+CONFIG_NET_POLL_CONTROLLER=y
+# CONFIG_TUN is not set
+# CONFIG_TUN_VNET_CROSS_LE is not set
+# CONFIG_VETH is not set
+CONFIG_VIRTIO_NET=m
+# CONFIG_NLMON is not set
+# CONFIG_ARCNET is not set
+
+#
+# Distributed Switch Architecture drivers
+#
+# CONFIG_NET_DSA_MV88E6XXX_PTP is not set
+# end of Distributed Switch Architecture drivers
+
+CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_3COM=y
+# CONFIG_PCMCIA_3C574 is not set
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_VORTEX is not set
+# CONFIG_TYPHOON is not set
+CONFIG_NET_VENDOR_ADAPTEC=y
+# CONFIG_ADAPTEC_STARFIRE is not set
+CONFIG_NET_VENDOR_AGERE=y
+# CONFIG_ET131X is not set
+CONFIG_NET_VENDOR_ALACRITECH=y
+# CONFIG_SLICOSS is not set
+CONFIG_NET_VENDOR_ALTEON=y
+# CONFIG_ACENIC is not set
+# CONFIG_ALTERA_TSE is not set
+CONFIG_NET_VENDOR_AMAZON=y
+# CONFIG_ENA_ETHERNET is not set
+CONFIG_NET_VENDOR_AMD=y
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_PCNET32 is not set
+# CONFIG_PCMCIA_NMCLAN is not set
+# CONFIG_AMD_XGBE is not set
+CONFIG_NET_VENDOR_AQUANTIA=y
+# CONFIG_AQTION is not set
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_NET_VENDOR_ATHEROS=y
+# CONFIG_ATL2 is not set
+# CONFIG_ATL1 is not set
+# CONFIG_ATL1E is not set
+# CONFIG_ATL1C is not set
+# CONFIG_ALX is not set
+CONFIG_NET_VENDOR_BROADCOM=y
+# CONFIG_B44 is not set
+# CONFIG_BCMGENET is not set
+# CONFIG_BNX2 is not set
+# CONFIG_CNIC is not set
+CONFIG_TIGON3=y
+CONFIG_TIGON3_HWMON=y
+# CONFIG_BNX2X is not set
+# CONFIG_SYSTEMPORT is not set
+# CONFIG_BNXT is not set
+CONFIG_NET_VENDOR_BROCADE=y
+# CONFIG_BNA is not set
+CONFIG_NET_VENDOR_CADENCE=y
+# CONFIG_MACB is not set
+CONFIG_NET_VENDOR_CAVIUM=y
+# CONFIG_THUNDER_NIC_PF is not set
+# CONFIG_THUNDER_NIC_VF is not set
+# CONFIG_THUNDER_NIC_BGX is not set
+# CONFIG_THUNDER_NIC_RGX is not set
+# CONFIG_CAVIUM_PTP is not set
+# CONFIG_LIQUIDIO is not set
+# CONFIG_LIQUIDIO_VF is not set
+CONFIG_NET_VENDOR_CHELSIO=y
+# CONFIG_CHELSIO_T1 is not set
+# CONFIG_CHELSIO_T3 is not set
+# CONFIG_CHELSIO_T4 is not set
+# CONFIG_CHELSIO_T4VF is not set
+CONFIG_NET_VENDOR_CISCO=y
+# CONFIG_ENIC is not set
+CONFIG_NET_VENDOR_CORTINA=y
+# CONFIG_CX_ECAT is not set
+# CONFIG_DNET is not set
+CONFIG_NET_VENDOR_DEC=y
+CONFIG_NET_TULIP=y
+# CONFIG_DE2104X is not set
+# CONFIG_TULIP is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_ULI526X is not set
+# CONFIG_PCMCIA_XIRCOM is not set
+CONFIG_NET_VENDOR_DLINK=y
+# CONFIG_DL2K is not set
+# CONFIG_SUNDANCE is not set
+CONFIG_NET_VENDOR_EMULEX=y
+# CONFIG_BE2NET is not set
+CONFIG_NET_VENDOR_EZCHIP=y
+CONFIG_NET_VENDOR_FUJITSU=y
+# CONFIG_PCMCIA_FMVJ18X is not set
+CONFIG_NET_VENDOR_GOOGLE=y
+# CONFIG_GVE is not set
+CONFIG_NET_VENDOR_HUAWEI=y
+# CONFIG_HINIC is not set
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_E100=y
+CONFIG_E1000=y
+CONFIG_E1000E=y
+CONFIG_E1000E_HWTS=y
+# CONFIG_IGB is not set
+# CONFIG_IGBVF is not set
+# CONFIG_IXGB is not set
+# CONFIG_IXGBE is not set
+# CONFIG_IXGBEVF is not set
+# CONFIG_I40E is not set
+# CONFIG_I40EVF is not set
+# CONFIG_ICE is not set
+# CONFIG_FM10K is not set
+# CONFIG_IGC is not set
+# CONFIG_JME is not set
+CONFIG_NET_VENDOR_MARVELL=y
+# CONFIG_MVMDIO is not set
+# CONFIG_SKGE is not set
+CONFIG_SKY2=y
+# CONFIG_SKY2_DEBUG is not set
+CONFIG_NET_VENDOR_MELLANOX=y
+# CONFIG_MLX4_EN is not set
+# CONFIG_MLX5_CORE is not set
+# CONFIG_MLXSW_CORE is not set
+# CONFIG_MLXFW is not set
+CONFIG_NET_VENDOR_MICREL=y
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851_MLL is not set
+# CONFIG_KSZ884X_PCI is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_LAN743X is not set
+CONFIG_NET_VENDOR_MICROSEMI=y
+CONFIG_NET_VENDOR_MYRI=y
+# CONFIG_MYRI10GE is not set
+# CONFIG_FEALNX is not set
+CONFIG_NET_VENDOR_NATSEMI=y
+# CONFIG_NATSEMI is not set
+# CONFIG_NS83820 is not set
+CONFIG_NET_VENDOR_NETERION=y
+# CONFIG_S2IO is not set
+# CONFIG_VXGE is not set
+CONFIG_NET_VENDOR_NETRONOME=y
+# CONFIG_NFP is not set
+CONFIG_NET_VENDOR_NI=y
+# CONFIG_NI_XGE_MANAGEMENT_ENET is not set
+CONFIG_NET_VENDOR_8390=y
+# CONFIG_PCMCIA_AXNET is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_PCMCIA_PCNET is not set
+CONFIG_NET_VENDOR_NVIDIA=y
+CONFIG_FORCEDETH=y
+CONFIG_NET_VENDOR_OKI=y
+# CONFIG_ETHOC is not set
+CONFIG_NET_VENDOR_PACKET_ENGINES=y
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+CONFIG_NET_VENDOR_PENSANDO=y
+# CONFIG_IONIC is not set
+CONFIG_NET_VENDOR_QLOGIC=y
+# CONFIG_QLA3XXX is not set
+# CONFIG_QLCNIC is not set
+# CONFIG_NETXEN_NIC is not set
+# CONFIG_QED is not set
+CONFIG_NET_VENDOR_QUALCOMM=y
+# CONFIG_QCOM_EMAC is not set
+# CONFIG_RMNET is not set
+CONFIG_NET_VENDOR_RDC=y
+# CONFIG_R6040 is not set
+CONFIG_NET_VENDOR_REALTEK=y
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+CONFIG_8139TOO_PIO=y
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+CONFIG_R8169=y
+CONFIG_NET_VENDOR_RENESAS=y
+CONFIG_NET_VENDOR_ROCKER=y
+CONFIG_NET_VENDOR_SAMSUNG=y
+# CONFIG_SXGBE_ETH is not set
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_NET_VENDOR_SOLARFLARE=y
+# CONFIG_SFC is not set
+# CONFIG_SFC_FALCON is not set
+CONFIG_NET_VENDOR_SILAN=y
+# CONFIG_SC92031 is not set
+CONFIG_NET_VENDOR_SIS=y
+# CONFIG_SIS900 is not set
+# CONFIG_SIS190 is not set
+CONFIG_NET_VENDOR_SMSC=y
+# CONFIG_PCMCIA_SMC91C92 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_SMSC9420 is not set
+CONFIG_NET_VENDOR_SOCIONEXT=y
+CONFIG_NET_VENDOR_STMICRO=y
+# CONFIG_STMMAC_ETH is not set
+CONFIG_NET_VENDOR_SUN=y
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NIU is not set
+CONFIG_NET_VENDOR_SYNOPSYS=y
+# CONFIG_DWC_XLGMAC is not set
+CONFIG_NET_VENDOR_TEHUTI=y
+# CONFIG_TEHUTI is not set
+CONFIG_NET_VENDOR_TI=y
+# CONFIG_TI_CPSW_PHY_SEL is not set
+# CONFIG_TLAN is not set
+CONFIG_NET_VENDOR_VIA=y
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_VELOCITY is not set
+CONFIG_NET_VENDOR_WIZNET=y
+# CONFIG_WIZNET_W5100 is not set
+# CONFIG_WIZNET_W5300 is not set
+CONFIG_NET_VENDOR_XILINX=y
+# CONFIG_XILINX_EMACLITE is not set
+# CONFIG_XILINX_AXI_EMAC is not set
+# CONFIG_XILINX_LL_TEMAC is not set
+CONFIG_NET_VENDOR_XIRCOM=y
+# CONFIG_PCMCIA_XIRC2PS is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_NET_SB1000 is not set
+CONFIG_PHYLIB=y
+# CONFIG_LED_TRIGGER_PHY is not set
+# CONFIG_FIXED_PHY is not set
+
+#
+# MII PHY device drivers
+#
+# CONFIG_AMD_PHY is not set
+# CONFIG_ADIN_PHY is not set
+# CONFIG_AQUANTIA_PHY is not set
+# CONFIG_AX88796B_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_BCM54140_PHY is not set
+# CONFIG_BCM7XXX_PHY is not set
+# CONFIG_BCM84881_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_CORTINA_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_INTEL_XWAY_PHY is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_MARVELL_10G_PHY is not set
+# CONFIG_MICREL_PHY is not set
+# CONFIG_MICROCHIP_PHY is not set
+# CONFIG_MICROCHIP_T1_PHY is not set
+# CONFIG_MICROSEMI_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_NXP_TJA11XX_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+CONFIG_REALTEK_PHY=y
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_ROCKCHIP_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_TERANETICS_PHY is not set
+# CONFIG_DP83822_PHY is not set
+# CONFIG_DP83TC811_PHY is not set
+# CONFIG_DP83848_PHY is not set
+# CONFIG_DP83867_PHY is not set
+# CONFIG_DP83869_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_XILINX_GMII2RGMII is not set
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+CONFIG_MDIO_DEVRES=y
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_MDIO_BCM_UNIMAC is not set
+# CONFIG_MDIO_MVUSB is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
+# CONFIG_MDIO_THUNDER is not set
+
+#
+# MDIO Multiplexers
+#
+
+#
+# PCS device drivers
+#
+# CONFIG_PCS_XPCS is not set
+# end of PCS device drivers
+
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+CONFIG_USB_NET_DRIVERS=y
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_RTL8152 is not set
+# CONFIG_USB_LAN78XX is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_HSO is not set
+# CONFIG_USB_IPHETH is not set
+CONFIG_WLAN=y
+CONFIG_WLAN_VENDOR_ADMTEK=y
+# CONFIG_ADM8211 is not set
+CONFIG_WLAN_VENDOR_ATH=y
+# CONFIG_ATH_DEBUG is not set
+# CONFIG_ATH5K is not set
+# CONFIG_ATH5K_PCI is not set
+# CONFIG_ATH9K is not set
+# CONFIG_ATH9K_HTC is not set
+# CONFIG_CARL9170 is not set
+# CONFIG_ATH6KL is not set
+# CONFIG_AR5523 is not set
+# CONFIG_WIL6210 is not set
+# CONFIG_ATH10K is not set
+# CONFIG_WCN36XX is not set
+CONFIG_WLAN_VENDOR_ATMEL=y
+# CONFIG_ATMEL is not set
+# CONFIG_AT76C50X_USB is not set
+CONFIG_WLAN_VENDOR_BROADCOM=y
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_BRCMSMAC is not set
+# CONFIG_BRCMFMAC is not set
+CONFIG_WLAN_VENDOR_CISCO=y
+# CONFIG_AIRO is not set
+# CONFIG_AIRO_CS is not set
+CONFIG_WLAN_VENDOR_INTEL=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_IWL4965 is not set
+# CONFIG_IWL3945 is not set
+# CONFIG_IWLWIFI is not set
+CONFIG_WLAN_VENDOR_INTERSIL=y
+# CONFIG_HOSTAP is not set
+# CONFIG_HERMES is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_PRISM54 is not set
+CONFIG_WLAN_VENDOR_MARVELL=y
+# CONFIG_LIBERTAS is not set
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_MWIFIEX is not set
+# CONFIG_MWL8K is not set
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+# CONFIG_MT7601U is not set
+# CONFIG_MT76x0U is not set
+# CONFIG_MT76x0E is not set
+# CONFIG_MT76x2E is not set
+# CONFIG_MT76x2U is not set
+# CONFIG_MT7603E is not set
+# CONFIG_MT7615E is not set
+# CONFIG_MT7663U is not set
+# CONFIG_MT7915E is not set
+# CONFIG_MT7921E is not set
+CONFIG_WLAN_VENDOR_MICROCHIP=y
+CONFIG_WLAN_VENDOR_RALINK=y
+# CONFIG_RT2X00 is not set
+CONFIG_WLAN_VENDOR_REALTEK=y
+# CONFIG_RTL8180 is not set
+# CONFIG_RTL8187 is not set
+CONFIG_RTL_CARDS=y
+# CONFIG_RTL8192CE is not set
+# CONFIG_RTL8192SE is not set
+# CONFIG_RTL8192DE is not set
+# CONFIG_RTL8723AE is not set
+# CONFIG_RTL8723BE is not set
+# CONFIG_RTL8188EE is not set
+# CONFIG_RTL8192EE is not set
+# CONFIG_RTL8821AE is not set
+# CONFIG_RTL8192CU is not set
+# CONFIG_RTL8XXXU is not set
+# CONFIG_RTW88 is not set
+CONFIG_WLAN_VENDOR_RSI=y
+# CONFIG_RSI_91X is not set
+CONFIG_WLAN_VENDOR_ST=y
+# CONFIG_CW1200 is not set
+CONFIG_WLAN_VENDOR_TI=y
+# CONFIG_WL1251 is not set
+# CONFIG_WL12XX is not set
+# CONFIG_WL18XX is not set
+# CONFIG_WLCORE is not set
+CONFIG_WLAN_VENDOR_ZYDAS=y
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_ZD1211RW is not set
+CONFIG_WLAN_VENDOR_QUANTENNA=y
+# CONFIG_QTNFMAC_PCIE is not set
+# CONFIG_PCMCIA_RAYCS is not set
+# CONFIG_PCMCIA_WL3501 is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_VIRT_WIFI is not set
+# CONFIG_WAN is not set
+# CONFIG_VMXNET3 is not set
+# CONFIG_FUJITSU_ES is not set
+# CONFIG_NETDEVSIM is not set
+CONFIG_NET_FAILOVER=m
+# CONFIG_IVSHMEM_NET is not set
+# CONFIG_ISDN is not set
+# CONFIG_NVM is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=y
+CONFIG_INPUT_FF_MEMLESS=y
+CONFIG_INPUT_SPARSEKMAP=y
+# CONFIG_INPUT_MATRIXKMAP is not set
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_QT1050 is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+CONFIG_MOUSE_PS2_FOCALTECH=y
+CONFIG_MOUSE_PS2_SMBUS=y
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+# CONFIG_MOUSE_ELAN_I2C is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
+# CONFIG_MOUSE_SYNAPTICS_USB is not set
+CONFIG_INPUT_JOYSTICK=y
+# CONFIG_JOYSTICK_ANALOG is not set
+# CONFIG_JOYSTICK_A3D is not set
+# CONFIG_JOYSTICK_ADI is not set
+# CONFIG_JOYSTICK_COBRA is not set
+# CONFIG_JOYSTICK_GF2K is not set
+# CONFIG_JOYSTICK_GRIP is not set
+# CONFIG_JOYSTICK_GRIP_MP is not set
+# CONFIG_JOYSTICK_GUILLEMOT is not set
+# CONFIG_JOYSTICK_INTERACT is not set
+# CONFIG_JOYSTICK_SIDEWINDER is not set
+# CONFIG_JOYSTICK_TMDC is not set
+# CONFIG_JOYSTICK_IFORCE is not set
+# CONFIG_JOYSTICK_WARRIOR is not set
+# CONFIG_JOYSTICK_MAGELLAN is not set
+# CONFIG_JOYSTICK_SPACEORB is not set
+# CONFIG_JOYSTICK_SPACEBALL is not set
+# CONFIG_JOYSTICK_STINGER is not set
+# CONFIG_JOYSTICK_TWIDJOY is not set
+# CONFIG_JOYSTICK_ZHENHUA is not set
+# CONFIG_JOYSTICK_AS5011 is not set
+# CONFIG_JOYSTICK_JOYDUMP is not set
+# CONFIG_JOYSTICK_XPAD is not set
+# CONFIG_JOYSTICK_PXRC is not set
+# CONFIG_JOYSTICK_FSIA6B is not set
+CONFIG_INPUT_TABLET=y
+# CONFIG_TABLET_USB_ACECAD is not set
+# CONFIG_TABLET_USB_AIPTEK is not set
+# CONFIG_TABLET_USB_HANWANG is not set
+# CONFIG_TABLET_USB_KBTAB is not set
+# CONFIG_TABLET_USB_PEGASUS is not set
+# CONFIG_TABLET_SERIAL_WACOM4 is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_PROPERTIES=y
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_BU21029 is not set
+# CONFIG_TOUCHSCREEN_CHIPONE_ICN8505 is not set
+# CONFIG_TOUCHSCREEN_CY8CTMA140 is not set
+# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
+# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_EETI is not set
+# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
+# CONFIG_TOUCHSCREEN_EXC3000 is not set
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_HIDEEP is not set
+# CONFIG_TOUCHSCREEN_ILI210X is not set
+# CONFIG_TOUCHSCREEN_S6SY761 is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_EKTF2127 is not set
+# CONFIG_TOUCHSCREEN_ELAN is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
+# CONFIG_TOUCHSCREEN_MAX11801 is not set
+# CONFIG_TOUCHSCREEN_MCS5000 is not set
+# CONFIG_TOUCHSCREEN_MMS114 is not set
+# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+# CONFIG_TOUCHSCREEN_TSC2004 is not set
+# CONFIG_TOUCHSCREEN_TSC2007 is not set
+# CONFIG_TOUCHSCREEN_SILEAD is not set
+# CONFIG_TOUCHSCREEN_ST1232 is not set
+# CONFIG_TOUCHSCREEN_STMFTS is not set
+# CONFIG_TOUCHSCREEN_SX8654 is not set
+# CONFIG_TOUCHSCREEN_TPS6507X is not set
+# CONFIG_TOUCHSCREEN_ZET6223 is not set
+# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
+# CONFIG_TOUCHSCREEN_IQS5XX is not set
+# CONFIG_TOUCHSCREEN_ZINITIX is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_E3X0_BUTTON is not set
+# CONFIG_INPUT_PCSPKR is not set
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_APANEL is not set
+# CONFIG_INPUT_ATLAS_BTNS is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_KXTJ9 is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_CM109 is not set
+# CONFIG_INPUT_UINPUT is not set
+# CONFIG_INPUT_PCF8574 is not set
+# CONFIG_INPUT_DA7280_HAPTICS is not set
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
+# CONFIG_INPUT_IQS269A is not set
+# CONFIG_INPUT_CMA3000 is not set
+# CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
+# CONFIG_INPUT_DRV2667_HAPTICS is not set
+# CONFIG_RMI4_CORE is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
+CONFIG_SERIO_I8042=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_CT82C710 is not set
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIO_ARC_PS2 is not set
+# CONFIG_USERIO is not set
+# CONFIG_GAMEPORT is not set
+# end of Hardware I/O ports
+# end of Input device support
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+CONFIG_LDISC_AUTOLOAD=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_EARLYCON=y
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_PNP=y
+# CONFIG_SERIAL_8250_16550A_VARIANTS is not set
+# CONFIG_SERIAL_8250_FINTEK is not set
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_EXAR=y
+# CONFIG_SERIAL_8250_CS is not set
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_8250_DWLIB=y
+# CONFIG_SERIAL_8250_DW is not set
+# CONFIG_SERIAL_8250_RT288X is not set
+CONFIG_SERIAL_8250_LPSS=y
+CONFIG_SERIAL_8250_MID=y
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_LANTIQ is not set
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_SC16IS7XX is not set
+# CONFIG_SERIAL_BCM63XX is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_ARC is not set
+# CONFIG_SERIAL_RP2 is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_FSL_LINFLEXUART is not set
+# CONFIG_SERIAL_SPRD is not set
+# end of Serial drivers
+
+CONFIG_SERIAL_NONSTANDARD=y
+# CONFIG_ROCKETPORT is not set
+# CONFIG_CYCLADES is not set
+# CONFIG_MOXA_INTELLIO is not set
+# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_SYNCLINK_GT is not set
+# CONFIG_ISI is not set
+# CONFIG_N_HDLC is not set
+# CONFIG_N_GSM is not set
+# CONFIG_NOZOMI is not set
+# CONFIG_NULL_TTY is not set
+# CONFIG_TRACE_SINK is not set
+CONFIG_HVC_DRIVER=y
+# CONFIG_SERIAL_DEV_BUS is not set
+CONFIG_VIRTIO_CONSOLE=y
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+# CONFIG_HW_RANDOM_INTEL is not set
+# CONFIG_HW_RANDOM_AMD is not set
+# CONFIG_HW_RANDOM_BA431 is not set
+CONFIG_HW_RANDOM_VIA=y
+# CONFIG_HW_RANDOM_VIRTIO is not set
+# CONFIG_HW_RANDOM_XIPHERA is not set
+# CONFIG_APPLICOM is not set
+
+#
+# PCMCIA character devices
+#
+# CONFIG_SYNCLINK_CS is not set
+# CONFIG_CARDMAN_4000 is not set
+# CONFIG_CARDMAN_4040 is not set
+# CONFIG_SCR24X is not set
+# CONFIG_IPWIRELESS is not set
+# end of PCMCIA character devices
+
+# CONFIG_MWAVE is not set
+CONFIG_DEVMEM=y
+# CONFIG_DEVKMEM is not set
+CONFIG_NVRAM=y
+# CONFIG_RAW_DRIVER is not set
+CONFIG_DEVPORT=y
+CONFIG_HPET=y
+# CONFIG_HPET_MMAP is not set
+# CONFIG_HANGCHECK_TIMER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_TELCLOCK is not set
+# CONFIG_XILLYBUS is not set
+# end of Character devices
+
+# CONFIG_RANDOM_TRUST_CPU is not set
+# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_ACPI_I2C_OPREGION=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_COMPAT=y
+# CONFIG_I2C_CHARDEV is not set
+# CONFIG_I2C_MUX is not set
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_SMBUS=y
+CONFIG_I2C_ALGOBIT=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_AMD_MP2 is not set
+CONFIG_I2C_I801=y
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_ISMT is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_NVIDIA_GPU is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+
+#
+# ACPI drivers
+#
+# CONFIG_I2C_SCMI is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_DESIGNWARE_PCI is not set
+# CONFIG_I2C_EMEV2 is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_DIOLAN_U2C is not set
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_MLXCPLD is not set
+# end of I2C Hardware Bus support
+
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_SLAVE is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# end of I2C support
+
+# CONFIG_I3C is not set
+# CONFIG_SPI is not set
+# CONFIG_SPMI is not set
+# CONFIG_HSI is not set
+CONFIG_PPS=y
+# CONFIG_PPS_DEBUG is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_CLIENT_GPIO is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=y
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+# CONFIG_PTP_1588_CLOCK_IDT82P33 is not set
+# CONFIG_PTP_1588_CLOCK_IDTCM is not set
+# CONFIG_PTP_1588_CLOCK_OCP is not set
+# end of PTP clock support
+
+# CONFIG_PINCTRL is not set
+# CONFIG_GPIOLIB is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_RESET is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+CONFIG_POWER_SUPPLY_HWMON=y
+# CONFIG_PDA_POWER is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_CHARGER_ADP5061 is not set
+# CONFIG_BATTERY_CW2015 is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_SBS is not set
+# CONFIG_CHARGER_SBS is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_LTC4162L is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_BD99954 is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM1177 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7410 is not set
+# CONFIG_SENSORS_ADT7411 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_AHT10 is not set
+# CONFIG_SENSORS_AS370 is not set
+# CONFIG_SENSORS_ASC7621 is not set
+# CONFIG_SENSORS_AXI_FAN_CONTROL is not set
+# CONFIG_SENSORS_K8TEMP is not set
+# CONFIG_SENSORS_K10TEMP is not set
+# CONFIG_SENSORS_FAM15H_POWER is not set
+# CONFIG_SENSORS_AMD_ENERGY is not set
+# CONFIG_SENSORS_APPLESMC is not set
+# CONFIG_SENSORS_ASB100 is not set
+# CONFIG_SENSORS_ASPEED is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_CORSAIR_CPRO is not set
+# CONFIG_SENSORS_CORSAIR_PSU is not set
+# CONFIG_SENSORS_DRIVETEMP is not set
+# CONFIG_SENSORS_DS620 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_DELL_SMM is not set
+# CONFIG_SENSORS_I5K_AMB is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_FSCHMD is not set
+# CONFIG_SENSORS_FTSTEUTATES is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_G760A is not set
+# CONFIG_SENSORS_G762 is not set
+# CONFIG_SENSORS_HIH6130 is not set
+# CONFIG_SENSORS_I5500 is not set
+# CONFIG_SENSORS_CORETEMP is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_POWR1220 is not set
+# CONFIG_SENSORS_LINEAGE is not set
+# CONFIG_SENSORS_LTC2945 is not set
+# CONFIG_SENSORS_LTC2947_I2C is not set
+# CONFIG_SENSORS_LTC2990 is not set
+# CONFIG_SENSORS_LTC4151 is not set
+# CONFIG_SENSORS_LTC4215 is not set
+# CONFIG_SENSORS_LTC4222 is not set
+# CONFIG_SENSORS_LTC4245 is not set
+# CONFIG_SENSORS_LTC4260 is not set
+# CONFIG_SENSORS_LTC4261 is not set
+# CONFIG_SENSORS_MAX127 is not set
+# CONFIG_SENSORS_MAX16065 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX1668 is not set
+# CONFIG_SENSORS_MAX197 is not set
+# CONFIG_SENSORS_MAX31730 is not set
+# CONFIG_SENSORS_MAX6621 is not set
+# CONFIG_SENSORS_MAX6639 is not set
+# CONFIG_SENSORS_MAX6642 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_MAX6697 is not set
+# CONFIG_SENSORS_MAX31790 is not set
+# CONFIG_SENSORS_MCP3021 is not set
+# CONFIG_SENSORS_TC654 is not set
+# CONFIG_SENSORS_TPS23861 is not set
+# CONFIG_SENSORS_MR75203 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM73 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_LM95234 is not set
+# CONFIG_SENSORS_LM95241 is not set
+# CONFIG_SENSORS_LM95245 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_NTC_THERMISTOR is not set
+# CONFIG_SENSORS_NCT6683 is not set
+# CONFIG_SENSORS_NCT6775 is not set
+# CONFIG_SENSORS_NCT7802 is not set
+# CONFIG_SENSORS_NCT7904 is not set
+# CONFIG_SENSORS_NPCM7XX is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_PMBUS is not set
+# CONFIG_SENSORS_SBTSI is not set
+# CONFIG_SENSORS_SHT21 is not set
+# CONFIG_SENSORS_SHT3x is not set
+# CONFIG_SENSORS_SHTC1 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_EMC1403 is not set
+# CONFIG_SENSORS_EMC2103 is not set
+# CONFIG_SENSORS_EMC6W201 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_SCH5627 is not set
+# CONFIG_SENSORS_SCH5636 is not set
+# CONFIG_SENSORS_STTS751 is not set
+# CONFIG_SENSORS_SMM665 is not set
+# CONFIG_SENSORS_ADC128D818 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_AMC6821 is not set
+# CONFIG_SENSORS_INA209 is not set
+# CONFIG_SENSORS_INA2XX is not set
+# CONFIG_SENSORS_INA3221 is not set
+# CONFIG_SENSORS_TC74 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_TMP102 is not set
+# CONFIG_SENSORS_TMP103 is not set
+# CONFIG_SENSORS_TMP108 is not set
+# CONFIG_SENSORS_TMP401 is not set
+# CONFIG_SENSORS_TMP421 is not set
+# CONFIG_SENSORS_TMP513 is not set
+# CONFIG_SENSORS_VIA_CPUTEMP is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83773G is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83795 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_SENSORS_XGENE is not set
+
+#
+# ACPI drivers
+#
+# CONFIG_SENSORS_ACPI_POWER is not set
+# CONFIG_SENSORS_ATK0110 is not set
+CONFIG_THERMAL=y
+# CONFIG_THERMAL_NETLINK is not set
+# CONFIG_THERMAL_STATISTICS is not set
+CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_WRITABLE_TRIPS=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
+CONFIG_THERMAL_GOV_STEP_WISE=y
+# CONFIG_THERMAL_GOV_BANG_BANG is not set
+CONFIG_THERMAL_GOV_USER_SPACE=y
+# CONFIG_THERMAL_EMULATION is not set
+
+#
+# Intel thermal drivers
+#
+# CONFIG_INTEL_POWERCLAMP is not set
+CONFIG_X86_THERMAL_VECTOR=y
+CONFIG_X86_PKG_TEMP_THERMAL=m
+# CONFIG_INTEL_SOC_DTS_THERMAL is not set
+
+#
+# ACPI INT340X thermal drivers
+#
+# CONFIG_INT340X_THERMAL is not set
+# end of ACPI INT340X thermal drivers
+
+# CONFIG_INTEL_PCH_THERMAL is not set
+# end of Intel thermal drivers
+
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_CORE is not set
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+CONFIG_WATCHDOG_OPEN_TIMEOUT=0
+# CONFIG_WATCHDOG_SYSFS is not set
+
+#
+# Watchdog Pretimeout Governors
+#
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_WDAT_WDT is not set
+# CONFIG_XILINX_WATCHDOG is not set
+# CONFIG_ZIIRAVE_WATCHDOG is not set
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_ACQUIRE_WDT is not set
+# CONFIG_ADVANTECH_WDT is not set
+# CONFIG_ALIM1535_WDT is not set
+# CONFIG_ALIM7101_WDT is not set
+# CONFIG_EBC_C384_WDT is not set
+# CONFIG_F71808E_WDT is not set
+# CONFIG_SP5100_TCO is not set
+# CONFIG_SBC_FITPC2_WATCHDOG is not set
+# CONFIG_EUROTECH_WDT is not set
+# CONFIG_IB700_WDT is not set
+# CONFIG_IBMASR is not set
+# CONFIG_WAFER_WDT is not set
+# CONFIG_I6300ESB_WDT is not set
+# CONFIG_IE6XX_WDT is not set
+# CONFIG_ITCO_WDT is not set
+# CONFIG_IT8712F_WDT is not set
+# CONFIG_IT87_WDT is not set
+# CONFIG_HP_WATCHDOG is not set
+# CONFIG_SC1200_WDT is not set
+# CONFIG_PC87413_WDT is not set
+# CONFIG_NV_TCO is not set
+# CONFIG_60XX_WDT is not set
+# CONFIG_CPU5_WDT is not set
+# CONFIG_SMSC_SCH311X_WDT is not set
+# CONFIG_SMSC37B787_WDT is not set
+# CONFIG_TQMX86_WDT is not set
+# CONFIG_VIA_WDT is not set
+# CONFIG_W83627HF_WDT is not set
+# CONFIG_W83877F_WDT is not set
+# CONFIG_W83977F_WDT is not set
+# CONFIG_MACHZ_WDT is not set
+# CONFIG_SBC_EPX_C3_WATCHDOG is not set
+# CONFIG_NI903X_WDT is not set
+# CONFIG_NIC7018_WDT is not set
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+CONFIG_BCMA_POSSIBLE=y
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
+# CONFIG_MFD_AXP20X_I2C is not set
+# CONFIG_MFD_MADERA is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_DA9150 is not set
+# CONFIG_MFD_DLN2 is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_MFD_MP2629 is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set
+# CONFIG_LPC_ICH is not set
+# CONFIG_LPC_SCH is not set
+# CONFIG_MFD_INTEL_LPSS_ACPI is not set
+# CONFIG_MFD_INTEL_LPSS_PCI is not set
+# CONFIG_MFD_INTEL_PMC_BXT is not set
+# CONFIG_MFD_INTEL_PMT is not set
+# CONFIG_MFD_IQS62X is not set
+# CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX77843 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_MT6360 is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_RDC321X is not set
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SKY81452 is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_TI_LMU is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TQMX86 is not set
+# CONFIG_MFD_VX855 is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+# end of Multifunction device drivers
+
+# CONFIG_REGULATOR is not set
+# CONFIG_RC_CORE is not set
+# CONFIG_MEDIA_CEC_SUPPORT is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+CONFIG_AGP=y
+CONFIG_AGP_AMD64=y
+CONFIG_AGP_INTEL=y
+# CONFIG_AGP_SIS is not set
+# CONFIG_AGP_VIA is not set
+CONFIG_INTEL_GTT=y
+CONFIG_VGA_ARB=y
+CONFIG_VGA_ARB_MAX_GPUS=16
+# CONFIG_VGA_SWITCHEROO is not set
+CONFIG_DRM=y
+CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
+# CONFIG_DRM_DEBUG_MM is not set
+# CONFIG_DRM_DEBUG_SELFTEST is not set
+CONFIG_DRM_KMS_HELPER=y
+CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
+# CONFIG_DRM_DP_CEC is not set
+CONFIG_DRM_GEM_SHMEM_HELPER=y
+
+#
+# I2C encoder or helper chips
+#
+# CONFIG_DRM_I2C_CH7006 is not set
+# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+# CONFIG_DRM_I2C_NXP_TDA9950 is not set
+# end of I2C encoder or helper chips
+
+#
+# ARM devices
+#
+# end of ARM devices
+
+# CONFIG_DRM_RADEON is not set
+# CONFIG_DRM_AMDGPU is not set
+# CONFIG_DRM_NOUVEAU is not set
+CONFIG_DRM_I915=y
+CONFIG_DRM_I915_FORCE_PROBE=""
+CONFIG_DRM_I915_CAPTURE_ERROR=y
+CONFIG_DRM_I915_COMPRESS_ERROR=y
+CONFIG_DRM_I915_USERPTR=y
+# CONFIG_DRM_I915_GVT is not set
+CONFIG_DRM_I915_FENCE_TIMEOUT=10000
+CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
+CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
+CONFIG_DRM_I915_PREEMPT_TIMEOUT=640
+CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
+CONFIG_DRM_I915_STOP_TIMEOUT=100
+CONFIG_DRM_I915_TIMESLICE_DURATION=1
+# CONFIG_DRM_VGEM is not set
+# CONFIG_DRM_VKMS is not set
+# CONFIG_DRM_VMWGFX is not set
+# CONFIG_DRM_GMA500 is not set
+# CONFIG_DRM_UDL is not set
+# CONFIG_DRM_AST is not set
+# CONFIG_DRM_MGAG200 is not set
+# CONFIG_DRM_QXL is not set
+# CONFIG_DRM_BOCHS is not set
+CONFIG_DRM_VIRTIO_GPU=m
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+# CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set
+# end of Display Panels
+
+CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_PANEL_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+# CONFIG_DRM_ANALOGIX_ANX78XX is not set
+# end of Display Interface Bridges
+
+# CONFIG_DRM_ETNAVIV is not set
+# CONFIG_DRM_CIRRUS_QEMU is not set
+# CONFIG_DRM_GM12U320 is not set
+# CONFIG_DRM_VBOXVIDEO is not set
+# CONFIG_DRM_LEGACY is not set
+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
+
+#
+# Frame buffer Devices
+#
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+# CONFIG_FB_ARC is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_VESA is not set
+CONFIG_FB_EFI=y
+# CONFIG_FB_N411 is not set
+# CONFIG_FB_HGA is not set
+# CONFIG_FB_OPENCORES is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_I740 is not set
+# CONFIG_FB_LE80578 is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_CARMINE is not set
+# CONFIG_FB_SMSCUFX is not set
+# CONFIG_FB_UDL is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
+# CONFIG_FB_SIMPLE is not set
+# CONFIG_FB_SM712 is not set
+# end of Frame buffer Devices
+
+#
+# Backlight & LCD device support
+#
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_APPLE is not set
+# CONFIG_BACKLIGHT_QCOM_WLED is not set
+# CONFIG_BACKLIGHT_SAHARA is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+# CONFIG_BACKLIGHT_LV5207LP is not set
+# CONFIG_BACKLIGHT_BD6107 is not set
+# CONFIG_BACKLIGHT_ARCXCNN is not set
+# end of Backlight & LCD device support
+
+CONFIG_HDMI=y
+
+#
+# Console display driver support
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_DUMMY_CONSOLE_COLUMNS=80
+CONFIG_DUMMY_CONSOLE_ROWS=25
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set
+# end of Console display driver support
+
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+CONFIG_LOGO_LINUX_CLUT224=y
+# end of Graphics support
+
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_HWDEP=y
+CONFIG_SND_SEQ_DEVICE=y
+CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
+# CONFIG_SND_OSSEMUL is not set
+CONFIG_SND_PCM_TIMER=y
+CONFIG_SND_HRTIMER=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_PROC_FS=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_VMASTER=y
+CONFIG_SND_DMA_SGBUF=y
+CONFIG_SND_SEQUENCER=y
+CONFIG_SND_SEQ_DUMMY=y
+CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_PCSP is not set
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_ALOOP is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+CONFIG_SND_PCI=y
+# CONFIG_SND_AD1889 is not set
+# CONFIG_SND_ALS300 is not set
+# CONFIG_SND_ALS4000 is not set
+# CONFIG_SND_ALI5451 is not set
+# CONFIG_SND_ASIHPI is not set
+# CONFIG_SND_ATIIXP is not set
+# CONFIG_SND_ATIIXP_MODEM is not set
+# CONFIG_SND_AU8810 is not set
+# CONFIG_SND_AU8820 is not set
+# CONFIG_SND_AU8830 is not set
+# CONFIG_SND_AW2 is not set
+# CONFIG_SND_AZT3328 is not set
+# CONFIG_SND_BT87X is not set
+# CONFIG_SND_CA0106 is not set
+# CONFIG_SND_CMIPCI is not set
+# CONFIG_SND_OXYGEN is not set
+# CONFIG_SND_CS4281 is not set
+# CONFIG_SND_CS46XX is not set
+# CONFIG_SND_CTXFI is not set
+# CONFIG_SND_DARLA20 is not set
+# CONFIG_SND_GINA20 is not set
+# CONFIG_SND_LAYLA20 is not set
+# CONFIG_SND_DARLA24 is not set
+# CONFIG_SND_GINA24 is not set
+# CONFIG_SND_LAYLA24 is not set
+# CONFIG_SND_MONA is not set
+# CONFIG_SND_MIA is not set
+# CONFIG_SND_ECHO3G is not set
+# CONFIG_SND_INDIGO is not set
+# CONFIG_SND_INDIGOIO is not set
+# CONFIG_SND_INDIGODJ is not set
+# CONFIG_SND_INDIGOIOX is not set
+# CONFIG_SND_INDIGODJX is not set
+# CONFIG_SND_EMU10K1 is not set
+# CONFIG_SND_EMU10K1X is not set
+# CONFIG_SND_ENS1370 is not set
+# CONFIG_SND_ENS1371 is not set
+# CONFIG_SND_ES1938 is not set
+# CONFIG_SND_ES1968 is not set
+# CONFIG_SND_FM801 is not set
+# CONFIG_SND_HDSP is not set
+# CONFIG_SND_HDSPM is not set
+# CONFIG_SND_ICE1712 is not set
+# CONFIG_SND_ICE1724 is not set
+# CONFIG_SND_INTEL8X0 is not set
+# CONFIG_SND_INTEL8X0M is not set
+# CONFIG_SND_KORG1212 is not set
+# CONFIG_SND_LOLA is not set
+# CONFIG_SND_LX6464ES is not set
+# CONFIG_SND_MAESTRO3 is not set
+# CONFIG_SND_MIXART is not set
+# CONFIG_SND_NM256 is not set
+# CONFIG_SND_PCXHR is not set
+# CONFIG_SND_RIPTIDE is not set
+# CONFIG_SND_RME32 is not set
+# CONFIG_SND_RME96 is not set
+# CONFIG_SND_RME9652 is not set
+# CONFIG_SND_SE6X is not set
+# CONFIG_SND_SONICVIBES is not set
+# CONFIG_SND_TRIDENT is not set
+# CONFIG_SND_VIA82XX is not set
+# CONFIG_SND_VIA82XX_MODEM is not set
+# CONFIG_SND_VIRTUOSO is not set
+# CONFIG_SND_VX222 is not set
+# CONFIG_SND_YMFPCI is not set
+
+#
+# HD-Audio
+#
+CONFIG_SND_HDA=y
+CONFIG_SND_HDA_INTEL=y
+CONFIG_SND_HDA_HWDEP=y
+# CONFIG_SND_HDA_RECONFIG is not set
+# CONFIG_SND_HDA_INPUT_BEEP is not set
+# CONFIG_SND_HDA_PATCH_LOADER is not set
+# CONFIG_SND_HDA_CODEC_REALTEK is not set
+# CONFIG_SND_HDA_CODEC_ANALOG is not set
+# CONFIG_SND_HDA_CODEC_SIGMATEL is not set
+# CONFIG_SND_HDA_CODEC_VIA is not set
+# CONFIG_SND_HDA_CODEC_HDMI is not set
+# CONFIG_SND_HDA_CODEC_CIRRUS is not set
+# CONFIG_SND_HDA_CODEC_CONEXANT is not set
+# CONFIG_SND_HDA_CODEC_CA0110 is not set
+# CONFIG_SND_HDA_CODEC_CA0132 is not set
+# CONFIG_SND_HDA_CODEC_CMEDIA is not set
+# CONFIG_SND_HDA_CODEC_SI3054 is not set
+# CONFIG_SND_HDA_GENERIC is not set
+CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
+# CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM is not set
+# end of HD-Audio
+
+CONFIG_SND_HDA_CORE=y
+CONFIG_SND_HDA_COMPONENT=y
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_PREALLOC_SIZE=2048
+CONFIG_SND_INTEL_NHLT=y
+CONFIG_SND_INTEL_DSP_CONFIG=y
+CONFIG_SND_INTEL_SOUNDWIRE_ACPI=y
+CONFIG_SND_USB=y
+# CONFIG_SND_USB_AUDIO is not set
+# CONFIG_SND_USB_UA101 is not set
+# CONFIG_SND_USB_USX2Y is not set
+# CONFIG_SND_USB_CAIAQ is not set
+# CONFIG_SND_USB_US122L is not set
+# CONFIG_SND_USB_6FIRE is not set
+# CONFIG_SND_USB_HIFACE is not set
+# CONFIG_SND_BCD2000 is not set
+# CONFIG_SND_USB_POD is not set
+# CONFIG_SND_USB_PODHD is not set
+# CONFIG_SND_USB_TONEPORT is not set
+# CONFIG_SND_USB_VARIAX is not set
+CONFIG_SND_PCMCIA=y
+# CONFIG_SND_VXPOCKET is not set
+# CONFIG_SND_PDAUDIOCF is not set
+# CONFIG_SND_SOC is not set
+CONFIG_SND_X86=y
+# CONFIG_HDMI_LPE_AUDIO is not set
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+CONFIG_HIDRAW=y
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=y
+# CONFIG_HID_ACCUTOUCH is not set
+# CONFIG_HID_ACRUX is not set
+CONFIG_HID_APPLE=y
+# CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_ASUS is not set
+# CONFIG_HID_AUREAL is not set
+CONFIG_HID_BELKIN=y
+# CONFIG_HID_BETOP_FF is not set
+# CONFIG_HID_BIGBEN_FF is not set
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+# CONFIG_HID_CORSAIR is not set
+# CONFIG_HID_COUGAR is not set
+# CONFIG_HID_MACALLY is not set
+# CONFIG_HID_PRODIKEYS is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CREATIVE_SB0540 is not set
+CONFIG_HID_CYPRESS=y
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELAN is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
+CONFIG_HID_EZKEY=y
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
+# CONFIG_HID_GLORIOUS is not set
+# CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_VIVALDI is not set
+# CONFIG_HID_GT683R is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_VIEWSONIC is not set
+CONFIG_HID_GYRATION=y
+# CONFIG_HID_ICADE is not set
+CONFIG_HID_ITE=y
+# CONFIG_HID_JABRA is not set
+# CONFIG_HID_TWINHAN is not set
+CONFIG_HID_KENSINGTON=y
+# CONFIG_HID_LCPOWER is not set
+# CONFIG_HID_LED is not set
+# CONFIG_HID_LENOVO is not set
+CONFIG_HID_LOGITECH=y
+# CONFIG_HID_LOGITECH_DJ is not set
+# CONFIG_HID_LOGITECH_HIDPP is not set
+CONFIG_LOGITECH_FF=y
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+# CONFIG_LOGIG940_FF is not set
+CONFIG_LOGIWHEELS_FF=y
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MALTRON is not set
+# CONFIG_HID_MAYFLASH is not set
+CONFIG_HID_REDRAGON=y
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTI is not set
+CONFIG_HID_NTRIG=y
+# CONFIG_HID_ORTEK is not set
+CONFIG_HID_PANTHERLORD=y
+CONFIG_PANTHERLORD_FF=y
+# CONFIG_HID_PENMOUNT is not set
+CONFIG_HID_PETALYNX=y
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PLANTRONICS is not set
+# CONFIG_HID_PLAYSTATION is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_RETRODE is not set
+# CONFIG_HID_ROCCAT is not set
+# CONFIG_HID_SAITEK is not set
+CONFIG_HID_SAMSUNG=y
+CONFIG_HID_SONY=y
+# CONFIG_SONY_FF is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEAM is not set
+# CONFIG_HID_STEELSERIES is not set
+CONFIG_HID_SUNPLUS=y
+# CONFIG_HID_RMI is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TIVO is not set
+CONFIG_HID_TOPSEED=y
+# CONFIG_HID_THINGM is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_UDRAW_PS3 is not set
+# CONFIG_HID_U2FZERO is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
+# CONFIG_HID_ZEROPLUS is not set
+# CONFIG_HID_ZYDACRON is not set
+# CONFIG_HID_SENSOR_HUB is not set
+# CONFIG_HID_ALPS is not set
+# end of Special HID drivers
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
+CONFIG_USB_HIDDEV=y
+# end of USB HID support
+
+#
+# I2C HID support
+#
+# CONFIG_I2C_HID_ACPI is not set
+# end of I2C HID support
+
+#
+# Intel ISH HID support
+#
+# CONFIG_INTEL_ISH_HID is not set
+# end of Intel ISH HID support
+
+#
+# AMD SFH HID Support
+#
+# CONFIG_AMD_SFH_HID is not set
+# end of AMD SFH HID Support
+# end of HID support
+
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+# CONFIG_USB_LED_TRIG is not set
+# CONFIG_USB_ULPI_BUS is not set
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+CONFIG_USB_PCI=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_FEW_INIT_RETRIES is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_PRODUCTLIST is not set
+# CONFIG_USB_LEDS_TRIGGER_USBPORT is not set
+CONFIG_USB_AUTOSUSPEND_DELAY=2
+CONFIG_USB_MON=y
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_XHCI_HCD=y
+# CONFIG_USB_XHCI_DBGCAP is not set
+CONFIG_USB_XHCI_PCI=y
+# CONFIG_USB_XHCI_PCI_RENESAS is not set
+# CONFIG_USB_XHCI_PLATFORM is not set
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_PCI=y
+# CONFIG_USB_EHCI_FSL is not set
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=y
+# CONFIG_USB_OHCI_HCD_PLATFORM is not set
+CONFIG_USB_UHCI_HCD=y
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=y
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_REALTEK is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_STORAGE_ENE_UB6250 is not set
+# CONFIG_USB_UAS is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USBIP_CORE is not set
+# CONFIG_USB_CDNS_SUPPORT is not set
+# CONFIG_USB_MUSB_HDRC is not set
+# CONFIG_USB_DWC3 is not set
+# CONFIG_USB_DWC2 is not set
+# CONFIG_USB_CHIPIDEA is not set
+# CONFIG_USB_ISP1760 is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_APPLE_MFI_FASTCHARGE is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_USB_EZUSB_FX2 is not set
+# CONFIG_USB_HUB_USB251XB is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+# CONFIG_USB_HSIC_USB4604 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
+# CONFIG_USB_CHAOSKEY is not set
+
+#
+# USB Physical Layer drivers
+#
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_USB_ISP1301 is not set
+# end of USB Physical Layer drivers
+
+# CONFIG_USB_GADGET is not set
+# CONFIG_TYPEC is not set
+# CONFIG_USB_ROLE_SWITCH is not set
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+# CONFIG_LEDS_CLASS_FLASH is not set
+# CONFIG_LEDS_CLASS_MULTICOLOR is not set
+# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_APU is not set
+# CONFIG_LEDS_LM3530 is not set
+# CONFIG_LEDS_LM3532 is not set
+# CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_CLEVO_MAIL is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_INTEL_SS4200 is not set
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_TLC591XX is not set
+# CONFIG_LEDS_LM355x is not set
+
+#
+# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
+#
+# CONFIG_LEDS_BLINKM is not set
+# CONFIG_LEDS_MLXCPLD is not set
+# CONFIG_LEDS_MLXREG is not set
+# CONFIG_LEDS_USER is not set
+# CONFIG_LEDS_NIC78BX is not set
+# CONFIG_LEDS_TI_LMU_COMMON is not set
+
+#
+# Flash and Torch LED drivers
+#
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+# CONFIG_LEDS_TRIGGER_TIMER is not set
+# CONFIG_LEDS_TRIGGER_ONESHOT is not set
+# CONFIG_LEDS_TRIGGER_DISK is not set
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
+# CONFIG_LEDS_TRIGGER_CPU is not set
+# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
+# CONFIG_LEDS_TRIGGER_CAMERA is not set
+# CONFIG_LEDS_TRIGGER_PANIC is not set
+# CONFIG_LEDS_TRIGGER_NETDEV is not set
+# CONFIG_LEDS_TRIGGER_PATTERN is not set
+# CONFIG_LEDS_TRIGGER_AUDIO is not set
+# CONFIG_LEDS_TRIGGER_TTY is not set
+
+#
+# LED Blink
+#
+# CONFIG_LEDS_BLINK is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_MC146818_LIB=y
+CONFIG_RTC_CLASS=y
+# CONFIG_RTC_HCTOSYS is not set
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+CONFIG_RTC_NVMEM=y
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_ABB5ZES3 is not set
+# CONFIG_RTC_DRV_ABEOZ9 is not set
+# CONFIG_RTC_DRV_ABX80X is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_ISL12022 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8523 is not set
+# CONFIG_RTC_DRV_PCF85063 is not set
+# CONFIG_RTC_DRV_PCF85363 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_BQ32K is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8010 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+# CONFIG_RTC_DRV_EM3027 is not set
+# CONFIG_RTC_DRV_RV3028 is not set
+# CONFIG_RTC_DRV_RV3032 is not set
+# CONFIG_RTC_DRV_RV8803 is not set
+# CONFIG_RTC_DRV_SD3078 is not set
+
+#
+# SPI RTC drivers
+#
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS3232 is not set
+# CONFIG_RTC_DRV_PCF2127 is not set
+# CONFIG_RTC_DRV_RV3029C2 is not set
+# CONFIG_RTC_DRV_RX6110 is not set
+
+#
+# Platform RTC drivers
+#
+CONFIG_RTC_DRV_CMOS=y
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1685_FAMILY is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_DS2404 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_RTC_DRV_FTRTC010 is not set
+
+#
+# HID Sensor RTC drivers
+#
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_ACPI=y
+# CONFIG_ALTERA_MSGDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_INTEL_IDXD is not set
+# CONFIG_INTEL_IOATDMA is not set
+# CONFIG_PLX_DMA is not set
+# CONFIG_XILINX_ZYNQMP_DPDMA is not set
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
+CONFIG_DW_DMAC_CORE=y
+# CONFIG_DW_DMAC is not set
+# CONFIG_DW_DMAC_PCI is not set
+# CONFIG_DW_EDMA is not set
+# CONFIG_DW_EDMA_PCIE is not set
+CONFIG_HSU_DMA=y
+# CONFIG_SF_PDMA is not set
+# CONFIG_INTEL_LDMA is not set
+
+#
+# DMA Clients
+#
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+
+#
+# DMABUF options
+#
+CONFIG_SYNC_FILE=y
+# CONFIG_SW_SYNC is not set
+# CONFIG_UDMABUF is not set
+# CONFIG_DMABUF_MOVE_NOTIFY is not set
+# CONFIG_DMABUF_DEBUG is not set
+# CONFIG_DMABUF_SELFTESTS is not set
+# CONFIG_DMABUF_HEAPS is not set
+# end of DMABUF options
+
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+# CONFIG_VFIO is not set
+CONFIG_IRQ_BYPASS_MANAGER=y
+CONFIG_VIRT_DRIVERS=y
+CONFIG_JAILHOUSE_DBGCON=y
+# CONFIG_VBOXGUEST is not set
+# CONFIG_NITRO_ENCLAVES is not set
+CONFIG_VIRTIO=y
+CONFIG_VIRTIO_PCI_LIB=y
+CONFIG_VIRTIO_MENU=y
+CONFIG_VIRTIO_PCI=y
+CONFIG_VIRTIO_PCI_LEGACY=y
+CONFIG_VIRTIO_BALLOON=y
+CONFIG_VIRTIO_INPUT=y
+CONFIG_VIRTIO_MMIO=y
+CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
+CONFIG_VIRTIO_DMA_SHARED_BUFFER=m
+CONFIG_VIRTIO_IVSHMEM=y
+# CONFIG_VDPA is not set
+CONFIG_VHOST_MENU=y
+# CONFIG_VHOST_NET is not set
+# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# end of Microsoft Hyper-V guest support
+
+# CONFIG_GREYBUS is not set
+CONFIG_STAGING=y
+# CONFIG_PRISM2_USB is not set
+# CONFIG_COMEDI is not set
+# CONFIG_RTL8192U is not set
+# CONFIG_RTLLIB is not set
+# CONFIG_R8712U is not set
+# CONFIG_R8188EU is not set
+# CONFIG_RTS5208 is not set
+# CONFIG_VT6655 is not set
+# CONFIG_VT6656 is not set
+# CONFIG_FB_SM750 is not set
+# CONFIG_STAGING_MEDIA is not set
+
+#
+# Android
+#
+# end of Android
+
+# CONFIG_LTE_GDM724X is not set
+# CONFIG_GS_FPGABOOT is not set
+# CONFIG_UNISYSSPAR is not set
+
+#
+# Gasket devices
+#
+# CONFIG_STAGING_GASKET_FRAMEWORK is not set
+# end of Gasket devices
+
+# CONFIG_FIELDBUS_DEV is not set
+# CONFIG_QLGE is not set
+# CONFIG_WIMAX is not set
+CONFIG_X86_PLATFORM_DEVICES=y
+# CONFIG_ACPI_WMI is not set
+# CONFIG_ACERHDF is not set
+# CONFIG_ACER_WIRELESS is not set
+# CONFIG_AMD_PMC is not set
+# CONFIG_APPLE_GMUX is not set
+# CONFIG_ASUS_LAPTOP is not set
+# CONFIG_ASUS_WIRELESS is not set
+CONFIG_EEEPC_LAPTOP=y
+# CONFIG_X86_PLATFORM_DRIVERS_DELL is not set
+# CONFIG_AMILO_RFKILL is not set
+# CONFIG_FUJITSU_LAPTOP is not set
+# CONFIG_FUJITSU_TABLET is not set
+# CONFIG_GPD_POCKET_FAN is not set
+# CONFIG_HP_ACCEL is not set
+# CONFIG_HP_WIRELESS is not set
+# CONFIG_IBM_RTL is not set
+# CONFIG_IDEAPAD_LAPTOP is not set
+# CONFIG_SENSORS_HDAPS is not set
+# CONFIG_THINKPAD_ACPI is not set
+# CONFIG_INTEL_ATOMISP2_PM is not set
+# CONFIG_INTEL_HID_EVENT is not set
+# CONFIG_INTEL_MENLOW is not set
+# CONFIG_INTEL_OAKTRAIL is not set
+# CONFIG_INTEL_VBTN is not set
+# CONFIG_MSI_LAPTOP is not set
+# CONFIG_SAMSUNG_LAPTOP is not set
+# CONFIG_SAMSUNG_Q10 is not set
+# CONFIG_TOSHIBA_BT_RFKILL is not set
+# CONFIG_TOSHIBA_HAPS is not set
+# CONFIG_ACPI_CMPC is not set
+# CONFIG_COMPAL_LAPTOP is not set
+# CONFIG_PANASONIC_LAPTOP is not set
+# CONFIG_SONY_LAPTOP is not set
+# CONFIG_SYSTEM76_ACPI is not set
+# CONFIG_TOPSTAR_LAPTOP is not set
+# CONFIG_I2C_MULTI_INSTANTIATE is not set
+# CONFIG_MLX_PLATFORM is not set
+# CONFIG_INTEL_IPS is not set
+# CONFIG_INTEL_RST is not set
+# CONFIG_INTEL_SMARTCONNECT is not set
+
+#
+# Intel Speed Select Technology interface support
+#
+# CONFIG_INTEL_SPEED_SELECT_INTERFACE is not set
+# end of Intel Speed Select Technology interface support
+
+# CONFIG_INTEL_TURBO_MAX_3 is not set
+# CONFIG_INTEL_UNCORE_FREQ_CONTROL is not set
+# CONFIG_INTEL_PMC_CORE is not set
+# CONFIG_INTEL_PUNIT_IPC is not set
+# CONFIG_INTEL_SCU_PCI is not set
+# CONFIG_INTEL_SCU_PLATFORM is not set
+CONFIG_PMC_ATOM=y
+# CONFIG_CHROME_PLATFORMS is not set
+# CONFIG_MELLANOX_PLATFORM is not set
+CONFIG_SURFACE_PLATFORMS=y
+# CONFIG_SURFACE_3_POWER_OPREGION is not set
+# CONFIG_SURFACE_GPE is not set
+# CONFIG_SURFACE_PRO3_BUTTON is not set
+CONFIG_HAVE_CLK=y
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+# CONFIG_COMMON_CLK_MAX9485 is not set
+# CONFIG_COMMON_CLK_SI5341 is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI544 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_XILINX_VCU is not set
+# CONFIG_HWSPINLOCK is not set
+
+#
+# Clock Source drivers
+#
+CONFIG_CLKEVT_I8253=y
+CONFIG_I8253_LOCK=y
+CONFIG_CLKBLD_I8253=y
+# end of Clock Source drivers
+
+CONFIG_MAILBOX=y
+CONFIG_PCC=y
+# CONFIG_ALTERA_MBOX is not set
+CONFIG_IOMMU_IOVA=y
+CONFIG_IOASID=y
+CONFIG_IOMMU_API=y
+CONFIG_IOMMU_SUPPORT=y
+
+#
+# Generic IOMMU Pagetable Support
+#
+CONFIG_IOMMU_IO_PGTABLE=y
+# end of Generic IOMMU Pagetable Support
+
+# CONFIG_IOMMU_DEBUGFS is not set
+# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
+CONFIG_IOMMU_DMA=y
+CONFIG_AMD_IOMMU=y
+# CONFIG_AMD_IOMMU_V2 is not set
+CONFIG_DMAR_TABLE=y
+CONFIG_INTEL_IOMMU=y
+# CONFIG_INTEL_IOMMU_SVM is not set
+# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
+CONFIG_INTEL_IOMMU_FLOPPY_WA=y
+# CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON is not set
+# CONFIG_IRQ_REMAP is not set
+
+#
+# Remoteproc drivers
+#
+# CONFIG_REMOTEPROC is not set
+# end of Remoteproc drivers
+
+#
+# Rpmsg drivers
+#
+# CONFIG_RPMSG_QCOM_GLINK_RPM is not set
+# CONFIG_RPMSG_VIRTIO is not set
+# end of Rpmsg drivers
+
+# CONFIG_SOUNDWIRE is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Amlogic SoC drivers
+#
+# end of Amlogic SoC drivers
+
+#
+# Broadcom SoC drivers
+#
+# end of Broadcom SoC drivers
+
+#
+# NXP/Freescale QorIQ SoC drivers
+#
+# end of NXP/Freescale QorIQ SoC drivers
+
+#
+# i.MX SoC drivers
+#
+# end of i.MX SoC drivers
+
+#
+# Enable LiteX SoC Builder specific drivers
+#
+# end of Enable LiteX SoC Builder specific drivers
+
+#
+# Qualcomm SoC drivers
+#
+# end of Qualcomm SoC drivers
+
+# CONFIG_SOC_TI is not set
+
+#
+# Xilinx SoC drivers
+#
+# end of Xilinx SoC drivers
+# end of SOC (System On Chip) specific Drivers
+
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+# CONFIG_NTB is not set
+# CONFIG_VME_BUS is not set
+# CONFIG_PWM is not set
+
+#
+# IRQ chip support
+#
+# end of IRQ chip support
+
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_USB_LGM_PHY is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
+# CONFIG_PHY_INTEL_LGM_EMMC is not set
+# end of PHY Subsystem
+
+# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+# end of Performance monitor support
+
+# CONFIG_RAS is not set
+# CONFIG_USB4 is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# end of Android
+
+# CONFIG_LIBNVDIMM is not set
+# CONFIG_DAX is not set
+CONFIG_NVMEM=y
+CONFIG_NVMEM_SYSFS=y
+# CONFIG_NVMEM_RMEM is not set
+
+#
+# HW tracing support
+#
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+# end of HW tracing support
+
+# CONFIG_FPGA is not set
+# CONFIG_TEE is not set
+# CONFIG_UNISYS_VISORBUS is not set
+# CONFIG_SIOX is not set
+# CONFIG_SLIMBUS is not set
+# CONFIG_INTERCONNECT is not set
+# CONFIG_COUNTER is not set
+# end of Device Drivers
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+# CONFIG_VALIDATE_FS_PARSER is not set
+CONFIG_FS_IOMAP=y
+# CONFIG_EXT2_FS is not set
+# CONFIG_EXT3_FS is not set
+CONFIG_EXT4_FS=y
+CONFIG_EXT4_USE_FOR_EXT2=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_DAX is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_EXPORTFS=y
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_MANDATORY_FILE_LOCKING=y
+# CONFIG_FS_ENCRYPTION is not set
+# CONFIG_FS_VERITY is not set
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_FANOTIFY is not set
+CONFIG_QUOTA=y
+CONFIG_QUOTA_NETLINK_INTERFACE=y
+# CONFIG_PRINT_QUOTA_WARNING is not set
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+CONFIG_AUTOFS4_FS=y
+CONFIG_AUTOFS_FS=y
+CONFIG_FUSE_FS=m
+CONFIG_CUSE=m
+CONFIG_VIRTIO_FS=m
+# CONFIG_OVERLAY_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+# end of Caches
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+# CONFIG_UDF_FS is not set
+# end of CD-ROM/DVD Filesystems
+
+#
+# DOS/FAT/EXFAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
+# CONFIG_EXFAT_FS is not set
+# CONFIG_NTFS_FS is not set
+# end of DOS/FAT/EXFAT/NT Filesystems
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_VMCORE=y
+# CONFIG_PROC_VMCORE_DEVICE_DUMP is not set
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+# CONFIG_PROC_CHILDREN is not set
+CONFIG_PROC_PID_ARCH_STATUS=y
+CONFIG_KERNFS=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
+CONFIG_TMPFS_XATTR=y
+# CONFIG_TMPFS_INODE64 is not set
+CONFIG_HUGETLBFS=y
+CONFIG_HUGETLB_PAGE=y
+CONFIG_MEMFD_CREATE=y
+CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_EFIVAR_FS=m
+# end of Pseudo filesystems
+
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_ECRYPT_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_PSTORE is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_EROFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V2=y
+CONFIG_NFS_V3=y
+CONFIG_NFS_V3_ACL=y
+CONFIG_NFS_V4=y
+# CONFIG_NFS_SWAP is not set
+# CONFIG_NFS_V4_1 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
+CONFIG_NFS_DISABLE_UDP_SUPPORT=y
+# CONFIG_NFSD is not set
+CONFIG_GRACE_PERIOD=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_ACL_SUPPORT=y
+CONFIG_NFS_COMMON=y
+CONFIG_NFS_V4_2_SSC_HELPER=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_DEBUG is not set
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="utf8"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ASCII=y
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+CONFIG_NLS_UTF8=y
+# CONFIG_UNICODE is not set
+CONFIG_IO_WQ=y
+# end of File systems
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_KEYS_REQUEST_CACHE is not set
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_ENCRYPTED_KEYS is not set
+# CONFIG_KEY_DH_OPERATIONS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+CONFIG_SECURITY=y
+CONFIG_SECURITY_WRITABLE_HOOKS=y
+# CONFIG_SECURITYFS is not set
+CONFIG_SECURITY_NETWORK=y
+CONFIG_PAGE_TABLE_ISOLATION=y
+# CONFIG_SECURITY_NETWORK_XFRM is not set
+# CONFIG_SECURITY_PATH is not set
+# CONFIG_INTEL_TXT is not set
+CONFIG_LSM_MMAP_MIN_ADDR=65536
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+# CONFIG_HARDENED_USERCOPY is not set
+# CONFIG_FORTIFY_SOURCE is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
+CONFIG_SECURITY_SELINUX=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM=y
+CONFIG_SECURITY_SELINUX_DISABLE=y
+CONFIG_SECURITY_SELINUX_DEVELOP=y
+CONFIG_SECURITY_SELINUX_AVC_STATS=y
+CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=0
+CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9
+CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256
+# CONFIG_SECURITY_SMACK is not set
+# CONFIG_SECURITY_TOMOYO is not set
+# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_LOADPIN is not set
+# CONFIG_SECURITY_YAMA is not set
+# CONFIG_SECURITY_SAFESETID is not set
+# CONFIG_SECURITY_LOCKDOWN_LSM is not set
+CONFIG_INTEGRITY=y
+# CONFIG_INTEGRITY_SIGNATURE is not set
+CONFIG_INTEGRITY_AUDIT=y
+# CONFIG_IMA is not set
+# CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT is not set
+# CONFIG_EVM is not set
+CONFIG_DEFAULT_SECURITY_SELINUX=y
+# CONFIG_DEFAULT_SECURITY_DAC is not set
+CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,selinux,smack,tomoyo,apparmor,bpf"
+
+#
+# Kernel hardening options
+#
+
+#
+# Memory initialization
+#
+CONFIG_INIT_STACK_NONE=y
+# CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set
+# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set
+# CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set
+# CONFIG_GCC_PLUGIN_STACKLEAK is not set
+# CONFIG_INIT_ON_ALLOC_DEFAULT_ON is not set
+# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
+# end of Memory initialization
+# end of Kernel hardening options
+# end of Security options
+
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_SKCIPHER=y
+CONFIG_CRYPTO_SKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_KPP2=y
+CONFIG_CRYPTO_ACOMP2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_USER is not set
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_NULL=y
+CONFIG_CRYPTO_NULL2=y
+# CONFIG_CRYPTO_PCRYPT is not set
+# CONFIG_CRYPTO_CRYPTD is not set
+CONFIG_CRYPTO_AUTHENC=y
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Public-key cryptography
+#
+CONFIG_CRYPTO_RSA=y
+# CONFIG_CRYPTO_DH is not set
+# CONFIG_CRYPTO_ECDH is not set
+# CONFIG_CRYPTO_ECRDSA is not set
+# CONFIG_CRYPTO_SM2 is not set
+# CONFIG_CRYPTO_CURVE25519 is not set
+# CONFIG_CRYPTO_CURVE25519_X86 is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_GCM=y
+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
+# CONFIG_CRYPTO_AEGIS128 is not set
+# CONFIG_CRYPTO_AEGIS128_AESNI_SSE2 is not set
+CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=y
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CFB is not set
+CONFIG_CRYPTO_CTR=y
+# CONFIG_CRYPTO_CTS is not set
+# CONFIG_CRYPTO_ECB is not set
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_OFB is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+# CONFIG_CRYPTO_KEYWRAP is not set
+# CONFIG_CRYPTO_NHPOLY1305_SSE2 is not set
+# CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set
+# CONFIG_CRYPTO_ADIANTUM is not set
+# CONFIG_CRYPTO_ESSIV is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32C_INTEL is not set
+# CONFIG_CRYPTO_CRC32 is not set
+# CONFIG_CRYPTO_CRC32_PCLMUL is not set
+# CONFIG_CRYPTO_XXHASH is not set
+# CONFIG_CRYPTO_BLAKE2B is not set
+# CONFIG_CRYPTO_BLAKE2S is not set
+# CONFIG_CRYPTO_BLAKE2S_X86 is not set
+# CONFIG_CRYPTO_CRCT10DIF is not set
+CONFIG_CRYPTO_GHASH=y
+# CONFIG_CRYPTO_POLY1305 is not set
+# CONFIG_CRYPTO_POLY1305_X86_64 is not set
+# CONFIG_CRYPTO_MD4 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA1_SSSE3 is not set
+# CONFIG_CRYPTO_SHA256_SSSE3 is not set
+# CONFIG_CRYPTO_SHA512_SSSE3 is not set
+CONFIG_CRYPTO_SHA256=y
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_SHA3 is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_STREEBOG is not set
+# CONFIG_CRYPTO_WP512 is not set
+# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_AES_TI is not set
+# CONFIG_CRYPTO_AES_NI_INTEL is not set
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAMELLIA_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set
+# CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_DES3_EDE_X86_64 is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_CHACHA20 is not set
+# CONFIG_CRYPTO_CHACHA20_X86_64 is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
+# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set
+# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+# CONFIG_CRYPTO_TWOFISH_X86_64 is not set
+# CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set
+# CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_842 is not set
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+# CONFIG_CRYPTO_ZSTD is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_DRBG_MENU=y
+CONFIG_CRYPTO_DRBG_HMAC=y
+# CONFIG_CRYPTO_DRBG_HASH is not set
+# CONFIG_CRYPTO_DRBG_CTR is not set
+CONFIG_CRYPTO_DRBG=y
+CONFIG_CRYPTO_JITTERENTROPY=y
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_USER_API_RNG is not set
+# CONFIG_CRYPTO_USER_API_AEAD is not set
+CONFIG_CRYPTO_HASH_INFO=y
+
+#
+# Crypto library routines
+#
+CONFIG_CRYPTO_LIB_AES=y
+CONFIG_CRYPTO_LIB_ARC4=y
+# CONFIG_CRYPTO_LIB_BLAKE2S is not set
+# CONFIG_CRYPTO_LIB_CHACHA is not set
+# CONFIG_CRYPTO_LIB_CURVE25519 is not set
+CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
+# CONFIG_CRYPTO_LIB_POLY1305 is not set
+# CONFIG_CRYPTO_LIB_CHACHA20POLY1305 is not set
+CONFIG_CRYPTO_LIB_SHA256=y
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_PADLOCK is not set
+# CONFIG_CRYPTO_DEV_ATMEL_ECC is not set
+# CONFIG_CRYPTO_DEV_ATMEL_SHA204A is not set
+# CONFIG_CRYPTO_DEV_CCP is not set
+# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set
+# CONFIG_CRYPTO_DEV_QAT_C3XXX is not set
+# CONFIG_CRYPTO_DEV_QAT_C62X is not set
+# CONFIG_CRYPTO_DEV_QAT_4XXX is not set
+# CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set
+# CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set
+# CONFIG_CRYPTO_DEV_QAT_C62XVF is not set
+# CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set
+# CONFIG_CRYPTO_DEV_VIRTIO is not set
+# CONFIG_CRYPTO_DEV_SAFEXCEL is not set
+# CONFIG_CRYPTO_DEV_AMLOGIC_GXL is not set
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set
+
+#
+# Certificates for signature checking
+#
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
+# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
+# end of Certificates for signature checking
+
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+# CONFIG_PACKING is not set
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+CONFIG_GENERIC_FIND_FIRST_BIT=y
+# CONFIG_CORDIC is not set
+# CONFIG_PRIME_NUMBERS is not set
+CONFIG_RATIONAL=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IOMAP=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
+CONFIG_ARCH_USE_SYM_ANNOTATIONS=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+# CONFIG_CRC_T10DIF is not set
+# CONFIG_CRC_ITU_T is not set
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC64 is not set
+# CONFIG_CRC4 is not set
+# CONFIG_CRC7 is not set
+# CONFIG_LIBCRC32C is not set
+# CONFIG_CRC8 is not set
+CONFIG_XXHASH=y
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_DECOMPRESS=y
+CONFIG_ZSTD_DECOMPRESS=y
+CONFIG_XZ_DEC=y
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
+CONFIG_XZ_DEC_IA64=y
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+CONFIG_XZ_DEC_SPARC=y
+CONFIG_XZ_DEC_BCJ=y
+# CONFIG_XZ_DEC_TEST is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_BZIP2=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_DECOMPRESS_XZ=y
+CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
+CONFIG_DECOMPRESS_ZSTD=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_INTERVAL_TREE=y
+CONFIG_ASSOCIATIVE_ARRAY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAS_DMA=y
+CONFIG_DMA_OPS=y
+CONFIG_NEED_SG_DMA_LENGTH=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_SWIOTLB=y
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_DMA_MAP_BENCHMARK is not set
+CONFIG_SGL_ALLOC=y
+CONFIG_CHECK_SIGNATURE=y
+CONFIG_CPU_RMAP=y
+CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
+CONFIG_NLATTR=y
+CONFIG_CLZ_TAB=y
+# CONFIG_IRQ_POLL is not set
+CONFIG_MPILIB=y
+CONFIG_OID_REGISTRY=y
+CONFIG_UCS2_STRING=y
+CONFIG_HAVE_GENERIC_VDSO=y
+CONFIG_GENERIC_GETTIMEOFDAY=y
+CONFIG_GENERIC_VDSO_TIME_NS=y
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+CONFIG_SG_POOL=y
+CONFIG_ARCH_HAS_PMEM_API=y
+CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y
+CONFIG_ARCH_HAS_COPY_MC=y
+CONFIG_ARCH_STACKWALK=y
+CONFIG_SBITMAP=y
+# CONFIG_STRING_SELFTEST is not set
+# end of Library routines
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+# CONFIG_PRINTK_CALLER is not set
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_DYNAMIC_DEBUG_CORE is not set
+CONFIG_SYMBOLIC_ERRNAME=y
+CONFIG_DEBUG_BUGVERBOSE=y
+# end of printk and dmesg options
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
+CONFIG_FRAME_WARN=2048
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
+# CONFIG_HEADERS_INSTALL is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
+CONFIG_STACK_VALIDATION=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# end of Compile-time checks and compiler options
+
+#
+# Generic Kernel Debugging Instruments
+#
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
+CONFIG_MAGIC_SYSRQ_SERIAL=y
+CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
+CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_FS_ALLOW_ALL=y
+# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
+# CONFIG_DEBUG_FS_ALLOW_NONE is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
+# CONFIG_UBSAN is not set
+CONFIG_HAVE_ARCH_KCSAN=y
+# end of Generic Kernel Debugging Instruments
+
+CONFIG_DEBUG_KERNEL=y
+CONFIG_DEBUG_MISC=y
+
+#
+# Memory Debugging
+#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_OWNER is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
+# CONFIG_DEBUG_RODATA_TEST is not set
+CONFIG_ARCH_HAS_DEBUG_WX=y
+# CONFIG_DEBUG_WX is not set
+CONFIG_GENERIC_PTDUMP=y
+# CONFIG_PTDUMP_DEBUGFS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+CONFIG_DEBUG_STACK_USAGE=y
+# CONFIG_SCHED_STACK_END_CHECK is not set
+CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VM_PGTABLE is not set
+CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
+# CONFIG_DEBUG_VIRTUAL is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y
+# CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP is not set
+CONFIG_HAVE_ARCH_KASAN=y
+CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
+CONFIG_CC_HAS_KASAN_GENERIC=y
+CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
+# CONFIG_KASAN is not set
+CONFIG_HAVE_ARCH_KFENCE=y
+# CONFIG_KFENCE is not set
+# end of Memory Debugging
+
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Oops, Lockups and Hangs
+#
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
+CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y
+# CONFIG_HARDLOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_TEST_LOCKUP is not set
+# end of Debug Oops, Lockups and Hangs
+
+#
+# Scheduler Debugging
+#
+# CONFIG_SCHED_DEBUG is not set
+CONFIG_SCHED_INFO=y
+CONFIG_SCHEDSTATS=y
+# end of Scheduler Debugging
+
+# CONFIG_DEBUG_TIMEKEEPING is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_RWSEMS is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_WW_MUTEX_SELFTEST is not set
+# CONFIG_SCF_TORTURE_TEST is not set
+# CONFIG_CSD_LOCK_WAIT_DEBUG is not set
+# end of Lock Debugging (spinlocks, mutexes, etc...)
+
+# CONFIG_DEBUG_IRQFLAGS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+# CONFIG_DEBUG_KOBJECT is not set
+
+#
+# Debug kernel data structures
+#
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PLIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
+# end of Debug kernel data structures
+
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_RCU_SCALE_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_REF_SCALE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
+CONFIG_RCU_TRACE=y
+# CONFIG_RCU_EQS_DEBUG is not set
+# end of RCU Debugging
+
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_USER_STACKTRACE_SUPPORT=y
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_FENTRY=y
+CONFIG_HAVE_OBJTOOL_MCOUNT=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_GENERIC_TRACER=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+# CONFIG_BOOTTIME_TRACING is not set
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_HWLAT_TRACER is not set
+# CONFIG_MMIOTRACE is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_TRACER_SNAPSHOT is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+CONFIG_BLK_DEV_IO_TRACE=y
+CONFIG_KPROBE_EVENTS=y
+CONFIG_UPROBE_EVENTS=y
+CONFIG_DYNAMIC_EVENTS=y
+CONFIG_PROBE_EVENTS=y
+# CONFIG_SYNTH_EVENTS is not set
+# CONFIG_HIST_TRIGGERS is not set
+# CONFIG_TRACE_EVENT_INJECT is not set
+# CONFIG_TRACEPOINT_BENCHMARK is not set
+# CONFIG_RING_BUFFER_BENCHMARK is not set
+# CONFIG_TRACE_EVAL_MAP_FILE is not set
+# CONFIG_FTRACE_STARTUP_TEST is not set
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set
+# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
+# CONFIG_KPROBE_EVENT_GEN_TEST is not set
+CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
+# CONFIG_SAMPLES is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+CONFIG_STRICT_DEVMEM=y
+# CONFIG_IO_STRICT_DEVMEM is not set
+
+#
+# x86 Debugging
+#
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
+CONFIG_EARLY_PRINTK_USB=y
+CONFIG_X86_VERBOSE_BOOTUP=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_EARLY_PRINTK_DBGP=y
+# CONFIG_EARLY_PRINTK_USB_XDBC is not set
+# CONFIG_EFI_PGT_DUMP is not set
+# CONFIG_DEBUG_TLBFLUSH is not set
+CONFIG_HAVE_MMIOTRACE_SUPPORT=y
+# CONFIG_X86_DECODER_SELFTEST is not set
+CONFIG_IO_DELAY_0X80=y
+# CONFIG_IO_DELAY_0XED is not set
+# CONFIG_IO_DELAY_UDELAY is not set
+# CONFIG_IO_DELAY_NONE is not set
+CONFIG_DEBUG_BOOT_PARAMS=y
+# CONFIG_CPA_DEBUG is not set
+# CONFIG_DEBUG_ENTRY is not set
+# CONFIG_DEBUG_NMI_SELFTEST is not set
+CONFIG_X86_DEBUG_FPU=y
+# CONFIG_PUNIT_ATOM_DEBUG is not set
+CONFIG_UNWINDER_ORC=y
+# CONFIG_UNWINDER_FRAME_POINTER is not set
+# end of x86 Debugging
+
+#
+# Kernel Testing and Coverage
+#
+# CONFIG_KUNIT is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+CONFIG_FUNCTION_ERROR_INJECTION=y
+# CONFIG_FAULT_INJECTION is not set
+CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+# CONFIG_KCOV is not set
+CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_TEST_MIN_HEAP is not set
+# CONFIG_TEST_SORT is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_REED_SOLOMON_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_TEST_HEXDUMP is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_STRSCPY is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_XARRAY is not set
+# CONFIG_TEST_OVERFLOW is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_IDA is not set
+# CONFIG_TEST_LKM is not set
+# CONFIG_TEST_BITOPS is not set
+# CONFIG_TEST_VMALLOC is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_TEST_BLACKHOLE_DEV is not set
+# CONFIG_FIND_BIT_BENCHMARK is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_SYSCTL is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_TEST_KMOD is not set
+# CONFIG_TEST_MEMCAT_P is not set
+# CONFIG_TEST_STACKINIT is not set
+# CONFIG_TEST_MEMINIT is not set
+# CONFIG_TEST_FREE_PAGES is not set
+# CONFIG_TEST_FPU is not set
+# CONFIG_MEMTEST is not set
+# end of Kernel Testing and Coverage
+# end of Kernel hacking
+CONFIG_X86_X2APIC=y
diff --git a/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/kernel-devsrc.bb b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/kernel-devsrc.bb
new file mode 100644
index 00000000..f207a43c
--- /dev/null
+++ b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/kernel-devsrc.bb
@@ -0,0 +1,280 @@
+SUMMARY = "Linux kernel Development Source"
+DESCRIPTION = "Development source linux kernel. When built, this recipe packages the \
+source of the preferred virtual/kernel provider and makes it available for full kernel \
+development or external module builds"
+
+SECTION = "kernel"
+
+LICENSE = "GPLv2"
+
+inherit linux-kernel-base
+
+# Whilst not a module, this ensures we don't get multilib extended (which would make no sense)
+inherit module-base
+
+# We need the kernel to be staged (unpacked, patched and configured) before
+# we can grab the source and make the source package. We also need the bits from
+# ${B} not to change while we install, so virtual/kernel must finish do_compile.
+do_install[depends] += "virtual/kernel:do_shared_workdir"
+# Need the source, not just the output of populate_sysroot
+do_install[depends] += "virtual/kernel:do_install"
+
+# There's nothing to do here, except install the source where we can package it
+do_fetch[noexec] = "1"
+do_unpack[noexec] = "1"
+do_patch[noexec] = "1"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+deltask do_populate_sysroot
+
+S = "${STAGING_KERNEL_DIR}"
+B = "${STAGING_KERNEL_BUILDDIR}"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+KERNEL_BUILD_ROOT="${nonarch_base_libdir}/modules/"
+
+do_install() {
+ kerneldir=${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}
+ install -d $kerneldir
+
+ # create the directory structure
+ rm -f $kerneldir/build
+ rm -f $kerneldir/source
+ mkdir -p $kerneldir/build
+
+ # for compatibility with some older variants of this package, we
+ # create a /usr/src/kernel symlink to /lib/modules/<version>/source
+ mkdir -p ${D}/usr/src
+ (
+ cd ${D}/usr/src
+ lnr ${D}${KERNEL_BUILD_ROOT}${KERNEL_VERSION}/source kernel
+ )
+
+ # for on target purposes, we unify build and source
+ (
+ cd $kerneldir
+ ln -s build source
+ )
+
+ # first copy everything
+ (
+ cd ${S}
+ cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") $kerneldir/build
+ cp --parents $(find -type f -name "Build" -o -name "Build.include") $kerneldir/build
+ )
+
+ # then drop all but the needed Makefiles/Kconfig files
+ rm -rf $kerneldir/build/scripts
+ rm -rf $kerneldir/build/include
+
+ # now copy in parts from the build that we'll need later
+ (
+ cd ${B}
+
+ cp Module.symvers $kerneldir/build
+ cp System.map* $kerneldir/build
+ if [ -s Module.markers ]; then
+ cp Module.markers $kerneldir/build
+ fi
+
+ cp -a .config $kerneldir/build
+
+ # This scripts copy blow up QA, so for now, we require a more
+ # complex 'make scripts' to restore these, versus copying them
+ # here. Left as a reference to indicate that we know the scripts must
+ # be dealt with.
+ # cp -a scripts $kerneldir/build
+
+ # although module.lds can be regenerated on target via 'make modules_prepare'
+ # there are several places where 'makes scripts prepare' is done, and that won't
+ # regenerate the file. So we copy it onto the target as a migration to using
+ # modules_prepare
+ cp -a --parents scripts/module.lds $kerneldir/build/ 2>/dev/null || :
+
+ if [ -d arch/${ARCH}/scripts ]; then
+ cp -a arch/${ARCH}/scripts $kerneldir/build/arch/${ARCH}
+ fi
+ if [ -f arch/${ARCH}/*lds ]; then
+ cp -a arch/${ARCH}/*lds $kerneldir/build/arch/${ARCH}
+ fi
+
+ rm -f $kerneldir/build/scripts/*.o
+ rm -f $kerneldir/build/scripts/*/*.o
+
+ if [ "${ARCH}" = "powerpc" ]; then
+ if [ -e arch/powerpc/lib/crtsavres.S ] ||
+ [ -e arch/powerpc/lib/crtsavres.o ]; then
+ cp -a --parents arch/powerpc/lib/crtsavres.[So] $kerneldir/build/
+ fi
+ fi
+
+ if [ "${ARCH}" = "arm64" ]; then
+ cp -a --parents arch/arm64/kernel/vdso/vdso.lds $kerneldir/build/
+ fi
+
+ cp -a include $kerneldir/build/include
+ )
+
+ # now grab the chunks from the source tree that we need
+ (
+ cd ${S}
+
+ cp -a scripts $kerneldir/build
+
+ # if our build dir had objtool, it will also be rebuilt on target, so
+ # we copy what is required for that build
+ if [ -f ${B}/tools/objtool/objtool ]; then
+ # these are a few files associated with objtool, since we'll need to
+ # rebuild it
+ cp -a --parents tools/build/Build.include $kerneldir/build/
+ cp -a --parents tools/build/Build $kerneldir/build/
+ cp -a --parents tools/build/fixdep.c $kerneldir/build/
+ cp -a --parents tools/scripts/utilities.mak $kerneldir/build/
+
+ # extra files, just in case
+ cp -a --parents tools/objtool/* $kerneldir/build/
+ cp -a --parents tools/lib/* $kerneldir/build/
+ cp -a --parents tools/lib/subcmd/* $kerneldir/build/
+
+ cp -a --parents tools/include/* $kerneldir/build/
+
+ cp -a --parents $(find tools/arch/${ARCH}/ -type f) $kerneldir/build/
+ fi
+
+ if [ "${ARCH}" = "arm64" ]; then
+ # arch/arm64/include/asm/xen references arch/arm
+ cp -a --parents arch/arm/include/asm/xen $kerneldir/build/
+ # arch/arm64/include/asm/opcodes.h references arch/arm
+ cp -a --parents arch/arm/include/asm/opcodes.h $kerneldir/build/
+
+ cp -a --parents arch/arm64/kernel/vdso/*gettimeofday.* $kerneldir/build/
+ cp -a --parents arch/arm64/kernel/vdso/sigreturn.S $kerneldir/build/
+ cp -a --parents arch/arm64/kernel/vdso/note.S $kerneldir/build/
+ cp -a --parents arch/arm64/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/
+
+ cp -a --parents arch/arm64/kernel/module.lds $kerneldir/build/ 2>/dev/null || :
+ fi
+
+ if [ "${ARCH}" = "powerpc" ]; then
+ # 5.0 needs these files, but don't error if they aren't present in the source
+ cp -a --parents arch/${ARCH}/kernel/syscalls/syscall.tbl $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/${ARCH}/kernel/syscalls/syscalltbl.sh $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/${ARCH}/kernel/syscalls/syscallhdr.sh $kerneldir/build/ 2>/dev/null || :
+ fi
+
+ # include the machine specific headers for ARM variants, if available.
+ if [ "${ARCH}" = "arm" ]; then
+ cp -a --parents arch/${ARCH}/mach-*/include $kerneldir/build/
+
+ # include a few files for 'make prepare'
+ cp -a --parents arch/arm/tools/gen-mach-types $kerneldir/build/
+ cp -a --parents arch/arm/tools/mach-types $kerneldir/build/
+
+ # ARM syscall table tools only exist for kernels v4.10 or later
+ SYSCALL_TOOLS=$(find arch/arm/tools -name "syscall*")
+ if [ -n "$SYSCALL_TOOLS" ] ; then
+ cp -a --parents $SYSCALL_TOOLS $kerneldir/build/
+ fi
+
+ cp -a --parents arch/arm/kernel/module.lds $kerneldir/build/
+ fi
+
+ if [ -d arch/${ARCH}/include ]; then
+ cp -a --parents arch/${ARCH}/include $kerneldir/build/
+ fi
+
+ cp -a include $kerneldir/build
+
+ cp -a --parents lib/vdso/* $kerneldir/build/ 2>/dev/null || :
+
+ cp -a --parents tools/include/tools/le_byteshift.h $kerneldir/build/
+ cp -a --parents tools/include/tools/be_byteshift.h $kerneldir/build/
+
+ # required for generate missing syscalls prepare phase
+ cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build
+ cp -a --parents $(find arch/arm -type f -name "*.tbl") $kerneldir/build 2>/dev/null || :
+
+ if [ "${ARCH}" = "x86" ]; then
+ # files for 'make prepare' to succeed with kernel-devel
+ cp -a --parents $(find arch/x86 -type f -name "syscall_32.tbl") $kerneldir/build/
+ cp -a --parents $(find scripts -type f -name "syscalltbl.sh") $kerneldir/build/
+ cp -a --parents $(find scripts -type f -name "syscallhdr.sh") $kerneldir/build/
+ cp -a --parents $(find arch/x86 -type f -name "syscall_64.tbl") $kerneldir/build/
+ cp -a --parents arch/x86/tools/relocs_32.c $kerneldir/build/
+ cp -a --parents arch/x86/tools/relocs_64.c $kerneldir/build/
+ cp -a --parents arch/x86/tools/relocs.c $kerneldir/build/
+ cp -a --parents arch/x86/tools/relocs_common.c $kerneldir/build/
+ cp -a --parents arch/x86/tools/relocs.h $kerneldir/build/
+ cp -a --parents arch/x86/tools/gen-insn-attr-x86.awk $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/x86/purgatory/purgatory.c $kerneldir/build/
+
+ # 4.18 + have unified the purgatory files, so we ignore any errors if
+ # these files are not present
+ cp -a --parents arch/x86/purgatory/sha256.h $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/x86/purgatory/sha256.c $kerneldir/build/ 2>/dev/null || :
+
+ cp -a --parents arch/x86/purgatory/stack.S $kerneldir/build/
+ cp -a --parents arch/x86/purgatory/string.c $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/x86/purgatory/setup-x86_64.S $kerneldir/build/
+ cp -a --parents arch/x86/purgatory/entry64.S $kerneldir/build/
+ cp -a --parents arch/x86/boot/string.h $kerneldir/build/
+ cp -a --parents arch/x86/boot/string.c $kerneldir/build/
+ cp -a --parents arch/x86/boot/compressed/string.c $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/x86/boot/ctype.h $kerneldir/build/
+
+ # objtool requires these files
+ cp -a --parents arch/x86/lib/inat.c $kerneldir/build/ 2>/dev/null || :
+ cp -a --parents arch/x86/lib/insn.c $kerneldir/build/ 2>/dev/null || :
+ fi
+
+ if [ "${ARCH}" = "mips" ]; then
+ cp -a --parents arch/mips/Kbuild.platforms $kerneldir/build/
+ cp --parents $(find -type f -name "Platform") $kerneldir/build
+ cp --parents arch/mips/boot/tools/relocs* $kerneldir/build
+ cp -a --parents arch/mips/kernel/asm-offsets.c $kerneldir/build
+ cp -a --parents kernel/time/timeconst.bc $kerneldir/build
+ cp -a --parents kernel/bounds.c $kerneldir/build
+ cp -a --parents Kbuild $kerneldir/build
+ cp -a --parents arch/mips/kernel/syscalls/*.sh $kerneldir/build 2>/dev/null || :
+ cp -a --parents arch/mips/kernel/syscalls/*.tbl $kerneldir/build 2>/dev/null || :
+ cp -a --parents arch/mips/tools/elf-entry.c $kerneldir/build 2>/dev/null || :
+ fi
+
+ # required to build scripts/selinux/genheaders/genheaders
+ cp -a --parents security/selinux/include/* $kerneldir/build/
+
+ # copy any localversion files
+ cp -a localversion* $kerneldir/build/ 2>/dev/null || :
+ )
+
+ # Make sure the Makefile and version.h have a matching timestamp so that
+ # external modules can be built
+ touch -r $kerneldir/build/Makefile $kerneldir/build/include/generated/uapi/linux/version.h
+
+ # Copy .config to include/config/auto.conf so "make prepare" is unnecessary.
+ cp $kerneldir/build/.config $kerneldir/build/include/config/auto.conf
+
+ # make the scripts python3 safe. We won't be running these, and if they are
+ # left as /usr/bin/python rootfs assembly will fail, since we only have python3
+ # in the RDEPENDS (and the python3 package does not include /usr/bin/python)
+ for ss in $(find $kerneldir/build/scripts -type f -name '*'); do
+ sed -i 's,/usr/bin/python2,/usr/bin/env python3,' "$ss"
+ sed -i 's,/usr/bin/env python2,/usr/bin/env python3,' "$ss"
+ sed -i 's,/usr/bin/python,/usr/bin/env python3,' "$ss"
+ done
+
+ chown -R root:root ${D}
+}
+
+# Ensure we don't race against "make scripts" during cpio
+do_install[lockfiles] = "${TMPDIR}/kernel-scripts.lock"
+
+FILES_${PN} = "${KERNEL_BUILD_ROOT} ${KERNEL_SRC_PATH}"
+FILES_${PN}-dbg += "${KERNEL_BUILD_ROOT}*/build/scripts/*/.debug/*"
+
+RDEPENDS_${PN} = "bc python3 flex bison ${TCLIBC}-utils"
+# 4.15+ needs these next two RDEPENDS
+RDEPENDS_${PN} += "openssl-dev util-linux"
+# and x86 needs a bit more for 4.15+
+RDEPENDS_${PN} += "${@bb.utils.contains('ARCH', 'x86', 'elfutils', '', d)}"
diff --git a/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-5.14.inc b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-5.14.inc
new file mode 100644
index 00000000..2807563d
--- /dev/null
+++ b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-5.14.inc
@@ -0,0 +1,4 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux:"
+
+SRC_URI_append = " file://jailhouse.cfg"
+
diff --git a/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-custom_git.bb b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-custom_git.bb
new file mode 100644
index 00000000..6eb55e46
--- /dev/null
+++ b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-custom_git.bb
@@ -0,0 +1,23 @@
+# Recipe created by recipetool
+LICENSE = "GPL-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
+
+inherit kernel
+require recipes-kernel/linux-jailhouse-custom/linux-jailhouse-5.14.inc
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-jailhouse-custom"
+
+SRC_URI = " git://git.kiszka.org/linux.git;branch=queues/jailhouse \
+ file://defconfig \
+ "
+
+SRCREV = "4f96ea3417cc3eb8b96d70f04ac860d8577107a8"
+
+S = "${WORKDIR}/git"
+
+# Modify these as desired
+PV = "5.14-rc2+git${SRCPV}"
+KVER = "5.14"
+
+DEPENDS += "ncurses-native bc-native pkgconfig-native"
+DEPENDS_append_x86-64 = " elfutils-native"
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux/jailhouse.cfg
index d417e556..d417e556 100644
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg
+++ b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux/jailhouse.cfg
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc b/meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc
deleted file mode 100644
index 4b571ffd..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc
+++ /dev/null
@@ -1,39 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/linux:"
-
-SRC_URI_append = " file://jailhouse.cfg"
-
-SRC_URI_append = " \
-file://0001-x86-jailhouse-Improve-setup-data-version-comparison.patch \
-file://0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch \
-file://0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch \
-file://0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch \
-file://0005-mm-Re-export-ioremap_page_range.patch \
-file://0006-arm-arm64-export-__hyp_stub_vectors.patch \
-file://0007-x86-Export-lapic_timer_period.patch \
-file://0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch \
-file://0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch \
-file://0010-uio-Enable-read-only-mappings.patch \
-file://0011-ivshmem-Add-header-file.patch \
-file://0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch \
-file://0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch \
-file://0014-ivshmem-net-Map-shmem-region-as-RAM.patch \
-file://0015-ivshmem-net-fix-race-in-state-machine.patch \
-file://0016-ivshmem-net-Remove-unused-variable.patch \
-file://0017-ivshmem-net-Enable-INTx.patch \
-file://0018-ivshmem-net-Improve-identification-of-resources.patch \
-file://0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch \
-file://0020-ivshmem-net-Add-ethtool-register-dump.patch \
-file://0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch \
-file://0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch \
-file://0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch \
-file://0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch \
-file://0025-ivshmem-net-slightly-improve-debug-output.patch \
-file://0026-ivshmem-net-set-and-check-descriptor-flags.patch \
-file://0027-ivshmem-net-add-MAC-changing-interface.patch \
-file://0028-ivshmem-net-Silence-compiler-warning.patch \
-file://0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch \
-file://0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch \
-file://0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch \
-file://0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch \
-"
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend b/meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend
deleted file mode 100644
index b13f1eb1..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require recipes-kernel/linux/linux-jailhouse-5.4.inc
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch
deleted file mode 100644
index 6b5032df..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch
+++ /dev/null
@@ -1,198 +0,0 @@
-From d47ad4c29f1cd34aff896a88b3dfc4a861a15a6a Mon Sep 17 00:00:00 2001
-From: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
-Date: Thu, 10 Oct 2019 12:21:01 +0200
-Subject: [PATCH 01/32] x86/jailhouse: Improve setup data version comparison
-
-Soon, setup_data will contain information on passed-through platform
-UARTs. This requires some preparational work for the sanity check of the
-header and the check of the version.
-
-Use the following strategy:
-
- 1. Ensure that the header declares at least enough space for the
- version and the compatible_version as it must hold that fields for
- any version. The location and semantics of header+version fields
- will never change.
-
- 2. Copy over data -- as much as as possible. The length is either
- limited by the header length or the length of setup_data.
-
- 3. Things are now in place -- sanity check if the header length
- complies the actual version.
-
-For future versions of the setup_data, only step 3 requires alignment.
-
-Signed-off-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
-Signed-off-by: Borislav Petkov <bp@suse.de>
-Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
-Cc: Baoquan He <bhe@redhat.com>
-Cc: "H. Peter Anvin" <hpa@zytor.com>
-Cc: Ingo Molnar <mingo@redhat.com>
-Cc: jailhouse-dev@googlegroups.com
-Cc: Juergen Gross <jgross@suse.com>
-Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
-Cc: Thomas Gleixner <tglx@linutronix.de>
-Cc: x86-ml <x86@kernel.org>
-Link: https://lkml.kernel.org/r/20191010102102.421035-2-ralf.ramsauer@oth-regensburg.de
----
- arch/x86/include/uapi/asm/bootparam.h | 22 ++++++++-------
- arch/x86/kernel/jailhouse.c | 51 ++++++++++++++++++++++-------------
- 2 files changed, 45 insertions(+), 28 deletions(-)
-
-diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h
-index c895df5482c5..43be437c9c71 100644
---- a/arch/x86/include/uapi/asm/bootparam.h
-+++ b/arch/x86/include/uapi/asm/bootparam.h
-@@ -139,15 +139,19 @@ struct boot_e820_entry {
- * setup data structure.
- */
- struct jailhouse_setup_data {
-- __u16 version;
-- __u16 compatible_version;
-- __u16 pm_timer_address;
-- __u16 num_cpus;
-- __u64 pci_mmconfig_base;
-- __u32 tsc_khz;
-- __u32 apic_khz;
-- __u8 standard_ioapic;
-- __u8 cpu_ids[255];
-+ struct {
-+ __u16 version;
-+ __u16 compatible_version;
-+ } __attribute__((packed)) hdr;
-+ struct {
-+ __u16 pm_timer_address;
-+ __u16 num_cpus;
-+ __u64 pci_mmconfig_base;
-+ __u32 tsc_khz;
-+ __u32 apic_khz;
-+ __u8 standard_ioapic;
-+ __u8 cpu_ids[255];
-+ } __attribute__((packed)) v1;
- } __attribute__((packed));
-
- /* The so-called "zeropage" */
-diff --git a/arch/x86/kernel/jailhouse.c b/arch/x86/kernel/jailhouse.c
-index 3ad34f01de2a..cf4eb37ad97b 100644
---- a/arch/x86/kernel/jailhouse.c
-+++ b/arch/x86/kernel/jailhouse.c
-@@ -22,6 +22,8 @@
- #include <asm/jailhouse_para.h>
-
- static __initdata struct jailhouse_setup_data setup_data;
-+#define SETUP_DATA_V1_LEN (sizeof(setup_data.hdr) + sizeof(setup_data.v1))
-+
- static unsigned int precalibrated_tsc_khz;
-
- static uint32_t jailhouse_cpuid_base(void)
-@@ -45,7 +47,7 @@ static void jailhouse_get_wallclock(struct timespec64 *now)
-
- static void __init jailhouse_timer_init(void)
- {
-- lapic_timer_period = setup_data.apic_khz * (1000 / HZ);
-+ lapic_timer_period = setup_data.v1.apic_khz * (1000 / HZ);
- }
-
- static unsigned long jailhouse_get_tsc(void)
-@@ -88,14 +90,14 @@ static void __init jailhouse_get_smp_config(unsigned int early)
-
- register_lapic_address(0xfee00000);
-
-- for (cpu = 0; cpu < setup_data.num_cpus; cpu++) {
-- generic_processor_info(setup_data.cpu_ids[cpu],
-+ for (cpu = 0; cpu < setup_data.v1.num_cpus; cpu++) {
-+ generic_processor_info(setup_data.v1.cpu_ids[cpu],
- boot_cpu_apic_version);
- }
-
- smp_found_config = 1;
-
-- if (setup_data.standard_ioapic) {
-+ if (setup_data.v1.standard_ioapic) {
- mp_register_ioapic(0, 0xfec00000, gsi_top, &ioapic_cfg);
-
- /* Register 1:1 mapping for legacy UART IRQs 3 and 4 */
-@@ -126,9 +128,9 @@ static int __init jailhouse_pci_arch_init(void)
- pcibios_last_bus = 0xff;
-
- #ifdef CONFIG_PCI_MMCONFIG
-- if (setup_data.pci_mmconfig_base) {
-+ if (setup_data.v1.pci_mmconfig_base) {
- pci_mmconfig_add(0, 0, pcibios_last_bus,
-- setup_data.pci_mmconfig_base);
-+ setup_data.v1.pci_mmconfig_base);
- pci_mmcfg_arch_init();
- }
- #endif
-@@ -139,6 +141,7 @@ static int __init jailhouse_pci_arch_init(void)
- static void __init jailhouse_init_platform(void)
- {
- u64 pa_data = boot_params.hdr.setup_data;
-+ unsigned long setup_data_len;
- struct setup_data header;
- void *mapping;
-
-@@ -163,16 +166,8 @@ static void __init jailhouse_init_platform(void)
- memcpy(&header, mapping, sizeof(header));
- early_memunmap(mapping, sizeof(header));
-
-- if (header.type == SETUP_JAILHOUSE &&
-- header.len >= sizeof(setup_data)) {
-- pa_data += offsetof(struct setup_data, data);
--
-- mapping = early_memremap(pa_data, sizeof(setup_data));
-- memcpy(&setup_data, mapping, sizeof(setup_data));
-- early_memunmap(mapping, sizeof(setup_data));
--
-+ if (header.type == SETUP_JAILHOUSE)
- break;
-- }
-
- pa_data = header.next;
- }
-@@ -180,13 +175,27 @@ static void __init jailhouse_init_platform(void)
- if (!pa_data)
- panic("Jailhouse: No valid setup data found");
-
-- if (setup_data.compatible_version > JAILHOUSE_SETUP_REQUIRED_VERSION)
-- panic("Jailhouse: Unsupported setup data structure");
-+ /* setup data must at least contain the header */
-+ if (header.len < sizeof(setup_data.hdr))
-+ goto unsupported;
-
-- pmtmr_ioport = setup_data.pm_timer_address;
-+ pa_data += offsetof(struct setup_data, data);
-+ setup_data_len = min_t(unsigned long, sizeof(setup_data),
-+ (unsigned long)header.len);
-+ mapping = early_memremap(pa_data, setup_data_len);
-+ memcpy(&setup_data, mapping, setup_data_len);
-+ early_memunmap(mapping, setup_data_len);
-+
-+ if (setup_data.hdr.version == 0 ||
-+ setup_data.hdr.compatible_version !=
-+ JAILHOUSE_SETUP_REQUIRED_VERSION ||
-+ (setup_data.hdr.version >= 1 && header.len < SETUP_DATA_V1_LEN))
-+ goto unsupported;
-+
-+ pmtmr_ioport = setup_data.v1.pm_timer_address;
- pr_debug("Jailhouse: PM-Timer IO Port: %#x\n", pmtmr_ioport);
-
-- precalibrated_tsc_khz = setup_data.tsc_khz;
-+ precalibrated_tsc_khz = setup_data.v1.tsc_khz;
- setup_force_cpu_cap(X86_FEATURE_TSC_KNOWN_FREQ);
-
- pci_probe = 0;
-@@ -196,6 +205,10 @@ static void __init jailhouse_init_platform(void)
- * are none in a non-root cell.
- */
- disable_acpi();
-+ return;
-+
-+unsupported:
-+ panic("Jailhouse: Unsupported setup data structure");
- }
-
- bool jailhouse_paravirt(void)
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch
deleted file mode 100644
index d1db6c71..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch
+++ /dev/null
@@ -1,200 +0,0 @@
-From 7f87114a29351547ffb9bd16c4cafb37524806c6 Mon Sep 17 00:00:00 2001
-From: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
-Date: Thu, 10 Oct 2019 12:21:02 +0200
-Subject: [PATCH 02/32] x86/jailhouse: Only enable platform UARTs if available
-
-ACPI tables aren't available if Linux runs as guest of the hypervisor
-Jailhouse. This makes the 8250 driver probe for all platform UARTs as it
-assumes that all UARTs are present in case of !ACPI. Jailhouse will stop
-execution of Linux guest due to port access violation.
-
-So far, these access violations were solved by tuning the 8250.nr_uarts
-cmdline parameter, but this has limitations: Only consecutive platform
-UARTs can be mapped to Linux, and only in the sequence 0x3f8, 0x2f8,
-0x3e8, 0x2e8.
-
-Beginning from setup_data version 2, Jailhouse will place information of
-available platform UARTs in setup_data. This allows for selective
-activation of platform UARTs.
-
-Query setup_data version and only activate available UARTS. This
-patch comes with backward compatibility, and will still support older
-setup_data versions. In case of older setup_data versions, Linux falls
-back to the old behaviour.
-
-Signed-off-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
-Signed-off-by: Borislav Petkov <bp@suse.de>
-Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
-Cc: Baoquan He <bhe@redhat.com>
-Cc: "H. Peter Anvin" <hpa@zytor.com>
-Cc: Ingo Molnar <mingo@redhat.com>
-Cc: jailhouse-dev@googlegroups.com
-Cc: Juergen Gross <jgross@suse.com>
-Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
-Cc: Thomas Gleixner <tglx@linutronix.de>
-Cc: x86-ml <x86@kernel.org>
-Link: https://lkml.kernel.org/r/20191010102102.421035-3-ralf.ramsauer@oth-regensburg.de
----
- arch/x86/include/uapi/asm/bootparam.h | 3 ++
- arch/x86/kernel/jailhouse.c | 85 +++++++++++++++++++++++++++++------
- 2 files changed, 75 insertions(+), 13 deletions(-)
-
-diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h
-index 43be437c9c71..db1e24e56e94 100644
---- a/arch/x86/include/uapi/asm/bootparam.h
-+++ b/arch/x86/include/uapi/asm/bootparam.h
-@@ -152,6 +152,9 @@ struct jailhouse_setup_data {
- __u8 standard_ioapic;
- __u8 cpu_ids[255];
- } __attribute__((packed)) v1;
-+ struct {
-+ __u32 flags;
-+ } __attribute__((packed)) v2;
- } __attribute__((packed));
-
- /* The so-called "zeropage" */
-diff --git a/arch/x86/kernel/jailhouse.c b/arch/x86/kernel/jailhouse.c
-index cf4eb37ad97b..6eb8b50ea07e 100644
---- a/arch/x86/kernel/jailhouse.c
-+++ b/arch/x86/kernel/jailhouse.c
-@@ -11,6 +11,7 @@
- #include <linux/acpi_pmtmr.h>
- #include <linux/kernel.h>
- #include <linux/reboot.h>
-+#include <linux/serial_8250.h>
- #include <asm/apic.h>
- #include <asm/cpu.h>
- #include <asm/hypervisor.h>
-@@ -21,11 +22,24 @@
- #include <asm/setup.h>
- #include <asm/jailhouse_para.h>
-
--static __initdata struct jailhouse_setup_data setup_data;
-+static struct jailhouse_setup_data setup_data;
- #define SETUP_DATA_V1_LEN (sizeof(setup_data.hdr) + sizeof(setup_data.v1))
-+#define SETUP_DATA_V2_LEN (SETUP_DATA_V1_LEN + sizeof(setup_data.v2))
-
- static unsigned int precalibrated_tsc_khz;
-
-+static void jailhouse_setup_irq(unsigned int irq)
-+{
-+ struct mpc_intsrc mp_irq = {
-+ .type = MP_INTSRC,
-+ .irqtype = mp_INT,
-+ .irqflag = MP_IRQPOL_ACTIVE_HIGH | MP_IRQTRIG_EDGE,
-+ .srcbusirq = irq,
-+ .dstirq = irq,
-+ };
-+ mp_save_irq(&mp_irq);
-+}
-+
- static uint32_t jailhouse_cpuid_base(void)
- {
- if (boot_cpu_data.cpuid_level < 0 ||
-@@ -79,11 +93,6 @@ static void __init jailhouse_get_smp_config(unsigned int early)
- .type = IOAPIC_DOMAIN_STRICT,
- .ops = &mp_ioapic_irqdomain_ops,
- };
-- struct mpc_intsrc mp_irq = {
-- .type = MP_INTSRC,
-- .irqtype = mp_INT,
-- .irqflag = MP_IRQPOL_ACTIVE_HIGH | MP_IRQTRIG_EDGE,
-- };
- unsigned int cpu;
-
- jailhouse_x2apic_init();
-@@ -100,12 +109,12 @@ static void __init jailhouse_get_smp_config(unsigned int early)
- if (setup_data.v1.standard_ioapic) {
- mp_register_ioapic(0, 0xfec00000, gsi_top, &ioapic_cfg);
-
-- /* Register 1:1 mapping for legacy UART IRQs 3 and 4 */
-- mp_irq.srcbusirq = mp_irq.dstirq = 3;
-- mp_save_irq(&mp_irq);
--
-- mp_irq.srcbusirq = mp_irq.dstirq = 4;
-- mp_save_irq(&mp_irq);
-+ if (IS_ENABLED(CONFIG_SERIAL_8250) &&
-+ setup_data.hdr.version < 2) {
-+ /* Register 1:1 mapping for legacy UART IRQs 3 and 4 */
-+ jailhouse_setup_irq(3);
-+ jailhouse_setup_irq(4);
-+ }
- }
- }
-
-@@ -138,6 +147,53 @@ static int __init jailhouse_pci_arch_init(void)
- return 0;
- }
-
-+#ifdef CONFIG_SERIAL_8250
-+static inline bool jailhouse_uart_enabled(unsigned int uart_nr)
-+{
-+ return setup_data.v2.flags & BIT(uart_nr);
-+}
-+
-+static void jailhouse_serial_fixup(int port, struct uart_port *up,
-+ u32 *capabilities)
-+{
-+ static const u16 pcuart_base[] = {0x3f8, 0x2f8, 0x3e8, 0x2e8};
-+ unsigned int n;
-+
-+ for (n = 0; n < ARRAY_SIZE(pcuart_base); n++) {
-+ if (pcuart_base[n] != up->iobase)
-+ continue;
-+
-+ if (jailhouse_uart_enabled(n)) {
-+ pr_info("Enabling UART%u (port 0x%lx)\n", n,
-+ up->iobase);
-+ jailhouse_setup_irq(up->irq);
-+ } else {
-+ /* Deactivate UART if access isn't allowed */
-+ up->iobase = 0;
-+ }
-+ break;
-+ }
-+}
-+
-+static void __init jailhouse_serial_workaround(void)
-+{
-+ /*
-+ * There are flags inside setup_data that indicate availability of
-+ * platform UARTs since setup data version 2.
-+ *
-+ * In case of version 1, we don't know which UARTs belong Linux. In
-+ * this case, unconditionally register 1:1 mapping for legacy UART IRQs
-+ * 3 and 4.
-+ */
-+ if (setup_data.hdr.version > 1)
-+ serial8250_set_isa_configurator(jailhouse_serial_fixup);
-+}
-+#else /* !CONFIG_SERIAL_8250 */
-+static inline void jailhouse_serial_workaround(void)
-+{
-+}
-+#endif /* CONFIG_SERIAL_8250 */
-+
- static void __init jailhouse_init_platform(void)
- {
- u64 pa_data = boot_params.hdr.setup_data;
-@@ -189,7 +245,8 @@ static void __init jailhouse_init_platform(void)
- if (setup_data.hdr.version == 0 ||
- setup_data.hdr.compatible_version !=
- JAILHOUSE_SETUP_REQUIRED_VERSION ||
-- (setup_data.hdr.version >= 1 && header.len < SETUP_DATA_V1_LEN))
-+ (setup_data.hdr.version == 1 && header.len < SETUP_DATA_V1_LEN) ||
-+ (setup_data.hdr.version >= 2 && header.len < SETUP_DATA_V2_LEN))
- goto unsupported;
-
- pmtmr_ioport = setup_data.v1.pm_timer_address;
-@@ -205,6 +262,8 @@ static void __init jailhouse_init_platform(void)
- * are none in a non-root cell.
- */
- disable_acpi();
-+
-+ jailhouse_serial_workaround();
- return;
-
- unsupported:
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch
deleted file mode 100644
index 289f54ac..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From faa349f4d096554c6d5bfe74634599d2e26f64a7 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 11 Sep 2016 23:30:04 +0200
-Subject: [PATCH 03/32] jailhouse: Add simple debug console via the hypervisor
-
-Jailhouse allows explicitly enabled cells to write character-wise
-messages to the hypervisor debug console. Make use of this for a
-platform-agnostic boot diagnosis channel, specifically for non-root
-cells. This also comes with earlycon support.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- MAINTAINERS | 1 +
- drivers/virt/Kconfig | 11 +++++
- drivers/virt/Makefile | 1 +
- drivers/virt/jailhouse_dbgcon.c | 103 ++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 116 insertions(+)
- create mode 100644 drivers/virt/jailhouse_dbgcon.c
-
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 9d3a5c54a41d..07cb4d674c93 100644
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -8761,6 +8761,7 @@ L: jailhouse-dev@googlegroups.com
- S: Maintained
- F: arch/x86/kernel/jailhouse.c
- F: arch/x86/include/asm/jailhouse_para.h
-+F: drivers/virt/jailhouse_dbgcon.c
-
- JC42.4 TEMPERATURE SENSOR DRIVER
- M: Guenter Roeck <linux@roeck-us.net>
-diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
-index 363af2eaf2ba..99c5eaca6952 100644
---- a/drivers/virt/Kconfig
-+++ b/drivers/virt/Kconfig
-@@ -31,5 +31,16 @@ config FSL_HV_MANAGER
- 4) A kernel interface for receiving callbacks when a managed
- partition shuts down.
-
-+config JAILHOUSE_DBGCON
-+ tristate "Jailhouse console driver"
-+ depends on X86 || ARM || ARM64
-+ help
-+ The Jailhouse hypervisor provides a simple write-only console for
-+ debugging the bootstrap process of its cells. This driver registers
-+ a console with the kernel to make use of it.
-+
-+ Note that Jailhouse has to be configured to permit a cell the usage
-+ of the console interface.
-+
- source "drivers/virt/vboxguest/Kconfig"
- endif
-diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
-index fd331247c27a..89e86a1d0f19 100644
---- a/drivers/virt/Makefile
-+++ b/drivers/virt/Makefile
-@@ -4,4 +4,5 @@
- #
-
- obj-$(CONFIG_FSL_HV_MANAGER) += fsl_hypervisor.o
-+obj-$(CONFIG_JAILHOUSE_DBGCON) += jailhouse_dbgcon.o
- obj-y += vboxguest/
-diff --git a/drivers/virt/jailhouse_dbgcon.c b/drivers/virt/jailhouse_dbgcon.c
-new file mode 100644
-index 000000000000..1fd201ea1460
---- /dev/null
-+++ b/drivers/virt/jailhouse_dbgcon.c
-@@ -0,0 +1,103 @@
-+/* SPDX-License-Identifier: GPL-2.0 */
-+/*
-+ * Console driver for running over the Jailhouse partitioning hypervisor
-+ *
-+ * Copyright (c) Siemens AG, 2016-2018
-+ *
-+ * Authors:
-+ * Jan Kiszka <jan.kiszka@siemens.com>
-+ */
-+
-+#include <linux/console.h>
-+#include <linux/hypervisor.h>
-+#include <linux/module.h>
-+#include <linux/serial_core.h>
-+#ifdef CONFIG_X86
-+#include <asm/alternative.h>
-+#endif
-+#ifdef CONFIG_ARM
-+#include <asm/opcodes-virt.h>
-+#endif
-+
-+#define JAILHOUSE_HC_DEBUG_CONSOLE_PUTC 8
-+
-+static void hypervisor_putc(char c)
-+{
-+#if defined(CONFIG_X86)
-+ int result;
-+
-+ asm volatile(
-+ ALTERNATIVE(".byte 0x0f,0x01,0xc1", ".byte 0x0f,0x01,0xd9",
-+ X86_FEATURE_VMMCALL)
-+ : "=a" (result)
-+ : "a" (JAILHOUSE_HC_DEBUG_CONSOLE_PUTC), "D" (c)
-+ : "memory");
-+#elif defined(CONFIG_ARM)
-+ register u32 num_res asm("r0") = JAILHOUSE_HC_DEBUG_CONSOLE_PUTC;
-+ register u32 arg1 asm("r1") = c;
-+
-+ asm volatile(
-+ __HVC(0x4a48)
-+ : "=r" (num_res)
-+ : "r" (num_res), "r" (arg1)
-+ : "memory");
-+#elif defined(CONFIG_ARM64)
-+ register u64 num_res asm("x0") = JAILHOUSE_HC_DEBUG_CONSOLE_PUTC;
-+ register u64 arg1 asm("x1") = c;
-+
-+ asm volatile(
-+ "hvc #0x4a48\n\t"
-+ : "=r" (num_res)
-+ : "r" (num_res), "r" (arg1)
-+ : "memory");
-+#else
-+#error Unsupported architecture.
-+#endif
-+}
-+
-+static void jailhouse_dbgcon_write(struct console *con, const char *s,
-+ unsigned count)
-+{
-+ while (count > 0) {
-+ hypervisor_putc(*s);
-+ count--;
-+ s++;
-+ }
-+}
-+
-+static int __init early_jailhouse_dbgcon_setup(struct earlycon_device *device,
-+ const char *options)
-+{
-+ device->con->write = jailhouse_dbgcon_write;
-+ return 0;
-+}
-+
-+EARLYCON_DECLARE(jailhouse, early_jailhouse_dbgcon_setup);
-+
-+static struct console jailhouse_dbgcon = {
-+ .name = "jailhouse",
-+ .write = jailhouse_dbgcon_write,
-+ .flags = CON_PRINTBUFFER | CON_ANYTIME,
-+ .index = -1,
-+};
-+
-+static int __init jailhouse_dbgcon_init(void)
-+{
-+ if (!jailhouse_paravirt())
-+ return -ENODEV;
-+
-+ register_console(&jailhouse_dbgcon);
-+ return 0;
-+}
-+
-+static void __exit jailhouse_dbgcon_exit(void)
-+{
-+ unregister_console(&jailhouse_dbgcon);
-+}
-+
-+module_init(jailhouse_dbgcon_init);
-+module_exit(jailhouse_dbgcon_exit);
-+
-+MODULE_LICENSE("GPL v2");
-+MODULE_DESCRIPTION("Jailhouse debug console driver");
-+MODULE_AUTHOR("Jan Kiszka <jan.kiszka@siemens.com>");
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch
deleted file mode 100644
index 6e4470f0..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 56e5aace5a675af0557b87a137b98e40454d8e22 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 3 Jul 2016 10:02:40 +0200
-Subject: [PATCH 04/32] arm: Export __boot_cpu_mode for use in Jailhouse driver
- module
-
-Onlining a CPU while Jailhouse was running sets BOOT_CPU_MODE_MISMATCH
-because the kernel detect that the CPU will now only come up in SVC
-mode. Therefore, we need to fix up the flag after disabling Jailhouse
-again.
-
-Moreover, exporting the symbol allows to use is_hyp_mode_available() in
-the driver, thus prevents us from crashing during Jailhouse activation
-when there is no hyp stub installed.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- arch/arm/kernel/armksyms.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c
-index 98bdea51089d..f2fa635bccf7 100644
---- a/arch/arm/kernel/armksyms.c
-+++ b/arch/arm/kernel/armksyms.c
-@@ -17,6 +17,7 @@
-
- #include <asm/checksum.h>
- #include <asm/ftrace.h>
-+#include <asm/virt.h>
-
- /*
- * libgcc functions - functions that are used internally by the
-@@ -176,3 +177,7 @@ EXPORT_SYMBOL(__pv_offset);
- EXPORT_SYMBOL(__arm_smccc_smc);
- EXPORT_SYMBOL(__arm_smccc_hvc);
- #endif
-+
-+#ifdef CONFIG_ARM_VIRT_EXT
-+EXPORT_SYMBOL_GPL(__boot_cpu_mode);
-+#endif
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch
deleted file mode 100644
index e6bf1c35..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From cf5d27beb6aad2b69d716b0aee08f43619c338a9 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Tue, 7 Feb 2017 17:52:00 +0100
-Subject: [PATCH 05/32] mm: Re-export ioremap_page_range
-
-We need this in Jailhouse to map at specific virtual addresses, at
-least for the moment.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- lib/ioremap.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/lib/ioremap.c b/lib/ioremap.c
-index 0a2ffadc6d71..baefdda8f32c 100644
---- a/lib/ioremap.c
-+++ b/lib/ioremap.c
-@@ -231,3 +231,4 @@ int ioremap_page_range(unsigned long addr,
-
- return err;
- }
-+EXPORT_SYMBOL_GPL(ioremap_page_range);
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch
deleted file mode 100644
index 42f3ea48..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 27588702a6792ff86a57317ef60d6e218796598e Mon Sep 17 00:00:00 2001
-From: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
-Date: Wed, 7 Jun 2017 15:48:43 +0200
-Subject: [PATCH 06/32] arm, arm64: export __hyp_stub_vectors
-
-HVC_GET_VECTORS got removed. External hypervisors, like Jailhouse, need
-this address when they are deactivated, in order to restore original
-state.
-
-Signed-off-by: Ralf Ramsauer <ralf.ramsauer@oth-regensburg.de>
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- arch/arm/kernel/hyp-stub.S | 2 ++
- arch/arm64/kernel/hyp-stub.S | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S
-index ae5020302de4..463366ccd2c9 100644
---- a/arch/arm/kernel/hyp-stub.S
-+++ b/arch/arm/kernel/hyp-stub.S
-@@ -6,6 +6,7 @@
- #include <linux/init.h>
- #include <linux/irqchip/arm-gic-v3.h>
- #include <linux/linkage.h>
-+#include <asm-generic/export.h>
- #include <asm/assembler.h>
- #include <asm/virt.h>
-
-@@ -269,4 +270,5 @@ __hyp_stub_trap: W(b) __hyp_stub_do_trap
- __hyp_stub_irq: W(b) .
- __hyp_stub_fiq: W(b) .
- ENDPROC(__hyp_stub_vectors)
-+EXPORT_SYMBOL_GPL(__hyp_stub_vectors)
-
-diff --git a/arch/arm64/kernel/hyp-stub.S b/arch/arm64/kernel/hyp-stub.S
-index 73d46070b315..ef2503bba71d 100644
---- a/arch/arm64/kernel/hyp-stub.S
-+++ b/arch/arm64/kernel/hyp-stub.S
-@@ -10,6 +10,7 @@
- #include <linux/linkage.h>
- #include <linux/irqchip/arm-gic-v3.h>
-
-+#include <asm-generic/export.h>
- #include <asm/assembler.h>
- #include <asm/kvm_arm.h>
- #include <asm/kvm_asm.h>
-@@ -42,6 +43,7 @@ ENTRY(__hyp_stub_vectors)
- ventry el1_fiq_invalid // FIQ 32-bit EL1
- ventry el1_error_invalid // Error 32-bit EL1
- ENDPROC(__hyp_stub_vectors)
-+EXPORT_SYMBOL_GPL(__hyp_stub_vectors)
-
- .align 11
-
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch
deleted file mode 100644
index 9b2a2f2c..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 3f87075ce9d3e04e8e43de2e88dd7728b3777eb8 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Thu, 23 Nov 2017 07:12:57 +0100
-Subject: [PATCH 07/32] x86: Export lapic_timer_period
-
-Required for the Jailhouse driver in order to forward the calibration
-value to other cells.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- arch/x86/kernel/apic/apic.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
-index 2b0faf86da1b..0428ad289899 100644
---- a/arch/x86/kernel/apic/apic.c
-+++ b/arch/x86/kernel/apic/apic.c
-@@ -196,6 +196,7 @@ static struct resource lapic_resource = {
- };
-
- unsigned int lapic_timer_period = 0;
-+EXPORT_SYMBOL_GPL(lapic_timer_period);
-
- static void apic_pm_activate(void);
-
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch
deleted file mode 100644
index 963989cf..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 764a3a5da899b596474edf916b44dfc034443445 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Mon, 17 Sep 2018 08:08:08 +0200
-Subject: [PATCH 08/32] arm64: dts: marvell: armada-37xx: Set pci-domain
-
-This is a nop for normal operation but allows the device tree overlay
-that the Jailhouse hypervisor injects to use pci-domain as well
-(linux,pci-domain has to be applied consistently in a system). That will
-assign a stable PCI domain to the secondary, virtual host controller of
-Jailhouse.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
-index 000c135e39b7..d839cea9d361 100644
---- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
-+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
-@@ -482,6 +482,7 @@
- #address-cells = <3>;
- #size-cells = <2>;
- bus-range = <0x00 0xff>;
-+ linux,pci-domain = <0>;
- interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
- #interrupt-cells = <1>;
- msi-parent = <&pcie0>;
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch
deleted file mode 100644
index 8e99fa12..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 1f916502347d2b902002b430cffe18b11685f211 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 30 Sep 2018 21:22:32 +0200
-Subject: [PATCH 09/32] arm64: dts: marvell: armada-8030-mcbin: Set pci-domain
-
-This is a nop for normal operation but allows the device tree overlay
-that the Jailhouse hypervisor injects to use pci-domain as well
-(linux,pci-domain has to be applied consistently in a system). That will
-assign a stable PCI domain to the secondary, virtual host controller of
-Jailhouse.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi b/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
-index d250f4b2bfed..58bac50b06eb 100644
---- a/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
-+++ b/arch/arm64/boot/dts/marvell/armada-8040-mcbin.dtsi
-@@ -174,6 +174,7 @@
- };
-
- &cp0_pcie0 {
-+ linux,pci-domain = <0>;
- pinctrl-names = "default";
- pinctrl-0 = <&cp0_pcie_pins>;
- num-lanes = <4>;
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch
deleted file mode 100644
index 2fa65641..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 9c8885c6e020451e4a4578be9db318e5c07227ea Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Tue, 4 Jun 2019 14:40:09 +0200
-Subject: [PATCH 10/32] uio: Enable read-only mappings
-
-This allows to tag memory regions read-only, denying userspace to map
-them writable. Default remains read/write.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/uio/uio.c | 9 +++++++++
- include/linux/uio_driver.h | 2 ++
- 2 files changed, 11 insertions(+)
-
-diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
-index a57698985f9c..ac18542ee4fe 100644
---- a/drivers/uio/uio.c
-+++ b/drivers/uio/uio.c
-@@ -790,6 +790,15 @@ static int uio_mmap(struct file *filep, struct vm_area_struct *vma)
- goto out;
- }
-
-+ if (idev->info->mem[mi].readonly) {
-+ if (vma->vm_flags & VM_WRITE) {
-+ ret = -EINVAL;
-+ goto out;
-+ }
-+
-+ vma->vm_flags &= ~VM_MAYWRITE;
-+ }
-+
- if (idev->info->mmap) {
- ret = idev->info->mmap(idev->info, vma);
- goto out;
-diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
-index 01081c4726c0..ebfc06e36ca2 100644
---- a/include/linux/uio_driver.h
-+++ b/include/linux/uio_driver.h
-@@ -31,6 +31,7 @@ struct uio_map;
- * @offs: offset of device memory within the page
- * @size: size of IO (multiple of page size)
- * @memtype: type of memory addr points to
-+ * @readonly: true of region is read-only
- * @internal_addr: ioremap-ped version of addr, for driver internal use
- * @map: for use by the UIO core only.
- */
-@@ -40,6 +41,7 @@ struct uio_mem {
- unsigned long offs;
- resource_size_t size;
- int memtype;
-+ bool readonly;
- void __iomem *internal_addr;
- struct uio_map *map;
- };
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch
deleted file mode 100644
index f143d150..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 61d003be018fb5b874e6ffbf746684c53556c00e Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Tue, 1 Oct 2019 12:33:25 +0200
-Subject: [PATCH 11/32] ivshmem: Add header file
-
-Common defines and structures for the ivshmem device.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- include/linux/ivshmem.h | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
- create mode 100644 include/linux/ivshmem.h
-
-diff --git a/include/linux/ivshmem.h b/include/linux/ivshmem.h
-new file mode 100644
-index 000000000000..bad8547f071b
---- /dev/null
-+++ b/include/linux/ivshmem.h
-@@ -0,0 +1,30 @@
-+/* SPDX-License-Identifier: GPL-2.0-only */
-+#ifndef _LINUX_IVSHMEM_H
-+#define _LINUX_IVSHMEM_H
-+
-+#include <linux/types.h>
-+
-+#define IVSHM_PROTO_UNDEFINED 0x0000
-+#define IVSHM_PROTO_NET 0x0001
-+#define IVSHM_PROTO_VIRTIO_FRONT 0x8000
-+#define IVSHM_PROTO_VIRTIO_BACK 0xc000
-+#define IVSHM_PROTO_VIRTIO_DEVID_MASK 0x7fff
-+
-+#define IVSHM_CFG_PRIV_CNTL 0x03
-+# define IVSHM_PRIV_CNTL_ONESHOT_INT BIT(0)
-+#define IVSHM_CFG_STATE_TAB_SZ 0x04
-+#define IVSHM_CFG_RW_SECTION_SZ 0x08
-+#define IVSHM_CFG_OUTPUT_SECTION_SZ 0x10
-+#define IVSHM_CFG_ADDRESS 0x18
-+
-+struct ivshm_regs {
-+ u32 id;
-+ u32 max_peers;
-+ u32 int_control;
-+ u32 doorbell;
-+ u32 state;
-+};
-+
-+#define IVSHM_INT_ENABLE BIT(0)
-+
-+#endif /* _LINUX_IVSHMEM_H */
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch
deleted file mode 100644
index f98670c3..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch
+++ /dev/null
@@ -1,311 +0,0 @@
-From 205cdad2dc9fc8a6a7204b2a71408b43085dd45f Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Tue, 4 Jun 2019 18:40:25 +0200
-Subject: [PATCH 12/32] uio: Add driver for inter-VM shared memory device
-
-This adds a UIO driver the ivshmem device, found in QEMU and the
-Jailhouse hypervisor. It exposes the MMIO register region and all shared
-memory section to userspace. Interrupts are configured in one-shot mode
-so that userspace needs to re-enable them after each event via the
-Interrupt Control register. The driver registers all possible MSI-X
-vectors, coalescing them into the single notifier UIO provides.
-
-Note: Specification work for the interface is ongoing, so details may
-still change.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/uio/Kconfig | 7 ++
- drivers/uio/Makefile | 1 +
- drivers/uio/uio_ivshmem.c | 241 ++++++++++++++++++++++++++++++++++++++++++++++
- include/linux/pci_ids.h | 1 +
- 4 files changed, 250 insertions(+)
- create mode 100644 drivers/uio/uio_ivshmem.c
-
-diff --git a/drivers/uio/Kconfig b/drivers/uio/Kconfig
-index 202ee81cfc2b..a130500f46b8 100644
---- a/drivers/uio/Kconfig
-+++ b/drivers/uio/Kconfig
-@@ -165,4 +165,11 @@ config UIO_HV_GENERIC
- to network and storage devices from userspace.
-
- If you compile this as a module, it will be called uio_hv_generic.
-+
-+config UIO_IVSHMEM
-+ tristate "Inter-VM Shared Memory driver"
-+ depends on PCI
-+ help
-+ Userspace I/O driver for the inter-VM shared memory PCI device
-+ as provided by QEMU and the Jailhouse hypervisor.
- endif
-diff --git a/drivers/uio/Makefile b/drivers/uio/Makefile
-index c285dd2a4539..3911fefb2a7e 100644
---- a/drivers/uio/Makefile
-+++ b/drivers/uio/Makefile
-@@ -11,3 +11,4 @@ obj-$(CONFIG_UIO_PRUSS) += uio_pruss.o
- obj-$(CONFIG_UIO_MF624) += uio_mf624.o
- obj-$(CONFIG_UIO_FSL_ELBC_GPCM) += uio_fsl_elbc_gpcm.o
- obj-$(CONFIG_UIO_HV_GENERIC) += uio_hv_generic.o
-+obj-$(CONFIG_UIO_IVSHMEM) += uio_ivshmem.o
-diff --git a/drivers/uio/uio_ivshmem.c b/drivers/uio/uio_ivshmem.c
-new file mode 100644
-index 000000000000..0c16d428c6ed
---- /dev/null
-+++ b/drivers/uio/uio_ivshmem.c
-@@ -0,0 +1,241 @@
-+// SPDX-License-Identifier: GPL-2.0
-+/*
-+ * UIO driver for Inter-VM shared memory PCI device
-+ *
-+ * Copyright (c) Siemens AG, 2019
-+ *
-+ * Authors:
-+ * Jan Kiszka <jan.kiszka@siemens.com>
-+ */
-+
-+#include <linux/ivshmem.h>
-+#include <linux/module.h>
-+#include <linux/pci.h>
-+#include <linux/uio_driver.h>
-+
-+#define DRV_NAME "uio_ivshmem"
-+
-+struct ivshm_dev {
-+ struct uio_info info;
-+ struct pci_dev *pdev;
-+ struct ivshm_regs __iomem *regs;
-+ int vectors;
-+};
-+
-+static irqreturn_t ivshm_irq_handler(int irq, void *dev_id)
-+{
-+ struct ivshm_dev *ivshm_dev = (struct ivshm_dev *)dev_id;
-+
-+ /* nothing else to do, we configured one-shot interrupt mode */
-+ uio_event_notify(&ivshm_dev->info);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static u64 get_config_qword(struct pci_dev *pdev, unsigned int pos)
-+{
-+ u32 lo, hi;
-+
-+ pci_read_config_dword(pdev, pos, &lo);
-+ pci_read_config_dword(pdev, pos + 4, &hi);
-+ return lo | ((u64)hi << 32);
-+}
-+
-+static int ivshm_release(struct uio_info *info, struct inode *inode)
-+{
-+ struct ivshm_dev *ivshm_dev =
-+ container_of(info, struct ivshm_dev, info);
-+
-+ writel(0, &ivshm_dev->regs->state);
-+ return 0;
-+}
-+
-+static int ivshm_probe(struct pci_dev *pdev, const struct pci_device_id *id)
-+{
-+ resource_size_t rw_section_sz, output_section_sz;
-+ struct ivshm_dev *ivshm_dev;
-+ phys_addr_t section_addr;
-+ int err, vendor_cap, i;
-+ unsigned int cap_pos;
-+ struct uio_mem *mem;
-+ char *device_name;
-+ u32 dword;
-+
-+ ivshm_dev = devm_kzalloc(&pdev->dev, sizeof(struct ivshm_dev),
-+ GFP_KERNEL);
-+ if (!ivshm_dev)
-+ return -ENOMEM;
-+
-+ err = pcim_enable_device(pdev);
-+ if (err)
-+ return err;
-+
-+ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s[%s]", DRV_NAME,
-+ dev_name(&pdev->dev));
-+ if (!device_name)
-+ return -ENOMEM;
-+
-+ ivshm_dev->info.name = device_name;
-+ ivshm_dev->info.version = "1";
-+ ivshm_dev->info.release = ivshm_release;
-+
-+ err = pcim_iomap_regions(pdev, BIT(0), device_name);
-+ if (err)
-+ return err;
-+ ivshm_dev->regs = pcim_iomap_table(pdev)[0];
-+
-+ mem = &ivshm_dev->info.mem[0];
-+
-+ mem->name = "registers";
-+ mem->addr = pci_resource_start(pdev, 0);
-+ if (!mem->addr)
-+ return -ENODEV;
-+ mem->size = pci_resource_len(pdev, 0);
-+ mem->memtype = UIO_MEM_PHYS;
-+
-+ vendor_cap = pci_find_capability(pdev, PCI_CAP_ID_VNDR);
-+ if (vendor_cap < 0)
-+ return -ENODEV;
-+
-+ if (pci_resource_len(pdev, 2) > 0) {
-+ section_addr = pci_resource_start(pdev, 2);
-+ } else {
-+ cap_pos = vendor_cap + IVSHM_CFG_ADDRESS;
-+ section_addr = get_config_qword(pdev, cap_pos);
-+ }
-+
-+ mem++;
-+ mem->name = "state_table";
-+ mem->addr = section_addr;
-+ cap_pos = vendor_cap + IVSHM_CFG_STATE_TAB_SZ;
-+ pci_read_config_dword(pdev, cap_pos, &dword);
-+ mem->size = dword;
-+ mem->memtype = UIO_MEM_IOVA;
-+ mem->readonly = true;
-+ if (!devm_request_mem_region(&pdev->dev, mem->addr, mem->size,
-+ device_name))
-+ return -EBUSY;
-+ dev_info(&pdev->dev, "%s at %pa, size %pa\n", mem->name, &mem->addr,
-+ &mem->size);
-+
-+ cap_pos = vendor_cap + IVSHM_CFG_RW_SECTION_SZ;
-+ rw_section_sz = get_config_qword(pdev, cap_pos);
-+ if (rw_section_sz > 0) {
-+ section_addr += mem->size;
-+
-+ mem++;
-+ mem->name = "rw_section";
-+ mem->addr = section_addr;
-+ mem->size = rw_section_sz;
-+ mem->memtype = UIO_MEM_IOVA;
-+ if (!devm_request_mem_region(&pdev->dev, mem->addr, mem->size,
-+ device_name))
-+ return -EBUSY;
-+ dev_info(&pdev->dev, "%s at %pa, size %pa\n", mem->name,
-+ &mem->addr, &mem->size);
-+ }
-+
-+ cap_pos = vendor_cap + IVSHM_CFG_OUTPUT_SECTION_SZ;
-+ output_section_sz = get_config_qword(pdev, cap_pos);
-+ if (output_section_sz > 0) {
-+ section_addr += mem->size;
-+
-+ mem++;
-+ mem->name = "input_sections";
-+ mem->addr = section_addr;
-+ mem->size =
-+ readl(&ivshm_dev->regs->max_peers) * output_section_sz;
-+ mem->memtype = UIO_MEM_IOVA;
-+ mem->readonly = true;
-+ if (!devm_request_mem_region(&pdev->dev, mem->addr, mem->size,
-+ device_name))
-+ return -EBUSY;
-+ dev_info(&pdev->dev, "%s at %pa, size %pa\n", mem->name,
-+ &mem->addr, &mem->size);
-+
-+ mem++;
-+ mem->name = "output_section";
-+ mem->addr = section_addr +
-+ readl(&ivshm_dev->regs->id) * output_section_sz;
-+ mem->size = output_section_sz;
-+ mem->memtype = UIO_MEM_IOVA;
-+ dev_info(&pdev->dev, "%s at %pa, size %pa\n", mem->name,
-+ &mem->addr, &mem->size);
-+ }
-+
-+ pci_write_config_byte(pdev, vendor_cap + IVSHM_CFG_PRIV_CNTL,
-+ IVSHM_PRIV_CNTL_ONESHOT_INT);
-+
-+ /*
-+ * Grab all vectors although we can only coalesce them into a single
-+ * notifier. This avoids missing any event.
-+ */
-+ ivshm_dev->vectors = pci_msix_vec_count(pdev);
-+ if (ivshm_dev->vectors < 0)
-+ ivshm_dev->vectors = 1;
-+
-+ err = pci_alloc_irq_vectors(pdev, ivshm_dev->vectors,
-+ ivshm_dev->vectors,
-+ PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
-+ if (err < 0)
-+ return err;
-+
-+ for (i = 0; i < ivshm_dev->vectors; i++) {
-+ err = request_irq(pci_irq_vector(pdev, i), ivshm_irq_handler,
-+ IRQF_SHARED, ivshm_dev->info.name, ivshm_dev);
-+ if (err)
-+ goto error;
-+ }
-+
-+ ivshm_dev->info.irq = UIO_IRQ_CUSTOM;
-+
-+ err = uio_register_device(&pdev->dev, &ivshm_dev->info);
-+ if (err)
-+ goto error;
-+
-+ pci_set_master(pdev);
-+
-+ pci_set_drvdata(pdev, ivshm_dev);
-+
-+ return 0;
-+
-+error:
-+ while (--i > 0)
-+ free_irq(pci_irq_vector(pdev, i), ivshm_dev);
-+ pci_free_irq_vectors(pdev);
-+ return err;
-+}
-+
-+static void ivshm_remove(struct pci_dev *pdev)
-+{
-+ struct ivshm_dev *ivshm_dev = pci_get_drvdata(pdev);
-+ int i;
-+
-+ writel(0, &ivshm_dev->regs->int_control);
-+ pci_clear_master(pdev);
-+
-+ uio_unregister_device(&ivshm_dev->info);
-+
-+ for (i = 0; i < ivshm_dev->vectors; i++)
-+ free_irq(pci_irq_vector(pdev, i), ivshm_dev);
-+
-+ pci_free_irq_vectors(pdev);
-+}
-+
-+static const struct pci_device_id ivshm_device_id_table[] = {
-+ { PCI_DEVICE(PCI_VENDOR_ID_SIEMENS, PCI_DEVICE_ID_IVSHMEM),
-+ (PCI_CLASS_OTHERS << 16) | IVSHM_PROTO_UNDEFINED, 0xffffff },
-+ { 0 }
-+};
-+MODULE_DEVICE_TABLE(pci, ivshm_device_id_table);
-+
-+static struct pci_driver uio_ivshm_driver = {
-+ .name = DRV_NAME,
-+ .id_table = ivshm_device_id_table,
-+ .probe = ivshm_probe,
-+ .remove = ivshm_remove,
-+};
-+module_pci_driver(uio_ivshm_driver);
-+
-+MODULE_AUTHOR("Jan Kiszka <jan.kiszka@siemens.com>");
-+MODULE_LICENSE("GPL v2");
-diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
-index 21a572469a4e..e450458c8ba8 100644
---- a/include/linux/pci_ids.h
-+++ b/include/linux/pci_ids.h
-@@ -1477,6 +1477,7 @@
-
- #define PCI_VENDOR_ID_SIEMENS 0x110A
- #define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102
-+#define PCI_DEVICE_ID_IVSHMEM 0x4106
-
- #define PCI_VENDOR_ID_VORTEX 0x1119
- #define PCI_DEVICE_ID_VORTEX_GDT60x0 0x0000
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch
deleted file mode 100644
index ae5ac475..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch
+++ /dev/null
@@ -1,968 +0,0 @@
-From fa0e2362149bb814d6b7431a7c42989d33002f60 Mon Sep 17 00:00:00 2001
-From: Mans Rullgard <mans@mansr.com>
-Date: Thu, 26 May 2016 16:04:02 +0100
-Subject: [PATCH 13/32] ivshmem-net: virtual network device for Jailhouse
-
-Work in progress.
----
- drivers/net/Kconfig | 4 +
- drivers/net/Makefile | 2 +
- drivers/net/ivshmem-net.c | 923 ++++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 929 insertions(+)
- create mode 100644 drivers/net/ivshmem-net.c
-
-diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
-index df1c7989e13d..8c65f55163e3 100644
---- a/drivers/net/Kconfig
-+++ b/drivers/net/Kconfig
-@@ -527,4 +527,8 @@ config NET_FAILOVER
- a VM with direct attached VF by failing over to the paravirtual
- datapath when the VF is unplugged.
-
-+config IVSHMEM_NET
-+ tristate "IVSHMEM virtual network device"
-+ depends on PCI
-+
- endif # NETDEVICES
-diff --git a/drivers/net/Makefile b/drivers/net/Makefile
-index 0d3ba056cda3..5041c293d4d0 100644
---- a/drivers/net/Makefile
-+++ b/drivers/net/Makefile
-@@ -79,3 +79,5 @@ thunderbolt-net-y += thunderbolt.o
- obj-$(CONFIG_THUNDERBOLT_NET) += thunderbolt-net.o
- obj-$(CONFIG_NETDEVSIM) += netdevsim/
- obj-$(CONFIG_NET_FAILOVER) += net_failover.o
-+
-+obj-$(CONFIG_IVSHMEM_NET) += ivshmem-net.o
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-new file mode 100644
-index 000000000000..b676bed2cc2e
---- /dev/null
-+++ b/drivers/net/ivshmem-net.c
-@@ -0,0 +1,923 @@
-+/*
-+ * Copyright 2016 Mans Rullgard <mans@mansr.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/module.h>
-+#include <linux/pci.h>
-+#include <linux/io.h>
-+#include <linux/bitops.h>
-+#include <linux/interrupt.h>
-+#include <linux/netdevice.h>
-+#include <linux/etherdevice.h>
-+#include <linux/rtnetlink.h>
-+#include <linux/virtio_ring.h>
-+
-+#define DRV_NAME "ivshmem-net"
-+
-+#define JAILHOUSE_CFG_SHMEM_PTR 0x40
-+#define JAILHOUSE_CFG_SHMEM_SZ 0x48
-+
-+#define IVSHM_NET_STATE_RESET 0
-+#define IVSHM_NET_STATE_INIT 1
-+#define IVSHM_NET_STATE_READY 2
-+#define IVSHM_NET_STATE_RUN 3
-+
-+#define IVSHM_NET_MTU_MIN 256
-+#define IVSHM_NET_MTU_MAX 65535
-+#define IVSHM_NET_MTU_DEF 16384
-+
-+#define IVSHM_NET_FRAME_SIZE(s) ALIGN(18 + (s), SMP_CACHE_BYTES)
-+
-+#define IVSHM_NET_VQ_ALIGN 64
-+
-+struct ivshmem_regs {
-+ u32 imask;
-+ u32 istat;
-+ u32 ivpos;
-+ u32 doorbell;
-+ u32 lstate;
-+ u32 rstate;
-+};
-+
-+struct ivshm_net_queue {
-+ struct vring vr;
-+ u32 free_head;
-+ u32 num_free;
-+ u32 num_added;
-+ u16 last_avail_idx;
-+ u16 last_used_idx;
-+
-+ void *data;
-+ void *end;
-+ u32 size;
-+ u32 head;
-+ u32 tail;
-+};
-+
-+struct ivshm_net_stats {
-+ u32 interrupts;
-+ u32 tx_packets;
-+ u32 tx_notify;
-+ u32 tx_pause;
-+ u32 rx_packets;
-+ u32 rx_notify;
-+ u32 napi_poll;
-+ u32 napi_complete;
-+ u32 napi_poll_n[10];
-+};
-+
-+struct ivshm_net {
-+ struct ivshm_net_queue rx;
-+ struct ivshm_net_queue tx;
-+
-+ u32 vrsize;
-+ u32 qlen;
-+ u32 qsize;
-+
-+ spinlock_t tx_free_lock;
-+ spinlock_t tx_clean_lock;
-+
-+ struct napi_struct napi;
-+
-+ u32 lstate;
-+ u32 rstate;
-+
-+ struct workqueue_struct *state_wq;
-+ struct work_struct state_work;
-+
-+ struct ivshm_net_stats stats;
-+
-+ struct ivshmem_regs __iomem *ivshm_regs;
-+ void *shm;
-+ phys_addr_t shmaddr;
-+ resource_size_t shmlen;
-+ u32 peer_id;
-+
-+ struct pci_dev *pdev;
-+ struct msix_entry msix;
-+ bool using_msix;
-+};
-+
-+static void *ivshm_net_desc_data(struct ivshm_net *in,
-+ struct ivshm_net_queue *q,
-+ struct vring_desc *desc,
-+ u32 *len)
-+{
-+ u64 addr = READ_ONCE(desc->addr);
-+ u32 dlen = READ_ONCE(desc->len);
-+ void *data;
-+
-+ if (addr < in->shmaddr || desc->addr > in->shmaddr + in->shmlen)
-+ return NULL;
-+
-+ data = in->shm + (addr - in->shmaddr);
-+
-+ if (data < q->data || data >= q->end)
-+ return NULL;
-+
-+ if (dlen > q->end - data)
-+ return NULL;
-+
-+ *len = dlen;
-+
-+ return data;
-+}
-+
-+static void ivshm_net_init_queue(struct ivshm_net *in,
-+ struct ivshm_net_queue *q,
-+ void *mem, unsigned int len)
-+{
-+ memset(q, 0, sizeof(*q));
-+
-+ vring_init(&q->vr, len, mem, IVSHM_NET_VQ_ALIGN);
-+ q->data = mem + in->vrsize;
-+ q->end = q->data + in->qsize;
-+ q->size = in->qsize;
-+}
-+
-+static void ivshm_net_init_queues(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ int ivpos = readl(&in->ivshm_regs->ivpos);
-+ void *tx;
-+ void *rx;
-+ int i;
-+
-+ tx = in->shm + ivpos * in->shmlen / 2;
-+ rx = in->shm + !ivpos * in->shmlen / 2;
-+
-+ memset(tx, 0, in->shmlen / 2);
-+
-+ ivshm_net_init_queue(in, &in->rx, rx, in->qlen);
-+ ivshm_net_init_queue(in, &in->tx, tx, in->qlen);
-+
-+ swap(in->rx.vr.used, in->tx.vr.used);
-+
-+ in->tx.num_free = in->tx.vr.num;
-+
-+ for (i = 0; i < in->tx.vr.num - 1; i++)
-+ in->tx.vr.desc[i].next = i + 1;
-+}
-+
-+static int ivshm_net_calc_qsize(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ unsigned int vrsize;
-+ unsigned int qsize;
-+ unsigned int qlen;
-+
-+ for (qlen = 4096; qlen > 32; qlen >>= 1) {
-+ vrsize = vring_size(qlen, IVSHM_NET_VQ_ALIGN);
-+ vrsize = ALIGN(vrsize, IVSHM_NET_VQ_ALIGN);
-+ if (vrsize < in->shmlen / 16)
-+ break;
-+ }
-+
-+ if (vrsize > in->shmlen / 2)
-+ return -EINVAL;
-+
-+ qsize = in->shmlen / 2 - vrsize;
-+
-+ if (qsize < 4 * IVSHM_NET_MTU_MIN)
-+ return -EINVAL;
-+
-+ in->vrsize = vrsize;
-+ in->qlen = qlen;
-+ in->qsize = qsize;
-+
-+ return 0;
-+}
-+
-+static void ivshm_net_notify_tx(struct ivshm_net *in, unsigned int num)
-+{
-+ u16 evt, old, new;
-+
-+ virt_mb();
-+
-+ evt = READ_ONCE(vring_avail_event(&in->tx.vr));
-+ old = in->tx.last_avail_idx - num;
-+ new = in->tx.last_avail_idx;
-+
-+ if (vring_need_event(evt, new, old)) {
-+ writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
-+ in->stats.tx_notify++;
-+ }
-+}
-+
-+static void ivshm_net_enable_rx_irq(struct ivshm_net *in)
-+{
-+ vring_avail_event(&in->rx.vr) = in->rx.last_avail_idx;
-+ virt_wmb();
-+}
-+
-+static void ivshm_net_notify_rx(struct ivshm_net *in, unsigned int num)
-+{
-+ u16 evt, old, new;
-+
-+ virt_mb();
-+
-+ evt = vring_used_event(&in->rx.vr);
-+ old = in->rx.last_used_idx - num;
-+ new = in->rx.last_used_idx;
-+
-+ if (vring_need_event(evt, new, old)) {
-+ writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
-+ in->stats.rx_notify++;
-+ }
-+}
-+
-+static void ivshm_net_enable_tx_irq(struct ivshm_net *in)
-+{
-+ vring_used_event(&in->tx.vr) = in->tx.last_used_idx;
-+ virt_wmb();
-+}
-+
-+static bool ivshm_net_rx_avail(struct ivshm_net *in)
-+{
-+ virt_mb();
-+ return READ_ONCE(in->rx.vr.avail->idx) != in->rx.last_avail_idx;
-+}
-+
-+static size_t ivshm_net_tx_space(struct ivshm_net *in)
-+{
-+ struct ivshm_net_queue *tx = &in->tx;
-+ u32 tail = tx->tail;
-+ u32 head = tx->head;
-+ u32 space;
-+
-+ if (head < tail)
-+ space = tail - head;
-+ else
-+ space = max(tx->size - head, tail);
-+
-+ return space;
-+}
-+
-+static bool ivshm_net_tx_ok(struct ivshm_net *in, unsigned int mtu)
-+{
-+ return in->tx.num_free >= 2 &&
-+ ivshm_net_tx_space(in) >= 2 * IVSHM_NET_FRAME_SIZE(mtu);
-+}
-+
-+static u32 ivshm_net_tx_advance(struct ivshm_net_queue *q, u32 *pos, u32 len)
-+{
-+ u32 p = *pos;
-+
-+ len = IVSHM_NET_FRAME_SIZE(len);
-+
-+ if (q->size - p < len)
-+ p = 0;
-+ *pos = p + len;
-+
-+ return p;
-+}
-+
-+static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ struct ivshm_net_queue *tx = &in->tx;
-+ struct vring *vr = &tx->vr;
-+ struct vring_desc *desc;
-+ unsigned int desc_idx;
-+ unsigned int avail;
-+ u32 head;
-+ void *buf;
-+
-+ BUG_ON(tx->num_free < 1);
-+
-+ spin_lock(&in->tx_free_lock);
-+ desc_idx = tx->free_head;
-+ desc = &vr->desc[desc_idx];
-+ tx->free_head = desc->next;
-+ tx->num_free--;
-+ spin_unlock(&in->tx_free_lock);
-+
-+ head = ivshm_net_tx_advance(tx, &tx->head, skb->len);
-+
-+ buf = tx->data + head;
-+ skb_copy_and_csum_dev(skb, buf);
-+
-+ desc->addr = in->shmaddr + (buf - in->shm);
-+ desc->len = skb->len;
-+
-+ avail = tx->last_avail_idx++ & (vr->num - 1);
-+ vr->avail->ring[avail] = desc_idx;
-+ tx->num_added++;
-+
-+ if (!skb->xmit_more) {
-+ virt_store_release(&vr->avail->idx, tx->last_avail_idx);
-+ ivshm_net_notify_tx(in, tx->num_added);
-+ tx->num_added = 0;
-+ }
-+
-+ return 0;
-+}
-+
-+static void ivshm_net_tx_clean(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ struct ivshm_net_queue *tx = &in->tx;
-+ struct vring *vr = &tx->vr;
-+ struct vring_desc *desc;
-+ struct vring_desc *fdesc;
-+ unsigned int used;
-+ unsigned int num;
-+ u16 used_idx;
-+ u16 last;
-+ u32 fhead;
-+
-+ if (!spin_trylock(&in->tx_clean_lock))
-+ return;
-+
-+ used_idx = virt_load_acquire(&vr->used->idx);
-+ last = tx->last_used_idx;
-+
-+ fdesc = NULL;
-+ num = 0;
-+
-+ while (last != used_idx) {
-+ void *data;
-+ u32 len;
-+ u32 tail;
-+
-+ used = vr->used->ring[last & (vr->num - 1)].id;
-+ if (used >= vr->num) {
-+ netdev_err(ndev, "invalid tx used %d\n", used);
-+ break;
-+ }
-+
-+ desc = &vr->desc[used];
-+
-+ data = ivshm_net_desc_data(in, &in->tx, desc, &len);
-+ if (!data) {
-+ netdev_err(ndev, "bad tx descriptor\n");
-+ break;
-+ }
-+
-+ tail = ivshm_net_tx_advance(tx, &tx->tail, len);
-+ if (data != tx->data + tail) {
-+ netdev_err(ndev, "bad tx descriptor\n");
-+ break;
-+ }
-+
-+ if (!num)
-+ fdesc = desc;
-+ else
-+ desc->next = fhead;
-+
-+ fhead = used;
-+ last++;
-+ num++;
-+ }
-+
-+ tx->last_used_idx = last;
-+
-+ spin_unlock(&in->tx_clean_lock);
-+
-+ if (num) {
-+ spin_lock(&in->tx_free_lock);
-+ fdesc->next = tx->free_head;
-+ tx->free_head = fhead;
-+ tx->num_free += num;
-+ BUG_ON(tx->num_free > vr->num);
-+ spin_unlock(&in->tx_free_lock);
-+ }
-+}
-+
-+static struct vring_desc *ivshm_net_rx_desc(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ struct ivshm_net_queue *rx = &in->rx;
-+ struct vring *vr = &rx->vr;
-+ unsigned int avail;
-+ u16 avail_idx;
-+
-+ avail_idx = virt_load_acquire(&vr->avail->idx);
-+
-+ if (avail_idx == rx->last_avail_idx)
-+ return NULL;
-+
-+ avail = vr->avail->ring[rx->last_avail_idx++ & (vr->num - 1)];
-+ if (avail >= vr->num) {
-+ netdev_err(ndev, "invalid rx avail %d\n", avail);
-+ return NULL;
-+ }
-+
-+ return &vr->desc[avail];
-+}
-+
-+static void ivshm_net_rx_finish(struct ivshm_net *in, struct vring_desc *desc)
-+{
-+ struct ivshm_net_queue *rx = &in->rx;
-+ struct vring *vr = &rx->vr;
-+ unsigned int desc_id = desc - vr->desc;
-+ unsigned int used;
-+
-+ used = rx->last_used_idx++ & (vr->num - 1);
-+ vr->used->ring[used].id = desc_id;
-+
-+ virt_store_release(&vr->used->idx, rx->last_used_idx);
-+}
-+
-+static int ivshm_net_poll(struct napi_struct *napi, int budget)
-+{
-+ struct net_device *ndev = napi->dev;
-+ struct ivshm_net *in = container_of(napi, struct ivshm_net, napi);
-+ int received = 0;
-+
-+ in->stats.napi_poll++;
-+
-+ ivshm_net_tx_clean(ndev);
-+
-+ while (received < budget) {
-+ struct vring_desc *desc;
-+ struct sk_buff *skb;
-+ void *data;
-+ u32 len;
-+
-+ desc = ivshm_net_rx_desc(ndev);
-+ if (!desc)
-+ break;
-+
-+ data = ivshm_net_desc_data(in, &in->rx, desc, &len);
-+ if (!data) {
-+ netdev_err(ndev, "bad rx descriptor\n");
-+ break;
-+ }
-+
-+ skb = napi_alloc_skb(napi, len);
-+
-+ if (skb) {
-+ memcpy(skb_put(skb, len), data, len);
-+ skb->protocol = eth_type_trans(skb, ndev);
-+ napi_gro_receive(napi, skb);
-+ }
-+
-+ ndev->stats.rx_packets++;
-+ ndev->stats.rx_bytes += len;
-+
-+ ivshm_net_rx_finish(in, desc);
-+ received++;
-+ }
-+
-+ if (received < budget) {
-+ in->stats.napi_complete++;
-+ napi_complete_done(napi, received);
-+ ivshm_net_enable_rx_irq(in);
-+ if (ivshm_net_rx_avail(in))
-+ napi_schedule(napi);
-+ }
-+
-+ if (received)
-+ ivshm_net_notify_rx(in, received);
-+
-+ in->stats.rx_packets += received;
-+ in->stats.napi_poll_n[received ? 1 + min(ilog2(received), 8) : 0]++;
-+
-+ if (ivshm_net_tx_ok(in, ndev->mtu))
-+ netif_wake_queue(ndev);
-+
-+ return received;
-+}
-+
-+static netdev_tx_t ivshm_net_xmit(struct sk_buff *skb, struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+
-+ ivshm_net_tx_clean(ndev);
-+
-+ if (!ivshm_net_tx_ok(in, ndev->mtu)) {
-+ ivshm_net_enable_tx_irq(in);
-+ netif_stop_queue(ndev);
-+ skb->xmit_more = 0;
-+ in->stats.tx_pause++;
-+ }
-+
-+ ivshm_net_tx_frame(ndev, skb);
-+
-+ in->stats.tx_packets++;
-+ ndev->stats.tx_packets++;
-+ ndev->stats.tx_bytes += skb->len;
-+
-+ dev_consume_skb_any(skb);
-+
-+ return NETDEV_TX_OK;
-+}
-+
-+static void ivshm_net_set_state(struct ivshm_net *in, u32 state)
-+{
-+ virt_wmb();
-+ WRITE_ONCE(in->lstate, state);
-+ writel(state, &in->ivshm_regs->lstate);
-+}
-+
-+static void ivshm_net_run(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+
-+ netif_start_queue(ndev);
-+ napi_enable(&in->napi);
-+ napi_schedule(&in->napi);
-+ ivshm_net_set_state(in, IVSHM_NET_STATE_RUN);
-+}
-+
-+static void ivshm_net_state_change(struct work_struct *work)
-+{
-+ struct ivshm_net *in = container_of(work, struct ivshm_net, state_work);
-+ struct net_device *ndev = in->napi.dev;
-+ u32 rstate = readl(&in->ivshm_regs->rstate);
-+
-+
-+ switch (in->lstate) {
-+ case IVSHM_NET_STATE_RESET:
-+ if (rstate < IVSHM_NET_STATE_READY)
-+ ivshm_net_set_state(in, IVSHM_NET_STATE_INIT);
-+ break;
-+
-+ case IVSHM_NET_STATE_INIT:
-+ if (rstate > IVSHM_NET_STATE_RESET) {
-+ ivshm_net_init_queues(ndev);
-+ ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
-+
-+ rtnl_lock();
-+ call_netdevice_notifiers(NETDEV_CHANGEADDR, ndev);
-+ rtnl_unlock();
-+ }
-+ break;
-+
-+ case IVSHM_NET_STATE_READY:
-+ if (rstate >= IVSHM_NET_STATE_READY) {
-+ netif_carrier_on(ndev);
-+ if (ndev->flags & IFF_UP)
-+ ivshm_net_run(ndev);
-+ } else {
-+ netif_carrier_off(ndev);
-+ ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
-+ }
-+ break;
-+
-+ case IVSHM_NET_STATE_RUN:
-+ if (rstate < IVSHM_NET_STATE_READY) {
-+ netif_stop_queue(ndev);
-+ napi_disable(&in->napi);
-+ netif_carrier_off(ndev);
-+ ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
-+ }
-+ break;
-+ }
-+
-+ virt_wmb();
-+ WRITE_ONCE(in->rstate, rstate);
-+}
-+
-+static bool ivshm_net_check_state(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ u32 rstate = readl(&in->ivshm_regs->rstate);
-+
-+ if (rstate != READ_ONCE(in->rstate) ||
-+ in->lstate != IVSHM_NET_STATE_RUN) {
-+ queue_work(in->state_wq, &in->state_work);
-+ return false;
-+ }
-+
-+ return true;
-+}
-+
-+static irqreturn_t ivshm_net_int(int irq, void *data)
-+{
-+ struct net_device *ndev = data;
-+ struct ivshm_net *in = netdev_priv(ndev);
-+
-+ in->stats.interrupts++;
-+
-+ ivshm_net_check_state(ndev);
-+ napi_schedule_irqoff(&in->napi);
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int ivshm_net_open(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+
-+ netdev_reset_queue(ndev);
-+ ndev->operstate = IF_OPER_UP;
-+
-+ if (in->lstate == IVSHM_NET_STATE_READY)
-+ ivshm_net_run(ndev);
-+
-+ return 0;
-+}
-+
-+static int ivshm_net_stop(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+
-+ ndev->operstate = IF_OPER_DOWN;
-+
-+ if (in->lstate == IVSHM_NET_STATE_RUN) {
-+ napi_disable(&in->napi);
-+ netif_stop_queue(ndev);
-+ ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
-+ }
-+
-+ return 0;
-+}
-+
-+static int ivshm_net_change_mtu(struct net_device *ndev, int mtu)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ struct ivshm_net_queue *tx = &in->tx;
-+
-+ if (mtu < IVSHM_NET_MTU_MIN || mtu > IVSHM_NET_MTU_MAX)
-+ return -EINVAL;
-+
-+ if (in->tx.size / mtu < 4)
-+ return -EINVAL;
-+
-+ if (ivshm_net_tx_space(in) < 2 * IVSHM_NET_FRAME_SIZE(mtu))
-+ return -EBUSY;
-+
-+ if (in->tx.size - tx->head < IVSHM_NET_FRAME_SIZE(mtu) &&
-+ tx->head < tx->tail)
-+ return -EBUSY;
-+
-+ netif_tx_lock_bh(ndev);
-+ if (in->tx.size - tx->head < IVSHM_NET_FRAME_SIZE(mtu))
-+ tx->head = 0;
-+ netif_tx_unlock_bh(ndev);
-+
-+ ndev->mtu = mtu;
-+
-+ return 0;
-+}
-+
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+static void ivshm_net_poll_controller(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+
-+ napi_schedule(&in->napi);
-+}
-+#endif
-+
-+static const struct net_device_ops ivshm_net_ops = {
-+ .ndo_open = ivshm_net_open,
-+ .ndo_stop = ivshm_net_stop,
-+ .ndo_start_xmit = ivshm_net_xmit,
-+ .ndo_change_mtu = ivshm_net_change_mtu,
-+#ifdef CONFIG_NET_POLL_CONTROLLER
-+ .ndo_poll_controller = ivshm_net_poll_controller,
-+#endif
-+};
-+
-+static const char ivshm_net_stats[][ETH_GSTRING_LEN] = {
-+ "interrupts",
-+ "tx_packets",
-+ "tx_notify",
-+ "tx_pause",
-+ "rx_packets",
-+ "rx_notify",
-+ "napi_poll",
-+ "napi_complete",
-+ "napi_poll_0",
-+ "napi_poll_1",
-+ "napi_poll_2",
-+ "napi_poll_4",
-+ "napi_poll_8",
-+ "napi_poll_16",
-+ "napi_poll_32",
-+ "napi_poll_64",
-+ "napi_poll_128",
-+ "napi_poll_256",
-+};
-+
-+#define NUM_STATS ARRAY_SIZE(ivshm_net_stats)
-+
-+static int ivshm_net_get_sset_count(struct net_device *ndev, int sset)
-+{
-+ if (sset == ETH_SS_STATS)
-+ return NUM_STATS;
-+
-+ return -EOPNOTSUPP;
-+}
-+
-+static void ivshm_net_get_strings(struct net_device *ndev, u32 sset, u8 *buf)
-+{
-+ if (sset == ETH_SS_STATS)
-+ memcpy(buf, &ivshm_net_stats, sizeof(ivshm_net_stats));
-+}
-+
-+static void ivshm_net_get_ethtool_stats(struct net_device *ndev,
-+ struct ethtool_stats *estats, u64 *st)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ unsigned int n = 0;
-+ unsigned int i;
-+
-+ st[n++] = in->stats.interrupts;
-+ st[n++] = in->stats.tx_packets;
-+ st[n++] = in->stats.tx_notify;
-+ st[n++] = in->stats.tx_pause;
-+ st[n++] = in->stats.rx_packets;
-+ st[n++] = in->stats.rx_notify;
-+ st[n++] = in->stats.napi_poll;
-+ st[n++] = in->stats.napi_complete;
-+
-+ for (i = 0; i < ARRAY_SIZE(in->stats.napi_poll_n); i++)
-+ st[n++] = in->stats.napi_poll_n[i];
-+
-+ memset(&in->stats, 0, sizeof(in->stats));
-+}
-+
-+static const struct ethtool_ops ivshm_net_ethtool_ops = {
-+ .get_sset_count = ivshm_net_get_sset_count,
-+ .get_strings = ivshm_net_get_strings,
-+ .get_ethtool_stats = ivshm_net_get_ethtool_stats,
-+};
-+
-+static int ivshm_net_probe(struct pci_dev *pdev,
-+ const struct pci_device_id *id)
-+{
-+ struct net_device *ndev;
-+ struct ivshm_net *in;
-+ struct ivshmem_regs __iomem *regs;
-+ resource_size_t shmaddr;
-+ resource_size_t shmlen;
-+ int interrupt;
-+ void *shm;
-+ u32 ivpos;
-+ int err;
-+
-+ err = pcim_enable_device(pdev);
-+ if (err) {
-+ dev_err(&pdev->dev, "pci_enable_device: %d\n", err);
-+ return err;
-+ }
-+
-+ err = pcim_iomap_regions(pdev, BIT(0), DRV_NAME);
-+ if (err) {
-+ dev_err(&pdev->dev, "pcim_iomap_regions: %d\n", err);
-+ return err;
-+ }
-+
-+ regs = pcim_iomap_table(pdev)[0];
-+
-+ shmlen = pci_resource_len(pdev, 2);
-+
-+ if (shmlen) {
-+ shmaddr = pci_resource_start(pdev, 2);
-+ } else {
-+ union { u64 v; u32 hl[2]; } val;
-+
-+ pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR,
-+ &val.hl[0]);
-+ pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR + 4,
-+ &val.hl[1]);
-+ shmaddr = val.v;
-+
-+ pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ,
-+ &val.hl[0]);
-+ pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ + 4,
-+ &val.hl[1]);
-+ shmlen = val.v;
-+ }
-+
-+
-+ if (!devm_request_mem_region(&pdev->dev, shmaddr, shmlen, DRV_NAME))
-+ return -EBUSY;
-+
-+ shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WC);
-+ if (!shm)
-+ return -ENOMEM;
-+
-+ ivpos = readl(&regs->ivpos);
-+ if (ivpos > 1) {
-+ dev_err(&pdev->dev, "invalid IVPosition %d\n", ivpos);
-+ return -EINVAL;
-+ }
-+
-+ dev_info(&pdev->dev, "shared memory size %pa\n", &shmlen);
-+
-+ ndev = alloc_etherdev(sizeof(*in));
-+ if (!ndev)
-+ return -ENOMEM;
-+
-+ pci_set_drvdata(pdev, ndev);
-+ SET_NETDEV_DEV(ndev, &pdev->dev);
-+
-+ in = netdev_priv(ndev);
-+ in->ivshm_regs = regs;
-+ in->shm = shm;
-+ in->shmaddr = shmaddr;
-+ in->shmlen = shmlen;
-+ in->peer_id = !ivpos;
-+ in->pdev = pdev;
-+ spin_lock_init(&in->tx_free_lock);
-+ spin_lock_init(&in->tx_clean_lock);
-+
-+ err = ivshm_net_calc_qsize(ndev);
-+ if (err)
-+ goto err_free;
-+
-+ in->state_wq = alloc_ordered_workqueue(DRV_NAME, 0);
-+ if (!in->state_wq)
-+ goto err_free;
-+
-+ INIT_WORK(&in->state_work, ivshm_net_state_change);
-+
-+ eth_random_addr(ndev->dev_addr);
-+ ndev->netdev_ops = &ivshm_net_ops;
-+ ndev->ethtool_ops = &ivshm_net_ethtool_ops;
-+ ndev->mtu = min_t(u32, IVSHM_NET_MTU_DEF, in->qsize / 16);
-+ ndev->hw_features = NETIF_F_HW_CSUM | NETIF_F_SG;
-+ ndev->features = ndev->hw_features;
-+
-+ netif_carrier_off(ndev);
-+ netif_napi_add(ndev, &in->napi, ivshm_net_poll, NAPI_POLL_WEIGHT);
-+
-+ err = register_netdev(ndev);
-+ if (err)
-+ goto err_wq;
-+
-+ err = pci_enable_msix(pdev, &in->msix, 1);
-+ if (!err) {
-+ interrupt = in->msix.vector;
-+ in->using_msix = true;
-+ } else {
-+ interrupt = pdev->irq;
-+ in->using_msix = false;
-+ }
-+
-+ err = request_irq(interrupt, ivshm_net_int, 0, DRV_NAME, ndev);
-+ if (err)
-+ goto err_int;
-+
-+ pci_set_master(pdev);
-+
-+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
-+
-+ return 0;
-+
-+err_int:
-+ if (in->using_msix)
-+ pci_disable_msix(pdev);
-+ unregister_netdev(ndev);
-+err_wq:
-+ destroy_workqueue(in->state_wq);
-+err_free:
-+ free_netdev(ndev);
-+
-+ return err;
-+}
-+
-+static void ivshm_net_remove(struct pci_dev *pdev)
-+{
-+ struct net_device *ndev = pci_get_drvdata(pdev);
-+ struct ivshm_net *in = netdev_priv(ndev);
-+
-+ if (in->using_msix) {
-+ free_irq(in->msix.vector, ndev);
-+ pci_disable_msix(pdev);
-+ } else {
-+ free_irq(pdev->irq, ndev);
-+ }
-+
-+ unregister_netdev(ndev);
-+ cancel_work_sync(&in->state_work);
-+ destroy_workqueue(in->state_wq);
-+ free_netdev(ndev);
-+}
-+
-+static const struct pci_device_id ivshm_net_id_table[] = {
-+ { PCI_DEVICE(PCI_VENDOR_ID_REDHAT_QUMRANET, 0x1110),
-+ (PCI_CLASS_OTHERS << 16) | (0x01 << 8), 0xffff00 },
-+ { 0 }
-+};
-+MODULE_DEVICE_TABLE(pci, ivshm_net_id_table);
-+
-+static struct pci_driver ivshm_net_driver = {
-+ .name = DRV_NAME,
-+ .id_table = ivshm_net_id_table,
-+ .probe = ivshm_net_probe,
-+ .remove = ivshm_net_remove,
-+};
-+module_pci_driver(ivshm_net_driver);
-+
-+MODULE_AUTHOR("Mans Rullgard <mans@mansr.com>");
-+MODULE_LICENSE("GPL");
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch
deleted file mode 100644
index de66d7a7..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b70f2ecb71b212225f403a8f26d3d5bdca70a107 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Thu, 24 Nov 2016 08:27:45 +0100
-Subject: [PATCH 14/32] ivshmem-net: Map shmem region as RAM
-
-No need for special caching, simply map the shared memory region like
-RAM, thus write-back. This gives us another order of magnitude in
-throughput.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index b676bed2cc2e..a535cb71adde 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -802,7 +802,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- if (!devm_request_mem_region(&pdev->dev, shmaddr, shmlen, DRV_NAME))
- return -EBUSY;
-
-- shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WC);
-+ shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WB);
- if (!shm)
- return -ENOMEM;
-
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch
deleted file mode 100644
index ecb5c485..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From 1349a457e5e33580fb26afab087e6b932b1a4372 Mon Sep 17 00:00:00 2001
-From: Mans Rullgard <mans@mansr.com>
-Date: Thu, 24 Nov 2016 18:46:41 +0000
-Subject: [PATCH 15/32] ivshmem-net: fix race in state machine
-
----
- drivers/net/ivshmem-net.c | 60 ++++++++++++++++++++++++-----------------------
- 1 file changed, 31 insertions(+), 29 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index a535cb71adde..acd00e47acd7 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -36,6 +36,8 @@
- #define IVSHM_NET_STATE_READY 2
- #define IVSHM_NET_STATE_RUN 3
-
-+#define IVSHM_NET_FLAG_RUN 0
-+
- #define IVSHM_NET_MTU_MIN 256
- #define IVSHM_NET_MTU_MAX 65535
- #define IVSHM_NET_MTU_DEF 16384
-@@ -96,6 +98,8 @@ struct ivshm_net {
- u32 lstate;
- u32 rstate;
-
-+ unsigned long flags;
-+
- struct workqueue_struct *state_wq;
- struct work_struct state_work;
-
-@@ -529,12 +533,32 @@ static void ivshm_net_run(struct net_device *ndev)
- {
- struct ivshm_net *in = netdev_priv(ndev);
-
-+ if (in->lstate < IVSHM_NET_STATE_READY)
-+ return;
-+
-+ if (!netif_running(ndev))
-+ return;
-+
-+ if (test_and_set_bit(IVSHM_NET_FLAG_RUN, &in->flags))
-+ return;
-+
- netif_start_queue(ndev);
- napi_enable(&in->napi);
- napi_schedule(&in->napi);
- ivshm_net_set_state(in, IVSHM_NET_STATE_RUN);
- }
-
-+static void ivshm_net_do_stop(struct net_device *ndev)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+
-+ if (!test_and_clear_bit(IVSHM_NET_FLAG_RUN, &in->flags))
-+ return;
-+
-+ netif_stop_queue(ndev);
-+ napi_disable(&in->napi);
-+}
-+
- static void ivshm_net_state_change(struct work_struct *work)
- {
- struct ivshm_net *in = container_of(work, struct ivshm_net, state_work);
-@@ -560,21 +584,13 @@ static void ivshm_net_state_change(struct work_struct *work)
- break;
-
- case IVSHM_NET_STATE_READY:
-+ case IVSHM_NET_STATE_RUN:
- if (rstate >= IVSHM_NET_STATE_READY) {
- netif_carrier_on(ndev);
-- if (ndev->flags & IFF_UP)
-- ivshm_net_run(ndev);
-+ ivshm_net_run(ndev);
- } else {
- netif_carrier_off(ndev);
-- ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
-- }
-- break;
--
-- case IVSHM_NET_STATE_RUN:
-- if (rstate < IVSHM_NET_STATE_READY) {
-- netif_stop_queue(ndev);
-- napi_disable(&in->napi);
-- netif_carrier_off(ndev);
-+ ivshm_net_do_stop(ndev);
- ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
- }
- break;
-@@ -584,18 +600,13 @@ static void ivshm_net_state_change(struct work_struct *work)
- WRITE_ONCE(in->rstate, rstate);
- }
-
--static bool ivshm_net_check_state(struct net_device *ndev)
-+static void ivshm_net_check_state(struct net_device *ndev)
- {
- struct ivshm_net *in = netdev_priv(ndev);
- u32 rstate = readl(&in->ivshm_regs->rstate);
-
-- if (rstate != READ_ONCE(in->rstate) ||
-- in->lstate != IVSHM_NET_STATE_RUN) {
-+ if (rstate != in->rstate || !test_bit(IVSHM_NET_FLAG_RUN, &in->flags))
- queue_work(in->state_wq, &in->state_work);
-- return false;
-- }
--
-- return true;
- }
-
- static irqreturn_t ivshm_net_int(int irq, void *data)
-@@ -617,24 +628,15 @@ static int ivshm_net_open(struct net_device *ndev)
-
- netdev_reset_queue(ndev);
- ndev->operstate = IF_OPER_UP;
--
-- if (in->lstate == IVSHM_NET_STATE_READY)
-- ivshm_net_run(ndev);
-+ ivshm_net_run(ndev);
-
- return 0;
- }
-
- static int ivshm_net_stop(struct net_device *ndev)
- {
-- struct ivshm_net *in = netdev_priv(ndev);
--
- ndev->operstate = IF_OPER_DOWN;
--
-- if (in->lstate == IVSHM_NET_STATE_RUN) {
-- napi_disable(&in->napi);
-- netif_stop_queue(ndev);
-- ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
-- }
-+ ivshm_net_do_stop(ndev);
-
- return 0;
- }
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch
deleted file mode 100644
index dfaca493..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 85362cf2e682d196fc3a88d05e21f0603cb0c48a Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Fri, 25 Nov 2016 17:31:51 +0100
-Subject: [PATCH 16/32] ivshmem-net: Remove unused variable
-
-Became unused by previous change.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index acd00e47acd7..ccef65d0f038 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -624,8 +624,6 @@ static irqreturn_t ivshm_net_int(int irq, void *data)
-
- static int ivshm_net_open(struct net_device *ndev)
- {
-- struct ivshm_net *in = netdev_priv(ndev);
--
- netdev_reset_queue(ndev);
- ndev->operstate = IF_OPER_UP;
- ivshm_net_run(ndev);
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch
deleted file mode 100644
index e0f4be44..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 9683ab979a373932e9c332d2db8115b6c23303d0 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 27 Nov 2016 15:15:51 +0100
-Subject: [PATCH 17/32] ivshmem-net: Enable INTx
-
-Activate INTx notification when it has to be used instead of MSI-X,
-disable it after use.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index ccef65d0f038..591d04195e57 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -31,6 +31,8 @@
- #define JAILHOUSE_CFG_SHMEM_PTR 0x40
- #define JAILHOUSE_CFG_SHMEM_SZ 0x48
-
-+#define IVSHMEM_INTX_ENABLE 0x1
-+
- #define IVSHM_NET_STATE_RESET 0
- #define IVSHM_NET_STATE_INIT 1
- #define IVSHM_NET_STATE_READY 2
-@@ -47,7 +49,7 @@
- #define IVSHM_NET_VQ_ALIGN 64
-
- struct ivshmem_regs {
-- u32 imask;
-+ u32 intxctrl;
- u32 istat;
- u32 ivpos;
- u32 doorbell;
-@@ -869,6 +871,8 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- goto err_int;
-
- pci_set_master(pdev);
-+ if (!in->using_msix)
-+ writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
-
- writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
-
-@@ -895,6 +899,7 @@ static void ivshm_net_remove(struct pci_dev *pdev)
- free_irq(in->msix.vector, ndev);
- pci_disable_msix(pdev);
- } else {
-+ writel(0, &in->ivshm_regs->intxctrl);
- free_irq(pdev->irq, ndev);
- }
-
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch
deleted file mode 100644
index e51b94aa..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From d60c7b69f68961c6868ca870d645ed7d4f73e751 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Wed, 21 Dec 2016 08:20:18 +0100
-Subject: [PATCH 18/32] ivshmem-net: Improve identification of resources
-
-Pass a device name consisting of driver name and PCI ID to request_irq
-and alloc_ordered_workqueue. This helps correlating resources with
-devices in case there are multiple of them.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 591d04195e57..cff6aa0be71d 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -762,6 +762,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- resource_size_t shmaddr;
- resource_size_t shmlen;
- int interrupt;
-+ char *device_name;
- void *shm;
- u32 ivpos;
- int err;
-@@ -814,7 +815,10 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- return -EINVAL;
- }
-
-- dev_info(&pdev->dev, "shared memory size %pa\n", &shmlen);
-+ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s[%s]", DRV_NAME,
-+ dev_name(&pdev->dev));
-+ if (!device_name)
-+ return -ENOMEM;
-
- ndev = alloc_etherdev(sizeof(*in));
- if (!ndev)
-@@ -837,7 +841,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- if (err)
- goto err_free;
-
-- in->state_wq = alloc_ordered_workqueue(DRV_NAME, 0);
-+ in->state_wq = alloc_ordered_workqueue(device_name, 0);
- if (!in->state_wq)
- goto err_free;
-
-@@ -866,7 +870,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- in->using_msix = false;
- }
-
-- err = request_irq(interrupt, ivshm_net_int, 0, DRV_NAME, ndev);
-+ err = request_irq(interrupt, ivshm_net_int, 0, device_name, ndev);
- if (err)
- goto err_int;
-
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch
deleted file mode 100644
index 512bcaf2..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From a16c80c305b2e11fe3efd0905bbe7db8388bf545 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 1 Jan 2017 15:43:37 +0100
-Subject: [PATCH 19/32] ivshmem-net: Switch to reset state on each net stop and
- on driver removal
-
-Improves the state signaling to the remote side after ifconfig down and
-driver removal.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index cff6aa0be71d..09484d652add 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -554,6 +554,8 @@ static void ivshm_net_do_stop(struct net_device *ndev)
- {
- struct ivshm_net *in = netdev_priv(ndev);
-
-+ ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
-+
- if (!test_and_clear_bit(IVSHM_NET_FLAG_RUN, &in->flags))
- return;
-
-@@ -593,7 +595,6 @@ static void ivshm_net_state_change(struct work_struct *work)
- } else {
- netif_carrier_off(ndev);
- ivshm_net_do_stop(ndev);
-- ivshm_net_set_state(in, IVSHM_NET_STATE_RESET);
- }
- break;
- }
-@@ -899,6 +900,8 @@ static void ivshm_net_remove(struct pci_dev *pdev)
- struct net_device *ndev = pci_get_drvdata(pdev);
- struct ivshm_net *in = netdev_priv(ndev);
-
-+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
-+
- if (in->using_msix) {
- free_irq(in->msix.vector, ndev);
- pci_disable_msix(pdev);
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch
deleted file mode 100644
index d0a562a7..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 98f68e69e2e950b44e7324bbcc94700705193443 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 1 Jan 2017 15:46:26 +0100
-Subject: [PATCH 20/32] ivshmem-net: Add ethtool register dump
-
-Helps debugging inconsistent states.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 31 +++++++++++++++++++++++++++++++
- 1 file changed, 31 insertions(+)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 09484d652add..c52727ef40c1 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -748,10 +748,41 @@ static void ivshm_net_get_ethtool_stats(struct net_device *ndev,
- memset(&in->stats, 0, sizeof(in->stats));
- }
-
-+#define IVSHM_NET_REGS_LEN (3 * sizeof(u32) + 6 * sizeof(u16))
-+
-+static int ivshm_net_get_regs_len(struct net_device *ndev)
-+{
-+ return IVSHM_NET_REGS_LEN;
-+}
-+
-+static void ivshm_net_get_regs(struct net_device *ndev,
-+ struct ethtool_regs *regs, void *p)
-+{
-+ struct ivshm_net *in = netdev_priv(ndev);
-+ u32 *reg32 = p;
-+ u16 *reg16;
-+
-+ *reg32++ = in->lstate;
-+ *reg32++ = in->rstate;
-+ *reg32++ = in->qlen;
-+
-+ reg16 = (u16 *)reg32;
-+
-+ *reg16++ = in->tx.vr.avail ? in->tx.vr.avail->idx : 0;
-+ *reg16++ = in->tx.vr.used ? in->tx.vr.used->idx : 0;
-+ *reg16++ = in->tx.vr.avail ? vring_avail_event(&in->tx.vr) : 0;
-+
-+ *reg16++ = in->rx.vr.avail ? in->rx.vr.avail->idx : 0;
-+ *reg16++ = in->rx.vr.used ? in->rx.vr.used->idx : 0;
-+ *reg16++ = in->rx.vr.avail ? vring_avail_event(&in->rx.vr) : 0;
-+}
-+
- static const struct ethtool_ops ivshm_net_ethtool_ops = {
- .get_sset_count = ivshm_net_get_sset_count,
- .get_strings = ivshm_net_get_strings,
- .get_ethtool_stats = ivshm_net_get_ethtool_stats,
-+ .get_regs_len = ivshm_net_get_regs_len,
-+ .get_regs = ivshm_net_get_regs,
- };
-
- static int ivshm_net_probe(struct pci_dev *pdev,
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch
deleted file mode 100644
index 4e40341e..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b8d8821cfa8aa53aa29c0b230330afcd79ee7f60 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 1 Jan 2017 15:54:55 +0100
-Subject: [PATCH 21/32] ivshmem-net: Fix stuck state machine during setup
-
-If the remote side is already in INIT state (or even higher) and has a
-cached rstate of RESET, we won't make progress when signaling RESET
-again because the remote side won't send a state update. Fix this by
-enforcing a local check after probe completion.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index c52727ef40c1..9f307ec4d677 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -911,6 +911,7 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
-
- writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
-+ ivshm_net_check_state(ndev);
-
- return 0;
-
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch
deleted file mode 100644
index aca00e26..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From d1a0011e9857e105e38d9a0ea6fd7b8e7e6d8dc9 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Tue, 3 Jan 2017 08:50:01 +0100
-Subject: [PATCH 22/32] ivshmem-net: Switch to relative descriptor addresses
-
-Make sure that we do not depend on identity-mapped shared memory
-regions.
-
-This also fixes an off-by-one in the range check of ivshm_net_desc_data.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 9f307ec4d677..0e770ca293a4 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -123,14 +123,14 @@ static void *ivshm_net_desc_data(struct ivshm_net *in,
- struct vring_desc *desc,
- u32 *len)
- {
-- u64 addr = READ_ONCE(desc->addr);
-+ u64 offs = READ_ONCE(desc->addr);
- u32 dlen = READ_ONCE(desc->len);
- void *data;
-
-- if (addr < in->shmaddr || desc->addr > in->shmaddr + in->shmlen)
-+ if (offs >= in->shmlen)
- return NULL;
-
-- data = in->shm + (addr - in->shmaddr);
-+ data = in->shm + offs;
-
- if (data < q->data || data >= q->end)
- return NULL;
-@@ -317,7 +317,7 @@ static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
- buf = tx->data + head;
- skb_copy_and_csum_dev(skb, buf);
-
-- desc->addr = in->shmaddr + (buf - in->shm);
-+ desc->addr = buf - in->shm;
- desc->len = skb->len;
-
- avail = tx->last_avail_idx++ & (vr->num - 1);
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch
deleted file mode 100644
index fcc2cac3..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From 77920ddb91fa49f7085875d29dd2a2c7e783af3a Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Tue, 23 May 2017 17:41:00 +0200
-Subject: [PATCH 23/32] ivshmem-net: Switch to pci_alloc_irq_vectors
-
-Required by 4.12, and it also simplifies our code. Needs to be folded
-into the initial patch eventually.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 66 ++++++++++++++++++++---------------------------
- 1 file changed, 28 insertions(+), 38 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 0e770ca293a4..fd7d78b84576 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -114,8 +114,6 @@ struct ivshm_net {
- u32 peer_id;
-
- struct pci_dev *pdev;
-- struct msix_entry msix;
-- bool using_msix;
- };
-
- static void *ivshm_net_desc_data(struct ivshm_net *in,
-@@ -793,22 +791,21 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- struct ivshmem_regs __iomem *regs;
- resource_size_t shmaddr;
- resource_size_t shmlen;
-- int interrupt;
- char *device_name;
- void *shm;
- u32 ivpos;
-- int err;
-+ int ret;
-
-- err = pcim_enable_device(pdev);
-- if (err) {
-- dev_err(&pdev->dev, "pci_enable_device: %d\n", err);
-- return err;
-+ ret = pcim_enable_device(pdev);
-+ if (ret) {
-+ dev_err(&pdev->dev, "pci_enable_device: %d\n", ret);
-+ return ret;
- }
-
-- err = pcim_iomap_regions(pdev, BIT(0), DRV_NAME);
-- if (err) {
-- dev_err(&pdev->dev, "pcim_iomap_regions: %d\n", err);
-- return err;
-+ ret = pcim_iomap_regions(pdev, BIT(0), DRV_NAME);
-+ if (ret) {
-+ dev_err(&pdev->dev, "pcim_iomap_regions: %d\n", ret);
-+ return ret;
- }
-
- regs = pcim_iomap_table(pdev)[0];
-@@ -869,8 +866,8 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- spin_lock_init(&in->tx_free_lock);
- spin_lock_init(&in->tx_clean_lock);
-
-- err = ivshm_net_calc_qsize(ndev);
-- if (err)
-+ ret = ivshm_net_calc_qsize(ndev);
-+ if (ret)
- goto err_free;
-
- in->state_wq = alloc_ordered_workqueue(device_name, 0);
-@@ -889,25 +886,21 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- netif_carrier_off(ndev);
- netif_napi_add(ndev, &in->napi, ivshm_net_poll, NAPI_POLL_WEIGHT);
-
-- err = register_netdev(ndev);
-- if (err)
-+ ret = register_netdev(ndev);
-+ if (ret)
- goto err_wq;
-
-- err = pci_enable_msix(pdev, &in->msix, 1);
-- if (!err) {
-- interrupt = in->msix.vector;
-- in->using_msix = true;
-- } else {
-- interrupt = pdev->irq;
-- in->using_msix = false;
-- }
-+ ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
-+ if (ret < 0)
-+ goto err_alloc_irq;
-
-- err = request_irq(interrupt, ivshm_net_int, 0, device_name, ndev);
-- if (err)
-- goto err_int;
-+ ret = request_irq(pci_irq_vector(pdev, 0), ivshm_net_int, 0,
-+ device_name, ndev);
-+ if (ret)
-+ goto err_request_irq;
-
- pci_set_master(pdev);
-- if (!in->using_msix)
-+ if (!pdev->msix_enabled)
- writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
-
- writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
-@@ -915,16 +908,16 @@ static int ivshm_net_probe(struct pci_dev *pdev,
-
- return 0;
-
--err_int:
-- if (in->using_msix)
-- pci_disable_msix(pdev);
-+err_request_irq:
-+ pci_free_irq_vectors(pdev);
-+err_alloc_irq:
- unregister_netdev(ndev);
- err_wq:
- destroy_workqueue(in->state_wq);
- err_free:
- free_netdev(ndev);
-
-- return err;
-+ return ret;
- }
-
- static void ivshm_net_remove(struct pci_dev *pdev)
-@@ -934,13 +927,10 @@ static void ivshm_net_remove(struct pci_dev *pdev)
-
- writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
-
-- if (in->using_msix) {
-- free_irq(in->msix.vector, ndev);
-- pci_disable_msix(pdev);
-- } else {
-+ if (!pdev->msix_enabled)
- writel(0, &in->ivshm_regs->intxctrl);
-- free_irq(pdev->irq, ndev);
-- }
-+ free_irq(pci_irq_vector(pdev, 0), ndev);
-+ pci_free_irq_vectors(pdev);
-
- unregister_netdev(ndev);
- cancel_work_sync(&in->state_work);
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch
deleted file mode 100644
index 7620d682..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From be71104c3d4d682f88a4e56e408683b2e8edaef5 Mon Sep 17 00:00:00 2001
-From: Henning Schild <henning.schild@siemens.com>
-Date: Mon, 18 Sep 2017 18:02:08 +0200
-Subject: [PATCH 24/32] ivshmem-net: fill in and check used descriptor chain
- len
-
-We are using chains of len==1 make that explicit and expect that from
-the remote.
-
-Signed-off-by: Henning Schild <henning.schild@siemens.com>
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index fd7d78b84576..556670e779e7 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -335,10 +335,10 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
- {
- struct ivshm_net *in = netdev_priv(ndev);
- struct ivshm_net_queue *tx = &in->tx;
-+ struct vring_used_elem *used;
- struct vring *vr = &tx->vr;
- struct vring_desc *desc;
- struct vring_desc *fdesc;
-- unsigned int used;
- unsigned int num;
- u16 used_idx;
- u16 last;
-@@ -358,13 +358,14 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
- u32 len;
- u32 tail;
-
-- used = vr->used->ring[last & (vr->num - 1)].id;
-- if (used >= vr->num) {
-- netdev_err(ndev, "invalid tx used %d\n", used);
-+ used = vr->used->ring + (last % vr->num);
-+ if (used->id >= vr->num || used->len != 1) {
-+ netdev_err(ndev, "invalid tx used->id %d ->len %d\n",
-+ used->id, used->len);
- break;
- }
-
-- desc = &vr->desc[used];
-+ desc = &vr->desc[used->id];
-
- data = ivshm_net_desc_data(in, &in->tx, desc, &len);
- if (!data) {
-@@ -383,7 +384,7 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
- else
- desc->next = fhead;
-
-- fhead = used;
-+ fhead = used->id;
- last++;
- num++;
- }
-@@ -433,6 +434,7 @@ static void ivshm_net_rx_finish(struct ivshm_net *in, struct vring_desc *desc)
-
- used = rx->last_used_idx++ & (vr->num - 1);
- vr->used->ring[used].id = desc_id;
-+ vr->used->ring[used].len = 1;
-
- virt_store_release(&vr->used->idx, rx->last_used_idx);
- }
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch
deleted file mode 100644
index cc20c2fd..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 5776a8083d73bd137a74ab33f0f7652a2c6ee83a Mon Sep 17 00:00:00 2001
-From: Henning Schild <henning.schild@siemens.com>
-Date: Mon, 18 Sep 2017 18:02:10 +0200
-Subject: [PATCH 25/32] ivshmem-net: slightly improve debug output
-
-There where two lines with the same error message, change one of them.
-
-Signed-off-by: Henning Schild <henning.schild@siemens.com>
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 556670e779e7..abc50553e644 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -369,7 +369,7 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
-
- data = ivshm_net_desc_data(in, &in->tx, desc, &len);
- if (!data) {
-- netdev_err(ndev, "bad tx descriptor\n");
-+ netdev_err(ndev, "bad tx descriptor, data == NULL\n");
- break;
- }
-
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch
deleted file mode 100644
index a7d7ab24..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 6b095510765e054c4ee641f115ab72798d97ac21 Mon Sep 17 00:00:00 2001
-From: Henning Schild <henning.schild@siemens.com>
-Date: Mon, 18 Sep 2017 18:02:11 +0200
-Subject: [PATCH 26/32] ivshmem-net: set and check descriptor flags
-
-We do not support the use of any flags. Make sure the remote does not
-confuse us using flags.
-
-Signed-off-by: Henning Schild <henning.schild@siemens.com>
-[Jan: Remove wrong removal of next field initialization]
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index abc50553e644..9ecf1d0f0d2d 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -123,8 +123,12 @@ static void *ivshm_net_desc_data(struct ivshm_net *in,
- {
- u64 offs = READ_ONCE(desc->addr);
- u32 dlen = READ_ONCE(desc->len);
-+ u16 flags = READ_ONCE(desc->flags);
- void *data;
-
-+ if (flags)
-+ return NULL;
-+
- if (offs >= in->shmlen)
- return NULL;
-
-@@ -317,6 +321,7 @@ static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
-
- desc->addr = buf - in->shm;
- desc->len = skb->len;
-+ desc->flags = 0;
-
- avail = tx->last_avail_idx++ & (vr->num - 1);
- vr->avail->ring[avail] = desc_idx;
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch
deleted file mode 100644
index 61172afd..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 73b98d39ceacd025ae4aaff1b2cbb537e852a03e Mon Sep 17 00:00:00 2001
-From: Henning Schild <henning.schild@siemens.com>
-Date: Wed, 27 Sep 2017 12:59:49 +0200
-Subject: [PATCH 27/32] ivshmem-net: add MAC changing interface
-
-Allow ifconfig, ip and other such tools to change the MAC of the
-virtual NIC.
-
-Signed-off-by: Henning Schild <henning.schild@siemens.com>
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 12 +++++++-----
- 1 file changed, 7 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 9ecf1d0f0d2d..712dde0ee6f9 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -685,12 +685,14 @@ static void ivshm_net_poll_controller(struct net_device *ndev)
- #endif
-
- static const struct net_device_ops ivshm_net_ops = {
-- .ndo_open = ivshm_net_open,
-- .ndo_stop = ivshm_net_stop,
-- .ndo_start_xmit = ivshm_net_xmit,
-- .ndo_change_mtu = ivshm_net_change_mtu,
-+ .ndo_open = ivshm_net_open,
-+ .ndo_stop = ivshm_net_stop,
-+ .ndo_start_xmit = ivshm_net_xmit,
-+ .ndo_change_mtu = ivshm_net_change_mtu,
-+ .ndo_set_mac_address = eth_mac_addr,
-+ .ndo_validate_addr = eth_validate_addr,
- #ifdef CONFIG_NET_POLL_CONTROLLER
-- .ndo_poll_controller = ivshm_net_poll_controller,
-+ .ndo_poll_controller = ivshm_net_poll_controller,
- #endif
- };
-
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch
deleted file mode 100644
index 6a1c212f..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From fbefa0a6dcc6011aef4444c771f300c40fca30f1 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Tue, 3 Oct 2017 12:24:59 +0200
-Subject: [PATCH 28/32] ivshmem-net: Silence compiler warning
-
-At least Linaro's gcc 6.3 does not see the initialization and usage
-dependency of fhead and num. Let's silence this false positive.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 712dde0ee6f9..6fa7a6c81bf1 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -356,6 +356,7 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
- last = tx->last_used_idx;
-
- fdesc = NULL;
-+ fhead = 0;
- num = 0;
-
- while (last != used_idx) {
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch
deleted file mode 100644
index 335c6bdb..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 1a0998da61deead1dbb38393fedaefee69f59044 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 4 Mar 2018 13:16:04 +0100
-Subject: [PATCH 29/32] ivshmem-net: Fix bogus transition to RESET state
-
-If we are in READY but the remote is still in INIT, we so far fell back
-to RESET which caused the setup to get stuck. Fix this by only
-transitioning from READY/RUN to RESET in ivshm_net_state_change if the
-remote is in RESET as well.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 6fa7a6c81bf1..0c503194b4ec 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -598,7 +598,7 @@ static void ivshm_net_state_change(struct work_struct *work)
- if (rstate >= IVSHM_NET_STATE_READY) {
- netif_carrier_on(ndev);
- ivshm_net_run(ndev);
-- } else {
-+ } else if (rstate == IVSHM_NET_STATE_RESET) {
- netif_carrier_off(ndev);
- ivshm_net_do_stop(ndev);
- }
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch
deleted file mode 100644
index 42ca05a0..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From a3ee1ba8e4948ac4e6e4eae3061b72b3bf867122 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 4 Mar 2018 13:50:24 +0100
-Subject: [PATCH 30/32] ivshmem-net: Refactor and comment
- ivshm_net_state_change
-
-This should make the state transitioning logic clearer. Also avoid the
-harmless but redundant netif_carrier_on/ivshm_net_run in RUN state.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 23 ++++++++++++++++++++---
- 1 file changed, 20 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 0c503194b4ec..aba77c232c48 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -575,14 +575,21 @@ static void ivshm_net_state_change(struct work_struct *work)
- struct net_device *ndev = in->napi.dev;
- u32 rstate = readl(&in->ivshm_regs->rstate);
-
--
- switch (in->lstate) {
- case IVSHM_NET_STATE_RESET:
-+ /*
-+ * Wait for the remote to leave READY/RUN before transitioning
-+ * to INIT.
-+ */
- if (rstate < IVSHM_NET_STATE_READY)
- ivshm_net_set_state(in, IVSHM_NET_STATE_INIT);
- break;
-
- case IVSHM_NET_STATE_INIT:
-+ /*
-+ * Wait for the remote to leave RESET before performing the
-+ * initialization and moving to READY.
-+ */
- if (rstate > IVSHM_NET_STATE_RESET) {
- ivshm_net_init_queues(ndev);
- ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
-@@ -594,11 +601,21 @@ static void ivshm_net_state_change(struct work_struct *work)
- break;
-
- case IVSHM_NET_STATE_READY:
-- case IVSHM_NET_STATE_RUN:
-+ /*
-+ * Link is up and we are running once the remote is in READY or
-+ * RUN.
-+ */
- if (rstate >= IVSHM_NET_STATE_READY) {
- netif_carrier_on(ndev);
- ivshm_net_run(ndev);
-- } else if (rstate == IVSHM_NET_STATE_RESET) {
-+ break;
-+ }
-+ /* fall through */
-+ case IVSHM_NET_STATE_RUN:
-+ /*
-+ * If the remote goes to RESET, we need to follow immediately.
-+ */
-+ if (rstate == IVSHM_NET_STATE_RESET) {
- netif_carrier_off(ndev);
- ivshm_net_do_stop(ndev);
- }
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch
deleted file mode 100644
index bedbc59f..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 6c86f9ef9fa5029b8f87867f47fe51d6cc1960a5 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Sun, 2 Jun 2019 11:58:20 +0200
-Subject: [PATCH 31/32] ivshmem-net: Switch to netdev_xmit_more helper
-
-The skb field has been removed by 4f296edeb9d4.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 10 ++++++----
- 1 file changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index aba77c232c48..9946cef63c1f 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -294,7 +294,8 @@ static u32 ivshm_net_tx_advance(struct ivshm_net_queue *q, u32 *pos, u32 len)
- return p;
- }
-
--static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
-+static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb,
-+ bool xmit_more)
- {
- struct ivshm_net *in = netdev_priv(ndev);
- struct ivshm_net_queue *tx = &in->tx;
-@@ -327,7 +328,7 @@ static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb)
- vr->avail->ring[avail] = desc_idx;
- tx->num_added++;
-
-- if (!skb->xmit_more) {
-+ if (!xmit_more) {
- virt_store_release(&vr->avail->idx, tx->last_avail_idx);
- ivshm_net_notify_tx(in, tx->num_added);
- tx->num_added = 0;
-@@ -509,17 +510,18 @@ static int ivshm_net_poll(struct napi_struct *napi, int budget)
- static netdev_tx_t ivshm_net_xmit(struct sk_buff *skb, struct net_device *ndev)
- {
- struct ivshm_net *in = netdev_priv(ndev);
-+ bool xmit_more = netdev_xmit_more();
-
- ivshm_net_tx_clean(ndev);
-
- if (!ivshm_net_tx_ok(in, ndev->mtu)) {
- ivshm_net_enable_tx_irq(in);
- netif_stop_queue(ndev);
-- skb->xmit_more = 0;
-+ xmit_more = false;
- in->stats.tx_pause++;
- }
-
-- ivshm_net_tx_frame(ndev, skb);
-+ ivshm_net_tx_frame(ndev, skb, xmit_more);
-
- in->stats.tx_packets++;
- ndev->stats.tx_packets++;
---
-2.11.0
-
diff --git a/meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch b/meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch
deleted file mode 100644
index dc10cd2f..00000000
--- a/meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch
+++ /dev/null
@@ -1,650 +0,0 @@
-From 9caa6a8cab0d7f46475990aaeb7dcc7721547ef0 Mon Sep 17 00:00:00 2001
-From: Jan Kiszka <jan.kiszka@siemens.com>
-Date: Mon, 5 Dec 2016 15:43:53 +0100
-Subject: [PATCH 32/32] ivshmem-net: Adjust to reworked version of ivshmem in
- Jailhouse
-
-This contains the changes required to work with the new revision of
-ivshmem in Jailhouse, namely:
-
-- changed PCI vendor and device ID
-- vendor capability to communicate region location
-- new MMIO register layout
-- common interrupt control register
-- state table support, removal of rstate register
-- unidirectional shared memory regions
-- vector value has to be written to doorbell register
-- support for multiple vectors, used to split config from tx-rx
-
-Note: Specification work for the interface is ongoing, so details may
-still change.
-
-Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
----
- drivers/net/ivshmem-net.c | 335 ++++++++++++++++++++++++++++++----------------
- 1 file changed, 223 insertions(+), 112 deletions(-)
-
-diff --git a/drivers/net/ivshmem-net.c b/drivers/net/ivshmem-net.c
-index 9946cef63c1f..18d5a15dbec2 100644
---- a/drivers/net/ivshmem-net.c
-+++ b/drivers/net/ivshmem-net.c
-@@ -1,5 +1,6 @@
- /*
- * Copyright 2016 Mans Rullgard <mans@mansr.com>
-+ * Copyright (c) Siemens AG, 2016-2020
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
-@@ -15,6 +16,7 @@
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
- */
-
-+#include <linux/ivshmem.h>
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/pci.h>
-@@ -28,34 +30,28 @@
-
- #define DRV_NAME "ivshmem-net"
-
--#define JAILHOUSE_CFG_SHMEM_PTR 0x40
--#define JAILHOUSE_CFG_SHMEM_SZ 0x48
-+#define IVSHM_NET_STATE_RESET 0
-+#define IVSHM_NET_STATE_INIT 1
-+#define IVSHM_NET_STATE_READY 2
-+#define IVSHM_NET_STATE_RUN 3
-
--#define IVSHMEM_INTX_ENABLE 0x1
-+#define IVSHM_NET_FLAG_RUN 0
-
--#define IVSHM_NET_STATE_RESET 0
--#define IVSHM_NET_STATE_INIT 1
--#define IVSHM_NET_STATE_READY 2
--#define IVSHM_NET_STATE_RUN 3
--
--#define IVSHM_NET_FLAG_RUN 0
--
--#define IVSHM_NET_MTU_MIN 256
--#define IVSHM_NET_MTU_MAX 65535
--#define IVSHM_NET_MTU_DEF 16384
-+#define IVSHM_NET_MTU_MIN 256
-+#define IVSHM_NET_MTU_MAX 65535
-+#define IVSHM_NET_MTU_DEF 16384
-
- #define IVSHM_NET_FRAME_SIZE(s) ALIGN(18 + (s), SMP_CACHE_BYTES)
-
- #define IVSHM_NET_VQ_ALIGN 64
-
--struct ivshmem_regs {
-- u32 intxctrl;
-- u32 istat;
-- u32 ivpos;
-- u32 doorbell;
-- u32 lstate;
-- u32 rstate;
--};
-+#define IVSHM_NET_SECTION_TX 0
-+#define IVSHM_NET_SECTION_RX 1
-+
-+#define IVSHM_NET_MSIX_STATE 0
-+#define IVSHM_NET_MSIX_TX_RX 1
-+
-+#define IVSHM_NET_NUM_VECTORS 2
-
- struct ivshm_net_queue {
- struct vring vr;
-@@ -73,7 +69,7 @@ struct ivshm_net_queue {
- };
-
- struct ivshm_net_stats {
-- u32 interrupts;
-+ u32 tx_rx_interrupts;
- u32 tx_packets;
- u32 tx_notify;
- u32 tx_pause;
-@@ -97,8 +93,9 @@ struct ivshm_net {
-
- struct napi_struct napi;
-
-- u32 lstate;
-- u32 rstate;
-+ u32 state;
-+ u32 last_peer_state;
-+ u32 *state_table;
-
- unsigned long flags;
-
-@@ -107,17 +104,19 @@ struct ivshm_net {
-
- struct ivshm_net_stats stats;
-
-- struct ivshmem_regs __iomem *ivshm_regs;
-- void *shm;
-- phys_addr_t shmaddr;
-+ struct ivshm_regs __iomem *ivshm_regs;
-+ void *shm[2];
- resource_size_t shmlen;
- u32 peer_id;
-
-+ u32 tx_rx_vector;
-+
- struct pci_dev *pdev;
- };
-
- static void *ivshm_net_desc_data(struct ivshm_net *in,
- struct ivshm_net_queue *q,
-+ unsigned int region,
- struct vring_desc *desc,
- u32 *len)
- {
-@@ -132,7 +131,7 @@ static void *ivshm_net_desc_data(struct ivshm_net *in,
- if (offs >= in->shmlen)
- return NULL;
-
-- data = in->shm + offs;
-+ data = in->shm[region] + offs;
-
- if (data < q->data || data >= q->end)
- return NULL;
-@@ -160,18 +159,17 @@ static void ivshm_net_init_queue(struct ivshm_net *in,
- static void ivshm_net_init_queues(struct net_device *ndev)
- {
- struct ivshm_net *in = netdev_priv(ndev);
-- int ivpos = readl(&in->ivshm_regs->ivpos);
- void *tx;
- void *rx;
- int i;
-
-- tx = in->shm + ivpos * in->shmlen / 2;
-- rx = in->shm + !ivpos * in->shmlen / 2;
-+ tx = in->shm[IVSHM_NET_SECTION_TX];
-+ rx = in->shm[IVSHM_NET_SECTION_RX];
-
-- memset(tx, 0, in->shmlen / 2);
-+ memset(tx, 0, in->shmlen);
-
-- ivshm_net_init_queue(in, &in->rx, rx, in->qlen);
- ivshm_net_init_queue(in, &in->tx, tx, in->qlen);
-+ ivshm_net_init_queue(in, &in->rx, rx, in->qlen);
-
- swap(in->rx.vr.used, in->tx.vr.used);
-
-@@ -191,14 +189,14 @@ static int ivshm_net_calc_qsize(struct net_device *ndev)
- for (qlen = 4096; qlen > 32; qlen >>= 1) {
- vrsize = vring_size(qlen, IVSHM_NET_VQ_ALIGN);
- vrsize = ALIGN(vrsize, IVSHM_NET_VQ_ALIGN);
-- if (vrsize < in->shmlen / 16)
-+ if (vrsize < in->shmlen / 8)
- break;
- }
-
-- if (vrsize > in->shmlen / 2)
-+ if (vrsize > in->shmlen)
- return -EINVAL;
-
-- qsize = in->shmlen / 2 - vrsize;
-+ qsize = in->shmlen - vrsize;
-
- if (qsize < 4 * IVSHM_NET_MTU_MIN)
- return -EINVAL;
-@@ -221,7 +219,8 @@ static void ivshm_net_notify_tx(struct ivshm_net *in, unsigned int num)
- new = in->tx.last_avail_idx;
-
- if (vring_need_event(evt, new, old)) {
-- writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
-+ writel(in->tx_rx_vector | (in->peer_id << 16),
-+ &in->ivshm_regs->doorbell);
- in->stats.tx_notify++;
- }
- }
-@@ -243,7 +242,8 @@ static void ivshm_net_notify_rx(struct ivshm_net *in, unsigned int num)
- new = in->rx.last_used_idx;
-
- if (vring_need_event(evt, new, old)) {
-- writel(in->peer_id << 16, &in->ivshm_regs->doorbell);
-+ writel(in->tx_rx_vector | (in->peer_id << 16),
-+ &in->ivshm_regs->doorbell);
- in->stats.rx_notify++;
- }
- }
-@@ -320,7 +320,7 @@ static int ivshm_net_tx_frame(struct net_device *ndev, struct sk_buff *skb,
- buf = tx->data + head;
- skb_copy_and_csum_dev(skb, buf);
-
-- desc->addr = buf - in->shm;
-+ desc->addr = buf - in->shm[IVSHM_NET_SECTION_TX];
- desc->len = skb->len;
- desc->flags = 0;
-
-@@ -374,7 +374,8 @@ static void ivshm_net_tx_clean(struct net_device *ndev)
-
- desc = &vr->desc[used->id];
-
-- data = ivshm_net_desc_data(in, &in->tx, desc, &len);
-+ data = ivshm_net_desc_data(in, &in->tx, IVSHM_NET_SECTION_TX,
-+ desc, &len);
- if (!data) {
- netdev_err(ndev, "bad tx descriptor, data == NULL\n");
- break;
-@@ -466,7 +467,8 @@ static int ivshm_net_poll(struct napi_struct *napi, int budget)
- if (!desc)
- break;
-
-- data = ivshm_net_desc_data(in, &in->rx, desc, &len);
-+ data = ivshm_net_desc_data(in, &in->rx, IVSHM_NET_SECTION_RX,
-+ desc, &len);
- if (!data) {
- netdev_err(ndev, "bad rx descriptor\n");
- break;
-@@ -535,15 +537,15 @@ static netdev_tx_t ivshm_net_xmit(struct sk_buff *skb, struct net_device *ndev)
- static void ivshm_net_set_state(struct ivshm_net *in, u32 state)
- {
- virt_wmb();
-- WRITE_ONCE(in->lstate, state);
-- writel(state, &in->ivshm_regs->lstate);
-+ WRITE_ONCE(in->state, state);
-+ writel(state, &in->ivshm_regs->state);
- }
-
- static void ivshm_net_run(struct net_device *ndev)
- {
- struct ivshm_net *in = netdev_priv(ndev);
-
-- if (in->lstate < IVSHM_NET_STATE_READY)
-+ if (in->state < IVSHM_NET_STATE_READY)
- return;
-
- if (!netif_running(ndev))
-@@ -575,15 +577,15 @@ static void ivshm_net_state_change(struct work_struct *work)
- {
- struct ivshm_net *in = container_of(work, struct ivshm_net, state_work);
- struct net_device *ndev = in->napi.dev;
-- u32 rstate = readl(&in->ivshm_regs->rstate);
-+ u32 peer_state = READ_ONCE(in->state_table[in->peer_id]);
-
-- switch (in->lstate) {
-+ switch (in->state) {
- case IVSHM_NET_STATE_RESET:
- /*
- * Wait for the remote to leave READY/RUN before transitioning
- * to INIT.
- */
-- if (rstate < IVSHM_NET_STATE_READY)
-+ if (peer_state < IVSHM_NET_STATE_READY)
- ivshm_net_set_state(in, IVSHM_NET_STATE_INIT);
- break;
-
-@@ -592,7 +594,7 @@ static void ivshm_net_state_change(struct work_struct *work)
- * Wait for the remote to leave RESET before performing the
- * initialization and moving to READY.
- */
-- if (rstate > IVSHM_NET_STATE_RESET) {
-+ if (peer_state > IVSHM_NET_STATE_RESET) {
- ivshm_net_init_queues(ndev);
- ivshm_net_set_state(in, IVSHM_NET_STATE_READY);
-
-@@ -607,7 +609,7 @@ static void ivshm_net_state_change(struct work_struct *work)
- * Link is up and we are running once the remote is in READY or
- * RUN.
- */
-- if (rstate >= IVSHM_NET_STATE_READY) {
-+ if (peer_state >= IVSHM_NET_STATE_READY) {
- netif_carrier_on(ndev);
- ivshm_net_run(ndev);
- break;
-@@ -617,7 +619,7 @@ static void ivshm_net_state_change(struct work_struct *work)
- /*
- * If the remote goes to RESET, we need to follow immediately.
- */
-- if (rstate == IVSHM_NET_STATE_RESET) {
-+ if (peer_state == IVSHM_NET_STATE_RESET) {
- netif_carrier_off(ndev);
- ivshm_net_do_stop(ndev);
- }
-@@ -625,31 +627,44 @@ static void ivshm_net_state_change(struct work_struct *work)
- }
-
- virt_wmb();
-- WRITE_ONCE(in->rstate, rstate);
-+ WRITE_ONCE(in->last_peer_state, peer_state);
- }
-
--static void ivshm_net_check_state(struct net_device *ndev)
-+static void ivshm_net_check_state(struct ivshm_net *in)
- {
-- struct ivshm_net *in = netdev_priv(ndev);
-- u32 rstate = readl(&in->ivshm_regs->rstate);
--
-- if (rstate != in->rstate || !test_bit(IVSHM_NET_FLAG_RUN, &in->flags))
-+ if (in->state_table[in->peer_id] != in->last_peer_state ||
-+ !test_bit(IVSHM_NET_FLAG_RUN, &in->flags))
- queue_work(in->state_wq, &in->state_work);
- }
-
--static irqreturn_t ivshm_net_int(int irq, void *data)
-+static irqreturn_t ivshm_net_int_state(int irq, void *data)
- {
-- struct net_device *ndev = data;
-- struct ivshm_net *in = netdev_priv(ndev);
-+ struct ivshm_net *in = data;
-+
-+ ivshm_net_check_state(in);
-+
-+ return IRQ_HANDLED;
-+}
-
-- in->stats.interrupts++;
-+static irqreturn_t ivshm_net_int_tx_rx(int irq, void *data)
-+{
-+ struct ivshm_net *in = data;
-+
-+ in->stats.tx_rx_interrupts++;
-
-- ivshm_net_check_state(ndev);
- napi_schedule_irqoff(&in->napi);
-
- return IRQ_HANDLED;
- }
-
-+static irqreturn_t ivshm_net_intx(int irq, void *data)
-+{
-+ ivshm_net_int_state(irq, data);
-+ ivshm_net_int_tx_rx(irq, data);
-+
-+ return IRQ_HANDLED;
-+}
-+
- static int ivshm_net_open(struct net_device *ndev)
- {
- netdev_reset_queue(ndev);
-@@ -717,7 +732,7 @@ static const struct net_device_ops ivshm_net_ops = {
- };
-
- static const char ivshm_net_stats[][ETH_GSTRING_LEN] = {
-- "interrupts",
-+ "tx_rx_interrupts",
- "tx_packets",
- "tx_notify",
- "tx_pause",
-@@ -760,7 +775,7 @@ static void ivshm_net_get_ethtool_stats(struct net_device *ndev,
- unsigned int n = 0;
- unsigned int i;
-
-- st[n++] = in->stats.interrupts;
-+ st[n++] = in->stats.tx_rx_interrupts;
- st[n++] = in->stats.tx_packets;
- st[n++] = in->stats.tx_notify;
- st[n++] = in->stats.tx_pause;
-@@ -789,8 +804,8 @@ static void ivshm_net_get_regs(struct net_device *ndev,
- u32 *reg32 = p;
- u16 *reg16;
-
-- *reg32++ = in->lstate;
-- *reg32++ = in->rstate;
-+ *reg32++ = in->state;
-+ *reg32++ = in->last_peer_state;
- *reg32++ = in->qlen;
-
- reg16 = (u16 *)reg32;
-@@ -812,17 +827,28 @@ static const struct ethtool_ops ivshm_net_ethtool_ops = {
- .get_regs = ivshm_net_get_regs,
- };
-
-+static u64 get_config_qword(struct pci_dev *pdev, unsigned int pos)
-+{
-+ u32 lo, hi;
-+
-+ pci_read_config_dword(pdev, pos, &lo);
-+ pci_read_config_dword(pdev, pos + 4, &hi);
-+ return lo | ((u64)hi << 32);
-+}
-+
- static int ivshm_net_probe(struct pci_dev *pdev,
-- const struct pci_device_id *id)
-+ const struct pci_device_id *pci_id)
- {
-+ phys_addr_t output_sections_addr, section_addr;
-+ resource_size_t section_sz, output_section_sz;
-+ void *state_table, *output_sections;
-+ struct ivshm_regs __iomem *regs;
- struct net_device *ndev;
- struct ivshm_net *in;
-- struct ivshmem_regs __iomem *regs;
-- resource_size_t shmaddr;
-- resource_size_t shmlen;
-+ unsigned int cap_pos;
- char *device_name;
-- void *shm;
-- u32 ivpos;
-+ int vendor_cap;
-+ u32 id, dword;
- int ret;
-
- ret = pcim_enable_device(pdev);
-@@ -839,40 +865,75 @@ static int ivshm_net_probe(struct pci_dev *pdev,
-
- regs = pcim_iomap_table(pdev)[0];
-
-- shmlen = pci_resource_len(pdev, 2);
-+ id = readl(&regs->id);
-+ if (id > 1) {
-+ dev_err(&pdev->dev, "invalid ID %d\n", id);
-+ return -EINVAL;
-+ }
-+ if (readl(&regs->max_peers) > 2) {
-+ dev_err(&pdev->dev, "only 2 peers supported\n");
-+ return -EINVAL;
-+ }
-+
-+ vendor_cap = pci_find_capability(pdev, PCI_CAP_ID_VNDR);
-+ if (vendor_cap < 0) {
-+ dev_err(&pdev->dev, "missing vendor capability\n");
-+ return -EINVAL;
-+ }
-
-- if (shmlen) {
-- shmaddr = pci_resource_start(pdev, 2);
-+ if (pci_resource_len(pdev, 2) > 0) {
-+ section_addr = pci_resource_start(pdev, 2);
- } else {
-- union { u64 v; u32 hl[2]; } val;
--
-- pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR,
-- &val.hl[0]);
-- pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_PTR + 4,
-- &val.hl[1]);
-- shmaddr = val.v;
--
-- pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ,
-- &val.hl[0]);
-- pci_read_config_dword(pdev, JAILHOUSE_CFG_SHMEM_SZ + 4,
-- &val.hl[1]);
-- shmlen = val.v;
-+ cap_pos = vendor_cap + IVSHM_CFG_ADDRESS;
-+ section_addr = get_config_qword(pdev, cap_pos);
- }
-
-+ cap_pos = vendor_cap + IVSHM_CFG_STATE_TAB_SZ;
-+ pci_read_config_dword(pdev, cap_pos, &dword);
-+ section_sz = dword;
-
-- if (!devm_request_mem_region(&pdev->dev, shmaddr, shmlen, DRV_NAME))
-+ if (!devm_request_mem_region(&pdev->dev, section_addr, section_sz,
-+ DRV_NAME))
- return -EBUSY;
-
-- shm = devm_memremap(&pdev->dev, shmaddr, shmlen, MEMREMAP_WB);
-- if (!shm)
-+ state_table = devm_memremap(&pdev->dev, section_addr, section_sz,
-+ MEMREMAP_WB);
-+ if (!state_table)
- return -ENOMEM;
-
-- ivpos = readl(&regs->ivpos);
-- if (ivpos > 1) {
-- dev_err(&pdev->dev, "invalid IVPosition %d\n", ivpos);
-+ output_sections_addr = section_addr + section_sz;
-+
-+ cap_pos = vendor_cap + IVSHM_CFG_RW_SECTION_SZ;
-+ section_sz = get_config_qword(pdev, cap_pos);
-+ if (section_sz > 0) {
-+ dev_info(&pdev->dev, "R/W section detected - "
-+ "unused by this driver version\n");
-+ output_sections_addr += section_sz;
-+ }
-+
-+ cap_pos = vendor_cap + IVSHM_CFG_OUTPUT_SECTION_SZ;
-+ output_section_sz = get_config_qword(pdev, cap_pos);
-+ if (output_section_sz == 0) {
-+ dev_err(&pdev->dev, "Missing input/output sections\n");
- return -EINVAL;
- }
-
-+ if (!devm_request_mem_region(&pdev->dev, output_sections_addr,
-+ output_section_sz * 2, DRV_NAME))
-+ return -EBUSY;
-+
-+ output_sections = devm_memremap(&pdev->dev, output_sections_addr,
-+ output_section_sz * 2, MEMREMAP_WB);
-+ if (!output_sections)
-+ return -ENOMEM;
-+
-+ section_addr = output_sections_addr + output_section_sz * id;
-+ dev_info(&pdev->dev, "TX memory at %pa, size %pa\n",
-+ &section_addr, &output_section_sz);
-+ section_addr = output_sections_addr + output_section_sz * !id;
-+ dev_info(&pdev->dev, "RX memory at %pa, size %pa\n",
-+ &section_addr, &output_section_sz);
-+
- device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s[%s]", DRV_NAME,
- dev_name(&pdev->dev));
- if (!device_name)
-@@ -887,10 +948,16 @@ static int ivshm_net_probe(struct pci_dev *pdev,
-
- in = netdev_priv(ndev);
- in->ivshm_regs = regs;
-- in->shm = shm;
-- in->shmaddr = shmaddr;
-- in->shmlen = shmlen;
-- in->peer_id = !ivpos;
-+ in->state_table = state_table;
-+
-+ in->shm[IVSHM_NET_SECTION_TX] =
-+ output_sections + output_section_sz * id;
-+ in->shm[IVSHM_NET_SECTION_RX] =
-+ output_sections + output_section_sz * !id;
-+
-+ in->shmlen = output_section_sz;
-+
-+ in->peer_id = !id;
- in->pdev = pdev;
- spin_lock_init(&in->tx_free_lock);
- spin_lock_init(&in->tx_clean_lock);
-@@ -919,24 +986,64 @@ static int ivshm_net_probe(struct pci_dev *pdev,
- if (ret)
- goto err_wq;
-
-- ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
-+ ret = pci_alloc_irq_vectors(pdev, 1, 2, PCI_IRQ_LEGACY | PCI_IRQ_MSIX);
- if (ret < 0)
- goto err_alloc_irq;
-
-- ret = request_irq(pci_irq_vector(pdev, 0), ivshm_net_int, 0,
-- device_name, ndev);
-- if (ret)
-- goto err_request_irq;
-+ if (pdev->msix_enabled) {
-+ if (ret != 2) {
-+ ret = -EBUSY;
-+ goto err_request_irq;
-+ }
-+
-+ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
-+ "%s-state[%s]", DRV_NAME,
-+ dev_name(&pdev->dev));
-+ if (!device_name) {
-+ ret = -ENOMEM;
-+ goto err_request_irq;
-+ }
-+
-+ ret = request_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_STATE),
-+ ivshm_net_int_state, 0, device_name, in);
-+ if (ret)
-+ goto err_request_irq;
-+
-+ device_name = devm_kasprintf(&pdev->dev, GFP_KERNEL,
-+ "%s-tx-rx[%s]", DRV_NAME,
-+ dev_name(&pdev->dev));
-+ if (!device_name) {
-+ ret = -ENOMEM;
-+ goto err_request_irq2;
-+ }
-+
-+ ret = request_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_TX_RX),
-+ ivshm_net_int_tx_rx, 0, device_name, in);
-+ if (ret)
-+ goto err_request_irq2;
-+
-+ in->tx_rx_vector = IVSHM_NET_MSIX_TX_RX;
-+ } else {
-+ ret = request_irq(pci_irq_vector(pdev, 0), ivshm_net_intx, 0,
-+ device_name, in);
-+ if (ret)
-+ goto err_request_irq;
-+
-+ in->tx_rx_vector = 0;
-+ }
-
- pci_set_master(pdev);
-- if (!pdev->msix_enabled)
-- writel(IVSHMEM_INTX_ENABLE, &in->ivshm_regs->intxctrl);
-
-- writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
-- ivshm_net_check_state(ndev);
-+ pci_write_config_byte(pdev, vendor_cap + IVSHM_CFG_PRIV_CNTL, 0);
-+ writel(IVSHM_INT_ENABLE, &in->ivshm_regs->int_control);
-+
-+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->state);
-+ ivshm_net_check_state(in);
-
- return 0;
-
-+err_request_irq2:
-+ free_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_STATE), in);
- err_request_irq:
- pci_free_irq_vectors(pdev);
- err_alloc_irq:
-@@ -954,11 +1061,15 @@ static void ivshm_net_remove(struct pci_dev *pdev)
- struct net_device *ndev = pci_get_drvdata(pdev);
- struct ivshm_net *in = netdev_priv(ndev);
-
-- writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->lstate);
-+ writel(IVSHM_NET_STATE_RESET, &in->ivshm_regs->state);
-+ writel(0, &in->ivshm_regs->int_control);
-
-- if (!pdev->msix_enabled)
-- writel(0, &in->ivshm_regs->intxctrl);
-- free_irq(pci_irq_vector(pdev, 0), ndev);
-+ if (pdev->msix_enabled) {
-+ free_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_STATE), in);
-+ free_irq(pci_irq_vector(pdev, IVSHM_NET_MSIX_TX_RX), in);
-+ } else {
-+ free_irq(pci_irq_vector(pdev, 0), in);
-+ }
- pci_free_irq_vectors(pdev);
-
- unregister_netdev(ndev);
-@@ -968,8 +1079,8 @@ static void ivshm_net_remove(struct pci_dev *pdev)
- }
-
- static const struct pci_device_id ivshm_net_id_table[] = {
-- { PCI_DEVICE(PCI_VENDOR_ID_REDHAT_QUMRANET, 0x1110),
-- (PCI_CLASS_OTHERS << 16) | (0x01 << 8), 0xffff00 },
-+ { PCI_DEVICE(PCI_VENDOR_ID_SIEMENS, PCI_DEVICE_ID_IVSHMEM),
-+ (PCI_CLASS_OTHERS << 16) | IVSHM_PROTO_NET, 0xffffff },
- { 0 }
- };
- MODULE_DEVICE_TABLE(pci, ivshm_net_id_table);
---
-2.11.0
-
diff --git a/templates/feature/agl-jailhouse/50_bblayers.conf.inc b/templates/feature/agl-jailhouse/50_bblayers.conf.inc
index d3ed39d5..c8963ac2 100644
--- a/templates/feature/agl-jailhouse/50_bblayers.conf.inc
+++ b/templates/feature/agl-jailhouse/50_bblayers.conf.inc
@@ -1,7 +1,5 @@
BBLAYERS =+ " \
${METADIR}/meta-agl-devel/meta-agl-jailhouse \
${METADIR}/bsp/meta-arm/meta-arm \
+ ${METADIR}/bsp/meta-arm/meta-arm-toolchain \
"
-
-# Up-to-date meta-arm depends on meta-arm-toolchain
-#BBLAYERS =+ "${METADIR}/bsp/meta-arm/meta-arm-toolchain"
diff --git a/templates/feature/agl-jailhouse/50_local.conf.inc b/templates/feature/agl-jailhouse/50_local.conf.inc
index 081c53fb..620c0a5f 100644
--- a/templates/feature/agl-jailhouse/50_local.conf.inc
+++ b/templates/feature/agl-jailhouse/50_local.conf.inc
@@ -6,8 +6,8 @@ RPI_KERNEL_DEVICETREE_OVERLAYS_append = " overlays/jailhouse-memory.dtbo"
#Qemu Boot Config
# qemu flags for jailhouse
-QB_OPT_APPEND_append = " -device intel-iommu,intremap=on,x-buggy-eim=on -device intel-hda,addr=1b.0 -device hda-duplex"
-QB_MEM = "-m 1G"
+QB_OPT_APPEND_append = " -device intel-iommu,intremap=on,x-buggy-eim=on -device intel-hda,addr=1b.0 -device hda-duplex -serial none -serial stdio -serial telnet:localhost:4321,server,nowait -serial telnet:localhost:5432,server,nowait"
+QB_MEM = "-m 2048"
# use override with higher priority than x86-64
QB_MACHINE_qemux86-64 = "-machine q35,kernel_irqchip=split -smp 4"
@@ -17,10 +17,26 @@ QB_CPU_KVM_qemux86-64 = "-cpu host,-kvm-pv-eoi,-kvm-pv-ipi,-kvm-asyncpf,-kvm-ste
QB_KERNEL_CMDLINE_APPEND_append = " intel_iommu=off memmap=82M$0x22000000"
QB_KERNEL_ROOT = "/dev/vda"
-QB_SERIAL_OPT = "-serial none -serial stdio -serial telnet:localhost:4321,server,nowait"
+QB_SERIAL_OPT = "-serial none -serial stdio -serial telnet:localhost:4321,server,nowait -serial telnet:localhost:5432,server,nowait -vga virtio"
# jailhouse needs ttyS1 in the agl-qemu.cell as debug console.
# restrict the SERIAL_CONSOLES to ttyS0 only
SERIAL_CONSOLES = "115200;ttyS0"
KERNEL_CONSOLE = "ttyS0"
+
+# For Kernel modules
+MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-modules"
+
+# For a custom jailhouse kernel from git.kiszka.org
+PREFERRED_PROVIDER_virtual/kernel = "linux-jailhouse-custom"
+
+# prevent most external kernel module from being built
+MOST_DRIVERS = ""
+LTTNGUST_forcevariable := ""
+LTTNGTOOLS_forcevariable := ""
+LTTNGMODULES_forcevariable := ""
+
+# Disable perf build
+PERF_forcevariable := ""
+