From 4d9d7b0fc155fd9c30784ec2b1896796086ba575 Mon Sep 17 00:00:00 2001 From: Anmol Date: Tue, 27 Jul 2021 22:15:00 +0200 Subject: meta-agl-jailhouse: Update the Jailhouse configuration files The current state and Information about the patch: - Updated Jailhouse root-cell(qemu-agl.c), apic-demo(agl-apic-demo.c), ivshmem-demo(agl-ivshmem-demo.c). - Jailhouse non-root cell(agl-linux-x86-demo.c) is also working, but need some more tweak for UART redirection. - Linux Kernel updated to the latest `queues/jailhouse` kernel branch. - Updated the `recipes-kernel` structure to a more custom one. - Updated conf/local.conf according to new `recipes-kernel` structure. - Removed the Linux Kernel patches from the `recipes-kernel` as updated kernel already contain those patches. This patch is the initial block for the virtio-blk support. v2 (Anmol): Add descriptive comments for serial in cell configuration files v3 (Anmol): Remove the ` IMAGE_INSTALL_append` and `EXTRA_IMAGE_FEATURES` from `50_local.conf.inc` v4 (Anmol): Minor changes in `50_local.conf.inc` v5 (jsmoeller): add meta-arm-toolchain to fix layer dependencies v6 (jsmoeller): remove linux-yocto_5.14%.bbappend v7 (Anmol): - Update the `SRCREV` for Jailhouse in `jailhous_git.bb` - Remove the patch `configs: arm64: Add support for RPi4 with more than 1G of memory` from `SRC_URI` in `jailhouse_git.bb` - Add the helper-scripts for the `runqemu-x86_64` and non-root linux cell. v8 (Anmol): Updated the `agl-ivshmem-demo.c`. v9 (Anmol): - Resolve build errors and update `jailhouse_git.bb`. - Add `PERF_forcevariable := "bash"` in `50_local.conf.inc`. v10 (Anmol): Disable perf build. v11 (jsmoeller): update qemu-agl.c to the 2G setup of runqemu after runtime test v12 (jsmoeller): add sample inmate tarball (to be used later) Change-Id: Idfa3e513488b5ecc8dfe9573f15c4b1c0edfd54f Signed-off-by: Anmol Signed-off-by: Jan-Simon Moeller --- .../jailhouse/files/agl-apic-demo.c | 14 +- .../jailhouse/files/agl-ivshmem-demo.c | 32 +- .../jailhouse/files/agl-linux-x86-demo.c | 117 +- .../files/helper-scripts/linux-non-root-cell.sh | 21 + .../files/helper-scripts/run-qemu-jailhouse.sh | 7 + .../recipes-extended/jailhouse/files/qemu-agl.c | 50 +- .../files/sample-inmates/agl-sample-inmate.tar.xz | Bin 0 -> 8587700 bytes .../recipes-extended/jailhouse/jailhouse_git.bb | 30 +- .../linux-jailhouse-custom/files/defconfig | 4882 ++++++++++++++++++++ .../linux-jailhouse-custom/kernel-devsrc.bb | 280 ++ .../linux-jailhouse-5.14.inc | 4 + .../linux-jailhouse-custom_git.bb | 23 + .../linux-jailhouse-custom/linux/jailhouse.cfg | 10 + .../recipes-kernel/linux/linux-jailhouse-5.4.inc | 39 - .../recipes-kernel/linux/linux-yocto_5.4%.bbappend | 1 - ...use-Improve-setup-data-version-comparison.patch | 198 - ...se-Only-enable-platform-UARTs-if-availabl.patch | 200 - ...dd-simple-debug-console-via-the-hyperviso.patch | 174 - ...__boot_cpu_mode-for-use-in-Jailhouse-driv.patch | 43 - .../0005-mm-Re-export-ioremap_page_range.patch | 25 - .../0006-arm-arm64-export-__hyp_stub_vectors.patch | 57 - .../linux/0007-x86-Export-lapic_timer_period.patch | 28 - ...64-dts-marvell-armada-37xx-Set-pci-domain.patch | 31 - ...-marvell-armada-8030-mcbin-Set-pci-domain.patch | 31 - .../linux/0010-uio-Enable-read-only-mappings.patch | 57 - .../linux/linux/0011-ivshmem-Add-header-file.patch | 52 - ...-driver-for-inter-VM-shared-memory-device.patch | 311 -- ...-net-virtual-network-device-for-Jailhouse.patch | 968 ---- .../0014-ivshmem-net-Map-shmem-region-as-RAM.patch | 30 - ...015-ivshmem-net-fix-race-in-state-machine.patch | 140 - .../0016-ivshmem-net-Remove-unused-variable.patch | 28 - .../linux/linux/0017-ivshmem-net-Enable-INTx.patch | 55 - ...m-net-Improve-identification-of-resources.patch | 59 - ...-Switch-to-reset-state-on-each-net-stop-a.patch | 47 - ...020-ivshmem-net-Add-ethtool-register-dump.patch | 61 - ...-net-Fix-stuck-state-machine-during-setup.patch | 30 - ...t-Switch-to-relative-descriptor-addresses.patch | 49 - ...shmem-net-Switch-to-pci_alloc_irq_vectors.patch | 146 - ...-fill-in-and-check-used-descriptor-chain-.patch | 70 - ...ivshmem-net-slightly-improve-debug-output.patch | 29 - ...vshmem-net-set-and-check-descriptor-flags.patch | 43 - ...27-ivshmem-net-add-MAC-changing-interface.patch | 41 - ...0028-ivshmem-net-Silence-compiler-warning.patch | 28 - ...m-net-Fix-bogus-transition-to-RESET-state.patch | 31 - ...-Refactor-and-comment-ivshm_net_state_cha.patch | 68 - ...mem-net-Switch-to-netdev_xmit_more-helper.patch | 59 - ...-Adjust-to-reworked-version-of-ivshmem-in.patch | 650 --- .../recipes-kernel/linux/linux/jailhouse.cfg | 10 - .../feature/agl-jailhouse/50_bblayers.conf.inc | 4 +- templates/feature/agl-jailhouse/50_local.conf.inc | 22 +- 50 files changed, 5399 insertions(+), 3986 deletions(-) create mode 100755 meta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/linux-non-root-cell.sh create mode 100755 meta-agl-jailhouse/recipes-extended/jailhouse/files/helper-scripts/run-qemu-jailhouse.sh create mode 100644 meta-agl-jailhouse/recipes-extended/jailhouse/files/sample-inmates/agl-sample-inmate.tar.xz create mode 100644 meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/files/defconfig create mode 100644 meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/kernel-devsrc.bb create mode 100644 meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-5.14.inc create mode 100644 meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux-jailhouse-custom_git.bb create mode 100644 meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux/jailhouse.cfg delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux-jailhouse-5.4.inc delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux-yocto_5.4%.bbappend delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0001-x86-jailhouse-Improve-setup-data-version-comparison.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0002-x86-jailhouse-Only-enable-platform-UARTs-if-availabl.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0003-jailhouse-Add-simple-debug-console-via-the-hyperviso.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0004-arm-Export-__boot_cpu_mode-for-use-in-Jailhouse-driv.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0005-mm-Re-export-ioremap_page_range.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0006-arm-arm64-export-__hyp_stub_vectors.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0007-x86-Export-lapic_timer_period.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0008-arm64-dts-marvell-armada-37xx-Set-pci-domain.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0009-arm64-dts-marvell-armada-8030-mcbin-Set-pci-domain.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0010-uio-Enable-read-only-mappings.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0011-ivshmem-Add-header-file.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0012-uio-Add-driver-for-inter-VM-shared-memory-device.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0013-ivshmem-net-virtual-network-device-for-Jailhouse.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0014-ivshmem-net-Map-shmem-region-as-RAM.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0015-ivshmem-net-fix-race-in-state-machine.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0016-ivshmem-net-Remove-unused-variable.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0017-ivshmem-net-Enable-INTx.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0018-ivshmem-net-Improve-identification-of-resources.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0019-ivshmem-net-Switch-to-reset-state-on-each-net-stop-a.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0020-ivshmem-net-Add-ethtool-register-dump.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0021-ivshmem-net-Fix-stuck-state-machine-during-setup.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0022-ivshmem-net-Switch-to-relative-descriptor-addresses.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0023-ivshmem-net-Switch-to-pci_alloc_irq_vectors.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0024-ivshmem-net-fill-in-and-check-used-descriptor-chain-.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0025-ivshmem-net-slightly-improve-debug-output.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0026-ivshmem-net-set-and-check-descriptor-flags.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0027-ivshmem-net-add-MAC-changing-interface.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0028-ivshmem-net-Silence-compiler-warning.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0029-ivshmem-net-Fix-bogus-transition-to-RESET-state.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0030-ivshmem-net-Refactor-and-comment-ivshm_net_state_cha.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0031-ivshmem-net-Switch-to-netdev_xmit_more-helper.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/0032-ivshmem-net-Adjust-to-reworked-version-of-ivshmem-in.patch delete mode 100644 meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg 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" + +<.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//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-jailhouse-custom/linux/jailhouse.cfg b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux/jailhouse.cfg new file mode 100644 index 00000000..d417e556 --- /dev/null +++ b/meta-agl-jailhouse/recipes-kernel/linux-jailhouse-custom/linux/jailhouse.cfg @@ -0,0 +1,10 @@ +CONFIG_HOTPLUG_CPU=y +CONFIG_PCI_HOST_GENERIC=y + +CONFIG_HOTPLUG_PCI=y +CONFIG_IVSHMEM_NET=y + +CONFIG_UIO=y +CONFIG_UIO_IVSHMEM=y +CONFIG_VIRT_DRIVERS=y +CONFIG_JAILHOUSE_DBGCON=y 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 -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 -Signed-off-by: Borislav Petkov -Reviewed-by: Jan Kiszka -Cc: Baoquan He -Cc: "H. Peter Anvin" -Cc: Ingo Molnar -Cc: jailhouse-dev@googlegroups.com -Cc: Juergen Gross -Cc: "Kirill A. Shutemov" -Cc: Thomas Gleixner -Cc: x86-ml -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 - - 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 -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 -Signed-off-by: Borislav Petkov -Reviewed-by: Jan Kiszka -Cc: Baoquan He -Cc: "H. Peter Anvin" -Cc: Ingo Molnar -Cc: jailhouse-dev@googlegroups.com -Cc: Juergen Gross -Cc: "Kirill A. Shutemov" -Cc: Thomas Gleixner -Cc: x86-ml -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 - #include - #include -+#include - #include - #include - #include -@@ -21,11 +22,24 @@ - #include - #include - --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 -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 ---- - 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 -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 -+ */ -+ -+#include -+#include -+#include -+#include -+#ifdef CONFIG_X86 -+#include -+#endif -+#ifdef CONFIG_ARM -+#include -+#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 "); --- -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 -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 ---- - 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 - #include -+#include - - /* - * 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 -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 ---- - 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 -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 -Signed-off-by: Jan Kiszka ---- - 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 - #include - #include -+#include - #include - #include - -@@ -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 - #include - -+#include - #include - #include - #include -@@ -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 -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 ---- - 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 -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 ---- - 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 = ; - #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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -+ -+#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 -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 ---- - 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 -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#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 "); -+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 -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 -+ * -+ * 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 . -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#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(®s->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 "); -+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 -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 ---- - 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 -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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 -Signed-off-by: Jan Kiszka ---- - 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 -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 -Signed-off-by: Jan Kiszka ---- - 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 -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 -[Jan: Remove wrong removal of next field initialization] -Signed-off-by: Jan Kiszka ---- - 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 -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 -Signed-off-by: Jan Kiszka ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -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 ---- - 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 -+ * 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 . - */ - -+#include - #include - #include - #include -@@ -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(®s->id); -+ if (id > 1) { -+ dev_err(&pdev->dev, "invalid ID %d\n", id); -+ return -EINVAL; -+ } -+ if (readl(®s->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(®s->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", -+ §ion_addr, &output_section_sz); -+ section_addr = output_sections_addr + output_section_sz * !id; -+ dev_info(&pdev->dev, "RX memory at %pa, size %pa\n", -+ §ion_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/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg b/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg deleted file mode 100644 index d417e556..00000000 --- a/meta-agl-jailhouse/recipes-kernel/linux/linux/jailhouse.cfg +++ /dev/null @@ -1,10 +0,0 @@ -CONFIG_HOTPLUG_CPU=y -CONFIG_PCI_HOST_GENERIC=y - -CONFIG_HOTPLUG_PCI=y -CONFIG_IVSHMEM_NET=y - -CONFIG_UIO=y -CONFIG_UIO_IVSHMEM=y -CONFIG_VIRT_DRIVERS=y -CONFIG_JAILHOUSE_DBGCON=y 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 := "" + -- cgit 1.2.3-korg