diff --git a/research/h25-c05-at-random-producer-events/ARCHIVE-ORIGINS.json b/research/h25-c05-at-random-producer-events/ARCHIVE-ORIGINS.json new file mode 100644 index 0000000000..33c2b5bc5b --- /dev/null +++ b/research/h25-c05-at-random-producer-events/ARCHIVE-ORIGINS.json @@ -0,0 +1,217 @@ +{ + "schema": "unit13-frozen-task-evidence-export/v1", + "files": [ + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/PLAN.json", + "package_path": "archive/unit13/PLAN.json", + "bytes": 4152, + "sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/CLAIM-CLARIFICATION-v1.json", + "package_path": "archive/unit13/CLAIM-CLARIFICATION-v1.json", + "bytes": 1599, + "sha256": "81ca27af56222d00cb73507734743d909ad63512df0ba8e825ab16cdbddae7c2" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/SOURCE-IMPLEMENTATION-RELEASE-v1.json", + "package_path": "archive/unit13/SOURCE-IMPLEMENTATION-RELEASE-v1.json", + "bytes": 735, + "sha256": "67fa7c2794460ca8bceb75c1496f6c2056a5c79d05e6d0bf64e83fa93ab208d6" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/SOURCE-REPAIR-WINDOW-v1.json", + "package_path": "archive/unit13/SOURCE-REPAIR-WINDOW-v1.json", + "bytes": 1853, + "sha256": "b741ffb0dec80920c174f1f0e3ff9bcc4fc91418b38f1db1771dc8e545125333" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/SOURCE-AVAILABILITY-v1.json", + "package_path": "archive/unit13/input/SOURCE-AVAILABILITY-v1.json", + "bytes": 47029, + "sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/SOURCE-AVAILABILITY-v1.md", + "package_path": "archive/unit13/input/SOURCE-AVAILABILITY-v1.md", + "bytes": 2048, + "sha256": "d2d546187601314067a1b4fb05b8702cbadd585025b686e64697d9b7061b5ef8" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/ELF-DEFINITION-ACQUISITION-v1.json", + "package_path": "archive/unit13/input/ELF-DEFINITION-ACQUISITION-v1.json", + "bytes": 1406, + "sha256": "2a57b91b37492b721fbdbc0fcca10aaedf403f00369d9b78bfd8ae1dc27f780b" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/INPUT-AVAILABILITY-v1.json", + "package_path": "archive/unit13/implementation/INPUT-AVAILABILITY-v1.json", + "bytes": 5990, + "sha256": "4cb957e049f813e9ef71ff948253f2433ec13461f9f94ff45a8489c1f4d873da" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/INPUT-CLAIM-v2.md", + "package_path": "archive/unit13/implementation/INPUT-CLAIM-v2.md", + "bytes": 1904, + "sha256": "ff173cbb7d1274921baf6f40d8021ba57e742f08db1fe8c595834998e1a732ae" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v1.py", + "package_path": "archive/unit13/implementation/at_random_producer_v1.py.txt", + "bytes": 19989, + "sha256": "35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v1.py", + "package_path": "archive/unit13/implementation/package_reader_v1.py.txt", + "bytes": 4826, + "sha256": "63c67d9060cd7eae9e8fb95ebdd799e947a911fd3baf200127a5be673c26a2a5" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/AUTHOR-INITIAL-FREEZE-v1.json", + "package_path": "archive/unit13/author-receipts/AUTHOR-INITIAL-FREEZE-v1.json", + "bytes": 2317, + "sha256": "14e9f327c75b3fc01e76af2786e3882634a57012134185458aecf023c556e6fa" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json", + "package_path": "archive/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json", + "bytes": 6706, + "sha256": "2fe72430f0b3ff98d2fbf813c580d2fac2d7bd0b3bc1d32729fa9aa2df1f3045" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/COLD-EXPORT-v1.md", + "package_path": "archive/unit13/author-receipts/COLD-EXPORT-v1.md", + "bytes": 4022, + "sha256": "28a8a75e5fcc84e75b7747309e1def72db22d62514c8ad7ec89c030ab86567a4" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/DESIGN-v1.md", + "package_path": "archive/unit13/controls/DESIGN-v1.md", + "bytes": 6904, + "sha256": "30addd150d37f1891d3a3e1ba9f133659802f1e52c56d21d5a115e34b24467f2" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v1.py", + "package_path": "archive/unit13/controls/run_semantic_controls_v1.py.txt", + "bytes": 8472, + "sha256": "7aa2b4008dd39f1f8c1de6148ceaf009d50004016f61744ca2f38b636fcbede7" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py", + "package_path": "archive/unit13/controls/run_semantic_controls_v2.py.txt", + "bytes": 10036, + "sha256": "86c00342a451af919ca6a053a2e903d9616a52755117f973319260987327cf24" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/SEMANTIC-FIXTURES-v1.json", + "package_path": "archive/unit13/controls/SEMANTIC-FIXTURES-v1.json", + "bytes": 7293, + "sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/PROJECTION-ORACLE-v1.json", + "package_path": "archive/unit13/controls/PROJECTION-ORACLE-v1.json", + "bytes": 1333, + "sha256": "da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/STATIC-STOP-v1.json", + "package_path": "archive/unit13/controls/STATIC-STOP-v1.json", + "bytes": 1569, + "sha256": "c4184f2ca331e720e79a933fb85751cc8f25d28796aaf5d236ee7e7262b4b1d9" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/RESULTS-v1.json", + "package_path": "archive/unit13/controls/RESULTS-v1.json", + "bytes": 21032, + "sha256": "8c031791504efb5b76a65281e8ddea350b0dc42a27f71aaf8611b564fba608a9" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/RESULTS-v1.md", + "package_path": "archive/unit13/controls/RESULTS-v1.md", + "bytes": 4481, + "sha256": "c02850333925a74308dda47cb551b0c5e4ab3eefbf919428bbf74191d6cf0ee7" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/NORMAL-v2.raw", + "package_path": "archive/unit13/controls/NORMAL-v2.raw", + "bytes": 6138, + "sha256": "34f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/OPTIMIZED-v2.raw", + "package_path": "archive/unit13/controls/OPTIMIZED-v2.raw", + "bytes": 6137, + "sha256": "29ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.json", + "package_path": "archive/unit13/review/INPUT-GATE-v1.json", + "bytes": 6803, + "sha256": "ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.md", + "package_path": "archive/unit13/review/INPUT-GATE-v1.md", + "bytes": 4970, + "sha256": "044ad35edeb40994db1027230620d4a4fd1fca668d54bd292faed53fb5847877" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/ARGUMENT-v1.json", + "package_path": "archive/unit13/review/ARGUMENT-v1.json", + "bytes": 6698, + "sha256": "1ac44449fe9ff331dd6933b09fe63e1f29acf3f09c197c23cf117290304d4092" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/ARGUMENT-v1.md", + "package_path": "archive/unit13/review/ARGUMENT-v1.md", + "bytes": 5324, + "sha256": "aac2772f3b743cfb4eddcdc2f1d77034cfdca97b1f0a4394261c568e004bc3bb" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v1.json", + "package_path": "archive/unit13/review/SOURCE-REVIEW-v1.json", + "bytes": 5110, + "sha256": "85f634487dd2a4711aee399839855861ecedeb8d47bdabde641a8eb19d63c4a4" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v1.md", + "package_path": "archive/unit13/review/SOURCE-REVIEW-v1.md", + "bytes": 3804, + "sha256": "1aac1fd8a464b5c90ebc5bd8e409a5a272ed900a34b2098833c91e86c625d724" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v2.json", + "package_path": "archive/unit13/review/SOURCE-REVIEW-v2.json", + "bytes": 11902, + "sha256": "88256aa611a3b965b02d1b89722ec3065986a9a4fb6004e22fdfeb7cd1699e93" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v2.md", + "package_path": "archive/unit13/review/SOURCE-REVIEW-v2.md", + "bytes": 6863, + "sha256": "2b331dc75b5962f5694d77b258e5de203b6d1001378ef5d3cc6af548f6bd889f" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/FINAL-SOURCE-GATE-v1.json", + "package_path": "archive/unit13/review/FINAL-SOURCE-GATE-v1.json", + "bytes": 11008, + "sha256": "3bc2f37d58fa502957d24524b999b3753f39ef9c203e15da122da655b4088b7b" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/FINAL-SOURCE-GATE-v1.md", + "package_path": "archive/unit13/review/FINAL-SOURCE-GATE-v1.md", + "bytes": 7193, + "sha256": "b66f839230b6b8680cd14878ecca100021cb694eccf5947aebec4d4bfa196301" + }, + { + "source": "outputs/c05-v03-completion-20261102T055710Z/unit13/SOURCE-CLOSE-v1.json", + "package_path": "archive/unit13/SOURCE-CLOSE-v1.json", + "bytes": 7469, + "sha256": "cb8fe8c0bbad6e7812a673df90a0e5b9a36a510bbb867c28e904b3638e38540a" + } + ], + "archived_python_is_inert_DATA": true, + "missing_or_unexecuted_work_not_synthesized": true +} diff --git a/research/h25-c05-at-random-producer-events/MANIFEST.json b/research/h25-c05-at-random-producer-events/MANIFEST.json new file mode 100644 index 0000000000..5839ac8a98 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/MANIFEST.json @@ -0,0 +1,465 @@ +{ + "schema": "unit13-complete-package-manifest/v1", + "publication_revision": 2, + "predecessor_manifest_sha256": "251ca0d850fa3c5539e707f46f47d4d09dae15ae2347dd4d348571487d9494b2", + "files": [ + { + "path": "ARCHIVE-ORIGINS.json", + "bytes": 10284, + "sha256": "3a6b0ba72ee785a8db19da57dbf0994efd7708b97aeea4a29cf79c152838f941", + "git_mode": "100644" + }, + { + "path": "NOTICE.md", + "bytes": 1657, + "sha256": "982488f2019c40f2190b173f35dfef826c49e6dba78d1ffb56bb6a76f29e8f90", + "git_mode": "100644" + }, + { + "path": "PROOF-v1.md", + "bytes": 8225, + "sha256": "598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a", + "git_mode": "100644" + }, + { + "path": "README.md", + "bytes": 7325, + "sha256": "958aa80a4d3e669a1d9f374b9605100449d241995995be3aca3d8f333b61656b", + "git_mode": "100644" + }, + { + "path": "SOURCE-ORIGINS.json", + "bytes": 9889, + "sha256": "0ea1533a23976911fccb78124697f51bc5602aa9e485cb6952216b397edc5001", + "git_mode": "100644" + }, + { + "path": "SOURCE-PINS-v1.json", + "bytes": 7184, + "sha256": "11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211", + "git_mode": "100644" + }, + { + "path": "SOURCES.json", + "bytes": 2145, + "sha256": "dac8d0b7161ee828cdea54a97922ec00df82a4be8f49fca475b5fbb75ad470bd", + "git_mode": "100644" + }, + { + "path": "TASK.json", + "bytes": 4796, + "sha256": "679cb281c1785944f9117cacd5bd30ac49cf4aedc67011b242b7108c666bb2c8", + "git_mode": "100644" + }, + { + "path": "VERIFY.json", + "bytes": 791, + "sha256": "58c970c4edebbe644db0c62df7ef3504bdce75fb5b26100087c79093142dd9c4", + "git_mode": "100644" + }, + { + "path": "WITNESS-SCHEMA-v1.md", + "bytes": 6189, + "sha256": "9792c3bfd16de628f6969560c8ac4263342c5be308f346073c501b5eaa3fa935", + "git_mode": "100644" + }, + { + "path": "WITNESS-v1.json", + "bytes": 2617, + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70", + "git_mode": "100644" + }, + { + "path": "archive/unit13/CLAIM-CLARIFICATION-v1.json", + "bytes": 1599, + "sha256": "81ca27af56222d00cb73507734743d909ad63512df0ba8e825ab16cdbddae7c2", + "git_mode": "100644" + }, + { + "path": "archive/unit13/PLAN.json", + "bytes": 4152, + "sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf", + "git_mode": "100644" + }, + { + "path": "archive/unit13/SOURCE-CLOSE-v1.json", + "bytes": 7469, + "sha256": "cb8fe8c0bbad6e7812a673df90a0e5b9a36a510bbb867c28e904b3638e38540a", + "git_mode": "100644" + }, + { + "path": "archive/unit13/SOURCE-IMPLEMENTATION-RELEASE-v1.json", + "bytes": 735, + "sha256": "67fa7c2794460ca8bceb75c1496f6c2056a5c79d05e6d0bf64e83fa93ab208d6", + "git_mode": "100644" + }, + { + "path": "archive/unit13/SOURCE-REPAIR-WINDOW-v1.json", + "bytes": 1853, + "sha256": "b741ffb0dec80920c174f1f0e3ff9bcc4fc91418b38f1db1771dc8e545125333", + "git_mode": "100644" + }, + { + "path": "archive/unit13/author-receipts/AUTHOR-INITIAL-FREEZE-v1.json", + "bytes": 2317, + "sha256": "14e9f327c75b3fc01e76af2786e3882634a57012134185458aecf023c556e6fa", + "git_mode": "100644" + }, + { + "path": "archive/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json", + "bytes": 6706, + "sha256": "2fe72430f0b3ff98d2fbf813c580d2fac2d7bd0b3bc1d32729fa9aa2df1f3045", + "git_mode": "100644" + }, + { + "path": "archive/unit13/author-receipts/COLD-EXPORT-v1.md", + "bytes": 4022, + "sha256": "28a8a75e5fcc84e75b7747309e1def72db22d62514c8ad7ec89c030ab86567a4", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/DESIGN-v1.md", + "bytes": 6904, + "sha256": "30addd150d37f1891d3a3e1ba9f133659802f1e52c56d21d5a115e34b24467f2", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/NORMAL-v2.raw", + "bytes": 6138, + "sha256": "34f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/OPTIMIZED-v2.raw", + "bytes": 6137, + "sha256": "29ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/PROJECTION-ORACLE-v1.json", + "bytes": 1333, + "sha256": "da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/RESULTS-v1.json", + "bytes": 21032, + "sha256": "8c031791504efb5b76a65281e8ddea350b0dc42a27f71aaf8611b564fba608a9", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/RESULTS-v1.md", + "bytes": 4481, + "sha256": "c02850333925a74308dda47cb551b0c5e4ab3eefbf919428bbf74191d6cf0ee7", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/SEMANTIC-FIXTURES-v1.json", + "bytes": 7293, + "sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/STATIC-STOP-v1.json", + "bytes": 1569, + "sha256": "c4184f2ca331e720e79a933fb85751cc8f25d28796aaf5d236ee7e7262b4b1d9", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/run_semantic_controls_v1.py.txt", + "bytes": 8472, + "sha256": "7aa2b4008dd39f1f8c1de6148ceaf009d50004016f61744ca2f38b636fcbede7", + "git_mode": "100644" + }, + { + "path": "archive/unit13/controls/run_semantic_controls_v2.py.txt", + "bytes": 10036, + "sha256": "86c00342a451af919ca6a053a2e903d9616a52755117f973319260987327cf24", + "git_mode": "100644" + }, + { + "path": "archive/unit13/implementation/INPUT-AVAILABILITY-v1.json", + "bytes": 5990, + "sha256": "4cb957e049f813e9ef71ff948253f2433ec13461f9f94ff45a8489c1f4d873da", + "git_mode": "100644" + }, + { + "path": "archive/unit13/implementation/INPUT-CLAIM-v2.md", + "bytes": 1904, + "sha256": "ff173cbb7d1274921baf6f40d8021ba57e742f08db1fe8c595834998e1a732ae", + "git_mode": "100644" + }, + { + "path": "archive/unit13/implementation/at_random_producer_v1.py.txt", + "bytes": 19989, + "sha256": "35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b", + "git_mode": "100644" + }, + { + "path": "archive/unit13/implementation/package_reader_v1.py.txt", + "bytes": 4826, + "sha256": "63c67d9060cd7eae9e8fb95ebdd799e947a911fd3baf200127a5be673c26a2a5", + "git_mode": "100644" + }, + { + "path": "archive/unit13/input/ELF-DEFINITION-ACQUISITION-v1.json", + "bytes": 1406, + "sha256": "2a57b91b37492b721fbdbc0fcca10aaedf403f00369d9b78bfd8ae1dc27f780b", + "git_mode": "100644" + }, + { + "path": "archive/unit13/input/SOURCE-AVAILABILITY-v1.json", + "bytes": 47029, + "sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc", + "git_mode": "100644" + }, + { + "path": "archive/unit13/input/SOURCE-AVAILABILITY-v1.md", + "bytes": 2048, + "sha256": "d2d546187601314067a1b4fb05b8702cbadd585025b686e64697d9b7061b5ef8", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/ARGUMENT-v1.json", + "bytes": 6698, + "sha256": "1ac44449fe9ff331dd6933b09fe63e1f29acf3f09c197c23cf117290304d4092", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/ARGUMENT-v1.md", + "bytes": 5324, + "sha256": "aac2772f3b743cfb4eddcdc2f1d77034cfdca97b1f0a4394261c568e004bc3bb", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/FINAL-SOURCE-GATE-v1.json", + "bytes": 11008, + "sha256": "3bc2f37d58fa502957d24524b999b3753f39ef9c203e15da122da655b4088b7b", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/FINAL-SOURCE-GATE-v1.md", + "bytes": 7193, + "sha256": "b66f839230b6b8680cd14878ecca100021cb694eccf5947aebec4d4bfa196301", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/INPUT-GATE-v1.json", + "bytes": 6803, + "sha256": "ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/INPUT-GATE-v1.md", + "bytes": 4970, + "sha256": "044ad35edeb40994db1027230620d4a4fd1fca668d54bd292faed53fb5847877", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/SOURCE-REVIEW-v1.json", + "bytes": 5110, + "sha256": "85f634487dd2a4711aee399839855861ecedeb8d47bdabde641a8eb19d63c4a4", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/SOURCE-REVIEW-v1.md", + "bytes": 3804, + "sha256": "1aac1fd8a464b5c90ebc5bd8e409a5a272ed900a34b2098833c91e86c625d724", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/SOURCE-REVIEW-v2.json", + "bytes": 11902, + "sha256": "88256aa611a3b965b02d1b89722ec3065986a9a4fb6004e22fdfeb7cd1699e93", + "git_mode": "100644" + }, + { + "path": "archive/unit13/review/SOURCE-REVIEW-v2.md", + "bytes": 6863, + "sha256": "2b331dc75b5962f5694d77b258e5de203b6d1001378ef5d3cc6af548f6bd889f", + "git_mode": "100644" + }, + { + "path": "at_random_producer_v2.py", + "bytes": 20088, + "sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0", + "git_mode": "100644" + }, + { + "path": "inputs/input-001.data", + "bytes": 18600, + "sha256": "8780e78a1a737e127f25a65f6d95269bffd36158dc261114de7859b490bfc5aa", + "git_mode": "100644" + }, + { + "path": "inputs/input-002.data", + "bytes": 3169, + "sha256": "535759b7943bc89895af7746f20f7b8933ab7a9efcfb35a27c86d1a4a9b57244", + "git_mode": "100644" + }, + { + "path": "inputs/input-003.data", + "bytes": 308206, + "sha256": "8da949fb637f675c8a1170a2bfc5f029b2642f54e0efe8dbb54ca95c6324cf8d", + "git_mode": "100644" + }, + { + "path": "inputs/input-004.data", + "bytes": 50792, + "sha256": "4eb89b8d5d23050d9a9741f73979fe95fc083b897b2744f08fd395da62f4a698", + "git_mode": "100644" + }, + { + "path": "inputs/input-005.data", + "bytes": 3847, + "sha256": "c7c44aaea13b24bbc0fc5b3a0a98d9c2f774edb28846027c12e1874965d7c199", + "git_mode": "100644" + }, + { + "path": "inputs/input-006.data", + "bytes": 1834, + "sha256": "8dadb9bdd5f00bbcbb6439086f5a9d429b4eff457a61b11ce08941d1dd8d60fa", + "git_mode": "100644" + }, + { + "path": "inputs/input-007.data", + "bytes": 12164, + "sha256": "59b9c134388114d4b5bd489cc7f278ca5b1e3a3619e908361c09b233eca9fce1", + "git_mode": "100644" + }, + { + "path": "inputs/input-008.data", + "bytes": 11353, + "sha256": "865943df5cfdbf9383362d7fb2b76c6d0fd895cf0a0e20d550a26b579606b5d7", + "git_mode": "100644" + }, + { + "path": "inputs/input-009.data", + "bytes": 3037, + "sha256": "ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e", + "git_mode": "100644" + }, + { + "path": "inputs/input-010.data", + "bytes": 1406, + "sha256": "2a57b91b37492b721fbdbc0fcca10aaedf403f00369d9b78bfd8ae1dc27f780b", + "git_mode": "100644" + }, + { + "path": "inputs/input-011.data", + "bytes": 15884, + "sha256": "28bd3a67da1dcee4bf0f87d3b52dd4d755bb0b34677769876afc90a1890a7ecb", + "git_mode": "100644" + }, + { + "path": "inputs/input-012.data", + "bytes": 23942, + "sha256": "a51264289803b4b17bb262f2460ddd4ed72500aaa21e5eb80fa2db4583689361", + "git_mode": "100644" + }, + { + "path": "inputs/input-013.data", + "bytes": 1741, + "sha256": "d942241a0e6c6a639cc0b864f3d45ca16d68949f2766e5c936f5095db6a71256", + "git_mode": "100644" + }, + { + "path": "inputs/input-014.data", + "bytes": 4152, + "sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf", + "git_mode": "100644" + }, + { + "path": "inputs/input-015.data", + "bytes": 9191, + "sha256": "e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a", + "git_mode": "100644" + }, + { + "path": "inputs/input-016.data", + "bytes": 16074, + "sha256": "bd61034f05893493003a632067710781f3298c57d2a226e7c85d0cd7ccbb9512", + "git_mode": "100644" + }, + { + "path": "inputs/input-017.data", + "bytes": 58558, + "sha256": "1939cf7c82077d1a0793777be7ca0e11985750cbaff8c342ce2b2e4647c50102", + "git_mode": "100644" + }, + { + "path": "inputs/input-018.data", + "bytes": 24374, + "sha256": "0d91b34b3fc68a33dffccbafc313bc473a55028e9a6b66a7b6ee89e65e08efe4", + "git_mode": "100644" + }, + { + "path": "inputs/input-019.data", + "bytes": 53564, + "sha256": "260c4030164fa73c27e55b21f28ec1f4dfc126cc80ab6aa56482223aa3534a8f", + "git_mode": "100644" + }, + { + "path": "inputs/input-020.data", + "bytes": 49189, + "sha256": "bb5f27c46542968f8404c279db3a05351a7e2851c09114325b75c07a31b1e992", + "git_mode": "100644" + }, + { + "path": "inputs/input-021.data", + "bytes": 1258, + "sha256": "8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f", + "git_mode": "100644" + }, + { + "path": "inputs/input-022.data", + "bytes": 19317, + "sha256": "15613d116a6c77c4826036740dd5023c6a7779c776acd3ac7a1a661fe7432b3c", + "git_mode": "100644" + }, + { + "path": "inputs/input-023.data", + "bytes": 18743, + "sha256": "1022b415e1a85962e18e84484beae918fbce6ff51431fe28cc752ffb73179940", + "git_mode": "100644" + }, + { + "path": "inputs/input-024.data", + "bytes": 571, + "sha256": "7e50a100bacd7bd784538466bba53e931bdfc4f13f855258c77665f932368d8d", + "git_mode": "100644" + }, + { + "path": "licenses/Apache-2.0", + "bytes": 11357, + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "git_mode": "100644" + }, + { + "path": "licenses/GPL-2.0", + "bytes": 18600, + "sha256": "8780e78a1a737e127f25a65f6d95269bffd36158dc261114de7859b490bfc5aa", + "git_mode": "100644" + }, + { + "path": "licenses/Linux-syscall-note", + "bytes": 1258, + "sha256": "8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f", + "git_mode": "100644" + }, + { + "path": "package_reader_v2.py", + "bytes": 4826, + "sha256": "98cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf", + "git_mode": "100644" + }, + { + "path": "verify.py", + "bytes": 2614, + "sha256": "a42022fc2f403e574e494000bfe79a8dde529355acb47652022409ab7268f1cc", + "git_mode": "100644" + } + ], + "self_excluded": "MANIFEST.json", + "originals_are_inert_DATA": true +} diff --git a/research/h25-c05-at-random-producer-events/NOTICE.md b/research/h25-c05-at-random-producer-events/NOTICE.md new file mode 100644 index 0000000000..6fed920b42 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/NOTICE.md @@ -0,0 +1,7 @@ +# Source notices and credit + +New checker, reader and publication-wrapper code are supplied under Apache-2.0. The retained Linux source, declarations and notices keep their original SPDX/copyright/license terms. The GPL-2.0 text and Linux-syscall-note are preserved exactly at licenses/GPL-2.0 and licenses/Linux-syscall-note and as their pinned numeric inputs. The syscall exception applies only where the original source notice says it applies. The generated Ubuntu kernel configuration is retained as package-associated build DATA with its provenance; no claim relabels all source inputs Apache-only. + +Credit all original Linux/kernel source authors and Ubuntu maintainers; Chris R, Clear1nsight and the #6321/#6029/#5864 research lineage; unpaidmoon/Cursor/Grok #6339 and Douglas R. Colkitt. This package preserves predecessor source, the failed initial checker, independent corrections, and substantial OpenAI Pro/Codex/GPT-6.1 Sol Max assistance. Independent agent review is not human or proof-kernel acceptance. + +The exact task-input payload includes Pro14's assistant response, which proposed a handoff-memory theorem that was not adopted, and the independent correction explaining post-ELF trace/ptrace behavior. It contains no private user prompt/history or credential identified in the bounded payload review. Its critical-review metadata retains a non-access-granting current-consultation ChatGPT URL, and the provider-boundary review retains local artifact paths under /home/d3lerium. Those exact metadata bytes are disclosed and retained, not silently redacted or rebound. No actual tracing, corruption, seed or future invocation was observed. diff --git a/research/h25-c05-at-random-producer-events/PROOF-v1.md b/research/h25-c05-at-random-producer-events/PROOF-v1.md new file mode 100644 index 0000000000..74b8f620d3 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/PROOF-v1.md @@ -0,0 +1,41 @@ +# Exact AT_RANDOM producer-event argument + +This is the deliberately smaller Unit13 proposition selected by PLAN569cb172... and claim clarification81ca27af..., under the original applicable OS/loader premise. It is not Pro14's proposed handoff-memory theorem. Every execution prefix is taken from the exact source/actual launch mechanism independently of this witness, including failed and interrupted prefixes. The proof states conditional facts about reached source events; it does not define permitted executions as those already satisfying the desired conclusion. + +Source identity is separate from the semantic argument. Production checking requires every literal pin in the frozen24-input packet08811bbb.... Inert text mutation controls deliberately call the semantic analyzer without that identity gate. Ordinary original F/source occurrences remain separately required. Source digests in this witness neither replace those rows nor prove completeness/currentness. + +## Named interfaces and representation + +The applicable original OS/loader premise supplies the operational semantics of the genuine named kernel RNG and user-copy interfaces. At get_random_bytes(buffer,n), normal return supplies n bytes to that live kernel buffer; no entropy quality, independence, statistical or cryptographic claim is used. At copy_to_user(dst,src,n), the genuine copy interface preserves these arguments and returns a residual: zero means completed logical transfer, nonzero may leave partial side effects. The source's boolean guard uses only zero versus nonzero. We do not infer an exact copied prefix, write order, atomic snapshot, exclusive writer or retained memory value. + +The selected native Linux/GNU x86_64 interface has8-bit bytes,64-bit pointer/unsigned long/__u64, and its flat-address integer/pointer conversion semantics preserve the address word through the casts used here. Equal widths alone would not establish this implementation-defined conversion. Native asm/elf.h selects ELFCLASS64; exact include/linux/elf.h57 aliases elf_addr_t to Elf64_Off; uapi/linux/elf.h20 aliases Elf64_Off to __u64. This is a conditional native interface meaning, not a source-flag proof of a current host or a new ABI admission. The associated config and source commit do not establish an actual future kernel/executable instance. + +Ordinary well-defined local C object/pointer execution is included in the genuine kernel/OS interface premise. In particular, k_rand_bytes is the live local unsigned char[16] object, and the saved_auxv cursor operations refer to their actual local objects where reached in well-defined executions. This argument does not prove saved_auxv capacity, user-stack ownership or whole-kernel memory safety from the source hashes. + +## Local derivation + +G: binfmt_elf179 declares unsigned char k_rand_bytes[16]. At226 the call get_random_bytes(k_rand_bytes,sizeof(k_rand_bytes)) passes that same object and16 C bytes. Under the declared normal-return provider semantics these are the bytes subsequently supplied as the source of C. Prefixes interrupted before normal return acquire no completed-G claim and no actual seed is recorded. + +A: the seed destination is set at227-228 by casting STACK_ALLOC(p,sizeof(k_rand_bytes)) to elf_addr_t __user*. For the selected downward macro152, the unsigned cursor expression is p-=16. If q denotes its previous64-bit unsigned value, the resulting numeric word is d=(q-16) modulo2^64. This equality does not imply q>=16, nonwrap, canonicality, a writable mapping or actual ownership. A nonwrapping owned-stack corollary would additionally require q>=16, d+16=q as mathematical integers, the entire [d,q) range inside this invocation's live writable initial-stack mapping, applicable native conversion and actual lifecycle/subject evidence. No witness value discharges those conditions. + +C: at229 the source requests copy_to_user(u_rand_bytes,k_rand_bytes,sizeof(k_rand_bytes)): destination is exactly A's computed pointer, source exactly G's local object and length exactly16. Nonzero residual immediately reaches the source return-EFAULT at230 before K or U. It can already have caused partial writes. Zero permits continuation and denotes only completed logical transfer under the named copy contract. It does not imply memory equality at copy-return time in the presence of another permitted writer. + +K: if control reaches266, NEW_AUX_ENT(AT_RANDOM,(elf_addr_t)(unsigned long)u_rand_bytes) writes tag25 (auxvec.h31) and the same destination word through the declared native flat-address conversion. Macro235-239 makes TWO ordered stores, id then value, advancing elf_info. A prefix can stop between them; no atomic-pair claim follows. A complete K event is both ordered stores. It does not imply a consumer read, stable pointee, completed table or constructor success. + +The following entries and terminating zero-fill advance the local saved_auxv construction. At298 the cursor advances by two AT_NULL words; at300 ei_index is the pointer difference from saved_auxv. This proof needs no fabricated whole-auxv size. It retains the source expression, not an independently guessed numeric table length. No new whole-auxv catalogue is claimed. + +U: if control reaches361, its separate transfer request has source mm->saved_auxv, destination current sp, and length ei_index*sizeof(elf_addr_t), with native element width8 bytes under the declared ABI. Nonzero residual returns-EFAULT at362; zero permits local return0 at363. A failure or interruption here does not erase G/C or the earlier kernel stores, and does not imply table completion, seed-memory preservation or handoff. The local source/argument relation is the claim; no persistent memory equality of the source/table is inferred. + +## Prefixes and later failures + +Earlier platform/base-platform failures can prevent G altogether. Between K and U, the source can return-EINTR on the mmap lock, -EFAULT on VMA/user-write failures, or -EINVAL on argument/environment string-length checks. These are source branch labels; the witness does not guess numerical errno definitions. Each preserves earlier reached events and prevents the later U event. In-flight provider/copy operations may have no normal-return row in a model projection; that absence never proves absence of partial side effects. + +After local return0 the ELF loader still finalizes state/registers and returns from its handler. Exact exec.c1741-1742 invokes trace_sched_process_exec and ptrace_event afterward. Original OS integrity permits named legitimate OS behavior; it is not by itself a no-writer/no-tracer lease. Even a prefix with G,C,K,U and local return0 therefore proves no handoff memory snapshot. A model in which a later authorized write changes a previously transferred byte preserves every producer-event relation while refuting a proposed persistent/handoff equality. This asserts no actual tracer, corruption or later write was observed. + +## Witness and checking boundary + +The bounded canonical witness is a STATIC argument record, not an actual future transcript. Fixed keys contain only exact bounded integers/lists/maps: source IDs and eight32-bit digest words, source-derived lengths and role IDs, native representation parameters, ordered-store relation, source-expression IDs and finite control-flow obligations. It contains no seed bytes, actual addresses, admission flags, self-hash or learned expected ELF answer. Required premise/obligation IDs name conditions, not their satisfaction. + +A separate pure model-prefix checker validates normal-return G/C/U records, two K phases and source-labelled failure/return branches. Model objects2/3/4 mean computed destination/saved_auxv/user-table identities, never actual addresses or owned spans. Arbitrary interruption is represented by stopping a prefix; no future event is awarded. This model is an argument control, not an observer. + +Future actual provider/subject/native ABI, mapping/stack/namespace/descriptor and lifetime facts, genuine original admissions, C07, fixed ELF expectations, complete input coverage and all physical/final-tail costs remain outside this component. Full C05/full V03 remain false, original credit and43.5% remain unchanged, and costs are OPEN_NOT_ZERO. diff --git a/research/h25-c05-at-random-producer-events/README.md b/research/h25-c05-at-random-producer-events/README.md new file mode 100644 index 0000000000..46a41e8edd --- /dev/null +++ b/research/h25-c05-at-random-producer-events/README.md @@ -0,0 +1,45 @@ +# Conditional AT_RANDOM producer-event source component + +This package supplies one exact-source, explicitly conditional G/C/K/U producer-event argument, a canonical integer-only static witness, a new source-specific checker and a bounded standalone reader. It preserves the accepted source argument and input pins, independent semantic controls and review, the rejected initial checker and the sole bounded repair. It makes no actual seed, process, memory-snapshot, completed-table or userspace-handoff observation. + +G requests sixteen bytes from the named genuine kernel RNG into a local array. C requests a sixteen-byte transfer from that same array to the computed destination; a nonzero residual immediately returns EFAULT before K. K consists of two ordered tag25/destination stores, with interruption allowed between them. U is a separate later saved_auxv transfer if reached. The downward unsigned cursor relation is modulo2^64. Applicable genuine OS/loader, normal-return RNG/copy and native Linux/GNU flat-address semantics are explicit interfaces. Equal widths/source flags alone do not admit a current ABI or instance. + +PROOF-v1.md states the argument; WITNESS-SCHEMA-v1.md explains the numeric IDs; WITNESS-v1.json is the exact2617-byte static record SHA2563bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70. No valid owned/nonwrapping span, atomic/instant/persistent memory equality, no-writer lease, handoff, full auxv, whole K, full C05 or full V03 is proved. The retained Pro14 proposal overreached on handoff memory because later exec trace/ptrace operations remain possible; the independent correction is preserved. No actual tracer or corruption was observed. + +The independent source gate reached **4/4 for this explicitly scoped conditional component** at2026-11-02T18:21:23.655470UTC, before its fixed18:28:46.352854UTC deadline. Exact final P4 review and parent SOURCE-CLOSE are retained in archive/unit13/. This closes only Unit13 source work. Publication cross-review, committed-byte/mode/history preflight, remote exact-head delivery and hosted CI are separate. The earlier74-file candidate and its validation receipts are preserved outside this final packet; the P4 review names that historical candidate identity exactly. + +## Sources and exact export + +All24 literal roles are unchanged regular numeric DATA files in inputs/. SOURCE-ORIGINS.json maps every original path to input-NNN.data with exact size/hash. Archived original C/Python, assistant output, reports and configuration are inert DATA and are never imported or executed. Frozen task documents/reviews/controls/failures are in archive/ and mapped by ARCHIVE-ORIGINS.json. Archived Python has a .txt suffix. Only verify.py, package_reader_v2.py and at_random_producer_v2.py execute in the registered check. MANIFEST.json covers the full package except itself; the committed transport identity is a separate publication check. + +The full308206-byte config is retained at inputs/input-003.data with SHA2568da949fb637f675c8a1170a2bfc5f029b2642f54e0efe8dbb54ca95c6324cf8d. Retained metadata associates /boot/config-7.0.0-42-generic with Ubuntu linux-modules-7.0.0-42-generic/source linux-hwe-7.0 version7.0.0-42.42~24.04.1. This is not a fresh remote comparison of vendor config bytes, package-signature/reproducible-build proof, source/binary correspondence or live-instance admission. The package records source/config-selector observations and explicit boundaries. + +NOTICE.md discloses the retained consultation URL/local artifact paths and preserves licenses, source authors, predecessor credit and substantial Pro/Codex/Sol Max assistance. GPL-2.0 and Linux-syscall-note are exact retained texts; new code is Apache-2.0. + +## Reproduction + +Require Python3.12 standard library and a POSIX filesystem supporting directory FDs, O_NOFOLLOW/O_NONBLOCK and ordinary read/stat/close behavior. No compiler, kernel, native TCB, Popen target, namespace, policy, scientific or original-runtime operation is part of this check. From a repository checkout: + + python3 -B scripts/research_package.py --package research/h25-c05-at-random-producer-events --check-only + python3 -B scripts/research_package.py --package research/h25-c05-at-random-producer-events + +For a Git-free copy at an absolute PACKAGE path, use a fresh nonexistent pycache prefix for each mode: + + python3 -B -X pycache_prefix=/fresh/nonexistent/normal PACKAGE/verify.py + python3 -O -B -X pycache_prefix=/fresh/nonexistent/optimized PACKAGE/verify.py + +Replace PACKAGE and the cache paths with the copied package and fresh owned paths. No Git/network/absolute original-workspace fallback is used by verify.py or the reader. The source reader emits the same exact frozen witness; verify.py also checks the full inventory. -B alone does not prevent reads from a preexisting bytecode cache. Read-only cold-copy validation uses0444 files/0555 directories; that is a mode observation, not a privileged read-only mount or C07 lifetime proof. + +## Evidence and limits + +The independent controls owner ran the sole initial new-checker pair normally and under-O:40 checks per mode (24 event models,5 inert source mutants,3 numeric cases,3 exact-type/callback cases and5 stronger-claim refusals). The source mutants reach semantic reasoning rather than checksum rejection. Their raw results and formal receipt are retained unchanged. The invalid initial35bc checker was never executed; its three exact-True/list predicate failures and early-cardinality concern are preserved in the static STOP/reviews. Repaired core490232... and reader98cc... are exact frozen successors; no second source repair occurred. + +Distinct standalone-reader and final publication-wrapper runs are recorded outside this package so that validation does not mutate the packet. Those receipt/result claims apply only to their named exact artifacts and commands. Source argument, finite controls, package integrity, actual-instance admission, hosted CI and public delivery are distinct. + +Task scope is changed from the exact portable-replay card preserved in TASK.json: this explicit assignment contributes one producer-event prerequisite instead of a cross-environment compressed-artifact repair. It claims no original-card completion. Base is7c49fe32c55de02c2c873655c804b16e4c3fef0a; the prior source-audit lineage is PR6377/head2a26450dea25d7648b585befce5ed375857a8f90 as supplied by parent, not a new remote check. + +Full C05/full V03 remain false. Original weighted completion43.5%(22/49 activities),2/10 stages,1/10 milestones,24components/52helpers and all original caps/commands remain unchanged. Original activity credit added is zero; Units01–12 remain closed. The app goal is separately paused and the current guarded attempt unapproved. The94.550533479/2400 policy seconds are not physical cost. CPU/wall/memory/storage/I/O/approval/publication/enclosing/final-tail costs remain OPEN_NOT_ZERO. + +## Open next questions + +TASK.json contains each question, relevance, first step and blocker. A future actual provider/subject/nativeABI/context binding remains unestablished. A stronger owned-range or memory-preservation corollary would require its own explicit source, ownership and lifetime premises, accounting for later trace/ptrace events. Neither expansion is performed or admitted here. diff --git a/research/h25-c05-at-random-producer-events/SOURCE-ORIGINS.json b/research/h25-c05-at-random-producer-events/SOURCE-ORIGINS.json new file mode 100644 index 0000000000..8dfa2fffcb --- /dev/null +++ b/research/h25-c05-at-random-producer-events/SOURCE-ORIGINS.json @@ -0,0 +1,232 @@ +{ + "schema": "unit13-exact-input-export-map/v1", + "inputs": [ + { + "id": 1, + "role": "GPL2_license", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/LICENSES/preferred/GPL-2.0", + "package_path": "inputs/input-001.data", + "bytes": 18600, + "sha256": "8780e78a1a737e127f25a65f6d95269bffd36158dc261114de7859b490bfc5aa", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 2, + "role": "assessment", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/consultation/ASSESSMENT-v14.md", + "package_path": "inputs/input-002.data", + "bytes": 3169, + "sha256": "535759b7943bc89895af7746f20f7b8933ab7a9efcfb35a27c86d1a4a9b57244", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 3, + "role": "config", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/config-7.0.0-42-generic.data", + "package_path": "inputs/input-003.data", + "bytes": 308206, + "sha256": "8da949fb637f675c8a1170a2bfc5f029b2642f54e0efe8dbb54ca95c6324cf8d", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 4, + "role": "exec_after_ELF", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/fs/exec.c", + "package_path": "inputs/input-004.data", + "bytes": 50792, + "sha256": "4eb89b8d5d23050d9a9741f73979fe95fc083b897b2744f08fd395da62f4a698", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 5, + "role": "existing_OS_supplement", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/consultation/k-contract-review/PRO14-EXISTING-OS-TCB-SUPPLEMENT-v2.json", + "package_path": "inputs/input-005.data", + "bytes": 3847, + "sha256": "c7c44aaea13b24bbc0fc5b3a0a98d9c2f774edb28846027c12e1874965d7c199", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 6, + "role": "generic_auxvec", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/uapi/linux/auxvec.h", + "package_path": "inputs/input-006.data", + "bytes": 1834, + "sha256": "8dadb9bdd5f00bbcbb6439086f5a9d429b4eff457a61b11ce08941d1dd8d60fa", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 7, + "role": "native_asm_elf", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/include/asm/elf.h", + "package_path": "inputs/input-007.data", + "bytes": 12164, + "sha256": "59b9c134388114d4b5bd489cc7f278ca5b1e3a3619e908361c09b233eca9fce1", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 8, + "role": "native_tcb_original", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/prerequisite-source/native_tcb_v1.py.txt", + "package_path": "inputs/input-008.data", + "bytes": 11353, + "sha256": "865943df5cfdbf9383362d7fb2b76c6d0fd895cf0a0e20d550a26b579606b5d7", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 9, + "role": "new_elf_definition", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/include/linux/elf.h", + "package_path": "inputs/input-009.data", + "bytes": 3037, + "sha256": "ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 10, + "role": "new_header_acquisition", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/ELF-DEFINITION-ACQUISITION-v1.json", + "package_path": "inputs/input-010.data", + "bytes": 1406, + "sha256": "2a57b91b37492b721fbdbc0fcca10aaedf403f00369d9b78bfd8ae1dc27f780b", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 11, + "role": "official_exact_tag", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/kernel-exact-tag", + "package_path": "inputs/input-011.data", + "bytes": 15884, + "sha256": "28bd3a67da1dcee4bf0f87d3b52dd4d755bb0b34677769876afc90a1890a7ecb", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 12, + "role": "original_domain", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit05/implementation/parent_domain_v1.py", + "package_path": "inputs/input-012.data", + "bytes": 23942, + "sha256": "a51264289803b4b17bb262f2460ddd4ed72500aaa21e5eb80fa2db4583689361", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 13, + "role": "package_facts", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/HOST-PACKAGE-FACTS-v1.json", + "package_path": "inputs/input-013.data", + "bytes": 1741, + "sha256": "d942241a0e6c6a639cc0b864f3d45ca16d68949f2766e5c936f5095db6a71256", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 14, + "role": "plan", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit13/PLAN.json", + "package_path": "inputs/input-014.data", + "bytes": 4152, + "sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 15, + "role": "pro14", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/consultation/RESPONSE-v14.txt", + "package_path": "inputs/input-015.data", + "bytes": 9191, + "sha256": "e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 16, + "role": "pro14_critical_review", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/consultation/k-contract-review/PRO14-CRITICAL-ASSESSMENT-v1.json", + "package_path": "inputs/input-016.data", + "bytes": 16074, + "sha256": "bd61034f05893493003a632067710781f3298c57d2a226e7c85d0cd7ccbb9512", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 17, + "role": "producer", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/fs/binfmt_elf.c", + "package_path": "inputs/input-017.data", + "bytes": 58558, + "sha256": "1939cf7c82077d1a0793777be7ca0e11985750cbaff8c342ce2b2e4647c50102", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 18, + "role": "provider_boundary_review", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/consultation/provider-boundary-review/PROVIDER-BOUNDARY-REVIEW-v1.json", + "package_path": "inputs/input-018.data", + "bytes": 24374, + "sha256": "0d91b34b3fc68a33dffccbafc313bc473a55028e9a6b66a7b6ee89e65e08efe4", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 19, + "role": "rng_provider", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/drivers/char/random.c", + "package_path": "inputs/input-019.data", + "bytes": 53564, + "sha256": "260c4030164fa73c27e55b21f28ec1f4dfc126cc80ab6aa56482223aa3534a8f", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 20, + "role": "source_association", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/SOURCE-AVAILABILITY-v1.json", + "package_path": "inputs/input-020.data", + "bytes": 49189, + "sha256": "bb5f27c46542968f8404c279db3a05351a7e2851c09114325b75c07a31b1e992", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 21, + "role": "syscall_note", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/LICENSES/exceptions/Linux-syscall-note", + "package_path": "inputs/input-021.data", + "bytes": 1258, + "sha256": "8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 22, + "role": "uapi_elf", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/uapi/linux/elf.h", + "package_path": "inputs/input-022.data", + "bytes": 19317, + "sha256": "15613d116a6c77c4826036740dd5023c6a7779c776acd3ac7a1a661fe7432b3c", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 23, + "role": "unit12_index", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/SOURCE-INDEX-v1.json", + "package_path": "inputs/input-023.data", + "bytes": 18743, + "sha256": "1022b415e1a85962e18e84484beae918fbce6ff51431fe28cc752ffb73179940", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + }, + { + "id": 24, + "role": "x86_auxvec", + "source_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/include/uapi/asm/auxvec.h", + "package_path": "inputs/input-024.data", + "bytes": 571, + "sha256": "7e50a100bacd7bd784538466bba53e931bdfc4f13f855258c77665f932368d8d", + "classification": "INERT_DATA_NEVER_IMPORT_OR_EXECUTE" + } + ], + "source_freeze_sha256": "2fe72430f0b3ff98d2fbf813c580d2fac2d7bd0b3bc1d32729fa9aa2df1f3045", + "archive_originals_are_inert": true, + "source_paths_are_provenance_not_reader_fallbacks": true, + "final_scoped_source_close": { + "accepted_checkpoints": "4/4", + "P4_sha256": "3bc2f37d58fa502957d24524b999b3753f39ef9c203e15da122da655b4088b7b", + "source_close_sha256": "cb8fe8c0bbad6e7812a673df90a0e5b9a36a510bbb867c28e904b3638e38540a", + "source_closed_before_fixed_hard_deadline": true, + "original_full_C05": false, + "original_full_V03": false + } +} diff --git a/research/h25-c05-at-random-producer-events/SOURCE-PINS-v1.json b/research/h25-c05-at-random-producer-events/SOURCE-PINS-v1.json new file mode 100644 index 0000000000..32c85a1068 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/SOURCE-PINS-v1.json @@ -0,0 +1,174 @@ +{ + "schema": "unit13-literal-source-pins-v1", + "input_manifest_sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc", + "roles": { + "GPL2_license": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/LICENSES/preferred/GPL-2.0", + "sha256": "8780e78a1a737e127f25a65f6d95269bffd36158dc261114de7859b490bfc5aa", + "size_bytes": 18600, + "id": 1 + }, + "assessment": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/ASSESSMENT-v14.md", + "sha256": "535759b7943bc89895af7746f20f7b8933ab7a9efcfb35a27c86d1a4a9b57244", + "size_bytes": 3169, + "id": 2 + }, + "config": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/config-7.0.0-42-generic.data", + "sha256": "8da949fb637f675c8a1170a2bfc5f029b2642f54e0efe8dbb54ca95c6324cf8d", + "size_bytes": 308206, + "id": 3 + }, + "exec_after_ELF": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/fs/exec.c", + "sha256": "4eb89b8d5d23050d9a9741f73979fe95fc083b897b2744f08fd395da62f4a698", + "size_bytes": 50792, + "id": 4 + }, + "existing_OS_supplement": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/k-contract-review/PRO14-EXISTING-OS-TCB-SUPPLEMENT-v2.json", + "sha256": "c7c44aaea13b24bbc0fc5b3a0a98d9c2f774edb28846027c12e1874965d7c199", + "size_bytes": 3847, + "id": 5 + }, + "generic_auxvec": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/uapi/linux/auxvec.h", + "sha256": "8dadb9bdd5f00bbcbb6439086f5a9d429b4eff457a61b11ce08941d1dd8d60fa", + "size_bytes": 1834, + "id": 6 + }, + "native_asm_elf": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/include/asm/elf.h", + "sha256": "59b9c134388114d4b5bd489cc7f278ca5b1e3a3619e908361c09b233eca9fce1", + "size_bytes": 12164, + "id": 7 + }, + "native_tcb_original": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/prerequisite-source/native_tcb_v1.py.txt", + "sha256": "865943df5cfdbf9383362d7fb2b76c6d0fd895cf0a0e20d550a26b579606b5d7", + "size_bytes": 11353, + "id": 8 + }, + "new_elf_definition": { + "new_source_body": true, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/include/linux/elf.h", + "sha256": "ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e", + "size_bytes": 3037, + "id": 9 + }, + "new_header_acquisition": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/ELF-DEFINITION-ACQUISITION-v1.json", + "sha256": "2a57b91b37492b721fbdbc0fcca10aaedf403f00369d9b78bfd8ae1dc27f780b", + "size_bytes": 1406, + "id": 10 + }, + "official_exact_tag": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/kernel-exact-tag", + "sha256": "28bd3a67da1dcee4bf0f87d3b52dd4d755bb0b34677769876afc90a1890a7ecb", + "size_bytes": 15884, + "id": 11 + }, + "original_domain": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit05/implementation/parent_domain_v1.py", + "sha256": "a51264289803b4b17bb262f2460ddd4ed72500aaa21e5eb80fa2db4583689361", + "size_bytes": 23942, + "id": 12 + }, + "package_facts": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/HOST-PACKAGE-FACTS-v1.json", + "sha256": "d942241a0e6c6a639cc0b864f3d45ca16d68949f2766e5c936f5095db6a71256", + "size_bytes": 1741, + "id": 13 + }, + "plan": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/PLAN.json", + "sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf", + "size_bytes": 4152, + "id": 14 + }, + "pro14": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/RESPONSE-v14.txt", + "sha256": "e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a", + "size_bytes": 9191, + "id": 15 + }, + "pro14_critical_review": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/k-contract-review/PRO14-CRITICAL-ASSESSMENT-v1.json", + "sha256": "bd61034f05893493003a632067710781f3298c57d2a226e7c85d0cd7ccbb9512", + "size_bytes": 16074, + "id": 16 + }, + "producer": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/fs/binfmt_elf.c", + "sha256": "1939cf7c82077d1a0793777be7ca0e11985750cbaff8c342ce2b2e4647c50102", + "size_bytes": 58558, + "id": 17 + }, + "provider_boundary_review": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/provider-boundary-review/PROVIDER-BOUNDARY-REVIEW-v1.json", + "sha256": "0d91b34b3fc68a33dffccbafc313bc473a55028e9a6b66a7b6ee89e65e08efe4", + "size_bytes": 24374, + "id": 18 + }, + "rng_provider": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/drivers/char/random.c", + "sha256": "260c4030164fa73c27e55b21f28ec1f4dfc126cc80ab6aa56482223aa3534a8f", + "size_bytes": 53564, + "id": 19 + }, + "source_association": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/SOURCE-AVAILABILITY-v1.json", + "sha256": "bb5f27c46542968f8404c279db3a05351a7e2851c09114325b75c07a31b1e992", + "size_bytes": 49189, + "id": 20 + }, + "syscall_note": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/LICENSES/exceptions/Linux-syscall-note", + "sha256": "8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f", + "size_bytes": 1258, + "id": 21 + }, + "uapi_elf": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/uapi/linux/elf.h", + "sha256": "15613d116a6c77c4826036740dd5023c6a7779c776acd3ac7a1a661fe7432b3c", + "size_bytes": 19317, + "id": 22 + }, + "unit12_index": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/SOURCE-INDEX-v1.json", + "sha256": "1022b415e1a85962e18e84484beae918fbce6ff51431fe28cc752ffb73179940", + "size_bytes": 18743, + "id": 23 + }, + "x86_auxvec": { + "new_source_body": false, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/include/uapi/asm/auxvec.h", + "sha256": "7e50a100bacd7bd784538466bba53e931bdfc4f13f855258c77665f932368d8d", + "size_bytes": 571, + "id": 24 + } + } +} diff --git a/research/h25-c05-at-random-producer-events/SOURCES.json b/research/h25-c05-at-random-producer-events/SOURCES.json new file mode 100644 index 0000000000..ca5d09e327 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/SOURCES.json @@ -0,0 +1,50 @@ +{ + "schema_version": 1, + "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "files": [ + { + "path": "AGENTS.md", + "git_blob": "fa006ceb6b6b9d6c0e799f210963f4587ecfb162", + "sha256": "fbee67ab9e0ae4629a35fd9dba69c8f7e29e4a15392eb2d0f75d8768ffb65f40", + "usage": "provenance" + }, + { + "path": "CONTRIBUTING.md", + "git_blob": "5185786f2ec00f215019fb5777d70979429690a9", + "sha256": "fcd1a8d0e52342a23b8ffa9e905e85ccc539fb084145ef016dfc93cedfb3d924", + "usage": "provenance" + }, + { + "path": ".github/pull_request_template.md", + "git_blob": "ae656e706bf992a3c26c710611ff92dde75efe21", + "sha256": "6fffbdcc80d32daa5d6940b21f4c0e61df7e5f588a120374269ff28dac26c562", + "usage": "provenance" + }, + { + "path": "docs/research/agent-procedure.md", + "git_blob": "06b35b9805b5c15d1623edfb20560266a4bbfdfc", + "sha256": "8367063f9f2d48543415451e026f83224ea962b28801bea6904e6e425ed023e4", + "usage": "provenance" + }, + { + "path": "docs/research/research-package-guide.md", + "git_blob": "24cf53c403ff4e72a1717d082296c3918c42fe92", + "sha256": "5e3aa8b2ce657f943ef5fd187473a01a92a7073ef7e05b30affa08979daa2c6e", + "usage": "provenance" + }, + { + "path": "docs/research/agent-task-catalog.json", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81", + "usage": "provenance" + } + ], + "source_export_contract": "All 24 literal live bodies are exact package-local inert numeric DATA inputs, mapped in SOURCE-ORIGINS.json; all frozen task evidence is mapped in ARCHIVE-ORIGINS.json. Base guidance/card are Git provenance only. No network, original module import, remote source availability or complete scientific source-history claim.", + "nearest_dependencies": [ + { + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/6377", + "head": "2a26450dea25d7648b585befce5ed375857a8f90", + "scope": "Parent-supplied prior delivered Linux7 source-audit lineage; not refreshed by this offline preparer." + } + ] +} diff --git a/research/h25-c05-at-random-producer-events/TASK.json b/research/h25-c05-at-random-producer-events/TASK.json new file mode 100644 index 0000000000..12e5174226 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/TASK.json @@ -0,0 +1,69 @@ +{ + "schema_version": 1, + "task_id": "portable-replay", + "base_commit": "7c49fe32c55de02c2c873655c804b16e4c3fef0a", + "priority_revision": 8, + "original_card": { + "id": "portable-replay", + "question": "Can one reproducible environment or artifact-comparison failure be repaired?", + "starting_points": [ + "research/gzip-container-reproducibility/README.md", + "docs/ci-verification.md" + ], + "methods": [ + "Reproduce one portability failure and add a minimal cross-environment fix.", + "Audit one canonical-payload comparison for omitted proof-relevant fields." + ], + "acceptance_gate": "Preserve immutable source hashes and proof-relevant content; a different compressed byte stream alone is not a mathematical mismatch.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Resolve the current selected review, separate complex/ordinary BIT/admitted BIT/outer budgets, and compare the card against live handoffs before starting. Historical ceilings require exact source/model equivalence.", + "scope": "Source-binding orientation only; not a scientific replay or all-size proof. Materialize selected inputs if this checkout is sparse." + }, + "first_experiment": "Reproduce one specific mismatch or audit one canonical comparison for omitted proof-relevant fields.", + "bottleneck_link": "Portable exact checks prevent environment failures from blocking valid contributions.", + "allowed_variations": [ + "One interpreter/version mismatch or one payload field comparison." + ], + "scope_change_triggers": [ + "Removing immutable-source pins because generated compressed bytes differ." + ], + "overlap_terms": [ + "gzip container", + "reproducibility", + "canonical payload" + ] + }, + "scope_status": "changed", + "scope_change_reason": "The exact portable-replay card asks for a reproducibility/environment or canonical payload repair. This user-assigned package instead preserves and replays one conditional exact-source AT_RANDOM producer-event prerequisite, including the correction of the Pro14 handoff-memory overreach. It does not claim to complete the original card or original C05/V03.", + "actual_scope": "Self-contained exact-source conditional AT_RANDOM G/C/K/U producer-event argument, bounded integer-only witness, new source-specific checker and fixed standalone reader.", + "bottleneck_link": "This is one explicit prerequisite toward original input-origin work; it does not close whole K, C05 or full V03.", + "author": "Clear1nsight; Chris R and all original source authors retain credit.", + "ai_assistance": "Substantial OpenAI Pro, Codex and GPT-6.1 Sol Max assistance in source argument, code, independent controls/review and publication preparation. Agent review is not human or proof-kernel acceptance.", + "budget_minutes": 45, + "stop_rule": "Fixed Unit13 source hard stop 2026-11-02T18:28:46.352854Z; sole 18:04-18:14 repair only, initial rejected source retained. No original/native/compiler/Popen/namespace/policy/scientific execution.", + "outcome": "partial", + "evidence": "PROOF-v1.md; WITNESS-v1.json; archived exact P1/P2/P3/P4 reviews and SOURCE-CLOSE-v1.json; 40-case normal/optimized controls, initial static rejection and one repaired freeze; distinct standalone reader receipt bound by the archived P4 review. Final publication integrity/delivery remain separate.", + "open_questions": [ + { + "question": "Can a future genuine invocation instantiate the conditional provider, ABI and source context?", + "why_it_matters": "Static source/event relations cannot admit an actual provider, subject, stack, mapping or lifetime.", + "first_step": "Define a separately authorized exact instance-binding obligation set without granting memory preservation.", + "blocked_by": "No current instance or original guarded-attempt authorization; full original admission remains open." + }, + { + "question": "Can a separately justified range/preservation corollary establish a stronger memory claim?", + "why_it_matters": "Modular cursor equality and transfer events supply neither owned nonwrapping memory nor handoff equality.", + "first_step": "State the exact writable range, ownership and no-writer interval premises; account for post-loader trace/ptrace operations.", + "blocked_by": "Those premises are not supplied or discharged by this component; no expansion is authorized here." + } + ], + "component_outcome": "COMPLETE_SCOPED_CONDITIONAL_SOURCE_COMPONENT_ONLY_4_OF_4", + "source_closed_utc": "2026-11-02T18:21:23.655470+00:00", + "source_closed_before_fixed_hard_deadline": true +} diff --git a/research/h25-c05-at-random-producer-events/VERIFY.json b/research/h25-c05-at-random-producer-events/VERIFY.json new file mode 100644 index 0000000000..0e21eb2ebd --- /dev/null +++ b/research/h25-c05-at-random-producer-events/VERIFY.json @@ -0,0 +1,28 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [], + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 60, + "checks": "Exact complete package inventory, all24 immutable DATA source pins, frozen NEW reader/core and exact2617-byte witness. Archived 40-case results retained as evidence, not rerun." + }, + { + "argv": [ + "{python}", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 60, + "checks": "Exact complete package inventory, all24 immutable DATA source pins, frozen NEW reader/core and exact2617-byte witness. Archived 40-case results retained as evidence, not rerun." + } + ] +} diff --git a/research/h25-c05-at-random-producer-events/WITNESS-SCHEMA-v1.md b/research/h25-c05-at-random-producer-events/WITNESS-SCHEMA-v1.md new file mode 100644 index 0000000000..3b944f0135 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/WITNESS-SCHEMA-v1.md @@ -0,0 +1,36 @@ +# Unit13 integer witness and model interface + +The2617-byte WITNESS-v1.json is static argument DATA, not an actual execution journal. Fixed ASCII keys have only exact bounded integer/list/map values; bool,null,float and string values are forbidden. Raw<=1MiB, nodes<=8192, depth<=24, list/map<=256 and integers within signed126-bit magnitude satisfy the declared conservative envelope. No seed, actual address, admission bit or self-hash is present. Original ordinary source occurrences remain separate rows; the witness does not replace them. + +`version=1`. `sources` lists24 `[source_id,byte_count,[eight_u32_SHA256_words]]` rows. IDs are the1-based lexicographic order of the role keys in SOURCE-PINS-v1.json and the module's literal SOURCE_PINS map. The eight words are consecutive big-endian32-bit chunks of the SHA256 digest, not random seed bytes. All production literal pins are checked separately before semantic analysis. No witness field supplies expected source hashes to that gate. + +`abi=[8,64,64,64,64]` means byte bits,pointer bits,unsigned-long bits,__u64 bits,elf_addr_t bits. Flat-address roundtrip semantics are an explicit native Linux/GNU interface premise beyond those widths. `G=[1,1,16,16]` means provider1=get_random_bytes, kernel-object1=k_rand_bytes, array byte count16, requested byte count16. Object IDs denote source-bound symbolic MODEL roles, never actual addresses:1 is the local kernel array;2 is the computed seed destination;3 is mm->saved_auxv;4 is the current user auxv table destination sp. Cursor10 is the live unsigned p immediately before seed allocation. + +`A=[1,10,2,16,64]` means operation1=unsigned subtraction modulo2^64, cursor10, resulting destination role2, decrement16,width64. This is not an owned-span/range certificate. `computed_destination(q)` returns only that pure integer expression; q<16 wraps and q above2^32 retains its high bits. + +`C=[2,1,2,16,1,1]` means copy-provider2=copy_to_user, source role1,destination role2,length16,guard1=nonzero residual,source-failure branch1. `K=[25,2,64,64,1,2]` means AT_RANDOM tag25,destination role2,unsigned-long and elf-word cast widths64,then ordered store phases1=id and2=value. `store_order=[1,2]` asserts source order, not atomicity. `U=[2,3,4,1,8,1,2]` means copy-provider2,source role3,destination role4,length-expression1=ei_index*sizeof(elf_addr_t),native word size8 bytes,nonzero guard1,and failure branch2. It supplies no guessed whole-table byte count. + +`branch_rules` rows `[branch_id,reached_mask,completed_mask]` use event bits G=1,C=2,K-complete-pair=4,U=8. Branch IDs1/2 are the immediate C/U return-EFAULT sites;3/4/5 are later pre-U EINTR/EFAULT/EINVAL source sites;6 is local return0 after U zero. IDs are symbolic source-branch labels, not numerical errno definitions. The rows are1:[3,1],2:[15,7],3:[7,7],4:[7,7],5:[7,7],6:[15,15]. Partial copies may already have side effects; masks do not enumerate memory writes or prove snapshots. + +`requirements=[1,2,3,4,5,6,7,8]` names conditions/obligations, NEVER their satisfaction: + +1. Applicable original genuine OS/loader and named RNG/copy interface meanings. +2. Selected native representation and flat pointer/integer conversion semantics. +3. Well-defined live local C objects/cursors where source events are reached. +4. Separate genuine actual exec/provider/subject/source-context binding. +5. Only for an owned nonwrapping-span corollary: q>=16, mathematical range equality,actual writable owned initial-stack mapping and lifecycle. +6. Only for any stronger memory/handoff corollary: separately justified preservation/exclusivity at the chosen boundary. +7. Original ordinary F inventory/currentness,C07,fixed ELF expectations and source/stage/command/runtime approvals remain separate. +8. Complete physical/approval/final-tail costs,funding and fit remain OPEN_NOT_ZERO. + +The event theorem uses conditional interface premises1–3. Requirement4 instantiates it in a future actual execution. Requirements5–6 are not assumed to prove this event theorem; they mark additional obligations for deliberately unclaimed stronger statements. Requirements7–8 preserve the original wider objective and do not grant it credit. + +## Pure model-prefix API + +`check_event_prefix(profile,events)` accepts only labelled synthetic MODEL projections. G row `[1,1,1,16]` denotes normal RNG return. C row `[2,2,1,2,16,residual]` denotes a normal copy return. K rows `[3,25,2,64,64,1]` and `[3,25,2,64,64,2]` denote the ordered individual tag/value stores. U row `[4,2,3,4,1,8,residual]` denotes its separate normal copy return. A prefix can end after tag phase1. U requires phase2. Failure row `[5,branch_id]` must follow the matching source guard; local return0 row `[6]` requires U zero. Nonzero C cannot reach K/U. U failure preserves earlier completed G/C/K. + +An interrupted/in-flight provider or copy can have NO normal-return row and still have side effects. Ending a projection grants no future event and proves no absence of partial writes. `reached_mask`, `completed_mask`, `local_branch` and requirement IDs returned by this API describe only this supplied model, not an observed kernel trace or an admission. Later writer models may preserve every producer relation while invalidating any proposed memory equality. + +`analyze_sources` is bounded byte/text semantic projection intentionally independent of literal authentication for inert mutation controls. It is not a general C/preprocessor verifier. Acceptance of arbitrary unpinned text is not source identity or a theorem about that text's complete control context. `make_witness` and `check_witness` require every literal source pin, then these relations. `check_relations` validates a supplied static projection without authenticating it. Exceptions distinguish FormatError,SourcePinError and SemanticError(code). + +The reader accepts one package directory and reads only inputs/input-NNN.data by literal source IDs; no arbitrary manifest pathname fallback exists. It imports only the NEW checker. The active reader_v2 imports checker_v2; their preserved v1 predecessors are rejected initial evidence. Neither reader executes any original source, kernel body or target program. diff --git a/research/h25-c05-at-random-producer-events/WITNESS-v1.json b/research/h25-c05-at-random-producer-events/WITNESS-v1.json new file mode 100644 index 0000000000..d7de54e70d --- /dev/null +++ b/research/h25-c05-at-random-producer-events/WITNESS-v1.json @@ -0,0 +1 @@ +{"A":[1,10,2,16,64],"C":[2,1,2,16,1,1],"G":[1,1,16,16],"K":[25,2,64,64,1,2],"U":[2,3,4,1,8,1,2],"abi":[8,64,64,64,64],"branch_rules":[[1,3,1],[2,15,7],[3,7,7],[4,7,7],[5,7,7],[6,15,15]],"requirements":[1,2,3,4,5,6,7,8],"sources":[[1,18600,[2273372042,443776530,2133173855,1838491291,4292043096,3693482260,3732429236,2428487082]],[2,3169,[1398233527,2486945944,2511304518,4061100937,866876062,4244321698,2089210276,2847240772]],[3,308206,[2376681979,1669293916,2316398754,3217420329,2992910164,3773819099,3041700188,1663356813]],[4,50792,[1320721293,1562576141,2593604087,964296341,4228397961,2066171120,2413008346,1660200600]],[5,3847,[3351530158,2705007803,3237763898,177789378,4151635378,2286289532,316770121,1708638617]],[6,1834,[2376972733,3589278652,3143907592,1868209474,2605645637,2053222684,3767091665,3717030138]],[7,12164,[1505345844,947983572,3049080988,3354556618,1528707638,434702390,470397491,3970563297]],[8,11353,[2253997023,1560133523,2201365887,2998365293,265852367,168698069,1352821591,2517022167]],[9,3037,[3396556953,4247525831,3548903075,1641367672,3019833128,2058364201,1596022624,1855938110]],[10,1406,[710392091,927542130,532528143,3433106094,3745529600,916298616,3218648605,3263133707]],[11,15884,[683489895,3659386596,3205466067,3039679703,1438321460,1735879047,1794936993,2299166411]],[12,23942,[2769445928,2550379697,2075288306,1175313742,3609526442,2719899320,262331205,2204668769]],[13,1741,[3644990490,241986147,2629875812,4090780833,1835570335,661054921,922028381,3064402518]],[14,4152,[1453109618,265337075,12557932,3971851223,3271129655,566363944,904488845,4128926655]],[15,9191,[3820726188,683938495,2424920129,1054523747,4045510088,2435351850,316772730,3642099786]],[16,16074,[3177251663,92877971,3826464,1735460737,4079586391,3533842151,3361541335,3434845458]],[17,58558,[423219068,2181528858,127104891,3888778769,2555859147,2952315714,3458936390,1204093186]],[18,24374,[227652427,1069976115,3757886383,3272850503,978649742,2590729895,3069086182,1577644004]],[19,53564,[638337072,374318908,669342497,4069442036,3753977548,2158717605,1686250042,2740144783]],[20,49189,[3143575492,1698862735,2214904441,3678012725,444475473,3230733362,1534443642,833743250]],[21,1258,[2386004665,898034517,324877249,432859015,4147269448,960985040,204798525,199438399]],[22,19317,[358694161,1785493444,2187343476,232063548,1786214855,1991037868,2048550431,3879938876]],[23,18743,[270709781,3785906530,3784213576,1273686296,4224610293,338820648,3430232059,1930926400]],[24,571,[2119213312,3134028759,2220065894,3148168851,467649777,1065701976,3346425337,842435981]]],"store_order":[1,2],"version":1} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/CLAIM-CLARIFICATION-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/CLAIM-CLARIFICATION-v1.json new file mode 100644 index 0000000000..8df2d6e669 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/CLAIM-CLARIFICATION-v1.json @@ -0,0 +1,23 @@ +{ + "recorded_utc": "2026-11-02T17:45:34.859009+00:00", + "immutable_plan_sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf", + "scope": "Explicitoneproducer-eventprerequisite, notPro14handoffmemorytheorem. OriginalC05/fullV03objectiveunchanged.", + "event_labels": { + "G": "Source-bound namedkernelRNGrequest into16bytekernelarray", + "C": "Samekernelarray,computeduserdestinationand16bytetransfer request; primitivecompletedtransferifzero,nonzeroimmediateEFAULT; noatomicmemorysnapshot", + "K": "KernelauxvAT_RANDOMtag uses samecomputedpointerwithjustifiednativeconversion", + "U": "Lateruserauxvtransferifcontrolreachesit; subsequentfailuresdo notundoearliertransferevents but grantnocompletedtable/handoffclaim" + }, + "allocated_span_term": "CandidateSTACK_ALLOCcomputedspan, notanactualmemory-ownershipadmission. Unconditionalunsignedcursorrelation mustbe distinguished from nonwrappingvalidownedstackrange. The latter needs statedandjustified applicableinitialstack/OSsemantics/context; futureactualbindingremainsunestablished. UnknownedgeSTOP, no inventedpreconditiondischarge.", + "counterexample_source": { + "path": "unit11/kernel/exact-source/fs/exec.c", + "lines": [ + 1741, + 1742 + ], + "fact": "trace_sched_process_exec and ptrace_event aftersuccessfulbinaryhandlerreturn andbeforeactualuserspacehandoff. ThisleaveslatermemorypreservationunprovedunderOSintegrityalone. Noactualtracingorcorruptionwasobserved." + }, + "no_source_gate_or_timer_change": true, + "no_original_activity_credit": true, + "outside_costs": "OPEN_NOT_ZERO" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/PLAN.json b/research/h25-c05-at-random-producer-events/archive/unit13/PLAN.json new file mode 100644 index 0000000000..7ff24451fa --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/PLAN.json @@ -0,0 +1,37 @@ +{ + "schema": "h25-at-random-producer-events-source/v1", + "unit": "13", + "started_utc": "2026-11-02T17:43:46.352854+00:00", + "input_gate_deadline_utc": "2026-11-02T17:58:46.352854+00:00", + "hard_deadline_utc": "2026-11-02T18:28:46.352854+00:00", + "initial_no_independent_progress_deadline_utc": "2026-11-02T18:13:46.352854+00:00", + "objective": "Implement and independentlyreview one exact-source AT_RANDOM producer-event provenance proof and bounded witness:16byte namedkernelRNGrequest, matchingbuffer/length/allocatedspan transfer, matchingpointer tag, and explicitfailure/partialtransfer behavior. No stablememory/handoff equality unless separatelyjustified underoriginalpremises.", + "explicit_scope_revision_from_Pro14": "Pro14 proposed successfulnativeELFhandoffmemoryequalsseed. Independentreview found latertrace_sched_process_exec/ptrace_event afterELFhandler inretainedfs/exec.c; originalOSintegrityalone isnot no-writerlease. This selected prerequisite is explicitlysmallerproducer-event relation, not a claimedhandofftheorem or change tooriginalC05/fullV03objective.", + "Pro14_response_sha256": "e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a", + "checkpoints": { + "P1": "Independentlyauthenticate exactretainedbinfmt/provider/auxvec/nativeABI/config and sourceOSpremise inputs for thisoneproducer; atmost specificallynamedinclude/linux/elf.h samecommit definitionheader ifessential. Allindispensabledefsforclaim available, completeauxvcataloguenotrequired.", + "P2": "Independentacceptance of precisestateful producer-event proposition and sourceargument includingnativepointerconversion/stackallocation/arraylength/provider/copy/tag/failure ordering, explicitprimitivecontractboundary and no forgedhandoffmemorypreservation/actualinstance.", + "P3": "Implement exact-source-specific boundedcanonicalinteger-onlywitness/checker and independentlyauthoredsemanticcounterexamples forchangedlength/provider/argvpointer/copysource/copyfailureassuccess; controlsreasonrelationsbeyondchecksumreject. No fabricatedseedbytes/admissionflags.", + "P4": "Independentcritical acceptance of exactsource proof/code/controls and finalsourcefreeze with meaningfulnormal/-O results and boundedstandaloneexportrecipe, readyforscopedpublication; no originalruntime/completeKcredit." + }, + "input_cap": { + "only_new_source_allowed": "include/linux/elf.h at88cb661f6b53f472167d39a72241b5396e34ab2a", + "new_definition_header_files": 1, + "per_file_bytes": 1048576, + "no_new_kernel_implementation_bodies": true + }, + "source_reuse": "ExactUnit12sourceindex1022b415e1a85962e18e84484beae918fbce6ff51431fe28cc752ffb73179940; Unit11fs/exec.c/config/OSsourceprovenance andoriginalTCB/native/parent/domainrefs read-only. Units01\u201312remainclosed.", + "source_gate": "BeforeexplicitindependentP1release onlyinputavailability/claimanalysis; no implementation. Pro14criticalreviewpending; noinvalidhandoffclaim may beadopted.", + "execution_scope": "OnlyNEWstaticchecker/newownedDATAfixtures undernormal/-O asneeded; no original/kernel/nativeTCB/compiler/Popen/namespace/scientific/processinspection orpolicyoperation. No originalsourceedits.", + "repair_policy": "Atmostone10minsource repair withinfixed45min; noautomaticextensions/newbudget. Only genuinehigherindependentlyacceptedlocalcheckpoint resets thisround30minclock.", + "STOP": "Indispensabledefinition/provider/conversion/ownership/failure edgeunresolved, input15min/hard45min/noindependentincrease30min, or proposedproofneedsunapprovedassumption. Freezeexactpaths/hashesandstop. Negative/partialfacts are notwholecheckpointcredit.", + "original_limits": "512childsource/64MiBfile/256MiBcapture and allrawcodecs;parent8192source/16384stage;receiver48modules/512globals/twocaptures;unchangedcommands/native6env/sixroles/genuineproc/Popen/4domains/C07/rawcustody/fixedELFexpectations.", + "full_C05": false, + "full_V03": false, + "original_activity_credit_added": 0, + "original_completion_percent": 43.5, + "new_scientific_budget": false, + "current_guarded_attempt_approved": false, + "app_goal_separately_paused": true, + "outside_costs": "OPEN_NOT_ZERO" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-CLOSE-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-CLOSE-v1.json new file mode 100644 index 0000000000..287b3fc5ef --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-CLOSE-v1.json @@ -0,0 +1,158 @@ +{ + "schema": "h25-unit13-source-close/v1", + "recorded_utc": "2026-11-02T18:22:09.265899+00:00", + "status": "COMPLETE_SCOPED_CONDITIONAL_SOURCE_COMPONENT_ONLY", + "accepted_local_checkpoints": [ + { + "id": "P1", + "scope": "Complete identified inputgate for explicitlyconditionalG/C/K/Uproducer-eventsourcecomponent", + "review_path": "review/INPUT-GATE-v1.json", + "sha256": "ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3", + "accepted_utc": "2026-11-02T17:50:54.763355+00:00" + }, + { + "id": "P2", + "scope": "ExactconditionalG/C/K/Uproducer-eventsourceargument", + "review_path": "review/ARGUMENT-v1.json", + "sha256": "1ac44449fe9ff331dd6933b09fe63e1f29acf3f09c197c23cf117290304d4092", + "accepted_utc": "2026-11-02T17:56:43.525921+00:00" + }, + { + "id": "P3", + "scope": "Repairedexactstaticcode+independent40semantic/modelchecksnormalandoptimized", + "review_path": "review/SOURCE-REVIEW-v2.json", + "sha256": "88256aa611a3b965b02d1b89722ec3065986a9a4fb6004e22fdfeb7cd1699e93", + "accepted_utc": "2026-11-02T18:10:52.165059+00:00" + }, + { + "id": "P4", + "scope": "Finalexactconditionalproducer-eventsourcecomponent and standaloneGitfreeboundedreaderexportvalidation", + "review_path": "review/FINAL-SOURCE-GATE-v1.json", + "sha256": "3bc2f37d58fa502957d24524b999b3753f39ef9c203e15da122da655b4088b7b", + "accepted_utc": "2026-11-02T18:21:23.655470+00:00" + } + ], + "accepted_count": 4, + "local_denominator": 4, + "fixed_hard_deadline_utc": "2026-11-02T18:28:46.352854+00:00", + "final_independent_acceptance_utc": "2026-11-02T18:21:23.655470+00:00", + "closed_before_hard_deadline": true, + "source_dispatch_stopped": true, + "new_code_actual_controls": "40ownedstatic/modelchecks normalandoptimized exit0; initialknowninvalidchecker neverexecuted; singleboundedrepair retained", + "distinct_reader_validation": "Gitfree/read-only24exactinputs710966B; normal/Oexit0exact2617Bwitness3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70; inventoriesunchanged", + "source_scope": "NamedOS/RNG/copy/nativeABI conditional G/C/K/Uproducer-event relation, modularcursorandinterrupted/failureprefixes; noatomic/current/persistentmemorysnapshot,validownednonwrapspan,handoff,actualinstance,wholeauxv/wholeK/compilerinputclosure claim", + "publication_status": "Candidate74files validated; independentpublicationcrossreview/localcommit/remoteChromePR/exactheadCI/handoff remain separate", + "original_full_C05": false, + "original_full_V03": false, + "original_activity_credit_added": 0, + "original_completion_percent": 43.5, + "original_stage_gates": "2/10", + "original_overall_milestones": "1/10", + "original_components": 24, + "original_helpers": 52, + "original_target_execution": false, + "current_guarded_attempt_approved": false, + "new_scientific_budget": false, + "app_goal_status_at_last_separate_observation": "paused", + "guarded_policy_seconds": "94.550533479/2400 is not completephysicalcost", + "outside_costs": "OPEN_NOT_ZERO", + "all_older_units_01_12_remain_closed": true, + "pins": [ + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/PLAN.json", + "bytes": 4152, + "sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/CLAIM-CLARIFICATION-v1.json", + "bytes": 1599, + "sha256": "81ca27af56222d00cb73507734743d909ad63512df0ba8e825ab16cdbddae7c2" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/SOURCE-IMPLEMENTATION-RELEASE-v1.json", + "bytes": 735, + "sha256": "67fa7c2794460ca8bceb75c1496f6c2056a5c79d05e6d0bf64e83fa93ab208d6" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/SOURCE-REPAIR-WINDOW-v1.json", + "bytes": 1853, + "sha256": "b741ffb0dec80920c174f1f0e3ff9bcc4fc91418b38f1db1771dc8e545125333" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "bytes": 20088, + "sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v2.py", + "bytes": 4826, + "sha256": "98cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md", + "bytes": 8225, + "sha256": "598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/SOURCE-PINS-v1.json", + "bytes": 7184, + "sha256": "11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-v1.json", + "bytes": 2617, + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-SCHEMA-v1.md", + "bytes": 6189, + "sha256": "9792c3bfd16de628f6969560c8ac4263342c5be308f346073c501b5eaa3fa935" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/RESULTS-v1.json", + "bytes": 21032, + "sha256": "8c031791504efb5b76a65281e8ddea350b0dc42a27f71aaf8611b564fba608a9" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.json", + "bytes": 6803, + "sha256": "ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/ARGUMENT-v1.json", + "bytes": 6698, + "sha256": "1ac44449fe9ff331dd6933b09fe63e1f29acf3f09c197c23cf117290304d4092" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v1.json", + "bytes": 5110, + "sha256": "85f634487dd2a4711aee399839855861ecedeb8d47bdabde641a8eb19d63c4a4" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v2.json", + "bytes": 11902, + "sha256": "88256aa611a3b965b02d1b89722ec3065986a9a4fb6004e22fdfeb7cd1699e93" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/FINAL-SOURCE-GATE-v1.json", + "bytes": 11008, + "sha256": "3bc2f37d58fa502957d24524b999b3753f39ef9c203e15da122da655b4088b7b" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/AUTHOR-INITIAL-FREEZE-v1.json", + "bytes": 2317, + "sha256": "14e9f327c75b3fc01e76af2786e3882634a57012134185458aecf023c556e6fa" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json", + "bytes": 6706, + "sha256": "2fe72430f0b3ff98d2fbf813c580d2fac2d7bd0b3bc1d32729fa9aa2df1f3045" + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/COLD-EXPORT-v1.md", + "bytes": 4022, + "sha256": "28a8a75e5fcc84e75b7747309e1def72db22d62514c8ad7ec89c030ab86567a4" + } + ], + "next_dependency": "Complete scopedupstreamdelivery; Pro15connectedbirth/preexec/exec/inboundprotection sourcefeasibility then completeoriginal21channel/fit/instance/admission/baseline/fullV03controls." +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-IMPLEMENTATION-RELEASE-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-IMPLEMENTATION-RELEASE-v1.json new file mode 100644 index 0000000000..8c9c298614 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-IMPLEMENTATION-RELEASE-v1.json @@ -0,0 +1,17 @@ +{ + "recorded_utc": "2026-11-02T17:51:52.374886+00:00", + "release": "NEWstaticproof/checker+NEWownedDATAfixtures only, exactP1scope", + "input_gate": { + "id": "P1", + "scope": "Complete identified inputgate for explicitlyconditionalG/C/K/Uproducer-eventsourcecomponent", + "review_path": "review/INPUT-GATE-v1.json", + "sha256": "ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3", + "accepted_utc": "2026-11-02T17:50:54.763355+00:00" + }, + "no_progress_deadline_utc": "2026-11-02T18:20:54.763355+00:00", + "hard_deadline_utc": "2026-11-02T18:28:46.352854+00:00", + "all_old_unit_timers_unchanged": true, + "original_runtime_admission": false, + "new_scientific_budget": false, + "costs": "OPEN_NOT_ZERO" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-REPAIR-WINDOW-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-REPAIR-WINDOW-v1.json new file mode 100644 index 0000000000..0984952c04 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/SOURCE-REPAIR-WINDOW-v1.json @@ -0,0 +1,29 @@ +{ + "schema": "h25-unit13-single-source-repair/v1", + "started_utc": "2026-11-02T18:04:01.284166+00:00", + "deadline_utc": "2026-11-02T18:14:01.284166+00:00", + "fixed_hard_deadline_utc": "2026-11-02T18:28:46.352854+00:00", + "only_repair_window": 1, + "initial_freeze": { + "path": "author-receipts/AUTHOR-INITIAL-FREEZE-v1.json", + "sha256": "14e9f327c75b3fc01e76af2786e3882634a57012134185458aecf023c556e6fa" + }, + "initial_core_sha256": "35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b", + "initial_tests_executed": false, + "reason": "Staticindependentreviewprovedvalidnonemptypositionslistsfailneed(conditionisTrue)at3sites; knowninvalidcandidateheldbeforetests. Early24-rolecardinalityboundneededbeforeiteration/setallocation. WitnessnumericIDschemaneedsdocumentation.", + "authorized_changes": [ + "Exactlythreeexplicitbool/lenpredicatesforpositions matches; preserve exactboolneedcontract", + "Earlylen(bundle)==len(SOURCE_PINS)afterexactdicttypecheckbeforeiteration/all/set", + "Separateboundednumericwitness-IDschemadocument, no admission/seed/instance claims", + "Independentliteralprojectionoracle/assertionsforG/C/K/Ufailure/non-atomicKprefixmasks andhandofffieldrefusal, preservingoriginalfixture/runnerbytesassuccessorifchanged" + ], + "no_new_source_inputs_or_original_execution": true, + "preserve_P1_P2_proof_and_source_pins": true, + "preserve_all_initial_source_reader_witness_fixture_failure_evidence": true, + "execution_lane": "c05_elf_input_edges owns sole serialized correctedNEWstaticcontrols normal/-Opair after exactsuccessorfreeze, authorholdduplicateexecutions", + "no_retry_after_window": "UnresolvedfailureatdeadlineornewunknownedgeSTOP; no secondrepair/timingreroll/automaticextension", + "full_C05": false, + "full_V03": false, + "original_credit": 0, + "outside_costs": "OPEN_NOT_ZERO" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/AUTHOR-INITIAL-FREEZE-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/AUTHOR-INITIAL-FREEZE-v1.json new file mode 100644 index 0000000000..11af850ed6 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/AUTHOR-INITIAL-FREEZE-v1.json @@ -0,0 +1,41 @@ +{ + "schema": "unit13-author-initial-freeze-v1", + "recorded_utc": "2026-11-02T18:01:21.278801+00:00", + "state": "COMPLETE_INITIAL_SOURCE_FROZEN_REJECTED_REPAIR_NOT_RELEASED", + "artifacts": [ + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md", + "bytes": 8225, + "sha256": "598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/SOURCE-PINS-v1.json", + "bytes": 7184, + "sha256": "11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v1.py", + "bytes": 19989, + "sha256": "35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v1.py", + "bytes": 4826, + "sha256": "63c67d9060cd7eae9e8fb95ebdd799e947a911fd3baf200127a5be673c26a2a5" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-v1.json", + "bytes": 2617, + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + } + ], + "witness_authoring": "Static canonical integer-only argument DATA authored from source pins/accepted proof; not actualseed/instance and NOT yet executed or accepted by checker.", + "tests_by_author": 0, + "initial_material_finding": "Three need() callsites pass positions-list rather than exactbool; source remains unchanged35bc.", + "parent_test_hold": "Controls owner sole NEW normal/O lane; author performs no module/reader/checker execution.", + "source_argument_unchanged": "P2proof598751/sourcepins11b69 remainexact.", + "full_C05": false, + "full_V03": false, + "original_activity_credit": 0, + "outside_costs": "OPEN_NOT_ZERO" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json b/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json new file mode 100644 index 0000000000..997668f68e --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json @@ -0,0 +1,120 @@ +{ + "schema": "unit13-author-repaired-freeze-v2", + "recorded_utc": "2026-11-02T18:09:03.010206+00:00", + "status": "SOURCE_AND_WITNESS_FROZEN_PENDING_FINAL_INDEPENDENT_CODE_REVIEW", + "repair_window": [ + "2026-11-02T18:04:01.284+00:00", + "2026-11-02T18:14:01.284+00:00" + ], + "authorized_delta": [ + "3 list-valued positions predicates changed to explicit len>0 while need() retains exactTrue contract", + "source bundle exact24 cardinality checked immediately after exactdict type, before keyiteration/all/set", + "successor reader imports only successor NEW core; all other reader bytes unchanged", + "separate numeric-ID schema documentation, no new semantic claim" + ], + "artifacts": [ + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v1.py", + "bytes": 19989, + "sha256": "35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "bytes": 20088, + "sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v1.py", + "bytes": 4826, + "sha256": "63c67d9060cd7eae9e8fb95ebdd799e947a911fd3baf200127a5be673c26a2a5" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v2.py", + "bytes": 4826, + "sha256": "98cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md", + "bytes": 8225, + "sha256": "598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/SOURCE-PINS-v1.json", + "bytes": 7184, + "sha256": "11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-v1.json", + "bytes": 2617, + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-SCHEMA-v1.md", + "bytes": 6189, + "sha256": "9792c3bfd16de628f6969560c8ac4263342c5be308f346073c501b5eaa3fa935" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py", + "bytes": 10036, + "sha256": "86c00342a451af919ca6a053a2e903d9616a52755117f973319260987327cf24" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/SEMANTIC-FIXTURES-v1.json", + "bytes": 7293, + "sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/PROJECTION-ORACLE-v1.json", + "bytes": 1333, + "sha256": "da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/STATIC-STOP-v1.json", + "bytes": 1569, + "sha256": "c4184f2ca331e720e79a933fb85751cc8f25d28796aaf5d236ee7e7262b4b1d9" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/NORMAL-v2.raw", + "bytes": 6138, + "sha256": "34f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/OPTIMIZED-v2.raw", + "bytes": 6137, + "sha256": "29ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df" + }, + { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/COLD-EXPORT-v1.md", + "bytes": 4022, + "sha256": "28a8a75e5fcc84e75b7747309e1def72db22d62514c8ad7ec89c030ab86567a4" + } + ], + "accepted_source_argument": "PROOF-v1 unchanged598751/sourcepins11b69; independent P2 accepted beforecode", + "author_checker_or_reader_execution": 0, + "independent_controls_execution": "Controls owner sole normal/-O pair passed; no initialinvalid35bc run.24eventcases+5semantic source mutants+3numeric+3typecallback+5strongerclaim refusals. No original/kernel/native/target execution.", + "independently_generated_witness": { + "bytes": 2617, + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70", + "matches_authored_WITNESS_v1": true + }, + "package_reader_execution": "NOT performed by author; distinct bounded package-only reader check belongs to parent coordination.", + "external_requirements": [ + "applicable original OS/loader and named-provider semantics", + "actual genuine exec/provider/subject/native flat-address ABI binding", + "owned nonwrapping range and preservation only for separately unclaimed stronger corollaries", + "original ordinary F/custody/C07/fixed ELF expectations and all admissions", + "complete CPU/wall/memory/I/O/storage/approval/publication/final-tail fit/funding" + ], + "claims_excluded": [ + "actual seed values or observations", + "atomic/instant/persistent memory equality", + "completedtable or userspacehandoff", + "actualcurrentinstance or gateadmission", + "wholeK/fullC05/fullV03/originalactivitycredit" + ], + "full_C05": false, + "full_V03": false, + "original_activity_credit": 0, + "original_completion_percent": 43.5, + "outside_costs": "OPEN_NOT_ZERO" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/COLD-EXPORT-v1.md b/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/COLD-EXPORT-v1.md new file mode 100644 index 0000000000..36fec8e0f4 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/author-receipts/COLD-EXPORT-v1.md @@ -0,0 +1,19 @@ +# Unit13 bounded standalone export recipe + +Export active NEW checker at_random_producer_v2.py and package_reader_v2.py together, plus PROOF-v1.md,WITNESS-SCHEMA-v1.md,WITNESS-v1.json,SOURCE-PINS-v1.json. Retain the rejected initial v1 sources and freeze receipt/history as evidence; do not run the initial invalid checker. + +The source identity gate has24 literal roles. For a package at an absolute canonical directory PACKAGE, install every role's exact retained source bytes as PACKAGE/inputs/input-NNN.data, where NNN is the three-digit id in SOURCE-PINS-v1.json. Each file must be a regular single-link file, distinct copied inode, exact literal size/hash. Preserve the original source notices and both pinned GPL-2.0/Linux-syscall-note texts. No source is imported as a project module: numeric .data names are only raw inputs. No kernel implementation is compiled or executed. The separately pinned reports/configuration/license data are also raw bytes. + +The NEW reader takes exactly one package path and reads only this fixed inputs directory/member set. It has no fallback to the original workspace or manifest-supplied filenames. It bounds actual reads per file1MiB/8192calls and the bundle8MiB, records raw chunks, checks regular single-link/size plus descriptor/name endpoints, authenticates all literal source pins and closes all consumed handles with first/cleanup error retention. Endpoint checks do not prove C07. A package-only validation may invoke: + + python3 -B -X pycache_prefix=FRESH_NONEXISTENT_PATH package_reader_v2.py /absolute/PACKAGE + +Use a fresh nonexistent pycache prefix or a fresh source-only package, since -B alone does not prohibit reading an old cache. Its stdout is the canonical2617-byte witness SHA2563bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70. Check its literal bytes against the frozen witness, then repeat with -O if the parent authorizes that distinct reader check. These example commands are a recipe, not a claim they were executed by this author. The independent controls owner owns the sole initial normal/-O checker execution lane; no duplicate production pair is needed. + +The independent controls are frozen at controls/run_semantic_controls_v2.py,SEMANTIC-FIXTURES-v1.json and PROJECTION-ORACLE-v1.json, with parent SOURCE-IMPLEMENTATION-RELEASE-v1.json and input/SOURCE-AVAILABILITY-v1.json. Their existing normal/-O results already cover24 model event cases,5 semantic inert-source mutants,3 modular numeric cases,3 exact-type/callback guards and5 stronger-claim refusals. The witness built and checked by both runs matches the authored frozen witness. Those runs execute only the NEW checker; all original/kernel sources are raw DATA. + +For an isolated copy of that harness, --bundle-dir expects .data names. Supply a separate controls_bundle with24 distinct copied files from the same literal role pins; do not use hardlinks that would violate the reader's single-link rule. Preserve the original unit/input/controls relative paths for its pinned release/input/fixture/oracle files and pass an explicit NEW module path/hash. This duplicates artifact storage only for the two fixed reader interfaces; both actual storage/I/O costs remain chargeable. It does not replace or merge original ordinary F occurrences. + +The NEW code requires only standard Python3.12 modules. The reader requires a POSIX filesystem with directory FDs,O_NOFOLLOW,O_NONBLOCK,fstat/stat and ordinary read/close semantics. Original GCC/interpreter commands/native six-environment values are unchanged; this recipe is for the separate static prerequisite only. + +No source package, pin match, successful static check or model projection admits an actual provider/exec/stack/native ABI instance, writable owned/nonwrapping span, memory snapshot, handoff, wholeK/C05/V03, original activity credit or funding/runtime gate. All CPU/wall,memory,storage,I/O,approval/publication/enclosing/final-tail costs remain OPEN_NOT_ZERO. The original objective and43.5% remain unchanged. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/DESIGN-v1.md b/research/h25-c05-at-random-producer-events/archive/unit13/controls/DESIGN-v1.md new file mode 100644 index 0000000000..0f161c36f1 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/DESIGN-v1.md @@ -0,0 +1,39 @@ +Independent Unit13 semantic-control design. This file is design only, prepared before parent P1 release. No checker, fixture program or original source was executed. No implementation is supplied here. + +Scope: exact G/C/K/U producer-event relations. G is the named get_random_bytes request into the 16-byte kernel array. C requests the same object and length at the STACK_ALLOC-computed destination; zero denotes the completed primitive-transfer event under its stated interface contract, and nonzero follows the immediate -EFAULT exit. K writes AT_RANDOM=25 with the native conversion of the same computed destination into saved_auxv. U is the later saved_auxv transfer only when control reaches it. There is no instantaneous, atomic, persistent or userspace-handoff memory-equality claim, fabricated seed, runtime admission or ownership flag. + +Independent source oracle: retained fs/binfmt_elf.c declares unsigned char k_rand_bytes[16], calls get_random_bytes(k_rand_bytes,sizeof(k_rand_bytes)), computes u_rand_bytes using STACK_ALLOC(p,sizeof(k_rand_bytes)), tests copy_to_user(u_rand_bytes,k_rand_bytes,sizeof(k_rand_bytes)) and immediately returns -EFAULT when nonzero. NEW_AUX_ENT stores tag then value in mm->saved_auxv; AT_RANDOM's value is (elf_addr_t)(unsigned long)u_rand_bytes. Later p is reused for argument/environment strings, while the saved random pointer remains u_rand_bytes. The final copy_to_user uses source mm->saved_auxv and length ei_index*sizeof(elf_addr_t), with its own nonzero -EFAULT exit. Native ELF definitions and applicable configuration, not a guessed pointer-width axiom, must qualify the conversion before P1 release. Source get_random_bytes is a named void interface dispatch; entropy strength or independence is outside this claim. + +API requirements sent to the author before freeze: + +- Provide a pure semantic-relation entry point separate from outer file/source-hash authentication. Tests must be able to submit coherent, newly serialized toy DATA and observe a semantic rejection, rather than only a bad digest. +- Preserve distinct G request/provider/object, C object/destination/length/return, K tag/native pointer, and optional U source/length/return events. The order and local failure edges must be checked. +- Keep the source-qualified numeric relation separate from actual instance, ownership, valid userspace stack range and no-writer assumptions. In particular unsigned subtraction modulo the native width is not evidence of a nonwrapping owned interval. +- The source-qualified semantic profile is fixed from exact retained source. Caller data must not declare itself the approved effective configuration or mint authority. +- Return or expose specific rejection categories so controls distinguish changed provider, request length, destination/tag relation, source object and failure ordering. Exact exception spelling may be coordinated; expected logical decisions come from the source above. +- The canonical witness has bounded exact integer arithmetic and no seed bytes, actual-exec binding, handoff-memory equality or success claim after a failed local transfer. Arbitrary later failure must not erase an earlier completed transfer event. + +The five required independent literal counterexamples are: + +| Case | Coherent toy change | Source relation contradicted | +|---|---|---| +| NEG_REQUEST_LENGTH | Change the RNG request from 16 to 15 while retaining a 16-byte declared array/copy. Recompute any toy serialization digest. | G request must be sizeof(k_rand_bytes)=16. | +| NEG_PROVIDER | Substitute a distinct provider identity while keeping the 16-byte buffer/copy/tag relations internally consistent. | The genuine named producer is get_random_bytes for this call. | +| NEG_ARGV_POINTER | Use an independently valid-looking argv-string pointer as the AT_RANDOM value, with C still targeting the computed random span. | K binds u_rand_bytes, not a later/reused p or arbitrary pointer in a plausible user range. | +| NEG_COPY_SOURCE | Copy from a different 16-byte kernel object while the RNG request still targets the original object. | C source is exactly the G destination object. | +| NEG_FAILURE_SUCCESS | Record nonzero C copy result but append K/U or mark the local transfer/table as successful. | The nonzero branch immediately returns -EFAULT before K/U. | + +Positive and boundary controls are independently required so rejection is not achieved by refusing every trace: + +- A coherent G16/C16-zero/K25 trace with optional U not yet reached is a valid producer-event prefix; it grants no completed table or handoff claim. +- A G/C-nonzero/-EFAULT prefix is a valid failure path with no K/U. A partial failure may have effects; no unchanged-destination assertion is allowed. +- A G/C-zero/K trace followed by a later pre-U -EINTR/-EFAULT is valid. Earlier completed C and K events remain recorded; later failure grants no U/table/handoff success. +- A G/C-zero/K/U-nonzero/-EFAULT trace is a valid partial later failure. It does not erase the earlier completed C event or assert completed U/table/handoff. +- A G/C-zero/K/U-zero local-return-zero flow is a valid local producer/table-transfer sequence only. A separately fabricated handoff-equality or persistent-memory assertion must still be rejected or outside the accepted schema. +- Native casts must preserve a source-qualified pointer value above 2^32 on the selected native 64-bit path; a truncated 32-bit K value must fail. This is conditional on P1's exact native aliases/context and has no actual address-space admission meaning. +- For illustrative down-stack arithmetic, cursor4096 minus16 gives4080. For cursor8, unsigned64 subtraction gives18446744073709551608; that modular relation does not establish a nonwrapping interval or an owned valid destination. A checker scoped to valid nonwrapping cases may explicitly refuse the latter; it may not silently call it an owned span. +- Reject noninteger/bool substitution or out-of-domain native values where the canonical arithmetic schema requires exact integers. Do not use disabled Python assertions for safety checks. + +These numbers and object identities are toy model literals, not observed kernel addresses, seeds, auxv lengths or exec traces. U's source-derived ei_index*sizeof(elf_addr_t) relation may be challenged symbolically or with a clearly synthetic local arithmetic model; a fabricated whole auxv catalogue is not an oracle. Exact U numeric length and argv/environment state are not guessed. + +After explicit parent P1 release only: implement the owned literal fixtures/tests against the agreed new API, run a serialized bounded normal and -O pair, preserve every failure, and report semantic decisions plus exact hashes. No original/kernel/native/target/compiler/Popen/namespace/policy/process inspection is authorized. Full C05/V03 false, all Units01–12 closed, original43.5%/denominators/caps unchanged, costs OPEN_NOT_ZERO. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/NORMAL-v2.raw b/research/h25-c05-at-random-producer-events/archive/unit13/controls/NORMAL-v2.raw new file mode 100644 index 0000000000..ddf887180c --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/NORMAL-v2.raw @@ -0,0 +1 @@ +{"actual_runtime_or_owned_stack_admitted": false, "arithmetic_cases": [{"actual_owned_span_asserted": false, "computed": 4080, "expected": 4080, "id": "down16"}, {"actual_owned_span_asserted": false, "computed": 4294971392, "expected": 4294971392, "id": "above32bits"}, {"actual_owned_span_asserted": false, "computed": 18446744073709551608, "expected": 18446744073709551608, "id": "unsigned_wrap"}], "checker_sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0", "event_cases": [{"accepted": true, "actual_projection": [0, 0, 0], "expected": true, "expected_projection": [0, 0, 0], "id": "positive_empty_prefix"}, {"accepted": true, "actual_projection": [1, 1, 0], "expected": true, "expected_projection": [1, 1, 0], "id": "positive_G_only"}, {"accepted": true, "actual_projection": [3, 1, 1], "expected": true, "expected_projection": [3, 1, 1], "id": "positive_C_failure_EFAULT"}, {"accepted": true, "actual_projection": [3, 3, 0], "expected": true, "expected_projection": [3, 3, 0], "id": "positive_C_zero_prefix"}, {"accepted": true, "actual_projection": [7, 3, 0], "expected": true, "expected_projection": [7, 3, 0], "id": "positive_K_tag_only"}, {"accepted": true, "actual_projection": [7, 7, 0], "expected": true, "expected_projection": [7, 7, 0], "id": "positive_GCK_prefix"}, {"accepted": true, "actual_projection": [7, 7, 3], "expected": true, "expected_projection": [7, 7, 3], "id": "positive_later_preU_EINTR"}, {"accepted": true, "actual_projection": [7, 7, 4], "expected": true, "expected_projection": [7, 7, 4], "id": "positive_later_preU_EFAULT"}, {"accepted": true, "actual_projection": [7, 7, 5], "expected": true, "expected_projection": [7, 7, 5], "id": "positive_later_preU_EINVAL"}, {"accepted": true, "actual_projection": [15, 7, 2], "expected": true, "expected_projection": [15, 7, 2], "id": "positive_U_failure_EFAULT"}, {"accepted": true, "actual_projection": [15, 15, 6], "expected": true, "expected_projection": [15, 15, 6], "id": "positive_local_return_zero"}, {"accepted": false, "expected": false, "id": "negative_changed_request_length", "semantic_code": "event_generation_relation"}, {"accepted": false, "expected": false, "id": "negative_substituted_provider", "semantic_code": "event_generation_relation"}, {"accepted": false, "expected": false, "id": "negative_argv_pointer", "semantic_code": "event_tag_pointer_width"}, {"accepted": false, "expected": false, "id": "negative_mismatched_copy_source", "semantic_code": "event_seed_copy_relation"}, {"accepted": false, "expected": false, "id": "negative_copy_failure_labelled_success", "semantic_code": "event_tag_after_failed_copy"}, {"accepted": false, "expected": false, "id": "negative_C_failure_U_failure_branch", "semantic_code": "event_user_EFAULT_guard"}, {"accepted": false, "expected": false, "id": "negative_U_failure_labelled_return_zero", "semantic_code": "event_local_return_guard"}, {"accepted": false, "expected": false, "id": "negative_U_before_K_value", "semantic_code": "event_user_auxv_relation"}, {"accepted": false, "expected": false, "id": "negative_K_value_before_tag", "semantic_code": "event_value_store_order"}, {"accepted": false, "expected": false, "id": "negative_U_wrong_source", "semantic_code": "event_user_auxv_relation"}, {"accepted": false, "expected": false, "id": "negative_U_wrong_length_expression", "semantic_code": "event_user_auxv_relation"}, {"accepted": false, "expected": false, "id": "negative_native_word32", "semantic_code": "event_tag_pointer_width"}, {"accepted": false, "expected": false, "id": "negative_later_failure_before_K_value", "semantic_code": "event_later_preU_failure"}], "exact_type_callback_controls": [{"error": "FormatError", "id": "dict subclass"}, {"error": "FormatError", "id": "str subclass key"}, {"error": "FormatError", "id": "list subclass"}], "fixtures_sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b", "full_C05": false, "full_V03": false, "input_pins_sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc", "memory_snapshot_or_handoff_equality_claimed": false, "optimized": false, "original_code_executed": false, "outside_costs": "OPEN_NOT_ZERO", "projection_oracle_sha256": "da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0", "schema": "unit13-independent-semantic-results-v1", "seed_bytes_fabricated": false, "source_mutants": [{"id": "source_changed_request_length", "mutant_sha256": "7575ac8f6eff3d8f7b19a2ef5da144204de0aaba3cc03608ee820217d77ddfcd", "pin_layer_bypassed_intentionally": true, "semantic_code": "generation_length"}, {"id": "source_substituted_provider", "mutant_sha256": "6943c0effc7d426d89678b181589201f9442e3f962bf655c63d024fb6b2197ee", "pin_layer_bypassed_intentionally": true, "semantic_code": "generation_provider"}, {"id": "source_argv_pointer", "mutant_sha256": "c16682718bf8423cdbc1d82bc386da9b161e4d468ed7851fa49e2ccda6d03140", "pin_layer_bypassed_intentionally": true, "semantic_code": "tag_destination_conversion"}, {"id": "source_mismatched_copy_source", "mutant_sha256": "0b593166d1130afc593afb838ffe8775086e1c7ef2cde11c7a05bd35d26d9389", "pin_layer_bypassed_intentionally": true, "semantic_code": "copy_source_binding"}, {"id": "source_copy_failure_labelled_success", "mutant_sha256": "0eaa9c21bb38659e87574fdc2903841549a5797e420d3104428ef415939007c7", "pin_layer_bypassed_intentionally": true, "semantic_code": "copy_nonzero_EFAULT"}], "status": "PASS_INDEPENDENT_MODEL_AND_SOURCE_RELATIONS_ONLY", "stronger_claim_refusals": [{"error": "FormatError", "field": "handoff_memory_equals_seed", "pin_layer_bypassed_intentionally": true}, {"error": "FormatError", "field": "atomic_destination_equality", "pin_layer_bypassed_intentionally": true}, {"error": "FormatError", "field": "stable_destination", "pin_layer_bypassed_intentionally": true}, {"error": "FormatError", "field": "actual_exec_admitted", "pin_layer_bypassed_intentionally": true}, {"error": "FormatError", "field": "owned_nonwrapping_span", "pin_layer_bypassed_intentionally": true}], "witness_bytes": 2617, "witness_sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70"} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/OPTIMIZED-v2.raw b/research/h25-c05-at-random-producer-events/archive/unit13/controls/OPTIMIZED-v2.raw new file mode 100644 index 0000000000..02a69934de --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/OPTIMIZED-v2.raw @@ -0,0 +1 @@ +{"actual_runtime_or_owned_stack_admitted": false, "arithmetic_cases": [{"actual_owned_span_asserted": false, "computed": 4080, "expected": 4080, "id": "down16"}, {"actual_owned_span_asserted": false, "computed": 4294971392, "expected": 4294971392, "id": "above32bits"}, {"actual_owned_span_asserted": false, "computed": 18446744073709551608, "expected": 18446744073709551608, "id": "unsigned_wrap"}], "checker_sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0", "event_cases": [{"accepted": true, "actual_projection": [0, 0, 0], "expected": true, "expected_projection": [0, 0, 0], "id": "positive_empty_prefix"}, {"accepted": true, "actual_projection": [1, 1, 0], "expected": true, "expected_projection": [1, 1, 0], "id": "positive_G_only"}, {"accepted": true, "actual_projection": [3, 1, 1], "expected": true, "expected_projection": [3, 1, 1], "id": "positive_C_failure_EFAULT"}, {"accepted": true, "actual_projection": [3, 3, 0], "expected": true, "expected_projection": [3, 3, 0], "id": "positive_C_zero_prefix"}, {"accepted": true, "actual_projection": [7, 3, 0], "expected": true, "expected_projection": [7, 3, 0], "id": "positive_K_tag_only"}, {"accepted": true, "actual_projection": [7, 7, 0], "expected": true, "expected_projection": [7, 7, 0], "id": "positive_GCK_prefix"}, {"accepted": true, "actual_projection": [7, 7, 3], "expected": true, "expected_projection": [7, 7, 3], "id": "positive_later_preU_EINTR"}, {"accepted": true, "actual_projection": [7, 7, 4], "expected": true, "expected_projection": [7, 7, 4], "id": "positive_later_preU_EFAULT"}, {"accepted": true, "actual_projection": [7, 7, 5], "expected": true, "expected_projection": [7, 7, 5], "id": "positive_later_preU_EINVAL"}, {"accepted": true, "actual_projection": [15, 7, 2], "expected": true, "expected_projection": [15, 7, 2], "id": "positive_U_failure_EFAULT"}, {"accepted": true, "actual_projection": [15, 15, 6], "expected": true, "expected_projection": [15, 15, 6], "id": "positive_local_return_zero"}, {"accepted": false, "expected": false, "id": "negative_changed_request_length", "semantic_code": "event_generation_relation"}, {"accepted": false, "expected": false, "id": "negative_substituted_provider", "semantic_code": "event_generation_relation"}, {"accepted": false, "expected": false, "id": "negative_argv_pointer", "semantic_code": "event_tag_pointer_width"}, {"accepted": false, "expected": false, "id": "negative_mismatched_copy_source", "semantic_code": "event_seed_copy_relation"}, {"accepted": false, "expected": false, "id": "negative_copy_failure_labelled_success", "semantic_code": "event_tag_after_failed_copy"}, {"accepted": false, "expected": false, "id": "negative_C_failure_U_failure_branch", "semantic_code": "event_user_EFAULT_guard"}, {"accepted": false, "expected": false, "id": "negative_U_failure_labelled_return_zero", "semantic_code": "event_local_return_guard"}, {"accepted": false, "expected": false, "id": "negative_U_before_K_value", "semantic_code": "event_user_auxv_relation"}, {"accepted": false, "expected": false, "id": "negative_K_value_before_tag", "semantic_code": "event_value_store_order"}, {"accepted": false, "expected": false, "id": "negative_U_wrong_source", "semantic_code": "event_user_auxv_relation"}, {"accepted": false, "expected": false, "id": "negative_U_wrong_length_expression", "semantic_code": "event_user_auxv_relation"}, {"accepted": false, "expected": false, "id": "negative_native_word32", "semantic_code": "event_tag_pointer_width"}, {"accepted": false, "expected": false, "id": "negative_later_failure_before_K_value", "semantic_code": "event_later_preU_failure"}], "exact_type_callback_controls": [{"error": "FormatError", "id": "dict subclass"}, {"error": "FormatError", "id": "str subclass key"}, {"error": "FormatError", "id": "list subclass"}], "fixtures_sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b", "full_C05": false, "full_V03": false, "input_pins_sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc", "memory_snapshot_or_handoff_equality_claimed": false, "optimized": true, "original_code_executed": false, "outside_costs": "OPEN_NOT_ZERO", "projection_oracle_sha256": "da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0", "schema": "unit13-independent-semantic-results-v1", "seed_bytes_fabricated": false, "source_mutants": [{"id": "source_changed_request_length", "mutant_sha256": "7575ac8f6eff3d8f7b19a2ef5da144204de0aaba3cc03608ee820217d77ddfcd", "pin_layer_bypassed_intentionally": true, "semantic_code": "generation_length"}, {"id": "source_substituted_provider", "mutant_sha256": "6943c0effc7d426d89678b181589201f9442e3f962bf655c63d024fb6b2197ee", "pin_layer_bypassed_intentionally": true, "semantic_code": "generation_provider"}, {"id": "source_argv_pointer", "mutant_sha256": "c16682718bf8423cdbc1d82bc386da9b161e4d468ed7851fa49e2ccda6d03140", "pin_layer_bypassed_intentionally": true, "semantic_code": "tag_destination_conversion"}, {"id": "source_mismatched_copy_source", "mutant_sha256": "0b593166d1130afc593afb838ffe8775086e1c7ef2cde11c7a05bd35d26d9389", "pin_layer_bypassed_intentionally": true, "semantic_code": "copy_source_binding"}, {"id": "source_copy_failure_labelled_success", "mutant_sha256": "0eaa9c21bb38659e87574fdc2903841549a5797e420d3104428ef415939007c7", "pin_layer_bypassed_intentionally": true, "semantic_code": "copy_nonzero_EFAULT"}], "status": "PASS_INDEPENDENT_MODEL_AND_SOURCE_RELATIONS_ONLY", "stronger_claim_refusals": [{"error": "FormatError", "field": "handoff_memory_equals_seed", "pin_layer_bypassed_intentionally": true}, {"error": "FormatError", "field": "atomic_destination_equality", "pin_layer_bypassed_intentionally": true}, {"error": "FormatError", "field": "stable_destination", "pin_layer_bypassed_intentionally": true}, {"error": "FormatError", "field": "actual_exec_admitted", "pin_layer_bypassed_intentionally": true}, {"error": "FormatError", "field": "owned_nonwrapping_span", "pin_layer_bypassed_intentionally": true}], "witness_bytes": 2617, "witness_sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70"} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/PROJECTION-ORACLE-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/controls/PROJECTION-ORACLE-v1.json new file mode 100644 index 0000000000..5fcb42e947 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/PROJECTION-ORACLE-v1.json @@ -0,0 +1,26 @@ +{ + "schema": "unit13-independent-event-projection-oracle-v1", + "basis": "Logical expectations were fixed in DESIGN-v1/SEMANTIC-FIXTURES-v1 before implementation. These literal masks encode the agreed G=1,C=2,K=4,U=8 MODEL protocol; they are not learned kernel values or actual admission flags.", + "projections": { + "positive_empty_prefix": [0,0,0], + "positive_G_only": [1,1,0], + "positive_C_failure_EFAULT": [3,1,1], + "positive_C_zero_prefix": [3,3,0], + "positive_K_tag_only": [7,3,0], + "positive_GCK_prefix": [7,7,0], + "positive_later_preU_EINTR": [7,7,3], + "positive_later_preU_EFAULT": [7,7,4], + "positive_later_preU_EINVAL": [7,7,5], + "positive_U_failure_EFAULT": [15,7,2], + "positive_local_return_zero": [15,15,6] + }, + "projection_columns": ["reached_mask","completed_mask","local_branch"], + "forbidden_added_witness_claims": [ + "handoff_memory_equals_seed", + "atomic_destination_equality", + "stable_destination", + "actual_exec_admitted", + "owned_nonwrapping_span" + ], + "interpretation": "A completed C event and K stores remain historical events after later failure or a hypothetical writer; no mask asserts current memory contents. Tag-only K does not complete the value pair. No actual seed bytes, changed positions, ownership or no-writer guarantee is represented." +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/RESULTS-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/controls/RESULTS-v1.json new file mode 100644 index 0000000000..c36831c250 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/RESULTS-v1.json @@ -0,0 +1,571 @@ +{ + "arithmetic": [ + { + "actual_owned_span_asserted": false, + "computed": 4080, + "expected": 4080, + "id": "down16" + }, + { + "actual_owned_span_asserted": false, + "computed": 4294971392, + "expected": 4294971392, + "id": "above32bits" + }, + { + "actual_owned_span_asserted": false, + "computed": 18446744073709551608, + "expected": 18446744073709551608, + "id": "unsigned_wrap" + } + ], + "counts": { + "event_models": 24, + "exact_type_callback_controls": 3, + "inert_source_semantic_mutants": 5, + "negative_models": 13, + "numeric_controls": 3, + "positive_models": 11, + "stronger_unproved_claim_refusals": 5 + }, + "event_decisions_and_projections": [ + { + "accepted": true, + "actual_projection": [ + 0, + 0, + 0 + ], + "expected": true, + "expected_projection": [ + 0, + 0, + 0 + ], + "id": "positive_empty_prefix" + }, + { + "accepted": true, + "actual_projection": [ + 1, + 1, + 0 + ], + "expected": true, + "expected_projection": [ + 1, + 1, + 0 + ], + "id": "positive_G_only" + }, + { + "accepted": true, + "actual_projection": [ + 3, + 1, + 1 + ], + "expected": true, + "expected_projection": [ + 3, + 1, + 1 + ], + "id": "positive_C_failure_EFAULT" + }, + { + "accepted": true, + "actual_projection": [ + 3, + 3, + 0 + ], + "expected": true, + "expected_projection": [ + 3, + 3, + 0 + ], + "id": "positive_C_zero_prefix" + }, + { + "accepted": true, + "actual_projection": [ + 7, + 3, + 0 + ], + "expected": true, + "expected_projection": [ + 7, + 3, + 0 + ], + "id": "positive_K_tag_only" + }, + { + "accepted": true, + "actual_projection": [ + 7, + 7, + 0 + ], + "expected": true, + "expected_projection": [ + 7, + 7, + 0 + ], + "id": "positive_GCK_prefix" + }, + { + "accepted": true, + "actual_projection": [ + 7, + 7, + 3 + ], + "expected": true, + "expected_projection": [ + 7, + 7, + 3 + ], + "id": "positive_later_preU_EINTR" + }, + { + "accepted": true, + "actual_projection": [ + 7, + 7, + 4 + ], + "expected": true, + "expected_projection": [ + 7, + 7, + 4 + ], + "id": "positive_later_preU_EFAULT" + }, + { + "accepted": true, + "actual_projection": [ + 7, + 7, + 5 + ], + "expected": true, + "expected_projection": [ + 7, + 7, + 5 + ], + "id": "positive_later_preU_EINVAL" + }, + { + "accepted": true, + "actual_projection": [ + 15, + 7, + 2 + ], + "expected": true, + "expected_projection": [ + 15, + 7, + 2 + ], + "id": "positive_U_failure_EFAULT" + }, + { + "accepted": true, + "actual_projection": [ + 15, + 15, + 6 + ], + "expected": true, + "expected_projection": [ + 15, + 15, + 6 + ], + "id": "positive_local_return_zero" + }, + { + "accepted": false, + "expected": false, + "id": "negative_changed_request_length", + "semantic_code": "event_generation_relation" + }, + { + "accepted": false, + "expected": false, + "id": "negative_substituted_provider", + "semantic_code": "event_generation_relation" + }, + { + "accepted": false, + "expected": false, + "id": "negative_argv_pointer", + "semantic_code": "event_tag_pointer_width" + }, + { + "accepted": false, + "expected": false, + "id": "negative_mismatched_copy_source", + "semantic_code": "event_seed_copy_relation" + }, + { + "accepted": false, + "expected": false, + "id": "negative_copy_failure_labelled_success", + "semantic_code": "event_tag_after_failed_copy" + }, + { + "accepted": false, + "expected": false, + "id": "negative_C_failure_U_failure_branch", + "semantic_code": "event_user_EFAULT_guard" + }, + { + "accepted": false, + "expected": false, + "id": "negative_U_failure_labelled_return_zero", + "semantic_code": "event_local_return_guard" + }, + { + "accepted": false, + "expected": false, + "id": "negative_U_before_K_value", + "semantic_code": "event_user_auxv_relation" + }, + { + "accepted": false, + "expected": false, + "id": "negative_K_value_before_tag", + "semantic_code": "event_value_store_order" + }, + { + "accepted": false, + "expected": false, + "id": "negative_U_wrong_source", + "semantic_code": "event_user_auxv_relation" + }, + { + "accepted": false, + "expected": false, + "id": "negative_U_wrong_length_expression", + "semantic_code": "event_user_auxv_relation" + }, + { + "accepted": false, + "expected": false, + "id": "negative_native_word32", + "semantic_code": "event_tag_pointer_width" + }, + { + "accepted": false, + "expected": false, + "id": "negative_later_failure_before_K_value", + "semantic_code": "event_later_preU_failure" + } + ], + "executed_checker": { + "bytes": 20088, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + }, + "fixed_hard_deadline_utc": "2026-11-02T18:28:46.352854+00:00", + "forbidden_stronger_claim_fields": [ + { + "error": "FormatError", + "field": "handoff_memory_equals_seed", + "pin_layer_bypassed_intentionally": true + }, + { + "error": "FormatError", + "field": "atomic_destination_equality", + "pin_layer_bypassed_intentionally": true + }, + { + "error": "FormatError", + "field": "stable_destination", + "pin_layer_bypassed_intentionally": true + }, + { + "error": "FormatError", + "field": "actual_exec_admitted", + "pin_layer_bypassed_intentionally": true + }, + { + "error": "FormatError", + "field": "owned_nonwrapping_span", + "pin_layer_bypassed_intentionally": true + } + ], + "frozen_utc": "2026-11-02T18:09:23.007553+00:00", + "full_C05": false, + "full_V03": false, + "implementation_release": { + "bytes": 735, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/SOURCE-IMPLEMENTATION-RELEASE-v1.json", + "sha256": "67fa7c2794460ca8bceb75c1496f6c2056a5c79d05e6d0bf64e83fa93ab208d6" + }, + "independent_expectation_custody": { + "design_before_P1_implementation": { + "bytes": 6904, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/DESIGN-v1.md", + "sha256": "30addd150d37f1891d3a3e1ba9f133659802f1e52c56d21d5a115e34b24467f2" + }, + "initial_design_and_fixtures_unchanged": true, + "literal_fixture_freeze_before_author_core_implementation": { + "bytes": 7293, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/SEMANTIC-FIXTURES-v1.json", + "sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b" + }, + "oracle_logic": "Numeric encoding of already frozen G/C/K/U history/partial-failure expectations under agreed MODEL mask protocol; no expected kernel bytes or actual trace learned from output.", + "successor_projection_oracle": { + "bytes": 1333, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/PROJECTION-ORACLE-v1.json", + "sha256": "da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0" + } + }, + "initial_failure_preserved": { + "finding": "need() requires the True singleton; three nonempty positions() lists were passed directly. Parent caught the definite valid-input blocker before tests.", + "initial_checker": { + "bytes": 19989, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v1.py", + "sha256": "35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b" + }, + "initial_harness": { + "bytes": 8472, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v1.py", + "sha256": "7aa2b4008dd39f1f8c1de6148ceaf009d50004016f61744ca2f38b636fcbede7" + }, + "invalid_initial_checker_imported_or_executed": false, + "kind": "PREEXECUTION_STATIC_STOP", + "normal_v1_or_O_v1_launched": false, + "repair_delta": "Three positions conditions changed to len(positions(...))>0; exact24 role cardinality added before key iteration. Independent type/property expectations unchanged.", + "stop_record": { + "bytes": 1569, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/STATIC-STOP-v1.json", + "sha256": "c4184f2ca331e720e79a933fb85751cc8f25d28796aaf5d236ee7e7262b4b1d9" + } + }, + "limits_and_nonclaims": { + "G_C_K_U_events_are_current_memory_state": false, + "arbitrary_C_program_correctness_or_complete_trace_realizability_proved": false, + "atomic_K_pair_or_transfer_claim": false, + "candidate_checker_aggregate_bytes": 8388608, + "completed_handoff_or_persistent_equality_claim": false, + "exact_partial_byte_prefix_or_position_claim": false, + "existing_original_limits_changed": false, + "fabricated_seed_or_memory_image": false, + "genuine_OS_context_native_LP64_and_primitive_contracts_remain_explicit_conditions": true, + "own_bundle_reader_aggregate_bytes": 25165824, + "source_pins_authenticate_actual_exec_or_current_ownership": false, + "source_pointer_or_ownership_observation": false, + "source_text_reader_bytes": 1048576 + }, + "meaningful_checks": [ + "All five inert source mutants call analyze_sources directly, deliberately bypassing pin authentication; each raises SemanticError with a distinct relation reason, never SourcePinError.", + "Positive ordinary prefixes and both failure stages pass, preventing a reject-everything checker.", + "C nonzero followed by its immediate EFAULT has reached3/completed1; later U failure has reached15/completed7; Ktag-only has reached7/completed3. These are historical MODEL masks, not current-memory facts.", + "Wrong RNG request/provider,argv pointer,copy source,and failure-success flow are semantic rejects in both event and inert-source representations.", + "Native64 arithmetic above2^32 is preserved. q8 minus16 is verified modulo2^64; no nonwrapping valid owned span is inferred.", + "Exact dict/list subclasses and str-subclass equality callback are rejected before callback dispatch.", + "Added handoff,atomic/stable memory,actual-exec and owned-span witness fields are refused in the relation/schema layer beyond source-hash checks." + ], + "operations": { + "duplicate_fixture_pairs_or_postpass_reruns": false, + "network_or_new_kernel_source_acquisition": false, + "old_Units01_to12_reopened": false, + "only_NEW_static_checker_and_owned_DATA_executed": true, + "original_native_TCB_compiler_Popen_namespace_science_policy_or_process_inspection": false, + "original_or_kernel_code_import_or_function_execution": false, + "protected_runtime_read_or_enumeration": false, + "source_or_other_agent_files_modified": false + }, + "original_activity_credit_added": 0, + "original_completion_percent": 43.5, + "original_denominators_caps_unchanged": true, + "outside_costs": "OPEN_NOT_ZERO", + "owned_artifact_pins": { + "DESIGN-v1.md": { + "bytes": 6904, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/DESIGN-v1.md", + "sha256": "30addd150d37f1891d3a3e1ba9f133659802f1e52c56d21d5a115e34b24467f2" + }, + "NORMAL-v2.raw": { + "bytes": 6138, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/NORMAL-v2.raw", + "sha256": "34f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe" + }, + "OPTIMIZED-v2.raw": { + "bytes": 6137, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/OPTIMIZED-v2.raw", + "sha256": "29ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df" + }, + "PROJECTION-ORACLE-v1.json": { + "bytes": 1333, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/PROJECTION-ORACLE-v1.json", + "sha256": "da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0" + }, + "SEMANTIC-FIXTURES-v1.json": { + "bytes": 7293, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/SEMANTIC-FIXTURES-v1.json", + "sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b" + }, + "STATIC-STOP-v1.json": { + "bytes": 1569, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/STATIC-STOP-v1.json", + "sha256": "c4184f2ca331e720e79a933fb85751cc8f25d28796aaf5d236ee7e7262b4b1d9" + }, + "run_semantic_controls_v1.py": { + "bytes": 8472, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v1.py", + "sha256": "7aa2b4008dd39f1f8c1de6148ceaf009d50004016f61744ca2f38b636fcbede7" + }, + "run_semantic_controls_v2.py": { + "bytes": 10036, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py", + "sha256": "86c00342a451af919ca6a053a2e903d9616a52755117f973319260987327cf24" + } + }, + "parent_or_independent_critical_review_still_owns_checkpoint_acceptance": true, + "results_identical_except_optimized_profile_flag": true, + "runs_serialized_in_order": [ + { + "argv": [ + "python3", + "-I", + "-B", + "-X", + "pycache_prefix=/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/bytecode-unmaterialized-normal-v2", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py", + "--workspace", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453", + "--unit", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13", + "--module", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "--module-sha256", + "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + ], + "cwd": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453", + "profile": "normal", + "pycache_namespace_was_unmaterialized": true, + "returncode": 0, + "stdout_stderr_raw": { + "bytes": 6138, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/NORMAL-v2.raw", + "sha256": "34f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe" + }, + "tool_wall_seconds": 0.42416457 + }, + { + "argv": [ + "python3", + "-I", + "-O", + "-B", + "-X", + "pycache_prefix=/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/bytecode-unmaterialized-optimized-v2", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py", + "--workspace", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453", + "--unit", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13", + "--module", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "--module-sha256", + "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + ], + "cwd": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453", + "profile": "optimized", + "pycache_namespace_was_unmaterialized": true, + "returncode": 0, + "stdout_stderr_raw": { + "bytes": 6137, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/OPTIMIZED-v2.raw", + "sha256": "29ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df" + }, + "tool_wall_seconds": 0.437871712 + } + ], + "schema": "unit13-independent-semantic-controls-receipt-v1", + "scope": "Independent fixtures and semantic controls for the explicitly smaller G/C/K/U producer-event component; no original runtime or memory/handoff theorem.", + "semantic_source_mutants": [ + { + "id": "source_changed_request_length", + "mutant_sha256": "7575ac8f6eff3d8f7b19a2ef5da144204de0aaba3cc03608ee820217d77ddfcd", + "pin_layer_bypassed_intentionally": true, + "semantic_code": "generation_length" + }, + { + "id": "source_substituted_provider", + "mutant_sha256": "6943c0effc7d426d89678b181589201f9442e3f962bf655c63d024fb6b2197ee", + "pin_layer_bypassed_intentionally": true, + "semantic_code": "generation_provider" + }, + { + "id": "source_argv_pointer", + "mutant_sha256": "c16682718bf8423cdbc1d82bc386da9b161e4d468ed7851fa49e2ccda6d03140", + "pin_layer_bypassed_intentionally": true, + "semantic_code": "tag_destination_conversion" + }, + { + "id": "source_mismatched_copy_source", + "mutant_sha256": "0b593166d1130afc593afb838ffe8775086e1c7ef2cde11c7a05bd35d26d9389", + "pin_layer_bypassed_intentionally": true, + "semantic_code": "copy_source_binding" + }, + { + "id": "source_copy_failure_labelled_success", + "mutant_sha256": "0eaa9c21bb38659e87574fdc2903841549a5797e420d3104428ef415939007c7", + "pin_layer_bypassed_intentionally": true, + "semantic_code": "copy_nonzero_EFAULT" + } + ], + "sole_repair_window": { + "deadline_utc": "2026-11-02T18:14:01.284+00:00", + "no_extension_or_reroll": true, + "parent_authorized": true, + "started_utc": "2026-11-02T18:04:01.284+00:00" + }, + "source_input_pins": { + "bytes": 47029, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/input/SOURCE-AVAILABILITY-v1.json", + "sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc" + }, + "source_plan": { + "bytes": 4152, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/PLAN.json", + "sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf" + }, + "type_callback_results": [ + { + "error": "FormatError", + "id": "dict subclass" + }, + { + "error": "FormatError", + "id": "str subclass key" + }, + { + "error": "FormatError", + "id": "list subclass" + } + ], + "verdict": "PASS_NEW_CONDITIONAL_SOURCE_AND_MODEL_CONTROLS_ONLY", + "witness": { + "actual_seed_or_runtime_data": false, + "author_owns_final_witness_artifact": true, + "bytes": 2617, + "normal_O_equal": true, + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + } +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/RESULTS-v1.md b/research/h25-c05-at-random-producer-events/archive/unit13/controls/RESULTS-v1.md new file mode 100644 index 0000000000..a9d4d97071 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/RESULTS-v1.md @@ -0,0 +1,27 @@ +Independent Unit13 semantic controls frozen 2026-11-02T18:09:23.007553+00:00. + +PASS for the NEW explicitly conditional G/C/K/U source/event component only. Full C05/full V03 remain false; original43.5%, denominators/caps unchanged, activity credit0, costs OPEN_NOT_ZERO. Parent/critical reviewer owns local checkpoint acceptance. + +The independent DESIGN30addd150d37f1891d3a3e1ba9f133659802f1e52c56d21d5a115e34b24467f2 and literal fixtures71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b were frozen before the author core implementation. They derive the five required counterexamples and positive/failure expectations from the exact source rather than implementation output. A separate oracle da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0 encodes those prior expectations in the agreed historical MODEL mask protocol. + +The initial core35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b was NOT imported or run. Parent caught a definite preexecution blocker: need requires True but received positions lists at three call sites. STATIC-STOP-v1.json preserves this failure and the untouched initial harness7aa2b4008dd39f1f8c1de6148ceaf009d50004016f61744ca2f38b636fcbede7. Within the sole18:04:01.284–18:14:01.284 repair window, the author's separate corev2 fixes the three predicates and adds an early exact24-role bound. No source/original file was edited by the controls worker. + +Executed exact corev2 SHA25649023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0 with owned successor harness SHA25686c00342a451af919ca6a053a2e903d9616a52755117f973319260987327cf24. One isolated-B normal run and one isolated-B optimized run executed serially using distinct unmaterialized bytecode-cache prefixes. Both returned0; recorded tool wall times0.42416457/0.437871712 seconds are preparation diagnostics only. No passed suite was rerun. + +NORMAL-v2.raw:6138 bytes,SHA25634f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe. OPTIMIZED-v2.raw:6137 bytes,SHA25629ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df. Full parsed results agree except the explicit optimized flag. The generated/checked static witness is2617 bytes,SHA2563bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70 in both profiles; the author owns the final witness artifact. Exact commands,cwd,exit status and pins are in RESULTS-v1.json. + +All24 literal event models pass their independent decisions:11 positives and13 semantic negatives. All five inert producer-source mutations are rejected by analyze_sources with SemanticError, deliberately bypassing hash authentication: + +| Counterexample | Semantic reason | +|---|---| +| Request15 instead of16 | generation_length | +| Different provider | generation_provider | +| argv pointer in AT_RANDOM | tag_destination_conversion | +| Different kernel copy source | copy_source_binding | +| Failed copy labelled local success | copy_nonzero_EFAULT | + +Positive projection assertions distinguish completed history from current state. Seed C/EFAULT yields reached3/completed1; a tag-only K prefix yields7/3 with no completed pair; later U/EFAULT yields15/7, retaining prior G/C/K events without a completed U/table/handoff. Later pre-U failures preserve earlier events. Numeric tests include native64 values above2^32 and unsigned wrap; q8 minus16 produces18446744073709551608 modulo2^64, with no owned/nonwrapping stack assertion. Three exact-type callback tripwires reject before dispatch. Five added memory/handoff/actual-exec/owned-span fields are refused by the relation/schema layer, beyond source hashes. + +No fixture contains real seed bytes, exact partial-copy byte positions, a memory snapshot, actual ownership or an admission flag. Missing in-flight operation rows may coexist with partial effects. Normal returned copy events and source-ordered K stores do not imply atomicity or future memory equality. This finite checker and these toy models are not an arbitrary-C proof or a claim all accepted model prefixes are actual kernel traces. Genuine OS/native ABI/primitive-interface assumptions and future actual-exec/owner binding remain external as specified by the proof. + +Only new static code and owned DATA executed. No original/kernel/nativeTCB/compiler/Popen/namespace/scientific/process/policy execution, new source acquisition, protected-runtime access or reopened Unit01–12 work occurred. Parent and critical reviewer retain independent proof/checkpoint decisions. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/SEMANTIC-FIXTURES-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/controls/SEMANTIC-FIXTURES-v1.json new file mode 100644 index 0000000000..7cef57349c --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/SEMANTIC-FIXTURES-v1.json @@ -0,0 +1,44 @@ +{ + "schema": "unit13-independent-semantic-fixtures-v1", + "scope": "Independent literal MODEL prefixes and inert source mutations; no kernel trace, seed, memory image, actual ownership or handoff claim.", + "source_design_sha256": "30addd150d37f1891d3a3e1ba9f133659802f1e52c56d21d5a115e34b24467f2", + "event_cases": [ + {"id":"positive_empty_prefix","accept":true,"relation":"No completed event asserted","events":[]}, + {"id":"positive_G_only","accept":true,"relation":"Normal returned G request; later interrupted operations may have unrecorded effects","events":[[1,1,1,16]]}, + {"id":"positive_C_failure_EFAULT","accept":true,"relation":"Nonzero seed copy return follows its own immediate EFAULT source branch; partial effects unspecified","events":[[1,1,1,16],[2,2,1,2,16,1],[5,1]]}, + {"id":"positive_C_zero_prefix","accept":true,"relation":"Completed C transfer event without later memory-state claim","events":[[1,1,1,16],[2,2,1,2,16,0]]}, + {"id":"positive_K_tag_only","accept":true,"relation":"Interrupted prefix after tag store does not assert paired value store or atomicity","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1]]}, + {"id":"positive_GCK_prefix","accept":true,"relation":"Both ordered K stores; no U or handoff inferred","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2]]}, + {"id":"positive_later_preU_EINTR","accept":true,"relation":"Later local failure preserves earlier C completion and K writes","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2],[5,3]]}, + {"id":"positive_later_preU_EFAULT","accept":true,"relation":"Later pre-U EFAULT has no completed U/table/handoff","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2],[5,4]]}, + {"id":"positive_later_preU_EINVAL","accept":true,"relation":"Later argv/env local failure does not undo earlier events","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2],[5,5]]}, + {"id":"positive_U_failure_EFAULT","accept":true,"relation":"Nonzero later auxv copy has its distinct EFAULT branch, preserving G/C/K only","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2],[4,2,3,4,1,8,1],[5,2]]}, + {"id":"positive_local_return_zero","accept":true,"relation":"Local successful transfer sequence only; no future handoff or memory snapshot equality","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2],[4,2,3,4,1,8,0],[6]]}, + {"id":"negative_changed_request_length","accept":false,"relation":"G request must remain16 despite otherwise coherent shape","events":[[1,1,1,15]]}, + {"id":"negative_substituted_provider","accept":false,"relation":"A different provider does not establish the named genuine RNG relation","events":[[1,7,1,16]]}, + {"id":"negative_argv_pointer","accept":false,"relation":"K value must use computed random destination MODEL identity2, not plausible argv identity5","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,5,64,64,2]]}, + {"id":"negative_mismatched_copy_source","accept":false,"relation":"Copy must read the same kernel object filled by G, not another16-byte object","events":[[1,1,1,16],[2,2,9,2,16,0]]}, + {"id":"negative_copy_failure_labelled_success","accept":false,"relation":"C nonzero cannot proceed to K/U success","events":[[1,1,1,16],[2,2,1,2,16,1],[3,25,2,64,64,1],[3,25,2,64,64,2],[4,2,3,4,1,8,0],[6]]}, + {"id":"negative_C_failure_U_failure_branch","accept":false,"relation":"Seed-copy failure cannot be relabelled later auxv-copy failure","events":[[1,1,1,16],[2,2,1,2,16,1],[5,2]]}, + {"id":"negative_U_failure_labelled_return_zero","accept":false,"relation":"Failed later transfer grants no local table completion","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2],[4,2,3,4,1,8,1],[6]]}, + {"id":"negative_U_before_K_value","accept":false,"relation":"Tag and value stores are ordered separately; U cannot bypass the value store","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[4,2,3,4,1,8,0]]}, + {"id":"negative_K_value_before_tag","accept":false,"relation":"Separate K stores preserve source order","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,2]]}, + {"id":"negative_U_wrong_source","accept":false,"relation":"U source is saved_auxv MODEL object3","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2],[4,2,9,4,1,8,0]]}, + {"id":"negative_U_wrong_length_expression","accept":false,"relation":"U requires ei_index*sizeof(elf_addr_t), not an alternate length expression","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[3,25,2,64,64,2],[4,2,3,4,9,8,0]]}, + {"id":"negative_native_word32","accept":false,"relation":"Selected native ELF word width is64, not32","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,32,1]]}, + {"id":"negative_later_failure_before_K_value","accept":false,"relation":"The declared later pre-U failure branch cannot occur before the completed K value store","events":[[1,1,1,16],[2,2,1,2,16,0],[3,25,2,64,64,1],[5,3]]} + ], + "source_mutations": [ + {"id":"source_changed_request_length","role":"producer","needle":"get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));","replacement":"get_random_bytes(k_rand_bytes, 15);","relation":"Array and copy remain16; request mismatch must be a semantic rejection without pin checking"}, + {"id":"source_substituted_provider","role":"producer","needle":"get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));","replacement":"unrelated_provider(k_rand_bytes, sizeof(k_rand_bytes));","relation":"A coherent different provider call cannot discharge the named RNG relation"}, + {"id":"source_argv_pointer","role":"producer","needle":"NEW_AUX_ENT(AT_RANDOM, (elf_addr_t)(unsigned long)u_rand_bytes);","replacement":"NEW_AUX_ENT(AT_RANDOM, (elf_addr_t)(unsigned long)mm->arg_start);","relation":"An argv pointer cannot replace the random destination even if plausibly in user space"}, + {"id":"source_mismatched_copy_source","role":"producer","needle":"copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes))","replacement":"copy_to_user(u_rand_bytes, k_platform, sizeof(k_rand_bytes))","relation":"Same16-byte copy length does not repair source-object mismatch"}, + {"id":"source_copy_failure_labelled_success","role":"producer","needle":"if (copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))\n\t\treturn -EFAULT;","replacement":"if (copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))\n\t\treturn 0;","relation":"A nonzero copy result cannot be relabelled local success"} + ], + "arithmetic_cases": [ + {"id":"down16","cursor":4096,"width":64,"length":16,"expected":4080,"note":"Numeric relation only, not actual ownership"}, + {"id":"above32bits","cursor":4294971408,"width":64,"length":16,"expected":4294971392,"note":"No32-bit truncation on qualified native64 model"}, + {"id":"unsigned_wrap","cursor":8,"width":64,"length":16,"expected":18446744073709551608,"note":"Modulo relation only; does not establish a valid nonwrapping owned stack span"} + ], + "no_memory_or_handoff_fixture": "No fixture contains seed bytes, copied-byte positions, a destination memory image, actual-owner flags or a handoff equality claim. Completed events remain valid with a hypothetical later writer; such a writer defeats any added memory/handoff corollary." +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/STATIC-STOP-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/controls/STATIC-STOP-v1.json new file mode 100644 index 0000000000..6febe0f92d --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/STATIC-STOP-v1.json @@ -0,0 +1,22 @@ +{ + "schema": "unit13-independent-controls-preexecution-stop-v1", + "checker_path": "unit13/implementation/at_random_producer_v1.py", + "checker_sha256": "35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b", + "harness_path": "unit13/controls/run_semantic_controls_v1.py", + "harness_sha256": "7aa2b4008dd39f1f8c1de6148ceaf009d50004016f61744ca2f38b636fcbede7", + "fixtures_sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b", + "design_sha256": "30addd150d37f1891d3a3e1ba9f133659802f1e52c56d21d5a115e34b24467f2", + "status": "STATIC_STOP_BEFORE_TEST_LAUNCH", + "finding": "Parent independent review found that need() requires condition is True, while analyze_sources passes nonempty positions() lists for three source predicates. A genuine match is a list rather than the True singleton, so otherwise valid source cannot pass.", + "source_anchors": ["need condition is not True", "analyze_sources downward_unsigned_allocation", "analyze_sources ordered_saved_auxv_stores", "analyze_sources later_failure:EINTR,EFAULT,EINVAL"], + "normal_run_launched": false, + "optimized_run_launched": false, + "new_checker_imported_by_controls": false, + "known_invalid_baseline_reproduced": false, + "initial_code_harness_fixtures_preserved": true, + "repair_authority": "Parent-controlled sole10minute window remains pending at this record; no independent extension or retry.", + "no_original_or_kernel_or_native_or_compiler_or_process_or_policy_execution": true, + "full_C05": false, + "full_V03": false, + "outside_costs": "OPEN_NOT_ZERO" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/run_semantic_controls_v1.py.txt b/research/h25-c05-at-random-producer-events/archive/unit13/controls/run_semantic_controls_v1.py.txt new file mode 100644 index 0000000000..b4e509627d --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/run_semantic_controls_v1.py.txt @@ -0,0 +1,188 @@ +#!/usr/bin/env python3 +"""Independent Unit13 controls for NEW source/event checker only. +Clear1nsight/ChrisR; substantial OpenAI Codex/Sol Max assistance. +Apache-2.0 for this new harness; referenced source licenses remain unchanged. +No original/kernel code is imported or executed. +""" +import argparse +import hashlib +import importlib.util +import json +from pathlib import Path +import sys + +MAX_SOURCE_BYTES = 1048576 +MAX_BUNDLE_BYTES = 24 * MAX_SOURCE_BYTES +PINS_SHA256 = '08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc' +FIXTURES_SHA256 = '71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b' +RELEASE_SHA256 = '67fa7c2794460ca8bceb75c1496f6c2056a5c79d05e6d0bf64e83fa93ab208d6' +CALLBACKS = [] + + +def need(value, message): + if not value: + raise RuntimeError(message) + + +def read_bounded(path, expected=None): + need(not path.is_symlink() and path.is_file(), 'regular nonlink input required') + with path.open('rb') as stream: + blob = stream.read(MAX_SOURCE_BYTES + 1) + need(len(blob) <= MAX_SOURCE_BYTES, 'input exceeds source reader bound') + if expected is not None: + need(hashlib.sha256(blob).hexdigest() == expected, 'frozen input pin differs: ' + path.name) + return blob + + +def load_new_checker(path, expected): + need(len(expected) == 64 and all(c in '0123456789abcdef' for c in expected), + 'explicit final NEW checker SHA256 required') + read_bounded(path, expected) + name = '_unit13_independent_new_checker' + need(name not in sys.modules, 'checker module name already occupied') + spec = importlib.util.spec_from_file_location(name, path) + need(spec is not None and spec.loader is not None, 'new checker loader unavailable') + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + return module + + +def load_bundle(pins, workspace, bundle_dir): + rows = pins['input_pins'] + need(type(rows) is dict and len(rows) == 24, 'fixed24 source roles required') + result = {} + total = 0 + for role, row in rows.items(): + need(type(role) is str and role and '/' not in role and '..' not in role, + 'source role spelling differs') + if bundle_dir is None: + path = Path(row['path']) + path = path if path.is_absolute() else workspace / path + need(path.is_relative_to(workspace), 'source outside declared workspace') + need('outputs/h25-bookkeeping-swarm-20261028/runtime/runs' not in str(path), + 'protected runtime source forbidden') + else: + path = bundle_dir / (role + '.data') + blob = read_bounded(path, row['sha256']) + need(len(blob) == row['size_bytes'], 'source size differs') + total += len(blob) + need(total <= MAX_BUNDLE_BYTES, 'source bundle exceeds reader bound') + result[role] = blob + return result + + +def semantic_rejection(module, call, label): + try: + call() + except module.SemanticError as error: + code = error.code + need(type(code) in (str, int) and type(code) is not bool and bool(str(code)), + 'semantic error lacks a bounded reason code') + return str(code) + except BaseException as error: + raise RuntimeError(label + ': expected semantic rejection, got ' + type(error).__name__) from error + raise RuntimeError(label + ': semantic counterexample accepted') + + +def tripwire(*unused, **kwargs): + CALLBACKS.append('unexpected user callback') + raise RuntimeError('forbidden callback dispatched') + + +class TrapDict(dict): + __iter__ = tripwire + __getitem__ = tripwire + items = tripwire + keys = tripwire + + +class TrapList(list): + __iter__ = tripwire + __getitem__ = tripwire + + +class TrapStr(str): + __hash__ = str.__hash__ + __eq__ = tripwire + + +def type_rejection(module, call, label): + CALLBACKS.clear() + try: + call() + except (module.FormatError, module.SemanticError, module.SourcePinError): + need(not CALLBACKS, label + ': callback before rejection') + return + except BaseException as error: + raise RuntimeError(label + ': wrong failure ' + type(error).__name__) from error + raise RuntimeError(label + ': nonexact type accepted') + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--module', type=Path, required=True) + parser.add_argument('--module-sha256', required=True) + parser.add_argument('--workspace', type=Path, required=True) + parser.add_argument('--unit', type=Path, default=Path(__file__).resolve().parent.parent) + parser.add_argument('--bundle-dir', type=Path) + args = parser.parse_args() + unit = args.unit.resolve() + workspace = args.workspace.resolve() + read_bounded(unit / 'SOURCE-IMPLEMENTATION-RELEASE-v1.json', RELEASE_SHA256) + pins = json.loads(read_bounded(unit / 'input/SOURCE-AVAILABILITY-v1.json', PINS_SHA256)) + fixtures = json.loads(read_bounded(Path(__file__).resolve().parent / 'SEMANTIC-FIXTURES-v1.json', FIXTURES_SHA256)) + bundle = load_bundle(pins, workspace, args.bundle_dir) + module = load_new_checker(args.module.resolve(), args.module_sha256) + module.authenticate_sources(bundle) + profile = module.analyze_sources(bundle) + witness = module.make_witness(bundle) + need(type(witness) is bytes and len(witness) <= MAX_SOURCE_BYTES, 'bounded witness bytes required') + module.check_witness(bundle, witness) + decoded = json.loads(witness) + module.check_relations(profile, decoded) + decisions = [] + for case in fixtures['event_cases']: + label = case['id'] + if case['accept']: + module.check_event_prefix(profile, case['events']) + decisions.append({'id': label, 'accepted': True, 'expected': True}) + else: + code = semantic_rejection(module, lambda c=case: module.check_event_prefix(profile, c['events']), label) + decisions.append({'id': label, 'accepted': False, 'expected': False, 'semantic_code': code}) + mutants = [] + for case in fixtures['source_mutations']: + original = bundle[case['role']] + needle = case['needle'].encode('utf-8') + need(original.count(needle) == 1, 'independent source mutation must have one exact site: ' + case['id']) + changed = dict(bundle) + changed[case['role']] = original.replace(needle, case['replacement'].encode('utf-8'), 1) + code = semantic_rejection(module, lambda b=changed: module.analyze_sources(b), case['id']) + mutants.append({'id': case['id'], 'semantic_code': code, + 'mutant_sha256': hashlib.sha256(changed[case['role']]).hexdigest(), + 'pin_layer_bypassed_intentionally': True}) + arithmetic = [] + for case in fixtures['arithmetic_cases']: + actual = module.computed_destination(case['cursor'], width=case['width'], length=case['length']) + need(type(actual) is int and actual == case['expected'], 'independent modular arithmetic differs: ' + case['id']) + arithmetic.append({'id': case['id'], 'computed': actual, 'expected': case['expected'], + 'actual_owned_span_asserted': False}) + type_rejection(module, lambda: module.authenticate_sources(TrapDict(bundle)), 'dict subclass') + bad_keys = {k: v for k, v in bundle.items() if k != 'producer'} + bad_keys[TrapStr('producer')] = bundle['producer'] + type_rejection(module, lambda: module.analyze_sources(bad_keys), 'str subclass key') + type_rejection(module, lambda: module.check_event_prefix(profile, TrapList([])), 'list subclass') + print(json.dumps({'schema': 'unit13-independent-semantic-results-v1', + 'status': 'PASS_INDEPENDENT_MODEL_AND_SOURCE_RELATIONS_ONLY', + 'optimized': bool(sys.flags.optimize), 'checker_sha256': args.module_sha256, + 'fixtures_sha256': FIXTURES_SHA256, 'input_pins_sha256': PINS_SHA256, + 'witness_sha256': hashlib.sha256(witness).hexdigest(), 'witness_bytes': len(witness), + 'event_cases': decisions, 'source_mutants': mutants, 'arithmetic_cases': arithmetic, + 'exact_type_callback_controls': 3, 'original_code_executed': False, + 'actual_runtime_or_owned_stack_admitted': False, 'seed_bytes_fabricated': False, + 'memory_snapshot_or_handoff_equality_claimed': False, + 'full_C05': False, 'full_V03': False, 'outside_costs': 'OPEN_NOT_ZERO'}, sort_keys=True)) + + +if __name__ == '__main__': + main() diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/controls/run_semantic_controls_v2.py.txt b/research/h25-c05-at-random-producer-events/archive/unit13/controls/run_semantic_controls_v2.py.txt new file mode 100644 index 0000000000..2c26398f2c --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/controls/run_semantic_controls_v2.py.txt @@ -0,0 +1,209 @@ +#!/usr/bin/env python3 +"""Independent Unit13 controls for NEW source/event checker only. +Clear1nsight/ChrisR; substantial OpenAI Codex/Sol Max assistance. +Apache-2.0 for this new harness; referenced source licenses remain unchanged. +No original/kernel code is imported or executed. +""" +import argparse +import hashlib +import importlib.util +import json +from pathlib import Path +import sys + +MAX_SOURCE_BYTES = 1048576 +MAX_BUNDLE_BYTES = 24 * MAX_SOURCE_BYTES +PINS_SHA256 = '08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc' +FIXTURES_SHA256 = '71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b' +ORACLE_SHA256 = 'da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0' +RELEASE_SHA256 = '67fa7c2794460ca8bceb75c1496f6c2056a5c79d05e6d0bf64e83fa93ab208d6' +CALLBACKS = [] + + +def need(value, message): + if not value: + raise RuntimeError(message) + + +def read_bounded(path, expected=None): + need(not path.is_symlink() and path.is_file(), 'regular nonlink input required') + with path.open('rb') as stream: + blob = stream.read(MAX_SOURCE_BYTES + 1) + need(len(blob) <= MAX_SOURCE_BYTES, 'input exceeds source reader bound') + if expected is not None: + need(hashlib.sha256(blob).hexdigest() == expected, 'frozen input pin differs: ' + path.name) + return blob + + +def load_new_checker(path, expected): + need(len(expected) == 64 and all(c in '0123456789abcdef' for c in expected), + 'explicit final NEW checker SHA256 required') + read_bounded(path, expected) + name = '_unit13_independent_new_checker' + need(name not in sys.modules, 'checker module name already occupied') + spec = importlib.util.spec_from_file_location(name, path) + need(spec is not None and spec.loader is not None, 'new checker loader unavailable') + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + return module + + +def load_bundle(pins, workspace, bundle_dir): + rows = pins['input_pins'] + need(type(rows) is dict and len(rows) == 24, 'fixed24 source roles required') + result = {} + total = 0 + for role, row in rows.items(): + need(type(role) is str and role and '/' not in role and '..' not in role, + 'source role spelling differs') + if bundle_dir is None: + path = Path(row['path']) + path = path if path.is_absolute() else workspace / path + need(path.is_relative_to(workspace), 'source outside declared workspace') + need('outputs/h25-bookkeeping-swarm-20261028/runtime/runs' not in str(path), + 'protected runtime source forbidden') + else: + path = bundle_dir / (role + '.data') + blob = read_bounded(path, row['sha256']) + need(len(blob) == row['size_bytes'], 'source size differs') + total += len(blob) + need(total <= MAX_BUNDLE_BYTES, 'source bundle exceeds reader bound') + result[role] = blob + return result + + +def semantic_rejection(module, call, label): + try: + call() + except module.SemanticError as error: + code = error.code + need(type(code) in (str, int) and type(code) is not bool and bool(str(code)), + 'semantic error lacks a bounded reason code') + return str(code) + except BaseException as error: + raise RuntimeError(label + ': expected semantic rejection, got ' + type(error).__name__) from error + raise RuntimeError(label + ': semantic counterexample accepted') + + +def tripwire(*unused, **kwargs): + CALLBACKS.append('unexpected user callback') + raise RuntimeError('forbidden callback dispatched') + + +class TrapDict(dict): + __iter__ = tripwire + __getitem__ = tripwire + items = tripwire + keys = tripwire + + +class TrapList(list): + __iter__ = tripwire + __getitem__ = tripwire + + +class TrapStr(str): + __hash__ = str.__hash__ + __eq__ = tripwire + + +def type_rejection(module, call, label): + CALLBACKS.clear() + try: + call() + except (module.FormatError, module.SemanticError, module.SourcePinError) as error: + need(not CALLBACKS, label + ': callback before rejection') + return type(error).__name__ + except BaseException as error: + raise RuntimeError(label + ': wrong failure ' + type(error).__name__) from error + raise RuntimeError(label + ': nonexact type accepted') + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--module', type=Path, required=True) + parser.add_argument('--module-sha256', required=True) + parser.add_argument('--workspace', type=Path, required=True) + parser.add_argument('--unit', type=Path, default=Path(__file__).resolve().parent.parent) + parser.add_argument('--bundle-dir', type=Path) + args = parser.parse_args() + unit = args.unit.resolve() + workspace = args.workspace.resolve() + read_bounded(unit / 'SOURCE-IMPLEMENTATION-RELEASE-v1.json', RELEASE_SHA256) + pins = json.loads(read_bounded(unit / 'input/SOURCE-AVAILABILITY-v1.json', PINS_SHA256)) + fixtures = json.loads(read_bounded(Path(__file__).resolve().parent / 'SEMANTIC-FIXTURES-v1.json', FIXTURES_SHA256)) + oracle = json.loads(read_bounded(Path(__file__).resolve().parent / 'PROJECTION-ORACLE-v1.json', ORACLE_SHA256)) + bundle = load_bundle(pins, workspace, args.bundle_dir) + module = load_new_checker(args.module.resolve(), args.module_sha256) + module.authenticate_sources(bundle) + profile = module.analyze_sources(bundle) + witness = module.make_witness(bundle) + need(type(witness) is bytes and len(witness) <= MAX_SOURCE_BYTES, 'bounded witness bytes required') + module.check_witness(bundle, witness) + decoded = json.loads(witness) + module.check_relations(profile, decoded) + decisions = [] + for case in fixtures['event_cases']: + label = case['id'] + if case['accept']: + actual = module.check_event_prefix(profile, case['events']) + expected = oracle['projections'][label] + need(type(actual) is dict, 'exact MODEL projection dict required') + values = [actual[key] for key in oracle['projection_columns']] + need(all(type(value) is int for value in values) and values == expected, + 'independent event history/projection differs: ' + label) + decisions.append({'id': label, 'accepted': True, 'expected': True, + 'actual_projection': values, 'expected_projection': expected}) + else: + code = semantic_rejection(module, lambda c=case: module.check_event_prefix(profile, c['events']), label) + decisions.append({'id': label, 'accepted': False, 'expected': False, 'semantic_code': code}) + mutants = [] + for case in fixtures['source_mutations']: + original = bundle[case['role']] + needle = case['needle'].encode('utf-8') + need(original.count(needle) == 1, 'independent source mutation must have one exact site: ' + case['id']) + changed = dict(bundle) + changed[case['role']] = original.replace(needle, case['replacement'].encode('utf-8'), 1) + code = semantic_rejection(module, lambda b=changed: module.analyze_sources(b), case['id']) + mutants.append({'id': case['id'], 'semantic_code': code, + 'mutant_sha256': hashlib.sha256(changed[case['role']]).hexdigest(), + 'pin_layer_bypassed_intentionally': True}) + arithmetic = [] + for case in fixtures['arithmetic_cases']: + actual = module.computed_destination(case['cursor'], width=case['width'], length=case['length']) + need(type(actual) is int and actual == case['expected'], 'independent modular arithmetic differs: ' + case['id']) + arithmetic.append({'id': case['id'], 'computed': actual, 'expected': case['expected'], + 'actual_owned_span_asserted': False}) + type_controls = [] + type_controls.append({'id': 'dict subclass', 'error': type_rejection(module, lambda: module.authenticate_sources(TrapDict(bundle)), 'dict subclass')}) + bad_keys = {k: v for k, v in bundle.items() if k != 'producer'} + bad_keys[TrapStr('producer')] = bundle['producer'] + type_controls.append({'id': 'str subclass key', 'error': type_rejection(module, lambda: module.analyze_sources(bad_keys), 'str subclass key')}) + type_controls.append({'id': 'list subclass', 'error': type_rejection(module, lambda: module.check_event_prefix(profile, TrapList([])), 'list subclass')}) + stronger_claim_refusals = [] + for key in oracle['forbidden_added_witness_claims']: + augmented = dict(decoded) + augmented[key] = 1 + try: + module.check_relations(profile, augmented) + except (module.FormatError, module.SemanticError) as error: + stronger_claim_refusals.append({'field': key, 'error': type(error).__name__, + 'pin_layer_bypassed_intentionally': True}) + else: + raise RuntimeError('stronger unproved witness claim accepted: ' + key) + print(json.dumps({'schema': 'unit13-independent-semantic-results-v1', + 'status': 'PASS_INDEPENDENT_MODEL_AND_SOURCE_RELATIONS_ONLY', + 'optimized': bool(sys.flags.optimize), 'checker_sha256': args.module_sha256, + 'fixtures_sha256': FIXTURES_SHA256, 'projection_oracle_sha256': ORACLE_SHA256, 'input_pins_sha256': PINS_SHA256, + 'witness_sha256': hashlib.sha256(witness).hexdigest(), 'witness_bytes': len(witness), + 'event_cases': decisions, 'source_mutants': mutants, 'arithmetic_cases': arithmetic, + 'exact_type_callback_controls': type_controls, 'stronger_claim_refusals': stronger_claim_refusals, + 'original_code_executed': False, + 'actual_runtime_or_owned_stack_admitted': False, 'seed_bytes_fabricated': False, + 'memory_snapshot_or_handoff_equality_claimed': False, + 'full_C05': False, 'full_V03': False, 'outside_costs': 'OPEN_NOT_ZERO'}, sort_keys=True)) + + +if __name__ == '__main__': + main() diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/implementation/INPUT-AVAILABILITY-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/implementation/INPUT-AVAILABILITY-v1.json new file mode 100644 index 0000000000..84c0ffbaf1 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/implementation/INPUT-AVAILABILITY-v1.json @@ -0,0 +1,59 @@ +{ + "schema": "unit13-author-pre-P1-input-claim-analysis-v1", + "recorded_utc": "2026-11-02T17:49:24.131576+00:00", + "phase": "AVAILABILITY_AND_CLAIM_ONLY_NO_IMPLEMENTATION", + "plan_sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf", + "source_input_manifest": { + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/input/SOURCE-AVAILABILITY-v1.json", + "bytes": 47029, + "sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc" + }, + "claim_clarification_sha256": "81ca27af56222d00cb73507734743d909ad63512df0ba8e825ab16cdbddae7c2", + "selected_claim": "For every execution prefix of the selected exact source under applicable original genuine OS/loader and native ABI semantics, each reached G/C/K/U request/completion has the stated actual def-use/argument relation. Traces are not defined by satisfaction of K. Earlier reached events survive later failure; no memory snapshot/handoff claim.", + "source_spans": { + "binfmt": "179 array;226 G;227-230 allocation/C/nonzero EFAULT;235-239 macro stores;266 K;298-300 ei_index;319-357 local failures;360-363 U/failure/return;1297-1383 later loader finalization", + "exec": "1741-1742 post-handler trace_sched_process_exec/ptrace_event", + "elf_alias": "samecommit include/linux/elf.h57 elf_addr_t=Elf64_Off; uapi/linux/elf.h20 Elf64_Off=__u64", + "auxvec": "uapi/linux/auxvec.h31 AT_RANDOM=25" + }, + "primitive_contracts": [ + { + "id": 1, + "name": "genuine kernel RNG normal return", + "semantics": "Named get_random_bytes receives same live local unsigned-char[16] object and length16; normal return supplies16 arbitrary bytes to that object. No seed, statistical quality, independence or recursive algorithm proof." + }, + { + "id": 2, + "name": "genuine copy_to_user", + "semantics": "Actual source/destination/count arguments are preserved; zero residual denotes completed logical transfer, nonzero can leave partial side effects and source immediately returns-EFAULT where guarded. No atomic/permanent memory snapshot." + }, + { + "id": 3, + "name": "selected native ABI/source execution", + "semantics": "Conditional x86_64 LP64,8bit byte,64bit pointer/unsignedlong/__u64/Elf64_Off and width-preserving pointer/unsignedlong/elf_addr_t conversion, ordinary well-defined local C object/pointer semantics. These interface meanings are not derived from source flags or observed current instance." + } + ], + "numeric_relation": "At seed STACK_ALLOC, for width64 and live unsigned cursor q, new cursor/destination word d=(q-16) mod2^64. No lower bound on q is invented. Native casts preserve d conditionally on declared ABI.", + "owned_span_condition": "A separate meaningful nonwrapping owned stack-span corollary requires q>=16, d+16=q in mathematical integers, [d,q) inside this invocation owned writable initial-stack mapping with valid user-pointer conversion and applicable lifecycle. This witness records requirements, never that they currently hold.", + "U_relation": "If reached, actual copy request has source mm->saved_auxv, destination current sp and length ei_index*sizeof(elf_addr_t). K writes tag/value in two ordered stores; neither pair nor transfer is an atomic snapshot. U completion is separate from create_elf_tables return and actual handoff.", + "unproved_or_external": [ + "actual current invocation/provider/subject/ABI/kernel association", + "live owned canonical user range, no-wrap, mappings/stack bounds/lifetime", + "exclusive writers or absence of later own/trace/ptrace writes", + "successful whole constructor/table/ELF/userspace handoff", + "complete auxv/K/C05/V03 or original gate/fit/funding admission" + ], + "essential_source_definitions_for_this_conditional_event_claim": "Retained packet plus sole exact elf.h supplies all identified definitions. __u64/LP64 representation is explicitly the native ABI/OS interface premise; no additional types header or kernel implementation body is requested. STOP if the independently reviewed conditional boundary is insufficient.", + "proposed_API": { + "authenticate_sources": "exactinteger-id ->bytes map, all literal pins required; no caller expected hashes or filesystem fallback", + "analyze_sources": "pure bounded byte/text relational analysis, intentionally separate from pins for inert semantic mutations; never source/instance admission", + "make_witness": "production literal authentication then semantic analysis ->canonicalinteger-only bounded witness bytes", + "check_witness": "production literal authentication +semanticprofile +canonicaldecode +relationvalidation", + "check_relations": "pure source-profile/witness relation validation for independent controls; no authentication or runtime claim" + }, + "proposed_witness": "One canonical JSON record, fixed string keys; values only exact bounded ints/lists/maps, no bool/null/float/string payloads. Version/source IDs +bytecounts+SHA256 as8u32words; ABI widths; G/C/K/U argument/object-symbol IDs; unsigned-allocation expression; ordered tag/value stores; finite failure/completion/interrupt-prefix rules; explicit required-premise/obligation IDs. No actualaddresses/seedbytes/futuretranscript/admissionflags/selfhash. Caps<=1MiB,depth24,nodes8192,list/dict<=256,int within127bits; original ordinary source rows remain separate.", + "controls_interface": "Independent controls author mutates inert source/witness and calls semantic layer after separate pin layer. Changed requestlength/provider/argv-pointer/copysource/failure-as-success must raise SemanticError, not merely SourcePinError. Later writer/failed-prefix controls must preserve earlier event relation without handoff corollary.", + "implementation_authored": false, + "execution_performed": false, + "admission": "All original C05/V03/currentinstance/runtime/funding/fit remain unestablished; OPEN_NOT_ZERO." +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/implementation/INPUT-CLAIM-v2.md b/research/h25-c05-at-random-producer-events/archive/unit13/implementation/INPUT-CLAIM-v2.md new file mode 100644 index 0000000000..3decd2738f --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/implementation/INPUT-CLAIM-v2.md @@ -0,0 +1,9 @@ +# Unit13 pre-P1 availability and conditional claim + +Inputs: frozen source packet08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc, including exact3037B elf.h ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e. No further source definition is requested for this conditional event claim; no implementation/tests yet. + +For every execution prefix of selected binfmt_elf.c under applicable original genuine OS/loader semantics: G226 requests16 bytes into local k_rand_bytes[16]; C227-230 requests transfer from that SAME object to the STACK_ALLOC-computed destination with SAME length. Normal copy zero denotes logical transfer completion; nonzero may leave partial writes and immediately returns-EFAULT before K/U. K266, if reached, writes AT_RANDOM=25 and the numeric destination via NEW_AUX_ENT's two ordered stores. U361, if reached, separately requests transfer of mm->saved_auxv to sp for ei_index*sizeof(elf_addr_t); its failure does not erase earlier events or grant constructor/handoff success. Interrupted prefixes acquire no future event. + +Named boundaries: genuine kernel get_random_bytes normal-return semantics; genuine copy_to_user residual/transfer semantics; native Linux/GNU x86_64 flat-address pointer/integer conversion semantics plus8-bit byte/64-bit unsignedlong,pointer,__u64. Width alone does NOT prove the implementation-defined roundtrip. Exact alias: elf_addr_t=Elf64_Off=__u64. At allocation d=(q-16) modulo2^64; no invented q>=16 or owned/canonical/nonwrapping span. Those require separate actual context/range/lifetime evidence. + +No atomic/instant/persistent memory equality, complete-table claim, handoff equality or actual-instance/admission flag. Later exec.c1741-1742 trace/ptrace events remain relevant. No seed values, recursive RNG proof, wholeK/C05/V03, original credit or physical-fit claim. OPEN_NOT_ZERO. Parent P1 release still required. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/implementation/at_random_producer_v1.py.txt b/research/h25-c05-at-random-producer-events/archive/unit13/implementation/at_random_producer_v1.py.txt new file mode 100644 index 0000000000..7f8f521fb0 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/implementation/at_random_producer_v1.py.txt @@ -0,0 +1,358 @@ +"""Exact-source Unit13 AT_RANDOM producer-event checker; no original execution. + +Pure byte/text and integer-only static DATA. Semantic analysis deliberately has +no source authentication authority. Production APIs require every literal pin. +Neither API observes an exec or grants memory/handoff/ownership/admission facts. +""" +from __future__ import annotations +import hashlib +import json +import re + +FILE_CAP=1048576 +TOTAL_CAP=8388608 +RECORD_CAP=1048576 +NODE_CAP=8192 +DEPTH_CAP=24 +CONTAINER_CAP=256 +INT_MIN=-(1<<126) +INT_MAX=(1<<126)-1 +SOURCE_PINS={'GPL2_license': (1, 18600, '8780e78a1a737e127f25a65f6d95269bffd36158dc261114de7859b490bfc5aa'), 'assessment': (2, 3169, '535759b7943bc89895af7746f20f7b8933ab7a9efcfb35a27c86d1a4a9b57244'), 'config': (3, 308206, '8da949fb637f675c8a1170a2bfc5f029b2642f54e0efe8dbb54ca95c6324cf8d'), 'exec_after_ELF': (4, 50792, '4eb89b8d5d23050d9a9741f73979fe95fc083b897b2744f08fd395da62f4a698'), 'existing_OS_supplement': (5, 3847, 'c7c44aaea13b24bbc0fc5b3a0a98d9c2f774edb28846027c12e1874965d7c199'), 'generic_auxvec': (6, 1834, '8dadb9bdd5f00bbcbb6439086f5a9d429b4eff457a61b11ce08941d1dd8d60fa'), 'native_asm_elf': (7, 12164, '59b9c134388114d4b5bd489cc7f278ca5b1e3a3619e908361c09b233eca9fce1'), 'native_tcb_original': (8, 11353, '865943df5cfdbf9383362d7fb2b76c6d0fd895cf0a0e20d550a26b579606b5d7'), 'new_elf_definition': (9, 3037, 'ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e'), 'new_header_acquisition': (10, 1406, '2a57b91b37492b721fbdbc0fcca10aaedf403f00369d9b78bfd8ae1dc27f780b'), 'official_exact_tag': (11, 15884, '28bd3a67da1dcee4bf0f87d3b52dd4d755bb0b34677769876afc90a1890a7ecb'), 'original_domain': (12, 23942, 'a51264289803b4b17bb262f2460ddd4ed72500aaa21e5eb80fa2db4583689361'), 'package_facts': (13, 1741, 'd942241a0e6c6a639cc0b864f3d45ca16d68949f2766e5c936f5095db6a71256'), 'plan': (14, 4152, '569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf'), 'pro14': (15, 9191, 'e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a'), 'pro14_critical_review': (16, 16074, 'bd61034f05893493003a632067710781f3298c57d2a226e7c85d0cd7ccbb9512'), 'producer': (17, 58558, '1939cf7c82077d1a0793777be7ca0e11985750cbaff8c342ce2b2e4647c50102'), 'provider_boundary_review': (18, 24374, '0d91b34b3fc68a33dffccbafc313bc473a55028e9a6b66a7b6ee89e65e08efe4'), 'rng_provider': (19, 53564, '260c4030164fa73c27e55b21f28ec1f4dfc126cc80ab6aa56482223aa3534a8f'), 'source_association': (20, 49189, 'bb5f27c46542968f8404c279db3a05351a7e2851c09114325b75c07a31b1e992'), 'syscall_note': (21, 1258, '8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f'), 'uapi_elf': (22, 19317, '15613d116a6c77c4826036740dd5023c6a7779c776acd3ac7a1a661fe7432b3c'), 'unit12_index': (23, 18743, '1022b415e1a85962e18e84484beae918fbce6ff51431fe28cc752ffb73179940'), 'x86_auxvec': (24, 571, '7e50a100bacd7bd784538466bba53e931bdfc4f13f855258c77665f932368d8d')} + +class FormatError(ValueError): + def __init__(self,code):self.code=code;super().__init__(code) + +class SourcePinError(ValueError): + def __init__(self,code):self.code=code;super().__init__(code) + +class SemanticError(ValueError): + def __init__(self,code):self.code=code;super().__init__(code) + + +def need(condition,code,kind=SemanticError): + if condition is not True:raise kind(code) + + +def integer(value,low=INT_MIN,high=INT_MAX): + need(type(value) is int and low<=value<=high,'exact_bounded_integer',FormatError) + + +def plain(value): + nodes=text=0 + def walk(item,depth): + nonlocal nodes,text + nodes+=1;need(nodes<=NODE_CAP and depth<=DEPTH_CAP,'wire_nodes_depth',FormatError) + kind=type(item) + if kind is int:integer(item);return + if kind is list: + need(len(item)<=CONTAINER_CAP,'wire_sequence_bound',FormatError) + for child in item:walk(child,depth+1) + return + need(kind is dict and len(item)<=CONTAINER_CAP,'integer_only_wire_type',FormatError) + for key,child in item.items(): + need(type(key) is str and 0=0,'unterminated_comment');i=j+2;continue + if text.startswith('//',i): + j=text.find('\n',i+2);i=n if j<0 else j+1;continue + if c in ('"',"'"): + quote=c;j=i+1 + while j>=','<<=','...','++','--','->','+=','-=','==','!=','<=','>=','&&','||','<<','>>','##','&=','|=','*=','/=') if text.startswith(op,i)),c) + result.append(operator);i+=len(operator) + need(len(result)<=200000,'source_token_bound') + return result + + +def positions(sequence,pattern): + return [i for i in range(len(sequence)-len(pattern)+1) if sequence[i:i+len(pattern)]==pattern] + + +def once(sequence,pattern,code): + found=positions(sequence,pattern);need(len(found)==1,code);return found[0] + + +def balanced(sequence,start,opening='(',closing=')'): + need(start=len(condition) or condition[at+1]!='(':continue + args,end=arguments(condition,at+1) + if args and args[0]==destination:found.append((i,finish,condition,args,end)) + need(len(found)==1,'copy_destination_binding') + i,finish,condition,args,end=found[0] + need(condition[0]=='copy_to_user' and end==len(condition)-1,'copy_nonzero_guard') + need(body[finish+1:finish+5]==['return','-','EFAULT',';'],'copy_nonzero_EFAULT') + return i,args,finish + + +def digest_words(raw): + digest=hashlib.sha256(raw).digest() + return [int.from_bytes(digest[i:i+4],'big') for i in range(0,32,4)] + + +def analyze_sources(bundle): + """PURE semantic projection, deliberately not source authentication. + + Inert mutation controls reach these relations without checksum rejection. + Acceptance here alone is neither source identity nor arbitrary-C correctness. + """ + source_map(bundle) + producer=tokens(bundle['producer']);body=function_body(producer,'create_elf_tables') + declaration=once(body,['unsigned','char','k_rand_bytes','['],'kernel_array_declaration') + need(body[declaration+5:declaration+7]==[']',';'],'kernel_array_shape') + number=body[declaration+4];need(number.isdigit(),'kernel_array_length');array_bytes=int(number) + need(array_bytes==16,'kernel_array_length') + generation=[] + for i in range(len(body)-2): + if body[i+1]!='(' or not re.fullmatch(r'[A-Za-z_][A-Za-z_0-9]*',body[i]):continue + args,end=arguments(body,i+1) + if len(args)==2 and args[0]==['k_rand_bytes'] and body[end+1:end+2]==[';']:generation.append((i,body[i],args)) + need(len(generation)==1,'generation_binding') + gpos,provider,gargs=generation[0] + need(provider=='get_random_bytes','generation_provider') + requested=size_expression(gargs[1],array_bytes);need(requested==array_bytes==16,'generation_length') + alloc=once(body,['u_rand_bytes','=','(','elf_addr_t','__user','*',')','STACK_ALLOC','('],'allocation_binding') + allocargs,allocend=arguments(body,alloc+8) + need(allocargs[0]==['p'] and len(allocargs)==2,'allocation_cursor') + need(size_expression(allocargs[1],array_bytes)==16 and body[allocend+1:allocend+2]==[';'],'allocation_length') + need(positions(producer,['#','define','STACK_ALLOC','(','sp',',','len',')','(','sp','-=','len',')']),'downward_unsigned_allocation') + cpos,cargs,cend=copy_if(body,['u_rand_bytes']) + need(len(cargs)==3 and cargs[1]==['k_rand_bytes'],'copy_source_binding') + copied=size_expression(cargs[2],array_bytes);need(copied==requested==16,'copy_length') + kpos=once(body,['NEW_AUX_ENT','(','AT_RANDOM',','],'tag_binding') + kargs,kend=arguments(body,kpos+1) + need(kargs==[['AT_RANDOM'],['(','elf_addr_t',')','(','unsigned','long',')','u_rand_bytes']],'tag_destination_conversion') + need(positions(body,['#','define','NEW_AUX_ENT','(','id',',','val',')','do','{','*','elf_info','++','=','id',';','*','elf_info','++','=','val',';','}','while','(','0',')']),'ordered_saved_auxv_stores') + upos,uargs,uend=copy_if(body,['sp']) + need(uargs==[['sp'],['mm','->','saved_auxv'],['ei_index','*','sizeof','(','elf_addr_t',')']],'user_auxv_source_length') + need(body[uend+5:uend+8]==['return','0',';'],'local_return_zero') + need(gpos','saved_auxv',';'],'saved_auxv_base') + once(body,['ei_index','=','elf_info','-','(','elf_addr_t','*',')','mm','->','saved_auxv',';'],'auxv_length_expression') + once(body,['elf_info','+=','2',';'],'auxv_NULL_cursor') + for error in ('EINTR','EFAULT','EINVAL'): + need(positions(body[kend+1:upos],['return','-',error,';']),'later_failure:'+error) + aux=tokens(bundle['generic_auxvec']);once(aux,['#','define','AT_RANDOM','25'],'AT_RANDOM_tag25') + alias=tokens(bundle['new_elf_definition']);once(alias,['#','define','elf_addr_t','Elf64_Off'],'native_elf_alias') + once(alias,['#','if','ELF_CLASS','==','ELFCLASS32'],'elf_class_selection') + uapi=tokens(bundle['uapi_elf']);once(uapi,['typedef','__u64','Elf64_Off',';'],'native_u64_alias') + asm=tokens(bundle['native_asm_elf']);once(asm,['#','define','ELF_CLASS','ELFCLASS64'],'native_class64') + rng=function_body(tokens(bundle['rng_provider']),'get_random_bytes') + need(rng==['_get_random_bytes','(','buf',',','len',')',';'],'named_provider_dispatch') + ex=tokens(bundle['exec_after_ELF']) + once(ex,['trace_sched_process_exec','(','current',',','old_pid',',','bprm',')',';'],'later_exec_trace') + once(ex,['ptrace_event','(','PTRACE_EVENT_EXEC',',','old_vpid',')',';'],'later_exec_ptrace') + config=bundle['config'].splitlines() + for line in (b'CONFIG_64BIT=y',b'CONFIG_X86_64=y'):need(line in config,'associated_native_config') + need(not any(line==b'CONFIG_STACK_GROWSUP=y' for line in config),'selected_stack_direction') + # These are source-derived MODEL role identities, never actual addresses. + profile={'version':1,'sources':[[SOURCE_PINS[role][0],len(bundle[role]),digest_words(bundle[role])] for role in sorted(SOURCE_PINS)], + 'abi':[8,64,64,64,64], + 'G':[1,1,array_bytes,requested], + 'A':[1,10,2,16,64], + 'C':[2,1,2,copied,1,1], + 'K':[25,2,64,64,1,2], + 'U':[2,3,4,1,8,1,2], + 'requirements':[1,2,3,4,5,6,7,8], + 'store_order':[1,2], + 'branch_rules':[[1,3,1],[2,15,7],[3,7,7],[4,7,7],[5,7,7],[6,15,15]]} + plain(profile);return profile + + +def _profile(profile): + plain(profile) + need(type(profile) is dict,'profile_type',FormatError) + expected={'version','sources','abi','G','A','C','K','U','requirements','store_order','branch_rules'} + need(set(profile)==expected,'profile_fields',FormatError) + need(profile['version']==1 and profile['abi']==[8,64,64,64,64],'profile_native_abi') + need(profile['G']==[1,1,16,16] and profile['A']==[1,10,2,16,64],'profile_generation_allocation') + need(profile['C']==[2,1,2,16,1,1],'profile_copy') + need(profile['K']==[25,2,64,64,1,2] and profile['store_order']==[1,2],'profile_tag') + need(profile['U']==[2,3,4,1,8,1,2],'profile_user_auxv') + need(profile['requirements']==list(range(1,9)),'profile_requirements') + need(profile['branch_rules']==[[1,3,1],[2,15,7],[3,7,7],[4,7,7],[5,7,7],[6,15,15]],'profile_branch_rules') + need(type(profile['sources']) is list and len(profile['sources'])==len(SOURCE_PINS),'profile_source_rows') + for index,row in enumerate(profile['sources'],1): + need(type(row) is list and len(row)==3 and row[0]==index,'profile_source_id') + integer(row[1],1,FILE_CAP);need(type(row[2]) is list and len(row[2])==8,'profile_source_digest') + for word in row[2]:integer(word,0,(1<<32)-1) + + +def check_relations(profile,witness): + """Conditional static relation checking; callers cannot mint authentication.""" + _profile(profile);plain(witness) + need(type(witness) is dict and set(witness)==set(profile),'witness_fields',FormatError) + _profile(witness) + for key in profile:need(witness[key]==profile[key],'witness_relation:'+key) + return {'relation_version':1,'requirements':list(range(1,9))} + + +def make_witness(bundle): + authenticate_sources(bundle);profile=analyze_sources(bundle) + check_relations(profile,profile);return canonical(profile) + + +def check_witness(bundle,raw): + authenticate_sources(bundle);profile=analyze_sources(bundle);witness=decode(raw) + return check_relations(profile,witness) + + +def computed_destination(q,width=64,length=16): + integer(q,0,(1<<64)-1);integer(width,64,64);integer(length,16,16) + return (q-length)%(1<0,'event_row',FormatError) + need(not terminal,'event_after_terminal') + kind=row[0] + if kind==1: + need(row==[1,1,1,16] and state==0,'event_generation_relation') + state=1;reached|=1;completed|=1 + elif kind==2: + need(len(row)==6 and row[:5]==[2,2,1,2,16] and state==1,'event_seed_copy_relation') + integer(row[5],0,16);seed_residual=row[5];state=2;reached|=2 + if seed_residual==0:completed|=2 + elif kind==3: + need(len(row)==6 and row[:5]==[3,25,2,64,64],'event_tag_pointer_width') + need(seed_residual==0,'event_tag_after_failed_copy') + if row[5]==1:need(state==2,'event_tag_store_order');state=3;reached|=4 + elif row[5]==2:need(state==3,'event_value_store_order');state=4;completed|=4 + else:raise SemanticError('event_tag_phase') + elif kind==4: + need(len(row)==7 and row[:6]==[4,2,3,4,1,8] and state==4,'event_user_auxv_relation') + integer(row[6],0,RECORD_CAP);user_residual=row[6];state=5;reached|=8 + if user_residual==0:completed|=8 + elif kind==5: + need(len(row)==2,'event_failure_shape',FormatError);branch=row[1] + if branch==1:need(state==2 and seed_residual is not None and seed_residual!=0,'event_seed_EFAULT_guard') + elif branch==2:need(state==5 and user_residual is not None and user_residual!=0,'event_user_EFAULT_guard') + elif branch in (3,4,5):need(state==4,'event_later_preU_failure') + else:raise SemanticError('event_unknown_failure_branch') + terminal=True + elif kind==6: + need(row==[6] and state==5 and user_residual==0,'event_local_return_guard');branch=6;terminal=True + else:raise SemanticError('event_unknown_kind') + return {'reached_mask':reached,'completed_mask':completed,'local_branch':branch,'requirements':list(range(1,9))} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/implementation/package_reader_v1.py.txt b/research/h25-c05-at-random-producer-events/archive/unit13/implementation/package_reader_v1.py.txt new file mode 100644 index 0000000000..35740bc996 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/implementation/package_reader_v1.py.txt @@ -0,0 +1,92 @@ +"""Bounded package-local reader for NEW Unit13 static DATA only. + +Only literal inputs/input-NNN.data members are read. No arbitrary manifest-path +fallback, original module imports/execution, native observations or admission. +""" +from __future__ import annotations +import os +import stat +import sys +from at_random_producer_v1 import SOURCE_PINS,FILE_CAP,TOTAL_CAP,FormatError,authenticate_sources,make_witness,check_witness + +ATTEMPTS=[] + + +class ReaderState: + def __init__(self): + self.first=None;self.cleanup=[];self.fds=[];self.records=[];self.total=0;self.calls=0;self.pending=False + def fail(self,error): + if self.first is None:self.first=error + elif error is not self.first:self.cleanup.append(error) + return self.first + def slot(self):self.fds.append(None);return len(self.fds)-1 + def close(self,index): + fd=self.fds[index];self.fds[index]=None + if fd is not None: + try:os.close(fd) + except BaseException as error:self.fail(error) + + +def require(condition,code): + if condition is not True:raise FormatError(code) + + +def metadata(info): + return (info.st_dev,info.st_ino,info.st_mode,info.st_nlink,info.st_size,info.st_mtime_ns,info.st_ctime_ns) + + +def read_package(directory): + """Read authenticated fixed corpus; state survives all read/cleanup failures.""" + state=ReaderState();ATTEMPTS.append(state);result=None + try: + require(type(directory) is str and directory.startswith('/') and len(directory)<=4096 and directory.isascii(),'package_absolute_path') + parts=directory.split('/')[1:] + require(len(parts)<=64 and all(part not in ('','.','..') for part in parts),'package_path_spelling') + root=state.slot();state.pending=True + state.fds[root]=os.open(directory,os.O_RDONLY|os.O_DIRECTORY|os.O_NOFOLLOW|os.O_CLOEXEC);state.pending=False + inputs=state.slot();state.pending=True + state.fds[inputs]=os.open('inputs',os.O_RDONLY|os.O_DIRECTORY|os.O_NOFOLLOW|os.O_CLOEXEC,dir_fd=state.fds[root]);state.pending=False + before_root=metadata(os.fstat(state.fds[root]));before_inputs=metadata(os.fstat(state.fds[inputs]));bundle={} + for role,(identifier,size,digest) in SOURCE_PINS.items(): + name='input-%03d.data'%identifier + record={'role':role,'member':name,'chunks':[],'raw':None,'calls':0,'metadata':None};state.records.append(record) + index=state.slot();state.pending=True + state.fds[index]=os.open(name,os.O_RDONLY|os.O_NONBLOCK|os.O_NOFOLLOW|os.O_CLOEXEC,dir_fd=state.fds[inputs]);state.pending=False + try: + before=os.fstat(state.fds[index]);record['metadata']=metadata(before) + require(stat.S_ISREG(before.st_mode) and before.st_nlink==1 and before.st_size==size and size<=FILE_CAP,'package_member_kind_size') + count=0 + while countmm;" + }, + { + "line": 170, + "text": "\tunsigned long p = bprm->p;" + }, + { + "line": 171, + "text": "\tint argc = bprm->argc;" + }, + { + "line": 172, + "text": "\tint envc = bprm->envc;" + }, + { + "line": 173, + "text": "\telf_addr_t __user *sp;" + }, + { + "line": 174, + "text": "\telf_addr_t __user *u_platform;" + }, + { + "line": 175, + "text": "\telf_addr_t __user *u_base_platform;" + }, + { + "line": 176, + "text": "\telf_addr_t __user *u_rand_bytes;" + }, + { + "line": 177, + "text": "\tconst char *k_platform = ELF_PLATFORM;" + }, + { + "line": 178, + "text": "\tconst char *k_base_platform = ELF_BASE_PLATFORM;" + }, + { + "line": 179, + "text": "\tunsigned char k_rand_bytes[16];" + } + ] + }, + { + "first_line": 193, + "input_key": "producer", + "last_line": 208, + "literal_lines": [ + { + "line": 193, + "text": "\tp = arch_align_stack(p);" + }, + { + "line": 194, + "text": "" + }, + { + "line": 195, + "text": "\t/*" + }, + { + "line": 196, + "text": "\t * If this architecture has a platform capability string, copy it" + }, + { + "line": 197, + "text": "\t * to userspace. In some cases (Sparc), this info is impossible" + }, + { + "line": 198, + "text": "\t * for userspace to get any other way, in others (i386) it is" + }, + { + "line": 199, + "text": "\t * merely difficult." + }, + { + "line": 200, + "text": "\t */" + }, + { + "line": 201, + "text": "\tu_platform = NULL;" + }, + { + "line": 202, + "text": "\tif (k_platform) {" + }, + { + "line": 203, + "text": "\t\tsize_t len = strlen(k_platform) + 1;" + }, + { + "line": 204, + "text": "" + }, + { + "line": 205, + "text": "\t\tu_platform = (elf_addr_t __user *)STACK_ALLOC(p, len);" + }, + { + "line": 206, + "text": "\t\tif (copy_to_user(u_platform, k_platform, len))" + }, + { + "line": 207, + "text": "\t\t\treturn -EFAULT;" + }, + { + "line": 208, + "text": "\t}" + } + ] + }, + { + "first_line": 214, + "input_key": "producer", + "last_line": 230, + "literal_lines": [ + { + "line": 214, + "text": "\tu_base_platform = NULL;" + }, + { + "line": 215, + "text": "\tif (k_base_platform) {" + }, + { + "line": 216, + "text": "\t\tsize_t len = strlen(k_base_platform) + 1;" + }, + { + "line": 217, + "text": "" + }, + { + "line": 218, + "text": "\t\tu_base_platform = (elf_addr_t __user *)STACK_ALLOC(p, len);" + }, + { + "line": 219, + "text": "\t\tif (copy_to_user(u_base_platform, k_base_platform, len))" + }, + { + "line": 220, + "text": "\t\t\treturn -EFAULT;" + }, + { + "line": 221, + "text": "\t}" + }, + { + "line": 222, + "text": "" + }, + { + "line": 223, + "text": "\t/*" + }, + { + "line": 224, + "text": "\t * Generate 16 random bytes for userspace PRNG seeding." + }, + { + "line": 225, + "text": "\t */" + }, + { + "line": 226, + "text": "\tget_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));" + }, + { + "line": 227, + "text": "\tu_rand_bytes = (elf_addr_t __user *)" + }, + { + "line": 228, + "text": "\t\t STACK_ALLOC(p, sizeof(k_rand_bytes));" + }, + { + "line": 229, + "text": "\tif (copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))" + }, + { + "line": 230, + "text": "\t\treturn -EFAULT;" + } + ] + } + ], + "available_fact": "ifCONFIG_STACK_GROWSUPundefined,STACK_ALLOC(p,len) is(p-=len); p startsbprm->p,thenarchalign/platform/baseplatformallocationsprecede16Bseedallocation", + "id": "stack_branch", + "scope_limit": "unsigned arithmetic modeled modulo64 underconditionalABI; no nonwrap/range/freshness/ownership/disjointness/actualstackspanproof" + }, + { + "anchors": [ + { + "first_line": 177, + "input_key": "producer", + "last_line": 179, + "literal_lines": [ + { + "line": 177, + "text": "\tconst char *k_platform = ELF_PLATFORM;" + }, + { + "line": 178, + "text": "\tconst char *k_base_platform = ELF_BASE_PLATFORM;" + }, + { + "line": 179, + "text": "\tunsigned char k_rand_bytes[16];" + } + ] + }, + { + "first_line": 223, + "input_key": "producer", + "last_line": 226, + "literal_lines": [ + { + "line": 223, + "text": "\t/*" + }, + { + "line": 224, + "text": "\t * Generate 16 random bytes for userspace PRNG seeding." + }, + { + "line": 225, + "text": "\t */" + }, + { + "line": 226, + "text": "\tget_random_bytes(k_rand_bytes, sizeof(k_rand_bytes));" + } + ] + }, + { + "first_line": 418, + "input_key": "rng_provider", + "last_line": 433, + "literal_lines": [ + { + "line": 418, + "text": "\tchacha_zeroize_state(&chacha_state);" + }, + { + "line": 419, + "text": "}" + }, + { + "line": 420, + "text": "" + }, + { + "line": 421, + "text": "/*" + }, + { + "line": 422, + "text": " * This returns random bytes in arbitrary quantities. The quality of the" + }, + { + "line": 423, + "text": " * random bytes is as good as /dev/urandom. In order to ensure that the" + }, + { + "line": 424, + "text": " * randomness provided by this function is okay, the function" + }, + { + "line": 425, + "text": " * wait_for_random_bytes() should be called and return 0 at least once" + }, + { + "line": 426, + "text": " * at any point prior." + }, + { + "line": 427, + "text": " */" + }, + { + "line": 428, + "text": "void get_random_bytes(void *buf, size_t len)" + }, + { + "line": 429, + "text": "{" + }, + { + "line": 430, + "text": "\t_get_random_bytes(buf, len);" + }, + { + "line": 431, + "text": "}" + }, + { + "line": 432, + "text": "EXPORT_SYMBOL(get_random_bytes);" + }, + { + "line": 433, + "text": "" + } + ] + } + ], + "available_fact": "namedget_random_bytes receiveslocal k_rand_bytes andsizeofarray; retainedproviderwrappercalls_get_random_bytes", + "id": "G", + "primitive_boundary": "genuinekernelRNGinterface normaldeliveryunderapplicableoriginalOSintegrity; noalgorithm/entropyqualityprooforactualinvocationfabricated" + }, + { + "anchors": [ + { + "first_line": 227, + "input_key": "producer", + "last_line": 230, + "literal_lines": [ + { + "line": 227, + "text": "\tu_rand_bytes = (elf_addr_t __user *)" + }, + { + "line": 228, + "text": "\t\t STACK_ALLOC(p, sizeof(k_rand_bytes));" + }, + { + "line": 229, + "text": "\tif (copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes)))" + }, + { + "line": 230, + "text": "\t\treturn -EFAULT;" + } + ] + } + ], + "available_fact": "samek_rand_bytes object/same16Bsizeof passedtocopy_to_user withu_rand_bytesdestination;nonzeroreturnimmediatelyreturns-EFAULTbeforeK", + "id": "C", + "primitive_boundary": "genuinekernelcopyinterface logicaltransfer/residual semantics scopedtoactualarguments; noatomic/currentmemory/persistent equality;partialwritesremainpartialevents" + }, + { + "anchors": [ + { + "first_line": 232, + "input_key": "producer", + "last_line": 239, + "literal_lines": [ + { + "line": 232, + "text": "\t/* Create the ELF interpreter info */" + }, + { + "line": 233, + "text": "\telf_info = (elf_addr_t *)mm->saved_auxv;" + }, + { + "line": 234, + "text": "\t/* update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes */" + }, + { + "line": 235, + "text": "#define NEW_AUX_ENT(id, val) \\" + }, + { + "line": 236, + "text": "\tdo { \\" + }, + { + "line": 237, + "text": "\t\t*elf_info++ = id; \\" + }, + { + "line": 238, + "text": "\t\t*elf_info++ = val; \\" + }, + { + "line": 239, + "text": "\t} while (0)" + } + ] + }, + { + "first_line": 265, + "input_key": "producer", + "last_line": 266, + "literal_lines": [ + { + "line": 265, + "text": "\tNEW_AUX_ENT(AT_SECURE, bprm->secureexec);" + }, + { + "line": 266, + "text": "\tNEW_AUX_ENT(AT_RANDOM, (elf_addr_t)(unsigned long)u_rand_bytes);" + } + ] + } + ], + "available_fact": "ifcontrolreaches,macrostorepairwritesAT_RANDOMand(elf_addr_t)(unsignedlong)u_rand_bytes intokernelsaved_auxvsequence", + "id": "K", + "scope_limit": "numericconversionconditionalonapplicablenativeABI; norealownedpointer/range/tablecompletion/handoffclaim" + }, + { + "anchors": [ + { + "first_line": 293, + "input_key": "producer", + "last_line": 312, + "literal_lines": [ + { + "line": 293, + "text": "\t/* AT_NULL is zero; clear the rest too */" + }, + { + "line": 294, + "text": "\tmemset(elf_info, 0, (char *)mm->saved_auxv +" + }, + { + "line": 295, + "text": "\t\t\tsizeof(mm->saved_auxv) - (char *)elf_info);" + }, + { + "line": 296, + "text": "" + }, + { + "line": 297, + "text": "\t/* And advance past the AT_NULL entry. */" + }, + { + "line": 298, + "text": "\telf_info += 2;" + }, + { + "line": 299, + "text": "" + }, + { + "line": 300, + "text": "\tei_index = elf_info - (elf_addr_t *)mm->saved_auxv;" + }, + { + "line": 301, + "text": "\tsp = STACK_ADD(p, ei_index);" + }, + { + "line": 302, + "text": "" + }, + { + "line": 303, + "text": "\titems = (argc + 1) + (envc + 1) + 1;" + }, + { + "line": 304, + "text": "\tbprm->p = STACK_ROUND(sp, items);" + }, + { + "line": 305, + "text": "" + }, + { + "line": 306, + "text": "\t/* Point sp at the lowest address on the stack */" + }, + { + "line": 307, + "text": "#ifdef CONFIG_STACK_GROWSUP" + }, + { + "line": 308, + "text": "\tsp = (elf_addr_t __user *)bprm->p - items - ei_index;" + }, + { + "line": 309, + "text": "\tbprm->exec = (unsigned long)sp; /* XXX: PARISC HACK */" + }, + { + "line": 310, + "text": "#else" + }, + { + "line": 311, + "text": "\tsp = (elf_addr_t __user *)bprm->p;" + }, + { + "line": 312, + "text": "#endif" + } + ] + }, + { + "first_line": 319, + "input_key": "producer", + "last_line": 328, + "literal_lines": [ + { + "line": 319, + "text": "\tif (mmap_write_lock_killable(mm))" + }, + { + "line": 320, + "text": "\t\treturn -EINTR;" + }, + { + "line": 321, + "text": "\tvma = find_extend_vma_locked(mm, bprm->p);" + }, + { + "line": 322, + "text": "\tmmap_write_unlock(mm);" + }, + { + "line": 323, + "text": "\tif (!vma)" + }, + { + "line": 324, + "text": "\t\treturn -EFAULT;" + }, + { + "line": 325, + "text": "" + }, + { + "line": 326, + "text": "\t/* Now, let's put argc (and argv, envp if appropriate) on the stack */" + }, + { + "line": 327, + "text": "\tif (put_user(argc, sp++))" + }, + { + "line": 328, + "text": "\t\treturn -EFAULT;" + } + ] + }, + { + "first_line": 345, + "input_key": "producer", + "last_line": 363, + "literal_lines": [ + { + "line": 345, + "text": "\t/* Populate list of envp pointers back to envp strings. */" + }, + { + "line": 346, + "text": "\tmm->env_end = mm->env_start = p;" + }, + { + "line": 347, + "text": "\twhile (envc-- > 0) {" + }, + { + "line": 348, + "text": "\t\tsize_t len;" + }, + { + "line": 349, + "text": "\t\tif (put_user((elf_addr_t)p, sp++))" + }, + { + "line": 350, + "text": "\t\t\treturn -EFAULT;" + }, + { + "line": 351, + "text": "\t\tlen = strnlen_user((void __user *)p, MAX_ARG_STRLEN);" + }, + { + "line": 352, + "text": "\t\tif (!len || len > MAX_ARG_STRLEN)" + }, + { + "line": 353, + "text": "\t\t\treturn -EINVAL;" + }, + { + "line": 354, + "text": "\t\tp += len;" + }, + { + "line": 355, + "text": "\t}" + }, + { + "line": 356, + "text": "\tif (put_user(0, sp++))" + }, + { + "line": 357, + "text": "\t\treturn -EFAULT;" + }, + { + "line": 358, + "text": "\tmm->env_end = p;" + }, + { + "line": 359, + "text": "" + }, + { + "line": 360, + "text": "\t/* Put the elf_info on the stack in the right place. */" + }, + { + "line": 361, + "text": "\tif (copy_to_user(sp, mm->saved_auxv, ei_index * sizeof(elf_addr_t)))" + }, + { + "line": 362, + "text": "\t\treturn -EFAULT;" + }, + { + "line": 363, + "text": "\treturn 0;" + } + ] + } + ], + "available_fact": "latercopy_to_userrequests saved_auxv sequence tosp with ei_index*sizeof(elf_addr_t); ownresidualreturns-EFAULT ornormal0", + "id": "U", + "scope_limit": "earlierG/C/KeventsdonotimplyUoccurred/completed;laterfailuresdonoterasepast events;no finaltable/seedmemorysnapshot" + }, + { + "anchors": [ + { + "first_line": 1293, + "input_key": "producer", + "last_line": 1302, + "literal_lines": [ + { + "line": 1293, + "text": "\tif (retval < 0)" + }, + { + "line": 1294, + "text": "\t\tgoto out;" + }, + { + "line": 1295, + "text": "#endif /* ARCH_HAS_SETUP_ADDITIONAL_PAGES */" + }, + { + "line": 1296, + "text": "" + }, + { + "line": 1297, + "text": "\tretval = create_elf_tables(bprm, elf_ex, interp_load_addr," + }, + { + "line": 1298, + "text": "\t\t\t\t e_entry, phdr_addr);" + }, + { + "line": 1299, + "text": "\tif (retval < 0)" + }, + { + "line": 1300, + "text": "\t\tgoto out;" + }, + { + "line": 1301, + "text": "" + }, + { + "line": 1302, + "text": "\tmm = current->mm;" + } + ] + }, + { + "first_line": 1700, + "input_key": "exec_after_ELF", + "last_line": 1744, + "literal_lines": [ + { + "line": 1700, + "text": "" + }, + { + "line": 1701, + "text": "/* binfmt handlers will call back into begin_new_exec() on success. */" + }, + { + "line": 1702, + "text": "static int exec_binprm(struct linux_binprm *bprm)" + }, + { + "line": 1703, + "text": "{" + }, + { + "line": 1704, + "text": "\tpid_t old_pid, old_vpid;" + }, + { + "line": 1705, + "text": "\tint ret, depth;" + }, + { + "line": 1706, + "text": "" + }, + { + "line": 1707, + "text": "\t/* Need to fetch pid before load_binary changes it */" + }, + { + "line": 1708, + "text": "\told_pid = current->pid;" + }, + { + "line": 1709, + "text": "\trcu_read_lock();" + }, + { + "line": 1710, + "text": "\told_vpid = task_pid_nr_ns(current, task_active_pid_ns(current->parent));" + }, + { + "line": 1711, + "text": "\trcu_read_unlock();" + }, + { + "line": 1712, + "text": "" + }, + { + "line": 1713, + "text": "\t/* This allows 4 levels of binfmt rewrites before failing hard. */" + }, + { + "line": 1714, + "text": "\tfor (depth = 0;; depth++) {" + }, + { + "line": 1715, + "text": "\t\tstruct file *exec;" + }, + { + "line": 1716, + "text": "\t\tif (depth > 5)" + }, + { + "line": 1717, + "text": "\t\t\treturn -ELOOP;" + }, + { + "line": 1718, + "text": "" + }, + { + "line": 1719, + "text": "\t\tret = search_binary_handler(bprm);" + }, + { + "line": 1720, + "text": "\t\tif (ret < 0)" + }, + { + "line": 1721, + "text": "\t\t\treturn ret;" + }, + { + "line": 1722, + "text": "\t\tif (!bprm->interpreter)" + }, + { + "line": 1723, + "text": "\t\t\tbreak;" + }, + { + "line": 1724, + "text": "" + }, + { + "line": 1725, + "text": "\t\texec = bprm->file;" + }, + { + "line": 1726, + "text": "\t\tbprm->file = bprm->interpreter;" + }, + { + "line": 1727, + "text": "\t\tbprm->interpreter = NULL;" + }, + { + "line": 1728, + "text": "" + }, + { + "line": 1729, + "text": "\t\texe_file_allow_write_access(exec);" + }, + { + "line": 1730, + "text": "\t\tif (unlikely(bprm->have_execfd)) {" + }, + { + "line": 1731, + "text": "\t\t\tif (bprm->executable) {" + }, + { + "line": 1732, + "text": "\t\t\t\tfput(exec);" + }, + { + "line": 1733, + "text": "\t\t\t\treturn -ENOEXEC;" + }, + { + "line": 1734, + "text": "\t\t\t}" + }, + { + "line": 1735, + "text": "\t\t\tbprm->executable = exec;" + }, + { + "line": 1736, + "text": "\t\t} else" + }, + { + "line": 1737, + "text": "\t\t\tfput(exec);" + }, + { + "line": 1738, + "text": "\t}" + }, + { + "line": 1739, + "text": "" + }, + { + "line": 1740, + "text": "\taudit_bprm(bprm);" + }, + { + "line": 1741, + "text": "\ttrace_sched_process_exec(current, old_pid, bprm);" + }, + { + "line": 1742, + "text": "\tptrace_event(PTRACE_EVENT_EXEC, old_vpid);" + }, + { + "line": 1743, + "text": "\tproc_exec_connector(current);" + }, + { + "line": 1744, + "text": "\treturn 0;" + } + ] + } + ], + "available_fact": "laterELF/execoperationsandtrace_sched_process_exec/ptrace_eventfollowhandlersuccess", + "id": "post_constructor_boundary", + "scope_limit": "no-writer/no-tracerleaseunderOSintegrityaloneunproved;Pro14handoffmemoryequalityNOTadopted" + }, + { + "anchors": [ + { + "first_line": 1, + "input_key": "native_tcb_original", + "last_line": 8, + "literal_lines": [ + { + "line": 1, + "text": "\"\"\"Initial native TCB corroboration, before other driver imports or native builds." + }, + { + "line": 2, + "text": "" + }, + { + "line": 3, + "text": "No imports. The parent authenticates this source and the expected native closure" + }, + { + "line": 4, + "text": "before launch, then calls after its captured sealed root guard. Native hashing," + }, + { + "line": 5, + "text": "POSIX, OS/loader integrity and the closed bootstrap interval are explicit trust" + }, + { + "line": 6, + "text": "premises, not established by this check. The existing217file probe audit remains" + }, + { + "line": 7, + "text": "separate. This receipt is never a scientific verdict or reusable private-ABI PASS." + }, + { + "line": 8, + "text": "\"\"\"" + } + ] + }, + { + "first_line": 106, + "input_key": "native_tcb_original", + "last_line": 108, + "literal_lines": [ + { + "line": 106, + "text": " inode = int(inode_text, 10)" + }, + { + "line": 107, + "text": " if inode == 0:" + }, + { + "line": 108, + "text": " continue # anonymous/kernel executable mappings belong to explicit OS TCB" + } + ] + } + ], + "available_fact": "originalnativeTCBexpresslypresupposesnativehashing/POSIX/OSloaderintegrityandclosedbootstrap;inodezeromappingsplacedinOSTCB; noreusableprivateABIpass", + "id": "existing_primitive_premise", + "scope_limit": "specificapplicability/owner/arguments/intervalneedreview; notperpetualintegrity/unknownpayloadadmission" + } + ], + "source_input_owner_claims_P1_release": false, + "unit": "13" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/input/SOURCE-AVAILABILITY-v1.md b/research/h25-c05-at-random-producer-events/archive/unit13/input/SOURCE-AVAILABILITY-v1.md new file mode 100644 index 0000000000..fec87990d5 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/input/SOURCE-AVAILABILITY-v1.md @@ -0,0 +1,7 @@ +Unit13 input packet is ready for independent P1 review. Only the expressly allowed definition header include/linux/elf.h was acquired, from exact Ubuntu commit88cb661f6b53f472167d39a72241b5396e34ab2a:3037B, SHA256ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e. All other source, configuration, primitive-premise and license inputs are read-only references with exact hashes in the JSON. No additional source or kernel implementation body was acquired. + +The literal native alias chain is ELF_CLASS=ELFCLASS64=2, then elf_addr_t=Elf64_Off, then typedef__u64. Standard native LP64,8-bit C byte and64-bit pointer/unsigned-long/__u64 interface semantics remain explicit conditional ABI premises; missing type headers are not newly proved by these aliases. The config has64BIT/X86_64/BINFMT_ELF=y; it contains no STACK_GROWSUP orX86_32 line. The index distinguishes literal config absence from a new generated-header or running-binary proof. The downward STACK_ALLOC branch is p-=len, modeled as unsigned arithmetic; no nonwrap/freshness/range/owned-span property is silently added. + +G/C/K/U anchors are catalogued separately. G passes the local16-byte array to the named RNG; C requests the same buffer/length transfer and aborts on nonzero residual before K; K writes tag25 and the numeric destination to saved_auxv; U is a later separate saved_auxv transfer with its own failure. Original named OS-provider premises may supply only their reviewed applicable semantics. No seed bytes, actual invocation, approval flag, atomic memory snapshot, completed table, final memory equality or handoff equality is supplied by this input packet. + +The later exec trace/ptrace boundary is retained as a warning against treating source-level producer events as a no-writer lease. Independent P1 release belongs to the parent/reviewer. This owner authored no implementation, ran no tests and made no P2 claim. Closed Units01–12 remain unchanged. FullC05/fullV03false; originalscore/denominators/caps/activitycredit unchanged; costsOPEN_NOT_ZERO. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/ARGUMENT-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/review/ARGUMENT-v1.json new file mode 100644 index 0000000000..37e641bff3 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/ARGUMENT-v1.json @@ -0,0 +1,116 @@ +{ + "argument_checks": [ + { + "basis": "Proposition quantifies over actual execution prefixes independently of the witness, including failure/interruption; it is not a trace universe filtered by desired K conclusions.", + "id": "A01", + "result": "ACCEPT" + }, + { + "basis": "Specific normal-return RNG/copy and native Linux/GNU flat-address/local-source semantics are exposed as original applicable provider/ABI boundaries, not source flags proving actual binding or a recursive kernel correctness proof.", + "id": "A02", + "result": "ACCEPT_CONDITIONAL" + }, + { + "basis": "G179/226 and C227\u2013230 have same live local array identity and16-byte sizeof request; source destination def-use is explicit. Cnonzero returns immediately before K/U; no exact partial-prefix write order is inferred.", + "id": "A03", + "result": "ACCEPT" + }, + { + "basis": "Downward allocation is d=(q-16)mod2^64 under the selected branch and declared ABI. It asserts no q>=16, canonicality, valid mapping, ownership or no-wrap; those are separate unestablished corollary premises.", + "id": "A04", + "result": "ACCEPT_CONDITIONAL" + }, + { + "basis": "K235\u2013239/266 is two ordered stores of tag25 and numeric destination, using exact Elf64_Off/__u64 alias and explicit conversion semantics. Prefix can stop between stores; completeK requires both, without atomicity or pointee memory equality.", + "id": "A05", + "result": "ACCEPT_CONDITIONAL" + }, + { + "basis": "U361 is a distinct later request fromsaved_auxv tosp with source expression ei_index*sizeof(elf_addr_t); it has its own residual failure. No guessed whole-auxv size, table success or handoff follows.", + "id": "A06", + "result": "ACCEPT" + }, + { + "basis": "Earlier platform failures can preventG; afterK, lock/VMA/argc/argv/env failures can preventU. Later failures preserve earlier events. Localreturn0 is separated from laterELF/exec trace/ptrace and userspace handoff.", + "id": "A07", + "result": "ACCEPT" + }, + { + "basis": "Witness/prefix-model discussion is explicitly static argument and proposed control, no actual future transcript, seed, address, admission, persistent memory, source coverage or physical fit. Implementation/model correctness is not yet reviewed.", + "id": "A08", + "result": "ACCEPT_SCOPE_ONLY" + } + ], + "bound_evidence": { + "author_final_input_claim": { + "bytes": 1904, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/INPUT-CLAIM-v2.md", + "sha256": "ff173cbb7d1274921baf6f40d8021ba57e742f08db1fe8c595834998e1a732ae" + }, + "independent_P1": { + "bytes": 6803, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.json", + "sha256": "ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3" + }, + "literal_source_pins": { + "bytes": 7184, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/SOURCE-PINS-v1.json", + "sha256": "11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211" + }, + "parent_clarification": { + "bytes": 1599, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/CLAIM-CLARIFICATION-v1.json", + "sha256": "81ca27af56222d00cb73507734743d909ad63512df0ba8e825ab16cdbddae7c2" + }, + "proof": { + "bytes": 8225, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md", + "sha256": "598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a" + } + }, + "checkpoint_status": { + "Unit13_P1": true, + "Unit13_P2_argument": true, + "Unit13_P3_code_controls": false, + "Unit13_P4_final_acceptance": false, + "original_activity_credit_added": 0, + "root_alone_records_clock": true + }, + "conditional_boundary_not_discharge": "The argument is sufficient at this source/premise level. Future actual provider/subject/nativeABI/selectedbranch/mapping/stack/namespace/descriptor/lifetime facts and all original admission/source/resource/control obligations remain unestablished. The current proof does not prove saved_auxv capacity or whole-kernel memory safety; it explicitly relies on applicable well-defined genuine kernel-source semantics for reached local operations, as a scoped original OS boundary rather than arbitrary private GCC behavior.", + "costs": "OPEN_NOT_ZERO", + "disposition": "PASS_P2_PRECISE_CONDITIONAL_SOURCE_ARGUMENT_ONLY", + "full_C05": false, + "full_V03": false, + "new_scientific_budget": false, + "old_units_01_12_reopened": false, + "operations": { + "native_compiler_namespace_policy_target_operations": 0, + "new_source_acquisition": 0, + "original_kernel_execution": 0, + "protected_runtime_reads": 0, + "source_read_hash_text_only": true, + "tests": 0, + "writes_only": "unit13/review/" + }, + "original_completion_percent": 43.5, + "remaining_P3_P4_requirements": [ + "Review complete initial checker/witness bytes and isolation before accepting code.", + "Validate exact types, source authentication, canonical duplicate-free bounded JSON and deterministic relation checking; no actual-instance or memory lease flag.", + "Independent semantic fixtures must exercise relations beyond hash refusal, including K interruption, failure prefixes, source/provider/length/pointer changes and modular wrap.", + "Read actual new-only normal/optimized logs and preserved failures; no redundant suite reruns absent a concrete concern." + ], + "reviewed_utc": "2026-11-02T17:56:43.525921+00:00", + "runtime_admission": false, + "same_read_snapshots_preserved": [ + "review/snapshots/PROOF-v1.md.598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a.txt", + "review/snapshots/SOURCE-PINS-v1.json.11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211.txt" + ], + "schema": "h25-unit13-independent-argument-review-v1", + "source_pins_check": { + "all_bytes_sizes_hashes_independently_match": true, + "ids_exact_unique_1_to24": true, + "input_manifest_sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc", + "literal_roles": 24 + }, + "strongest_accepted_claim": "Under explicitly applicable original genuine kernel RNG/copy/OS-local-source and selected nativeABI semantics, each reached G/C/K/U event has the stated per-invocation source/argument/completion relation, with modular computed destination, two non-atomic K phases and correctly scoped partial/failure/interrupted prefixes. No current/final memory equality, successful handoff, valid-owned span, actual instance or complete compiler/K input coverage is proved." +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/ARGUMENT-v1.md b/research/h25-c05-at-random-producer-events/archive/unit13/review/ARGUMENT-v1.md new file mode 100644 index 0000000000..f3fbf8c5e6 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/ARGUMENT-v1.md @@ -0,0 +1,37 @@ +# Unit13 independent P2 argument review + +Frozen at 2026-11-02T17:56:43.525921+00:00. **PASS P2 for the precise conditional source argument only. P3 code/controls and P4 final acceptance remain open.** + +Proof-v1.md is8225B SHA256598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a. Its raw same-read bytes and literal source-pin record were preserved under review/snapshots before this disposition; all24 current literal pins match independently. + +Under explicitly applicable original genuine kernel RNG/copy/OS-local-source and selected nativeABI semantics, each reached G/C/K/U event has the stated per-invocation source/argument/completion relation, with modular computed destination, two non-atomic K phases and correctly scoped partial/failure/interrupted prefixes. No current/final memory equality, successful handoff, valid-owned span, actual instance or complete compiler/K input coverage is proved. + +## Argument checks + +- **A01 ACCEPT:** Proposition quantifies over actual execution prefixes independently of the witness, including failure/interruption; it is not a trace universe filtered by desired K conclusions. +- **A02 ACCEPT_CONDITIONAL:** Specific normal-return RNG/copy and native Linux/GNU flat-address/local-source semantics are exposed as original applicable provider/ABI boundaries, not source flags proving actual binding or a recursive kernel correctness proof. +- **A03 ACCEPT:** G179/226 and C227–230 have same live local array identity and16-byte sizeof request; source destination def-use is explicit. Cnonzero returns immediately before K/U; no exact partial-prefix write order is inferred. +- **A04 ACCEPT_CONDITIONAL:** Downward allocation is d=(q-16)mod2^64 under the selected branch and declared ABI. It asserts no q>=16, canonicality, valid mapping, ownership or no-wrap; those are separate unestablished corollary premises. +- **A05 ACCEPT_CONDITIONAL:** K235–239/266 is two ordered stores of tag25 and numeric destination, using exact Elf64_Off/__u64 alias and explicit conversion semantics. Prefix can stop between stores; completeK requires both, without atomicity or pointee memory equality. +- **A06 ACCEPT:** U361 is a distinct later request fromsaved_auxv tosp with source expression ei_index*sizeof(elf_addr_t); it has its own residual failure. No guessed whole-auxv size, table success or handoff follows. +- **A07 ACCEPT:** Earlier platform failures can preventG; afterK, lock/VMA/argc/argv/env failures can preventU. Later failures preserve earlier events. Localreturn0 is separated from laterELF/exec trace/ptrace and userspace handoff. +- **A08 ACCEPT_SCOPE_ONLY:** Witness/prefix-model discussion is explicitly static argument and proposed control, no actual future transcript, seed, address, admission, persistent memory, source coverage or physical fit. Implementation/model correctness is not yet reviewed. + +The argument is sufficient at this source/premise level. Future actual provider/subject/nativeABI/selectedbranch/mapping/stack/namespace/descriptor/lifetime facts and all original admission/source/resource/control obligations remain unestablished. The current proof does not prove saved_auxv capacity or whole-kernel memory safety; it explicitly relies on applicable well-defined genuine kernel-source semantics for reached local operations, as a scoped original OS boundary rather than arbitrary private GCC behavior. + +## Remaining implementation gate + +- Review complete initial checker/witness bytes and isolation before accepting code. +- Validate exact types, source authentication, canonical duplicate-free bounded JSON and deterministic relation checking; no actual-instance or memory lease flag. +- Independent semantic fixtures must exercise relations beyond hash refusal, including K interruption, failure prefixes, source/provider/length/pointer changes and modular wrap. +- Read actual new-only normal/optimized logs and preserved failures; no redundant suite reruns absent a concrete concern. + +This is an explicitly smaller Unit13 prerequisite and no retroactive completion of Unit12 or original C05/V03. Parent alone records local milestones/clocks. No originals/kernel code or tests were executed, no source acquired, and no native/compiler/namespace/policy/target/protected-runtime operation occurred. All old source units stay closed; original43.5%, zero new original credit, OPEN_NOT_ZERO. + +## Pins + +- `proof`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md`; 8225B; SHA256 `598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a`. +- `literal_source_pins`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/SOURCE-PINS-v1.json`; 7184B; SHA256 `11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211`. +- `independent_P1`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.json`; 6803B; SHA256 `ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3`. +- `parent_clarification`: `outputs/c05-v03-completion-20261102T055710Z/unit13/CLAIM-CLARIFICATION-v1.json`; 1599B; SHA256 `81ca27af56222d00cb73507734743d909ad63512df0ba8e825ab16cdbddae7c2`. +- `author_final_input_claim`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/INPUT-CLAIM-v2.md`; 1904B; SHA256 `ff173cbb7d1274921baf6f40d8021ba57e742f08db1fe8c595834998e1a732ae`. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/FINAL-SOURCE-GATE-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/review/FINAL-SOURCE-GATE-v1.json new file mode 100644 index 0000000000..08dc2a1411 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/FINAL-SOURCE-GATE-v1.json @@ -0,0 +1,207 @@ +{ + "P4_distinct_reader_verification": { + "all_24_literal_sizes_hashes_independently_match_original_source_pins": true, + "before_after_inventory_JSON_independently_equal": true, + "both_returncodes": [ + 0, + 0 + ], + "both_stderr_bytes": [ + 0, + 0 + ], + "both_stdout_exact_frozen_witness": true, + "current_packet_regular_singlelink_0444_files": 30, + "fresh_bytecode_prefixes_still_absent": true, + "git_free_packet": true, + "input_bytes": 710966, + "input_count": 24, + "no_40_case_semantic_suite_repeat": true, + "no_readonly_mount_claim": true, + "raw_output_bytes_and_hashes_independently_rechecked": true, + "reader_pair_is_distinct_from_semantic_pair": true, + "receipt_sha256": "141d551a509609b17bcf5ed24ac559e37cfbf2dd0e9857aae22af31885b37044", + "recorded_argv_cwd_exit_raw_and_timing_read": true + }, + "accepted_component": "Exact-source AT_RANDOM G/C/K/U producer-event argument, bounded integer-only static witness/checker, independent semantic controls and standalone fixed-input reader/export recipe. Explicitly smaller than Pro14 handoff memory theorem.", + "accepted_semantics_and_nonimplications": [ + "Applicable original genuine OS/loader/RNG/copy and selected native Linux/GNU flat-address semantics are explicit conditional boundaries, not newly observed integrity/ABI facts. Kernel internals are not recursively reproved for the named interface origin claim.", + "G/C same16-byte source/argument relation, modular computed destination, two ordered non-atomic K stores, separate U transfer and failed/partial/interrupted prefix behavior are the accepted result.", + "No copied-memory snapshot or persistent/handoff equality, valid-owned/nonwrapping stack span, exact whole-table byte count or current actual exec/provider/stack/namespace/descriptor/policy lifetime is established.", + "Witness/source pins and semantic MODEL projections supply no original C05 input closure, enforcement, C07 lifetime, current original admissions/funding, intact baseline or full named V03 control execution.", + "The authorized self-contained24-input export retains necessary task-generated Pro/source/review data and provenance; concrete payload classification belongs to parent/publisher. Earlier blanket private-free assertion is not a source/pin requirement." + ], + "all_old_units_01_12_remain_closed": true, + "costs": "OPEN_NOT_ZERO", + "disposition": "PASS_P4_AND_COMPLETE_UNIT13_CONDITIONAL_PRODUCER_EVENT_SOURCE_COMPONENT_ONLY", + "final_source_identity": { + "core_sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0", + "proof_sha256": "598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a", + "reader_sha256": "98cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf", + "schema_sha256": "9792c3bfd16de628f6969560c8ac4263342c5be308f346073c501b5eaa3fa935", + "sole_repair_preserved_initial_sources_and_static_rejection": true, + "source_changes_after_repaired_freeze_claimed": false, + "witness_bytes": 2617, + "witness_sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + }, + "full_C05": false, + "full_K": false, + "full_V03": false, + "native_policy_adopted": false, + "new_scientific_budget": false, + "original_activity_credit_added": 0, + "original_completion_percent": 43.5, + "original_denominators_caps_unchanged": true, + "pins": { + "P1": { + "bytes": 6803, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.json", + "sha256": "ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3" + }, + "P2": { + "bytes": 6698, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/ARGUMENT-v1.json", + "sha256": "1ac44449fe9ff331dd6933b09fe63e1f29acf3f09c197c23cf117290304d4092" + }, + "P3": { + "bytes": 11902, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v2.json", + "sha256": "88256aa611a3b965b02d1b89722ec3065986a9a4fb6004e22fdfeb7cd1699e93" + }, + "author_final_freeze": { + "bytes": 6706, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json", + "sha256": "2fe72430f0b3ff98d2fbf813c580d2fac2d7bd0b3bc1d32729fa9aa2df1f3045" + }, + "core": { + "bytes": 20088, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + }, + "distinct_reader_receipt": { + "bytes": 15457, + "path": "outputs/c05-v03-completion-20261102T055710Z/publication-at-random-events-v1/validation-reader-v1/RECEIPT-v1.json", + "sha256": "141d551a509609b17bcf5ed24ac559e37cfbf2dd0e9857aae22af31885b37044" + }, + "export_recipe": { + "bytes": 4022, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/COLD-EXPORT-v1.md", + "sha256": "28a8a75e5fcc84e75b7747309e1def72db22d62514c8ad7ec89c030ab86567a4" + }, + "independent_controls": { + "bytes": 21032, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/RESULTS-v1.json", + "sha256": "8c031791504efb5b76a65281e8ddea350b0dc42a27f71aaf8611b564fba608a9" + }, + "initial_rejection": { + "bytes": 5110, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v1.json", + "sha256": "85f634487dd2a4711aee399839855861ecedeb8d47bdabde641a8eb19d63c4a4" + }, + "package_validation_receipt": { + "bytes": 6958, + "path": "outputs/c05-v03-completion-20261102T055710Z/publication-at-random-events-v1/validation-package-v1/RECEIPT-v1.json", + "sha256": "481875dce76cf559be3a5cb1ef4c288962ba88b9fddfc146049bc139d5c2106c" + }, + "proof": { + "bytes": 8225, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md", + "sha256": "598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a" + }, + "publication_manifest": { + "bytes": 14289, + "path": "outputs/c05-v03-completion-20261102T055710Z/publication-at-random-events-v1/repo/research/h25-c05-at-random-producer-events/MANIFEST.json", + "sha256": "251ca0d850fa3c5539e707f46f47d4d09dae15ae2347dd4d348571487d9494b2" + }, + "publication_new_wrapper": { + "bytes": 2614, + "path": "outputs/c05-v03-completion-20261102T055710Z/publication-at-random-events-v1/repo/research/h25-c05-at-random-producer-events/verify.py", + "sha256": "a42022fc2f403e574e494000bfe79a8dde529355acb47652022409ab7268f1cc" + }, + "reader": { + "bytes": 4826, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v2.py", + "sha256": "98cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf" + }, + "schema": { + "bytes": 6189, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-SCHEMA-v1.md", + "sha256": "9792c3bfd16de628f6969560c8ac4263342c5be308f346073c501b5eaa3fa935" + }, + "witness": { + "bytes": 2617, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-v1.json", + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + } + }, + "publication_candidate_integrity_read": { + "actual_file_count": 74, + "actual_regular_file_membership_equals_manifest_plus_self": true, + "all24_source_inputs_are_exact_full_bytes_no_stubs_or_rebinding": true, + "all_declared_file_size_hashes_independently_rechecked": true, + "local_commit_and_committed_mode_preflight": "Not covered; receipt explicitly pending parent publication review/local commit.", + "manifest_sha256": "251ca0d850fa3c5539e707f46f47d4d09dae15ae2347dd4d348571487d9494b2", + "raw_bytes_including_manifest": 1072480, + "recorded_metadata_registered_normal_optimized_and_cold_wholepackage_commands": [ + { + "label": "metadata", + "returncode": 0, + "stderr_bytes": 0, + "stdout_bytes": 69, + "stdout_sha256": "5873404cb4424dca918a00d503569f3c29a3190fd029a007e1afb2006399f647" + }, + { + "label": "registered-normal-optimized", + "returncode": 0, + "stderr_bytes": 0, + "stdout_bytes": 1090, + "stdout_sha256": "4f4bf2dbcf5d4f18ea862edcac2c7896a4f1a086469e698d812974084c3fa8ab" + }, + { + "label": "cold-normal", + "returncode": 0, + "stderr_bytes": 0, + "stdout_bytes": 316, + "stdout_sha256": "58d0d7ceea6d993c9dcc7210bf20c8acc3aa60fac35a831663654aa25e9ec901" + }, + { + "label": "cold-optimized", + "returncode": 0, + "stderr_bytes": 0, + "stdout_bytes": 316, + "stdout_sha256": "58d0d7ceea6d993c9dcc7210bf20c8acc3aa60fac35a831663654aa25e9ec901" + } + ], + "remote_or_hosted_CI_status": "Not checked or claimed.", + "scope": "Source-readiness supporting evidence only; later publication crossreview/commit/remote/head-CI remain separate.", + "validation_raw_size_hashes_independently_rechecked": true, + "validation_receipt_sha256": "481875dce76cf559be3a5cb1ef4c288962ba88b9fddfc146049bc139d5c2106c", + "wrapper_inspected": "Checks membership/content and two fixed NEW module hashes, imports only new reader/core and compares actual canonical witness. It does not import archived original Python or execute kernel/target bodies.", + "wrapper_sha256": "a42022fc2f403e574e494000bfe79a8dde529355acb47652022409ab7268f1cc" + }, + "remaining_original_dependency_order": [ + "Independently sufficient complete relevant file/N/L/K channel and compiler input-origin witness argument, with actual selection fitting all original bounds/codecs/aliases.", + "Actual source/command/profile/native/current parent/C05/C07/receiver and funding approvals, plus required genuine instance/ownership/lifetime observations.", + "Separately authorized unchanged original normal/optimized activity, intact baseline and all named V03 controls with complete physical/failed/final-tail cost and custody accounting." + ], + "reviewed_utc": "2026-11-02T18:21:23.655470+00:00", + "reviewer_operations": { + "new_or_original_module_imports": 0, + "new_source_acquisition": 0, + "original_kernel_compiler_native_TCB_Popen_namespace_policy_scientific_or_process_operations": 0, + "protected_runtime_reads": 0, + "source_hash_text_JSON_and_finite_package_inventory_only": true, + "tests_repeated": 0, + "writes_only": "unit13/review/" + }, + "runtime_admission": false, + "schema": "h25-unit13-independent-final-source-gate-v1", + "source_gate_checkpoints": { + "P1_complete_inputs_for_narrow_conditional_claim": true, + "P2_precise_source_argument": true, + "P3_repaired_checker_witness_and_controls": true, + "P4_final_source_freeze_and_bounded_standalone_recipe": true, + "not_original_C05_or_V03_checkpoint_credit": true, + "parent_alone_records_unit_status_clock": true + } +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/FINAL-SOURCE-GATE-v1.md b/research/h25-c05-at-random-producer-events/archive/unit13/review/FINAL-SOURCE-GATE-v1.md new file mode 100644 index 0000000000..cc72f8b95e --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/FINAL-SOURCE-GATE-v1.md @@ -0,0 +1,46 @@ +# Unit13 final independent source gate + +Frozen at 2026-11-02T18:21:23.655470+00:00. **PASS P4. The explicitly conditional Unit13 producer-event source component is complete. Original C05/full V03 remain incomplete.** + +Accepted source: exact G/C/K/U AT_RANDOM provenance argument, repaired source-specific checker, bounded integer-only static witness, independent semantic controls, and the fixed-input standalone reader/export recipe. This is the deliberately smaller event prerequisite; the Pro14 handoff-memory theorem remains unclaimed. + +## Final evidence + +Final core20088B SHA25649023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0; reader4826B SHA25698cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf. Accepted proof/source pins and2617-byte witness remain unchanged. The rejected initial sources/static finding are retained; they were never executed. + +P3 independent normal/-O controls both returned0 and reproduced witness3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70. Those controls cover24 model cases,5 source semantic mutants,3 modular values,3 callback-safe type probes and5 stronger-claim refusals. No repeated semantic suite was needed. + +The separately authorized standalone-reader pair used a Git-free packet with24 exact literal inputs710966B. Both normal/-O runs returned0, each stdout was the same2617-byte witness and stderr was empty. I independently checked output hashes, equality of the30-file before/after inventory, current regular single-link0444 files and absent fresh bytecode prefixes. File modes are not a read-only mount claim. + +The supporting publication candidate contains74 files1072480B including manifest251ca0d850fa3c5539e707f46f47d4d09dae15ae2347dd4d348571487d9494b2. I independently checked every declared file size/hash and exact membership, and all24 raw input copies against literal source pins. Its wrapper imports only the frozen NEW reader/core; originals remain inert. Actual metadata/registered/cold whole-package validation commands and outputs are receipt-bound and all return0. Later publication crossreview, committed-byte/mode preflight, remote head and hosted CI are separate; no such result is claimed here. + +## Conditional scope + +- Applicable original genuine OS/loader/RNG/copy and selected native Linux/GNU flat-address semantics are explicit conditional boundaries, not newly observed integrity/ABI facts. Kernel internals are not recursively reproved for the named interface origin claim. +- G/C same16-byte source/argument relation, modular computed destination, two ordered non-atomic K stores, separate U transfer and failed/partial/interrupted prefix behavior are the accepted result. +- No copied-memory snapshot or persistent/handoff equality, valid-owned/nonwrapping stack span, exact whole-table byte count or current actual exec/provider/stack/namespace/descriptor/policy lifetime is established. +- Witness/source pins and semantic MODEL projections supply no original C05 input closure, enforcement, C07 lifetime, current original admissions/funding, intact baseline or full named V03 control execution. +- The authorized self-contained24-input export retains necessary task-generated Pro/source/review data and provenance; concrete payload classification belongs to parent/publisher. Earlier blanket private-free assertion is not a source/pin requirement. + +All Unit13 source checkpoints are accepted for this component only; parent records status/clocks. Unit01–12 remain closed, including Unit12 input STOP. Whole K/C05/full V03/runtime remain false. Original completion43.5%, zero additional original activity credit, all original caps/denominators unchanged and costs OPEN_NOT_ZERO. No current native/policy/runtime/scientific budget is created. + +No test or module was run by this reviewer. Review used passive source/hash/JSON analysis and a bounded package inventory; no new acquisition, original/kernel/native/compiler/Popen/namespace/policy/target/process operation or protected-runtime read occurred. + +## Bound records + +- `P1`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.json`; 6803B; SHA256 `ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3`. +- `P2`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/ARGUMENT-v1.json`; 6698B; SHA256 `1ac44449fe9ff331dd6933b09fe63e1f29acf3f09c197c23cf117290304d4092`. +- `initial_rejection`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v1.json`; 5110B; SHA256 `85f634487dd2a4711aee399839855861ecedeb8d47bdabde641a8eb19d63c4a4`. +- `P3`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v2.json`; 11902B; SHA256 `88256aa611a3b965b02d1b89722ec3065986a9a4fb6004e22fdfeb7cd1699e93`. +- `core`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py`; 20088B; SHA256 `49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0`. +- `reader`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v2.py`; 4826B; SHA256 `98cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf`. +- `proof`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md`; 8225B; SHA256 `598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a`. +- `witness`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-v1.json`; 2617B; SHA256 `3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70`. +- `schema`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-SCHEMA-v1.md`; 6189B; SHA256 `9792c3bfd16de628f6969560c8ac4263342c5be308f346073c501b5eaa3fa935`. +- `author_final_freeze`: `outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json`; 6706B; SHA256 `2fe72430f0b3ff98d2fbf813c580d2fac2d7bd0b3bc1d32729fa9aa2df1f3045`. +- `export_recipe`: `outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/COLD-EXPORT-v1.md`; 4022B; SHA256 `28a8a75e5fcc84e75b7747309e1def72db22d62514c8ad7ec89c030ab86567a4`. +- `independent_controls`: `outputs/c05-v03-completion-20261102T055710Z/unit13/controls/RESULTS-v1.json`; 21032B; SHA256 `8c031791504efb5b76a65281e8ddea350b0dc42a27f71aaf8611b564fba608a9`. +- `distinct_reader_receipt`: `outputs/c05-v03-completion-20261102T055710Z/publication-at-random-events-v1/validation-reader-v1/RECEIPT-v1.json`; 15457B; SHA256 `141d551a509609b17bcf5ed24ac559e37cfbf2dd0e9857aae22af31885b37044`. +- `package_validation_receipt`: `outputs/c05-v03-completion-20261102T055710Z/publication-at-random-events-v1/validation-package-v1/RECEIPT-v1.json`; 6958B; SHA256 `481875dce76cf559be3a5cb1ef4c288962ba88b9fddfc146049bc139d5c2106c`. +- `publication_manifest`: `outputs/c05-v03-completion-20261102T055710Z/publication-at-random-events-v1/repo/research/h25-c05-at-random-producer-events/MANIFEST.json`; 14289B; SHA256 `251ca0d850fa3c5539e707f46f47d4d09dae15ae2347dd4d348571487d9494b2`. +- `publication_new_wrapper`: `outputs/c05-v03-completion-20261102T055710Z/publication-at-random-events-v1/repo/research/h25-c05-at-random-producer-events/verify.py`; 2614B; SHA256 `a42022fc2f403e574e494000bfe79a8dde529355acb47652022409ab7268f1cc`. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/INPUT-GATE-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/review/INPUT-GATE-v1.json new file mode 100644 index 0000000000..3fbd602061 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/INPUT-GATE-v1.json @@ -0,0 +1,114 @@ +{ + "accepted_exact_source_facts": [ + "Native asm/elf.h branch ELF_CLASS=ELFCLASS64, exact generic alias elf_addr_t=Elf64_Off, UAPI Elf64_Off typedef __u64, tag AT_RANDOM=25.", + "Producer179 has unsigned char k_rand_bytes[16];226 passes it and sizeof to named RNG;227\u2013230 allocates computed destination and copies same object/same length, nonzero immediately returnsEFAULT.", + "NEW_AUX_ENT235\u2013239 writes ordered kernel auxv tag/value;266 uses (elf_addr_t)(unsigned long)u_rand_bytes. U361 separately copies mm->saved_auxv with its own residual failure.", + "Retained later exec1741\u20131742 includes trace/ptrace event after handler success; no handoff-memory theorem is adopted." + ], + "bound_inputs": { + "author_availability": { + "bytes": 5990, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/INPUT-AVAILABILITY-v1.json", + "sha256": "4cb957e049f813e9ef71ff948253f2433ec13461f9f94ff45a8489c1f4d873da" + }, + "author_claim_v2": { + "bytes": 1904, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/INPUT-CLAIM-v2.md", + "sha256": "ff173cbb7d1274921baf6f40d8021ba57e742f08db1fe8c595834998e1a732ae" + }, + "parent_claim_clarification": { + "bytes": 1599, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/CLAIM-CLARIFICATION-v1.json", + "sha256": "81ca27af56222d00cb73507734743d909ad63512df0ba8e825ab16cdbddae7c2" + }, + "plan": { + "bytes": 4152, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/PLAN.json", + "sha256": "569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf" + }, + "source_availability": { + "bytes": 47029, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/SOURCE-AVAILABILITY-v1.json", + "sha256": "08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc" + } + }, + "checkpoint_status": { + "Unit13_P1_inputs": true, + "Unit13_P2_argument": false, + "Unit13_P3_implementation_controls": false, + "Unit13_P4_final_acceptance": false, + "original_activity_credit_added": 0, + "parent_alone_records_release_and_clock": true + }, + "conditions_for_P2_and_later": [ + "Prove actual source def-use and ordered reached-event relations over prefixes defined independently of the desired result; include failure/interruption.", + "Separate G/C/K/U request/completion sites. Nonzero seed copy aborts before K/U; subsequent failures preserve earlier events but imply no future event, completed table or handoff.", + "Preserve numeric modular behavior, exact Elf64_Off alias and conversion premises; do not manufacture address validity or memory ownership from a width field.", + "Keep source authentication separate from exercisable semantic relation checking. Semantic counterexamples must reach relation reasoning rather than merely fail hashes.", + "Witness must expose conditional premise IDs and unresolved genuine future-instance obligations, contain no seed/transcript/admission flags and obey declared canonical bounds.", + "Unknown essential new edge means STOP within the immutable source cap; no extra body/source acquisition or old-unit reopening." + ], + "costs": "OPEN_NOT_ZERO", + "disposition": "PASS_P1_FOR_EXPLICIT_CONDITIONAL_G_C_K_U_PRODUCER_EVENT_SUBPROBLEM_ONLY", + "explicit_conditional_semantic_boundary": [ + "Applicable original genuine OS/loader and well-defined local kernel-source semantics for each reached event, with actual implementation/subject/context binding outside this source component.", + "Named genuine kernel RNG normal-return contract supplies requested16 arbitrary bytes; no statistical quality or recursive algorithm verification is claimed.", + "Named genuine copy_to_user contract supplies logical transfer/residual semantics, without atomic snapshot, exclusive access or persistent equality.", + "Native Linux/GNU x86_64 flat-address integer/pointer semantics and8-bit byte/64-bit unsignedlong,pointer,__u64 are declared ABI interface premises. Equal widths alone are insufficient for conversion. Source aliases/observed config do not prove current ABI realization.", + "Downward STACK_ALLOC relation is conditional on the selected CONFIG_STACK_GROWSUP-undefined branch and uses unsigned subtraction modulo2^64. Config absence is catalogued, not a new generated-autoconf/running-binary proof.", + "No owned/canonical/nonwrapping/fresh user span is assumed or discharged. Any such corollary would need separate range/ownership/lifetime evidence." + ], + "full_C05": false, + "full_V03": false, + "new_scientific_budget": false, + "old_units_01_12_reopened": false, + "operations": { + "native_compiler_namespace_policy_target_operations": 0, + "new_acquisition_by_reviewer": 0, + "original_or_kernel_execution": 0, + "protected_runtime_reads": 0, + "source_read_hash_text_only": true, + "tests": 0, + "writes_only": "unit13/review/" + }, + "original_completion_percent": 43.5, + "positive_input_gate_scope": "All identified source/definition inputs for the expressly narrowed conditional native producer-event proposition are available and authenticated. This is not acceptance of the future argument/code/controls, a valid/owned stack span, source/binary realization, all auxv/K coverage or original runtime admission.", + "reviewed_utc": "2026-11-02T17:50:54.763355+00:00", + "runtime_admission": false, + "schema": "h25-unit13-independent-input-gate-v1", + "source_pin_validation": { + "all_match": true, + "independently_rehashed_pins": 24, + "input_keys": [ + "GPL2_license", + "assessment", + "config", + "exec_after_ELF", + "existing_OS_supplement", + "generic_auxvec", + "native_asm_elf", + "native_tcb_original", + "new_elf_definition", + "new_header_acquisition", + "official_exact_tag", + "original_domain", + "package_facts", + "plan", + "pro14", + "pro14_critical_review", + "producer", + "provider_boundary_review", + "rng_provider", + "source_association", + "syscall_note", + "uapi_elf", + "unit12_index", + "x86_auxvec" + ], + "new_source_bytes": 3037, + "new_source_sha256": "ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e", + "only_new_source": "include/linux/elf.h at88cb661f6b53f472167d39a72241b5396e34ab2a", + "other_new_implementation_bodies": 0 + }, + "why_Unit12_STOP_unchanged": "Unit12 requested complete native auxv origin/selector closure and lacked indispensable definitions. Unit13 explicitly selects a smaller AT_RANDOM event prerequisite, uses its one declared new header and an explicit existing-provider semantic boundary. This input pass does not retroactively complete Unit12 or the original C05 goal." +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/INPUT-GATE-v1.md b/research/h25-c05-at-random-producer-events/archive/unit13/review/INPUT-GATE-v1.md new file mode 100644 index 0000000000..ee8ce14f92 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/INPUT-GATE-v1.md @@ -0,0 +1,39 @@ +# Unit13 independent P1 input gate + +Frozen at 2026-11-02T17:50:54.763355+00:00. **PASS P1 for the expressly conditional G/C/K/U producer-event subproblem only.** Argument/code/control acceptance and actual execution remain open. + +I independently rehashed all24 source-availability pins. The only newly acquired source is the authorized exact-commit include/linux/elf.h:3037B SHA256 ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e. Parent PLAN, append-only clarification, source packet and final author claim are bound below. No additional essential definition is identified for this conditional event claim. + +## Exact scope + +G names the16-byte RNG request into the same local array. C names its same-buffer/same-length transfer to the computed destination and nonzero-copy immediate failure. K is the ordered kernel saved_auxv tag/value emission using that numeric destination. U is the later separate saved_auxv transfer if reached. This does not claim atomic memory contents, a valid/owned/nonwrapping span, completed table or handoff. + +## Explicit semantic boundary + +- Applicable original genuine OS/loader and well-defined local kernel-source semantics for each reached event, with actual implementation/subject/context binding outside this source component. +- Named genuine kernel RNG normal-return contract supplies requested16 arbitrary bytes; no statistical quality or recursive algorithm verification is claimed. +- Named genuine copy_to_user contract supplies logical transfer/residual semantics, without atomic snapshot, exclusive access or persistent equality. +- Native Linux/GNU x86_64 flat-address integer/pointer semantics and8-bit byte/64-bit unsignedlong,pointer,__u64 are declared ABI interface premises. Equal widths alone are insufficient for conversion. Source aliases/observed config do not prove current ABI realization. +- Downward STACK_ALLOC relation is conditional on the selected CONFIG_STACK_GROWSUP-undefined branch and uses unsigned subtraction modulo2^64. Config absence is catalogued, not a new generated-autoconf/running-binary proof. +- No owned/canonical/nonwrapping/fresh user span is assumed or discharged. Any such corollary would need separate range/ownership/lifetime evidence. + +## Required later work + +- Prove actual source def-use and ordered reached-event relations over prefixes defined independently of the desired result; include failure/interruption. +- Separate G/C/K/U request/completion sites. Nonzero seed copy aborts before K/U; subsequent failures preserve earlier events but imply no future event, completed table or handoff. +- Preserve numeric modular behavior, exact Elf64_Off alias and conversion premises; do not manufacture address validity or memory ownership from a width field. +- Keep source authentication separate from exercisable semantic relation checking. Semantic counterexamples must reach relation reasoning rather than merely fail hashes. +- Witness must expose conditional premise IDs and unresolved genuine future-instance obligations, contain no seed/transcript/admission flags and obey declared canonical bounds. +- Unknown essential new edge means STOP within the immutable source cap; no extra body/source acquisition or old-unit reopening. + +Unit12 requested complete native auxv origin/selector closure and lacked indispensable definitions. Unit13 explicitly selects a smaller AT_RANDOM event prerequisite, uses its one declared new header and an explicit existing-provider semantic boundary. This input pass does not retroactively complete Unit12 or the original C05 goal. + +P1 is input availability for this smaller source proposition. P2 argument, P3 implementation/semantic controls and P4 final acceptance remain false; parent alone records release and local clock. All original flags/denominators and Unit01–12 closures remain unchanged. No original/kernel execution, tests, native/compiler/namespace/policy/target operation, new reviewer acquisition or protected-runtime read occurred. Costs OPEN_NOT_ZERO. + +## Bound input hashes + +- `plan`: `outputs/c05-v03-completion-20261102T055710Z/unit13/PLAN.json`; 4152B; SHA256 `569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf`. +- `parent_claim_clarification`: `outputs/c05-v03-completion-20261102T055710Z/unit13/CLAIM-CLARIFICATION-v1.json`; 1599B; SHA256 `81ca27af56222d00cb73507734743d909ad63512df0ba8e825ab16cdbddae7c2`. +- `source_availability`: `outputs/c05-v03-completion-20261102T055710Z/unit13/input/SOURCE-AVAILABILITY-v1.json`; 47029B; SHA256 `08811bbb1d4b8cb384c166a27f33226c976604eeb2be1f27d3cbb1402cd424fc`. +- `author_claim_v2`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/INPUT-CLAIM-v2.md`; 1904B; SHA256 `ff173cbb7d1274921baf6f40d8021ba57e742f08db1fe8c595834998e1a732ae`. +- `author_availability`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/INPUT-AVAILABILITY-v1.json`; 5990B; SHA256 `4cb957e049f813e9ef71ff948253f2433ec13461f9f94ff45a8489c1f4d873da`. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v1.json b/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v1.json new file mode 100644 index 0000000000..b5314d261e --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v1.json @@ -0,0 +1,84 @@ +{ + "P1_P2_accepted_argument_unchanged": true, + "P3_accepted": false, + "P4_accepted": false, + "costs": "OPEN_NOT_ZERO", + "disposition": "REJECT_INITIAL_P3_CHECKER_BLOCKING_STATIC_DEFECT_TESTS_NOT_EXECUTED", + "findings": [ + { + "consequence": "Every valid production source bundle reaches a SemanticError at the first allocation-pattern gate. make_witness/check_witness cannot succeed.", + "evidence": "Static inspection of same-read frozen core35bc. No import/test execution was performed.", + "fact": "need() requires condition is True. positions() always returns a list, but three source-analysis callsites pass that list directly; even nonempty lists are not the singleton True.", + "file": "implementation/at_random_producer_v1.py", + "id": "C01", + "lines": [ + 32, + 33, + 229, + 236, + 245 + ], + "severity": "BLOCKER", + "smallest_correction": "Use explicit bool or length predicates at the three callsites. Preserve strict need semantics; do not weaken general truthiness validation." + }, + { + "consequence": "Source payload byte caps do not bound this prior top-level metadata/set allocation.", + "evidence": "Static source dataflow; no oversized input or test was executed.", + "fact": "source_map scans keys and allocates set(bundle) before checking source-role cardinality; an oversized exact dict causes work/additional allocation outside the fixed24-role packet before it is rejected.", + "file": "implementation/at_random_producer_v1.py", + "id": "C02", + "lines": [ + 80, + 87 + ], + "severity": "EARLY_RESOURCE_BOUND_CORRECTION_RECOMMENDED", + "smallest_correction": "Immediately after exact-dict validation, require len(bundle)==len(SOURCE_PINS), before key scan/set/value iteration." + } + ], + "full_C05": false, + "full_V03": false, + "next_gate": "Parent controls the sole formal repair. Preserve initial proof/pins/core/reader/witness/receipt and static failures. After repair independently review exact delta and actual new-only controls/results; no initial tests/imports were run and no failure log may be invented.", + "operations": { + "native_compiler_namespace_policy_target_operations": 0, + "new_or_original_module_imports": 0, + "new_source_acquisition": 0, + "original_kernel_execution": 0, + "protected_runtime_reads": 0, + "tests": 0, + "writes_only": "unit13/review/" + }, + "original_activity_credit_added": 0, + "original_completion_percent": 43.5, + "other_static_review": [ + "Exact source-key types precede set/equality; payload values are exact bounded bytes before hashing. Plain witness validation rejects nonexact containers/keys/integers before profile comparisons.", + "Duplicate JSON keys/noninteger values are rejected, canonical bytes are checked, raw/nodes/depth/container/int bounds are explicit.", + "Two K phases, seed/U residual stages and later failure/return distinctions agree with accepted conditional argument; computed_destination models unsigned modulo64 only.", + "Semantic analysis is separate from literal source authentication; production APIs require all24 pins. Semantic layer is a source-specific argument projection, not a generic C/preprocessor or native runtime proof.", + "Package reader uses only fixed input-NNN.data filenames beneath retained directory FDs, bounded reads, regular/single-link/size/drift checks and source pins. It retains raw chunks and first delivered error; imports only the new core. It is not current C07/ancestor ownership, original handler/native failure totality or physical-cost qualification." + ], + "pins": { + "authored_witness": { + "bytes": 2617, + "same_read_snapshot": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/snapshots/WITNESS-v1.json.3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70.txt", + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + }, + "core": { + "bytes": 19989, + "same_read_snapshot": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/snapshots/at_random_producer_v1.py.35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b.txt", + "sha256": "35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b" + }, + "initial_receipt": { + "bytes": 2317, + "same_read_snapshot": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/snapshots/AUTHOR-INITIAL-FREEZE-v1.json.14e9f327c75b3fc01e76af2786e3882634a57012134185458aecf023c556e6fa.txt", + "sha256": "14e9f327c75b3fc01e76af2786e3882634a57012134185458aecf023c556e6fa" + }, + "reader": { + "bytes": 4826, + "same_read_snapshot": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/snapshots/package_reader_v1.py.63c67d9060cd7eae9e8fb95ebdd799e947a911fd3baf200127a5be673c26a2a5.txt", + "sha256": "63c67d9060cd7eae9e8fb95ebdd799e947a911fd3baf200127a5be673c26a2a5" + } + }, + "reviewed_utc": "2026-11-02T18:03:56.149959+00:00", + "runtime_admission": false, + "schema": "h25-unit13-independent-initial-source-review-v1" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v1.md b/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v1.md new file mode 100644 index 0000000000..8f2bc60e7c --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v1.md @@ -0,0 +1,30 @@ +# Unit13 initial checker review + +Frozen at 2026-11-02T18:03:56.149959+00:00. **Initial P3 checker rejected by static inspection; no tests or imports executed.** + +**C01 — BLOCKER.** `implementation/at_random_producer_v1.py`, lines 32,33,229,236,245. + +need() requires condition is True. positions() always returns a list, but three source-analysis callsites pass that list directly; even nonempty lists are not the singleton True. Every valid production source bundle reaches a SemanticError at the first allocation-pattern gate. make_witness/check_witness cannot succeed. Use explicit bool or length predicates at the three callsites. Preserve strict need semantics; do not weaken general truthiness validation. + +**C02 — EARLY_RESOURCE_BOUND_CORRECTION_RECOMMENDED.** `implementation/at_random_producer_v1.py`, lines 80,87. + +source_map scans keys and allocates set(bundle) before checking source-role cardinality; an oversized exact dict causes work/additional allocation outside the fixed24-role packet before it is rejected. Source payload byte caps do not bound this prior top-level metadata/set allocation. Immediately after exact-dict validation, require len(bundle)==len(SOURCE_PINS), before key scan/set/value iteration. + +## Other static findings + +- Exact source-key types precede set/equality; payload values are exact bounded bytes before hashing. Plain witness validation rejects nonexact containers/keys/integers before profile comparisons. +- Duplicate JSON keys/noninteger values are rejected, canonical bytes are checked, raw/nodes/depth/container/int bounds are explicit. +- Two K phases, seed/U residual stages and later failure/return distinctions agree with accepted conditional argument; computed_destination models unsigned modulo64 only. +- Semantic analysis is separate from literal source authentication; production APIs require all24 pins. Semantic layer is a source-specific argument projection, not a generic C/preprocessor or native runtime proof. +- Package reader uses only fixed input-NNN.data filenames beneath retained directory FDs, bounded reads, regular/single-link/size/drift checks and source pins. It retains raw chunks and first delivered error; imports only the new core. It is not current C07/ancestor ownership, original handler/native failure totality or physical-cost qualification. + +Parent controls the sole formal repair. Preserve initial proof/pins/core/reader/witness/receipt and static failures. After repair independently review exact delta and actual new-only controls/results; no initial tests/imports were run and no failure log may be invented. + +P1/P2 conditional argument remains accepted; P3/P4 remain open. All original flags/credit/bounds stay unchanged, costs OPEN_NOT_ZERO. + +## Same-read snapshots + +- `core`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/snapshots/at_random_producer_v1.py.35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b.txt`; 19989B; SHA256 `35bc50f6f66b29acb3ce3fd36a1dbf750dfd80914b7da3cc44f5ad3d50dc323b`. +- `reader`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/snapshots/package_reader_v1.py.63c67d9060cd7eae9e8fb95ebdd799e947a911fd3baf200127a5be673c26a2a5.txt`; 4826B; SHA256 `63c67d9060cd7eae9e8fb95ebdd799e947a911fd3baf200127a5be673c26a2a5`. +- `authored_witness`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/snapshots/WITNESS-v1.json.3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70.txt`; 2617B; SHA256 `3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70`. +- `initial_receipt`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/snapshots/AUTHOR-INITIAL-FREEZE-v1.json.14e9f327c75b3fc01e76af2786e3882634a57012134185458aecf023c556e6fa.txt`; 2317B; SHA256 `14e9f327c75b3fc01e76af2786e3882634a57012134185458aecf023c556e6fa`. diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v2.json b/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v2.json new file mode 100644 index 0000000000..32de91d0c4 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v2.json @@ -0,0 +1,215 @@ +{ + "P4_remaining": "Final publication-ready bounded standalone export recipe/package reader validation/final artifact freeze remains to be bound separately. Parent selected authorized self-contained24-input export and publisher owns concrete payload classification; this review introduces no private-free pin rebinding requirement. No current publication/hosted-CI result follows from local source controls.", + "actual_control_evidence": { + "all_11_positive_projection_values_match_independent_oracle": true, + "callbacks_before_rejection": 0, + "counts_each_mode": { + "event_models": 24, + "exact_type_callback_controls": 3, + "inert_source_semantic_mutants": 5, + "negative_models": 13, + "numeric_controls": 3, + "positive_models": 11, + "stronger_unproved_claim_refusals": 5 + }, + "five_source_mutations_reject_in_semantic_layer_not_pin_layer": [ + "generation_length", + "generation_provider", + "tag_destination_conversion", + "copy_source_binding", + "copy_nonzero_EFAULT" + ], + "five_stronger_authority_or_memory_witness_fields_reject": true, + "reviewer_repeated_suites": false, + "runs": [ + { + "argv": [ + "python3", + "-I", + "-B", + "-X", + "pycache_prefix=/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/bytecode-unmaterialized-normal-v2", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py", + "--workspace", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453", + "--unit", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13", + "--module", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "--module-sha256", + "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + ], + "cwd": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453", + "profile": "normal", + "pycache_namespace_was_unmaterialized": true, + "returncode": 0, + "stdout_stderr_raw": { + "bytes": 6138, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/NORMAL-v2.raw", + "sha256": "34f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe" + }, + "tool_wall_seconds": 0.42416457 + }, + { + "argv": [ + "python3", + "-I", + "-O", + "-B", + "-X", + "pycache_prefix=/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/bytecode-unmaterialized-optimized-v2", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py", + "--workspace", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453", + "--unit", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13", + "--module", + "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "--module-sha256", + "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + ], + "cwd": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453", + "profile": "optimized", + "pycache_namespace_was_unmaterialized": true, + "returncode": 0, + "stdout_stderr_raw": { + "bytes": 6137, + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/unit13/controls/OPTIMIZED-v2.raw", + "sha256": "29ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df" + }, + "tool_wall_seconds": 0.437871712 + } + ], + "same_pre_authored_static_witness_both_modes": true, + "three_modular_values_match_literals": true, + "witness_bytes": 2617, + "witness_sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + }, + "checkpoint_status": { + "P1": true, + "P2": true, + "P3": true, + "P4_final_export_recipe": false, + "original_activity_credit_added": 0, + "root_alone_records_local_clock": true + }, + "code_checks": [ + "Production source map authenticates all24 fixed roles/pins and bounds exact raw bytes; top-level count/type gates precede extra allocation/key comparisons. Witness supplied digests are not authentication authority.", + "Exact dict/list/int/str gates precede semantic comparisons; bool/null/float/string values are outside the integer-only witness domain. Duplicate JSON keys and noncanonical encodings reject; raw/node/depth/container/integer bounds are explicit.", + "Token/def-use projection is deliberately source-specific, not generic C/preprocessor verification. Authentication and pure mutation analysis are distinct.", + "G/C/K/U IDs, modular destination and ordered K phases agree with the independently accepted conditional source argument. Partial copies and later failure/return/interrupt boundaries are retained; there is no memory/handoff/actual-span admission.", + "Package reader imports only NEW core, reads fixed input-NNN.data files with retained directory FDs and bounded regular-file/size/link/drift/hash checks. It preserves raw chunks and first delivered read/cleanup error; it does not establish current C07 or original handler/native failure totality.", + "Numeric witness schema distinguishes required conditional interfaces, future actual-instance binding and deliberately unclaimed stronger corollaries. Witness bytes contain static argument data, not seed values or a future transcript." + ], + "costs": "OPEN_NOT_ZERO", + "delta_review": { + "C01_blocker_resolved": true, + "C02_early_cardinality_resolved": true, + "accepted_proof_and_source_input_pins_unchanged": true, + "core_delta": "Only early exact24-role cardinality check plus explicit len(positions)>0 at all three previously failing callsites. Strict need(condition is True) preserved.", + "initial_versions_unchanged_and_rejected": "core35bc50f6.../reader63c67d... remain exact; no initial execution or fabricated failure log. Initial static rejection85f634... is retained.", + "reader_delta": "Only import switched from the preserved v1 NEW core to v2.", + "same_read_successor_snapshots_preserved": true + }, + "disposition": "PASS_P3_REPAIRED_SOURCE_SPECIFIC_CHECKER_WITNESS_AND_INDEPENDENT_NEW_ONLY_CONTROLS", + "full_C05": false, + "full_V03": false, + "independent_test_isolation": "Full frozen harness inspected. It imports only the explicitly pinned NEW checker via a unique module name; original/kernel/Python source inputs are read as inert bytes. No archived code import/execution, compiler/Popen/namespace/policy/target operation or protected runtime access occurs in the recorded commands.", + "new_scientific_budget": false, + "old_units_01_12_reopened": false, + "operations_by_this_reviewer": { + "native_compiler_namespace_policy_target_operations": 0, + "new_or_original_module_imports": 0, + "new_source_acquisition": 0, + "protected_runtime_reads": 0, + "source_text_hash_JSON_analysis_only": true, + "tests": 0, + "writes_only": "unit13/review/" + }, + "original_completion_percent": 43.5, + "pins": { + "P1": { + "bytes": 6803, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.json", + "sha256": "ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3" + }, + "P2": { + "bytes": 6698, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/ARGUMENT-v1.json", + "sha256": "1ac44449fe9ff331dd6933b09fe63e1f29acf3f09c197c23cf117290304d4092" + }, + "author_repaired_freeze": { + "bytes": 6706, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json", + "sha256": "2fe72430f0b3ff98d2fbf813c580d2fac2d7bd0b3bc1d32729fa9aa2df1f3045" + }, + "controls_harness": { + "bytes": 10036, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py", + "sha256": "86c00342a451af919ca6a053a2e903d9616a52755117f973319260987327cf24" + }, + "controls_receipt": { + "bytes": 21032, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/RESULTS-v1.json", + "sha256": "8c031791504efb5b76a65281e8ddea350b0dc42a27f71aaf8611b564fba608a9" + }, + "initial_rejection": { + "bytes": 5110, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v1.json", + "sha256": "85f634487dd2a4711aee399839855861ecedeb8d47bdabde641a8eb19d63c4a4" + }, + "literal_fixtures": { + "bytes": 7293, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/SEMANTIC-FIXTURES-v1.json", + "sha256": "71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b" + }, + "literal_pins": { + "bytes": 7184, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/SOURCE-PINS-v1.json", + "sha256": "11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211" + }, + "normal_results": { + "bytes": 6138, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/NORMAL-v2.raw", + "sha256": "34f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe" + }, + "numeric_schema": { + "bytes": 6189, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-SCHEMA-v1.md", + "sha256": "9792c3bfd16de628f6969560c8ac4263342c5be308f346073c501b5eaa3fa935" + }, + "optimized_results": { + "bytes": 6137, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/OPTIMIZED-v2.raw", + "sha256": "29ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df" + }, + "projection_oracle": { + "bytes": 1333, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/controls/PROJECTION-ORACLE-v1.json", + "sha256": "da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0" + }, + "proof": { + "bytes": 8225, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md", + "sha256": "598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a" + }, + "repaired_core": { + "bytes": 20088, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py", + "sha256": "49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0" + }, + "repaired_reader": { + "bytes": 4826, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v2.py", + "sha256": "98cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf" + }, + "witness": { + "bytes": 2617, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-v1.json", + "sha256": "3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70" + } + }, + "reviewed_utc": "2026-11-02T18:10:52.165059+00:00", + "runtime_admission": false, + "schema": "h25-unit13-independent-repaired-code-controls-review-v2" +} diff --git a/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v2.md b/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v2.md new file mode 100644 index 0000000000..1fbe6bf777 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/archive/unit13/review/SOURCE-REVIEW-v2.md @@ -0,0 +1,45 @@ +# Unit13 repaired source and independent controls review + +Frozen at 2026-11-02T18:10:52.165059+00:00. **PASS P3 for the repaired source-specific checker, static witness and independent new-only controls. P4 final export/reader evidence remains open.** + +Repaired core20088B SHA25649023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0 contains exactly the four authorized corrections: early24-role cardinality plus explicit boolean predicates at the three positions-list sites. Reader4826B SHA25698cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf changes only the NEW core import. Initial source and its static rejection remain exact; the initial broken version was not executed. + +## Code and isolation + +- Production source map authenticates all24 fixed roles/pins and bounds exact raw bytes; top-level count/type gates precede extra allocation/key comparisons. Witness supplied digests are not authentication authority. +- Exact dict/list/int/str gates precede semantic comparisons; bool/null/float/string values are outside the integer-only witness domain. Duplicate JSON keys and noncanonical encodings reject; raw/node/depth/container/integer bounds are explicit. +- Token/def-use projection is deliberately source-specific, not generic C/preprocessor verification. Authentication and pure mutation analysis are distinct. +- G/C/K/U IDs, modular destination and ordered K phases agree with the independently accepted conditional source argument. Partial copies and later failure/return/interrupt boundaries are retained; there is no memory/handoff/actual-span admission. +- Package reader imports only NEW core, reads fixed input-NNN.data files with retained directory FDs and bounded regular-file/size/link/drift/hash checks. It preserves raw chunks and first delivered read/cleanup error; it does not establish current C07 or original handler/native failure totality. +- Numeric witness schema distinguishes required conditional interfaces, future actual-instance binding and deliberately unclaimed stronger corollaries. Witness bytes contain static argument data, not seed values or a future transcript. + +Full frozen harness inspected. It imports only the explicitly pinned NEW checker via a unique module name; original/kernel/Python source inputs are read as inert bytes. No archived code import/execution, compiler/Popen/namespace/policy/target operation or protected runtime access occurs in the recorded commands. + +## Actual independent evidence + +Normal and optimized commands both returned0, with full argv/cwd/pin/raw/timing records in controls/RESULTS-v1.json. Each ran24 model decisions (11 positive/13 negative),5 inert source semantic mutants,3 modular arithmetic cases,3 callback-safe exact-type controls and5 stronger-claim refusals. The11 positive reached/completed/branch tuples match an independently frozen literal oracle. All5 source mutations reached semantic analysis, not just checksum rejection. + +Both modes reproduced the pre-authored2617B static witness SHA2563bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70. Original code/runtime/owned stack/memory snapshot/handoff flags remain false. I inspected the actual raw outputs and command receipts without repeating the suites. + +Final publication-ready bounded standalone export recipe/package reader validation/final artifact freeze remains to be bound separately. Parent selected authorized self-contained24-input export and publisher owns concrete payload classification; this review introduces no private-free pin rebinding requirement. No current publication/hosted-CI result follows from local source controls. + +All original gates, limits, denominators and closed Unit01–12 states remain unchanged. No new original activity credit, current runtime/native funding or physical-cost qualification follows. Original43.5%; OPEN_NOT_ZERO. + +## Evidence pins + +- `repaired_core`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/at_random_producer_v2.py`; 20088B; SHA256 `49023291b40f424b56e6fe7f3fd63dd99cbdbab69bb7bd697a1bb3fd9c121ed0`. +- `repaired_reader`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/package_reader_v2.py`; 4826B; SHA256 `98cc037da70cc5f562c9bf2aa5c9ad61b096ac18bf9bc08430d8722da70fb6bf`. +- `proof`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/PROOF-v1.md`; 8225B; SHA256 `598751d8be838e6fd7789a11f7337b1d2eebe713f6c3eb22b30b492a1c4a532a`. +- `literal_pins`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/SOURCE-PINS-v1.json`; 7184B; SHA256 `11b69fbda2c35ffde83f576972a360ec1c55b114c3d5ecea9d9efcb99c776211`. +- `witness`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-v1.json`; 2617B; SHA256 `3bc1e7dd7d6cf17e5dd11129defe1baa05c73c90e617a0b7205af7df114e6f70`. +- `numeric_schema`: `outputs/c05-v03-completion-20261102T055710Z/unit13/implementation/WITNESS-SCHEMA-v1.md`; 6189B; SHA256 `9792c3bfd16de628f6969560c8ac4263342c5be308f346073c501b5eaa3fa935`. +- `initial_rejection`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/SOURCE-REVIEW-v1.json`; 5110B; SHA256 `85f634487dd2a4711aee399839855861ecedeb8d47bdabde641a8eb19d63c4a4`. +- `P1`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/INPUT-GATE-v1.json`; 6803B; SHA256 `ede755e7c14af3a90a59e484c78374e11c7998eb797e11a28419fef91e846bf3`. +- `P2`: `outputs/c05-v03-completion-20261102T055710Z/unit13/review/ARGUMENT-v1.json`; 6698B; SHA256 `1ac44449fe9ff331dd6933b09fe63e1f29acf3f09c197c23cf117290304d4092`. +- `controls_harness`: `outputs/c05-v03-completion-20261102T055710Z/unit13/controls/run_semantic_controls_v2.py`; 10036B; SHA256 `86c00342a451af919ca6a053a2e903d9616a52755117f973319260987327cf24`. +- `literal_fixtures`: `outputs/c05-v03-completion-20261102T055710Z/unit13/controls/SEMANTIC-FIXTURES-v1.json`; 7293B; SHA256 `71606e0ab2273ad5fa21eef1635ef9ddb45f528d3bfc7a2b015532912d07a58b`. +- `projection_oracle`: `outputs/c05-v03-completion-20261102T055710Z/unit13/controls/PROJECTION-ORACLE-v1.json`; 1333B; SHA256 `da0f4fd82170662c0a35de9f1e9bb7f98d96ffccc0781ca4a27926ddf9e567f0`. +- `normal_results`: `outputs/c05-v03-completion-20261102T055710Z/unit13/controls/NORMAL-v2.raw`; 6138B; SHA256 `34f5eb3866d3c4f3aca71a5369bf3d0c77ac4e0d939748cf64e0433ebf8c6cbe`. +- `optimized_results`: `outputs/c05-v03-completion-20261102T055710Z/unit13/controls/OPTIMIZED-v2.raw`; 6137B; SHA256 `29ff505a002bd10cdfcb97e288ec3e83f7ac271ea802a599fd89e31e78e277df`. +- `controls_receipt`: `outputs/c05-v03-completion-20261102T055710Z/unit13/controls/RESULTS-v1.json`; 21032B; SHA256 `8c031791504efb5b76a65281e8ddea350b0dc42a27f71aaf8611b564fba608a9`. +- `author_repaired_freeze`: `outputs/c05-v03-completion-20261102T055710Z/unit13/author-receipts/AUTHOR-REPAIRED-FREEZE-v2.json`; 6706B; SHA256 `2fe72430f0b3ff98d2fbf813c580d2fac2d7bd0b3bc1d32729fa9aa2df1f3045`. diff --git a/research/h25-c05-at-random-producer-events/at_random_producer_v2.py b/research/h25-c05-at-random-producer-events/at_random_producer_v2.py new file mode 100644 index 0000000000..28a3e46b67 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/at_random_producer_v2.py @@ -0,0 +1,359 @@ +"""Exact-source Unit13 AT_RANDOM producer-event checker; no original execution. + +Pure byte/text and integer-only static DATA. Semantic analysis deliberately has +no source authentication authority. Production APIs require every literal pin. +Neither API observes an exec or grants memory/handoff/ownership/admission facts. +""" +from __future__ import annotations +import hashlib +import json +import re + +FILE_CAP=1048576 +TOTAL_CAP=8388608 +RECORD_CAP=1048576 +NODE_CAP=8192 +DEPTH_CAP=24 +CONTAINER_CAP=256 +INT_MIN=-(1<<126) +INT_MAX=(1<<126)-1 +SOURCE_PINS={'GPL2_license': (1, 18600, '8780e78a1a737e127f25a65f6d95269bffd36158dc261114de7859b490bfc5aa'), 'assessment': (2, 3169, '535759b7943bc89895af7746f20f7b8933ab7a9efcfb35a27c86d1a4a9b57244'), 'config': (3, 308206, '8da949fb637f675c8a1170a2bfc5f029b2642f54e0efe8dbb54ca95c6324cf8d'), 'exec_after_ELF': (4, 50792, '4eb89b8d5d23050d9a9741f73979fe95fc083b897b2744f08fd395da62f4a698'), 'existing_OS_supplement': (5, 3847, 'c7c44aaea13b24bbc0fc5b3a0a98d9c2f774edb28846027c12e1874965d7c199'), 'generic_auxvec': (6, 1834, '8dadb9bdd5f00bbcbb6439086f5a9d429b4eff457a61b11ce08941d1dd8d60fa'), 'native_asm_elf': (7, 12164, '59b9c134388114d4b5bd489cc7f278ca5b1e3a3619e908361c09b233eca9fce1'), 'native_tcb_original': (8, 11353, '865943df5cfdbf9383362d7fb2b76c6d0fd895cf0a0e20d550a26b579606b5d7'), 'new_elf_definition': (9, 3037, 'ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e'), 'new_header_acquisition': (10, 1406, '2a57b91b37492b721fbdbc0fcca10aaedf403f00369d9b78bfd8ae1dc27f780b'), 'official_exact_tag': (11, 15884, '28bd3a67da1dcee4bf0f87d3b52dd4d755bb0b34677769876afc90a1890a7ecb'), 'original_domain': (12, 23942, 'a51264289803b4b17bb262f2460ddd4ed72500aaa21e5eb80fa2db4583689361'), 'package_facts': (13, 1741, 'd942241a0e6c6a639cc0b864f3d45ca16d68949f2766e5c936f5095db6a71256'), 'plan': (14, 4152, '569cb1720fd0b8f300bf9e6cecbda3d7c2f97a3721c2072835e9678df61a6bbf'), 'pro14': (15, 9191, 'e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a'), 'pro14_critical_review': (16, 16074, 'bd61034f05893493003a632067710781f3298c57d2a226e7c85d0cd7ccbb9512'), 'producer': (17, 58558, '1939cf7c82077d1a0793777be7ca0e11985750cbaff8c342ce2b2e4647c50102'), 'provider_boundary_review': (18, 24374, '0d91b34b3fc68a33dffccbafc313bc473a55028e9a6b66a7b6ee89e65e08efe4'), 'rng_provider': (19, 53564, '260c4030164fa73c27e55b21f28ec1f4dfc126cc80ab6aa56482223aa3534a8f'), 'source_association': (20, 49189, 'bb5f27c46542968f8404c279db3a05351a7e2851c09114325b75c07a31b1e992'), 'syscall_note': (21, 1258, '8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f'), 'uapi_elf': (22, 19317, '15613d116a6c77c4826036740dd5023c6a7779c776acd3ac7a1a661fe7432b3c'), 'unit12_index': (23, 18743, '1022b415e1a85962e18e84484beae918fbce6ff51431fe28cc752ffb73179940'), 'x86_auxvec': (24, 571, '7e50a100bacd7bd784538466bba53e931bdfc4f13f855258c77665f932368d8d')} + +class FormatError(ValueError): + def __init__(self,code):self.code=code;super().__init__(code) + +class SourcePinError(ValueError): + def __init__(self,code):self.code=code;super().__init__(code) + +class SemanticError(ValueError): + def __init__(self,code):self.code=code;super().__init__(code) + + +def need(condition,code,kind=SemanticError): + if condition is not True:raise kind(code) + + +def integer(value,low=INT_MIN,high=INT_MAX): + need(type(value) is int and low<=value<=high,'exact_bounded_integer',FormatError) + + +def plain(value): + nodes=text=0 + def walk(item,depth): + nonlocal nodes,text + nodes+=1;need(nodes<=NODE_CAP and depth<=DEPTH_CAP,'wire_nodes_depth',FormatError) + kind=type(item) + if kind is int:integer(item);return + if kind is list: + need(len(item)<=CONTAINER_CAP,'wire_sequence_bound',FormatError) + for child in item:walk(child,depth+1) + return + need(kind is dict and len(item)<=CONTAINER_CAP,'integer_only_wire_type',FormatError) + for key,child in item.items(): + need(type(key) is str and 0=0,'unterminated_comment');i=j+2;continue + if text.startswith('//',i): + j=text.find('\n',i+2);i=n if j<0 else j+1;continue + if c in ('"',"'"): + quote=c;j=i+1 + while j>=','<<=','...','++','--','->','+=','-=','==','!=','<=','>=','&&','||','<<','>>','##','&=','|=','*=','/=') if text.startswith(op,i)),c) + result.append(operator);i+=len(operator) + need(len(result)<=200000,'source_token_bound') + return result + + +def positions(sequence,pattern): + return [i for i in range(len(sequence)-len(pattern)+1) if sequence[i:i+len(pattern)]==pattern] + + +def once(sequence,pattern,code): + found=positions(sequence,pattern);need(len(found)==1,code);return found[0] + + +def balanced(sequence,start,opening='(',closing=')'): + need(start=len(condition) or condition[at+1]!='(':continue + args,end=arguments(condition,at+1) + if args and args[0]==destination:found.append((i,finish,condition,args,end)) + need(len(found)==1,'copy_destination_binding') + i,finish,condition,args,end=found[0] + need(condition[0]=='copy_to_user' and end==len(condition)-1,'copy_nonzero_guard') + need(body[finish+1:finish+5]==['return','-','EFAULT',';'],'copy_nonzero_EFAULT') + return i,args,finish + + +def digest_words(raw): + digest=hashlib.sha256(raw).digest() + return [int.from_bytes(digest[i:i+4],'big') for i in range(0,32,4)] + + +def analyze_sources(bundle): + """PURE semantic projection, deliberately not source authentication. + + Inert mutation controls reach these relations without checksum rejection. + Acceptance here alone is neither source identity nor arbitrary-C correctness. + """ + source_map(bundle) + producer=tokens(bundle['producer']);body=function_body(producer,'create_elf_tables') + declaration=once(body,['unsigned','char','k_rand_bytes','['],'kernel_array_declaration') + need(body[declaration+5:declaration+7]==[']',';'],'kernel_array_shape') + number=body[declaration+4];need(number.isdigit(),'kernel_array_length');array_bytes=int(number) + need(array_bytes==16,'kernel_array_length') + generation=[] + for i in range(len(body)-2): + if body[i+1]!='(' or not re.fullmatch(r'[A-Za-z_][A-Za-z_0-9]*',body[i]):continue + args,end=arguments(body,i+1) + if len(args)==2 and args[0]==['k_rand_bytes'] and body[end+1:end+2]==[';']:generation.append((i,body[i],args)) + need(len(generation)==1,'generation_binding') + gpos,provider,gargs=generation[0] + need(provider=='get_random_bytes','generation_provider') + requested=size_expression(gargs[1],array_bytes);need(requested==array_bytes==16,'generation_length') + alloc=once(body,['u_rand_bytes','=','(','elf_addr_t','__user','*',')','STACK_ALLOC','('],'allocation_binding') + allocargs,allocend=arguments(body,alloc+8) + need(allocargs[0]==['p'] and len(allocargs)==2,'allocation_cursor') + need(size_expression(allocargs[1],array_bytes)==16 and body[allocend+1:allocend+2]==[';'],'allocation_length') + need(len(positions(producer,['#','define','STACK_ALLOC','(','sp',',','len',')','(','sp','-=','len',')']))>0,'downward_unsigned_allocation') + cpos,cargs,cend=copy_if(body,['u_rand_bytes']) + need(len(cargs)==3 and cargs[1]==['k_rand_bytes'],'copy_source_binding') + copied=size_expression(cargs[2],array_bytes);need(copied==requested==16,'copy_length') + kpos=once(body,['NEW_AUX_ENT','(','AT_RANDOM',','],'tag_binding') + kargs,kend=arguments(body,kpos+1) + need(kargs==[['AT_RANDOM'],['(','elf_addr_t',')','(','unsigned','long',')','u_rand_bytes']],'tag_destination_conversion') + need(len(positions(body,['#','define','NEW_AUX_ENT','(','id',',','val',')','do','{','*','elf_info','++','=','id',';','*','elf_info','++','=','val',';','}','while','(','0',')']))>0,'ordered_saved_auxv_stores') + upos,uargs,uend=copy_if(body,['sp']) + need(uargs==[['sp'],['mm','->','saved_auxv'],['ei_index','*','sizeof','(','elf_addr_t',')']],'user_auxv_source_length') + need(body[uend+5:uend+8]==['return','0',';'],'local_return_zero') + need(gpos','saved_auxv',';'],'saved_auxv_base') + once(body,['ei_index','=','elf_info','-','(','elf_addr_t','*',')','mm','->','saved_auxv',';'],'auxv_length_expression') + once(body,['elf_info','+=','2',';'],'auxv_NULL_cursor') + for error in ('EINTR','EFAULT','EINVAL'): + need(len(positions(body[kend+1:upos],['return','-',error,';']))>0,'later_failure:'+error) + aux=tokens(bundle['generic_auxvec']);once(aux,['#','define','AT_RANDOM','25'],'AT_RANDOM_tag25') + alias=tokens(bundle['new_elf_definition']);once(alias,['#','define','elf_addr_t','Elf64_Off'],'native_elf_alias') + once(alias,['#','if','ELF_CLASS','==','ELFCLASS32'],'elf_class_selection') + uapi=tokens(bundle['uapi_elf']);once(uapi,['typedef','__u64','Elf64_Off',';'],'native_u64_alias') + asm=tokens(bundle['native_asm_elf']);once(asm,['#','define','ELF_CLASS','ELFCLASS64'],'native_class64') + rng=function_body(tokens(bundle['rng_provider']),'get_random_bytes') + need(rng==['_get_random_bytes','(','buf',',','len',')',';'],'named_provider_dispatch') + ex=tokens(bundle['exec_after_ELF']) + once(ex,['trace_sched_process_exec','(','current',',','old_pid',',','bprm',')',';'],'later_exec_trace') + once(ex,['ptrace_event','(','PTRACE_EVENT_EXEC',',','old_vpid',')',';'],'later_exec_ptrace') + config=bundle['config'].splitlines() + for line in (b'CONFIG_64BIT=y',b'CONFIG_X86_64=y'):need(line in config,'associated_native_config') + need(not any(line==b'CONFIG_STACK_GROWSUP=y' for line in config),'selected_stack_direction') + # These are source-derived MODEL role identities, never actual addresses. + profile={'version':1,'sources':[[SOURCE_PINS[role][0],len(bundle[role]),digest_words(bundle[role])] for role in sorted(SOURCE_PINS)], + 'abi':[8,64,64,64,64], + 'G':[1,1,array_bytes,requested], + 'A':[1,10,2,16,64], + 'C':[2,1,2,copied,1,1], + 'K':[25,2,64,64,1,2], + 'U':[2,3,4,1,8,1,2], + 'requirements':[1,2,3,4,5,6,7,8], + 'store_order':[1,2], + 'branch_rules':[[1,3,1],[2,15,7],[3,7,7],[4,7,7],[5,7,7],[6,15,15]]} + plain(profile);return profile + + +def _profile(profile): + plain(profile) + need(type(profile) is dict,'profile_type',FormatError) + expected={'version','sources','abi','G','A','C','K','U','requirements','store_order','branch_rules'} + need(set(profile)==expected,'profile_fields',FormatError) + need(profile['version']==1 and profile['abi']==[8,64,64,64,64],'profile_native_abi') + need(profile['G']==[1,1,16,16] and profile['A']==[1,10,2,16,64],'profile_generation_allocation') + need(profile['C']==[2,1,2,16,1,1],'profile_copy') + need(profile['K']==[25,2,64,64,1,2] and profile['store_order']==[1,2],'profile_tag') + need(profile['U']==[2,3,4,1,8,1,2],'profile_user_auxv') + need(profile['requirements']==list(range(1,9)),'profile_requirements') + need(profile['branch_rules']==[[1,3,1],[2,15,7],[3,7,7],[4,7,7],[5,7,7],[6,15,15]],'profile_branch_rules') + need(type(profile['sources']) is list and len(profile['sources'])==len(SOURCE_PINS),'profile_source_rows') + for index,row in enumerate(profile['sources'],1): + need(type(row) is list and len(row)==3 and row[0]==index,'profile_source_id') + integer(row[1],1,FILE_CAP);need(type(row[2]) is list and len(row[2])==8,'profile_source_digest') + for word in row[2]:integer(word,0,(1<<32)-1) + + +def check_relations(profile,witness): + """Conditional static relation checking; callers cannot mint authentication.""" + _profile(profile);plain(witness) + need(type(witness) is dict and set(witness)==set(profile),'witness_fields',FormatError) + _profile(witness) + for key in profile:need(witness[key]==profile[key],'witness_relation:'+key) + return {'relation_version':1,'requirements':list(range(1,9))} + + +def make_witness(bundle): + authenticate_sources(bundle);profile=analyze_sources(bundle) + check_relations(profile,profile);return canonical(profile) + + +def check_witness(bundle,raw): + authenticate_sources(bundle);profile=analyze_sources(bundle);witness=decode(raw) + return check_relations(profile,witness) + + +def computed_destination(q,width=64,length=16): + integer(q,0,(1<<64)-1);integer(width,64,64);integer(length,16,16) + return (q-length)%(1<0,'event_row',FormatError) + need(not terminal,'event_after_terminal') + kind=row[0] + if kind==1: + need(row==[1,1,1,16] and state==0,'event_generation_relation') + state=1;reached|=1;completed|=1 + elif kind==2: + need(len(row)==6 and row[:5]==[2,2,1,2,16] and state==1,'event_seed_copy_relation') + integer(row[5],0,16);seed_residual=row[5];state=2;reached|=2 + if seed_residual==0:completed|=2 + elif kind==3: + need(len(row)==6 and row[:5]==[3,25,2,64,64],'event_tag_pointer_width') + need(seed_residual==0,'event_tag_after_failed_copy') + if row[5]==1:need(state==2,'event_tag_store_order');state=3;reached|=4 + elif row[5]==2:need(state==3,'event_value_store_order');state=4;completed|=4 + else:raise SemanticError('event_tag_phase') + elif kind==4: + need(len(row)==7 and row[:6]==[4,2,3,4,1,8] and state==4,'event_user_auxv_relation') + integer(row[6],0,RECORD_CAP);user_residual=row[6];state=5;reached|=8 + if user_residual==0:completed|=8 + elif kind==5: + need(len(row)==2,'event_failure_shape',FormatError);branch=row[1] + if branch==1:need(state==2 and seed_residual is not None and seed_residual!=0,'event_seed_EFAULT_guard') + elif branch==2:need(state==5 and user_residual is not None and user_residual!=0,'event_user_EFAULT_guard') + elif branch in (3,4,5):need(state==4,'event_later_preU_failure') + else:raise SemanticError('event_unknown_failure_branch') + terminal=True + elif kind==6: + need(row==[6] and state==5 and user_residual==0,'event_local_return_guard');branch=6;terminal=True + else:raise SemanticError('event_unknown_kind') + return {'reached_mask':reached,'completed_mask':completed,'local_branch':branch,'requirements':list(range(1,9))} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-001.data b/research/h25-c05-at-random-producer-events/inputs/input-001.data new file mode 100644 index 0000000000..ea8e93dc44 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-001.data @@ -0,0 +1,357 @@ +Valid-License-Identifier: GPL-2.0 +Valid-License-Identifier: GPL-2.0-only +Valid-License-Identifier: GPL-2.0+ +Valid-License-Identifier: GPL-2.0-or-later +SPDX-URL: https://spdx.org/licenses/GPL-2.0.html +Usage-Guide: + To use this license in source code, put one of the following SPDX + tag/value pairs into a comment according to the placement + guidelines in the licensing rules documentation. + For 'GNU General Public License (GPL) version 2 only' use: + SPDX-License-Identifier: GPL-2.0 + or + SPDX-License-Identifier: GPL-2.0-only + For 'GNU General Public License (GPL) version 2 or any later version' use: + SPDX-License-Identifier: GPL-2.0+ + or + SPDX-License-Identifier: GPL-2.0-or-later +License-Text: + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/research/h25-c05-at-random-producer-events/inputs/input-002.data b/research/h25-c05-at-random-producer-events/inputs/input-002.data new file mode 100644 index 0000000000..2724455df5 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-002.data @@ -0,0 +1,15 @@ +# Pro14 assessment: named OS provider boundary and AT_RANDOM operation + +Complete response observed17:38:23.750UTC before17:41:37.343UTC, Stopabsent/Responsecomplete. Text SHA256 `e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a`. + +The response agrees with the independently frozen source audit0d91b34b3fc68a33dffccbafc313bc473a55028e9a6b66a7b6ee89e65e08efe4: originalOS/POSIX/loader integrity is an operational premise used beyondinitialbootstrap. A sourceorigin proof can terminate at the precise named genuineOSprovider semantics alreadyrequired by the original checks. Neither completekernelimplementation verification nor cryptographicentropy/FPUalgorithm reconstruction is inherentlyrequired. Strongerfunctionalclaims needappropriateproof; every currentowner/argument/instance/interval and completeinputorigin obligation remains external. Inodezero omission is declaredOSTCBtreatment, not proof arbitraryanonymouscode hasclosedorigin. + +The response directlyreadoriginalGitHubnative/parent/supervisor bodies, but couldnotfetchtheexactLaunchpadkernelbodies. Thoseversionboundfindingsremain reportedinsidePro andindependentlyhashcheckedlocally. The masterinclude/linux/elf.h URL isonlya discoverylead; onlysameexactcommitinputmaybeused. Sourceassociation neednotbecomeanewunrequestedreproduciblebuildrequirement, but currentinstanceadmissionremainsnecessary. + +Prochoosesoneconcrete nextsourceoperation: originalAT_RANDOM16byteproducer/copy/tag/handoffrelation. Successclaim is conditional successfulnativeELFhandoff implies one16bytekernelRNGresult b at theallocatedinitialstackspan p withAT_RANDOM=p andhandoffmemory[p:p+16]=b. No seedvalues, statisticalquality, perpetualmemoryimmutability, actualexecoradmissionflagmaybefabricated. Wholeauxvcatalogue/wholeK/enforcingchannel/completeC05/fullV03 notproved. + +Independentcriticalreviewmustspecificallycheckpreservationthroughhandoff, notsilentlyreplaceitwithcopyreturn/tagtime; allintermediate/laterwrite/ownership/tracing/failure/partialwrite/conversionedges must be justifiedunderoriginalpremises. Any additionalabsenceofexternalwriters/intervalassumption must be explicit, scopedandnotmintedbywitness. The constructor path and caller failures needcomplete analysis; unknownedgeSTOP. This critiqueisnotareporteddefect. + +A separate bounded sourceunit mayreuseexactretainedkernel/provider/auxvec/ABI inputs andatmostspecificallynamedinclude/linux/elf.h definitionheaderifessential. No expansionintoRSEQ/FPU/entropy implementation bodies, no generichelper/installer. Fivesemanticcounterexamples must challengechangedlength/provider/pointer/copy-source/failure-successreasoning independentlyofhashchecks. Code/fixturesareonlynewstaticanalysis,neverkernel/originalexecution. Sourceandindependentapprovalbeforeadoption; closedUnit12remains0/4. + +AlloriginalfullC05/fullV03=false,43.5weighted(22of49activities),2of10stages,1of10milestones,24components/52helpers,originalcaps/commands/outputs/firstfailures preserved. Appgoalservicepaused,currentguardedattemptunapproved,94.550533479/2400policyseconds notcompletephysicalcost,alloutsidecostsOPEN_NOT_ZERO. No newbudget/policy/privilege/runtimeauthorization. diff --git a/research/h25-c05-at-random-producer-events/inputs/input-003.data b/research/h25-c05-at-random-producer-events/inputs/input-003.data new file mode 100644 index 0000000000..0935e72a05 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-003.data @@ -0,0 +1,13332 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/x86 7.0.14 Kernel Configuration +# +CONFIG_CC_VERSION_TEXT="x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0" +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=130300 +CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=24200 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=24200 +CONFIG_LLD_VERSION=0 +CONFIG_RUSTC_VERSION=109101 +CONFIG_RUST_IS_AVAILABLE=y +CONFIG_RUSTC_LLVM_VERSION=210102 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y +CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_TOOLS_SUPPORT_RELR=y +CONFIG_CC_HAS_ASM_INLINE=y +CONFIG_CC_HAS_ASSUME=y +CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y +CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY=y +CONFIG_RUSTC_HAS_SLICE_AS_FLATTENED=y +CONFIG_RUSTC_HAS_COERCE_POINTEE=y +CONFIG_RUSTC_HAS_SPAN_FILE=y +CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES=y +CONFIG_RUSTC_HAS_FILE_WITH_NUL=y +CONFIG_RUSTC_HAS_FILE_AS_C_STR=y +CONFIG_PAHOLE_VERSION=125 +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_WERROR 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 is not set +# 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=y +CONFIG_DEFAULT_INIT="" +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_VERSION_SIGNATURE="Ubuntu 7.0.0-42.42~24.04.1-generic 7.0.14" +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +CONFIG_SYSVIPC_COMPAT=y +CONFIG_POSIX_MQUEUE=y +CONFIG_POSIX_MQUEUE_SYSCTL=y +CONFIG_WATCH_QUEUE=y +CONFIG_CROSS_MEMORY_ATTACH=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_GENERIC_IRQ_CHIP=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_SIM=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_GENERIC_MSI_IRQ=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_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST_IDLE=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 +CONFIG_CONTEXT_TRACKING=y +CONFIG_CONTEXT_TRACKING_IDLE=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +# CONFIG_NO_HZ_IDLE is not set +CONFIG_NO_HZ_FULL=y +CONFIG_CONTEXT_TRACKING_USER=y +# CONFIG_CONTEXT_TRACKING_USER_FORCE is not set +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=100 +CONFIG_POSIX_AUX_CLOCKS=y +# end of Timers subsystem + +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +CONFIG_BPF_JIT_ALWAYS_ON=y +CONFIG_BPF_JIT_DEFAULT_ON=y +CONFIG_BPF_UNPRIV_DEFAULT_OFF=y +# CONFIG_BPF_PRELOAD is not set +CONFIG_BPF_LSM=y +# end of BPF subsystem + +CONFIG_PREEMPT_BUILD=y +CONFIG_ARCH_HAS_PREEMPT_LAZY=y +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_LAZY=y +# CONFIG_PREEMPT_RT is not set +CONFIG_PREEMPT_COUNT=y +CONFIG_PREEMPTION=y +CONFIG_PREEMPT_DYNAMIC=y +CONFIG_SCHED_CORE=y +CONFIG_SCHED_CLASS_EXT=y + +# +# CPU/Task time and stats accounting +# +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_VIRT_CPU_ACCOUNTING_GEN=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_PSI=y +# CONFIG_PSI_DEFAULT_DISABLED is not set +# end of CPU/Task time and stats accounting + +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_TREE_RCU=y +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU_GENERIC=y +CONFIG_NEED_TASKS_RCU=y +CONFIG_TASKS_RCU=y +CONFIG_TASKS_RUDE_RCU=y +CONFIG_TASKS_TRACE_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_RCU_NOCB_CPU=y +# CONFIG_RCU_NOCB_CPU_DEFAULT_ALL is not set +CONFIG_RCU_LAZY=y +CONFIG_RCU_LAZY_DEFAULT_OFF=y +# end of RCU Subsystem + +# CONFIG_IKCONFIG is not set +CONFIG_IKHEADERS=m +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +# CONFIG_PRINTK_INDEX is not set +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y + +# +# Scheduler features +# +CONFIG_UCLAMP_TASK=y +CONFIG_UCLAMP_BUCKETS_COUNT=5 +# end of Scheduler features + +CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y +CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y +CONFIG_CC_HAS_INT128=y +CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5" +CONFIG_GCC10_NO_ARRAY_BOUNDS=y +CONFIG_CC_NO_ARRAY_BOUNDS=y +CONFIG_GCC_NO_STRINGOP_OVERFLOW=y +CONFIG_CC_NO_STRINGOP_OVERFLOW=y +CONFIG_ARCH_SUPPORTS_INT128=y +CONFIG_NUMA_BALANCING=y +CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y +CONFIG_SLAB_OBJ_EXT=y +CONFIG_CGROUPS=y +CONFIG_PAGE_COUNTER=y +# CONFIG_CGROUP_FAVOR_DYNMODS is not set +CONFIG_MEMCG=y +CONFIG_MEMCG_V1=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_WRITEBACK=y +CONFIG_CGROUP_SCHED=y +CONFIG_GROUP_SCHED_WEIGHT=y +CONFIG_GROUP_SCHED_BANDWIDTH=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +# CONFIG_RT_GROUP_SCHED is not set +CONFIG_EXT_GROUP_SCHED=y +CONFIG_SCHED_MM_CID=y +CONFIG_UCLAMP_TASK_GROUP=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_RDMA=y +CONFIG_CGROUP_DMEM=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CPUSETS=y +CONFIG_CPUSETS_V1=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_BPF=y +CONFIG_CGROUP_MISC=y +# CONFIG_CGROUP_DEBUG is not set +CONFIG_SOCK_CGROUP_DATA=y +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_TIME_NS=y +CONFIG_IPC_NS=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_NET_NS=y +CONFIG_CHECKPOINT_RESTORE=y +CONFIG_SCHED_AUTOGROUP=y +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=y +# CONFIG_BOOT_CONFIG_FORCE is not set +# CONFIG_BOOT_CONFIG_EMBED is not set +CONFIG_CMDLINE_LOG_WRAP_IDEAL_LEN=1021 +CONFIG_INITRAMFS_PRESERVE_MTIME=y +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_LD_ORPHAN_WARN=y +CONFIG_LD_ORPHAN_WARN_LEVEL="warn" +CONFIG_SYSCTL=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_SYSFS_SYSCALL=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_EXPERT=y +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SGETMASK_SYSCALL=y +CONFIG_FHANDLE=y +CONFIG_POSIX_TIMERS=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_PCSPKR_PLATFORM=y +# CONFIG_BASE_SMALL is not set +CONFIG_FUTEX=y +CONFIG_FUTEX_PI=y +CONFIG_FUTEX_PRIVATE_HASH=y +CONFIG_FUTEX_MPOL=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +CONFIG_AIO=y +CONFIG_IO_URING=y +CONFIG_IO_URING_MOCK_FILE=m +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KCMP=y +CONFIG_RSEQ=y +# CONFIG_RSEQ_SLICE_EXTENSION is not set +# CONFIG_RSEQ_STATS is not set +# CONFIG_RSEQ_DEBUG_DEFAULT_ENABLE is not set +CONFIG_CACHESTAT_SYSCALL=y +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_SELFTEST is not set +CONFIG_KALLSYMS_ALL=y +CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_GUEST_PERF_EVENTS=y +CONFIG_PERF_GUEST_MEDIATED_PMU=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_SYSTEM_DATA_VERIFICATION=y +CONFIG_PROFILING=y +CONFIG_RUST=y +CONFIG_RUSTC_VERSION_TEXT="rustc 1.91.1 (ed61e7d7e 2025-11-07) (built from a source tarball)" +CONFIG_BINDGEN_VERSION_TEXT="bindgen 0.65.1" +CONFIG_TRACEPOINTS=y + +# +# Kexec and crash features +# +CONFIG_CRASH_RESERVE=y +CONFIG_VMCORE_INFO=y +CONFIG_KEXEC_CORE=y +CONFIG_HAVE_IMA_KEXEC=y +CONFIG_KEXEC=y +CONFIG_KEXEC_FILE=y +CONFIG_KEXEC_SIG=y +# CONFIG_KEXEC_SIG_FORCE is not set +CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y +CONFIG_KEXEC_JUMP=y +CONFIG_CRASH_DUMP=y +CONFIG_CRASH_DM_CRYPT=y +CONFIG_CRASH_DM_CRYPT_CONFIGS=y +CONFIG_CRASH_HOTPLUG=y +CONFIG_CRASH_MAX_MEMORY_RANGES=8192 +# end of Kexec and crash features + +# +# Live Update and Kexec HandOver +# +CONFIG_KEXEC_HANDOVER=y +# CONFIG_KEXEC_HANDOVER_DEBUG is not set +CONFIG_KEXEC_HANDOVER_DEBUGFS=y +CONFIG_KEXEC_HANDOVER_ENABLE_DEFAULT=y +CONFIG_LIVEUPDATE=y +CONFIG_LIVEUPDATE_MEMFD=y +# end of Live Update and Kexec HandOver +# 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_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_AUDIT_ARCH=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_DYNAMIC_PHYSICAL_MASK=y +CONFIG_PGTABLE_LEVELS=5 + +# +# Processor type and features +# +CONFIG_SMP=y +CONFIG_X86_X2APIC=y +CONFIG_AMD_SECURE_AVIC=y +# CONFIG_X86_POSTED_MSI is not set +CONFIG_X86_MPPARSE=y +CONFIG_X86_CPU_RESCTRL=y +CONFIG_X86_FRED=y +CONFIG_X86_EXTENDED_PLATFORM=y +CONFIG_X86_NUMACHIP=y +# CONFIG_X86_VSMP is not set +CONFIG_X86_UV=y +# CONFIG_X86_INTEL_MID is not set +# CONFIG_X86_GOLDFISH is not set +CONFIG_X86_INTEL_LPSS=y +CONFIG_X86_AMD_PLATFORM_DEVICE=y +CONFIG_IOSF_MBI=y +CONFIG_IOSF_MBI_DEBUG=y +CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_HYPERVISOR_GUEST=y +CONFIG_PARAVIRT=y +CONFIG_PARAVIRT_XXL=y +CONFIG_PARAVIRT_SPINLOCKS=y +CONFIG_X86_HV_CALLBACK_VECTOR=y +CONFIG_XEN=y +CONFIG_XEN_PV=y +CONFIG_XEN_512GB=y +CONFIG_XEN_PV_SMP=y +CONFIG_XEN_PV_DOM0=y +CONFIG_XEN_PVHVM=y +CONFIG_XEN_PVHVM_SMP=y +CONFIG_XEN_PVHVM_GUEST=y +# CONFIG_XEN_DEBUG_FS is not set +CONFIG_XEN_PVH=y +CONFIG_XEN_DOM0=y +CONFIG_XEN_PV_MSR_SAFE=y +CONFIG_KVM_GUEST=y +CONFIG_ARCH_CPUIDLE_HALTPOLL=y +CONFIG_PVH=y +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARAVIRT_CLOCK=y +CONFIG_JAILHOUSE_GUEST=y +CONFIG_ACRN_GUEST=y +CONFIG_BHYVE_GUEST=y +CONFIG_INTEL_TDX_GUEST=y +CONFIG_CC_HAS_MARCH_NATIVE=y +CONFIG_RUSTC_HAS_APXF=y +# CONFIG_X86_NATIVE_CPU is not set +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_TSC=y +CONFIG_X86_HAVE_PAE=y +CONFIG_X86_CX8=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_PROCESSOR_SELECT=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_BROADCAST_TLB_FLUSH=y +CONFIG_HPET_TIMER=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_DMI=y +CONFIG_GART_IOMMU=y +CONFIG_BOOT_VESA_SUPPORT=y +CONFIG_MAXSMP=y +CONFIG_NR_CPUS_RANGE_BEGIN=8192 +CONFIG_NR_CPUS_RANGE_END=8192 +CONFIG_NR_CPUS_DEFAULT=8192 +CONFIG_NR_CPUS=8192 +CONFIG_SCHED_MC_PRIO=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_ACPI_MADT_WAKEUP=y +CONFIG_X86_IO_APIC=y +CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y +CONFIG_X86_MCE=y +CONFIG_X86_MCELOG_LEGACY=y +CONFIG_X86_MCE_INTEL=y +CONFIG_X86_MCE_AMD=y +CONFIG_X86_MCE_THRESHOLD=y +CONFIG_X86_MCE_INJECT=m + +# +# Performance monitoring +# +CONFIG_PERF_EVENTS_INTEL_UNCORE=y +CONFIG_PERF_EVENTS_INTEL_RAPL=m +CONFIG_PERF_EVENTS_INTEL_CSTATE=m +# CONFIG_PERF_EVENTS_AMD_POWER is not set +CONFIG_PERF_EVENTS_AMD_UNCORE=m +CONFIG_PERF_EVENTS_AMD_BRS=y +# end of Performance monitoring + +CONFIG_X86_16BIT=y +CONFIG_X86_ESPFIX64=y +CONFIG_X86_VSYSCALL_EMULATION=y +CONFIG_X86_IOPL_IOPERM=y +CONFIG_MICROCODE=y +# CONFIG_MICROCODE_LATE_LOADING is not set +# CONFIG_MICROCODE_DBG is not set +CONFIG_X86_MSR=m +CONFIG_X86_CPUID=m +CONFIG_X86_DIRECT_GBPAGES=y +# CONFIG_X86_CPA_STATISTICS is not set +CONFIG_X86_MEM_ENCRYPT=y +CONFIG_AMD_MEM_ENCRYPT=y +CONFIG_NUMA=y +CONFIG_AMD_NUMA=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_NODES_SHIFT=10 +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_MEMORY_PROBE=y +CONFIG_ARCH_PROC_KCORE_TEXT=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_X86_PMEM_LEGACY_DEVICE=y +CONFIG_X86_PMEM_LEGACY=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_MTRR=y +CONFIG_MTRR_SANITIZER=y +CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=1 +CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 +CONFIG_X86_PAT=y +CONFIG_X86_UMIP=y +CONFIG_CC_HAS_IBT=y +CONFIG_X86_CET=y +# CONFIG_X86_KERNEL_IBT is not set +CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y +CONFIG_ARCH_PKEY_BITS=4 +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=y +CONFIG_X86_USER_SHADOW_STACK=y +CONFIG_INTEL_TDX_HOST=y +CONFIG_EFI=y +CONFIG_EFI_STUB=y +CONFIG_EFI_HANDOVER_PROTOCOL=y +CONFIG_EFI_MIXED=y +CONFIG_EFI_RUNTIME_MAP=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_ARCH_SUPPORTS_KEXEC=y +CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y +CONFIG_ARCH_SELECTS_KEXEC_FILE=y +CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY=y +CONFIG_ARCH_SUPPORTS_KEXEC_SIG=y +CONFIG_ARCH_SUPPORTS_KEXEC_SIG_FORCE=y +CONFIG_ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG=y +CONFIG_ARCH_SUPPORTS_KEXEC_JUMP=y +CONFIG_ARCH_SUPPORTS_KEXEC_HANDOVER=y +CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y +CONFIG_ARCH_DEFAULT_CRASH_DUMP=y +CONFIG_ARCH_SUPPORTS_CRASH_HOTPLUG=y +CONFIG_ARCH_HAS_GENERIC_CRASHKERNEL_RESERVATION=y +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_RELOCATABLE=y +CONFIG_RANDOMIZE_BASE=y +CONFIG_X86_NEED_RELOCS=y +CONFIG_PHYSICAL_ALIGN=0x200000 +CONFIG_RANDOMIZE_MEMORY=y +CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING=0xa +CONFIG_HOTPLUG_CPU=y +# CONFIG_COMPAT_VDSO 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_STRICT_SIGALTSTACK_SIZE is not set +CONFIG_HAVE_LIVEPATCH=y +CONFIG_LIVEPATCH=y +CONFIG_HAVE_KLP_BUILD=y +CONFIG_KLP_BUILD=y +CONFIG_X86_BUS_LOCK_DETECT=y +# end of Processor type and features + +CONFIG_CC_HAS_NAMED_AS=y +CONFIG_CC_HAS_NAMED_AS_FIXED_SANITIZERS=y +CONFIG_USE_X86_SEG_SUPPORT=y +CONFIG_CC_HAS_SLS=y +CONFIG_CC_HAS_RETURN_THUNK=y +CONFIG_CC_HAS_ENTRY_PADDING=y +CONFIG_FUNCTION_PADDING_CFI=11 +CONFIG_FUNCTION_PADDING_BYTES=16 +CONFIG_CALL_PADDING=y +CONFIG_HAVE_CALL_THUNKS=y +CONFIG_CALL_THUNKS=y +CONFIG_CPU_MITIGATIONS=y +CONFIG_MITIGATION_PAGE_TABLE_ISOLATION=y +CONFIG_MITIGATION_RETPOLINE=y +CONFIG_MITIGATION_RETHUNK=y +CONFIG_MITIGATION_UNRET_ENTRY=y +CONFIG_MITIGATION_CALL_DEPTH_TRACKING=y +# CONFIG_CALL_THUNKS_DEBUG is not set +CONFIG_MITIGATION_IBPB_ENTRY=y +CONFIG_MITIGATION_IBRS_ENTRY=y +CONFIG_MITIGATION_SRSO=y +CONFIG_MITIGATION_SLS=y +# CONFIG_MITIGATION_GDS is not set +CONFIG_MITIGATION_RFDS=y +CONFIG_MITIGATION_SPECTRE_BHI=y +CONFIG_MITIGATION_MDS=y +CONFIG_MITIGATION_TAA=y +CONFIG_MITIGATION_MMIO_STALE_DATA=y +CONFIG_MITIGATION_L1TF=y +CONFIG_MITIGATION_RETBLEED=y +CONFIG_MITIGATION_SPECTRE_V1=y +CONFIG_MITIGATION_SPECTRE_V2=y +CONFIG_MITIGATION_SRBDS=y +CONFIG_MITIGATION_SSB=y +CONFIG_MITIGATION_ITS=y +CONFIG_MITIGATION_TSA=y +CONFIG_MITIGATION_VMSCAPE=y +CONFIG_ARCH_HAS_ADD_PAGES=y + +# +# Power management and ACPI options +# +CONFIG_ARCH_HIBERNATION_HEADER=y +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_SUSPEND_SKIP_SYNC is not set +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_HIBERNATION_SNAPSHOT_DEV=y +CONFIG_HIBERNATION_COMP_LZO=y +# CONFIG_HIBERNATION_COMP_LZ4 is not set +CONFIG_HIBERNATION_DEF_COMP="lzo" +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_USERSPACE_AUTOSLEEP is not set +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PM_WAKELOCKS_GC=y +CONFIG_PM_QOS_CPU_SYSTEM_WAKEUP=y +CONFIG_PM=y +CONFIG_PM_DEBUG=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_SLEEP_DEBUG=y +# CONFIG_DPM_WATCHDOG is not set +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_CLK=y +CONFIG_PM_GENERIC_DOMAINS=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +CONFIG_PM_GENERIC_DOMAINS_SLEEP=y +CONFIG_ENERGY_MODEL=y +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_TABLE_LIB=y +CONFIG_ACPI_THERMAL_LIB=y +CONFIG_ACPI_DEBUGGER=y +CONFIG_ACPI_DEBUGGER_USER=y +CONFIG_ACPI_SPCR_TABLE=y +CONFIG_ACPI_FPDT=y +CONFIG_ACPI_LPIT=y +CONFIG_ACPI_SLEEP=y +CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y +CONFIG_ACPI_EC=y +CONFIG_ACPI_EC_DEBUGFS=m +CONFIG_ACPI_AC=y +CONFIG_ACPI_BATTERY=y +CONFIG_ACPI_BUTTON=y +CONFIG_ACPI_VIDEO=m +CONFIG_ACPI_FAN=y +CONFIG_ACPI_TAD=m +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_IPMI=m +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +CONFIG_ACPI_THERMAL=y +CONFIG_ACPI_PLATFORM_PROFILE=y +CONFIG_ACPI_CUSTOM_DSDT_FILE="" +CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_TABLE_UPGRADE=y +CONFIG_ACPI_DEBUG=y +CONFIG_ACPI_PCI_SLOT=y +CONFIG_ACPI_CONTAINER=y +CONFIG_ACPI_HOTPLUG_MEMORY=y +CONFIG_ACPI_HOTPLUG_IOAPIC=y +CONFIG_ACPI_SBS=m +CONFIG_ACPI_HED=y +CONFIG_ACPI_BGRT=y +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +CONFIG_ACPI_NHLT=y +CONFIG_ACPI_NFIT=m +# CONFIG_NFIT_SECURITY_DEBUG is not set +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_HMAT=y +CONFIG_HAVE_ACPI_APEI=y +CONFIG_HAVE_ACPI_APEI_NMI=y +CONFIG_ACPI_APEI=y +CONFIG_ACPI_APEI_GHES=y +CONFIG_ACPI_APEI_PCIEAER=y +CONFIG_ACPI_APEI_MEMORY_FAILURE=y +CONFIG_ACPI_APEI_EINJ=m +CONFIG_ACPI_APEI_EINJ_CXL=y +# CONFIG_ACPI_APEI_ERST_DEBUG is not set +CONFIG_ACPI_DPTF=y +CONFIG_DPTF_POWER=m +CONFIG_DPTF_PCH_FIVR=m +CONFIG_ACPI_WATCHDOG=y +CONFIG_ACPI_EXTLOG=m +CONFIG_ACPI_ADXL=y +CONFIG_ACPI_CONFIGFS=m +CONFIG_ACPI_PFRUT=m +CONFIG_ACPI_PCC=y +CONFIG_ACPI_FFH=y +CONFIG_ACPI_MRRM=y +CONFIG_PMIC_OPREGION=y +CONFIG_BYTCRC_PMIC_OPREGION=y +CONFIG_CHTCRC_PMIC_OPREGION=y +CONFIG_XPOWER_PMIC_OPREGION=y +CONFIG_BXT_WC_PMIC_OPREGION=y +CONFIG_CHT_WC_PMIC_OPREGION=y +CONFIG_CHT_DC_TI_PMIC_OPREGION=y +CONFIG_TPS68470_PMIC_OPREGION=y +CONFIG_ACPI_VIOT=y +CONFIG_ACPI_PRMT=y +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=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +CONFIG_X86_INTEL_PSTATE=y +CONFIG_X86_PCC_CPUFREQ=y +CONFIG_X86_AMD_PSTATE=y +CONFIG_X86_AMD_PSTATE_DEFAULT_MODE=3 +# CONFIG_X86_AMD_PSTATE_DYNAMIC_EPP is not set +# CONFIG_X86_AMD_PSTATE_UT is not set +CONFIG_X86_ACPI_CPUFREQ=y +CONFIG_X86_ACPI_CPUFREQ_CPB=y +CONFIG_X86_POWERNOW_K8=y +CONFIG_X86_AMD_FREQ_SENSITIVITY=m +CONFIG_X86_SPEEDSTEP_CENTRINO=y +CONFIG_X86_P4_CLOCKMOD=m + +# +# shared options +# +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_CPUFREQ_ARCH_CUR_FREQ=y +# end of CPU Frequency scaling + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_IDLE_GOV_TEO=y +CONFIG_CPU_IDLE_GOV_HALTPOLL=y +CONFIG_HALTPOLL_CPUIDLE=m +# end of CPU Idle + +CONFIG_INTEL_IDLE=y +# end of Power management and ACPI options + +# +# Bus options (PCI etc.) +# +CONFIG_PCI_DIRECT=y +CONFIG_PCI_MMCONFIG=y +CONFIG_PCI_XEN=y +CONFIG_MMCONF_FAM10H=y +CONFIG_ISA_BUS=y +CONFIG_ISA_DMA_API=y +CONFIG_AMD_NB=y +CONFIG_AMD_NODE=y +# end of Bus options (PCI etc.) + +# +# Binary Emulations +# +CONFIG_IA32_EMULATION=y +# CONFIG_IA32_EMULATION_DEFAULT_DISABLED is not set +# CONFIG_X86_X32_ABI is not set +CONFIG_COMPAT_32=y +CONFIG_COMPAT=y +CONFIG_COMPAT_FOR_U64_ALIGNMENT=y +# end of Binary Emulations + +CONFIG_KVM_COMMON=y +CONFIG_HAVE_KVM_PFNCACHE=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_IRQ_ROUTING=y +CONFIG_HAVE_KVM_DIRTY_RING=y +CONFIG_HAVE_KVM_DIRTY_RING_TSO=y +CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL=y +CONFIG_KVM_MMIO=y +CONFIG_KVM_ASYNC_PF=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_READONLY_MEM=y +CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y +CONFIG_KVM_VFIO=y +CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y +CONFIG_KVM_GENERIC_PRE_FAULT_MEMORY=y +CONFIG_KVM_COMPAT=y +CONFIG_HAVE_KVM_IRQ_BYPASS=m +CONFIG_HAVE_KVM_NO_POLL=y +CONFIG_VIRT_XFER_TO_GUEST_WORK=y +CONFIG_HAVE_KVM_PM_NOTIFIER=y +CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y +CONFIG_KVM_ELIDE_TLB_FLUSH_IF_YOUNG=y +CONFIG_KVM_MMU_LOCKLESS_AGING=y +CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES=y +CONFIG_KVM_GUEST_MEMFD=y +CONFIG_HAVE_KVM_ARCH_GMEM_PREPARE=y +CONFIG_HAVE_KVM_ARCH_GMEM_INVALIDATE=y +CONFIG_HAVE_KVM_ARCH_GMEM_POPULATE=y +CONFIG_VIRTUALIZATION=y +CONFIG_KVM_X86=m +CONFIG_KVM=m +CONFIG_KVM_WERROR=y +CONFIG_KVM_SW_PROTECTED_VM=y +CONFIG_KVM_INTEL=m +CONFIG_KVM_INTEL_PROVE_VE=y +CONFIG_X86_SGX_KVM=y +CONFIG_KVM_INTEL_TDX=y +CONFIG_KVM_AMD=m +CONFIG_KVM_AMD_SEV=y +CONFIG_KVM_IOAPIC=y +CONFIG_KVM_SMM=y +CONFIG_KVM_HYPERV=y +CONFIG_KVM_XEN=y +# CONFIG_KVM_PROVE_MMU is not set +CONFIG_KVM_EXTERNAL_WRITE_TRACKING=y +CONFIG_KVM_MAX_NR_VCPUS=4096 +CONFIG_X86_REQUIRED_FEATURE_ALWAYS=y +CONFIG_X86_REQUIRED_FEATURE_NOPL=y +CONFIG_X86_REQUIRED_FEATURE_CX8=y +CONFIG_X86_REQUIRED_FEATURE_CMOV=y +CONFIG_X86_REQUIRED_FEATURE_CPUID=y +CONFIG_X86_REQUIRED_FEATURE_FPU=y +CONFIG_X86_REQUIRED_FEATURE_PAE=y +CONFIG_X86_REQUIRED_FEATURE_MSR=y +CONFIG_X86_REQUIRED_FEATURE_FXSR=y +CONFIG_X86_REQUIRED_FEATURE_XMM=y +CONFIG_X86_REQUIRED_FEATURE_XMM2=y +CONFIG_X86_REQUIRED_FEATURE_LM=y +CONFIG_X86_DISABLED_FEATURE_VME=y +CONFIG_X86_DISABLED_FEATURE_K6_MTRR=y +CONFIG_X86_DISABLED_FEATURE_CYRIX_ARR=y +CONFIG_X86_DISABLED_FEATURE_CENTAUR_MCR=y +CONFIG_X86_DISABLED_FEATURE_LAM=y +CONFIG_X86_DISABLED_FEATURE_IBT=y +CONFIG_AS_WRUSS=y +CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y +CONFIG_ARCH_HAS_DMA_OPS=y + +# +# General architecture-dependent options +# +CONFIG_HOTPLUG_SMT=y +CONFIG_ARCH_SUPPORTS_SCHED_SMT=y +CONFIG_ARCH_SUPPORTS_SCHED_CLUSTER=y +CONFIG_ARCH_SUPPORTS_SCHED_MC=y +CONFIG_SCHED_SMT=y +CONFIG_SCHED_CLUSTER=y +CONFIG_SCHED_MC=y +CONFIG_HOTPLUG_CORE_SYNC=y +CONFIG_HOTPLUG_CORE_SYNC_DEAD=y +CONFIG_HOTPLUG_CORE_SYNC_FULL=y +CONFIG_HOTPLUG_SPLIT_STARTUP=y +CONFIG_HOTPLUG_PARALLEL=y +CONFIG_GENERIC_IRQ_ENTRY=y +CONFIG_GENERIC_SYSCALL=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_KPROBES_ON_FTRACE=y +CONFIG_UPROBES=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_ARCH_USE_BUILTIN_BSWAP=y +CONFIG_KRETPROBES=y +CONFIG_KRETPROBE_ON_RETHOOK=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_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y +CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y +CONFIG_HAVE_NMI=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=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_ARCH_HAS_CPU_FINALIZE_INIT=y +CONFIG_ARCH_HAS_CPU_PASID=y +CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y +CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y +CONFIG_ARCH_WANTS_NO_INSTR=y +CONFIG_HAVE_ASM_MODVERSIONS=y +CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y +CONFIG_HAVE_RSEQ=y +CONFIG_HAVE_RUST=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_UNWIND_USER=y +CONFIG_HAVE_UNWIND_USER_FP=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_MMU_GATHER_TABLE_FREE=y +CONFIG_MMU_GATHER_RCU_TABLE_FREE=y +CONFIG_MMU_GATHER_MERGE_VMAS=y +CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM=y +CONFIG_MMU_LAZY_TLB_REFCOUNT=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y +CONFIG_ARCH_HAVE_EXTRA_ELF_NOTES=y +CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=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_KSTACK_ERASE=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_ARCH_SUPPORTS_AUTOFDO_CLANG=y +CONFIG_ARCH_SUPPORTS_PROPELLER_CLANG=y +CONFIG_ARCH_SUPPORTS_CFI=y +CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y +CONFIG_HAVE_CONTEXT_TRACKING_USER=y +CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_PV_STEAL_CLOCK_GEN=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_HAVE_ARCH_HUGE_VMALLOC=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_WANT_PMD_MKWRITE=y +CONFIG_HAVE_ARCH_SOFT_DIRTY=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_ARCH_HAS_EXECMEM_ROX=y +CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y +CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y +CONFIG_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=32 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=16 +CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_HAVE_PAGE_SIZE_4KB=y +CONFIG_PAGE_SIZE_4KB=y +CONFIG_PAGE_SIZE_LESS_THAN_64KB=y +CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_PAGE_SHIFT=12 +CONFIG_HAVE_OBJTOOL=y +CONFIG_HAVE_JUMP_LABEL_HACK=y +CONFIG_HAVE_NOINSTR_HACK=y +CONFIG_HAVE_NOINSTR_VALIDATION=y +CONFIG_HAVE_UACCESS_VALIDATION=y +CONFIG_HAVE_STACK_VALIDATION=y +CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_ISA_BUS_API=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y +CONFIG_COMPAT_32BIT_TIME=y +CONFIG_ARCH_SUPPORTS_RT=y +CONFIG_HAVE_ARCH_VMAP_STACK=y +CONFIG_VMAP_STACK=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET=y +CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=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_ARCH_HAS_CPU_RESCTRL=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_ARCH_HAS_CC_PLATFORM=y +CONFIG_HAVE_STATIC_CALL=y +CONFIG_HAVE_STATIC_CALL_INLINE=y +CONFIG_HAVE_PREEMPT_DYNAMIC=y +CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y +CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y +CONFIG_ARCH_HAS_ELFCORE_COMPAT=y +CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y +CONFIG_DYNAMIC_SIGFRAME=y +CONFIG_HAVE_ARCH_NODE_DEV_GROUP=y +CONFIG_ARCH_HAS_HW_PTE_YOUNG=y +CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y +CONFIG_ARCH_HAS_KERNEL_FPU_SUPPORT=y +CONFIG_ARCH_VMLINUX_NEEDS_RELOCS=y +CONFIG_HAVE_GENERIC_TIF_BITS=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_FUNCTION_ALIGNMENT_4B=y +CONFIG_FUNCTION_ALIGNMENT_16B=y +CONFIG_FUNCTION_ALIGNMENT=16 +CONFIG_ARCH_HAS_CPU_ATTACK_VECTORS=y +CONFIG_HAVE_ARCH_GET_SECUREBOOT=y +# end of General architecture-dependent options + +CONFIG_RT_MUTEXES=y +CONFIG_MODULE_SIG_FORMAT=y +CONFIG_MODULES=y +# CONFIG_MODULE_DEBUG is not set +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODULE_UNLOAD_TAINT_TRACKING is not set +CONFIG_MODVERSIONS=y +# CONFIG_GENKSYMS is not set +CONFIG_GENDWARFKSYMS=y +CONFIG_ASM_MODVERSIONS=y +CONFIG_EXTENDED_MODVERSIONS=y +CONFIG_BASIC_MODVERSIONS=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODULE_SIG=y +# CONFIG_MODULE_SIG_FORCE is not set +CONFIG_MODULE_SIG_ALL=y +# CONFIG_MODULE_SIG_SHA256 is not set +# CONFIG_MODULE_SIG_SHA384 is not set +CONFIG_MODULE_SIG_SHA512=y +# CONFIG_MODULE_SIG_SHA3_256 is not set +# CONFIG_MODULE_SIG_SHA3_384 is not set +# CONFIG_MODULE_SIG_SHA3_512 is not set +CONFIG_MODULE_SIG_HASH="sha512" +CONFIG_MODULE_COMPRESS=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +CONFIG_MODULE_COMPRESS_ZSTD=y +# CONFIG_MODULE_COMPRESS_ALL is not set +CONFIG_MODULE_DECOMPRESS=y +# CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_BLOCK_LEGACY_AUTOLOAD=y +CONFIG_BLK_RQ_ALLOC_TIME=y +CONFIG_BLK_CGROUP_RWSTAT=y +CONFIG_BLK_CGROUP_PUNT_BIO=y +CONFIG_BLK_DEV_BSG_COMMON=y +CONFIG_BLK_ICQ=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_BLK_DEV_WRITE_MOUNTED=y +CONFIG_BLK_DEV_ZONED=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLK_WBT=y +CONFIG_BLK_WBT_MQ=y +# CONFIG_BLK_CGROUP_IOLATENCY is not set +CONFIG_BLK_CGROUP_FC_APPID=y +CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_BLK_CGROUP_IOPRIO=y +CONFIG_BLK_DEBUG_FS=y +CONFIG_BLK_SED_OPAL=y +CONFIG_BLK_INLINE_ENCRYPTION=y +CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +CONFIG_AIX_PARTITION=y +CONFIG_OSF_PARTITION=y +CONFIG_AMIGA_PARTITION=y +CONFIG_ATARI_PARTITION=y +CONFIG_MAC_PARTITION=y +CONFIG_MSDOS_PARTITION=y +CONFIG_BSD_DISKLABEL=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_LDM_PARTITION=y +# CONFIG_LDM_DEBUG is not set +CONFIG_SGI_PARTITION=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_SUN_PARTITION=y +CONFIG_KARMA_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_SYSV68_PARTITION=y +CONFIG_CMDLINE_PARTITION=y +# end of Partition Types + +CONFIG_BLK_PM=y +CONFIG_BLOCK_HOLDER_DEPRECATED=y +CONFIG_BLK_MQ_STACKING=y + +# +# IO Schedulers +# +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=m +CONFIG_IOSCHED_BFQ=m +CONFIG_BFQ_GROUP_IOSCHED=y +# CONFIG_BFQ_CGROUP_DEBUG is not set +# end of IO Schedulers + +CONFIG_PREEMPT_NOTIFIERS=y +CONFIG_PADATA=y +CONFIG_ASN1=y +CONFIG_UNINLINE_SPIN_UNLOCK=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=m +CONFIG_COREDUMP=y +# end of Executable file formats + +# +# Memory Management options +# +CONFIG_SWAP=y +CONFIG_ZSWAP=y +# CONFIG_ZSWAP_DEFAULT_ON is not set +CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set +# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set +CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo" +CONFIG_ZSMALLOC=y + +# +# Zsmalloc allocator options +# + +# +# Zsmalloc is a common backend allocator for zswap & zram +# +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_ZSMALLOC_CHAIN_SIZE=8 +# end of Zsmalloc allocator options + +# +# Slab allocator options +# +CONFIG_SLUB=y +CONFIG_KVFREE_RCU_BATCHED=y +# CONFIG_SLUB_TINY is not set +CONFIG_SLAB_MERGE_DEFAULT=y +CONFIG_SLAB_FREELIST_RANDOM=y +CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SLAB_BUCKETS=y +# CONFIG_SLUB_STATS is not set +CONFIG_RANDOM_KMALLOC_CACHES=y +# end of Slab allocator options + +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y +# CONFIG_COMPAT_BRK is not set +CONFIG_SPARSEMEM=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_SPARSEMEM_VMEMMAP_PREINIT=y +CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=y +CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y +CONFIG_ARCH_WANT_HUGETLB_VMEMMAP_PREINIT=y +CONFIG_HAVE_GUP_FAST=y +CONFIG_MEMBLOCK_KHO_SCRATCH=y +CONFIG_ARCH_KEEP_MEMBLOCK=y +CONFIG_NUMA_KEEP_MEMINFO=y +CONFIG_MEMORY_ISOLATION=y +CONFIG_EXCLUSIVE_SYSTEM_RAM=y +CONFIG_HAVE_BOOTMEM_INFO_NODE=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_MEMORY_HOTPLUG=y +# CONFIG_MHP_DEFAULT_ONLINE_TYPE_OFFLINE is not set +CONFIG_MHP_DEFAULT_ONLINE_TYPE_ONLINE_AUTO=y +# CONFIG_MHP_DEFAULT_ONLINE_TYPE_ONLINE_KERNEL is not set +# CONFIG_MHP_DEFAULT_ONLINE_TYPE_ONLINE_MOVABLE is not set +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MHP_MEMMAP_ON_MEMORY=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y +CONFIG_SPLIT_PTE_PTLOCKS=y +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_SPLIT_PMD_PTLOCKS=y +CONFIG_BALLOON=y +CONFIG_BALLOON_MIGRATION=y +CONFIG_COMPACTION=y +CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1 +CONFIG_PAGE_REPORTING=y +CONFIG_MIGRATION=y +CONFIG_DEVICE_MIGRATION=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y +CONFIG_CONTIG_ALLOC=y +CONFIG_PCP_BATCH_SCALE_MAX=5 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_MMU_NOTIFIER=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_MEMORY_FAILURE=y +CONFIG_HWPOISON_INJECT=m +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_WANTS_THP_SWAP=y +# CONFIG_PERSISTENT_HUGE_ZERO_FOLIO is not set +CONFIG_MM_ID=y +CONFIG_TRANSPARENT_HUGEPAGE=y +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +# CONFIG_TRANSPARENT_HUGEPAGE_NEVER is not set +CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_NEVER=y +# CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_ALWAYS is not set +# CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_WITHIN_SIZE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_SHMEM_HUGE_ADVISE is not set +CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_NEVER=y +# CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_ALWAYS is not set +# CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_WITHIN_SIZE is not set +# CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_ADVISE is not set +CONFIG_THP_SWAP=y +# CONFIG_READ_ONLY_THP_FOR_FS is not set +# CONFIG_NO_PAGE_MAPCOUNT is not set +CONFIG_PAGE_MAPCOUNT=y +CONFIG_PGTABLE_HAS_HUGE_LEAVES=y +CONFIG_HAVE_GIGANTIC_FOLIOS=y +CONFIG_ASYNC_KERNEL_PGTABLE_FREE=y +CONFIG_ARCH_SUPPORTS_HUGE_PFNMAP=y +CONFIG_ARCH_SUPPORTS_PMD_PFNMAP=y +CONFIG_ARCH_SUPPORTS_PUD_PFNMAP=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y +CONFIG_USE_PERCPU_NUMA_NODE_ID=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_CMA=y +CONFIG_CMA_DEBUGFS=y +CONFIG_CMA_SYSFS=y +CONFIG_CMA_AREAS=20 +CONFIG_PAGE_BLOCK_MAX_ORDER=10 +CONFIG_MEM_SOFT_DIRTY=y +CONFIG_GENERIC_EARLY_IOREMAP=y +# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set +CONFIG_PAGE_IDLE_FLAG=y +CONFIG_IDLE_PAGE_TRACKING=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y +CONFIG_ARCH_HAS_ZONE_DMA_SET=y +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA32=y +CONFIG_ZONE_DEVICE=y +CONFIG_HMM_MIRROR=y +CONFIG_GET_FREE_REGION=y +CONFIG_DEVICE_PRIVATE=y +CONFIG_VMAP_PFN=y +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y +CONFIG_ARCH_HAS_PKEYS=y +CONFIG_ARCH_USES_PG_ARCH_2=y +CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_PERCPU_STATS is not set +# CONFIG_GUP_TEST is not set +# CONFIG_DMAPOOL_TEST is not set +CONFIG_ARCH_HAS_PTE_SPECIAL=y +CONFIG_MAPPING_DIRTY_HELPERS=y +CONFIG_MEMFD_CREATE=y +CONFIG_SECRETMEM=y +CONFIG_ANON_VMA_NAME=y +CONFIG_HAVE_ARCH_USERFAULTFD_WP=y +CONFIG_HAVE_ARCH_USERFAULTFD_MINOR=y +CONFIG_USERFAULTFD=y +CONFIG_PTE_MARKER_UFFD_WP=y +CONFIG_LRU_GEN=y +CONFIG_LRU_GEN_ENABLED=y +# CONFIG_LRU_GEN_STATS is not set +CONFIG_LRU_GEN_WALKS_MMU=y +CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y +CONFIG_PER_VMA_LOCK=y +CONFIG_LOCK_MM_AND_FIND_VMA=y +CONFIG_IOMMU_MM_DATA=y +CONFIG_EXECMEM=y +CONFIG_NUMA_MEMBLKS=y +# CONFIG_NUMA_EMU is not set +CONFIG_ARCH_HAS_USER_SHADOW_STACK=y +CONFIG_PT_RECLAIM=y +CONFIG_FIND_NORMAL_PAGE=y +CONFIG_ARCH_HAS_LAZY_MMU_MODE=y + +# +# Data Access Monitoring +# +# CONFIG_DAMON is not set +# end of Data Access Monitoring +# end of Memory Management options + +CONFIG_NET=y +CONFIG_WANT_COMPAT_NETLINK_MESSAGES=y +CONFIG_COMPAT_NETLINK_MESSAGES=y +CONFIG_NET_INGRESS=y +CONFIG_NET_EGRESS=y +CONFIG_NET_XGRESS=y +CONFIG_NET_REDIRECT=y +CONFIG_SKB_DECRYPTED=y +CONFIG_SKB_EXTENSIONS=y +CONFIG_NET_DEVMEM=y +CONFIG_NET_SHAPER=y +CONFIG_NET_CRC32C=y + +# +# Networking options +# +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=m +CONFIG_INET_PSP=y +CONFIG_UNIX=y +CONFIG_AF_UNIX_OOB=y +CONFIG_UNIX_DIAG=m +CONFIG_TLS=m +CONFIG_TLS_DEVICE=y +# CONFIG_TLS_TOE is not set +CONFIG_XFRM=y +CONFIG_XFRM_OFFLOAD=y +CONFIG_XFRM_ALGO=m +CONFIG_XFRM_USER=m +CONFIG_XFRM_USER_COMPAT=m +CONFIG_XFRM_INTERFACE=m +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +CONFIG_XFRM_STATISTICS=y +CONFIG_XFRM_AH=m +CONFIG_XFRM_ESP=m +CONFIG_XFRM_IPCOMP=m +CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_XFRM_IPTFS=m +CONFIG_XFRM_ESPINTCP=y +CONFIG_SMC=m +CONFIG_SMC_DIAG=m +CONFIG_SMC_HS_CTRL_BPF=y +CONFIG_DIBS=m +CONFIG_DIBS_LO=y +CONFIG_XDP_SOCKETS=y +CONFIG_XDP_SOCKETS_DIAG=m +CONFIG_NET_HANDSHAKE=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_ROUTE_CLASSID=y +# CONFIG_IP_PNP is not set +CONFIG_NET_IPIP=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE_COMMON=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_IPVTI=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_ESP_OFFLOAD=m +CONFIG_INET_ESPINTCP=y +CONFIG_INET_IPCOMP=m +CONFIG_INET_TABLE_PERTURB_ORDER=16 +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_RAW_DIAG=m +CONFIG_INET_DIAG_DESTROY=y +CONFIG_TCP_CONG_ADVANCED=y +CONFIG_TCP_CONG_BIC=m +CONFIG_TCP_CONG_CUBIC=y +CONFIG_TCP_CONG_WESTWOOD=m +CONFIG_TCP_CONG_HTCP=m +CONFIG_TCP_CONG_HSTCP=m +CONFIG_TCP_CONG_HYBLA=m +CONFIG_TCP_CONG_VEGAS=m +CONFIG_TCP_CONG_NV=m +CONFIG_TCP_CONG_SCALABLE=m +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_CONG_VENO=m +CONFIG_TCP_CONG_YEAH=m +CONFIG_TCP_CONG_ILLINOIS=m +CONFIG_TCP_CONG_DCTCP=m +CONFIG_TCP_CONG_CDG=m +CONFIG_TCP_CONG_BBR=m +CONFIG_DEFAULT_CUBIC=y +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_TCP_SIGPOOL=y +CONFIG_TCP_AO=y +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +CONFIG_IPV6_ROUTER_PREF=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_ESP_OFFLOAD=m +CONFIG_INET6_ESPINTCP=y +CONFIG_INET6_IPCOMP=m +CONFIG_IPV6_MIP6=m +CONFIG_IPV6_ILA=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET6_TUNNEL=m +CONFIG_IPV6_VTI=m +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=m +CONFIG_IPV6_GRE=m +CONFIG_IPV6_FOU=m +CONFIG_IPV6_FOU_TUNNEL=m +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y +CONFIG_IPV6_PIMSM_V2=y +CONFIG_IPV6_SEG6_LWTUNNEL=y +CONFIG_IPV6_SEG6_HMAC=y +CONFIG_IPV6_SEG6_BPF=y +# CONFIG_IPV6_RPL_LWTUNNEL is not set +CONFIG_IPV6_IOAM6_LWTUNNEL=y +CONFIG_NETLABEL=y +CONFIG_MPTCP=y +CONFIG_INET_MPTCP_DIAG=m +CONFIG_MPTCP_IPV6=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NET_PTP_CLASSIFY=y +CONFIG_NETWORK_PHY_TIMESTAMPING=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=m + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_EGRESS=y +CONFIG_NETFILTER_SKIP_EGRESS=y +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_FAMILY_BRIDGE=y +CONFIG_NETFILTER_FAMILY_ARP=y +CONFIG_NETFILTER_BPF_LINK=y +CONFIG_NETFILTER_NETLINK_HOOK=m +CONFIG_NETFILTER_NETLINK_ACCT=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_NETLINK_OSF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_LOG_SYSLOG=m +CONFIG_NETFILTER_CONNCOUNT=m +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +CONFIG_NF_CONNTRACK_ZONES=y +# CONFIG_NF_CONNTRACK_PROCFS is not set +CONFIG_NF_CONNTRACK_EVENTS=y +CONFIG_NF_CONNTRACK_TIMEOUT=y +CONFIG_NF_CONNTRACK_TIMESTAMP=y +CONFIG_NF_CONNTRACK_LABELS=y +CONFIG_NF_CONNTRACK_OVS=y +CONFIG_NF_CT_PROTO_GRE=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_H323=m +CONFIG_NF_CONNTRACK_IRC=m +CONFIG_NF_CONNTRACK_BROADCAST=m +CONFIG_NF_CONNTRACK_NETBIOS_NS=m +CONFIG_NF_CONNTRACK_SNMP=m +CONFIG_NF_CONNTRACK_PPTP=m +CONFIG_NF_CONNTRACK_SANE=m +CONFIG_NF_CONNTRACK_SIP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_CT_NETLINK=m +CONFIG_NF_CT_NETLINK_TIMEOUT=m +CONFIG_NF_CT_NETLINK_HELPER=m +CONFIG_NETFILTER_NETLINK_GLUE_CT=y +CONFIG_NF_NAT=m +CONFIG_NF_NAT_AMANDA=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y +CONFIG_NF_NAT_OVS=y +CONFIG_NETFILTER_SYNPROXY=m +CONFIG_NF_TABLES=m +CONFIG_NF_TABLES_INET=y +CONFIG_NF_TABLES_NETDEV=y +CONFIG_NFT_NUMGEN=m +CONFIG_NFT_CT=m +# CONFIG_NFT_EXTHDR_DCCP is not set +CONFIG_NFT_FLOW_OFFLOAD=m +CONFIG_NFT_CONNLIMIT=m +CONFIG_NFT_LOG=m +CONFIG_NFT_LIMIT=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_NAT=m +CONFIG_NFT_TUNNEL=m +CONFIG_NFT_QUEUE=m +CONFIG_NFT_QUOTA=m +CONFIG_NFT_REJECT=m +CONFIG_NFT_REJECT_INET=m +CONFIG_NFT_COMPAT=m +CONFIG_NFT_HASH=m +CONFIG_NFT_FIB=m +CONFIG_NFT_FIB_INET=m +CONFIG_NFT_XFRM=m +CONFIG_NFT_SOCKET=m +CONFIG_NFT_OSF=m +CONFIG_NFT_TPROXY=m +CONFIG_NFT_SYNPROXY=m +CONFIG_NF_DUP_NETDEV=m +CONFIG_NFT_DUP_NETDEV=m +CONFIG_NFT_FWD_NETDEV=m +CONFIG_NFT_FIB_NETDEV=m +CONFIG_NFT_REJECT_NETDEV=m +CONFIG_NF_FLOW_TABLE_INET=m +CONFIG_NF_FLOW_TABLE=m +# CONFIG_NF_FLOW_TABLE_PROCFS is not set +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XTABLES_COMPAT=y +CONFIG_NETFILTER_XTABLES_LEGACY=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_CONNMARK=m +CONFIG_NETFILTER_XT_SET=m + +# +# Xtables targets +# +CONFIG_NETFILTER_XT_TARGET_AUDIT=m +CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +CONFIG_NETFILTER_XT_TARGET_HMARK=m +CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m +CONFIG_NETFILTER_XT_TARGET_LED=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_NETMAP=m +CONFIG_NETFILTER_XT_TARGET_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_TARGET_TEE=m +CONFIG_NETFILTER_XT_TARGET_TPROXY=m +CONFIG_NETFILTER_XT_TARGET_TRACE=m +CONFIG_NETFILTER_XT_TARGET_SECMARK=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m + +# +# Xtables matches +# +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NETFILTER_XT_MATCH_CGROUP=m +CONFIG_NETFILTER_XT_MATCH_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_CPU=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +CONFIG_NETFILTER_XT_MATCH_ESP=m +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_IPCOMP=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_L2TP=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_NFACCT=m +CONFIG_NETFILTER_XT_MATCH_OSF=m +CONFIG_NETFILTER_XT_MATCH_OWNER=m +CONFIG_NETFILTER_XT_MATCH_POLICY=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_QUOTA=m +CONFIG_NETFILTER_XT_MATCH_RATEEST=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_RECENT=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_SOCKET=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_MATCH_U32=m +# end of Core Netfilter Configuration + +CONFIG_IP_SET=m +CONFIG_IP_SET_MAX=256 +CONFIG_IP_SET_BITMAP_IP=m +CONFIG_IP_SET_BITMAP_IPMAC=m +CONFIG_IP_SET_BITMAP_PORT=m +CONFIG_IP_SET_HASH_IP=m +CONFIG_IP_SET_HASH_IPMARK=m +CONFIG_IP_SET_HASH_IPPORT=m +CONFIG_IP_SET_HASH_IPPORTIP=m +CONFIG_IP_SET_HASH_IPPORTNET=m +CONFIG_IP_SET_HASH_IPMAC=m +CONFIG_IP_SET_HASH_MAC=m +CONFIG_IP_SET_HASH_NETPORTNET=m +CONFIG_IP_SET_HASH_NET=m +CONFIG_IP_SET_HASH_NETNET=m +CONFIG_IP_SET_HASH_NETPORT=m +CONFIG_IP_SET_HASH_NETIFACE=m +CONFIG_IP_SET_LIST_SET=m +CONFIG_IP_VS=m +CONFIG_IP_VS_IPV6=y +# CONFIG_IP_VS_DEBUG is not set +CONFIG_IP_VS_TAB_BITS=12 + +# +# IPVS transport protocol load balancing support +# +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_PROTO_AH_ESP=y +CONFIG_IP_VS_PROTO_ESP=y +CONFIG_IP_VS_PROTO_AH=y +CONFIG_IP_VS_PROTO_SCTP=y + +# +# IPVS scheduler +# +CONFIG_IP_VS_RR=m +CONFIG_IP_VS_WRR=m +CONFIG_IP_VS_LC=m +CONFIG_IP_VS_WLC=m +CONFIG_IP_VS_FO=m +CONFIG_IP_VS_OVF=m +CONFIG_IP_VS_LBLC=m +CONFIG_IP_VS_LBLCR=m +CONFIG_IP_VS_DH=m +CONFIG_IP_VS_SH=m +CONFIG_IP_VS_MH=m +CONFIG_IP_VS_SED=m +CONFIG_IP_VS_NQ=m +CONFIG_IP_VS_TWOS=m + +# +# IPVS SH scheduler +# +CONFIG_IP_VS_SH_TAB_BITS=8 + +# +# IPVS MH scheduler +# +CONFIG_IP_VS_MH_TAB_INDEX=12 + +# +# IPVS application helper +# +CONFIG_IP_VS_FTP=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_PE_SIP=m + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=m +CONFIG_IP_NF_IPTABLES_LEGACY=m +CONFIG_NF_SOCKET_IPV4=m +CONFIG_NF_TPROXY_IPV4=m +CONFIG_NF_TABLES_IPV4=y +CONFIG_NFT_REJECT_IPV4=m +CONFIG_NFT_DUP_IPV4=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NF_TABLES_ARP=y +CONFIG_NF_DUP_IPV4=m +CONFIG_NF_LOG_ARP=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_REJECT_IPV4=m +CONFIG_NF_NAT_SNMP_BASIC=m +CONFIG_NF_NAT_PPTP=m +CONFIG_NF_NAT_H323=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_AH=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_RPFILTER=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_SYNPROXY=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_SECURITY=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_NFT_COMPAT_ARP=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m +# end of IP: Netfilter Configuration + +# +# IPv6: Netfilter Configuration +# +CONFIG_IP6_NF_IPTABLES_LEGACY=m +CONFIG_NF_SOCKET_IPV6=m +CONFIG_NF_TPROXY_IPV6=m +CONFIG_NF_TABLES_IPV6=y +CONFIG_NFT_REJECT_IPV6=m +CONFIG_NFT_DUP_IPV6=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NF_DUP_IPV6=m +CONFIG_NF_REJECT_IPV6=m +CONFIG_NF_LOG_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_AH=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_MH=m +CONFIG_IP6_NF_MATCH_RPFILTER=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_SRH=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_TARGET_SYNPROXY=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_SECURITY=m +CONFIG_IP6_NF_NAT=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_TARGET_NPT=m +# end of IPv6: Netfilter Configuration + +CONFIG_NF_DEFRAG_IPV6=m +CONFIG_NF_TABLES_BRIDGE=m +CONFIG_NFT_BRIDGE_META=m +CONFIG_NFT_BRIDGE_REJECT=m +CONFIG_NF_CONNTRACK_BRIDGE=m +CONFIG_BRIDGE_NF_EBTABLES_LEGACY=m +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_IP6=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_LOG=m +CONFIG_BRIDGE_EBT_NFLOG=m +CONFIG_IP_SCTP=m +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA256=y +# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set +CONFIG_INET_SCTP_DIAG=m +CONFIG_RDS=m +CONFIG_RDS_RDMA=m +CONFIG_RDS_TCP=m +# CONFIG_RDS_DEBUG is not set +CONFIG_TIPC=m +CONFIG_TIPC_MEDIA_IB=y +CONFIG_TIPC_MEDIA_UDP=y +CONFIG_TIPC_CRYPTO=y +CONFIG_TIPC_DIAG=m +CONFIG_ATM=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=m +CONFIG_L2TP_ETH=m +CONFIG_STP=m +CONFIG_GARP=m +CONFIG_MRP=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_IGMP_SNOOPING=y +CONFIG_BRIDGE_VLAN_FILTERING=y +CONFIG_BRIDGE_MRP=y +CONFIG_BRIDGE_CFM=y +CONFIG_NET_DSA=m +CONFIG_NET_DSA_TAG_NONE=m +CONFIG_NET_DSA_TAG_AR9331=m +CONFIG_NET_DSA_TAG_BRCM_COMMON=m +CONFIG_NET_DSA_TAG_BRCM=m +CONFIG_NET_DSA_TAG_BRCM_LEGACY=m +CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS=m +CONFIG_NET_DSA_TAG_BRCM_PREPEND=m +CONFIG_NET_DSA_TAG_HELLCREEK=m +CONFIG_NET_DSA_TAG_GSWIP=m +CONFIG_NET_DSA_TAG_DSA_COMMON=m +CONFIG_NET_DSA_TAG_DSA=m +CONFIG_NET_DSA_TAG_EDSA=m +CONFIG_NET_DSA_TAG_MTK=m +CONFIG_NET_DSA_TAG_MXL_862XX=m +CONFIG_NET_DSA_TAG_MXL_GSW1XX=m +CONFIG_NET_DSA_TAG_KSZ=m +CONFIG_NET_DSA_TAG_OCELOT=m +CONFIG_NET_DSA_TAG_OCELOT_8021Q=m +CONFIG_NET_DSA_TAG_QCA=m +CONFIG_NET_DSA_TAG_RTL4_A=m +CONFIG_NET_DSA_TAG_RTL8_4=m +CONFIG_NET_DSA_TAG_RZN1_A5PSW=m +CONFIG_NET_DSA_TAG_LAN9303=m +CONFIG_NET_DSA_TAG_SJA1105=m +CONFIG_NET_DSA_TAG_TRAILER=m +CONFIG_NET_DSA_TAG_VSC73XX_8021Q=m +CONFIG_NET_DSA_TAG_XRS700X=m +CONFIG_NET_DSA_TAG_YT921X=m +CONFIG_VLAN_8021Q=m +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_ATALK=m +CONFIG_X25=m +CONFIG_LAPB=m +CONFIG_PHONET=m +CONFIG_6LOWPAN=m +# CONFIG_6LOWPAN_DEBUGFS is not set +CONFIG_6LOWPAN_NHC=m +CONFIG_6LOWPAN_NHC_DEST=m +CONFIG_6LOWPAN_NHC_FRAGMENT=m +CONFIG_6LOWPAN_NHC_HOP=m +CONFIG_6LOWPAN_NHC_IPV6=m +CONFIG_6LOWPAN_NHC_MOBILITY=m +CONFIG_6LOWPAN_NHC_ROUTING=m +CONFIG_6LOWPAN_NHC_UDP=m +# CONFIG_6LOWPAN_GHC_EXT_HDR_HOP is not set +# CONFIG_6LOWPAN_GHC_UDP is not set +# CONFIG_6LOWPAN_GHC_ICMPV6 is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_DEST is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_FRAG is not set +# CONFIG_6LOWPAN_GHC_EXT_HDR_ROUTE is not set +CONFIG_IEEE802154=m +# CONFIG_IEEE802154_NL802154_EXPERIMENTAL is not set +CONFIG_IEEE802154_SOCKET=m +CONFIG_IEEE802154_6LOWPAN=m +CONFIG_MAC802154=m +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_MULTIQ=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFB=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_CBS=m +CONFIG_NET_SCH_ETF=m +CONFIG_NET_SCH_MQPRIO_LIB=m +CONFIG_NET_SCH_TAPRIO=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_DRR=m +CONFIG_NET_SCH_MQPRIO=m +CONFIG_NET_SCH_SKBPRIO=m +CONFIG_NET_SCH_CHOKE=m +CONFIG_NET_SCH_QFQ=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_SCH_CAKE=m +CONFIG_NET_SCH_FQ=m +CONFIG_NET_SCH_HHF=m +CONFIG_NET_SCH_PIE=m +CONFIG_NET_SCH_FQ_PIE=m +CONFIG_NET_SCH_INGRESS=m +CONFIG_NET_SCH_PLUG=m +CONFIG_NET_SCH_ETS=m +CONFIG_NET_SCH_BPF=y +CONFIG_NET_SCH_DUALPI2=m +# CONFIG_NET_SCH_DEFAULT is not set + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_FLOW=m +CONFIG_NET_CLS_CGROUP=m +CONFIG_NET_CLS_BPF=m +CONFIG_NET_CLS_FLOWER=m +CONFIG_NET_CLS_MATCHALL=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_EMATCH_CANID=m +CONFIG_NET_EMATCH_IPSET=m +CONFIG_NET_EMATCH_IPT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_SAMPLE=m +CONFIG_NET_ACT_NAT=m +CONFIG_NET_ACT_PEDIT=m +CONFIG_NET_ACT_SIMP=m +CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_CSUM=m +CONFIG_NET_ACT_MPLS=m +CONFIG_NET_ACT_VLAN=m +CONFIG_NET_ACT_BPF=m +CONFIG_NET_ACT_CONNMARK=m +CONFIG_NET_ACT_CTINFO=m +CONFIG_NET_ACT_SKBMOD=m +# CONFIG_NET_ACT_IFE is not set +CONFIG_NET_ACT_TUNNEL_KEY=m +CONFIG_NET_ACT_CT=m +CONFIG_NET_ACT_GATE=m +CONFIG_NET_TC_SKB_EXT=y +CONFIG_NET_SCH_FIFO=y +CONFIG_DCB=y +CONFIG_DNS_RESOLVER=y +CONFIG_BATMAN_ADV=m +# CONFIG_BATMAN_ADV_BATMAN_V is not set +CONFIG_BATMAN_ADV_BLA=y +CONFIG_BATMAN_ADV_DAT=y +CONFIG_BATMAN_ADV_MCAST=y +# CONFIG_BATMAN_ADV_DEBUG is not set +# CONFIG_BATMAN_ADV_TRACING is not set +CONFIG_OPENVSWITCH=m +CONFIG_OPENVSWITCH_GRE=m +CONFIG_OPENVSWITCH_VXLAN=m +CONFIG_OPENVSWITCH_GENEVE=m +CONFIG_VSOCKETS=m +CONFIG_VSOCKETS_DIAG=m +CONFIG_VSOCKETS_LOOPBACK=m +CONFIG_VMWARE_VMCI_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS=m +CONFIG_VIRTIO_VSOCKETS_COMMON=m +CONFIG_HYPERV_VSOCKETS=m +CONFIG_NETLINK_DIAG=m +CONFIG_MPLS=y +CONFIG_NET_MPLS_GSO=m +CONFIG_MPLS_ROUTING=m +CONFIG_MPLS_IPTUNNEL=m +CONFIG_NET_NSH=m +CONFIG_HSR=m +CONFIG_NET_SWITCHDEV=y +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_QRTR=m +CONFIG_QRTR_SMD=m +CONFIG_QRTR_TUN=m +CONFIG_QRTR_MHI=m +CONFIG_NET_NCSI=y +CONFIG_NCSI_OEM_CMD_GET_MAC=y +# CONFIG_NCSI_OEM_CMD_KEEP_PHY is not set +CONFIG_PCPU_DEV_REFCNT=y +CONFIG_MAX_SKB_FRAGS=17 +CONFIG_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y +CONFIG_XPS=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_NET_CLASSID=y +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_BPF_STREAM_PARSER=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +CONFIG_NET_PKTGEN=m +CONFIG_NET_DROP_MONITOR=y +# end of Network testing +# end of Networking options + +CONFIG_HAMRADIO=y + +# +# Packet Radio protocols +# +CONFIG_AX25=m +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_NETROM=m +CONFIG_ROSE=m + +# +# AX.25 network device drivers +# +CONFIG_MKISS=m +CONFIG_6PACK=m +CONFIG_BPQETHER=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BAYCOM_PAR=m +CONFIG_YAM=m +# end of AX.25 network device drivers + +CONFIG_CAN=m +CONFIG_CAN_RAW=m +CONFIG_CAN_BCM=m +CONFIG_CAN_GW=m +CONFIG_CAN_J1939=m +CONFIG_CAN_ISOTP=m +CONFIG_BT=m +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m +CONFIG_BT_LE=y +CONFIG_BT_LE_L2CAP_ECRED=y +CONFIG_BT_6LOWPAN=m +CONFIG_BT_LEDS=y +CONFIG_BT_MSFTEXT=y +CONFIG_BT_AOSPEXT=y +CONFIG_BT_DEBUGFS=y +# CONFIG_BT_SELFTEST is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_INTEL=m +CONFIG_BT_BCM=m +CONFIG_BT_RTL=m +CONFIG_BT_QCA=m +CONFIG_BT_MTK=m +CONFIG_BT_HCIBTUSB=m +CONFIG_BT_HCIBTUSB_AUTOSUSPEND=y +CONFIG_BT_HCIBTUSB_POLL_SYNC=y +CONFIG_BT_HCIBTUSB_BCM=y +CONFIG_BT_HCIBTUSB_MTK=y +CONFIG_BT_HCIBTUSB_RTL=y +CONFIG_BT_HCIBTSDIO=m +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_NOKIA=m +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_ATH3K=y +CONFIG_BT_HCIUART_LL=y +CONFIG_BT_HCIUART_3WIRE=y +CONFIG_BT_HCIUART_INTEL=y +CONFIG_BT_HCIUART_BCM=y +CONFIG_BT_HCIUART_RTL=y +CONFIG_BT_HCIUART_QCA=y +CONFIG_BT_HCIUART_AG6XX=y +CONFIG_BT_HCIUART_MRVL=y +CONFIG_BT_HCIUART_AML=y +CONFIG_BT_HCIBCM203X=m +CONFIG_BT_HCIBCM4377=m +CONFIG_BT_HCIBPA10X=m +CONFIG_BT_HCIBFUSB=m +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIVHCI=m +CONFIG_BT_MRVL=m +CONFIG_BT_MRVL_SDIO=m +CONFIG_BT_ATH3K=m +CONFIG_BT_MTKSDIO=m +CONFIG_BT_MTKUART=m +CONFIG_BT_HCIRSI=m +CONFIG_BT_VIRTIO=m +CONFIG_BT_NXPUART=m +CONFIG_BT_INTEL_PCIE=m +# end of Bluetooth device drivers + +CONFIG_AF_RXRPC=m +CONFIG_AF_RXRPC_IPV6=y +# CONFIG_AF_RXRPC_INJECT_LOSS is not set +# CONFIG_AF_RXRPC_INJECT_RX_DELAY is not set +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_RXKAD=y +CONFIG_RXGK=y +CONFIG_RXPERF=m +CONFIG_AF_KCM=m +CONFIG_STREAM_PARSER=y +CONFIG_MCTP=y +CONFIG_MCTP_FLOWS=y +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=m +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_CRDA_SUPPORT=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +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=y +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +CONFIG_MAC80211_MESSAGE_TRACING=y +# 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_RFKILL_GPIO=m +CONFIG_NET_9P=m +CONFIG_NET_9P_FD=m +CONFIG_NET_9P_VIRTIO=m +CONFIG_NET_9P_XEN=m +CONFIG_NET_9P_USBG=m +CONFIG_NET_9P_RDMA=m +# CONFIG_NET_9P_DEBUG is not set +CONFIG_CAIF=m +# CONFIG_CAIF_DEBUG is not set +CONFIG_CAIF_NETDEV=m +CONFIG_CAIF_USB=m +CONFIG_CEPH_LIB=m +# CONFIG_CEPH_LIB_PRETTYDEBUG is not set +CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y +CONFIG_NFC=m +CONFIG_NFC_DIGITAL=m +CONFIG_NFC_NCI=m +CONFIG_NFC_NCI_SPI=m +CONFIG_NFC_NCI_UART=m +CONFIG_NFC_HCI=m +CONFIG_NFC_SHDLC=y + +# +# Near Field Communication (NFC) devices +# +CONFIG_NFC_TRF7970A=m +CONFIG_NFC_MEI_PHY=m +CONFIG_NFC_SIM=m +CONFIG_NFC_PORT100=m +CONFIG_NFC_VIRTUAL_NCI=m +CONFIG_NFC_FDP=m +CONFIG_NFC_FDP_I2C=m +CONFIG_NFC_PN544=m +CONFIG_NFC_PN544_I2C=m +CONFIG_NFC_PN544_MEI=m +CONFIG_NFC_PN533=m +CONFIG_NFC_PN533_USB=m +CONFIG_NFC_PN533_I2C=m +CONFIG_NFC_PN532_UART=m +CONFIG_NFC_MICROREAD=m +CONFIG_NFC_MICROREAD_I2C=m +CONFIG_NFC_MICROREAD_MEI=m +CONFIG_NFC_MRVL=m +CONFIG_NFC_MRVL_USB=m +CONFIG_NFC_MRVL_UART=m +CONFIG_NFC_MRVL_I2C=m +CONFIG_NFC_MRVL_SPI=m +CONFIG_NFC_ST21NFCA=m +CONFIG_NFC_ST21NFCA_I2C=m +CONFIG_NFC_ST_NCI=m +CONFIG_NFC_ST_NCI_I2C=m +CONFIG_NFC_ST_NCI_SPI=m +CONFIG_NFC_NXP_NCI=m +CONFIG_NFC_NXP_NCI_I2C=m +CONFIG_NFC_S3FWRN5=m +CONFIG_NFC_S3FWRN5_I2C=m +CONFIG_NFC_S3FWRN82_UART=m +CONFIG_NFC_ST95HF=m +# end of Near Field Communication (NFC) devices + +CONFIG_PSAMPLE=m +CONFIG_NET_IFE=m +CONFIG_LWTUNNEL=y +CONFIG_LWTUNNEL_BPF=y +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +CONFIG_SOCK_VALIDATE_XMIT=y +CONFIG_NET_IEEE8021Q_HELPERS=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y +CONFIG_NET_DEVLINK=y +CONFIG_PAGE_POOL=y +CONFIG_PAGE_POOL_STATS=y +CONFIG_FAILOVER=y +CONFIG_ETHTOOL_NETLINK=y + +# +# Device Drivers +# +CONFIG_HAVE_PCI=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_PCI=y +CONFIG_PCI_DOMAINS=y +CONFIG_PCIEPORTBUS=y +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_PCIEAER=y +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIE_ECRC 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_DPC=y +CONFIG_PCIE_PTM=y +CONFIG_PCIE_EDR=y +CONFIG_PCI_MSI=y +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_DEBUG is not set +CONFIG_PCI_REALLOC_ENABLE_AUTO=y +CONFIG_PCI_STUB=m +CONFIG_PCI_PF_STUB=m +CONFIG_XEN_PCIDEV_FRONTEND=m +CONFIG_PCI_ATS=y +CONFIG_PCI_IDE=y +CONFIG_PCI_TSM=y +CONFIG_PCI_DOE=y +CONFIG_PCI_ECAM=y +CONFIG_PCI_LOCKLESS_CONFIG=y +CONFIG_PCI_IOV=y +CONFIG_PCI_NPEM=y +CONFIG_PCI_PRI=y +CONFIG_PCI_PASID=y +CONFIG_PCIE_TPH=y +CONFIG_PCI_P2PDMA=y +CONFIG_PCI_LABEL=y +CONFIG_PCI_HYPERV=m +# CONFIG_PCIE_BUS_TUNE_OFF is not set +CONFIG_PCIE_BUS_DEFAULT=y +# CONFIG_PCIE_BUS_SAFE is not set +# CONFIG_PCIE_BUS_PERFORMANCE is not set +# CONFIG_PCIE_BUS_PEER2PEER is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=y +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_OCTEONEP=y +CONFIG_HOTPLUG_PCI_SHPC=y + +# +# PCI controller drivers +# +CONFIG_PCI_HOST_COMMON=y +CONFIG_VMD=m +CONFIG_PCI_HYPERV_INTERFACE=m + +# +# Cadence-based PCIe controllers +# +# end of Cadence-based PCIe controllers + +# +# DesignWare-based PCIe controllers +# +CONFIG_PCIE_DW=y +# CONFIG_PCIE_DW_DEBUGFS is not set +CONFIG_PCIE_DW_HOST=y +CONFIG_PCIE_DW_EP=y +# CONFIG_PCI_MESON is not set +CONFIG_PCIE_DW_PLAT=y +CONFIG_PCIE_DW_PLAT_HOST=y +CONFIG_PCIE_DW_PLAT_EP=y +# end of DesignWare-based PCIe controllers + +# +# Mobiveil-based PCIe controllers +# +# end of Mobiveil-based PCIe controllers + +# +# PLDA-based PCIe controllers +# +# end of PLDA-based PCIe controllers +# end of PCI controller drivers + +# +# PCI Endpoint +# +CONFIG_PCI_ENDPOINT=y +CONFIG_PCI_ENDPOINT_CONFIGFS=y +CONFIG_PCI_ENDPOINT_MSI_DOORBELL=y +# CONFIG_PCI_EPF_TEST is not set +CONFIG_PCI_EPF_NTB=m +CONFIG_PCI_EPF_VNTB=m +CONFIG_PCI_EPF_MHI=m +# end of PCI Endpoint + +# +# PCI switch controller drivers +# +CONFIG_PCI_SW_SWITCHTEC=m +# end of PCI switch controller drivers + +CONFIG_PCI_PWRCTRL=m +CONFIG_PCI_PWRCTRL_SLOT=m +CONFIG_PCI_PWRCTRL_TC9563=m +CONFIG_CXL_BUS=m +CONFIG_CXL_PCI=m +# CONFIG_CXL_MEM_RAW_COMMANDS is not set +CONFIG_CXL_ACPI=m +CONFIG_CXL_PMEM=m +CONFIG_CXL_MEM=m +CONFIG_CXL_FEATURES=y +# CONFIG_CXL_EDAC_MEM_FEATURES is not set +CONFIG_CXL_PORT=m +CONFIG_CXL_SUSPEND=y +CONFIG_CXL_REGION=y +# CONFIG_CXL_REGION_INVALIDATION_TEST is not set +CONFIG_CXL_MCE=y +CONFIG_CXL_RAS=y +CONFIG_CXL_ATL=y +CONFIG_PCCARD=m +CONFIG_PCMCIA=m +CONFIG_PCMCIA_LOAD_CIS=y +CONFIG_CARDBUS=y + +# +# PC-card bridges +# +CONFIG_YENTA=m +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_PD6729=m +CONFIG_I82092=m +CONFIG_PCCARD_NONSTATIC=y +CONFIG_RAPIDIO=y +CONFIG_RAPIDIO_TSI721=m +CONFIG_RAPIDIO_DISC_TIMEOUT=30 +# CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS is not set +CONFIG_RAPIDIO_DMA_ENGINE=y +# CONFIG_RAPIDIO_DEBUG is not set +CONFIG_RAPIDIO_ENUM_BASIC=m +CONFIG_RAPIDIO_CHMAN=m +CONFIG_RAPIDIO_MPORT_CDEV=m + +# +# RapidIO Switch drivers +# +CONFIG_RAPIDIO_CPS_XX=m +CONFIG_RAPIDIO_CPS_GEN2=m +CONFIG_RAPIDIO_RXS_GEN3=m +# end of RapidIO Switch drivers + +CONFIG_PC104=y + +# +# Generic Driver Options +# +CONFIG_AUXILIARY_BUS=y +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEVTMPFS_SAFE=y +# CONFIG_STANDALONE is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_DEBUG=y +CONFIG_RUST_FW_LOADER_ABSTRACTIONS=y +CONFIG_FW_LOADER_PAGED_BUF=y +CONFIG_FW_LOADER_SYSFS=y +CONFIG_EXTRA_FIRMWARE="" +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set +CONFIG_FW_LOADER_COMPRESS=y +CONFIG_FW_LOADER_COMPRESS_XZ=y +CONFIG_FW_LOADER_COMPRESS_ZSTD=y +CONFIG_FW_CACHE=y +CONFIG_FW_UPLOAD=y +# end of Firmware loader + +CONFIG_WANT_DEV_COREDUMP=y +CONFIG_ALLOW_DEV_COREDUMP=y +CONFIG_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set +CONFIG_HMEM_REPORTING=y +# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set +CONFIG_SYS_HYPERVISOR=y +CONFIG_GENERIC_CPU_DEVICES=y +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_GENERIC_CPU_VULNERABILITIES=y +CONFIG_SOC_BUS=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SLIMBUS=m +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_SPMI=m +CONFIG_REGMAP_W1=m +CONFIG_REGMAP_MMIO=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_SOUNDWIRE=m +CONFIG_REGMAP_SOUNDWIRE_MBQ=m +CONFIG_REGMAP_SCCB=m +CONFIG_REGMAP_I3C=m +CONFIG_REGMAP_SPI_AVMM=m +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set +# end of Generic Driver Options + +# +# Bus devices +# +CONFIG_MHI_BUS=m +# CONFIG_MHI_BUS_DEBUG is not set +CONFIG_MHI_BUS_PCI_GENERIC=m +CONFIG_MHI_BUS_EP=m +# end of Bus devices + +CONFIG_CONNECTOR=y +CONFIG_PROC_EVENTS=y + +# +# Firmware Drivers +# + +# +# ARM System Control and Management Interface Protocol +# +# end of ARM System Control and Management Interface Protocol + +CONFIG_EDD=y +CONFIG_EDD_OFF=y +CONFIG_FIRMWARE_MEMMAP=y +CONFIG_DMIID=y +CONFIG_DMI_SYSFS=m +CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y +CONFIG_ISCSI_IBFT_FIND=y +CONFIG_ISCSI_IBFT=m +CONFIG_FW_CFG_SYSFS=m +# CONFIG_FW_CFG_SYSFS_CMDLINE is not set +CONFIG_SYSFB=y +CONFIG_SYSFB_SIMPLEFB=y +CONFIG_FW_CS_DSP=m +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# EFI (Extensible Firmware Interface) Support +# +CONFIG_EFI_ESRT=y +CONFIG_EFI_VARS_PSTORE=m +# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set +CONFIG_EFI_SOFT_RESERVE=y +CONFIG_EFI_DXE_MEM_ATTRIBUTES=y +CONFIG_EFI_RUNTIME_WRAPPERS=y +CONFIG_EFI_BOOTLOADER_CONTROL=m +CONFIG_EFI_CAPSULE_LOADER=m +CONFIG_EFI_TEST=m +CONFIG_EFI_DEV_PATH_PARSER=y +CONFIG_APPLE_PROPERTIES=y +CONFIG_RESET_ATTACK_MITIGATION=y +CONFIG_EFI_RCI2_TABLE=y +# CONFIG_EFI_DISABLE_PCI_DMA is not set +CONFIG_EFI_EARLYCON=y +CONFIG_EFI_CUSTOM_SSDT_OVERLAYS=y +# CONFIG_EFI_DISABLE_RUNTIME is not set +CONFIG_EFI_COCO_SECRET=y +CONFIG_OVMF_DEBUG_LOG=y +CONFIG_UNACCEPTED_MEMORY=y +CONFIG_EFI_EMBEDDED_FIRMWARE=y +CONFIG_EFI_SBAT_FILE="" +# end of EFI (Extensible Firmware Interface) Support + +CONFIG_UEFI_CPER=y +CONFIG_UEFI_CPER_X86=y + +# +# Qualcomm firmware drivers +# +CONFIG_QCOM_SCM=m +CONFIG_QCOM_TZMEM=m +CONFIG_QCOM_TZMEM_MODE_GENERIC=y +# CONFIG_QCOM_TZMEM_MODE_SHMBRIDGE is not set +# end of Qualcomm firmware drivers + +# +# Tegra firmware driver +# +# end of Tegra firmware driver +# end of Firmware Drivers + +CONFIG_FWCTL=m +CONFIG_FWCTL_MLX5=m +CONFIG_FWCTL_PDS=m +CONFIG_GNSS=m +CONFIG_GNSS_SERIAL=m +CONFIG_GNSS_MTK_SERIAL=m +CONFIG_GNSS_SIRF_SERIAL=m +CONFIG_GNSS_UBX_SERIAL=m +CONFIG_GNSS_USB=m +CONFIG_MTD=m +# CONFIG_MTD_TESTS is not set + +# +# Partition parsers +# +CONFIG_MTD_CMDLINE_PARTS=m +CONFIG_MTD_REDBOOT_PARTS=m +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# end of Partition parsers + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_BLOCK_RO=m + +# +# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK. +# +CONFIG_FTL=m +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +CONFIG_INFTL=m +CONFIG_RFD_FTL=m +CONFIG_SSFDC=m +CONFIG_SM_FTL=m +CONFIG_MTD_OOPS=m +CONFIG_MTD_PSTORE=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_PARTITIONED_MASTER is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +CONFIG_MTD_CFI_INTELEXT=m +CONFIG_MTD_CFI_AMDSTD=m +CONFIG_MTD_CFI_STAA=m +CONFIG_MTD_CFI_UTIL=m +CONFIG_MTD_RAM=m +CONFIG_MTD_ROM=m +CONFIG_MTD_ABSENT=m +# end of RAM/ROM/Flash chip drivers + +# +# Mapping drivers for chip access +# +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_PHYSMAP=m +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_GPIO_ADDR=y +CONFIG_MTD_SBC_GXX=m +CONFIG_MTD_AMD76XROM=m +CONFIG_MTD_ICHXROM=m +CONFIG_MTD_ESB2ROM=m +CONFIG_MTD_CK804XROM=m +CONFIG_MTD_SCB2_FLASH=m +CONFIG_MTD_NETtel=m +CONFIG_MTD_L440GX=m +CONFIG_MTD_PCI=m +CONFIG_MTD_PCMCIA=m +# CONFIG_MTD_PCMCIA_ANONYMOUS is not set +CONFIG_MTD_PLATRAM=m +# end of Mapping drivers for chip access + +# +# Self-contained MTD device drivers +# +CONFIG_MTD_PMC551=m +# CONFIG_MTD_PMC551_BUGFIX is not set +# CONFIG_MTD_PMC551_DEBUG is not set +CONFIG_MTD_DATAFLASH=m +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +CONFIG_MTD_DATAFLASH_OTP=y +CONFIG_MTD_MCHP23K256=m +CONFIG_MTD_MCHP48L640=m +CONFIG_MTD_SST25L=m +CONFIG_MTD_SLRAM=m +CONFIG_MTD_PHRAM=m +CONFIG_MTD_MTDRAM=m +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTDRAM_ERASE_SIZE=128 +CONFIG_MTD_BLOCK2MTD=m +CONFIG_MTD_INTEL_DG=m + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# end of Self-contained MTD device drivers + +# +# NAND +# +CONFIG_MTD_NAND_CORE=m +CONFIG_MTD_ONENAND=m +CONFIG_MTD_ONENAND_VERIFY_WRITE=y +CONFIG_MTD_ONENAND_GENERIC=m +# CONFIG_MTD_ONENAND_OTP is not set +CONFIG_MTD_ONENAND_2X_PROGRAM=y +CONFIG_MTD_RAW_NAND=m + +# +# Raw/parallel NAND flash controllers +# +CONFIG_MTD_NAND_DENALI=m +CONFIG_MTD_NAND_DENALI_PCI=m +CONFIG_MTD_NAND_CAFE=m +CONFIG_MTD_NAND_MXIC=m +CONFIG_MTD_NAND_GPIO=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_ARASAN=m + +# +# Misc +# +CONFIG_MTD_SM_COMMON=m +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_DISKONCHIP=m +# CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED is not set +CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0 +# CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE is not set +CONFIG_MTD_SPI_NAND=m + +# +# ECC engine support +# +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_ECC_SW_HAMMING=y +# CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC is not set +CONFIG_MTD_NAND_ECC_SW_BCH=y +CONFIG_MTD_NAND_ECC_MXIC=y +# end of ECC engine support +# end of NAND + +# +# LPDDR & LPDDR2 PCM memory drivers +# +CONFIG_MTD_LPDDR=m +CONFIG_MTD_QINFO_PROBE=m +# end of LPDDR & LPDDR2 PCM memory drivers + +CONFIG_MTD_SPI_NOR=m +CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_WL_THRESHOLD=4096 +CONFIG_MTD_UBI_BEB_LIMIT=20 +CONFIG_MTD_UBI_FASTMAP=y +CONFIG_MTD_UBI_GLUEBI=m +CONFIG_MTD_UBI_BLOCK=y +CONFIG_MTD_UBI_NVMEM=m +CONFIG_MTD_HYPERBUS=m +# CONFIG_OF is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_PARPORT=m +CONFIG_PARPORT_PC=m +CONFIG_PARPORT_SERIAL=m +CONFIG_PARPORT_PC_FIFO=y +# CONFIG_PARPORT_PC_SUPERIO is not set +CONFIG_PARPORT_PC_PCMCIA=m +CONFIG_PARPORT_1284=y +CONFIG_PARPORT_NOT_PC=y +CONFIG_PNP=y +# CONFIG_PNP_DEBUG_MESSAGES is not set + +# +# Protocols +# +CONFIG_PNPACPI=y +CONFIG_BLK_DEV=y +CONFIG_BLK_DEV_NULL_BLK=m +# CONFIG_BLK_DEV_RUST_NULL is not set +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_FD_RAWCMD is not set +CONFIG_CDROM=y +CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m +CONFIG_ZRAM=m +CONFIG_ZRAM_BACKEND_LZ4=y +CONFIG_ZRAM_BACKEND_LZ4HC=y +CONFIG_ZRAM_BACKEND_ZSTD=y +CONFIG_ZRAM_BACKEND_DEFLATE=y +CONFIG_ZRAM_BACKEND_842=y +CONFIG_ZRAM_BACKEND_LZO=y +CONFIG_ZRAM_DEF_COMP_LZORLE=y +# CONFIG_ZRAM_DEF_COMP_LZO is not set +# CONFIG_ZRAM_DEF_COMP_LZ4 is not set +# CONFIG_ZRAM_DEF_COMP_LZ4HC is not set +# CONFIG_ZRAM_DEF_COMP_ZSTD is not set +# CONFIG_ZRAM_DEF_COMP_DEFLATE is not set +# CONFIG_ZRAM_DEF_COMP_842 is not set +CONFIG_ZRAM_DEF_COMP="lzo-rle" +CONFIG_ZRAM_WRITEBACK=y +CONFIG_ZRAM_TRACK_ENTRY_ACTIME=y +CONFIG_ZRAM_MEMORY_TRACKING=y +# CONFIG_ZRAM_MULTI_COMP is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +CONFIG_BLK_DEV_DRBD=m +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_BLK_DEV_NBD=m +CONFIG_BLK_DEV_RAM=m +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_ATA_OVER_ETH=m +CONFIG_XEN_BLKDEV_FRONTEND=y +CONFIG_XEN_BLKDEV_BACKEND=m +CONFIG_VIRTIO_BLK=y +CONFIG_BLK_DEV_RBD=m +CONFIG_BLK_DEV_UBLK=m +# CONFIG_BLKDEV_UBLK_LEGACY_OPCODES is not set +CONFIG_BLK_DEV_RNBD=y +CONFIG_BLK_DEV_RNBD_CLIENT=m +CONFIG_BLK_DEV_RNBD_SERVER=m +CONFIG_BLK_DEV_ZONED_LOOP=m + +# +# NVME Support +# +CONFIG_NVME_KEYRING=m +CONFIG_NVME_AUTH=m +CONFIG_NVME_CORE=m +CONFIG_BLK_DEV_NVME=m +CONFIG_NVME_MULTIPATH=y +# CONFIG_NVME_VERBOSE_ERRORS is not set +CONFIG_NVME_HWMON=y +CONFIG_NVME_FABRICS=m +CONFIG_NVME_RDMA=m +CONFIG_NVME_FC=m +CONFIG_NVME_TCP=m +CONFIG_NVME_TCP_TLS=y +CONFIG_NVME_HOST_AUTH=y +CONFIG_NVME_TARGET=m +# CONFIG_NVME_TARGET_DEBUGFS is not set +CONFIG_NVME_TARGET_PASSTHRU=y +CONFIG_NVME_TARGET_LOOP=m +CONFIG_NVME_TARGET_RDMA=m +CONFIG_NVME_TARGET_FC=m +# CONFIG_NVME_TARGET_FCLOOP is not set +CONFIG_NVME_TARGET_TCP=m +CONFIG_NVME_TARGET_TCP_TLS=y +CONFIG_NVME_TARGET_AUTH=y +CONFIG_NVME_TARGET_PCI_EPF=m +# end of NVME Support + +# +# Misc devices +# +CONFIG_SENSORS_LIS3LV02D=m +CONFIG_AD525X_DPOT=m +CONFIG_AD525X_DPOT_I2C=m +CONFIG_AD525X_DPOT_SPI=m +CONFIG_DUMMY_IRQ=m +CONFIG_IBM_ASM=m +CONFIG_PHANTOM=m +CONFIG_RPMB=m +CONFIG_TI_FPC202=m +CONFIG_TIFM_CORE=m +CONFIG_TIFM_7XX1=m +CONFIG_ICS932S401=m +CONFIG_ENCLOSURE_SERVICES=m +CONFIG_SGI_XP=m +CONFIG_SMPRO_ERRMON=m +CONFIG_SMPRO_MISC=m +CONFIG_HP_ILO=m +CONFIG_SGI_GRU=m +# CONFIG_SGI_GRU_DEBUG is not set +CONFIG_APDS9802ALS=m +CONFIG_ISL29003=m +CONFIG_ISL29020=m +CONFIG_SENSORS_TSL2550=m +CONFIG_SENSORS_BH1770=m +CONFIG_SENSORS_APDS990X=m +CONFIG_HMC6352=m +CONFIG_DS1682=m +CONFIG_VMWARE_BALLOON=m +CONFIG_LATTICE_ECP3_CONFIG=m +CONFIG_SRAM=y +CONFIG_DW_XDATA_PCIE=m +# CONFIG_PCI_ENDPOINT_TEST is not set +CONFIG_XILINX_SDFEC=m +CONFIG_MISC_RTSX=m +CONFIG_NTSYNC=m +CONFIG_TPS6594_ESM=m +CONFIG_TPS6594_PFSM=m +CONFIG_NSM=m +CONFIG_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m + +# +# EEPROM support +# +CONFIG_EEPROM_AT24=m +CONFIG_EEPROM_AT25=m +CONFIG_EEPROM_MAX6875=m +CONFIG_EEPROM_93CX6=m +CONFIG_EEPROM_93XX46=m +CONFIG_EEPROM_IDT_89HPESX=m +CONFIG_EEPROM_EE1004=m +CONFIG_EEPROM_M24LR=m +# end of EEPROM support + +CONFIG_CB710_CORE=m +# CONFIG_CB710_DEBUG is not set +CONFIG_CB710_DEBUG_ASSUMPTIONS=y +CONFIG_SENSORS_LIS3_I2C=m +CONFIG_ALTERA_STAPL=m +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MEI_ME=m +CONFIG_INTEL_MEI_TXE=m +CONFIG_INTEL_MEI_GSC=m +CONFIG_INTEL_MEI_VSC_HW=m +CONFIG_INTEL_MEI_VSC=m +CONFIG_INTEL_MEI_LB=m +CONFIG_INTEL_MEI_HDCP=m +CONFIG_INTEL_MEI_PXP=m +CONFIG_INTEL_MEI_GSC_PROXY=m +CONFIG_VMWARE_VMCI=m +CONFIG_GENWQE=m +CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0 +CONFIG_BCM_VK=m +CONFIG_BCM_VK_TTY=y +CONFIG_MISC_ALCOR_PCI=m +CONFIG_MISC_RTSX_PCI=m +CONFIG_MISC_RTSX_USB=m +CONFIG_UACCE=m +CONFIG_PVPANIC=y +CONFIG_PVPANIC_MMIO=m +CONFIG_PVPANIC_PCI=m +CONFIG_GP_PCI1XXXX=m +CONFIG_KEBA_CP500=m +CONFIG_KEBA_LAN9252=m +# end of Misc devices + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +CONFIG_RAID_ATTRS=m +CONFIG_SCSI_COMMON=y +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +CONFIG_SCSI_NETLINK=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=m +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_BLK_DEV_BSG=y +CONFIG_CHR_DEV_SCH=m +CONFIG_SCSI_ENCLOSURE=m +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y + +# +# SCSI Transports +# +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SCSI_FC_ATTRS=m +CONFIG_SCSI_ISCSI_ATTRS=m +CONFIG_SCSI_SAS_ATTRS=m +CONFIG_SCSI_SAS_LIBSAS=m +CONFIG_SCSI_SAS_ATA=y +CONFIG_SCSI_SAS_HOST_SMP=y +CONFIG_SCSI_SRP_ATTRS=m +# end of SCSI Transports + +CONFIG_SCSI_LOWLEVEL=y +CONFIG_ISCSI_TCP=m +CONFIG_ISCSI_BOOT_SYSFS=m +CONFIG_SCSI_CXGB3_ISCSI=m +CONFIG_SCSI_CXGB4_ISCSI=m +CONFIG_SCSI_BNX2_ISCSI=m +CONFIG_SCSI_BNX2X_FCOE=m +CONFIG_BE2ISCSI=m +CONFIG_BLK_DEV_3W_XXXX_RAID=m +CONFIG_SCSI_HPSA=m +CONFIG_SCSI_3W_9XXX=m +CONFIG_SCSI_3W_SAS=m +CONFIG_SCSI_ACARD=m +CONFIG_SCSI_AACRAID=m +CONFIG_SCSI_AIC7XXX=m +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_RESET_DELAY_MS=5000 +# CONFIG_AIC7XXX_DEBUG_ENABLE is not set +CONFIG_AIC7XXX_DEBUG_MASK=0 +CONFIG_AIC7XXX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC79XX=m +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +# CONFIG_AIC79XX_DEBUG_ENABLE is not set +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_SCSI_AIC94XX=m +# CONFIG_AIC94XX_DEBUG is not set +CONFIG_SCSI_MVSAS=m +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVSAS_TASKLET is not set +CONFIG_SCSI_MVUMI=m +CONFIG_SCSI_ADVANSYS=m +CONFIG_SCSI_ARCMSR=m +CONFIG_SCSI_ESAS2R=m +CONFIG_MEGARAID_NEWGEN=y +CONFIG_MEGARAID_MM=m +CONFIG_MEGARAID_MAILBOX=m +CONFIG_MEGARAID_LEGACY=m +CONFIG_MEGARAID_SAS=m +CONFIG_SCSI_MPT3SAS=m +CONFIG_SCSI_MPT2SAS_MAX_SGE=128 +CONFIG_SCSI_MPT3SAS_MAX_SGE=128 +CONFIG_SCSI_MPT2SAS=m +CONFIG_SCSI_MPI3MR=m +CONFIG_SCSI_SMARTPQI=m +CONFIG_SCSI_HPTIOP=m +CONFIG_SCSI_BUSLOGIC=m +CONFIG_SCSI_FLASHPOINT=y +CONFIG_SCSI_MYRB=m +CONFIG_SCSI_MYRS=m +CONFIG_VMWARE_PVSCSI=m +CONFIG_XEN_SCSI_FRONTEND=m +CONFIG_HYPERV_STORAGE=m +CONFIG_LIBFC=m +CONFIG_LIBFCOE=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_SCSI_SNIC=m +# CONFIG_SCSI_SNIC_DEBUG_FS is not set +CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_FDOMAIN=m +CONFIG_SCSI_FDOMAIN_PCI=m +CONFIG_SCSI_ISCI=m +CONFIG_SCSI_IPS=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_PPA=m +CONFIG_SCSI_IMM=m +# CONFIG_SCSI_IZIP_SLOW_CTR is not set +CONFIG_SCSI_STEX=m +CONFIG_SCSI_SYM53C8XX_2=m +CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 +CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 +CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 +CONFIG_SCSI_SYM53C8XX_MMIO=y +CONFIG_SCSI_IPR=m +CONFIG_SCSI_IPR_TRACE=y +CONFIG_SCSI_IPR_DUMP=y +CONFIG_SCSI_QLOGIC_1280=m +CONFIG_SCSI_QLA_FC=m +CONFIG_TCM_QLA2XXX=m +# CONFIG_TCM_QLA2XXX_DEBUG is not set +CONFIG_SCSI_QLA_ISCSI=m +CONFIG_QEDI=m +CONFIG_QEDF=m +CONFIG_SCSI_LPFC=m +# CONFIG_SCSI_LPFC_DEBUG_FS is not set +CONFIG_SCSI_EFCT=m +CONFIG_SCSI_DC395x=m +CONFIG_SCSI_AM53C974=m +CONFIG_SCSI_WD719X=m +CONFIG_SCSI_DEBUG=m +CONFIG_SCSI_PMCRAID=m +CONFIG_SCSI_PM8001=m +CONFIG_SCSI_BFA_FC=m +CONFIG_SCSI_VIRTIO=y +CONFIG_SCSI_CHELSIO_FCOE=m +CONFIG_SCSI_LOWLEVEL_PCMCIA=y +CONFIG_PCMCIA_AHA152X=m +CONFIG_PCMCIA_FDOMAIN=m +CONFIG_PCMCIA_QLOGIC=m +CONFIG_PCMCIA_SYM53C500=m +CONFIG_SCSI_DH=y +CONFIG_SCSI_DH_RDAC=m +CONFIG_SCSI_DH_HP_SW=m +CONFIG_SCSI_DH_EMC=m +CONFIG_SCSI_DH_ALUA=m +# 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=y +CONFIG_SATA_PMP=y + +# +# Controllers with non-SFF native interface +# +CONFIG_SATA_AHCI=m +CONFIG_SATA_MOBILE_LPM_POLICY=3 +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_AHCI_DWC=m +CONFIG_SATA_INIC162X=m +CONFIG_SATA_ACARD_AHCI=m +CONFIG_SATA_SIL24=m +CONFIG_ATA_SFF=y + +# +# SFF controllers with custom DMA interface +# +CONFIG_PDC_ADMA=m +CONFIG_SATA_QSTOR=m +CONFIG_SATA_SX4=m +CONFIG_ATA_BMDMA=y + +# +# SATA SFF controllers with BMDMA +# +CONFIG_ATA_PIIX=y +CONFIG_SATA_DWC=m +CONFIG_SATA_DWC_OLD_DMA=y +CONFIG_SATA_MV=m +CONFIG_SATA_NV=m +CONFIG_SATA_PROMISE=m +CONFIG_SATA_SIL=m +CONFIG_SATA_SIS=m +CONFIG_SATA_SVW=m +CONFIG_SATA_ULI=m +CONFIG_SATA_VIA=m +CONFIG_SATA_VITESSE=m + +# +# PATA SFF controllers with BMDMA +# +CONFIG_PATA_ALI=m +CONFIG_PATA_AMD=m +CONFIG_PATA_ARTOP=m +CONFIG_PATA_ATIIXP=m +CONFIG_PATA_ATP867X=m +CONFIG_PATA_CMD64X=m +CONFIG_PATA_CYPRESS=m +CONFIG_PATA_EFAR=m +CONFIG_PATA_HPT366=m +CONFIG_PATA_HPT37X=m +CONFIG_PATA_HPT3X2N=m +CONFIG_PATA_HPT3X3=m +# CONFIG_PATA_HPT3X3_DMA is not set +CONFIG_PATA_IT8213=m +CONFIG_PATA_IT821X=m +CONFIG_PATA_JMICRON=m +CONFIG_PATA_MARVELL=m +CONFIG_PATA_NETCELL=m +CONFIG_PATA_NINJA32=m +CONFIG_PATA_NS87415=m +CONFIG_PATA_OLDPIIX=m +CONFIG_PATA_OPTIDMA=m +CONFIG_PATA_PDC2027X=m +CONFIG_PATA_PDC_OLD=m +CONFIG_PATA_RADISYS=m +CONFIG_PATA_RDC=m +CONFIG_PATA_SCH=m +CONFIG_PATA_SERVERWORKS=m +CONFIG_PATA_SIL680=m +CONFIG_PATA_SIS=y +CONFIG_PATA_TOSHIBA=m +CONFIG_PATA_TRIFLEX=m +CONFIG_PATA_VIA=m +CONFIG_PATA_WINBOND=m + +# +# PIO-only SFF controllers +# +CONFIG_PATA_CMD640_PCI=m +CONFIG_PATA_MPIIX=m +CONFIG_PATA_NS87410=m +CONFIG_PATA_OPTI=m +CONFIG_PATA_PCMCIA=m +CONFIG_PATA_RZ1000=m +CONFIG_PATA_PARPORT=m + +# +# Parallel IDE protocol modules +# +CONFIG_PATA_PARPORT_ATEN=m +CONFIG_PATA_PARPORT_BPCK=m +CONFIG_PATA_PARPORT_BPCK6=m +CONFIG_PATA_PARPORT_COMM=m +CONFIG_PATA_PARPORT_DSTR=m +CONFIG_PATA_PARPORT_FIT2=m +CONFIG_PATA_PARPORT_FIT3=m +CONFIG_PATA_PARPORT_EPAT=m +CONFIG_PATA_PARPORT_EPATC8=y +CONFIG_PATA_PARPORT_EPIA=m +CONFIG_PATA_PARPORT_FRIQ=m +CONFIG_PATA_PARPORT_FRPW=m +CONFIG_PATA_PARPORT_KBIC=m +CONFIG_PATA_PARPORT_KTTI=m +CONFIG_PATA_PARPORT_ON20=m +CONFIG_PATA_PARPORT_ON26=m + +# +# Generic fallback / legacy drivers +# +CONFIG_PATA_ACPI=m +CONFIG_ATA_GENERIC=y +CONFIG_PATA_LEGACY=m +CONFIG_MD=y +CONFIG_BLK_DEV_MD=y +CONFIG_MD_BITMAP=y +CONFIG_MD_LLBITMAP=y +CONFIG_MD_AUTODETECT=y +CONFIG_MD_BITMAP_FILE=y +CONFIG_MD_LINEAR=m +CONFIG_MD_RAID0=m +CONFIG_MD_RAID1=m +CONFIG_MD_RAID10=m +CONFIG_MD_RAID456=m +CONFIG_MD_CLUSTER=m +CONFIG_BCACHE=m +# CONFIG_BCACHE_DEBUG is not set +CONFIG_BCACHE_ASYNC_REGISTRATION=y +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=y +# CONFIG_DM_DEBUG is not set +CONFIG_DM_BUFIO=m +# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set +CONFIG_DM_BIO_PRISON=m +CONFIG_DM_PERSISTENT_DATA=m +CONFIG_DM_UNSTRIPED=m +CONFIG_DM_CRYPT=m +CONFIG_DM_SNAPSHOT=m +CONFIG_DM_THIN_PROVISIONING=m +CONFIG_DM_CACHE=m +CONFIG_DM_CACHE_SMQ=m +CONFIG_DM_WRITECACHE=m +CONFIG_DM_EBS=m +CONFIG_DM_ERA=m +CONFIG_DM_CLONE=m +CONFIG_DM_MIRROR=m +CONFIG_DM_LOG_USERSPACE=m +CONFIG_DM_RAID=m +CONFIG_DM_ZERO=m +CONFIG_DM_MULTIPATH=m +CONFIG_DM_MULTIPATH_QL=m +CONFIG_DM_MULTIPATH_ST=m +CONFIG_DM_MULTIPATH_HST=m +CONFIG_DM_MULTIPATH_IOA=m +CONFIG_DM_DELAY=m +# CONFIG_DM_DUST is not set +CONFIG_DM_INIT=y +CONFIG_DM_UEVENT=y +CONFIG_DM_FLAKEY=m +CONFIG_DM_VERITY=m +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG=y +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING=y +CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG_PLATFORM_KEYRING=y +# CONFIG_DM_VERITY_FEC is not set +CONFIG_DM_SWITCH=m +CONFIG_DM_LOG_WRITES=m +CONFIG_DM_INTEGRITY=m +CONFIG_DM_ZONED=m +CONFIG_DM_AUDIT=y +CONFIG_DM_VDO=m +CONFIG_DM_PCACHE=m +CONFIG_TARGET_CORE=m +CONFIG_TCM_IBLOCK=m +CONFIG_TCM_FILEIO=m +CONFIG_TCM_PSCSI=m +CONFIG_TCM_USER2=m +CONFIG_LOOPBACK_TARGET=m +CONFIG_TCM_FC=m +CONFIG_ISCSI_TARGET=m +CONFIG_ISCSI_TARGET_CXGB4=m +CONFIG_SBP_TARGET=m +CONFIG_REMOTE_TARGET=m +CONFIG_FUSION=y +CONFIG_FUSION_SPI=m +CONFIG_FUSION_FC=m +CONFIG_FUSION_SAS=m +CONFIG_FUSION_MAX_SGE=128 +CONFIG_FUSION_CTL=m +CONFIG_FUSION_LAN=m +CONFIG_FUSION_LOGGING=y + +# +# IEEE 1394 (FireWire) support +# +CONFIG_FIREWIRE=m +CONFIG_FIREWIRE_OHCI=m +CONFIG_FIREWIRE_SBP2=m +CONFIG_FIREWIRE_NET=m +CONFIG_FIREWIRE_NOSY=m +# end of IEEE 1394 (FireWire) support + +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MAC_EMUMOUSEBTN=m +CONFIG_NETDEVICES=y +CONFIG_MII=m +CONFIG_NET_CORE=y +CONFIG_BONDING=m +CONFIG_DUMMY=m +CONFIG_WIREGUARD=m +# CONFIG_WIREGUARD_DEBUG is not set +CONFIG_OVPN=m +CONFIG_EQUALIZER=m +CONFIG_NET_FC=y +CONFIG_IFB=m +CONFIG_NET_TEAM=m +CONFIG_NET_TEAM_MODE_BROADCAST=m +CONFIG_NET_TEAM_MODE_ROUNDROBIN=m +CONFIG_NET_TEAM_MODE_RANDOM=m +CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m +CONFIG_NET_TEAM_MODE_LOADBALANCE=m +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_IPVLAN_L3S=y +CONFIG_IPVLAN=m +CONFIG_IPVTAP=m +CONFIG_VXLAN=m +CONFIG_GENEVE=m +CONFIG_BAREUDP=m +CONFIG_GTP=m +CONFIG_PFCP=m +CONFIG_AMT=m +CONFIG_MACSEC=m +CONFIG_NETCONSOLE=m +CONFIG_NETCONSOLE_DYNAMIC=y +# CONFIG_NETCONSOLE_EXTENDED_LOG is not set +CONFIG_NETPOLL=y +CONFIG_NET_POLL_CONTROLLER=y +CONFIG_NTB_NETDEV=m +CONFIG_RIONET=m +CONFIG_RIONET_TX_SIZE=128 +CONFIG_RIONET_RX_SIZE=128 +CONFIG_TUN=y +CONFIG_TAP=m +# CONFIG_TUN_VNET_CROSS_LE is not set +CONFIG_VETH=m +CONFIG_VIRTIO_NET=y +CONFIG_NLMON=m +CONFIG_NETKIT=y +CONFIG_NET_VRF=m +CONFIG_VSOCKMON=m +CONFIG_MHI_NET=m +CONFIG_SUNGEM_PHY=m +CONFIG_ARCNET=m +CONFIG_ARCNET_1201=m +CONFIG_ARCNET_1051=m +CONFIG_ARCNET_RAW=m +CONFIG_ARCNET_CAP=m +CONFIG_ARCNET_COM90xx=m +CONFIG_ARCNET_COM90xxIO=m +CONFIG_ARCNET_RIM_I=m +CONFIG_ARCNET_COM20020=m +CONFIG_ARCNET_COM20020_PCI=m +CONFIG_ARCNET_COM20020_CS=m +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_TCP=m +CONFIG_ATM_LANAI=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_FORE200E=m +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_FORE200E_TX_RETRY=16 +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_SOLOS=m +CONFIG_CAIF_DRIVERS=y +CONFIG_CAIF_TTY=m +CONFIG_CAIF_VIRTIO=m + +# +# Distributed Switch Architecture drivers +# +CONFIG_B53=m +CONFIG_B53_SPI_DRIVER=m +CONFIG_B53_MDIO_DRIVER=m +CONFIG_B53_MMAP_DRIVER=m +CONFIG_B53_SRAB_DRIVER=m +CONFIG_B53_SERDES=m +CONFIG_NET_DSA_BCM_SF2=m +# CONFIG_NET_DSA_LOOP is not set +CONFIG_NET_DSA_HIRSCHMANN_HELLCREEK=m +CONFIG_NET_DSA_LANTIQ_COMMON=m +CONFIG_NET_DSA_LANTIQ_GSWIP=m +CONFIG_NET_DSA_MXL_GSW1XX=m +CONFIG_NET_DSA_MT7530=m +CONFIG_NET_DSA_MT7530_MDIO=m +CONFIG_NET_DSA_MT7530_MMIO=m +CONFIG_NET_DSA_MV88E6060=m +CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON=m +CONFIG_NET_DSA_MICROCHIP_KSZ9477_I2C=m +CONFIG_NET_DSA_MICROCHIP_KSZ_SPI=m +CONFIG_NET_DSA_MICROCHIP_KSZ_PTP=y +CONFIG_NET_DSA_MICROCHIP_KSZ8863_SMI=m +CONFIG_NET_DSA_MV88E6XXX=m +CONFIG_NET_DSA_MV88E6XXX_PTP=y +CONFIG_NET_DSA_MV88E6XXX_LEDS=y +CONFIG_NET_DSA_MXL862=m +CONFIG_NET_DSA_MSCC_FELIX_DSA_LIB=m +CONFIG_NET_DSA_MSCC_OCELOT_EXT=m +CONFIG_NET_DSA_MSCC_SEVILLE=m +CONFIG_NET_DSA_AR9331=m +CONFIG_NET_DSA_QCA8K=m +CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT=y +CONFIG_NET_DSA_SJA1105=m +CONFIG_NET_DSA_SJA1105_PTP=y +CONFIG_NET_DSA_SJA1105_TAS=y +CONFIG_NET_DSA_SJA1105_VL=y +CONFIG_NET_DSA_XRS700X=m +CONFIG_NET_DSA_XRS700X_I2C=m +CONFIG_NET_DSA_XRS700X_MDIO=m +CONFIG_NET_DSA_REALTEK=m +CONFIG_NET_DSA_KS8995=m +CONFIG_NET_DSA_SMSC_LAN9303=m +CONFIG_NET_DSA_SMSC_LAN9303_I2C=m +CONFIG_NET_DSA_SMSC_LAN9303_MDIO=m +CONFIG_NET_DSA_VITESSE_VSC73XX=m +CONFIG_NET_DSA_VITESSE_VSC73XX_SPI=m +CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM=m +CONFIG_NET_DSA_YT921X=m +# end of Distributed Switch Architecture drivers + +CONFIG_ETHERNET=y +CONFIG_MDIO=m +CONFIG_NET_VENDOR_3COM=y +CONFIG_PCMCIA_3C574=m +CONFIG_PCMCIA_3C589=m +CONFIG_VORTEX=m +CONFIG_TYPHOON=m +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_ADAPTEC_STARFIRE=m +CONFIG_NET_VENDOR_AGERE=y +CONFIG_ET131X=m +CONFIG_NET_VENDOR_ALACRITECH=y +CONFIG_SLICOSS=m +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_ACENIC=m +# CONFIG_ACENIC_OMIT_TIGON_I is not set +CONFIG_ALTERA_TSE=m +CONFIG_NET_VENDOR_AMAZON=y +CONFIG_ENA_ETHERNET=m +CONFIG_NET_VENDOR_AMD=y +CONFIG_AMD8111_ETH=m +CONFIG_PCNET32=m +CONFIG_PCMCIA_NMCLAN=m +CONFIG_AMD_XGBE=m +CONFIG_AMD_XGBE_DCB=y +CONFIG_AMD_XGBE_HAVE_ECC=y +CONFIG_PDS_CORE=m +CONFIG_NET_VENDOR_AQUANTIA=y +CONFIG_AQTION=m +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ASIX=y +CONFIG_SPI_AX88796C=m +# CONFIG_SPI_AX88796C_COMPRESSION is not set +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_ATL2=m +CONFIG_ATL1=m +CONFIG_ATL1E=m +CONFIG_ATL1C=m +CONFIG_ALX=m +CONFIG_CX_ECAT=m +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_B44=m +CONFIG_B44_PCI_AUTOSELECT=y +CONFIG_B44_PCICORE_AUTOSELECT=y +CONFIG_B44_PCI=y +CONFIG_BCMGENET=m +CONFIG_BNX2=m +CONFIG_CNIC=m +CONFIG_TIGON3=m +CONFIG_TIGON3_HWMON=y +CONFIG_BNX2X=m +CONFIG_BNX2X_SRIOV=y +CONFIG_SYSTEMPORT=m +CONFIG_BNXT=m +CONFIG_BNXT_SRIOV=y +CONFIG_BNXT_FLOWER_OFFLOAD=y +CONFIG_BNXT_DCB=y +CONFIG_BNXT_HWMON=y +CONFIG_BNGE=m +CONFIG_NET_VENDOR_CADENCE=y +CONFIG_MACB=m +CONFIG_MACB_USE_HWSTAMP=y +CONFIG_MACB_PCI=m +CONFIG_NET_VENDOR_CAVIUM=y +CONFIG_THUNDER_NIC_PF=m +CONFIG_THUNDER_NIC_VF=m +CONFIG_THUNDER_NIC_BGX=m +CONFIG_THUNDER_NIC_RGX=m +CONFIG_CAVIUM_PTP=m +CONFIG_LIQUIDIO_CORE=m +CONFIG_LIQUIDIO=m +CONFIG_LIQUIDIO_VF=m +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_CHELSIO_T1=m +CONFIG_CHELSIO_T1_1G=y +CONFIG_CHELSIO_T3=m +CONFIG_CHELSIO_T4=m +CONFIG_CHELSIO_T4_DCB=y +CONFIG_CHELSIO_T4_FCOE=y +CONFIG_CHELSIO_T4VF=m +CONFIG_CHELSIO_LIB=m +CONFIG_CHELSIO_INLINE_CRYPTO=y +CONFIG_CHELSIO_IPSEC_INLINE=m +CONFIG_CHELSIO_TLS_DEVICE=m +CONFIG_NET_VENDOR_CISCO=y +CONFIG_ENIC=m +CONFIG_NET_VENDOR_CORTINA=y +CONFIG_NET_VENDOR_DAVICOM=y +CONFIG_DM9051=m +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_TULIP=y +CONFIG_DE2104X=m +CONFIG_DE2104X_DSL=0 +CONFIG_TULIP=m +# CONFIG_TULIP_MWI is not set +# CONFIG_TULIP_MMIO is not set +# CONFIG_TULIP_NAPI is not set +CONFIG_WINBOND_840=m +CONFIG_DM9102=m +CONFIG_ULI526X=m +CONFIG_PCMCIA_XIRCOM=m +CONFIG_NET_VENDOR_DLINK=y +CONFIG_DL2K=m +CONFIG_SUNDANCE=m +# CONFIG_SUNDANCE_MMIO is not set +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_BE2NET=m +CONFIG_BE2NET_HWMON=y +CONFIG_BE2NET_BE2=y +CONFIG_BE2NET_BE3=y +CONFIG_BE2NET_LANCER=y +CONFIG_BE2NET_SKYHAWK=y +CONFIG_NET_VENDOR_ENGLEDER=y +CONFIG_TSNEP=m +# CONFIG_TSNEP_SELFTESTS is not set +CONFIG_NET_VENDOR_EZCHIP=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_PCMCIA_FMVJ18X=m +CONFIG_NET_VENDOR_FUNGIBLE=y +CONFIG_FUN_CORE=m +CONFIG_FUN_ETH=m +CONFIG_NET_VENDOR_GOOGLE=y +CONFIG_GVE=m +# CONFIG_NET_VENDOR_HISILICON is not set +CONFIG_NET_VENDOR_HUAWEI=y +CONFIG_HINIC=m +CONFIG_HINIC3=m +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_LIBETH=m +CONFIG_LIBETH_XDP=m +CONFIG_LIBIE=m +CONFIG_LIBIE_ADMINQ=m +CONFIG_LIBIE_FWLOG=m +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +CONFIG_E1000E_HWTS=y +CONFIG_IGB=m +CONFIG_IGB_HWMON=y +CONFIG_IGB_DCA=y +CONFIG_IGBVF=m +CONFIG_IXGBE=m +CONFIG_IXGBE_HWMON=y +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_IPSEC=y +CONFIG_IXGBEVF=m +CONFIG_IXGBEVF_IPSEC=y +CONFIG_I40E=m +CONFIG_I40E_DCB=y +CONFIG_IAVF=m +CONFIG_I40EVF=m +CONFIG_ICE=m +CONFIG_ICE_HWMON=y +CONFIG_ICE_SWITCHDEV=y +CONFIG_ICE_HWTS=y +CONFIG_FM10K=m +CONFIG_IGC=m +CONFIG_IGC_LEDS=y +CONFIG_IDPF=m +# CONFIG_IDPF_SINGLEQ is not set +CONFIG_JME=m +CONFIG_NET_VENDOR_ADI=y +CONFIG_ADIN1110=m +CONFIG_NET_VENDOR_LITEX=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_MVMDIO=m +CONFIG_SKGE=m +# CONFIG_SKGE_DEBUG is not set +CONFIG_SKGE_GENESIS=y +CONFIG_SKY2=m +# CONFIG_SKY2_DEBUG is not set +CONFIG_OCTEON_EP=m +CONFIG_OCTEON_EP_VF=m +CONFIG_PRESTERA=m +CONFIG_PRESTERA_PCI=m +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_MLX4_EN=m +CONFIG_MLX4_EN_DCB=y +CONFIG_MLX4_CORE=m +CONFIG_MLX4_DEBUG=y +CONFIG_MLX4_CORE_GEN2=y +CONFIG_MLX5_CORE=m +CONFIG_MLX5_FPGA=y +CONFIG_MLX5_CORE_EN=y +CONFIG_MLX5_EN_ARFS=y +CONFIG_MLX5_EN_RXNFC=y +CONFIG_MLX5_MPFS=y +CONFIG_MLX5_ESWITCH=y +CONFIG_MLX5_BRIDGE=y +CONFIG_MLX5_CLS_ACT=y +CONFIG_MLX5_TC_CT=y +CONFIG_MLX5_TC_SAMPLE=y +CONFIG_MLX5_CORE_EN_DCB=y +CONFIG_MLX5_CORE_IPOIB=y +CONFIG_MLX5_MACSEC=y +CONFIG_MLX5_EN_IPSEC=y +CONFIG_MLX5_EN_TLS=y +CONFIG_MLX5_SW_STEERING=y +CONFIG_MLX5_HW_STEERING=y +CONFIG_MLX5_SF=y +CONFIG_MLX5_SF_MANAGER=y +CONFIG_MLX5_DPLL=m +CONFIG_MLX5_EN_PSP=y +CONFIG_MLXSW_CORE=m +CONFIG_MLXSW_CORE_HWMON=y +CONFIG_MLXSW_CORE_THERMAL=y +CONFIG_MLXSW_PCI=m +CONFIG_MLXSW_I2C=m +CONFIG_MLXSW_SPECTRUM=m +CONFIG_MLXSW_SPECTRUM_DCB=y +CONFIG_MLXSW_MINIMAL=m +CONFIG_MLXFW=m +CONFIG_NET_VENDOR_META=y +CONFIG_FBNIC=m +CONFIG_NET_VENDOR_MICREL=y +CONFIG_KS8842=m +CONFIG_KS8851=m +CONFIG_KS8851_MLL=m +CONFIG_KSZ884X_PCI=m +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_ENC28J60=m +# CONFIG_ENC28J60_WRITEVERIFY is not set +CONFIG_ENCX24J600=m +CONFIG_LAN743X=m +CONFIG_LAN865X=m +CONFIG_VCAP=y +CONFIG_NET_VENDOR_MICROSEMI=y +CONFIG_MSCC_OCELOT_SWITCH_LIB=m +CONFIG_NET_VENDOR_MICROSOFT=y +CONFIG_MICROSOFT_MANA=m +CONFIG_NET_VENDOR_MUCSE=y +CONFIG_MGBE=m +CONFIG_NET_VENDOR_MYRI=y +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_FEALNX=m +CONFIG_NET_VENDOR_NI=y +CONFIG_NI_XGE_MANAGEMENT_ENET=m +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NATSEMI=m +CONFIG_NS83820=m +CONFIG_NET_VENDOR_NETRONOME=y +CONFIG_NFP=m +CONFIG_NFP_APP_FLOWER=y +CONFIG_NFP_APP_ABM_NIC=y +CONFIG_NFP_NET_IPSEC=y +# CONFIG_NFP_DEBUG is not set +CONFIG_NET_VENDOR_8390=y +CONFIG_PCMCIA_AXNET=m +CONFIG_NE2K_PCI=m +CONFIG_PCMCIA_PCNET=m +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_FORCEDETH=m +CONFIG_NET_VENDOR_OKI=y +CONFIG_ETHOC=m +CONFIG_OA_TC6=m +CONFIG_NET_VENDOR_PACKET_ENGINES=y +CONFIG_HAMACHI=m +CONFIG_YELLOWFIN=m +CONFIG_NET_VENDOR_PENSANDO=y +CONFIG_IONIC=m +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLCNIC_SRIOV=y +CONFIG_QLCNIC_DCB=y +CONFIG_QLCNIC_HWMON=y +CONFIG_NETXEN_NIC=m +CONFIG_QED=m +CONFIG_QED_LL2=y +CONFIG_QED_SRIOV=y +CONFIG_QEDE=m +CONFIG_QED_RDMA=y +CONFIG_QED_ISCSI=y +CONFIG_QED_FCOE=y +CONFIG_QED_OOO=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_BNA=m +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_QCOM_EMAC=m +CONFIG_RMNET=m +CONFIG_NET_VENDOR_RDC=y +CONFIG_R6040=m +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_8139CP=m +CONFIG_8139TOO=m +CONFIG_8139TOO_PIO=y +# CONFIG_8139TOO_TUNE_TWISTER is not set +CONFIG_8139TOO_8129=y +# CONFIG_8139_OLD_RX_RESET is not set +CONFIG_R8169=m +CONFIG_R8169_LEDS=y +CONFIG_RTASE=m +CONFIG_NET_VENDOR_RENESAS=y +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_ROCKER=m +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_SXGBE_ETH=m +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_SC92031=m +CONFIG_NET_VENDOR_SIS=y +CONFIG_SIS900=m +CONFIG_SIS190=m +CONFIG_NET_VENDOR_SOLARFLARE=y +CONFIG_SFC=m +CONFIG_SFC_MTD=y +CONFIG_SFC_MCDI_MON=y +CONFIG_SFC_SRIOV=y +CONFIG_SFC_MCDI_LOGGING=y +CONFIG_SFC_FALCON=m +CONFIG_SFC_FALCON_MTD=y +CONFIG_SFC_SIENA=m +CONFIG_SFC_SIENA_MTD=y +CONFIG_SFC_SIENA_MCDI_MON=y +CONFIG_SFC_SIENA_SRIOV=y +CONFIG_SFC_SIENA_MCDI_LOGGING=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_PCMCIA_SMC91C92=m +CONFIG_EPIC100=m +CONFIG_SMSC911X=m +CONFIG_SMSC9420=m +CONFIG_NET_VENDOR_SOCIONEXT=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_STMMAC_ETH=m +# CONFIG_STMMAC_SELFTESTS is not set +CONFIG_STMMAC_PLATFORM=m +CONFIG_DWMAC_GENERIC=m +CONFIG_STMMAC_LIBPCI=m +CONFIG_DWMAC_INTEL=m +CONFIG_DWMAC_MOTORCOMM=m +CONFIG_STMMAC_PCI=m +CONFIG_NET_VENDOR_SUN=y +CONFIG_HAPPYMEAL=m +CONFIG_SUNGEM=m +CONFIG_CASSINI=m +CONFIG_NIU=m +CONFIG_NET_VENDOR_SYNOPSYS=y +CONFIG_DWC_XLGMAC=m +CONFIG_DWC_XLGMAC_PCI=m +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_TEHUTI=m +CONFIG_TEHUTI_TN40=m +CONFIG_NET_VENDOR_TI=y +# CONFIG_TI_CPSW_PHY_SEL is not set +CONFIG_TLAN=m +CONFIG_NET_VENDOR_VERTEXCOM=y +CONFIG_MSE102X=m +CONFIG_NET_VENDOR_VIA=y +CONFIG_VIA_RHINE=m +CONFIG_VIA_RHINE_MMIO=y +CONFIG_VIA_VELOCITY=m +CONFIG_NET_VENDOR_WANGXUN=y +CONFIG_LIBWX=m +CONFIG_NGBE=m +CONFIG_TXGBE=m +CONFIG_TXGBEVF=m +CONFIG_NGBEVF=m +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_WIZNET_W5100=m +CONFIG_WIZNET_W5300=m +# CONFIG_WIZNET_BUS_DIRECT is not set +# CONFIG_WIZNET_BUS_INDIRECT is not set +CONFIG_WIZNET_BUS_ANY=y +CONFIG_WIZNET_W5100_SPI=m +CONFIG_NET_VENDOR_XILINX=y +CONFIG_XILINX_EMACLITE=m +CONFIG_XILINX_AXI_EMAC=m +CONFIG_XILINX_LL_TEMAC=m +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_PCMCIA_XIRC2PS=m +CONFIG_FDDI=y +CONFIG_DEFXX=m +CONFIG_SKFP=m +CONFIG_MDIO_BUS=y +CONFIG_PHYLINK=m +CONFIG_PHYLIB=y +CONFIG_SWPHY=y +CONFIG_PHY_PACKAGE=m +CONFIG_LED_TRIGGER_PHY=y +CONFIG_OPEN_ALLIANCE_HELPERS=y +CONFIG_FIXED_PHY=y +# CONFIG_RUST_PHYLIB_ABSTRACTIONS is not set +CONFIG_SFP=m + +# +# MII PHY device drivers +# +CONFIG_AS21XXX_PHY=m +CONFIG_AIR_EN8811H_PHY=m +CONFIG_AMD_PHY=m +CONFIG_ADIN_PHY=m +CONFIG_ADIN1100_PHY=m +CONFIG_AQUANTIA_PHY=m +CONFIG_AX88796B_PHY=m +CONFIG_BROADCOM_PHY=m +CONFIG_BCM54140_PHY=m +CONFIG_BCM7XXX_PHY=m +CONFIG_BCM84881_PHY=y +CONFIG_BCM87XX_PHY=m +CONFIG_BCM_NET_PHYLIB=m +CONFIG_BCM_NET_PHYPTP=m +CONFIG_CICADA_PHY=m +CONFIG_CORTINA_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_ICPLUS_PHY=m +CONFIG_LXT_PHY=m +CONFIG_INTEL_XWAY_PHY=m +CONFIG_LSI_ET1011C_PHY=m +CONFIG_MARVELL_PHY=m +CONFIG_MARVELL_10G_PHY=m +CONFIG_MARVELL_88Q2XXX_PHY=m +CONFIG_MARVELL_88X2222_PHY=m +CONFIG_MAXLINEAR_GPHY=m +CONFIG_MAXLINEAR_86110_PHY=m +CONFIG_MEDIATEK_GE_PHY=m +# CONFIG_MEDIATEK_GE_SOC_PHY is not set +CONFIG_MTK_NET_PHYLIB=m +CONFIG_MICREL_PHY=m +CONFIG_MICROCHIP_T1S_PHY=m +CONFIG_MICROCHIP_PHY=m +CONFIG_MICROCHIP_T1_PHY=m +CONFIG_MICROCHIP_PHY_RDS_PTP=m +CONFIG_MICROSEMI_PHY=m +CONFIG_MOTORCOMM_PHY=m +CONFIG_NATIONAL_PHY=m +CONFIG_NXP_CBTX_PHY=m +CONFIG_NXP_C45_TJA11XX_PHY=m +CONFIG_NXP_TJA11XX_PHY=m +CONFIG_NCN26000_PHY=m +CONFIG_QCOM_NET_PHYLIB=m +CONFIG_AT803X_PHY=m +CONFIG_QCA83XX_PHY=m +CONFIG_QCA808X_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_REALTEK_PHY=m +CONFIG_REALTEK_PHY_HWMON=y +CONFIG_RENESAS_PHY=m +CONFIG_ROCKCHIP_PHY=m +CONFIG_SMSC_PHY=m +CONFIG_STE10XP=m +CONFIG_TERANETICS_PHY=m +CONFIG_DP83822_PHY=m +CONFIG_DP83TC811_PHY=m +CONFIG_DP83848_PHY=m +CONFIG_DP83867_PHY=m +CONFIG_DP83869_PHY=m +CONFIG_DP83TD510_PHY=m +CONFIG_DP83TG720_PHY=m +CONFIG_VITESSE_PHY=m +CONFIG_XILINX_GMII2RGMII=m +CONFIG_PSE_CONTROLLER=y +CONFIG_PSE_REGULATOR=m +CONFIG_PSE_PD692X0=m +CONFIG_PSE_SI3474=m +CONFIG_PSE_TPS23881=m +CONFIG_CAN_DEV=m +CONFIG_CAN_VCAN=m +CONFIG_CAN_VXCAN=m +CONFIG_CAN_NETLINK=y +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_RX_OFFLOAD=y +CONFIG_CAN_CAN327=m +CONFIG_CAN_DUMMY=m +CONFIG_CAN_JANZ_ICAN3=m +CONFIG_CAN_KVASER_PCIEFD=m +CONFIG_CAN_SLCAN=m +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PLATFORM=m +CONFIG_CAN_C_CAN_PCI=m +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +CONFIG_CAN_CC770_PLATFORM=m +CONFIG_CAN_CTUCANFD=m +CONFIG_CAN_CTUCANFD_PCI=m +CONFIG_CAN_ESD_402_PCI=m +CONFIG_CAN_IFI_CANFD=m +CONFIG_CAN_M_CAN=m +CONFIG_CAN_M_CAN_PCI=m +CONFIG_CAN_M_CAN_PLATFORM=m +CONFIG_CAN_M_CAN_TCAN4X5X=m +CONFIG_CAN_PEAK_PCIEFD=m +CONFIG_CAN_SJA1000=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +CONFIG_CAN_F81601=m +CONFIG_CAN_KVASER_PCI=m +CONFIG_CAN_PEAK_PCI=m +CONFIG_CAN_PEAK_PCIEC=y +CONFIG_CAN_PEAK_PCMCIA=m +CONFIG_CAN_PLX_PCI=m +CONFIG_CAN_SJA1000_ISA=m +CONFIG_CAN_SJA1000_PLATFORM=m +CONFIG_CAN_SOFTING=m +CONFIG_CAN_SOFTING_CS=m + +# +# CAN SPI interfaces +# +CONFIG_CAN_HI311X=m +CONFIG_CAN_MCP251X=m +CONFIG_CAN_MCP251XFD=m +# CONFIG_CAN_MCP251XFD_SANITY is not set +# end of CAN SPI interfaces + +# +# CAN USB interfaces +# +CONFIG_CAN_8DEV_USB=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB=m +CONFIG_CAN_ETAS_ES58X=m +CONFIG_CAN_F81604=m +CONFIG_CAN_GS_USB=m +CONFIG_CAN_KVASER_USB=m +CONFIG_CAN_MCBA_USB=m +CONFIG_CAN_NCT6694=m +CONFIG_CAN_PEAK_USB=m +CONFIG_CAN_UCAN=m +# end of CAN USB interfaces + +# CONFIG_CAN_DEBUG_DEVICES is not set + +# +# MCTP Device Drivers +# +CONFIG_MCTP_SERIAL=m +CONFIG_MCTP_TRANSPORT_I2C=m +CONFIG_MCTP_TRANSPORT_I3C=m +CONFIG_MCTP_TRANSPORT_USB=m +# end of MCTP Device Drivers + +CONFIG_FWNODE_MDIO=y +CONFIG_ACPI_MDIO=y +CONFIG_MDIO_BITBANG=m +CONFIG_MDIO_BCM_UNIMAC=m +CONFIG_MDIO_CAVIUM=m +CONFIG_MDIO_GPIO=m +CONFIG_MDIO_I2C=m +CONFIG_MDIO_MVUSB=m +CONFIG_MDIO_MSCC_MIIM=m +CONFIG_MDIO_REGMAP=m +CONFIG_MDIO_THUNDER=m + +# +# MDIO Multiplexers +# + +# +# PCS device drivers +# +CONFIG_PCS_XPCS=m +CONFIG_PCS_LYNX=m +CONFIG_PCS_MTK_LYNXI=m +# end of PCS device drivers + +CONFIG_PLIP=m +CONFIG_PPP=y +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +# CONFIG_PPPOE_HASH_BITS_1 is not set +# CONFIG_PPPOE_HASH_BITS_2 is not set +CONFIG_PPPOE_HASH_BITS_4=y +# CONFIG_PPPOE_HASH_BITS_8 is not set +CONFIG_PPPOE_HASH_BITS=4 +CONFIG_PPTP=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_SLIP=m +CONFIG_SLHC=y +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +CONFIG_SLIP_MODE_SLIP6=y +CONFIG_USB_NET_DRIVERS=m +CONFIG_USB_CATC=m +CONFIG_USB_KAWETH=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_LAN78XX=m +CONFIG_USB_USBNET=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_AX88179_178A=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=m +CONFIG_USB_NET_CDC_NCM=m +CONFIG_USB_NET_HUAWEI_CDC_NCM=m +CONFIG_USB_NET_CDC_MBIM=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SR9700=m +CONFIG_USB_NET_SR9800=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_GL620A=m +CONFIG_USB_NET_NET1080=m +CONFIG_USB_NET_PLUSB=m +CONFIG_USB_NET_MCS7830=m +CONFIG_USB_NET_RNDIS_HOST=m +CONFIG_USB_NET_CDC_SUBSET_ENABLE=m +CONFIG_USB_NET_CDC_SUBSET=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AN2720=y +CONFIG_USB_BELKIN=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_EPSON2888=y +CONFIG_USB_KC2190=y +CONFIG_USB_NET_ZAURUS=m +CONFIG_USB_NET_CX82310_ETH=m +CONFIG_USB_NET_KALMIA=m +CONFIG_USB_NET_QMI_WWAN=m +CONFIG_USB_HSO=m +CONFIG_USB_NET_INT51X1=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_IPHETH=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_VL600=m +CONFIG_USB_NET_CH9200=m +CONFIG_USB_NET_AQC111=m +CONFIG_USB_RTL8153_ECM=m +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_ADMTEK=y +CONFIG_ADM8211=m +CONFIG_ATH_COMMON=m +CONFIG_WLAN_VENDOR_ATH=y +# CONFIG_ATH_DEBUG is not set +CONFIG_ATH5K=m +# CONFIG_ATH5K_DEBUG is not set +# CONFIG_ATH5K_TRACER is not set +CONFIG_ATH5K_PCI=y +CONFIG_ATH9K_HW=m +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_COMMON_DEBUG=y +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K=m +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_DEBUGFS=y +CONFIG_ATH9K_STATION_STATISTICS=y +# CONFIG_ATH9K_DYNACK is not set +CONFIG_ATH9K_WOW=y +CONFIG_ATH9K_RFKILL=y +CONFIG_ATH9K_CHANNEL_CONTEXT=y +CONFIG_ATH9K_PCOEM=y +CONFIG_ATH9K_PCI_NO_EEPROM=m +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HWRNG=y +CONFIG_ATH9K_COMMON_SPECTRAL=y +CONFIG_CARL9170=m +CONFIG_CARL9170_LEDS=y +# CONFIG_CARL9170_DEBUGFS is not set +CONFIG_CARL9170_WPC=y +CONFIG_CARL9170_HWRNG=y +CONFIG_ATH6KL=m +CONFIG_ATH6KL_SDIO=m +CONFIG_ATH6KL_USB=m +# CONFIG_ATH6KL_DEBUG is not set +# CONFIG_ATH6KL_TRACING is not set +CONFIG_AR5523=m +CONFIG_WIL6210=m +CONFIG_WIL6210_ISR_COR=y +CONFIG_WIL6210_TRACING=y +CONFIG_WIL6210_DEBUGFS=y +CONFIG_ATH10K=m +CONFIG_ATH10K_CE=y +CONFIG_ATH10K_PCI=m +CONFIG_ATH10K_SDIO=m +CONFIG_ATH10K_USB=m +# CONFIG_ATH10K_DEBUG is not set +CONFIG_ATH10K_DEBUGFS=y +CONFIG_ATH10K_LEDS=y +CONFIG_ATH10K_SPECTRAL=y +CONFIG_ATH10K_TRACING=y +CONFIG_WCN36XX=m +# CONFIG_WCN36XX_DEBUGFS is not set +CONFIG_ATH11K=m +CONFIG_ATH11K_AHB=m +CONFIG_ATH11K_PCI=m +# CONFIG_ATH11K_DEBUG is not set +CONFIG_ATH11K_DEBUGFS=y +CONFIG_ATH11K_TRACING=y +CONFIG_ATH11K_SPECTRAL=y +# CONFIG_ATH11K_CFR is not set +CONFIG_ATH12K=m +CONFIG_ATH12K_AHB=y +# CONFIG_ATH12K_DEBUG is not set +CONFIG_ATH12K_DEBUGFS=y +CONFIG_ATH12K_TRACING=y +# CONFIG_ATH12K_COREDUMP is not set +CONFIG_WLAN_VENDOR_ATMEL=y +CONFIG_AT76C50X_USB=m +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_B43=m +CONFIG_B43_BCMA=y +CONFIG_B43_SSB=y +CONFIG_B43_BUSES_BCMA_AND_SSB=y +# CONFIG_B43_BUSES_BCMA is not set +# CONFIG_B43_BUSES_SSB is not set +CONFIG_B43_PCI_AUTOSELECT=y +CONFIG_B43_PCICORE_AUTOSELECT=y +# CONFIG_B43_SDIO is not set +CONFIG_B43_BCMA_PIO=y +CONFIG_B43_PIO=y +CONFIG_B43_PHY_G=y +CONFIG_B43_PHY_N=y +CONFIG_B43_PHY_LP=y +CONFIG_B43_PHY_HT=y +CONFIG_B43_LEDS=y +CONFIG_B43_HWRNG=y +# CONFIG_B43_DEBUG is not set +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_PCI_AUTOSELECT=y +CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y +CONFIG_B43LEGACY_LEDS=y +CONFIG_B43LEGACY_HWRNG=y +# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DMA=y +CONFIG_B43LEGACY_PIO=y +CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y +# CONFIG_B43LEGACY_DMA_MODE is not set +# CONFIG_B43LEGACY_PIO_MODE is not set +CONFIG_BRCMUTIL=m +CONFIG_BRCMSMAC=m +CONFIG_BRCMSMAC_LEDS=y +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_PROTO_MSGBUF=y +CONFIG_BRCMFMAC_SDIO=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMFMAC_PCIE=y +CONFIG_BRCM_TRACING=y +# CONFIG_BRCMDBG is not set +CONFIG_WLAN_VENDOR_INTEL=y +CONFIG_IPW2100=m +CONFIG_IPW2100_MONITOR=y +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2200=m +CONFIG_IPW2200_MONITOR=y +CONFIG_IPW2200_RADIOTAP=y +CONFIG_IPW2200_PROMISCUOUS=y +CONFIG_IPW2200_QOS=y +# CONFIG_IPW2200_DEBUG is not set +CONFIG_LIBIPW=m +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_IWLEGACY=m +CONFIG_IWL4965=m +CONFIG_IWL3945=m + +# +# iwl3945 / iwl4965 Debugging Options +# +# CONFIG_IWLEGACY_DEBUG is not set +CONFIG_IWLEGACY_DEBUGFS=y +# end of iwl3945 / iwl4965 Debugging Options + +CONFIG_IWLWIFI=m +CONFIG_IWLWIFI_LEDS=y +CONFIG_IWLDVM=m +CONFIG_IWLMVM=m +CONFIG_IWLMLD=m +CONFIG_IWLWIFI_OPMODE_MODULAR=y + +# +# Debugging Options +# +# CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TRACING=y +# end of Debugging Options + +CONFIG_WLAN_VENDOR_INTERSIL=y +CONFIG_P54_COMMON=m +CONFIG_P54_USB=m +CONFIG_P54_PCI=m +CONFIG_P54_SPI=m +# CONFIG_P54_SPI_DEFAULT_EEPROM is not set +CONFIG_P54_LEDS=y +CONFIG_WLAN_VENDOR_MARVELL=y +CONFIG_LIBERTAS=m +CONFIG_LIBERTAS_USB=m +CONFIG_LIBERTAS_SDIO=m +CONFIG_LIBERTAS_SPI=m +# CONFIG_LIBERTAS_DEBUG is not set +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBERTAS_THINFIRM=m +# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set +CONFIG_LIBERTAS_THINFIRM_USB=m +CONFIG_MWIFIEX=m +CONFIG_MWIFIEX_SDIO=m +CONFIG_MWIFIEX_PCIE=m +CONFIG_MWIFIEX_USB=m +CONFIG_MWL8K=m +CONFIG_WLAN_VENDOR_MEDIATEK=y +CONFIG_MT7601U=m +CONFIG_MT76_CORE=m +CONFIG_MT76_LEDS=y +CONFIG_MT76_USB=m +CONFIG_MT76_SDIO=m +CONFIG_MT76x02_LIB=m +CONFIG_MT76x02_USB=m +CONFIG_MT76_CONNAC_LIB=m +CONFIG_MT792x_LIB=m +CONFIG_MT792x_USB=m +CONFIG_MT76x0_COMMON=m +CONFIG_MT76x0U=m +CONFIG_MT76x0E=m +CONFIG_MT76x2_COMMON=m +CONFIG_MT76x2E=m +CONFIG_MT76x2U=m +CONFIG_MT7603E=m +CONFIG_MT7615_COMMON=m +CONFIG_MT7615E=m +CONFIG_MT7663_USB_SDIO_COMMON=m +CONFIG_MT7663U=m +CONFIG_MT7663S=m +CONFIG_MT7915E=m +CONFIG_MT7921_COMMON=m +CONFIG_MT7921E=m +CONFIG_MT7921S=m +CONFIG_MT7921U=m +CONFIG_MT7996E=m +CONFIG_MT7925_COMMON=m +CONFIG_MT7925E=m +CONFIG_MT7925U=m +CONFIG_WLAN_VENDOR_MICROCHIP=y +CONFIG_WILC1000=m +CONFIG_WILC1000_SDIO=m +CONFIG_WILC1000_SPI=m +CONFIG_WILC1000_HW_OOB_INTR=y +CONFIG_WLAN_VENDOR_PURELIFI=y +CONFIG_PLFXLC=m +CONFIG_WLAN_VENDOR_RALINK=y +CONFIG_RT2X00=m +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT61PCI=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800PCI_RT3290=y +CONFIG_RT2500USB=m +CONFIG_RT73USB=m +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RT2800USB_UNKNOWN=y +CONFIG_RT2800_LIB=m +CONFIG_RT2800_LIB_MMIO=m +CONFIG_RT2X00_LIB_MMIO=m +CONFIG_RT2X00_LIB_PCI=m +CONFIG_RT2X00_LIB_USB=m +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_LEDS=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RT2X00_DEBUG is not set +CONFIG_WLAN_VENDOR_REALTEK=y +CONFIG_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL_CARDS=m +CONFIG_RTL8192CE=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192DE=m +CONFIG_RTL8723AE=m +CONFIG_RTL8723BE=m +CONFIG_RTL8188EE=m +CONFIG_RTL8192EE=m +CONFIG_RTL8821AE=m +CONFIG_RTL8192CU=m +CONFIG_RTL8192DU=m +CONFIG_RTLWIFI=m +CONFIG_RTLWIFI_PCI=m +CONFIG_RTLWIFI_USB=m +# CONFIG_RTLWIFI_DEBUG is not set +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8192D_COMMON=m +CONFIG_RTL8723_COMMON=m +CONFIG_RTLBTCOEXIST=m +CONFIG_RTL8XXXU=m +CONFIG_RTL8XXXU_UNTESTED=y +CONFIG_RTW88=m +CONFIG_RTW88_CORE=m +CONFIG_RTW88_PCI=m +CONFIG_RTW88_SDIO=m +CONFIG_RTW88_USB=m +CONFIG_RTW88_8822B=m +CONFIG_RTW88_8822C=m +CONFIG_RTW88_8723X=m +CONFIG_RTW88_8703B=m +CONFIG_RTW88_8723D=m +CONFIG_RTW88_8821C=m +CONFIG_RTW88_88XXA=m +CONFIG_RTW88_8821A=m +CONFIG_RTW88_8812A=m +CONFIG_RTW88_8814A=m +CONFIG_RTW88_8822BE=m +CONFIG_RTW88_8822BS=m +CONFIG_RTW88_8822BU=m +CONFIG_RTW88_8822CE=m +CONFIG_RTW88_8822CS=m +CONFIG_RTW88_8822CU=m +CONFIG_RTW88_8723DE=m +CONFIG_RTW88_8723DS=m +CONFIG_RTW88_8723CS=m +CONFIG_RTW88_8723DU=m +CONFIG_RTW88_8821CE=m +CONFIG_RTW88_8821CS=m +CONFIG_RTW88_8821CU=m +CONFIG_RTW88_8821AU=m +CONFIG_RTW88_8812AU=m +CONFIG_RTW88_8814AE=m +CONFIG_RTW88_8814AU=m +CONFIG_RTW88_DEBUG=y +CONFIG_RTW88_DEBUGFS=y +CONFIG_RTW88_LEDS=y +CONFIG_RTW89=m +CONFIG_RTW89_CORE=m +CONFIG_RTW89_PCI=m +CONFIG_RTW89_USB=m +CONFIG_RTW89_8851B=m +CONFIG_RTW89_8852A=m +CONFIG_RTW89_8852B_COMMON=m +CONFIG_RTW89_8852B=m +CONFIG_RTW89_8852BT=m +CONFIG_RTW89_8852C=m +CONFIG_RTW89_8922A=m +CONFIG_RTW89_8851BE=m +CONFIG_RTW89_8851BU=m +CONFIG_RTW89_8852AE=m +CONFIG_RTW89_8852AU=m +CONFIG_RTW89_8852BE=m +CONFIG_RTW89_8852BU=m +CONFIG_RTW89_8852BTE=m +CONFIG_RTW89_8852CE=m +CONFIG_RTW89_8852CU=m +CONFIG_RTW89_8922AE=m +CONFIG_RTW89_DEBUG=y +CONFIG_RTW89_DEBUGMSG=y +CONFIG_RTW89_DEBUGFS=y +CONFIG_WLAN_VENDOR_RSI=y +CONFIG_RSI_91X=m +# CONFIG_RSI_DEBUGFS is not set +CONFIG_RSI_SDIO=m +CONFIG_RSI_USB=m +CONFIG_RSI_COEX=y +CONFIG_WLAN_VENDOR_SILABS=y +CONFIG_WFX=m +CONFIG_WLAN_VENDOR_ST=y +CONFIG_CW1200=m +CONFIG_CW1200_WLAN_SDIO=m +CONFIG_CW1200_WLAN_SPI=m +CONFIG_WLAN_VENDOR_TI=y +CONFIG_WL1251=m +CONFIG_WL1251_SPI=m +CONFIG_WL1251_SDIO=m +CONFIG_WL12XX=m +CONFIG_WL18XX=m +CONFIG_WLCORE=m +CONFIG_WLCORE_SDIO=m +CONFIG_WLAN_VENDOR_ZYDAS=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_WLAN_VENDOR_QUANTENNA=y +CONFIG_QTNFMAC=m +CONFIG_QTNFMAC_PCIE=m +CONFIG_MAC80211_HWSIM=m +CONFIG_VIRT_WIFI=m +CONFIG_WAN=y +CONFIG_HDLC=m +CONFIG_HDLC_RAW=m +CONFIG_HDLC_RAW_ETH=m +CONFIG_HDLC_CISCO=m +CONFIG_HDLC_FR=m +CONFIG_HDLC_PPP=m +CONFIG_HDLC_X25=m +CONFIG_FRAMER=m +CONFIG_PCI200SYN=m +CONFIG_WANXL=m +CONFIG_PC300TOO=m +CONFIG_FARSYNC=m +CONFIG_LAPBETHER=m +CONFIG_IEEE802154_DRIVERS=m +CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_AT86RF230=m +CONFIG_IEEE802154_MRF24J40=m +CONFIG_IEEE802154_CC2520=m +CONFIG_IEEE802154_ATUSB=m +CONFIG_IEEE802154_ADF7242=m +CONFIG_IEEE802154_CA8210=m +CONFIG_IEEE802154_CA8210_DEBUGFS=y +CONFIG_IEEE802154_MCR20A=m +CONFIG_IEEE802154_HWSIM=m + +# +# Wireless WAN +# +CONFIG_WWAN=m +CONFIG_WWAN_DEBUGFS=y +CONFIG_WWAN_HWSIM=m +CONFIG_MHI_WWAN_CTRL=m +CONFIG_MHI_WWAN_MBIM=m +CONFIG_RPMSG_WWAN_CTRL=m +CONFIG_IOSM=m +CONFIG_MTK_T7XX=m +# end of Wireless WAN + +CONFIG_XEN_NETDEV_FRONTEND=y +CONFIG_XEN_NETDEV_BACKEND=m +CONFIG_VMXNET3=m +CONFIG_FUJITSU_ES=m +CONFIG_USB4_NET=m +CONFIG_HYPERV_NET=m +CONFIG_NETDEVSIM=m +CONFIG_NET_FAILOVER=y +CONFIG_ISDN=y +CONFIG_ISDN_CAPI=y +CONFIG_MISDN=m +CONFIG_MISDN_DSP=m +CONFIG_MISDN_L1OIP=m + +# +# mISDN hardware drivers +# +CONFIG_MISDN_HFCPCI=m +CONFIG_MISDN_HFCMULTI=m +CONFIG_MISDN_HFCUSB=m +CONFIG_MISDN_AVMFRITZ=m +CONFIG_MISDN_SPEEDFAX=m +CONFIG_MISDN_INFINEON=m +CONFIG_MISDN_W6692=m +CONFIG_MISDN_NETJET=m +CONFIG_MISDN_HDLC=m +CONFIG_MISDN_IPAC=m +CONFIG_MISDN_ISAR=m + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=m +CONFIG_INPUT_FF_MEMLESS=m +CONFIG_INPUT_SPARSEKMAP=m +CONFIG_INPUT_MATRIXKMAP=m +CONFIG_INPUT_VIVALDIFMAP=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_JOYDEV=m +CONFIG_INPUT_EVDEV=y + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ADC=m +CONFIG_KEYBOARD_ADP5520=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_APPLESPI=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_QT1050=m +CONFIG_KEYBOARD_QT1070=m +CONFIG_KEYBOARD_QT2160=m +CONFIG_KEYBOARD_DLINK_DIR685=m +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_LM8333=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_MAX7360=m +CONFIG_KEYBOARD_MPR121=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OPENCORES=m +CONFIG_KEYBOARD_PINEPHONE=m +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_IQS62X=m +CONFIG_KEYBOARD_TM2_TOUCHKEY=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYBOARD_CROS_EC=m +CONFIG_KEYBOARD_MTK_PMIC=m +CONFIG_KEYBOARD_CYPRESS_SF=m +CONFIG_INPUT_MOUSE=y +CONFIG_MOUSE_PS2=m +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=y +CONFIG_MOUSE_PS2_ELANTECH_SMBUS=y +CONFIG_MOUSE_PS2_SENTELIC=y +CONFIG_MOUSE_PS2_TOUCHKIT=y +CONFIG_MOUSE_PS2_FOCALTECH=y +CONFIG_MOUSE_PS2_VMMOUSE=y +CONFIG_MOUSE_PS2_SMBUS=y +CONFIG_MOUSE_SERIAL=m +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=m +CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y +CONFIG_MOUSE_VSXXXAA=m +CONFIG_MOUSE_GPIO=m +CONFIG_MOUSE_SYNAPTICS_I2C=m +CONFIG_MOUSE_SYNAPTICS_USB=m +CONFIG_INPUT_JOYSTICK=y +CONFIG_JOYSTICK_ANALOG=m +CONFIG_JOYSTICK_A3D=m +CONFIG_JOYSTICK_ADC=m +CONFIG_JOYSTICK_ADI=m +CONFIG_JOYSTICK_COBRA=m +CONFIG_JOYSTICK_GF2K=m +CONFIG_JOYSTICK_GRIP=m +CONFIG_JOYSTICK_GRIP_MP=m +CONFIG_JOYSTICK_GUILLEMOT=m +CONFIG_JOYSTICK_INTERACT=m +CONFIG_JOYSTICK_SIDEWINDER=m +CONFIG_JOYSTICK_TMDC=m +CONFIG_JOYSTICK_IFORCE=m +CONFIG_JOYSTICK_IFORCE_USB=m +CONFIG_JOYSTICK_IFORCE_232=m +CONFIG_JOYSTICK_WARRIOR=m +CONFIG_JOYSTICK_MAGELLAN=m +CONFIG_JOYSTICK_SPACEORB=m +CONFIG_JOYSTICK_SPACEBALL=m +CONFIG_JOYSTICK_STINGER=m +CONFIG_JOYSTICK_TWIDJOY=m +CONFIG_JOYSTICK_ZHENHUA=m +CONFIG_JOYSTICK_DB9=m +CONFIG_JOYSTICK_GAMECON=m +CONFIG_JOYSTICK_TURBOGRAFX=m +CONFIG_JOYSTICK_AS5011=m +CONFIG_JOYSTICK_JOYDUMP=m +CONFIG_JOYSTICK_XPAD=m +CONFIG_JOYSTICK_XPAD_FF=y +CONFIG_JOYSTICK_XPAD_LEDS=y +CONFIG_JOYSTICK_WALKERA0701=m +CONFIG_JOYSTICK_PSXPAD_SPI=m +CONFIG_JOYSTICK_PSXPAD_SPI_FF=y +CONFIG_JOYSTICK_PXRC=m +CONFIG_JOYSTICK_QWIIC=m +CONFIG_JOYSTICK_FSIA6B=m +CONFIG_JOYSTICK_SENSEHAT=m +CONFIG_JOYSTICK_SEESAW=m +CONFIG_INPUT_TABLET=y +CONFIG_TABLET_USB_ACECAD=m +CONFIG_TABLET_USB_AIPTEK=m +CONFIG_TABLET_USB_HANWANG=m +CONFIG_TABLET_USB_KBTAB=m +CONFIG_TABLET_USB_PEGASUS=m +CONFIG_TABLET_SERIAL_WACOM4=m +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_88PM860X=m +CONFIG_TOUCHSCREEN_ADS7846=m +CONFIG_TOUCHSCREEN_AD7877=m +CONFIG_TOUCHSCREEN_AD7879=m +CONFIG_TOUCHSCREEN_AD7879_I2C=m +CONFIG_TOUCHSCREEN_AD7879_SPI=m +CONFIG_TOUCHSCREEN_ADC=m +CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_ATMEL_MXT_T37=y +CONFIG_TOUCHSCREEN_AUO_PIXCIR=m +CONFIG_TOUCHSCREEN_BU21013=m +CONFIG_TOUCHSCREEN_BU21029=m +CONFIG_TOUCHSCREEN_CHIPONE_ICN8505=m +CONFIG_TOUCHSCREEN_CY8CTMA140=m +CONFIG_TOUCHSCREEN_CY8CTMG110=m +CONFIG_TOUCHSCREEN_CYTTSP_CORE=m +CONFIG_TOUCHSCREEN_CYTTSP_I2C=m +CONFIG_TOUCHSCREEN_CYTTSP_SPI=m +CONFIG_TOUCHSCREEN_CYTTSP5=m +CONFIG_TOUCHSCREEN_DA9034=m +CONFIG_TOUCHSCREEN_DA9052=m +CONFIG_TOUCHSCREEN_DYNAPRO=m +CONFIG_TOUCHSCREEN_HAMPSHIRE=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX_SERIAL=m +CONFIG_TOUCHSCREEN_EXC3000=m +CONFIG_TOUCHSCREEN_FUJITSU=m +CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_GOODIX_BERLIN_CORE=m +CONFIG_TOUCHSCREEN_GOODIX_BERLIN_I2C=m +CONFIG_TOUCHSCREEN_GOODIX_BERLIN_SPI=m +CONFIG_TOUCHSCREEN_HIDEEP=m +CONFIG_TOUCHSCREEN_HIMAX_HX852X=m +CONFIG_TOUCHSCREEN_HYCON_HY46XX=m +CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=m +CONFIG_TOUCHSCREEN_HYNITRON_CST816X=m +CONFIG_TOUCHSCREEN_ILI210X=m +CONFIG_TOUCHSCREEN_ILITEK=m +CONFIG_TOUCHSCREEN_S6SY761=m +CONFIG_TOUCHSCREEN_GUNZE=m +CONFIG_TOUCHSCREEN_EKTF2127=m +CONFIG_TOUCHSCREEN_ELAN=y +CONFIG_TOUCHSCREEN_ELO=m +CONFIG_TOUCHSCREEN_WACOM_W8001=m +CONFIG_TOUCHSCREEN_WACOM_I2C=m +CONFIG_TOUCHSCREEN_MAX11801=m +CONFIG_TOUCHSCREEN_MMS114=m +CONFIG_TOUCHSCREEN_MELFAS_MIP4=m +CONFIG_TOUCHSCREEN_MSG2638=m +CONFIG_TOUCHSCREEN_MTOUCH=m +CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS=m +CONFIG_TOUCHSCREEN_IMAGIS=m +CONFIG_TOUCHSCREEN_INEXIO=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_EDT_FT5X06=m +CONFIG_TOUCHSCREEN_TOUCHRIGHT=m +CONFIG_TOUCHSCREEN_TOUCHWIN=m +CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_WDT87XX_I2C=m +CONFIG_TOUCHSCREEN_WM831X=m +CONFIG_TOUCHSCREEN_WM97XX=m +CONFIG_TOUCHSCREEN_WM9705=y +CONFIG_TOUCHSCREEN_WM9712=y +CONFIG_TOUCHSCREEN_WM9713=y +CONFIG_TOUCHSCREEN_USB_COMPOSITE=m +CONFIG_TOUCHSCREEN_MC13783=m +CONFIG_TOUCHSCREEN_USB_EGALAX=y +CONFIG_TOUCHSCREEN_USB_PANJIT=y +CONFIG_TOUCHSCREEN_USB_3M=y +CONFIG_TOUCHSCREEN_USB_ITM=y +CONFIG_TOUCHSCREEN_USB_ETURBO=y +CONFIG_TOUCHSCREEN_USB_GUNZE=y +CONFIG_TOUCHSCREEN_USB_DMC_TSC10=y +CONFIG_TOUCHSCREEN_USB_IRTOUCH=y +CONFIG_TOUCHSCREEN_USB_IDEALTEK=y +CONFIG_TOUCHSCREEN_USB_GENERAL_TOUCH=y +CONFIG_TOUCHSCREEN_USB_GOTOP=y +CONFIG_TOUCHSCREEN_USB_JASTEC=y +CONFIG_TOUCHSCREEN_USB_ELO=y +CONFIG_TOUCHSCREEN_USB_E2I=y +CONFIG_TOUCHSCREEN_USB_ZYTRONIC=y +CONFIG_TOUCHSCREEN_USB_ETT_TC45USB=y +CONFIG_TOUCHSCREEN_USB_NEXIO=y +CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y +CONFIG_TOUCHSCREEN_TOUCHIT213=m +CONFIG_TOUCHSCREEN_TSC_SERIO=m +CONFIG_TOUCHSCREEN_TSC200X_CORE=m +CONFIG_TOUCHSCREEN_TSC2004=m +CONFIG_TOUCHSCREEN_TSC2005=m +CONFIG_TOUCHSCREEN_TSC2007=m +CONFIG_TOUCHSCREEN_TSC2007_IIO=y +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_TOUCHSCREEN_RM_TS=m +CONFIG_TOUCHSCREEN_SILEAD=m +CONFIG_TOUCHSCREEN_SIS_I2C=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMFTS=m +CONFIG_TOUCHSCREEN_SUR40=m +CONFIG_TOUCHSCREEN_SURFACE3_SPI=m +CONFIG_TOUCHSCREEN_SX8654=m +CONFIG_TOUCHSCREEN_TPS6507X=m +CONFIG_TOUCHSCREEN_ZET6223=m +CONFIG_TOUCHSCREEN_ZFORCE=m +CONFIG_TOUCHSCREEN_COLIBRI_VF50=m +CONFIG_TOUCHSCREEN_ROHM_BU21023=m +CONFIG_TOUCHSCREEN_IQS5XX=m +CONFIG_TOUCHSCREEN_IQS7211=m +CONFIG_TOUCHSCREEN_ZINITIX=m +CONFIG_TOUCHSCREEN_HIMAX_HX83112B=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_88PM860X_ONKEY=m +CONFIG_INPUT_88PM80X_ONKEY=m +CONFIG_INPUT_AD714X=m +CONFIG_INPUT_AD714X_I2C=m +CONFIG_INPUT_AD714X_SPI=m +CONFIG_INPUT_ARIZONA_HAPTICS=m +CONFIG_INPUT_ATC260X_ONKEY=m +CONFIG_INPUT_AW86927=m +CONFIG_INPUT_BMA150=m +CONFIG_INPUT_CS40L50_VIBRA=m +CONFIG_INPUT_E3X0_BUTTON=m +CONFIG_INPUT_PCSPKR=m +CONFIG_INPUT_MAX7360_ROTARY=m +CONFIG_INPUT_MAX77693_HAPTIC=m +CONFIG_INPUT_MAX8925_ONKEY=m +CONFIG_INPUT_MAX8997_HAPTIC=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_APANEL=m +CONFIG_INPUT_GPIO_BEEPER=m +CONFIG_INPUT_GPIO_DECODER=m +CONFIG_INPUT_GPIO_VIBRA=m +CONFIG_INPUT_ATLAS_BTNS=m +CONFIG_INPUT_ATI_REMOTE2=m +CONFIG_INPUT_KEYSPAN_REMOTE=m +CONFIG_INPUT_KXTJ9=m +CONFIG_INPUT_POWERMATE=m +CONFIG_INPUT_YEALINK=m +CONFIG_INPUT_CM109=m +CONFIG_INPUT_REGULATOR_HAPTIC=m +CONFIG_INPUT_RETU_PWRBUTTON=m +CONFIG_INPUT_TPS6594_PWRBUTTON=m +CONFIG_INPUT_AXP20X_PEK=m +CONFIG_INPUT_TWL4030_PWRBUTTON=m +CONFIG_INPUT_TWL4030_VIBRA=m +CONFIG_INPUT_TWL6040_VIBRA=m +CONFIG_INPUT_UINPUT=y +CONFIG_INPUT_PALMAS_PWRBUTTON=m +CONFIG_INPUT_PCF8574=m +CONFIG_INPUT_PWM_BEEPER=m +CONFIG_INPUT_PWM_VIBRA=m +CONFIG_INPUT_GPIO_ROTARY_ENCODER=m +CONFIG_INPUT_DA7280_HAPTICS=m +CONFIG_INPUT_DA9052_ONKEY=m +CONFIG_INPUT_DA9055_ONKEY=m +CONFIG_INPUT_DA9063_ONKEY=m +CONFIG_INPUT_WM831X_ON=m +CONFIG_INPUT_PCAP=m +CONFIG_INPUT_ADXL34X=m +CONFIG_INPUT_ADXL34X_I2C=m +CONFIG_INPUT_ADXL34X_SPI=m +CONFIG_INPUT_IBM_PANEL=m +CONFIG_INPUT_IMS_PCU=m +CONFIG_INPUT_IQS269A=m +CONFIG_INPUT_IQS626A=m +CONFIG_INPUT_IQS7222=m +CONFIG_INPUT_CMA3000=m +CONFIG_INPUT_CMA3000_I2C=m +CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m +CONFIG_INPUT_IDEAPAD_SLIDEBAR=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +CONFIG_INPUT_DRV260X_HAPTICS=m +CONFIG_INPUT_DRV2665_HAPTICS=m +CONFIG_INPUT_DRV2667_HAPTICS=m +CONFIG_INPUT_QNAP_MCU=m +CONFIG_INPUT_RAVE_SP_PWRBUTTON=m +CONFIG_INPUT_RT5120_PWRKEY=m +CONFIG_RMI4_CORE=m +CONFIG_RMI4_I2C=m +CONFIG_RMI4_SPI=m +CONFIG_RMI4_SMB=m +CONFIG_RMI4_F03=y +CONFIG_RMI4_F03_SERIO=m +CONFIG_RMI4_2D_SENSOR=y +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F1A=y +CONFIG_RMI4_F21=y +CONFIG_RMI4_F30=y +CONFIG_RMI4_F34=y +CONFIG_RMI4_F3A=y +CONFIG_RMI4_F54=y +CONFIG_RMI4_F55=y + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_RAW=m +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_ARC_PS2=m +CONFIG_HYPERV_KEYBOARD=m +CONFIG_SERIO_GPIO_PS2=m +CONFIG_USERIO=m +CONFIG_GAMEPORT=m +CONFIG_GAMEPORT_EMU10K1=m +CONFIG_GAMEPORT_FM801=m +# 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_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LEGACY_TIOCSTI is not set +# CONFIG_LDISC_AUTOLOAD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_PNP=y +CONFIG_SERIAL_8250_16550A_VARIANTS=y +CONFIG_SERIAL_8250_FINTEK=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_PCILIB=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_EXAR=m +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_MEN_MCB=m +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_RUNTIME_UARTS=32 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_RSA=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_PCI1XXXX=m +CONFIG_SERIAL_8250_DFL=m +CONFIG_SERIAL_8250_DW=m +CONFIG_SERIAL_8250_KEBA=m +CONFIG_SERIAL_8250_RT288X=y +CONFIG_SERIAL_8250_LPSS=m +CONFIG_SERIAL_8250_MID=y +CONFIG_SERIAL_8250_PERICOM=m +CONFIG_SERIAL_8250_NI=m +CONFIG_SERIAL_8250_DWLIB=y + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX310X=y +CONFIG_SERIAL_UARTLITE=m +CONFIG_SERIAL_UARTLITE_NR_UARTS=1 +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_CONSOLE_POLL=y +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_LANTIQ=m +CONFIG_SERIAL_SCCNXP=y +CONFIG_SERIAL_SCCNXP_CONSOLE=y +CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX_I2C=m +CONFIG_SERIAL_SC16IS7XX_SPI=m +CONFIG_SERIAL_ALTERA_JTAGUART=m +CONFIG_SERIAL_ALTERA_UART=m +CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4 +CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200 +CONFIG_SERIAL_ARC=m +CONFIG_SERIAL_ARC_NR_PORTS=1 +CONFIG_SERIAL_RP2=m +CONFIG_SERIAL_RP2_NR_UARTS=32 +CONFIG_SERIAL_FSL_LPUART=m +CONFIG_SERIAL_FSL_LINFLEXUART=m +CONFIG_SERIAL_MEN_Z135=m +CONFIG_SERIAL_SPRD=m +# end of Serial drivers + +CONFIG_SERIAL_MCTRL_GPIO=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_MOXA_INTELLIO=m +CONFIG_MOXA_SMARTIO=m +CONFIG_N_HDLC=m +CONFIG_IPWIRELESS=m +CONFIG_N_GSM=m +CONFIG_NOZOMI=m +CONFIG_NULL_TTY=m +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_RPMSG_TTY=m +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +CONFIG_TTY_PRINTK=y +CONFIG_TTY_PRINTK_LEVEL=6 +CONFIG_PRINTER=m +# CONFIG_LP_CONSOLE is not set +CONFIG_PPDEV=m +CONFIG_VIRTIO_CONSOLE=y +CONFIG_IPMI_HANDLER=m +CONFIG_IPMI_DMI_DECODE=y +CONFIG_IPMI_PLAT_DATA=y +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_SSIF=m +CONFIG_IPMI_IPMB=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPMI_POWEROFF=m +CONFIG_SSIF_IPMI_BMC=m +CONFIG_IPMB_DEVICE_INTERFACE=m +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_AMD=m +CONFIG_HW_RANDOM_BA431=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HW_RANDOM_XIPHERA=m +CONFIG_APPLICOM=m +CONFIG_DEVMEM=y +CONFIG_NVRAM=m +CONFIG_DEVPORT=y +CONFIG_HPET=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_MMAP_DEFAULT=y +CONFIG_HANGCHECK_TIMER=m +CONFIG_UV_MMTIMER=m +CONFIG_TCG_TPM=y +# CONFIG_TCG_TPM2_HMAC is not set +CONFIG_HW_RANDOM_TPM=y +CONFIG_TCG_TIS_CORE=y +CONFIG_TCG_TIS=y +CONFIG_TCG_TIS_SPI=m +CONFIG_TCG_TIS_SPI_CR50=y +CONFIG_TCG_TIS_I2C=m +CONFIG_TCG_TIS_I2C_CR50=m +CONFIG_TCG_TIS_I2C_ATMEL=m +CONFIG_TCG_TIS_I2C_INFINEON=m +CONFIG_TCG_TIS_I2C_NUVOTON=m +CONFIG_TCG_NSC=m +CONFIG_TCG_ATMEL=m +CONFIG_TCG_INFINEON=m +CONFIG_TCG_XEN=m +CONFIG_TCG_CRB=y +CONFIG_TCG_VTPM_PROXY=m +CONFIG_TCG_SVSM=m +CONFIG_TCG_TIS_ST33ZP24=m +CONFIG_TCG_TIS_ST33ZP24_I2C=m +CONFIG_TCG_TIS_ST33ZP24_SPI=m +CONFIG_TELCLOCK=m +CONFIG_XILLYBUS_CLASS=m +CONFIG_XILLYBUS=m +CONFIG_XILLYBUS_PCIE=m +CONFIG_XILLYUSB=m +# end of Character devices + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_ACPI_I2C_OPREGION=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=m + +# +# Multiplexer I2C Chip support +# +CONFIG_I2C_MUX_GPIO=m +CONFIG_I2C_MUX_LTC4306=m +CONFIG_I2C_MUX_PCA9541=m +CONFIG_I2C_MUX_PCA954x=m +CONFIG_I2C_MUX_REG=m +CONFIG_I2C_MUX_MLXCPLD=m +# end of Multiplexer I2C Chip support + +CONFIG_I2C_ATR=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_SMBUS=m +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOPCA=m + +# +# I2C Hardware Bus support +# + +# +# PC SMBus host controller drivers +# +CONFIG_I2C_CCGX_UCSI=m +CONFIG_I2C_ALI1535=m +CONFIG_I2C_ALI1563=m +CONFIG_I2C_ALI15X3=m +CONFIG_I2C_AMD756=m +CONFIG_I2C_AMD8111=m +CONFIG_I2C_AMD_MP2=m +CONFIG_I2C_AMD_ASF=m +CONFIG_I2C_I801=m +CONFIG_I2C_I801_MUX=y +CONFIG_I2C_ISCH=m +CONFIG_I2C_ISMT=m +CONFIG_I2C_PIIX4=m +CONFIG_I2C_CHT_WC=m +CONFIG_I2C_NFORCE2=m +CONFIG_I2C_NVIDIA_GPU=m +CONFIG_I2C_SIS5595=m +CONFIG_I2C_SIS630=m +CONFIG_I2C_SIS96X=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=m +CONFIG_I2C_ZHAOXIN=m + +# +# ACPI drivers +# +CONFIG_I2C_SCMI=m + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +CONFIG_I2C_CBUS_GPIO=m +CONFIG_I2C_CGBC=m +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_DESIGNWARE_AMDISP=m +CONFIG_I2C_DESIGNWARE_BAYTRAIL=y +CONFIG_I2C_DESIGNWARE_PCI=m +# CONFIG_I2C_EMEV2 is not set +CONFIG_I2C_GPIO=m +# CONFIG_I2C_GPIO_FAULT_INJECTOR is not set +CONFIG_I2C_KEBA=m +CONFIG_I2C_KEMPLD=m +CONFIG_I2C_OCORES=m +CONFIG_I2C_PCA_PLATFORM=m +CONFIG_I2C_SIMTEC=m +CONFIG_I2C_XILINX=m + +# +# External I2C/SMBus adapter drivers +# +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_DLN2=m +CONFIG_I2C_LJCA=m +CONFIG_I2C_NCT6694=m +CONFIG_I2C_USBIO=m +CONFIG_I2C_CP2615=m +CONFIG_I2C_PARPORT=m +CONFIG_I2C_PCI1XXXX=m +CONFIG_I2C_ROBOTFUZZ_OSIF=m +CONFIG_I2C_TAOS_EVM=m +CONFIG_I2C_TINY_USB=m +CONFIG_I2C_VIPERBOARD=m + +# +# Other I2C/SMBus bus drivers +# +CONFIG_I2C_MLXCPLD=m +CONFIG_I2C_CROS_EC_TUNNEL=m +CONFIG_I2C_VIRTIO=m +# end of I2C Hardware Bus support + +CONFIG_I2C_STUB=m +CONFIG_I2C_SLAVE=y +CONFIG_I2C_SLAVE_EEPROM=m +CONFIG_I2C_SLAVE_TESTUNIT=m +# 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=m +CONFIG_ADI_I3C_MASTER=m +CONFIG_CDNS_I3C_MASTER=m +CONFIG_DW_I3C_MASTER=m +CONFIG_SVC_I3C_MASTER=m +CONFIG_MIPI_I3C_HCI=m +CONFIG_MIPI_I3C_HCI_PCI=m +CONFIG_I3C_OR_I2C=m +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y +CONFIG_SPI_MEM=y +CONFIG_SPI_OFFLOAD=y + +# +# SPI Master Controller Drivers +# +CONFIG_SPI_ALTERA=m +CONFIG_SPI_ALTERA_CORE=m +CONFIG_SPI_ALTERA_DFL=m +CONFIG_SPI_AXI_SPI_ENGINE=m +CONFIG_SPI_BITBANG=m +CONFIG_SPI_BUTTERFLY=m +CONFIG_SPI_CADENCE=m +CONFIG_SPI_CH341=m +CONFIG_SPI_CS42L43=m +CONFIG_SPI_DESIGNWARE=m +CONFIG_SPI_DW_DMA=y +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_DW_MMIO=m +CONFIG_SPI_DLN2=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_INTEL=m +CONFIG_SPI_INTEL_PCI=m +CONFIG_SPI_INTEL_PLATFORM=m +CONFIG_SPI_KSPI2=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_LJCA=m +CONFIG_SPI_MICROCHIP_CORE_QSPI=m +CONFIG_SPI_MICROCHIP_CORE_SPI=m +CONFIG_SPI_LANTIQ_SSC=m +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_PCI1XXXX=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_PXA2XX_PCI=m +CONFIG_SPI_SC18IS602=m +CONFIG_SPI_SIFIVE=m +CONFIG_SPI_MXIC=m +CONFIG_SPI_VIRTIO=m +CONFIG_SPI_XCOMM=m +CONFIG_SPI_XILINX=m +CONFIG_SPI_ZYNQMP_GQSPI=m +CONFIG_SPI_AMD=m + +# +# SPI Multiplexer support +# +CONFIG_SPI_MUX=m + +# +# SPI Protocol Masters +# +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_LOOPBACK_TEST=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_SLAVE=y +CONFIG_SPI_SLAVE_TIME=m +CONFIG_SPI_SLAVE_SYSTEM_CONTROL=m +CONFIG_SPI_DYNAMIC=y + +# +# SPI Offload triggers +# +CONFIG_SPI_OFFLOAD_TRIGGER_ADI_UTIL_SD=m +CONFIG_SPI_OFFLOAD_TRIGGER_PWM=m +CONFIG_SPMI=m +CONFIG_HSI=m +CONFIG_HSI_BOARDINFO=y + +# +# HSI controllers +# + +# +# HSI clients +# +CONFIG_HSI_CHAR=m +CONFIG_PPS=y +# CONFIG_PPS_DEBUG is not set + +# +# PPS clients support +# +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +CONFIG_PPS_CLIENT_GPIO=m +CONFIG_PPS_GENERATOR=m +CONFIG_PPS_GENERATOR_DUMMY=m +CONFIG_PPS_GENERATOR_TIO=m + +# +# PTP clock support +# +CONFIG_PTP_1588_CLOCK=y +CONFIG_PTP_1588_CLOCK_OPTIONAL=y +CONFIG_DP83640_PHY=m +CONFIG_PTP_1588_CLOCK_INES=m +CONFIG_PTP_1588_CLOCK_KVM=m +CONFIG_PTP_1588_CLOCK_VMCLOCK=m +CONFIG_PTP_1588_CLOCK_IDT82P33=m +CONFIG_PTP_1588_CLOCK_IDTCM=m +CONFIG_PTP_1588_CLOCK_FC3W=m +CONFIG_PTP_1588_CLOCK_MOCK=m +CONFIG_PTP_1588_CLOCK_VMW=m +CONFIG_PTP_1588_CLOCK_OCP=m +CONFIG_PTP_DFL_TOD=m +CONFIG_PTP_NETC_V4_TIMER=m +# end of PTP clock support + +# +# DPLL device support +# +CONFIG_DPLL=y +# CONFIG_DPLL_REFCNT_TRACKER is not set +CONFIG_ZL3073X=m +CONFIG_ZL3073X_I2C=m +CONFIG_ZL3073X_SPI=m +# end of DPLL device support + +CONFIG_PINCTRL=y +CONFIG_GENERIC_PINCTRL_GROUPS=y +CONFIG_PINMUX=y +CONFIG_GENERIC_PINMUX_FUNCTIONS=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +CONFIG_PINCTRL_AMD=y +CONFIG_PINCTRL_AMDISP=m +CONFIG_PINCTRL_CY8C95X0=m +CONFIG_PINCTRL_DA9062=m +CONFIG_PINCTRL_MAX7360=m +CONFIG_PINCTRL_MCP23S08_I2C=m +CONFIG_PINCTRL_MCP23S08_SPI=m +CONFIG_PINCTRL_MCP23S08=m +CONFIG_PINCTRL_SX150X=y +CONFIG_PINCTRL_UPBOARD=m +CONFIG_PINCTRL_CS42L43=m +CONFIG_PINCTRL_MADERA=m +CONFIG_PINCTRL_CS47L15=y +CONFIG_PINCTRL_CS47L35=y +CONFIG_PINCTRL_CS47L85=y +CONFIG_PINCTRL_CS47L90=y +CONFIG_PINCTRL_CS47L92=y + +# +# Intel pinctrl drivers +# +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_CHERRYVIEW=y +CONFIG_PINCTRL_LYNXPOINT=m +CONFIG_PINCTRL_INTEL=y +CONFIG_PINCTRL_INTEL_PLATFORM=m +CONFIG_PINCTRL_ALDERLAKE=m +CONFIG_PINCTRL_BROXTON=m +CONFIG_PINCTRL_CANNONLAKE=m +CONFIG_PINCTRL_CEDARFORK=m +CONFIG_PINCTRL_DENVERTON=m +CONFIG_PINCTRL_ELKHARTLAKE=m +CONFIG_PINCTRL_EMMITSBURG=m +CONFIG_PINCTRL_GEMINILAKE=m +CONFIG_PINCTRL_ICELAKE=m +CONFIG_PINCTRL_JASPERLAKE=m +CONFIG_PINCTRL_LAKEFIELD=m +CONFIG_PINCTRL_LEWISBURG=m +CONFIG_PINCTRL_METEORLAKE=m +CONFIG_PINCTRL_METEORPOINT=m +CONFIG_PINCTRL_SUNRISEPOINT=m +CONFIG_PINCTRL_TIGERLAKE=m +# end of Intel pinctrl drivers + +# +# Renesas pinctrl drivers +# +# end of Renesas pinctrl drivers + +CONFIG_GPIOLIB_LEGACY=y +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_GPIO_ACPI=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_DEBUG_GPIO is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_SYSFS_LEGACY=y +CONFIG_GPIO_CDEV=y +CONFIG_GPIO_CDEV_V1=y +CONFIG_GPIO_GENERIC=y +CONFIG_GPIO_REGMAP=m +CONFIG_GPIO_SWNODE_UNDEFINED=y +CONFIG_GPIO_MAX730X=m +CONFIG_GPIO_IDIO_16=m + +# +# Memory mapped GPIO drivers +# +CONFIG_GPIO_ALTERA=m +CONFIG_GPIO_AMDPT=m +CONFIG_GPIO_DWAPB=m +CONFIG_GPIO_EXAR=m +CONFIG_GPIO_GENERIC_PLATFORM=y +CONFIG_GPIO_GRANITERAPIDS=m +CONFIG_GPIO_ICH=m +CONFIG_GPIO_MB86S7X=m +CONFIG_GPIO_MENZ127=m +# CONFIG_GPIO_POLARFIRE_SOC is not set +CONFIG_GPIO_SIOX=m +CONFIG_GPIO_TANGIER=m +# CONFIG_GPIO_XILINX is not set +CONFIG_GPIO_AMD_FCH=m +# end of Memory mapped GPIO drivers + +# +# Port-mapped I/O GPIO drivers +# +CONFIG_GPIO_VX855=m +CONFIG_GPIO_I8255=m +CONFIG_GPIO_104_DIO_48E=m +CONFIG_GPIO_104_IDIO_16=m +CONFIG_GPIO_104_IDI_48=m +CONFIG_GPIO_F7188X=m +CONFIG_GPIO_GPIO_MM=m +CONFIG_GPIO_IT87=m +CONFIG_GPIO_SCH=m +CONFIG_GPIO_SCH311X=m +CONFIG_GPIO_WINBOND=m +CONFIG_GPIO_WS16C48=m +# end of Port-mapped I/O GPIO drivers + +# +# I2C GPIO expanders +# +CONFIG_GPIO_FXL6408=m +CONFIG_GPIO_DS4520=m +CONFIG_GPIO_MAX7300=m +CONFIG_GPIO_MAX732X=m +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCA953X_IRQ=y +CONFIG_GPIO_PCA9570=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_TPIC2810=m +# end of I2C GPIO expanders + +# +# MFD GPIO expanders +# +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ARIZONA=m +CONFIG_GPIO_BD9571MWV=m +CONFIG_GPIO_CGBC=m +CONFIG_GPIO_CROS_EC=m +CONFIG_GPIO_CRYSTAL_COVE=y +CONFIG_GPIO_DA9052=m +CONFIG_GPIO_DA9055=m +CONFIG_GPIO_DLN2=m +CONFIG_GPIO_ELKHARTLAKE=m +CONFIG_GPIO_JANZ_TTL=m +CONFIG_GPIO_KEMPLD=m +CONFIG_GPIO_LJCA=m +CONFIG_GPIO_LP3943=m +CONFIG_GPIO_LP873X=m +CONFIG_GPIO_MADERA=m +CONFIG_GPIO_MAX7360=m +CONFIG_GPIO_NCT6694=m +CONFIG_GPIO_PALMAS=y +CONFIG_GPIO_QIXIS_FPGA=m +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_TPS65086=m +CONFIG_GPIO_TPS6586X=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +CONFIG_GPIO_TPS68470=m +CONFIG_GPIO_TQMX86=m +CONFIG_GPIO_TWL4030=m +CONFIG_GPIO_TWL6040=m +CONFIG_GPIO_WHISKEY_COVE=m +CONFIG_GPIO_WM831X=m +CONFIG_GPIO_WM8350=m +CONFIG_GPIO_WM8994=m +# end of MFD GPIO expanders + +# +# PCI GPIO expanders +# +CONFIG_GPIO_AAEON=m +CONFIG_GPIO_AMD8111=m +CONFIG_GPIO_ML_IOH=m +CONFIG_GPIO_PCI_IDIO_16=m +CONFIG_GPIO_PCIE_IDIO_24=m +CONFIG_GPIO_RDC321X=m +# end of PCI GPIO expanders + +# +# SPI GPIO expanders +# +CONFIG_GPIO_74X164=m +CONFIG_GPIO_MAX3191X=m +CONFIG_GPIO_MAX7301=m +CONFIG_GPIO_MC33880=m +CONFIG_GPIO_PISOSR=m +CONFIG_GPIO_XRA1403=m +# end of SPI GPIO expanders + +# +# USB GPIO expanders +# +CONFIG_GPIO_VIPERBOARD=m +CONFIG_GPIO_MPSSE=m +CONFIG_GPIO_USBIO=m +# end of USB GPIO expanders + +# +# Virtual GPIO drivers +# +CONFIG_GPIO_AGGREGATOR=m +CONFIG_GPIO_LATCH=m +# CONFIG_GPIO_MOCKUP is not set +CONFIG_GPIO_VIRTIO=m +CONFIG_GPIO_SIM=m +# end of Virtual GPIO drivers + +# +# GPIO Debugging utilities +# +CONFIG_GPIO_SLOPPY_LOGIC_ANALYZER=m +CONFIG_GPIO_VIRTUSER=m +# end of GPIO Debugging utilities + +CONFIG_DEV_SYNC_PROBE=m +CONFIG_W1=m +CONFIG_W1_CON=y + +# +# 1-wire Bus Masters +# +CONFIG_W1_MASTER_AMD_AXI=m +CONFIG_W1_MASTER_MATROX=m +CONFIG_W1_MASTER_DS2490=m +CONFIG_W1_MASTER_DS2482=m +CONFIG_W1_MASTER_GPIO=m +CONFIG_W1_MASTER_SGI=m +CONFIG_W1_MASTER_UART=m +# end of 1-wire Bus Masters + +# +# 1-wire Slaves +# +CONFIG_W1_SLAVE_THERM=m +CONFIG_W1_SLAVE_SMEM=m +CONFIG_W1_SLAVE_DS2405=m +CONFIG_W1_SLAVE_DS2408=m +CONFIG_W1_SLAVE_DS2408_READBACK=y +CONFIG_W1_SLAVE_DS2413=m +CONFIG_W1_SLAVE_DS2406=m +CONFIG_W1_SLAVE_DS2423=m +CONFIG_W1_SLAVE_DS2805=m +CONFIG_W1_SLAVE_DS2430=m +CONFIG_W1_SLAVE_DS2431=m +CONFIG_W1_SLAVE_DS2433=m +# CONFIG_W1_SLAVE_DS2433_CRC is not set +CONFIG_W1_SLAVE_DS2438=m +CONFIG_W1_SLAVE_DS250X=m +CONFIG_W1_SLAVE_DS2780=m +CONFIG_W1_SLAVE_DS2781=m +CONFIG_W1_SLAVE_DS28E04=m +CONFIG_W1_SLAVE_DS28E17=m +# end of 1-wire Slaves + +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_ATC260X=m +CONFIG_POWER_RESET_MT6323=y +CONFIG_POWER_RESET_RESTART=y +CONFIG_POWER_RESET_TPS65086=y +CONFIG_POWER_SEQUENCING=m +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +CONFIG_POWER_SUPPLY_HWMON=y +CONFIG_ADC_BATTERY_HELPER=m +CONFIG_GENERIC_ADC_BATTERY=m +CONFIG_IP5XXX_POWER=m +CONFIG_MAX8925_POWER=m +CONFIG_WM831X_BACKUP=m +CONFIG_WM831X_POWER=m +CONFIG_WM8350_POWER=m +CONFIG_TEST_POWER=m +CONFIG_BATTERY_88PM860X=m +CONFIG_CHARGER_ADP5061=m +CONFIG_BATTERY_CHAGALL=m +CONFIG_BATTERY_CW2015=m +CONFIG_BATTERY_DS2760=m +CONFIG_BATTERY_DS2780=m +CONFIG_BATTERY_DS2781=m +CONFIG_BATTERY_DS2782=m +CONFIG_BATTERY_SAMSUNG_SDI=y +CONFIG_BATTERY_INTEL_DC_TI=m +CONFIG_BATTERY_SBS=m +CONFIG_CHARGER_SBS=m +CONFIG_MANAGER_SBS=m +CONFIG_BATTERY_BQ27XXX=m +CONFIG_BATTERY_BQ27XXX_I2C=m +CONFIG_BATTERY_BQ27XXX_HDQ=m +# CONFIG_BATTERY_BQ27XXX_DT_UPDATES_NVM is not set +CONFIG_BATTERY_DA9030=m +CONFIG_BATTERY_DA9052=m +CONFIG_CHARGER_DA9150=m +CONFIG_BATTERY_DA9150=m +CONFIG_CHARGER_AXP20X=m +CONFIG_BATTERY_AXP20X=m +CONFIG_AXP20X_POWER=m +CONFIG_AXP288_CHARGER=m +CONFIG_AXP288_FUEL_GAUGE=m +CONFIG_BATTERY_MAX17040=m +CONFIG_BATTERY_MAX17042=m +CONFIG_BATTERY_MAX1720X=m +CONFIG_BATTERY_MAX1721X=m +CONFIG_BATTERY_TWL4030_MADC=m +CONFIG_CHARGER_88PM860X=m +CONFIG_BATTERY_RX51=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_MAX8903=m +CONFIG_CHARGER_TWL4030=m +CONFIG_CHARGER_TWL6030=m +CONFIG_CHARGER_LP8727=m +CONFIG_CHARGER_LP8788=m +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_MANAGER=y +CONFIG_CHARGER_LT3651=m +CONFIG_CHARGER_LTC4162L=m +CONFIG_CHARGER_MAX14577=m +CONFIG_CHARGER_MAX77693=m +CONFIG_CHARGER_MAX77705=m +CONFIG_CHARGER_MAX77976=m +CONFIG_CHARGER_MAX8971=m +CONFIG_CHARGER_MAX8997=m +CONFIG_CHARGER_MAX8998=m +CONFIG_CHARGER_MP2629=m +CONFIG_CHARGER_MT6360=m +CONFIG_CHARGER_MT6370=m +CONFIG_CHARGER_BQ2415X=m +CONFIG_CHARGER_BQ24190=m +CONFIG_CHARGER_BQ24257=m +CONFIG_CHARGER_BQ24735=m +CONFIG_CHARGER_BQ2515X=m +CONFIG_CHARGER_BQ257XX=m +CONFIG_CHARGER_BQ25890=m +CONFIG_CHARGER_BQ25980=m +CONFIG_CHARGER_BQ256XX=m +CONFIG_CHARGER_SMB347=m +CONFIG_CHARGER_TPS65090=m +CONFIG_BATTERY_GAUGE_LTC2941=m +CONFIG_BATTERY_GOLDFISH=m +CONFIG_BATTERY_RT5033=m +CONFIG_CHARGER_RT5033=m +CONFIG_CHARGER_RT9455=m +CONFIG_CHARGER_RT9467=m +CONFIG_CHARGER_RT9471=m +CONFIG_CHARGER_RT9756=m +CONFIG_CHARGER_CROS_USBPD=m +CONFIG_CHARGER_CROS_PCHG=m +CONFIG_CHARGER_CROS_CONTROL=m +CONFIG_FUEL_GAUGE_STC3117=m +CONFIG_CHARGER_BD99954=m +CONFIG_CHARGER_WILCO=m +CONFIG_BATTERY_SURFACE=m +CONFIG_CHARGER_SURFACE=m +CONFIG_BATTERY_UG3105=m +CONFIG_FUEL_GAUGE_MM8013=m +CONFIG_HWMON=y +CONFIG_HWMON_VID=m +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +CONFIG_SENSORS_AAEON=m +CONFIG_SENSORS_ABITUGURU=m +CONFIG_SENSORS_ABITUGURU3=m +CONFIG_SENSORS_SMPRO=m +CONFIG_SENSORS_AD7314=m +CONFIG_SENSORS_AD7414=m +CONFIG_SENSORS_AD7418=m +CONFIG_SENSORS_ADM1025=m +CONFIG_SENSORS_ADM1026=m +CONFIG_SENSORS_ADM1029=m +CONFIG_SENSORS_ADM1031=m +CONFIG_SENSORS_ADM1177=m +CONFIG_SENSORS_ADM9240=m +CONFIG_SENSORS_ADT7X10=m +CONFIG_SENSORS_ADT7310=m +CONFIG_SENSORS_ADT7410=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_AHT10=m +CONFIG_SENSORS_AQUACOMPUTER_D5NEXT=m +CONFIG_SENSORS_AS370=m +CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ASUS_ROG_RYUJIN=m +CONFIG_SENSORS_AXI_FAN_CONTROL=m +CONFIG_SENSORS_K8TEMP=m +CONFIG_SENSORS_K10TEMP=m +CONFIG_SENSORS_KBATT=m +CONFIG_SENSORS_KFAN=m +CONFIG_SENSORS_FAM15H_POWER=m +CONFIG_SENSORS_APPLESMC=m +CONFIG_SENSORS_ASB100=m +CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_CGBC=m +CONFIG_SENSORS_CHIPCAP2=m +CONFIG_SENSORS_CORSAIR_CPRO=m +CONFIG_SENSORS_CORSAIR_PSU=m +CONFIG_SENSORS_CROS_EC=m +CONFIG_SENSORS_DRIVETEMP=m +CONFIG_SENSORS_DS620=m +CONFIG_SENSORS_DS1621=m +CONFIG_SENSORS_DELL_SMM=m +CONFIG_I8K=y +CONFIG_SENSORS_DA9052_ADC=m +CONFIG_SENSORS_DA9055=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_F71805F=m +CONFIG_SENSORS_F71882FG=m +CONFIG_SENSORS_F75375S=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_FSCHMD=m +CONFIG_SENSORS_FTSTEUTATES=m +CONFIG_SENSORS_GIGABYTE_WATERFORCE=m +CONFIG_SENSORS_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPD=m +CONFIG_SENSORS_G760A=m +CONFIG_SENSORS_G762=m +CONFIG_SENSORS_HIH6130=m +CONFIG_SENSORS_HS3001=m +CONFIG_SENSORS_HTU31=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=m +CONFIG_SENSORS_IIO_HWMON=m +CONFIG_SENSORS_I5500=m +CONFIG_SENSORS_CORETEMP=m +CONFIG_SENSORS_ISL28022=m +CONFIG_SENSORS_IT87=m +CONFIG_SENSORS_JC42=m +CONFIG_SENSORS_POWERZ=m +CONFIG_SENSORS_POWR1220=m +CONFIG_SENSORS_LENOVO_EC=m +CONFIG_SENSORS_LINEAGE=m +CONFIG_SENSORS_LTC2945=m +CONFIG_SENSORS_LTC2947=m +CONFIG_SENSORS_LTC2947_I2C=m +CONFIG_SENSORS_LTC2947_SPI=m +CONFIG_SENSORS_LTC2990=m +CONFIG_SENSORS_LTC2991=m +CONFIG_SENSORS_LTC2992=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4222=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4260=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_LTC4282=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX127=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX197=m +CONFIG_SENSORS_MAX31722=m +CONFIG_SENSORS_MAX31730=m +CONFIG_SENSORS_MAX31760=m +CONFIG_MAX31827=m +CONFIG_SENSORS_MAX6620=m +CONFIG_SENSORS_MAX6621=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MAX6697=m +CONFIG_SENSORS_MAX31790=m +CONFIG_SENSORS_MAX77705=m +CONFIG_SENSORS_MC34VR500=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_MLXREG_FAN=m +CONFIG_SENSORS_TC654=m +CONFIG_SENSORS_TPS23861=m +CONFIG_SENSORS_MENF21BMC_HWMON=m +CONFIG_SENSORS_MR75203=m +CONFIG_SENSORS_ADCXX=m +CONFIG_SENSORS_LM63=m +CONFIG_SENSORS_LM70=m +CONFIG_SENSORS_LM73=m +CONFIG_SENSORS_LM75=m +CONFIG_SENSORS_LM77=m +CONFIG_SENSORS_LM78=m +CONFIG_SENSORS_LM80=m +CONFIG_SENSORS_LM83=m +CONFIG_SENSORS_LM85=m +CONFIG_SENSORS_LM87=m +CONFIG_SENSORS_LM90=m +CONFIG_SENSORS_LM92=m +CONFIG_SENSORS_LM93=m +CONFIG_SENSORS_LM95234=m +CONFIG_SENSORS_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT6694=m +CONFIG_SENSORS_NCT6775_CORE=m +CONFIG_SENSORS_NCT6775=m +CONFIG_SENSORS_NCT6775_I2C=m +CONFIG_SENSORS_NCT7363=m +CONFIG_SENSORS_NCT7802=m +CONFIG_SENSORS_NCT7904=m +CONFIG_SENSORS_NPCM7XX=m +CONFIG_SENSORS_NZXT_KRAKEN2=m +CONFIG_SENSORS_NZXT_KRAKEN3=m +CONFIG_SENSORS_NZXT_SMART2=m +CONFIG_SENSORS_OCC_P8_I2C=m +CONFIG_SENSORS_OCC=m +CONFIG_SENSORS_PCF8591=m +CONFIG_SENSORS_PECI_CPUTEMP=m +CONFIG_SENSORS_PECI_DIMMTEMP=m +CONFIG_SENSORS_PECI=m +CONFIG_PMBUS=m +CONFIG_SENSORS_PMBUS=m +CONFIG_SENSORS_ACBEL_FSG032=m +CONFIG_SENSORS_ADM1266=m +CONFIG_SENSORS_ADM1275=m +CONFIG_SENSORS_ADP1050=m +CONFIG_SENSORS_ADP1050_REGULATOR=y +CONFIG_SENSORS_BEL_PFE=m +CONFIG_SENSORS_BPA_RS600=m +CONFIG_SENSORS_CRPS=m +CONFIG_SENSORS_DELTA_AHE50DC_FAN=m +CONFIG_SENSORS_FSP_3Y=m +CONFIG_SENSORS_HAC300S=m +CONFIG_SENSORS_IBM_CFFPS=m +CONFIG_SENSORS_DPS920AB=m +CONFIG_SENSORS_INA233=m +CONFIG_SENSORS_INSPUR_IPSPS=m +CONFIG_SENSORS_IR35221=m +CONFIG_SENSORS_IR36021=m +CONFIG_SENSORS_IR38064=m +CONFIG_SENSORS_IR38064_REGULATOR=y +CONFIG_SENSORS_IRPS5401=m +CONFIG_SENSORS_ISL68137=m +CONFIG_SENSORS_LM25066=m +CONFIG_SENSORS_LM25066_REGULATOR=y +CONFIG_SENSORS_LT3074=m +CONFIG_SENSORS_LT3074_REGULATOR=m +CONFIG_SENSORS_LT7182S=m +CONFIG_SENSORS_LTC2978=m +CONFIG_SENSORS_LTC2978_REGULATOR=y +CONFIG_SENSORS_LTC3815=m +CONFIG_SENSORS_LTC4286=y +CONFIG_SENSORS_MAX15301=m +CONFIG_SENSORS_MAX16064=m +CONFIG_SENSORS_MAX16601=m +CONFIG_SENSORS_MAX17616=m +CONFIG_SENSORS_MAX20730=m +CONFIG_SENSORS_MAX20751=m +CONFIG_SENSORS_MAX31785=m +CONFIG_SENSORS_MAX34440=m +CONFIG_SENSORS_MAX8688=m +CONFIG_SENSORS_MP2856=m +CONFIG_SENSORS_MP2869=m +CONFIG_SENSORS_MP2888=m +CONFIG_SENSORS_MP2891=m +CONFIG_SENSORS_MP2925=m +CONFIG_SENSORS_MP29502=m +CONFIG_SENSORS_MP2975=m +CONFIG_SENSORS_MP2993=m +CONFIG_SENSORS_MP2975_REGULATOR=y +CONFIG_SENSORS_MP5023=m +CONFIG_SENSORS_MP5920=m +CONFIG_SENSORS_MP5926=m +CONFIG_SENSORS_MP5990=m +CONFIG_SENSORS_MP9941=m +CONFIG_SENSORS_MP9945=m +CONFIG_SENSORS_MPQ7932_REGULATOR=y +CONFIG_SENSORS_MPQ7932=m +CONFIG_SENSORS_MPQ8785=m +CONFIG_SENSORS_PIM4328=m +CONFIG_SENSORS_PLI1209BC=m +CONFIG_SENSORS_PLI1209BC_REGULATOR=y +CONFIG_SENSORS_PM6764TR=m +CONFIG_SENSORS_PXE1610=m +CONFIG_SENSORS_Q54SJ108A2=m +CONFIG_SENSORS_STEF48H28=m +CONFIG_SENSORS_STPDDC60=m +CONFIG_SENSORS_TDA38640=m +CONFIG_SENSORS_TDA38640_REGULATOR=y +CONFIG_SENSORS_TPS25990=m +CONFIG_SENSORS_TPS25990_REGULATOR=y +CONFIG_SENSORS_TPS40422=m +CONFIG_SENSORS_TPS53679=m +CONFIG_SENSORS_TPS546D24=m +CONFIG_SENSORS_UCD9000=m +CONFIG_SENSORS_UCD9200=m +CONFIG_SENSORS_XDP710=m +CONFIG_SENSORS_XDPE152=m +CONFIG_SENSORS_XDPE122=m +CONFIG_SENSORS_XDPE122_REGULATOR=y +CONFIG_SENSORS_ZL6100=m +CONFIG_SENSORS_PT5161L=m +CONFIG_SENSORS_PWM_FAN=m +CONFIG_SENSORS_QNAP_MCU_HWMON=m +CONFIG_SENSORS_SBTSI=m +CONFIG_SENSORS_SHT15=m +CONFIG_SENSORS_SHT21=m +CONFIG_SENSORS_SHT3x=m +CONFIG_SENSORS_SHT4x=m +CONFIG_SENSORS_SHTC1=m +CONFIG_SENSORS_SIS5595=m +CONFIG_SENSORS_SY7636A=m +CONFIG_SENSORS_DME1737=m +CONFIG_SENSORS_EMC1403=m +CONFIG_SENSORS_EMC2103=m +CONFIG_SENSORS_EMC2305=m +CONFIG_SENSORS_EMC6W201=m +CONFIG_SENSORS_SMSC47M1=m +CONFIG_SENSORS_SMSC47M192=m +CONFIG_SENSORS_SMSC47B397=m +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SENSORS_SCH5627=m +CONFIG_SENSORS_SCH5636=m +CONFIG_SENSORS_STTS751=m +CONFIG_SENSORS_SURFACE_FAN=m +CONFIG_SENSORS_SURFACE_TEMP=m +CONFIG_SENSORS_ADC128D818=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_INA209=m +CONFIG_SENSORS_INA2XX=m +CONFIG_SENSORS_INA238=m +CONFIG_SENSORS_INA3221=m +CONFIG_SENSORS_SPD5118=m +# CONFIG_SENSORS_SPD5118_DETECT is not set +CONFIG_SENSORS_TC74=m +CONFIG_SENSORS_THMC50=m +CONFIG_SENSORS_TMP102=m +CONFIG_SENSORS_TMP103=m +CONFIG_SENSORS_TMP108=m +CONFIG_SENSORS_TMP401=m +CONFIG_SENSORS_TMP421=m +CONFIG_SENSORS_TMP464=m +CONFIG_SENSORS_TMP513=m +CONFIG_SENSORS_TSC1641=m +CONFIG_SENSORS_VIA_CPUTEMP=m +CONFIG_SENSORS_VIA686A=m +CONFIG_SENSORS_VT1211=m +CONFIG_SENSORS_VT8231=m +CONFIG_SENSORS_W83773G=m +CONFIG_SENSORS_W83781D=m +CONFIG_SENSORS_W83791D=m +CONFIG_SENSORS_W83792D=m +CONFIG_SENSORS_W83793=m +CONFIG_SENSORS_W83795=m +# CONFIG_SENSORS_W83795_FANCTRL is not set +CONFIG_SENSORS_W83L785TS=m +CONFIG_SENSORS_W83L786NG=m +CONFIG_SENSORS_W83627HF=m +CONFIG_SENSORS_W83627EHF=m +CONFIG_SENSORS_WM831X=m +CONFIG_SENSORS_WM8350=m +CONFIG_SENSORS_XGENE=m +CONFIG_SENSORS_INTEL_M10_BMC_HWMON=m + +# +# ACPI drivers +# +CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_ATK0110=m +CONFIG_SENSORS_ASUS_WMI=m +CONFIG_SENSORS_ASUS_EC=m +CONFIG_SENSORS_HP_WMI=m +CONFIG_THERMAL=y +CONFIG_THERMAL_NETLINK=y +CONFIG_THERMAL_STATISTICS=y +# CONFIG_THERMAL_DEBUGFS is not set +CONFIG_THERMAL_CORE_TESTING=m +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=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_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set +CONFIG_THERMAL_GOV_FAIR_SHARE=y +CONFIG_THERMAL_GOV_STEP_WISE=y +CONFIG_THERMAL_GOV_BANG_BANG=y +CONFIG_THERMAL_GOV_USER_SPACE=y +CONFIG_THERMAL_GOV_POWER_ALLOCATOR=y +CONFIG_DEVFREQ_THERMAL=y +CONFIG_PCIE_THERMAL=y +CONFIG_THERMAL_EMULATION=y + +# +# Intel thermal drivers +# +CONFIG_INTEL_POWERCLAMP=m +CONFIG_X86_THERMAL_VECTOR=y +CONFIG_INTEL_TCC=y +CONFIG_X86_PKG_TEMP_THERMAL=m +CONFIG_INTEL_SOC_DTS_IOSF_CORE=m +CONFIG_INTEL_SOC_DTS_THERMAL=m + +# +# ACPI INT340X thermal drivers +# +CONFIG_INT340X_THERMAL=m +CONFIG_ACPI_THERMAL_REL=m +CONFIG_INT3406_THERMAL=m +CONFIG_PROC_THERMAL_MMIO_RAPL=m +# end of ACPI INT340X thermal drivers + +CONFIG_INTEL_BXT_PMIC_THERMAL=m +CONFIG_INTEL_PCH_THERMAL=m +CONFIG_INTEL_TCC_COOLING=m +CONFIG_INTEL_HFI_THERMAL=y +# end of Intel thermal drivers + +CONFIG_GENERIC_ADC_THERMAL=m +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y +CONFIG_WATCHDOG_OPEN_TIMEOUT=0 +CONFIG_WATCHDOG_SYSFS=y +# CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT is not set + +# +# Watchdog Pretimeout Governors +# +CONFIG_WATCHDOG_PRETIMEOUT_GOV=y +CONFIG_WATCHDOG_PRETIMEOUT_GOV_SEL=m +CONFIG_WATCHDOG_PRETIMEOUT_GOV_NOOP=y +CONFIG_WATCHDOG_PRETIMEOUT_GOV_PANIC=m +CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP=y +# CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC is not set + +# +# Watchdog Device Drivers +# +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOFT_WATCHDOG_PRETIMEOUT=y +CONFIG_CROS_EC_WATCHDOG=m +CONFIG_DA9052_WATCHDOG=m +CONFIG_DA9055_WATCHDOG=m +CONFIG_DA9063_WATCHDOG=m +CONFIG_DA9062_WATCHDOG=m +CONFIG_LENOVO_SE10_WDT=m +CONFIG_LENOVO_SE30_WDT=m +CONFIG_MENF21BMC_WATCHDOG=m +CONFIG_MENZ069_WATCHDOG=m +CONFIG_WDAT_WDT=m +CONFIG_WM831X_WATCHDOG=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_XILINX_WATCHDOG=m +CONFIG_ZIIRAVE_WATCHDOG=m +CONFIG_RAVE_SP_WATCHDOG=m +CONFIG_MLX_WDT=m +CONFIG_CADENCE_WATCHDOG=m +CONFIG_DW_WATCHDOG=m +CONFIG_TWL4030_WATCHDOG=m +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_NCT6694_WATCHDOG=m +CONFIG_RETU_WATCHDOG=m +CONFIG_ACQUIRE_WDT=m +CONFIG_ADVANTECH_WDT=m +CONFIG_ADVANTECH_EC_WDT=m +CONFIG_ALIM1535_WDT=m +CONFIG_ALIM7101_WDT=m +CONFIG_CGBC_WDT=m +CONFIG_EBC_C384_WDT=m +CONFIG_EXAR_WDT=m +CONFIG_F71808E_WDT=m +CONFIG_SP5100_TCO=m +CONFIG_SBC_FITPC2_WATCHDOG=m +CONFIG_EUROTECH_WDT=m +CONFIG_IB700_WDT=m +CONFIG_IBMASR=m +CONFIG_WAFER_WDT=m +CONFIG_I6300ESB_WDT=m +CONFIG_IE6XX_WDT=m +CONFIG_INTEL_OC_WATCHDOG=m +CONFIG_ITCO_WDT=m +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_HP_WATCHDOG=m +CONFIG_HPWDT_NMI_DECODING=y +CONFIG_KEMPLD_WDT=m +CONFIG_SC1200_WDT=m +CONFIG_PC87413_WDT=m +CONFIG_NV_TCO=m +CONFIG_60XX_WDT=m +CONFIG_SMSC_SCH311X_WDT=m +CONFIG_SMSC37B787_WDT=m +CONFIG_TQMX86_WDT=m +CONFIG_VIA_WDT=m +CONFIG_W83627HF_WDT=m +CONFIG_W83877F_WDT=m +CONFIG_W83977F_WDT=m +CONFIG_MACHZ_WDT=m +CONFIG_SBC_EPX_C3_WATCHDOG=m +CONFIG_INTEL_MEI_WDT=m +CONFIG_NI903X_WDT=m +CONFIG_NIC7018_WDT=m +CONFIG_SIEMENS_SIMATIC_IPC_WDT=m +CONFIG_MEN_A21_WDT=m +CONFIG_XEN_WDT=m + +# +# PCI-based Watchdog Cards +# +CONFIG_PCIPCWATCHDOG=m +CONFIG_WDTPCI=m + +# +# USB-based Watchdog Cards +# +CONFIG_USBPCWATCHDOG=m +CONFIG_SSB_POSSIBLE=y +CONFIG_SSB=m +CONFIG_SSB_SPROM=y +CONFIG_SSB_BLOCKIO=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_PCMCIAHOST_POSSIBLE=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_SSB_SDIOHOST_POSSIBLE=y +CONFIG_SSB_SDIOHOST=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_GPIO=y +CONFIG_BCMA_POSSIBLE=y +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=y +CONFIG_BCMA_HOST_PCI=y +CONFIG_BCMA_HOST_SOC=y +CONFIG_BCMA_DRIVER_PCI=y +CONFIG_BCMA_SFLASH=y +CONFIG_BCMA_DRIVER_GMAC_CMN=y +CONFIG_BCMA_DRIVER_GPIO=y +# CONFIG_BCMA_DEBUG is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +CONFIG_MFD_AS3711=y +CONFIG_MFD_SMPRO=m +CONFIG_PMIC_ADP5520=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_BCM590XX=m +CONFIG_MFD_BD9571MWV=m +CONFIG_MFD_AXP20X=m +CONFIG_MFD_AXP20X_I2C=m +CONFIG_MFD_CGBC=m +CONFIG_MFD_CROS_EC_DEV=m +CONFIG_MFD_CS40L50_CORE=m +CONFIG_MFD_CS40L50_I2C=m +CONFIG_MFD_CS40L50_SPI=m +CONFIG_MFD_CS42L43=m +CONFIG_MFD_CS42L43_I2C=m +CONFIG_MFD_CS42L43_SDW=m +CONFIG_MFD_MADERA=m +CONFIG_MFD_MADERA_I2C=m +CONFIG_MFD_MADERA_SPI=m +CONFIG_MFD_CS47L15=y +CONFIG_MFD_CS47L35=y +CONFIG_MFD_CS47L85=y +CONFIG_MFD_CS47L90=y +CONFIG_MFD_CS47L92=y +CONFIG_PMIC_DA903X=y +CONFIG_PMIC_DA9052=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9055=y +CONFIG_MFD_DA9062=m +CONFIG_MFD_DA9063=y +CONFIG_MFD_DA9150=m +CONFIG_MFD_DLN2=m +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_SPI=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MP2629=m +CONFIG_MFD_INTEL_QUARK_I2C_GPIO=m +CONFIG_LPC_ICH=m +CONFIG_LPC_SCH=m +CONFIG_INTEL_SOC_PMIC=y +CONFIG_INTEL_SOC_PMIC_BXTWC=m +CONFIG_INTEL_SOC_PMIC_CHTWC=y +CONFIG_INTEL_SOC_PMIC_CHTDC_TI=m +CONFIG_INTEL_SOC_PMIC_MRFLD=m +CONFIG_MFD_INTEL_LPSS=m +CONFIG_MFD_INTEL_LPSS_ACPI=m +CONFIG_MFD_INTEL_LPSS_PCI=m +CONFIG_MFD_INTEL_PMC_BXT=m +CONFIG_MFD_IQS62X=m +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_KEMPLD=m +CONFIG_MFD_88PM800=m +CONFIG_MFD_88PM805=m +CONFIG_MFD_88PM860X=y +CONFIG_MFD_MAX5970=m +CONFIG_MFD_MAX14577=y +CONFIG_MFD_MAX77541=m +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MAX77705=m +CONFIG_MFD_MAX77843=y +CONFIG_MFD_MAX8907=m +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_MT6360=m +CONFIG_MFD_MT6370=m +CONFIG_MFD_MT6397=m +CONFIG_MFD_MENF21BMC=m +CONFIG_MFD_NCT6694=m +CONFIG_MFD_OCELOT=m +CONFIG_EZX_PCAP=y +CONFIG_MFD_VIPERBOARD=m +CONFIG_MFD_RETU=m +CONFIG_MFD_SY7636A=m +CONFIG_MFD_RDC321X=m +CONFIG_MFD_RT4831=m +CONFIG_MFD_RT5033=m +CONFIG_MFD_RT5120=m +CONFIG_MFD_RC5T583=y +CONFIG_MFD_SI476X_CORE=m +CONFIG_MFD_SIMPLE_MFD_I2C=m +CONFIG_MFD_SM501=m +CONFIG_MFD_SM501_GPIO=y +CONFIG_MFD_SKY81452=m +CONFIG_MFD_SYSCON=y +CONFIG_MFD_LP3943=m +CONFIG_MFD_LP8788=y +CONFIG_MFD_TI_LMU=m +CONFIG_MFD_BQ257XX=m +CONFIG_MFD_PALMAS=y +CONFIG_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +CONFIG_MFD_TPS65086=m +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TI_LP873X=m +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_TPS6594=m +CONFIG_MFD_TPS6594_I2C=m +CONFIG_MFD_TPS6594_SPI=m +CONFIG_TWL4030_CORE=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_TWL6040_CORE=y +CONFIG_MFD_LM3533=m +CONFIG_MFD_TQMX86=m +CONFIG_MFD_VX855=m +CONFIG_MFD_ARIZONA=m +CONFIG_MFD_ARIZONA_I2C=m +CONFIG_MFD_ARIZONA_SPI=m +CONFIG_MFD_CS47L24=y +CONFIG_MFD_WM5102=y +CONFIG_MFD_WM5110=y +CONFIG_MFD_WM8997=y +CONFIG_MFD_WM8998=y +CONFIG_MFD_WM8400=y +CONFIG_MFD_WM831X=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=m +CONFIG_MFD_WCD934X=m +CONFIG_MFD_ATC260X=m +CONFIG_MFD_ATC260X_I2C=m +CONFIG_MFD_AAEON=m +CONFIG_RAVE_SP_CORE=m +CONFIG_MFD_INTEL_M10_BMC_CORE=m +CONFIG_MFD_INTEL_M10_BMC_SPI=m +CONFIG_MFD_INTEL_M10_BMC_PMCI=m +CONFIG_MFD_QNAP_MCU=m +CONFIG_MFD_UPBOARD_FPGA=m +CONFIG_MFD_MAX7360=m +# end of Multifunction device drivers + +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_NETLINK_EVENTS=y +CONFIG_REGULATOR_88PG86X=m +CONFIG_REGULATOR_88PM800=m +CONFIG_REGULATOR_88PM8607=m +CONFIG_REGULATOR_ACT8865=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_ADP5055=m +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_ARIZONA_LDO1=m +CONFIG_REGULATOR_ARIZONA_MICSUPP=m +CONFIG_REGULATOR_AS3711=m +CONFIG_REGULATOR_ATC260X=m +CONFIG_REGULATOR_AW37503=m +CONFIG_REGULATOR_AXP20X=m +CONFIG_REGULATOR_BCM590XX=m +CONFIG_REGULATOR_BD9571MWV=m +CONFIG_REGULATOR_BQ257XX=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +CONFIG_REGULATOR_DA9055=m +CONFIG_REGULATOR_DA9062=m +CONFIG_REGULATOR_DA9210=m +CONFIG_REGULATOR_DA9211=m +CONFIG_REGULATOR_FAN53555=m +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_ISL9305=m +CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_FP9931=m +CONFIG_REGULATOR_LM363X=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_LP872X=m +CONFIG_REGULATOR_LP8755=m +CONFIG_REGULATOR_LP8788=m +CONFIG_REGULATOR_LTC3589=m +CONFIG_REGULATOR_LTC3676=m +CONFIG_REGULATOR_MAX14577=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX77503=m +CONFIG_REGULATOR_MAX77541=m +CONFIG_REGULATOR_MAX77857=m +CONFIG_REGULATOR_MAX8649=m +CONFIG_REGULATOR_MAX8660=m +CONFIG_REGULATOR_MAX8893=m +CONFIG_REGULATOR_MAX8907=m +CONFIG_REGULATOR_MAX8925=m +CONFIG_REGULATOR_MAX8952=m +CONFIG_REGULATOR_MAX8997=m +CONFIG_REGULATOR_MAX8998=m +CONFIG_REGULATOR_MAX20086=m +CONFIG_REGULATOR_MAX20411=m +CONFIG_REGULATOR_MAX77693=m +CONFIG_REGULATOR_MAX77826=m +CONFIG_REGULATOR_MAX77838=m +CONFIG_REGULATOR_MC13XXX_CORE=m +CONFIG_REGULATOR_MC13783=m +CONFIG_REGULATOR_MC13892=m +CONFIG_REGULATOR_MP8859=m +CONFIG_REGULATOR_MT6311=m +CONFIG_REGULATOR_MT6315=m +CONFIG_REGULATOR_MT6316=m +CONFIG_REGULATOR_MT6323=m +CONFIG_REGULATOR_MT6331=m +CONFIG_REGULATOR_MT6332=m +CONFIG_REGULATOR_MT6357=m +CONFIG_REGULATOR_MT6358=m +CONFIG_REGULATOR_MT6359=m +CONFIG_REGULATOR_MT6360=m +CONFIG_REGULATOR_MT6363=m +CONFIG_REGULATOR_MT6370=m +CONFIG_REGULATOR_MT6397=m +CONFIG_REGULATOR_PALMAS=m +CONFIG_REGULATOR_PCA9450=m +CONFIG_REGULATOR_PF9453=m +CONFIG_REGULATOR_PCAP=m +CONFIG_REGULATOR_PF0900=m +CONFIG_REGULATOR_PV88060=m +CONFIG_REGULATOR_PV88080=m +CONFIG_REGULATOR_PV88090=m +CONFIG_REGULATOR_PWM=m +CONFIG_REGULATOR_QCOM_SPMI=m +CONFIG_REGULATOR_QCOM_USB_VBUS=m +CONFIG_REGULATOR_RAA215300=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_RT4801=m +CONFIG_REGULATOR_RT4803=m +CONFIG_REGULATOR_RT4831=m +CONFIG_REGULATOR_RT5033=m +CONFIG_REGULATOR_RT5120=m +CONFIG_REGULATOR_RT5190A=m +CONFIG_REGULATOR_RT5739=m +CONFIG_REGULATOR_RT5759=m +CONFIG_REGULATOR_RT6160=m +CONFIG_REGULATOR_RT6190=m +CONFIG_REGULATOR_RT6245=m +CONFIG_REGULATOR_RT8092=m +CONFIG_REGULATOR_RTQ2134=m +CONFIG_REGULATOR_RTMV20=m +CONFIG_REGULATOR_RTQ6752=m +CONFIG_REGULATOR_RTQ2208=m +CONFIG_REGULATOR_SKY81452=m +CONFIG_REGULATOR_SLG51000=m +CONFIG_REGULATOR_SY7636A=m +CONFIG_REGULATOR_TPS51632=m +CONFIG_REGULATOR_TPS6105X=m +CONFIG_REGULATOR_TPS62360=m +CONFIG_REGULATOR_TPS65023=m +CONFIG_REGULATOR_TPS6507X=m +CONFIG_REGULATOR_TPS65086=m +CONFIG_REGULATOR_TPS65090=m +CONFIG_REGULATOR_TPS65132=m +CONFIG_REGULATOR_TPS65185=m +CONFIG_REGULATOR_TPS6524X=m +CONFIG_REGULATOR_TPS6586X=m +CONFIG_REGULATOR_TPS65910=m +CONFIG_REGULATOR_TPS65912=m +CONFIG_REGULATOR_TPS68470=m +CONFIG_REGULATOR_TWL4030=m +CONFIG_REGULATOR_WM831X=m +CONFIG_REGULATOR_WM8350=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_WM8994=m +CONFIG_REGULATOR_QCOM_LABIBB=m +CONFIG_RC_CORE=m +CONFIG_LIRC=y +CONFIG_RC_MAP=m +CONFIG_RC_DECODERS=y +CONFIG_IR_IMON_DECODER=m +CONFIG_IR_JVC_DECODER=m +CONFIG_IR_MCE_KBD_DECODER=m +CONFIG_IR_NEC_DECODER=m +CONFIG_IR_RC5_DECODER=m +CONFIG_IR_RC6_DECODER=m +CONFIG_IR_RCMM_DECODER=m +CONFIG_IR_SANYO_DECODER=m +CONFIG_IR_SHARP_DECODER=m +CONFIG_IR_SONY_DECODER=m +CONFIG_IR_XMP_DECODER=m +CONFIG_RC_DEVICES=y +CONFIG_IR_ENE=m +CONFIG_IR_FINTEK=m +CONFIG_IR_IGORPLUGUSB=m +CONFIG_IR_IGUANA=m +CONFIG_IR_IMON=m +CONFIG_IR_IMON_RAW=m +CONFIG_IR_ITE_CIR=m +CONFIG_IR_MCEUSB=m +CONFIG_IR_NUVOTON=m +CONFIG_IR_REDRAT3=m +CONFIG_IR_SERIAL=m +CONFIG_IR_SERIAL_TRANSMITTER=y +CONFIG_IR_STREAMZAP=m +CONFIG_IR_TOY=m +CONFIG_IR_TTUSBIR=m +CONFIG_IR_WINBOND_CIR=m +CONFIG_RC_ATI_REMOTE=m +CONFIG_RC_LOOPBACK=m +CONFIG_RC_XBOX_DVD=m +CONFIG_CEC_CORE=m +CONFIG_CEC_NOTIFIER=y +CONFIG_CEC_PIN=y + +# +# CEC support +# +CONFIG_MEDIA_CEC_RC=y +# CONFIG_CEC_PIN_ERROR_INJ is not set +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_CEC_CH7322=m +CONFIG_CEC_NXP_TDA9950=m +CONFIG_CEC_CROS_EC=m +CONFIG_CEC_GPIO=m +CONFIG_CEC_SECO=m +CONFIG_CEC_SECO_RC=y +CONFIG_USB_EXTRON_DA_HD_4K_PLUS_CEC=m +CONFIG_USB_PULSE8_CEC=m +CONFIG_USB_RAINSHADOW_CEC=m +# end of CEC support + +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_SUPPORT_FILTER=y +CONFIG_MEDIA_SUBDRV_AUTOSELECT=y + +# +# Media device types +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +CONFIG_MEDIA_ANALOG_TV_SUPPORT=y +CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y +CONFIG_MEDIA_RADIO_SUPPORT=y +CONFIG_MEDIA_SDR_SUPPORT=y +CONFIG_MEDIA_PLATFORM_SUPPORT=y +CONFIG_MEDIA_TEST_SUPPORT=y +# end of Media device types + +CONFIG_VIDEO_DEV=m +CONFIG_MEDIA_CONTROLLER=y +CONFIG_DVB_CORE=m + +# +# Video4Linux options +# +CONFIG_VIDEO_V4L2_I2C=y +CONFIG_VIDEO_V4L2_SUBDEV_API=y +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +CONFIG_VIDEO_TUNER=m +CONFIG_V4L2_MEM2MEM_DEV=m +CONFIG_V4L2_FLASH_LED_CLASS=m +CONFIG_V4L2_FWNODE=m +CONFIG_V4L2_ASYNC=m +CONFIG_V4L2_CCI=m +CONFIG_V4L2_CCI_I2C=m +# end of Video4Linux options + +# +# Media controller options +# +CONFIG_MEDIA_CONTROLLER_DVB=y +# end of Media controller options + +# +# Digital TV options +# +# CONFIG_DVB_MMAP is not set +CONFIG_DVB_NET=y +CONFIG_DVB_MAX_ADAPTERS=8 +CONFIG_DVB_DYNAMIC_MINORS=y +# CONFIG_DVB_DEMUX_SECTION_LOSS_LOG is not set +# CONFIG_DVB_ULE_DEBUG is not set +# end of Digital TV options + +# +# Media drivers +# + +# +# Drivers filtered as selected at 'Filter media drivers' +# + +# +# Media drivers +# +CONFIG_MEDIA_USB_SUPPORT=y + +# +# Webcam devices +# +CONFIG_USB_GSPCA=m +CONFIG_USB_GSPCA_BENQ=m +CONFIG_USB_GSPCA_CONEX=m +CONFIG_USB_GSPCA_CPIA1=m +CONFIG_USB_GSPCA_DTCS033=m +CONFIG_USB_GSPCA_ETOMS=m +CONFIG_USB_GSPCA_FINEPIX=m +CONFIG_USB_GSPCA_JEILINJ=m +CONFIG_USB_GSPCA_JL2005BCD=m +CONFIG_USB_GSPCA_KINECT=m +CONFIG_USB_GSPCA_KONICA=m +CONFIG_USB_GSPCA_MARS=m +CONFIG_USB_GSPCA_MR97310A=m +CONFIG_USB_GSPCA_NW80X=m +CONFIG_USB_GSPCA_OV519=m +CONFIG_USB_GSPCA_OV534=m +CONFIG_USB_GSPCA_OV534_9=m +CONFIG_USB_GSPCA_PAC207=m +CONFIG_USB_GSPCA_PAC7302=m +CONFIG_USB_GSPCA_PAC7311=m +CONFIG_USB_GSPCA_SE401=m +CONFIG_USB_GSPCA_SN9C2028=m +CONFIG_USB_GSPCA_SN9C20X=m +CONFIG_USB_GSPCA_SONIXB=m +CONFIG_USB_GSPCA_SONIXJ=m +CONFIG_USB_GSPCA_SPCA1528=m +CONFIG_USB_GSPCA_SPCA500=m +CONFIG_USB_GSPCA_SPCA501=m +CONFIG_USB_GSPCA_SPCA505=m +CONFIG_USB_GSPCA_SPCA506=m +CONFIG_USB_GSPCA_SPCA508=m +CONFIG_USB_GSPCA_SPCA561=m +CONFIG_USB_GSPCA_SQ905=m +CONFIG_USB_GSPCA_SQ905C=m +CONFIG_USB_GSPCA_SQ930X=m +CONFIG_USB_GSPCA_STK014=m +CONFIG_USB_GSPCA_STK1135=m +CONFIG_USB_GSPCA_STV0680=m +CONFIG_USB_GSPCA_SUNPLUS=m +CONFIG_USB_GSPCA_T613=m +CONFIG_USB_GSPCA_TOPRO=m +CONFIG_USB_GSPCA_TOUPTEK=m +CONFIG_USB_GSPCA_TV8532=m +CONFIG_USB_GSPCA_VC032X=m +CONFIG_USB_GSPCA_VICAM=m +CONFIG_USB_GSPCA_XIRLINK_CIT=m +CONFIG_USB_GSPCA_ZC3XX=m +CONFIG_USB_GL860=m +CONFIG_USB_M5602=m +CONFIG_USB_STV06XX=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_S2255=m +CONFIG_VIDEO_USBTV=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y + +# +# Analog TV USB devices +# +CONFIG_VIDEO_GO7007=m +CONFIG_VIDEO_GO7007_USB=m +CONFIG_VIDEO_GO7007_LOADER=m +CONFIG_VIDEO_GO7007_USB_S2250_BOARD=m +CONFIG_VIDEO_HDPVR=m +CONFIG_VIDEO_PVRUSB2=m +CONFIG_VIDEO_PVRUSB2_SYSFS=y +CONFIG_VIDEO_PVRUSB2_DVB=y +# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set +CONFIG_VIDEO_STK1160=m + +# +# Analog/digital TV USB devices +# +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_AU0828_V4L2=y +CONFIG_VIDEO_AU0828_RC=y +CONFIG_VIDEO_CX231XX=m +CONFIG_VIDEO_CX231XX_RC=y +CONFIG_VIDEO_CX231XX_ALSA=m +CONFIG_VIDEO_CX231XX_DVB=m + +# +# Digital TV USB devices +# +CONFIG_DVB_AS102=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set +CONFIG_DVB_USB_V2=m +CONFIG_DVB_USB_AF9015=m +CONFIG_DVB_USB_AF9035=m +CONFIG_DVB_USB_ANYSEE=m +CONFIG_DVB_USB_AU6610=m +CONFIG_DVB_USB_AZ6007=m +CONFIG_DVB_USB_CE6230=m +CONFIG_DVB_USB_DVBSKY=m +CONFIG_DVB_USB_EC168=m +CONFIG_DVB_USB_GL861=m +CONFIG_DVB_USB_LME2510=m +CONFIG_DVB_USB_MXL111SF=m +CONFIG_DVB_USB_RTL28XXU=m +CONFIG_DVB_USB_ZD1301=m +CONFIG_DVB_USB=m +# CONFIG_DVB_USB_DEBUG is not set +CONFIG_DVB_USB_A800=m +CONFIG_DVB_USB_AF9005=m +CONFIG_DVB_USB_AF9005_REMOTE=m +CONFIG_DVB_USB_AZ6027=m +CONFIG_DVB_USB_CINERGY_T2=m +CONFIG_DVB_USB_CXUSB=m +CONFIG_DVB_USB_CXUSB_ANALOG=y +CONFIG_DVB_USB_DIB0700=m +CONFIG_DVB_USB_DIB3000MC=m +CONFIG_DVB_USB_DIBUSB_MB=m +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_DVB_USB_DIBUSB_MC=m +CONFIG_DVB_USB_DIGITV=m +CONFIG_DVB_USB_DTT200U=m +CONFIG_DVB_USB_DTV5100=m +CONFIG_DVB_USB_DW2102=m +CONFIG_DVB_USB_GP8PSK=m +CONFIG_DVB_USB_M920X=m +CONFIG_DVB_USB_NOVA_T_USB2=m +CONFIG_DVB_USB_OPERA1=m +CONFIG_DVB_USB_PCTV452E=m +CONFIG_DVB_USB_TECHNISAT_USB2=m +CONFIG_DVB_USB_TTUSB2=m +CONFIG_DVB_USB_UMT_010=m +CONFIG_DVB_USB_VP702X=m +CONFIG_DVB_USB_VP7045=m +CONFIG_SMS_USB_DRV=m +CONFIG_DVB_TTUSB_BUDGET=m +CONFIG_DVB_TTUSB_DEC=m + +# +# Webcam, TV (analog/digital) USB devices +# +CONFIG_VIDEO_EM28XX=m +CONFIG_VIDEO_EM28XX_V4L2=m +CONFIG_VIDEO_EM28XX_ALSA=m +CONFIG_VIDEO_EM28XX_DVB=m +CONFIG_VIDEO_EM28XX_RC=m + +# +# Software defined radio USB devices +# +CONFIG_USB_AIRSPY=m +CONFIG_USB_HACKRF=m +CONFIG_USB_MSI2500=m +CONFIG_MEDIA_PCI_SUPPORT=y + +# +# Media capture support +# +CONFIG_VIDEO_MGB4=m +CONFIG_VIDEO_SOLO6X10=m +CONFIG_VIDEO_TW5864=m +CONFIG_VIDEO_TW68=m +CONFIG_VIDEO_TW686X=m +# CONFIG_VIDEO_ZORAN is not set + +# +# Media capture/analog TV support +# +CONFIG_VIDEO_DT3155=m +CONFIG_VIDEO_IVTV=m +CONFIG_VIDEO_IVTV_ALSA=m +CONFIG_VIDEO_FB_IVTV=m +CONFIG_VIDEO_FB_IVTV_FORCE_PAT=y +CONFIG_VIDEO_HEXIUM_GEMINI=m +CONFIG_VIDEO_HEXIUM_ORION=m +CONFIG_VIDEO_MXB=m + +# +# Media capture/analog/hybrid TV support +# +CONFIG_VIDEO_BT848=m +CONFIG_DVB_BT8XX=m +CONFIG_VIDEO_COBALT=m +CONFIG_VIDEO_CX18=m +CONFIG_VIDEO_CX18_ALSA=m +CONFIG_VIDEO_CX23885=m +CONFIG_MEDIA_ALTERA_CI=m +CONFIG_VIDEO_CX25821=m +CONFIG_VIDEO_CX25821_ALSA=m +CONFIG_VIDEO_CX88=m +CONFIG_VIDEO_CX88_ALSA=m +CONFIG_VIDEO_CX88_BLACKBIRD=m +CONFIG_VIDEO_CX88_DVB=m +CONFIG_VIDEO_CX88_ENABLE_VP3054=y +CONFIG_VIDEO_CX88_VP3054=m +CONFIG_VIDEO_CX88_MPEG=m +CONFIG_VIDEO_SAA7134=m +CONFIG_VIDEO_SAA7134_ALSA=m +CONFIG_VIDEO_SAA7134_RC=y +CONFIG_VIDEO_SAA7134_DVB=m +CONFIG_VIDEO_SAA7134_GO7007=m +CONFIG_VIDEO_SAA7164=m + +# +# Media digital TV PCI Adapters +# +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +# CONFIG_DVB_B2C2_FLEXCOP_PCI_DEBUG is not set +CONFIG_DVB_DDBRIDGE=m +# CONFIG_DVB_DDBRIDGE_MSIENABLE is not set +CONFIG_DVB_DM1105=m +CONFIG_MANTIS_CORE=m +CONFIG_DVB_MANTIS=m +CONFIG_DVB_HOPPER=m +CONFIG_DVB_NETUP_UNIDVB=m +CONFIG_DVB_NGENE=m +CONFIG_DVB_PLUTO2=m +CONFIG_DVB_PT1=m +CONFIG_DVB_PT3=m +CONFIG_DVB_SMIPCIE=m +CONFIG_DVB_BUDGET_CORE=m +CONFIG_DVB_BUDGET=m +CONFIG_DVB_BUDGET_CI=m +CONFIG_DVB_BUDGET_AV=m +# CONFIG_VIDEO_PCI_SKELETON is not set +CONFIG_VIDEO_IPU3_CIO2=m +CONFIG_VIDEO_INTEL_IPU6=m +CONFIG_INTEL_VSC=m +CONFIG_IPU_BRIDGE=m +CONFIG_RADIO_ADAPTERS=m +CONFIG_RADIO_MAXIRADIO=m +CONFIG_RADIO_SAA7706H=m +CONFIG_RADIO_SHARK=m +CONFIG_RADIO_SHARK2=m +CONFIG_RADIO_SI4713=m +CONFIG_RADIO_SI476X=m +CONFIG_RADIO_TEA575X=m +CONFIG_RADIO_TEA5764=m +CONFIG_RADIO_TEF6862=m +CONFIG_USB_DSBR=m +CONFIG_USB_KEENE=m +CONFIG_USB_MA901=m +CONFIG_USB_MR800=m +CONFIG_USB_RAREMONO=m +CONFIG_RADIO_SI470X=m +CONFIG_USB_SI470X=m +CONFIG_I2C_SI470X=m +CONFIG_USB_SI4713=m +CONFIG_PLATFORM_SI4713=m +CONFIG_I2C_SI4713=m +CONFIG_MEDIA_PLATFORM_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_SDR_PLATFORM_DRIVERS=y +CONFIG_DVB_PLATFORM_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m + +# +# Allegro DVT media platform drivers +# +CONFIG_VIDEO_AMD_ISP4_CAPTURE=m + +# +# Amlogic media platform drivers +# + +# +# Amphion drivers +# + +# +# ARM media platform drivers +# + +# +# Aspeed media platform drivers +# + +# +# Atmel media platform drivers +# + +# +# Cadence media platform drivers +# +CONFIG_VIDEO_CADENCE_CSI2RX=m +CONFIG_VIDEO_CADENCE_CSI2TX=m + +# +# Chips&Media media platform drivers +# + +# +# Intel media platform drivers +# + +# +# Marvell media platform drivers +# +CONFIG_VIDEO_CAFE_CCIC=m + +# +# Mediatek media platform drivers +# + +# +# Microchip Technology, Inc. media platform drivers +# + +# +# Nuvoton media platform drivers +# + +# +# NVidia media platform drivers +# + +# +# NXP media platform drivers +# + +# +# Qualcomm media platform drivers +# + +# +# Raspberry Pi media platform drivers +# +# CONFIG_VIDEO_RP1_CFE is not set + +# +# Renesas media platform drivers +# + +# +# Rockchip media platform drivers +# + +# +# Samsung media platform drivers +# + +# +# STMicroelectronics media platform drivers +# + +# +# Sunxi media platform drivers +# + +# +# Texas Instruments drivers +# + +# +# Verisilicon media platform drivers +# + +# +# VIA media platform drivers +# +CONFIG_VIDEO_VIA_CAMERA=m + +# +# Xilinx media platform drivers +# + +# +# MMC/SDIO DVB adapters +# +CONFIG_SMS_SDIO_DRV=m +CONFIG_V4L_TEST_DRIVERS=y +CONFIG_VIDEO_VIM2M=m +CONFIG_VIDEO_VICODEC=m +CONFIG_VIDEO_VIMC=m +CONFIG_VIDEO_VIVID=m +CONFIG_VIDEO_VIVID_CEC=y +CONFIG_VIDEO_VIVID_OSD=y +CONFIG_VIDEO_VIVID_MAX_DEVS=64 +CONFIG_VIDEO_VISL=m +# CONFIG_VISL_DEBUGFS is not set +# CONFIG_DVB_TEST_DRIVERS is not set + +# +# FireWire (IEEE 1394) Adapters +# +CONFIG_DVB_FIREDTV=m +CONFIG_DVB_FIREDTV_INPUT=y +CONFIG_MEDIA_COMMON_OPTIONS=y + +# +# common driver options +# +CONFIG_CYPRESS_FIRMWARE=m +CONFIG_TTPCI_EEPROM=m +CONFIG_UVC_COMMON=m +CONFIG_VIDEO_CX2341X=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_DVB_B2C2_FLEXCOP=m +CONFIG_VIDEO_SAA7146=m +CONFIG_VIDEO_SAA7146_VV=m +CONFIG_SMS_SIANO_MDTV=m +CONFIG_SMS_SIANO_RC=y +CONFIG_SMS_SIANO_DEBUGFS=y +CONFIG_VIDEO_V4L2_TPG=m +CONFIG_VIDEOBUF2_CORE=m +CONFIG_VIDEOBUF2_V4L2=m +CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_DMA_CONTIG=m +CONFIG_VIDEOBUF2_VMALLOC=m +CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_DVB=m +# end of Media drivers + +# +# Media ancillary drivers +# +CONFIG_MEDIA_ATTACH=y + +# +# IR I2C driver auto-selected by 'Autoselect ancillary drivers' +# +CONFIG_VIDEO_IR_I2C=m +CONFIG_VIDEO_CAMERA_SENSOR=y +CONFIG_VIDEO_APTINA_PLL=m +CONFIG_VIDEO_CCS_PLL=m +CONFIG_VIDEO_ALVIUM_CSI2=m +CONFIG_VIDEO_AR0521=m +CONFIG_VIDEO_GC0308=m +CONFIG_VIDEO_GC0310=m +CONFIG_VIDEO_GC05A2=m +CONFIG_VIDEO_GC08A3=m +CONFIG_VIDEO_GC2145=m +CONFIG_VIDEO_HI556=m +CONFIG_VIDEO_HI846=m +CONFIG_VIDEO_HI847=m +CONFIG_VIDEO_IMX111=m +CONFIG_VIDEO_IMX208=m +CONFIG_VIDEO_IMX214=m +CONFIG_VIDEO_IMX219=m +CONFIG_VIDEO_IMX258=m +CONFIG_VIDEO_IMX274=m +CONFIG_VIDEO_IMX283=m +CONFIG_VIDEO_IMX290=m +CONFIG_VIDEO_IMX296=m +CONFIG_VIDEO_IMX319=m +CONFIG_VIDEO_IMX355=m +CONFIG_VIDEO_MAX9271_LIB=m +CONFIG_VIDEO_MT9M001=m +CONFIG_VIDEO_MT9M111=m +CONFIG_VIDEO_MT9M114=m +CONFIG_VIDEO_MT9P031=m +CONFIG_VIDEO_MT9T112=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_MT9V111=m +CONFIG_VIDEO_OG01A1B=m +CONFIG_VIDEO_OG0VE1B=m +CONFIG_VIDEO_OS05B10=m +CONFIG_VIDEO_OV01A10=m +CONFIG_VIDEO_OV02A10=m +CONFIG_VIDEO_OV02E10=m +CONFIG_VIDEO_OV02C10=m +CONFIG_VIDEO_OV08D10=m +CONFIG_VIDEO_OV08X40=m +CONFIG_VIDEO_OV13858=m +CONFIG_VIDEO_OV13B10=m +CONFIG_VIDEO_OV2640=m +CONFIG_VIDEO_OV2659=m +CONFIG_VIDEO_OV2680=m +CONFIG_VIDEO_OV2685=m +CONFIG_VIDEO_OV2735=m +CONFIG_VIDEO_OV2740=m +CONFIG_VIDEO_OV4689=m +CONFIG_VIDEO_OV5647=m +CONFIG_VIDEO_OV5648=m +CONFIG_VIDEO_OV5670=m +CONFIG_VIDEO_OV5675=m +CONFIG_VIDEO_OV5693=m +CONFIG_VIDEO_OV5695=m +CONFIG_VIDEO_OV6211=m +CONFIG_VIDEO_OV64A40=m +CONFIG_VIDEO_OV7251=m +CONFIG_VIDEO_OV7640=m +CONFIG_VIDEO_OV7670=m +CONFIG_VIDEO_OV772X=m +CONFIG_VIDEO_OV7740=m +CONFIG_VIDEO_OV8856=m +CONFIG_VIDEO_OV8858=m +CONFIG_VIDEO_OV8865=m +CONFIG_VIDEO_OV9640=m +CONFIG_VIDEO_OV9650=m +CONFIG_VIDEO_OV9734=m +CONFIG_VIDEO_RDACM20=m +CONFIG_VIDEO_RDACM21=m +CONFIG_VIDEO_RJ54N1=m +CONFIG_VIDEO_S5C73M3=m +CONFIG_VIDEO_S5K3M5=m +CONFIG_VIDEO_S5K5BAF=m +CONFIG_VIDEO_S5K6A3=m +CONFIG_VIDEO_S5KJN1=m +CONFIG_VIDEO_VD55G1=m +CONFIG_VIDEO_VD56G3=m +CONFIG_VIDEO_CCS=m +CONFIG_VIDEO_ET8EK8=m + +# +# Camera ISPs +# +CONFIG_VIDEO_THP7312=m +# end of Camera ISPs + +CONFIG_VIDEO_CAMERA_LENS=y +CONFIG_VIDEO_AD5820=m +CONFIG_VIDEO_AK7375=m +CONFIG_VIDEO_DW9714=m +CONFIG_VIDEO_DW9719=m +CONFIG_VIDEO_DW9768=m +CONFIG_VIDEO_DW9807_VCM=m + +# +# Flash devices +# +CONFIG_VIDEO_ADP1653=m +CONFIG_VIDEO_LM3560=m +CONFIG_VIDEO_LM3646=m +# end of Flash devices + +# +# Audio decoders, processors and mixers +# +CONFIG_VIDEO_CS3308=m +CONFIG_VIDEO_CS5345=m +CONFIG_VIDEO_CS53L32A=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_SONY_BTF_MPX=m +CONFIG_VIDEO_TDA1997X=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_UDA1342=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_WM8739=m +CONFIG_VIDEO_WM8775=m +# end of Audio decoders, processors and mixers + +# +# RDS decoders +# +CONFIG_VIDEO_SAA6588=m +# end of RDS decoders + +# +# Video decoders +# +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7183=m +CONFIG_VIDEO_ADV7604=m +CONFIG_VIDEO_ADV7604_CEC=y +CONFIG_VIDEO_ADV7842=m +CONFIG_VIDEO_ADV7842_CEC=y +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_LT6911UXE=m +CONFIG_VIDEO_KS0127=m +CONFIG_VIDEO_ML86V7667=m +CONFIG_VIDEO_SAA7110=m +CONFIG_VIDEO_SAA711X=m +CONFIG_VIDEO_TC358743=m +CONFIG_VIDEO_TC358743_CEC=y +CONFIG_VIDEO_TC358746=m +CONFIG_VIDEO_TVP514X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TVP7002=m +CONFIG_VIDEO_TW2804=m +CONFIG_VIDEO_TW9900=m +CONFIG_VIDEO_TW9903=m +CONFIG_VIDEO_TW9906=m +CONFIG_VIDEO_TW9910=m +CONFIG_VIDEO_VPX3220=m + +# +# Video and audio decoders +# +CONFIG_VIDEO_SAA717X=m +CONFIG_VIDEO_CX25840=m +# end of Video decoders + +# +# Video encoders +# +CONFIG_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7343=m +CONFIG_VIDEO_ADV7393=m +CONFIG_VIDEO_ADV7511=m +# CONFIG_VIDEO_ADV7511_CEC is not set +CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_SAA7127=m +CONFIG_VIDEO_SAA7185=m +CONFIG_VIDEO_THS8200=m +# end of Video encoders + +# +# Video improvement chips +# +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +# end of Video improvement chips + +# +# Audio/Video compression chips +# +CONFIG_VIDEO_SAA6752HS=m +# end of Audio/Video compression chips + +# +# SDR tuner chips +# +CONFIG_SDR_MAX2175=m +# end of SDR tuner chips + +# +# Miscellaneous helper chips +# +CONFIG_VIDEO_I2C=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_ST_MIPID02=m +CONFIG_VIDEO_THS7303=m +# end of Miscellaneous helper chips + +# +# Video serializers and deserializers +# +CONFIG_VIDEO_MAX96717=m +# end of Video serializers and deserializers + +# +# Media SPI Adapters +# +CONFIG_CXD2880_SPI_DRV=m +CONFIG_VIDEO_GS1662=m +# end of Media SPI Adapters + +CONFIG_MEDIA_TUNER=m + +# +# Customize TV tuners +# +CONFIG_MEDIA_TUNER_E4000=m +CONFIG_MEDIA_TUNER_FC0011=m +CONFIG_MEDIA_TUNER_FC0012=m +CONFIG_MEDIA_TUNER_FC0013=m +CONFIG_MEDIA_TUNER_FC2580=m +CONFIG_MEDIA_TUNER_IT913X=m +CONFIG_MEDIA_TUNER_M88RS6000T=m +CONFIG_MEDIA_TUNER_MAX2165=m +CONFIG_MEDIA_TUNER_MC44S803=m +CONFIG_MEDIA_TUNER_MSI001=m +CONFIG_MEDIA_TUNER_MT2060=m +CONFIG_MEDIA_TUNER_MT2063=m +CONFIG_MEDIA_TUNER_MT20XX=m +CONFIG_MEDIA_TUNER_MT2131=m +CONFIG_MEDIA_TUNER_MT2266=m +CONFIG_MEDIA_TUNER_MXL301RF=m +CONFIG_MEDIA_TUNER_MXL5005S=m +CONFIG_MEDIA_TUNER_MXL5007T=m +CONFIG_MEDIA_TUNER_QM1D1B0004=m +CONFIG_MEDIA_TUNER_QM1D1C0042=m +CONFIG_MEDIA_TUNER_QT1010=m +CONFIG_MEDIA_TUNER_R820T=m +CONFIG_MEDIA_TUNER_SI2157=m +CONFIG_MEDIA_TUNER_SIMPLE=m +CONFIG_MEDIA_TUNER_TDA18212=m +CONFIG_MEDIA_TUNER_TDA18218=m +CONFIG_MEDIA_TUNER_TDA18250=m +CONFIG_MEDIA_TUNER_TDA18271=m +CONFIG_MEDIA_TUNER_TDA827X=m +CONFIG_MEDIA_TUNER_TDA8290=m +CONFIG_MEDIA_TUNER_TDA9887=m +CONFIG_MEDIA_TUNER_TEA5761=m +CONFIG_MEDIA_TUNER_TEA5767=m +CONFIG_MEDIA_TUNER_TUA9001=m +CONFIG_MEDIA_TUNER_XC2028=m +CONFIG_MEDIA_TUNER_XC4000=m +CONFIG_MEDIA_TUNER_XC5000=m +# end of Customize TV tuners + +# +# Customise DVB Frontends +# + +# +# Multistandard (satellite) frontends +# +CONFIG_DVB_M88DS3103=m +CONFIG_DVB_MXL5XX=m +CONFIG_DVB_STB0899=m +CONFIG_DVB_STB6100=m +CONFIG_DVB_STV090x=m +CONFIG_DVB_STV0910=m +CONFIG_DVB_STV6110x=m +CONFIG_DVB_STV6111=m + +# +# Multistandard (cable + terrestrial) frontends +# +CONFIG_DVB_DRXK=m +CONFIG_DVB_MN88472=m +CONFIG_DVB_MN88473=m +CONFIG_DVB_SI2165=m +CONFIG_DVB_TDA18271C2DD=m + +# +# DVB-S (satellite) frontends +# +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=m +CONFIG_DVB_CX24117=m +CONFIG_DVB_CX24120=m +CONFIG_DVB_CX24123=m +CONFIG_DVB_DS3000=m +CONFIG_DVB_MB86A16=m +CONFIG_DVB_MT312=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_SI21XX=m +CONFIG_DVB_STB6000=m +CONFIG_DVB_STV0288=m +CONFIG_DVB_STV0299=m +CONFIG_DVB_STV0900=m +CONFIG_DVB_STV6110=m +CONFIG_DVB_TDA10071=m +CONFIG_DVB_TDA10086=m +CONFIG_DVB_TDA8083=m +CONFIG_DVB_TDA8261=m +CONFIG_DVB_TDA826X=m +CONFIG_DVB_TS2020=m +CONFIG_DVB_TUA6100=m +CONFIG_DVB_TUNER_CX24113=m +CONFIG_DVB_TUNER_ITD1000=m +CONFIG_DVB_VES1X93=m +CONFIG_DVB_ZL10036=m +CONFIG_DVB_ZL10039=m + +# +# DVB-T (terrestrial) frontends +# +CONFIG_DVB_AF9013=m +CONFIG_DVB_AS102_FE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CXD2820R=m +CONFIG_DVB_CXD2841ER=m +CONFIG_DVB_DIB3000MB=m +CONFIG_DVB_DIB3000MC=m +CONFIG_DVB_DIB7000M=m +CONFIG_DVB_DIB7000P=m +CONFIG_DVB_DIB9000=m +CONFIG_DVB_DRXD=m +CONFIG_DVB_EC100=m +CONFIG_DVB_GP8PSK_FE=m +CONFIG_DVB_L64781=m +CONFIG_DVB_MT352=m +CONFIG_DVB_NXT6000=m +CONFIG_DVB_RTL2830=m +CONFIG_DVB_RTL2832=m +CONFIG_DVB_RTL2832_SDR=m +CONFIG_DVB_S5H1432=m +CONFIG_DVB_SI2168=m +CONFIG_DVB_SP887X=m +CONFIG_DVB_STV0367=m +CONFIG_DVB_TDA10048=m +CONFIG_DVB_TDA1004X=m +CONFIG_DVB_ZD1301_DEMOD=m +CONFIG_DVB_ZL10353=m +CONFIG_DVB_CXD2880=m + +# +# DVB-C (cable) frontends +# +CONFIG_DVB_STV0297=m +CONFIG_DVB_TDA10021=m +CONFIG_DVB_TDA10023=m +CONFIG_DVB_VES1820=m + +# +# ATSC (North American/Korean Terrestrial/Cable DTV) frontends +# +CONFIG_DVB_AU8522=m +CONFIG_DVB_AU8522_DTV=m +CONFIG_DVB_AU8522_V4L=m +CONFIG_DVB_BCM3510=m +CONFIG_DVB_LG2160=m +CONFIG_DVB_LGDT3305=m +CONFIG_DVB_LGDT3306A=m +CONFIG_DVB_LGDT330X=m +CONFIG_DVB_MXL692=m +CONFIG_DVB_NXT200X=m +CONFIG_DVB_OR51132=m +CONFIG_DVB_OR51211=m +CONFIG_DVB_S5H1409=m +CONFIG_DVB_S5H1411=m + +# +# ISDB-T (terrestrial) frontends +# +CONFIG_DVB_DIB8000=m +CONFIG_DVB_MB86A20S=m +CONFIG_DVB_S921=m + +# +# ISDB-S (satellite) & ISDB-T (terrestrial) frontends +# +CONFIG_DVB_MN88443X=m +CONFIG_DVB_TC90522=m + +# +# Digital terrestrial only tuners/PLL +# +CONFIG_DVB_PLL=m +CONFIG_DVB_TUNER_DIB0070=m +CONFIG_DVB_TUNER_DIB0090=m + +# +# SEC control devices for DVB-S +# +CONFIG_DVB_A8293=m +CONFIG_DVB_AF9033=m +CONFIG_DVB_ASCOT2E=m +CONFIG_DVB_ATBM8830=m +CONFIG_DVB_HELENE=m +CONFIG_DVB_HORUS3A=m +CONFIG_DVB_ISL6405=m +CONFIG_DVB_ISL6421=m +CONFIG_DVB_ISL6423=m +CONFIG_DVB_IX2505V=m +CONFIG_DVB_LGS8GL5=m +CONFIG_DVB_LGS8GXX=m +CONFIG_DVB_LNBH25=m +CONFIG_DVB_LNBH29=m +CONFIG_DVB_LNBP21=m +CONFIG_DVB_LNBP22=m +CONFIG_DVB_M88RS2000=m +CONFIG_DVB_TDA665x=m +CONFIG_DVB_DRX39XYJ=m + +# +# Common Interface (EN50221) controller drivers +# +CONFIG_DVB_CXD2099=m +CONFIG_DVB_SP2=m +# end of Customise DVB Frontends + +# +# Tools to develop new frontends +# +CONFIG_DVB_DUMMY_FE=m +# end of Media ancillary drivers + +# +# Graphics support +# +CONFIG_APERTURE_HELPERS=y +CONFIG_SCREEN_INFO=y +CONFIG_VIDEO=y +CONFIG_AUXDISPLAY=y +CONFIG_CHARLCD=m +CONFIG_HD44780_COMMON=m +CONFIG_HD44780=m +CONFIG_LCD2S=m +CONFIG_PARPORT_PANEL=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PROFILE=5 +# CONFIG_PANEL_CHANGE_MESSAGE is not set +# CONFIG_CHARLCD_BL_OFF is not set +# CONFIG_CHARLCD_BL_ON is not set +CONFIG_CHARLCD_BL_FLASH=y +CONFIG_KS0108=m +CONFIG_KS0108_PORT=0x378 +CONFIG_KS0108_DELAY=2 +CONFIG_CFAG12864B=m +CONFIG_CFAG12864B_RATE=20 +CONFIG_LINEDISP=m +CONFIG_IMG_ASCII_LCD=m +CONFIG_HT16K33=m +CONFIG_MAX6959=m +CONFIG_SEG_LED_GPIO=m +CONFIG_PANEL=m +CONFIG_AGP=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_INTEL=y +CONFIG_AGP_SIS=m +CONFIG_AGP_VIA=y +CONFIG_INTEL_GTT=y +CONFIG_VGA_SWITCHEROO=y +# CONFIG_NOVA_CORE is not set +CONFIG_DRM=y + +# +# DRM debugging options +# +# CONFIG_DRM_WERROR is not set +# CONFIG_DRM_DEBUG_MM is not set +# end of DRM debugging options + +CONFIG_DRM_MIPI_DBI=m +CONFIG_DRM_MIPI_DSI=y +CONFIG_DRM_KMS_HELPER=y +CONFIG_DRM_DRAW=y +CONFIG_DRM_PANIC=y +CONFIG_DRM_PANIC_FOREGROUND_COLOR=0xffffff +CONFIG_DRM_PANIC_BACKGROUND_COLOR=0x5e2750 +# CONFIG_DRM_PANIC_DEBUG is not set +CONFIG_DRM_PANIC_SCREEN="user" +# CONFIG_DRM_PANIC_SCREEN_QR_CODE is not set +# CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set +# CONFIG_DRM_DEBUG_MODESET_LOCK is not set +CONFIG_DRM_CLIENT=y +CONFIG_DRM_CLIENT_LIB=y +CONFIG_DRM_CLIENT_SELECTION=y +CONFIG_DRM_CLIENT_SETUP=y + +# +# Supported DRM clients +# +CONFIG_DRM_FBDEV_EMULATION=y +CONFIG_DRM_FBDEV_OVERALLOC=100 +# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set +CONFIG_DRM_CLIENT_LOG=y +CONFIG_DRM_CLIENT_DEFAULT_FBDEV=y +# CONFIG_DRM_CLIENT_DEFAULT_LOG is not set +CONFIG_DRM_CLIENT_DEFAULT="fbdev" +# end of Supported DRM clients + +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_DISPLAY_HELPER=m +CONFIG_DRM_DISPLAY_DP_AUX_CEC=y +CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV=y +CONFIG_DRM_DISPLAY_DP_HELPER=y +CONFIG_DRM_DISPLAY_DP_TUNNEL=y +CONFIG_DRM_DISPLAY_DSC_HELPER=y +CONFIG_DRM_DISPLAY_HDCP_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_CEC_NOTIFIER_HELPER=y +CONFIG_DRM_DISPLAY_HDMI_HELPER=y +CONFIG_DRM_TTM=m +CONFIG_DRM_EXEC=m +CONFIG_DRM_GPUVM=m +CONFIG_DRM_GPUSVM=m +CONFIG_DRM_BUDDY=m +CONFIG_DRM_VRAM_HELPER=m +CONFIG_DRM_TTM_HELPER=m +CONFIG_DRM_GEM_DMA_HELPER=m +CONFIG_DRM_GEM_SHMEM_HELPER=y +CONFIG_DRM_SUBALLOC_HELPER=m +CONFIG_DRM_SCHED=m +CONFIG_DRM_PANEL_BACKLIGHT_QUIRKS=m +CONFIG_DRM_PRIVACY_SCREEN=y +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y +CONFIG_DRM_AMDGPU_USERPTR=y +CONFIG_DRM_AMD_ISP=y +# CONFIG_DRM_AMDGPU_WERROR is not set + +# +# ACP (Audio CoProcessor) Configuration +# +CONFIG_DRM_AMD_ACP=y +# end of ACP (Audio CoProcessor) Configuration + +# +# Display Engine Configuration +# +CONFIG_DRM_AMD_DC=y +CONFIG_DRM_AMD_DC_FP=y +CONFIG_DRM_AMD_DC_SI=y +# CONFIG_DEBUG_KERNEL_DC is not set +CONFIG_DRM_AMD_SECURE_DISPLAY=y +# end of Display Engine Configuration + +CONFIG_HSA_AMD=y +CONFIG_HSA_AMD_SVM=y +CONFIG_HSA_AMD_P2P=y + +# +# ARM devices +# +# end of ARM devices + +CONFIG_DRM_AST=m +CONFIG_DRM_BRIDGE=y +CONFIG_DRM_PANEL_BRIDGE=y + +# +# Display Interface Bridges +# +CONFIG_DRM_I2C_NXP_TDA998X=m +CONFIG_DRM_ANALOGIX_ANX78XX=m +CONFIG_DRM_ANALOGIX_DP=m +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set +CONFIG_DRM_GMA500=m +CONFIG_DRM_GUD=m +# CONFIG_DRM_HISI_HIBMC is not set +CONFIG_DRM_HYPERV=m +CONFIG_DRM_I915=m +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_KVMGT=m +CONFIG_DRM_I915_PXP=y +CONFIG_DRM_I915_DP_TUNNEL=y + +# +# drm/i915 Debugging +# +# CONFIG_DRM_I915_WERROR is not set +# CONFIG_DRM_I915_REPLAY_GPU_HANGS_API is not set +# CONFIG_DRM_I915_DEBUG is not set +# CONFIG_DRM_I915_DEBUG_MMIO is not set +# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set +# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set +# CONFIG_DRM_I915_DEBUG_GUC is not set +# CONFIG_DRM_I915_SELFTEST is not set +# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set +# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set +# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set +# CONFIG_DRM_I915_DEBUG_WAKEREF is not set +# end of drm/i915 Debugging + +# +# drm/i915 Profile Guided Optimisation +# +CONFIG_DRM_I915_REQUEST_TIMEOUT=20000 +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_PREEMPT_TIMEOUT_COMPUTE=7500 +CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000 +CONFIG_DRM_I915_STOP_TIMEOUT=100 +CONFIG_DRM_I915_TIMESLICE_DURATION=1 +# end of drm/i915 Profile Guided Optimisation + +CONFIG_DRM_I915_GVT=y +CONFIG_DRM_MGAG200=m +CONFIG_DRM_NOUVEAU=m +CONFIG_NOUVEAU_DEBUG=5 +CONFIG_NOUVEAU_DEBUG_DEFAULT=3 +# CONFIG_NOUVEAU_DEBUG_MMU is not set +# CONFIG_NOUVEAU_DEBUG_PUSH is not set +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +# CONFIG_DRM_NOUVEAU_SVM is not set +CONFIG_DRM_NOUVEAU_CH7006=m +CONFIG_DRM_NOUVEAU_SIL164=m +# CONFIG_DRM_NOVA is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +CONFIG_DRM_PANEL_AUO_A030JTN01=m +CONFIG_DRM_PANEL_ILITEK_ILI9341=m +CONFIG_DRM_PANEL_ORISETECH_OTA5601A=m +CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m +CONFIG_DRM_PANEL_WIDECHIPS_WS2401=m +# end of Display Panels + +CONFIG_DRM_QXL=m +CONFIG_DRM_RADEON=m +# CONFIG_DRM_RADEON_USERPTR is not set +CONFIG_DRM_ST7571=m +CONFIG_DRM_ST7571_I2C=m +CONFIG_DRM_ST7571_SPI=m +CONFIG_DRM_ST7586=m +CONFIG_DRM_ST7735R=m +CONFIG_DRM_ST7920=m +CONFIG_DRM_SSD130X=m +CONFIG_DRM_SSD130X_I2C=m +CONFIG_DRM_SSD130X_SPI=m + +# +# Drivers for system framebuffers +# +CONFIG_DRM_SYSFB_HELPER=y +CONFIG_DRM_SIMPLEDRM=y +# end of Drivers for system framebuffers + +CONFIG_DRM_APPLETBDRM=m +CONFIG_DRM_BOCHS=m +CONFIG_DRM_CIRRUS_QEMU=m +CONFIG_DRM_GM12U320=m +CONFIG_DRM_PANEL_MIPI_DBI=m +CONFIG_DRM_PIXPAPER=m +CONFIG_TINYDRM_HX8357D=m +CONFIG_TINYDRM_ILI9163=m +CONFIG_TINYDRM_ILI9225=m +CONFIG_TINYDRM_ILI9341=m +CONFIG_TINYDRM_ILI9486=m +CONFIG_TINYDRM_MI0283QT=m +CONFIG_TINYDRM_REPAPER=m +CONFIG_TINYDRM_SHARP_MEMORY=m +CONFIG_DRM_UDL=m +CONFIG_DRM_VBOXVIDEO=m +CONFIG_DRM_VGEM=m +CONFIG_DRM_VIRTIO_GPU=m +CONFIG_DRM_VIRTIO_GPU_KMS=y +CONFIG_DRM_VKMS=m +CONFIG_DRM_VMWGFX=m +# CONFIG_DRM_VMWGFX_MKSSTATS is not set +CONFIG_DRM_XE=m +CONFIG_DRM_XE_DISPLAY=y +CONFIG_DRM_XE_DP_TUNNEL=y +CONFIG_DRM_XE_GPUSVM=y +CONFIG_DRM_XE_PAGEMAP=y +CONFIG_DRM_XE_FORCE_PROBE="" + +# +# drm/Xe Debugging +# +# CONFIG_DRM_XE_WERROR is not set +# CONFIG_DRM_XE_DEBUG is not set +# CONFIG_DRM_XE_DEBUG_VM is not set +# CONFIG_DRM_XE_DEBUG_SRIOV is not set +# CONFIG_DRM_XE_DEBUG_MEMIRQ is not set +# CONFIG_DRM_XE_DEBUG_MEM is not set +# CONFIG_DRM_XE_USERPTR_INVAL_INJECT is not set +# end of drm/Xe Debugging + +# +# drm/xe Profile Guided Optimisation +# +CONFIG_DRM_XE_JOB_TIMEOUT_MAX=10000 +CONFIG_DRM_XE_JOB_TIMEOUT_MIN=1 +CONFIG_DRM_XE_TIMESLICE_MAX=10000000 +CONFIG_DRM_XE_TIMESLICE_MIN=1 +CONFIG_DRM_XE_PREEMPT_TIMEOUT=640000 +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MAX=10000000 +CONFIG_DRM_XE_PREEMPT_TIMEOUT_MIN=1 +CONFIG_DRM_XE_ENABLE_SCHEDTIMEOUT_LIMIT=y +# end of drm/xe Profile Guided Optimisation + +CONFIG_DRM_XEN=y +CONFIG_DRM_XEN_FRONTEND=m +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB=y +CONFIG_FB_HECUBA=m +CONFIG_FB_SVGALIB=m +CONFIG_FB_CIRRUS=m +CONFIG_FB_PM2=m +CONFIG_FB_PM2_FIFO_DISCONNECT=y +CONFIG_FB_CYBER2000=m +CONFIG_FB_CYBER2000_DDC=y +CONFIG_FB_ARC=m +CONFIG_FB_ASILIANT=y +CONFIG_FB_IMSTT=y +CONFIG_FB_VGA16=m +CONFIG_FB_UVESA=m +# CONFIG_FB_VESA is not set +# CONFIG_FB_EFI is not set +CONFIG_FB_N411=m +CONFIG_FB_HGA=m +CONFIG_FB_OPENCORES=m +CONFIG_FB_S1D13XXX=m +CONFIG_FB_NVIDIA=m +CONFIG_FB_NVIDIA_I2C=y +# CONFIG_FB_NVIDIA_DEBUG is not set +CONFIG_FB_NVIDIA_BACKLIGHT=y +CONFIG_FB_RIVA=m +CONFIG_FB_RIVA_I2C=y +# CONFIG_FB_RIVA_DEBUG is not set +CONFIG_FB_RIVA_BACKLIGHT=y +CONFIG_FB_I740=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_RADEON=m +CONFIG_FB_RADEON_I2C=y +CONFIG_FB_RADEON_BACKLIGHT=y +# CONFIG_FB_RADEON_DEBUG is not set +CONFIG_FB_ATY128=m +CONFIG_FB_ATY128_BACKLIGHT=y +CONFIG_FB_ATY=m +CONFIG_FB_ATY_CT=y +# CONFIG_FB_ATY_GENERIC_LCD is not set +CONFIG_FB_ATY_GX=y +CONFIG_FB_ATY_BACKLIGHT=y +CONFIG_FB_S3=m +CONFIG_FB_S3_DDC=y +CONFIG_FB_SAVAGE=m +CONFIG_FB_SAVAGE_I2C=y +# CONFIG_FB_SAVAGE_ACCEL is not set +CONFIG_FB_SIS=m +CONFIG_FB_SIS_300=y +CONFIG_FB_SIS_315=y +CONFIG_FB_VIA=m +# CONFIG_FB_VIA_DIRECT_PROCFS is not set +CONFIG_FB_VIA_X_COMPATIBILITY=y +CONFIG_FB_NEOMAGIC=m +CONFIG_FB_KYRO=m +CONFIG_FB_3DFX=m +# CONFIG_FB_3DFX_ACCEL is not set +# CONFIG_FB_3DFX_I2C is not set +CONFIG_FB_VOODOO1=m +CONFIG_FB_VT8623=m +CONFIG_FB_TRIDENT=m +CONFIG_FB_ARK=m +CONFIG_FB_PM3=m +CONFIG_FB_CARMINE=m +CONFIG_FB_CARMINE_DRAM_EVAL=y +# CONFIG_CARMINE_DRAM_CUSTOM is not set +CONFIG_FB_SM501=m +CONFIG_FB_SMSCUFX=m +CONFIG_FB_UDL=m +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +CONFIG_XEN_FBDEV_FRONTEND=m +CONFIG_FB_METRONOME=m +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_MB862XX_I2C=y +CONFIG_FB_SSD1307=m +CONFIG_FB_SM712=m +CONFIG_FB_CORE=y +CONFIG_FB_NOTIFY=y +CONFIG_FB_DEVICE=y +CONFIG_FB_DDC=m +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_CFB_REV_PIXELS_IN_BYTE=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_SYSMEM_FOPS=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_DMAMEM_HELPERS=y +CONFIG_FB_DMAMEM_HELPERS_DEFERRED=y +CONFIG_FB_IOMEM_FOPS=y +CONFIG_FB_IOMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS=y +CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LMS283GF05=m +CONFIG_LCD_LTV350QV=m +CONFIG_LCD_ILI922X=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_TDO24M=m +CONFIG_LCD_VGG2432A4=m +CONFIG_LCD_PLATFORM=m +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_LMS501KF03=m +CONFIG_LCD_HX8357=m +CONFIG_LCD_OTM3225A=m +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_AW99706=m +CONFIG_BACKLIGHT_KTD253=m +CONFIG_BACKLIGHT_KTD2801=m +CONFIG_BACKLIGHT_KTZ8866=m +CONFIG_BACKLIGHT_LM3533=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_CGBC=m +CONFIG_BACKLIGHT_DA903X=m +CONFIG_BACKLIGHT_DA9052=m +CONFIG_BACKLIGHT_MAX8925=m +CONFIG_BACKLIGHT_MT6370=m +CONFIG_BACKLIGHT_APPLE=m +CONFIG_BACKLIGHT_QCOM_WLED=m +CONFIG_BACKLIGHT_RT4831=m +CONFIG_BACKLIGHT_SAHARA=m +CONFIG_BACKLIGHT_WM831X=m +CONFIG_BACKLIGHT_ADP5520=m +CONFIG_BACKLIGHT_ADP8860=m +CONFIG_BACKLIGHT_ADP8870=m +CONFIG_BACKLIGHT_88PM860X=m +CONFIG_BACKLIGHT_AAT2870=m +CONFIG_BACKLIGHT_LM3509=m +CONFIG_BACKLIGHT_LM3630A=m +CONFIG_BACKLIGHT_LM3639=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_LP8788=m +CONFIG_BACKLIGHT_MP3309C=m +CONFIG_BACKLIGHT_PANDORA=m +CONFIG_BACKLIGHT_SKY81452=m +CONFIG_BACKLIGHT_AS3711=m +CONFIG_BACKLIGHT_GPIO=m +CONFIG_BACKLIGHT_LV5207LP=m +CONFIG_BACKLIGHT_BD6107=m +CONFIG_BACKLIGHT_ARCXCNN=m +CONFIG_BACKLIGHT_RAVE_SP=m +# end of Backlight & LCD device support + +CONFIG_VGASTATE=m +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_HDMI=y +CONFIG_FIRMWARE_EDID=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_LEGACY_ACCELERATION is not set +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y +# end of Console display driver support + +# CONFIG_LOGO is not set +# CONFIG_TRACE_GPU_MEM is not set +# end of Graphics support + +CONFIG_DRM_ACCEL=y +CONFIG_DRM_ACCEL_AMDXDNA=m +CONFIG_DRM_ACCEL_HABANALABS=m +CONFIG_HL_HLDIO=y +CONFIG_DRM_ACCEL_IVPU=m +# CONFIG_DRM_ACCEL_IVPU_DEBUG is not set +CONFIG_DRM_ACCEL_QAIC=m +CONFIG_SOUND=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_PCM_ELD=y +CONFIG_SND_PCM_IEC958=y +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_HWDEP=m +CONFIG_SND_SEQ_DEVICE=m +CONFIG_SND_RAWMIDI=m +CONFIG_SND_UMP=m +CONFIG_SND_UMP_LEGACY_RAWMIDI=y +CONFIG_SND_COMPRESS_OFFLOAD=m +CONFIG_SND_COMPRESS_ACCEL=y +CONFIG_SND_JACK=y +CONFIG_SND_JACK_INPUT_DEV=y +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_PCM_TIMER=y +CONFIG_SND_HRTIMER=m +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_CTL_FAST_LOOKUP is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_CTL_INPUT_VALIDATION is not set +CONFIG_SND_UTIMER=y +CONFIG_SND_VMASTER=y +CONFIG_SND_DMA_SGBUF=y +CONFIG_SND_CTL_LED=m +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_SEQ_MIDI_EVENT=m +CONFIG_SND_SEQ_MIDI=m +CONFIG_SND_SEQ_MIDI_EMUL=m +CONFIG_SND_SEQ_VIRMIDI=m +CONFIG_SND_SEQ_UMP=y +CONFIG_SND_SEQ_UMP_CLIENT=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_OPL3_LIB=m +CONFIG_SND_OPL3_LIB_SEQ=m +CONFIG_SND_VX_LIB=m +CONFIG_SND_AC97_CODEC=m +CONFIG_SND_DRIVERS=y +CONFIG_SND_PCSP=m +CONFIG_SND_DUMMY=m +CONFIG_SND_ALOOP=m +CONFIG_SND_PCMTEST=m +CONFIG_SND_VIRMIDI=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_SERIAL_U16550=m +CONFIG_SND_MPU401=m +CONFIG_SND_PORTMAN2X4=m +CONFIG_SND_AC97_POWER_SAVE=y +CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0 +CONFIG_SND_SB_COMMON=m +CONFIG_SND_PCI=y +CONFIG_SND_AD1889=m +CONFIG_SND_ALS300=m +CONFIG_SND_ALS4000=m +CONFIG_SND_ALI5451=m +CONFIG_SND_ASIHPI=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_AU8810=m +CONFIG_SND_AU8820=m +CONFIG_SND_AU8830=m +CONFIG_SND_AW2=m +CONFIG_SND_AZT3328=m +CONFIG_SND_BT87X=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +CONFIG_SND_CA0106=m +CONFIG_SND_CMIPCI=m +CONFIG_SND_OXYGEN_LIB=m +CONFIG_SND_OXYGEN=m +CONFIG_SND_CS4281=m +CONFIG_SND_CS46XX=m +CONFIG_SND_CS46XX_NEW_DSP=y +CONFIG_SND_CTXFI=m +CONFIG_SND_DARLA20=m +CONFIG_SND_GINA20=m +CONFIG_SND_LAYLA20=m +CONFIG_SND_DARLA24=m +CONFIG_SND_GINA24=m +CONFIG_SND_LAYLA24=m +CONFIG_SND_MONA=m +CONFIG_SND_MIA=m +CONFIG_SND_ECHO3G=m +CONFIG_SND_INDIGO=m +CONFIG_SND_INDIGOIO=m +CONFIG_SND_INDIGODJ=m +CONFIG_SND_INDIGOIOX=m +CONFIG_SND_INDIGODJX=m +CONFIG_SND_EMU10K1=m +CONFIG_SND_EMU10K1_SEQ=m +CONFIG_SND_EMU10K1X=m +CONFIG_SND_ENS1370=m +CONFIG_SND_ENS1371=m +CONFIG_SND_ES1938=m +CONFIG_SND_ES1968=m +CONFIG_SND_ES1968_INPUT=y +CONFIG_SND_ES1968_RADIO=y +CONFIG_SND_FM801=m +CONFIG_SND_FM801_TEA575X_BOOL=y +CONFIG_SND_HDSP=m +CONFIG_SND_HDSPM=m +CONFIG_SND_ICE1712=m +CONFIG_SND_ICE1724=m +CONFIG_SND_INTEL8X0=m +CONFIG_SND_INTEL8X0M=m +CONFIG_SND_KORG1212=m +CONFIG_SND_LOLA=m +CONFIG_SND_LX6464ES=m +CONFIG_SND_MAESTRO3=m +CONFIG_SND_MAESTRO3_INPUT=y +CONFIG_SND_MIXART=m +CONFIG_SND_NM256=m +CONFIG_SND_PCXHR=m +CONFIG_SND_RIPTIDE=m +CONFIG_SND_RME32=m +CONFIG_SND_RME96=m +CONFIG_SND_RME9652=m +CONFIG_SND_SONICVIBES=m +CONFIG_SND_TRIDENT=m +CONFIG_SND_VIA82XX=m +CONFIG_SND_VIA82XX_MODEM=m +CONFIG_SND_VIRTUOSO=m +CONFIG_SND_VX222=m +CONFIG_SND_YMFPCI=m + +# +# HD-Audio +# +CONFIG_SND_HDA=m +CONFIG_SND_HDA_HWDEP=y +CONFIG_SND_HDA_RECONFIG=y +CONFIG_SND_HDA_INPUT_BEEP=y +CONFIG_SND_HDA_INPUT_BEEP_MODE=0 +CONFIG_SND_HDA_PATCH_LOADER=y +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=1 +# CONFIG_SND_HDA_CTL_DEV_ID is not set +CONFIG_SND_HDA_PREALLOC_SIZE=0 +CONFIG_SND_HDA_INTEL=m +CONFIG_SND_HDA_ACPI=m +CONFIG_SND_HDA_GENERIC_LEDS=y +CONFIG_SND_HDA_CODEC_ANALOG=m +CONFIG_SND_HDA_CODEC_SIGMATEL=m +CONFIG_SND_HDA_CODEC_VIA=m +CONFIG_SND_HDA_CODEC_CONEXANT=m +CONFIG_SND_HDA_CODEC_SENARYTECH=m +CONFIG_SND_HDA_CODEC_CA0110=m +CONFIG_SND_HDA_CODEC_CA0132=m +CONFIG_SND_HDA_CODEC_CA0132_DSP=y +CONFIG_SND_HDA_CODEC_CMEDIA=m +CONFIG_SND_HDA_CODEC_CM9825=m +CONFIG_SND_HDA_CODEC_SI3054=m +CONFIG_SND_HDA_GENERIC=m +CONFIG_SND_HDA_CODEC_REALTEK=m +CONFIG_SND_HDA_CODEC_REALTEK_LIB=m +CONFIG_SND_HDA_CODEC_ALC260=m +CONFIG_SND_HDA_CODEC_ALC262=m +CONFIG_SND_HDA_CODEC_ALC268=m +CONFIG_SND_HDA_CODEC_ALC269=m +CONFIG_SND_HDA_CODEC_ALC662=m +CONFIG_SND_HDA_CODEC_ALC680=m +CONFIG_SND_HDA_CODEC_ALC861=m +CONFIG_SND_HDA_CODEC_ALC861VD=m +CONFIG_SND_HDA_CODEC_ALC880=m +CONFIG_SND_HDA_CODEC_ALC882=m +CONFIG_SND_HDA_CODEC_CIRRUS=m +CONFIG_SND_HDA_CODEC_CS420X=m +CONFIG_SND_HDA_CODEC_CS421X=m +CONFIG_SND_HDA_CODEC_CS8409=m +CONFIG_SND_HDA_CODEC_HDMI=m +CONFIG_SND_HDA_CODEC_HDMI_GENERIC=m +CONFIG_SND_HDA_CODEC_HDMI_SIMPLE=m +CONFIG_SND_HDA_CODEC_HDMI_INTEL=m +CONFIG_SND_HDA_INTEL_HDMI_SILENT_STREAM=y +CONFIG_SND_HDA_CODEC_HDMI_ATI=m +CONFIG_SND_HDA_CODEC_HDMI_NVIDIA=m +CONFIG_SND_HDA_CODEC_HDMI_NVIDIA_MCP=m +CONFIG_SND_HDA_CODEC_HDMI_TEGRA=m +CONFIG_SND_HDA_CIRRUS_SCODEC=m +CONFIG_SND_HDA_SCODEC_CS35L41=m +CONFIG_SND_HDA_SCODEC_COMPONENT=m +CONFIG_SND_HDA_SCODEC_CS35L41_I2C=m +CONFIG_SND_HDA_SCODEC_CS35L41_SPI=m +CONFIG_SND_HDA_SCODEC_CS35L56=m +CONFIG_SND_HDA_SCODEC_CS35L56_I2C=m +CONFIG_SND_HDA_SCODEC_CS35L56_SPI=m + +# +# CS35L56 driver options +# +# CONFIG_SND_HDA_SCODEC_CS35L56_CAL_DEBUGFS is not set +# end of CS35L56 driver options + +CONFIG_SND_HDA_SCODEC_TAS2781=m +CONFIG_SND_HDA_SCODEC_TAS2781_I2C=m +CONFIG_SND_HDA_SCODEC_TAS2781_SPI=m +CONFIG_SND_HDA_CORE=m +CONFIG_SND_HDA_DSP_LOADER=y +CONFIG_SND_HDA_COMPONENT=y +CONFIG_SND_HDA_I915=y +CONFIG_SND_HDA_EXT_CORE=m +CONFIG_SND_INTEL_NHLT=y +CONFIG_SND_INTEL_DSP_CONFIG=m +CONFIG_SND_INTEL_SOUNDWIRE_ACPI=m +CONFIG_SND_INTEL_BYT_PREFER_SOF=y +# end of HD-Audio + +CONFIG_SND_SPI=y +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_USB_AUDIO_MIDI_V2=y +CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y +CONFIG_SND_USB_UA101=m +CONFIG_SND_USB_USX2Y=m +CONFIG_SND_USB_CAIAQ=m +CONFIG_SND_USB_CAIAQ_INPUT=y +CONFIG_SND_USB_US122L=m +CONFIG_SND_USB_US144MKII=m +CONFIG_SND_USB_6FIRE=m +CONFIG_SND_USB_HIFACE=m +CONFIG_SND_BCD2000=m +CONFIG_SND_USB_AUDIO_QMI=m +CONFIG_SND_USB_LINE6=m +CONFIG_SND_USB_POD=m +CONFIG_SND_USB_PODHD=m +CONFIG_SND_USB_TONEPORT=m +CONFIG_SND_USB_VARIAX=m +CONFIG_SND_FIREWIRE=y +CONFIG_SND_FIREWIRE_LIB=m +CONFIG_SND_DICE=m +CONFIG_SND_OXFW=m +CONFIG_SND_ISIGHT=m +CONFIG_SND_FIREWORKS=m +CONFIG_SND_BEBOB=m +CONFIG_SND_FIREWIRE_DIGI00X=m +CONFIG_SND_FIREWIRE_TASCAM=m +CONFIG_SND_FIREWIRE_MOTU=m +CONFIG_SND_FIREFACE=m +CONFIG_SND_PCMCIA=y +CONFIG_SND_VXPOCKET=m +CONFIG_SND_PDAUDIOCF=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_AC97_BUS=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +CONFIG_SND_SOC_COMPRESS=y +CONFIG_SND_SOC_TOPOLOGY=y +CONFIG_SND_SOC_ACPI=m +CONFIG_SND_SOC_USB=m + +# +# Analog Devices +# +CONFIG_SND_SOC_ADI_AXI_I2S=m +CONFIG_SND_SOC_ADI_AXI_SPDIF=m +# end of Analog Devices + +# +# AMD +# +CONFIG_SND_SOC_AMD_ACP=m +CONFIG_SND_SOC_AMD_CZ_DA7219MX98357_MACH=m +CONFIG_SND_SOC_AMD_CZ_RT5645_MACH=m +CONFIG_SND_SOC_AMD_ST_ES8336_MACH=m +CONFIG_SND_SOC_AMD_ACP3x=m +CONFIG_SND_SOC_AMD_RV_RT5682_MACH=m +CONFIG_SND_SOC_AMD_RENOIR=m +CONFIG_SND_SOC_AMD_RENOIR_MACH=m +CONFIG_SND_SOC_AMD_ACP5x=m +CONFIG_SND_SOC_AMD_VANGOGH_MACH=m +CONFIG_SND_SOC_AMD_ACP6x=m +CONFIG_SND_SOC_AMD_YC_MACH=m +CONFIG_SND_AMD_ACP_CONFIG=m +CONFIG_SND_SOC_AMD_ACP_COMMON=m +CONFIG_SND_SOC_ACPI_AMD_MATCH=m +CONFIG_SND_SOC_ACPI_AMD_SDCA_QUIRKS=y +CONFIG_SND_SOC_AMD_ACP_PDM=m +CONFIG_SND_SOC_AMD_ACP_LEGACY_COMMON=m +CONFIG_SND_SOC_AMD_ACP_I2S=m +CONFIG_SND_SOC_AMD_ACPI_MACH=m +CONFIG_SND_SOC_AMD_ACP_PCM=m +CONFIG_SND_SOC_AMD_ACP_PCI=m +CONFIG_SND_AMD_ASOC_RENOIR=m +CONFIG_SND_AMD_ASOC_REMBRANDT=m +CONFIG_SND_AMD_ASOC_ACP63=m +CONFIG_SND_AMD_ASOC_ACP70=m +CONFIG_SND_SOC_AMD_MACH_COMMON=m +CONFIG_SND_SOC_AMD_LEGACY_MACH=m +CONFIG_SND_SOC_AMD_SOF_MACH=m +CONFIG_SND_SOC_AMD_SDW_MACH_COMMON=m +CONFIG_SND_SOC_AMD_SOF_SDW_MACH=m +CONFIG_SND_SOC_AMD_LEGACY_SDW_MACH=m +CONFIG_SND_AMD_SOUNDWIRE_ACPI=m +CONFIG_SND_SOC_AMD_RPL_ACP6x=m +CONFIG_SND_SOC_AMD_ACP63_TOPLEVEL=m +CONFIG_SND_SOC_AMD_SOUNDWIRE_LINK_BASELINE=m +CONFIG_SND_SOC_AMD_SOUNDWIRE=m +CONFIG_SND_SOC_AMD_PS=m +CONFIG_SND_SOC_AMD_PS_MACH=m +# end of AMD + +# +# Apple +# +# end of Apple + +# +# Atmel +# +# end of Atmel + +# +# Au1x +# +# end of Au1x + +# +# Broadcom +# +CONFIG_SND_BCM63XX_I2S_WHISTLER=m +# end of Broadcom + +# +# Cirrus Logic +# +# end of Cirrus Logic + +# +# DesignWare +# +CONFIG_SND_DESIGNWARE_I2S=m +CONFIG_SND_DESIGNWARE_PCM=y +# end of DesignWare + +# +# Freescale +# + +# +# Common SoC Audio options for Freescale CPUs: +# +CONFIG_SND_SOC_FSL_ASRC=m +CONFIG_SND_SOC_FSL_SAI=m +CONFIG_SND_SOC_FSL_MQS=m +CONFIG_SND_SOC_FSL_AUDMIX=m +CONFIG_SND_SOC_FSL_SSI=m +CONFIG_SND_SOC_FSL_SPDIF=m +CONFIG_SND_SOC_FSL_ESAI=m +CONFIG_SND_SOC_FSL_MICFIL=m +CONFIG_SND_SOC_FSL_EASRC=m +CONFIG_SND_SOC_FSL_XCVR=m +CONFIG_SND_SOC_FSL_UTILS=m +CONFIG_SND_SOC_IMX_AUDMUX=m +# end of Freescale + +# +# Google +# +CONFIG_SND_SOC_CHV3_I2S=m +# end of Google + +# +# Hisilicon +# +CONFIG_SND_I2S_HI6210_I2S=m +# end of Hisilicon + +# +# JZ4740 +# +# end of JZ4740 + +# +# Kirkwood +# +# end of Kirkwood + +# +# Loongson +# +# end of Loongson + +# +# Intel +# +CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y +CONFIG_SND_SOC_INTEL_CATPT=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_PCI=m +CONFIG_SND_SST_ATOM_HIFI2_PLATFORM_ACPI=m +CONFIG_SND_SOC_ACPI_INTEL_MATCH=m +CONFIG_SND_SOC_ACPI_INTEL_SDCA_QUIRKS=m +CONFIG_SND_SOC_INTEL_AVS=m + +# +# Intel AVS Machine drivers +# + +# +# Available DSP configurations +# +# CONFIG_SND_SOC_INTEL_AVS_CARDNAME_OBSOLETE is not set +CONFIG_SND_SOC_INTEL_AVS_MACH_DA7219=m +CONFIG_SND_SOC_INTEL_AVS_MACH_DMIC=m +CONFIG_SND_SOC_INTEL_AVS_MACH_ES8336=m +CONFIG_SND_SOC_INTEL_AVS_MACH_HDAUDIO=m +CONFIG_SND_SOC_INTEL_AVS_MACH_I2S_TEST=m +CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98927=m +CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98357A=m +CONFIG_SND_SOC_INTEL_AVS_MACH_MAX98373=m +CONFIG_SND_SOC_INTEL_AVS_MACH_NAU8825=m +CONFIG_SND_SOC_INTEL_AVS_MACH_PCM3168A=m +CONFIG_SND_SOC_INTEL_AVS_MACH_PROBE=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT274=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT286=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT298=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT5514=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT5640=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT5663=m +CONFIG_SND_SOC_INTEL_AVS_MACH_RT5682=m +CONFIG_SND_SOC_INTEL_AVS_MACH_SSM4567=m +# end of Intel AVS Machine drivers + +CONFIG_SND_SOC_INTEL_MACH=y +CONFIG_SND_SOC_INTEL_USER_FRIENDLY_LONG_NAMES=y +CONFIG_SND_SOC_INTEL_HDA_DSP_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_MAXIM_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_REALTEK_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_CIRRUS_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_NUVOTON_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_TI_COMMON=m +CONFIG_SND_SOC_INTEL_SOF_BOARD_HELPERS=m +CONFIG_SND_SOC_INTEL_HASWELL_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5650_MACH=m +CONFIG_SND_SOC_INTEL_BDW_RT5677_MACH=m +CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5651_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_WM5102_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_NAU8824_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_CX2072X_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_DA7213_MACH=m +CONFIG_SND_SOC_INTEL_BYT_CHT_ES8316_MACH=m +# CONFIG_SND_SOC_INTEL_BYT_CHT_NOCODEC_MACH is not set +CONFIG_SND_SOC_INTEL_SOF_WM8804_MACH=m +CONFIG_SND_SOC_INTEL_GLK_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH=m +CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH=m +CONFIG_SND_SOC_INTEL_SOF_CS42L42_MACH=m +CONFIG_SND_SOC_INTEL_SOF_PCM512x_MACH=m +CONFIG_SND_SOC_INTEL_SOF_ES8336_MACH=m +CONFIG_SND_SOC_INTEL_SOF_NAU8825_MACH=m +CONFIG_SND_SOC_INTEL_CML_LP_DA7219_MAX98357A_MACH=m +CONFIG_SND_SOC_INTEL_SOF_CML_RT1011_RT5682_MACH=m +CONFIG_SND_SOC_INTEL_SOF_DA7219_MACH=m +CONFIG_SND_SOC_INTEL_SOF_SSP_AMP_MACH=m +CONFIG_SND_SOC_INTEL_EHL_RT5660_MACH=m +CONFIG_SND_SOC_INTEL_SOUNDWIRE_SOF_MACH=m +# end of Intel + +# +# Mediatek +# +CONFIG_SND_SOC_MTK_BTCVSD=m +# end of Mediatek + +# +# PXA +# +# end of PXA + +# +# SoundWire (SDCA) +# +CONFIG_SND_SOC_SDCA=m +CONFIG_SND_SOC_SDCA_HID=y +CONFIG_SND_SOC_SDCA_IRQ=y +CONFIG_SND_SOC_SDCA_FDL=y +CONFIG_SND_SOC_SDCA_OPTIONAL=m +CONFIG_SND_SOC_SDCA_CLASS=m +CONFIG_SND_SOC_SDCA_CLASS_FUNCTION=m +# end of SoundWire (SDCA) + +# +# ST SPEAr +# +# end of ST SPEAr + +# +# Spreadtrum +# +# end of Spreadtrum + +# +# STMicroelectronics STM32 +# +# end of STMicroelectronics STM32 + +# +# Tegra +# +# end of Tegra + +# +# Xilinx +# +CONFIG_SND_SOC_XILINX_I2S=m +CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER=m +CONFIG_SND_SOC_XILINX_SPDIF=m +# end of Xilinx + +# +# Xtensa +# +CONFIG_SND_SOC_XTFPGA_I2S=m +# end of Xtensa + +CONFIG_SND_SOC_SOF_TOPLEVEL=y +CONFIG_SND_SOC_SOF_PCI_DEV=m +CONFIG_SND_SOC_SOF_PCI=m +CONFIG_SND_SOC_SOF_ACPI=m +CONFIG_SND_SOC_SOF_ACPI_DEV=m +CONFIG_SND_SOC_SOF_DEBUG_PROBES=m +CONFIG_SND_SOC_SOF_CLIENT=m +# CONFIG_SND_SOC_SOF_DEVELOPER_SUPPORT is not set +CONFIG_SND_SOC_SOF=m +CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y +CONFIG_SND_SOC_SOF_IPC3=y +CONFIG_SND_SOC_SOF_IPC4=y +CONFIG_SND_SOC_SOF_AMD_TOPLEVEL=m +CONFIG_SND_SOC_SOF_AMD_COMMON=m +CONFIG_SND_SOC_SOF_AMD_RENOIR=m +CONFIG_SND_SOC_SOF_AMD_VANGOGH=m +CONFIG_SND_SOC_SOF_AMD_REMBRANDT=m +CONFIG_SND_SOC_SOF_ACP_PROBES=m +CONFIG_SND_SOC_SOF_AMD_SOUNDWIRE_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_AMD_SOUNDWIRE=m +CONFIG_SND_SOC_SOF_AMD_ACP63=m +CONFIG_SND_SOC_SOF_AMD_ACP70=m +CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y +CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=m +CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP=m +CONFIG_SND_SOC_SOF_INTEL_COMMON=m +CONFIG_SND_SOC_SOF_BAYTRAIL=m +CONFIG_SND_SOC_SOF_BROADWELL=m +CONFIG_SND_SOC_SOF_MERRIFIELD=m +CONFIG_SND_SOC_SOF_INTEL_SKL=m +CONFIG_SND_SOC_SOF_SKYLAKE=m +CONFIG_SND_SOC_SOF_KABYLAKE=m +CONFIG_SND_SOC_SOF_INTEL_APL=m +CONFIG_SND_SOC_SOF_APOLLOLAKE=m +CONFIG_SND_SOC_SOF_GEMINILAKE=m +CONFIG_SND_SOC_SOF_INTEL_CNL=m +CONFIG_SND_SOC_SOF_CANNONLAKE=m +CONFIG_SND_SOC_SOF_COFFEELAKE=m +CONFIG_SND_SOC_SOF_COMETLAKE=m +CONFIG_SND_SOC_SOF_INTEL_ICL=m +CONFIG_SND_SOC_SOF_ICELAKE=m +CONFIG_SND_SOC_SOF_JASPERLAKE=m +CONFIG_SND_SOC_SOF_INTEL_TGL=m +CONFIG_SND_SOC_SOF_TIGERLAKE=m +CONFIG_SND_SOC_SOF_ELKHARTLAKE=m +CONFIG_SND_SOC_SOF_ALDERLAKE=m +CONFIG_SND_SOC_SOF_INTEL_MTL=m +CONFIG_SND_SOC_SOF_METEORLAKE=m +CONFIG_SND_SOC_SOF_INTEL_LNL=m +CONFIG_SND_SOC_SOF_LUNARLAKE=m +CONFIG_SND_SOC_SOF_INTEL_PTL=m +CONFIG_SND_SOC_SOF_PANTHERLAKE=m +CONFIG_SND_SOC_SOF_INTEL_NVL=m +CONFIG_SND_SOC_SOF_NOVALAKE=m +CONFIG_SND_SOC_SOF_HDA_COMMON=m +CONFIG_SND_SOC_SOF_HDA_GENERIC=m +CONFIG_SND_SOC_SOF_HDA_MLINK=m +CONFIG_SND_SOC_SOF_HDA_LINK=y +CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y +CONFIG_SND_SOF_SOF_HDA_SDW_BPT=m +CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_HDA=m +CONFIG_SND_SOC_SOF_HDA_PROBES=m +CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_INTEL_SOUNDWIRE=m +CONFIG_SND_SOC_SOF_XTENSA=m +CONFIG_SND_SOC_I2C_AND_SPI=m + +# +# CODEC drivers +# +CONFIG_SND_SOC_ARIZONA=m +CONFIG_SND_SOC_WM_ADSP=m +CONFIG_SND_SOC_AC97_CODEC=m +CONFIG_SND_SOC_ADAU_UTILS=m +CONFIG_SND_SOC_ADAU1372=m +CONFIG_SND_SOC_ADAU1372_I2C=m +CONFIG_SND_SOC_ADAU1372_SPI=m +CONFIG_SND_SOC_ADAU1373=m +CONFIG_SND_SOC_ADAU1701=m +CONFIG_SND_SOC_ADAU17X1=m +CONFIG_SND_SOC_ADAU1761=m +CONFIG_SND_SOC_ADAU1761_I2C=m +CONFIG_SND_SOC_ADAU1761_SPI=m +CONFIG_SND_SOC_ADAU7002=m +CONFIG_SND_SOC_ADAU7118=m +CONFIG_SND_SOC_ADAU7118_HW=m +CONFIG_SND_SOC_ADAU7118_I2C=m +CONFIG_SND_SOC_AK4104=m +CONFIG_SND_SOC_AK4118=m +CONFIG_SND_SOC_AK4375=m +CONFIG_SND_SOC_AK4458=m +CONFIG_SND_SOC_AK4554=m +CONFIG_SND_SOC_AK4613=m +CONFIG_SND_SOC_AK4619=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK5386=m +CONFIG_SND_SOC_AK5558=m +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_AUDIO_IIO_AUX=m +CONFIG_SND_SOC_AW8738=m +CONFIG_SND_SOC_AW88395_LIB=m +CONFIG_SND_SOC_AW88395=m +CONFIG_SND_SOC_AW88166=m +CONFIG_SND_SOC_AW88261=m +CONFIG_SND_SOC_AW88081=m +CONFIG_SND_SOC_AW87390=m +CONFIG_SND_SOC_AW88399=m +CONFIG_SND_SOC_BD28623=m +CONFIG_SND_SOC_BT_SCO=m +CONFIG_SND_SOC_CHV3_CODEC=m +CONFIG_SND_SOC_CROS_EC_CODEC=m +CONFIG_SND_SOC_CS_AMP_LIB=m +CONFIG_SND_SOC_CS35L32=m +CONFIG_SND_SOC_CS35L33=m +CONFIG_SND_SOC_CS35L34=m +CONFIG_SND_SOC_CS35L35=m +CONFIG_SND_SOC_CS35L36=m +CONFIG_SND_SOC_CS35L41_LIB=m +CONFIG_SND_SOC_CS35L41=m +CONFIG_SND_SOC_CS35L41_SPI=m +CONFIG_SND_SOC_CS35L41_I2C=m +CONFIG_SND_SOC_CS35L45=m +CONFIG_SND_SOC_CS35L45_SPI=m +CONFIG_SND_SOC_CS35L45_I2C=m +CONFIG_SND_SOC_CS35L56=m +CONFIG_SND_SOC_CS35L56_SHARED=m +CONFIG_SND_SOC_CS35L56_I2C=m +CONFIG_SND_SOC_CS35L56_SPI=m +CONFIG_SND_SOC_CS35L56_SDW=m + +# +# CS35L56 driver options +# +# CONFIG_SND_SOC_CS35L56_CAL_DEBUGFS is not set +# CONFIG_SND_SOC_CS35L56_CAL_SET_CTRL is not set +# end of CS35L56 driver options + +CONFIG_SND_SOC_CS40L50=m +CONFIG_SND_SOC_CS42L42_CORE=m +CONFIG_SND_SOC_CS42L42=m +CONFIG_SND_SOC_CS42L42_SDW=m +CONFIG_SND_SOC_CS42L43=m +CONFIG_SND_SOC_CS42L43_SDW=m +CONFIG_SND_SOC_CS42L51=m +CONFIG_SND_SOC_CS42L51_I2C=m +CONFIG_SND_SOC_CS42L52=m +CONFIG_SND_SOC_CS42L56=m +CONFIG_SND_SOC_CS42L73=m +CONFIG_SND_SOC_CS42L83=m +CONFIG_SND_SOC_CS42L84=m +CONFIG_SND_SOC_CS4234=m +CONFIG_SND_SOC_CS4265=m +CONFIG_SND_SOC_CS4270=m +CONFIG_SND_SOC_CS4271=m +CONFIG_SND_SOC_CS4271_I2C=m +CONFIG_SND_SOC_CS4271_SPI=m +CONFIG_SND_SOC_CS42XX8=m +CONFIG_SND_SOC_CS42XX8_I2C=m +CONFIG_SND_SOC_CS43130=m +CONFIG_SND_SOC_CS4341=m +CONFIG_SND_SOC_CS4349=m +CONFIG_SND_SOC_CS48L32=m +CONFIG_SND_SOC_CS53L30=m +CONFIG_SND_SOC_CS530X=m +CONFIG_SND_SOC_CS530X_I2C=m +CONFIG_SND_SOC_CS530X_SPI=m +CONFIG_SND_SOC_CX2072X=m +CONFIG_SND_SOC_DA7213=m +CONFIG_SND_SOC_DA7219=m +CONFIG_SND_SOC_DMIC=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_ES7134=m +CONFIG_SND_SOC_ES7241=m +CONFIG_SND_SOC_ES83XX_DSM_COMMON=m +CONFIG_SND_SOC_ES8311=m +CONFIG_SND_SOC_ES8316=m +CONFIG_SND_SOC_ES8323=m +CONFIG_SND_SOC_ES8326=m +CONFIG_SND_SOC_ES8328=m +CONFIG_SND_SOC_ES8328_I2C=m +CONFIG_SND_SOC_ES8328_SPI=m +CONFIG_SND_SOC_ES8375=m +CONFIG_SND_SOC_ES8389=m +CONFIG_SND_SOC_FS_AMP_LIB=m +CONFIG_SND_SOC_FS210X=m +CONFIG_SND_SOC_GTM601=m +CONFIG_SND_SOC_HDAC_HDA=m +CONFIG_SND_SOC_HDA=m +CONFIG_SND_SOC_ICS43432=m +CONFIG_SND_SOC_IDT821034=m +CONFIG_SND_SOC_MAX98088=m +CONFIG_SND_SOC_MAX98090=m +CONFIG_SND_SOC_MAX98357A=m +CONFIG_SND_SOC_MAX98504=m +CONFIG_SND_SOC_MAX9867=m +CONFIG_SND_SOC_MAX98927=m +CONFIG_SND_SOC_MAX98520=m +CONFIG_SND_SOC_MAX98363=m +CONFIG_SND_SOC_MAX98373=m +CONFIG_SND_SOC_MAX98373_I2C=m +CONFIG_SND_SOC_MAX98373_SDW=m +CONFIG_SND_SOC_MAX98388=m +CONFIG_SND_SOC_MAX98390=m +CONFIG_SND_SOC_MAX98396=m +CONFIG_SND_SOC_MAX9860=m +CONFIG_SND_SOC_MSM8916_WCD_ANALOG=m +CONFIG_SND_SOC_MSM8916_WCD_DIGITAL=m +CONFIG_SND_SOC_PCM1681=m +CONFIG_SND_SOC_PCM1754=m +CONFIG_SND_SOC_PCM1789=m +CONFIG_SND_SOC_PCM1789_I2C=m +CONFIG_SND_SOC_PCM179X=m +CONFIG_SND_SOC_PCM179X_I2C=m +CONFIG_SND_SOC_PCM179X_SPI=m +CONFIG_SND_SOC_PCM186X=m +CONFIG_SND_SOC_PCM186X_I2C=m +CONFIG_SND_SOC_PCM186X_SPI=m +CONFIG_SND_SOC_PCM3060=m +CONFIG_SND_SOC_PCM3060_I2C=m +CONFIG_SND_SOC_PCM3060_SPI=m +CONFIG_SND_SOC_PCM3168A=m +CONFIG_SND_SOC_PCM3168A_I2C=m +CONFIG_SND_SOC_PCM3168A_SPI=m +CONFIG_SND_SOC_PCM5102A=m +CONFIG_SND_SOC_PCM512x=m +CONFIG_SND_SOC_PCM512x_I2C=m +CONFIG_SND_SOC_PCM512x_SPI=m +CONFIG_SND_SOC_PCM6240=m +CONFIG_SND_SOC_PEB2466=m +CONFIG_SND_SOC_PM4125=m +CONFIG_SND_SOC_PM4125_SDW=m +CONFIG_SND_SOC_RL6231=m +CONFIG_SND_SOC_RT_SDW_COMMON=m +CONFIG_SND_SOC_RL6347A=m +CONFIG_SND_SOC_RT274=m +CONFIG_SND_SOC_RT286=m +CONFIG_SND_SOC_RT298=m +CONFIG_SND_SOC_RT1011=m +CONFIG_SND_SOC_RT1015=m +CONFIG_SND_SOC_RT1015P=m +CONFIG_SND_SOC_RT1017_SDCA_SDW=m +CONFIG_SND_SOC_RT1019=m +CONFIG_SND_SOC_RT1308=m +CONFIG_SND_SOC_RT1308_SDW=m +CONFIG_SND_SOC_RT1316_SDW=m +CONFIG_SND_SOC_RT1318_SDW=m +CONFIG_SND_SOC_RT1320_SDW=m +CONFIG_SND_SOC_RT5514=m +CONFIG_SND_SOC_RT5575=m +# CONFIG_SND_SOC_RT5575_SPI is not set +CONFIG_SND_SOC_RT5616=m +CONFIG_SND_SOC_RT5631=m +CONFIG_SND_SOC_RT5640=m +CONFIG_SND_SOC_RT5645=m +CONFIG_SND_SOC_RT5651=m +CONFIG_SND_SOC_RT5659=m +CONFIG_SND_SOC_RT5660=m +CONFIG_SND_SOC_RT5663=m +CONFIG_SND_SOC_RT5670=m +CONFIG_SND_SOC_RT5677=m +CONFIG_SND_SOC_RT5677_SPI=m +CONFIG_SND_SOC_RT5682=m +CONFIG_SND_SOC_RT5682_I2C=m +CONFIG_SND_SOC_RT5682_SDW=m +CONFIG_SND_SOC_RT5682S=m +CONFIG_SND_SOC_RT700=m +CONFIG_SND_SOC_RT700_SDW=m +CONFIG_SND_SOC_RT711=m +CONFIG_SND_SOC_RT711_SDW=m +CONFIG_SND_SOC_RT711_SDCA_SDW=m +CONFIG_SND_SOC_RT712_SDCA_SDW=m +CONFIG_SND_SOC_RT712_SDCA_DMIC_SDW=m +CONFIG_SND_SOC_RT721_SDCA_SDW=m +CONFIG_SND_SOC_RT722_SDCA_SDW=m +CONFIG_SND_SOC_RT715=m +CONFIG_SND_SOC_RT715_SDW=m +CONFIG_SND_SOC_RT715_SDCA_SDW=m +CONFIG_SND_SOC_RT9120=m +CONFIG_SND_SOC_RT9123=m +CONFIG_SND_SOC_RT9123P=m +CONFIG_SND_SOC_RTQ9124=m +CONFIG_SND_SOC_RTQ9128=m +CONFIG_SND_SOC_SDW_MOCKUP=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_SOC_SI476X=m +CONFIG_SND_SOC_SIGMADSP=m +CONFIG_SND_SOC_SIGMADSP_I2C=m +CONFIG_SND_SOC_SIGMADSP_REGMAP=m +CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m +CONFIG_SND_SOC_SIMPLE_MUX=m +CONFIG_SND_SOC_SMA1303=m +CONFIG_SND_SOC_SMA1307=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_SOC_SRC4XXX_I2C=m +CONFIG_SND_SOC_SRC4XXX=m +CONFIG_SND_SOC_SSM2305=m +CONFIG_SND_SOC_SSM2518=m +CONFIG_SND_SOC_SSM2602=m +CONFIG_SND_SOC_SSM2602_SPI=m +CONFIG_SND_SOC_SSM2602_I2C=m +CONFIG_SND_SOC_SSM4567=m +CONFIG_SND_SOC_STA32X=m +CONFIG_SND_SOC_STA350=m +CONFIG_SND_SOC_STI_SAS=m +CONFIG_SND_SOC_TAS2552=m +CONFIG_SND_SOC_TAS2562=m +CONFIG_SND_SOC_TAS2764=m +CONFIG_SND_SOC_TAS2770=m +CONFIG_SND_SOC_TAS2780=m +CONFIG_SND_SOC_TAS2781_COMLIB=m +CONFIG_SND_SOC_TAS2781_COMLIB_I2C=m +CONFIG_SND_SOC_TAS2781_FMWLIB=m +CONFIG_SND_SOC_TAS2781_I2C=m +CONFIG_SND_SOC_TAS2783_SDW=m +CONFIG_SND_SOC_TAS5086=m +CONFIG_SND_SOC_TAS571X=m +CONFIG_SND_SOC_TAS5720=m +CONFIG_SND_SOC_TAS5805M=m +CONFIG_SND_SOC_TAS6424=m +CONFIG_SND_SOC_TDA7419=m +CONFIG_SND_SOC_TFA9879=m +CONFIG_SND_SOC_TFA989X=m +CONFIG_SND_SOC_TLV320ADC3XXX=m +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC23_I2C=m +CONFIG_SND_SOC_TLV320AIC23_SPI=m +CONFIG_SND_SOC_TLV320AIC31XX=m +CONFIG_SND_SOC_TLV320AIC32X4=m +CONFIG_SND_SOC_TLV320AIC32X4_I2C=m +CONFIG_SND_SOC_TLV320AIC32X4_SPI=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TLV320AIC3X_I2C=m +CONFIG_SND_SOC_TLV320AIC3X_SPI=m +CONFIG_SND_SOC_TLV320ADCX140=m +CONFIG_SND_SOC_TS3A227E=m +CONFIG_SND_SOC_TSCS42XX=m +CONFIG_SND_SOC_TSCS454=m +CONFIG_SND_SOC_UDA1334=m +CONFIG_SND_SOC_UDA1342=m +CONFIG_SND_SOC_WCD_CLASSH=m +CONFIG_SND_SOC_WCD_COMMON=m +CONFIG_SND_SOC_WCD9335=m +CONFIG_SND_SOC_WCD_MBHC=m +CONFIG_SND_SOC_WCD934X=m +CONFIG_SND_SOC_WCD937X=m +CONFIG_SND_SOC_WCD937X_SDW=m +CONFIG_SND_SOC_WCD938X=m +CONFIG_SND_SOC_WCD938X_SDW=m +CONFIG_SND_SOC_WCD939X=m +CONFIG_SND_SOC_WCD939X_SDW=m +CONFIG_SND_SOC_WM5102=m +CONFIG_SND_SOC_WM8510=m +CONFIG_SND_SOC_WM8523=m +CONFIG_SND_SOC_WM8524=m +CONFIG_SND_SOC_WM8580=m +CONFIG_SND_SOC_WM8711=m +CONFIG_SND_SOC_WM8728=m +CONFIG_SND_SOC_WM8731=m +CONFIG_SND_SOC_WM8731_I2C=m +CONFIG_SND_SOC_WM8731_SPI=m +CONFIG_SND_SOC_WM8737=m +CONFIG_SND_SOC_WM8741=m +CONFIG_SND_SOC_WM8750=m +CONFIG_SND_SOC_WM8753=m +CONFIG_SND_SOC_WM8770=m +CONFIG_SND_SOC_WM8776=m +CONFIG_SND_SOC_WM8782=m +CONFIG_SND_SOC_WM8804=m +CONFIG_SND_SOC_WM8804_I2C=m +CONFIG_SND_SOC_WM8804_SPI=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8904=m +CONFIG_SND_SOC_WM8940=m +CONFIG_SND_SOC_WM8960=m +CONFIG_SND_SOC_WM8961=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8974=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_WM8985=m +CONFIG_SND_SOC_WM8998=m +CONFIG_SND_SOC_WSA881X=m +CONFIG_SND_SOC_WSA883X=m +CONFIG_SND_SOC_WSA884X=m +CONFIG_SND_SOC_ZL38060=m +CONFIG_SND_SOC_MAX9759=m +CONFIG_SND_SOC_MT6351=m +CONFIG_SND_SOC_MT6357=m +CONFIG_SND_SOC_MT6358=m +CONFIG_SND_SOC_MT6660=m +CONFIG_SND_SOC_NAU8315=m +CONFIG_SND_SOC_NAU8325=m +CONFIG_SND_SOC_NAU8540=m +CONFIG_SND_SOC_NAU8810=m +CONFIG_SND_SOC_NAU8821=m +CONFIG_SND_SOC_NAU8822=m +CONFIG_SND_SOC_NAU8824=m +CONFIG_SND_SOC_NAU8825=m +CONFIG_SND_SOC_NTPFW=m +CONFIG_SND_SOC_NTP8918=m +CONFIG_SND_SOC_NTP8835=m +CONFIG_SND_SOC_TPA6130A2=m +CONFIG_SND_SOC_LPASS_MACRO_COMMON=m +CONFIG_SND_SOC_LPASS_WSA_MACRO=m +CONFIG_SND_SOC_LPASS_VA_MACRO=m +CONFIG_SND_SOC_LPASS_RX_MACRO=m +CONFIG_SND_SOC_LPASS_TX_MACRO=m +# end of CODEC drivers + +CONFIG_SND_SOC_SDW_UTILS=m + +# +# Generic drivers +# +CONFIG_SND_SIMPLE_CARD_UTILS=m +CONFIG_SND_SIMPLE_CARD=m +# end of Generic drivers + +CONFIG_SND_X86=y +CONFIG_HDMI_LPE_AUDIO=m +CONFIG_SND_SYNTH_EMUX=m +CONFIG_SND_XEN_FRONTEND=m +CONFIG_SND_VIRTIO=m +CONFIG_AC97_BUS=m +CONFIG_HID_SUPPORT=y +CONFIG_HID=m +CONFIG_HID_BATTERY_STRENGTH=y +CONFIG_HIDRAW=y +CONFIG_UHID=m +CONFIG_HID_GENERIC=m +CONFIG_HID_HAPTIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=m +CONFIG_HID_ACCUTOUCH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=m +CONFIG_HID_APPLEIR=m +CONFIG_HID_APPLETB_BL=m +CONFIG_HID_APPLETB_KBD=m +CONFIG_HID_ASUS=m +CONFIG_HID_AUREAL=m +CONFIG_HID_BELKIN=m +CONFIG_HID_BETOP_FF=m +CONFIG_HID_BIGBEN_FF=m +CONFIG_HID_CHERRY=m +CONFIG_HID_CHICONY=m +CONFIG_HID_CORSAIR=m +CONFIG_HID_COUGAR=m +CONFIG_HID_MACALLY=m +CONFIG_HID_PRODIKEYS=m +CONFIG_HID_CMEDIA=m +CONFIG_HID_CP2112=m +CONFIG_HID_CREATIVE_SB0540=m +CONFIG_HID_CYPRESS=m +CONFIG_HID_DRAGONRISE=m +CONFIG_DRAGONRISE_FF=y +CONFIG_HID_EMS_FF=m +CONFIG_HID_ELAN=m +CONFIG_HID_ELECOM=m +CONFIG_HID_ELO=m +CONFIG_HID_EVISION=m +CONFIG_HID_EZKEY=m +CONFIG_HID_FT260=m +CONFIG_HID_GEMBIRD=m +CONFIG_HID_GFRM=m +CONFIG_HID_GLORIOUS=m +CONFIG_HID_HOLTEK=m +CONFIG_HOLTEK_FF=y +CONFIG_HID_VIVALDI_COMMON=m +CONFIG_HID_GOODIX_SPI=m +CONFIG_HID_GOOGLE_HAMMER=m +CONFIG_HID_GOOGLE_STADIA_FF=m +CONFIG_HID_VIVALDI=m +CONFIG_HID_GT683R=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_KYSONA=m +CONFIG_HID_UCLOGIC=m +CONFIG_HID_WALTOP=m +CONFIG_HID_VIEWSONIC=m +CONFIG_HID_VRC2=m +CONFIG_HID_XIAOMI=m +CONFIG_HID_GYRATION=m +CONFIG_HID_ICADE=m +CONFIG_HID_ITE=m +CONFIG_HID_JABRA=m +CONFIG_HID_TWINHAN=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_LCPOWER=m +CONFIG_HID_LED=m +CONFIG_HID_LENOVO=m +CONFIG_HID_LETSKETCH=m +CONFIG_HID_LOGITECH=m +CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m +CONFIG_LOGITECH_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGIG940_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_HID_MAGICMOUSE=m +CONFIG_HID_MALTRON=m +CONFIG_HID_MAYFLASH=m +CONFIG_HID_MEGAWORLD_FF=m +CONFIG_HID_REDRAGON=m +CONFIG_HID_MICROSOFT=m +CONFIG_HID_MONTEREY=m +CONFIG_HID_MULTITOUCH=m +CONFIG_HID_NINTENDO=m +CONFIG_NINTENDO_FF=y +CONFIG_HID_NTI=m +CONFIG_HID_NTRIG=m +CONFIG_HID_NVIDIA_SHIELD=m +CONFIG_NVIDIA_SHIELD_FF=y +CONFIG_HID_ORTEK=m +CONFIG_HID_PANTHERLORD=m +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PENMOUNT=m +CONFIG_HID_PETALYNX=m +CONFIG_HID_PICOLCD=m +CONFIG_HID_PICOLCD_FB=y +CONFIG_HID_PICOLCD_BACKLIGHT=y +CONFIG_HID_PICOLCD_LCD=y +CONFIG_HID_PICOLCD_LEDS=y +CONFIG_HID_PICOLCD_CIR=y +CONFIG_HID_PLANTRONICS=m +CONFIG_HID_PLAYSTATION=m +CONFIG_PLAYSTATION_FF=y +CONFIG_HID_PXRC=m +CONFIG_HID_RAPOO=m +CONFIG_HID_RAZER=m +CONFIG_HID_PRIMAX=m +CONFIG_HID_RETRODE=m +CONFIG_HID_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SEMITEK=m +CONFIG_HID_SIGMAMICRO=m +CONFIG_HID_SONY=m +CONFIG_SONY_FF=y +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_STEAM=m +CONFIG_STEAM_FF=y +CONFIG_HID_STEELSERIES=m +CONFIG_HID_SUNPLUS=m +CONFIG_HID_RMI=m +CONFIG_HID_GREENASIA=m +CONFIG_GREENASIA_FF=y +CONFIG_HID_HYPERV_MOUSE=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_SMARTJOYPLUS_FF=y +CONFIG_HID_TIVO=m +CONFIG_HID_TOPSEED=m +CONFIG_HID_TOPRE=m +CONFIG_HID_THINGM=m +CONFIG_HID_THRUSTMASTER=m +CONFIG_THRUSTMASTER_FF=y +CONFIG_HID_UDRAW_PS3=m +CONFIG_HID_U2FZERO=m +CONFIG_HID_UNIVERSAL_PIDFF=m +CONFIG_HID_WACOM=m +CONFIG_HID_WIIMOTE=m +CONFIG_HID_WINWING=m +CONFIG_HID_XINMO=m +CONFIG_HID_ZEROPLUS=m +CONFIG_ZEROPLUS_FF=y +CONFIG_HID_ZYDACRON=m +CONFIG_HID_SENSOR_HUB=m +CONFIG_HID_SENSOR_CUSTOM_SENSOR=m +CONFIG_HID_ALPS=m +CONFIG_HID_MCP2200=m +CONFIG_HID_MCP2221=m +# end of Special HID drivers + +# +# HID-BPF support +# +CONFIG_HID_BPF=y +# end of HID-BPF support + +CONFIG_I2C_HID=m +CONFIG_I2C_HID_ACPI=m +CONFIG_I2C_HID_OF=m +CONFIG_I2C_HID_CORE=m + +# +# Intel ISH HID support +# +CONFIG_INTEL_ISH_HID=m +CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER=m +# end of Intel ISH HID support + +# +# AMD SFH HID Support +# +CONFIG_AMD_SFH_HID=m +# end of AMD SFH HID Support + +# +# Surface System Aggregator Module HID support +# +CONFIG_SURFACE_HID=m +CONFIG_SURFACE_KBD=m +# end of Surface System Aggregator Module HID support + +CONFIG_SURFACE_HID_CORE=m + +# +# Intel THC HID Support +# +CONFIG_INTEL_THC_HID=m +CONFIG_INTEL_QUICKSPI=m +CONFIG_INTEL_QUICKI2C=m +# end of Intel THC HID Support + +# +# USB HID support +# +CONFIG_USB_HID=m +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y + +# +# USB HID Boot Protocol drivers +# +CONFIG_USB_KBD=m +CONFIG_USB_MOUSE=m +# end of USB HID Boot Protocol drivers +# end of USB HID support + +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_LED_TRIG=y +CONFIG_USB_ULPI_BUS=m +CONFIG_USB_CONN_GPIO=m +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_PCI=y +CONFIG_USB_PCI_AMD=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=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_PRODUCTLIST is not set +# CONFIG_USB_OTG_DISABLE_EXTERNAL_HUB is not set +CONFIG_USB_LEDS_TRIGGER_USBPORT=m +CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_DEFAULT_AUTHORIZATION_MODE=1 +CONFIG_USB_MON=m + +# +# USB Host Controller Drivers +# +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_DBGCAP=y +CONFIG_USB_XHCI_PCI=y +CONFIG_USB_XHCI_PCI_RENESAS=m +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XHCI_SIDEBAND=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_PCI=y +CONFIG_USB_EHCI_FSL=m +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_MAX3421_HCD=m +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +CONFIG_USB_SL811_CS=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +# CONFIG_USB_HCD_TEST_MODE is not set +CONFIG_USB_XEN_HCD=m + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m +CONFIG_USB_WDM=m +CONFIG_USB_TMC=m + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed; see USB_STORAGE Help for more info +# +CONFIG_USB_STORAGE=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_REALTEK_AUTOPM=y +CONFIG_USB_STORAGE_DATAFAB=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_UAS=m + +# +# USB Imaging devices +# +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USBIP_CORE=m +CONFIG_USBIP_VHCI_HCD=m +CONFIG_USBIP_VHCI_HC_PORTS=8 +CONFIG_USBIP_VHCI_NR_HCS=1 +CONFIG_USBIP_HOST=m +CONFIG_USBIP_VUDC=m +# CONFIG_USBIP_DEBUG is not set + +# +# USB dual-mode controller drivers +# +CONFIG_USB_CDNS_SUPPORT=m +CONFIG_USB_CDNS_HOST=y +CONFIG_USB_CDNS3=m +CONFIG_USB_CDNS3_GADGET=y +CONFIG_USB_CDNS3_HOST=y +CONFIG_USB_CDNS3_PCI_WRAP=m +CONFIG_USB_CDNSP_PCI=m +CONFIG_USB_CDNSP_GADGET=y +CONFIG_USB_CDNSP_HOST=y +CONFIG_USB_MUSB_HDRC=m +# CONFIG_USB_MUSB_HOST is not set +# CONFIG_USB_MUSB_GADGET is not set +CONFIG_USB_MUSB_DUAL_ROLE=y + +# +# Platform Glue Layer +# + +# +# MUSB DMA mode +# +CONFIG_MUSB_PIO_ONLY=y +CONFIG_USB_DWC3=m +CONFIG_USB_DWC3_ULPI=y +# CONFIG_USB_DWC3_HOST is not set +# CONFIG_USB_DWC3_GADGET is not set +CONFIG_USB_DWC3_DUAL_ROLE=y + +# +# Platform Glue Driver Support +# +CONFIG_USB_DWC3_PCI=m +CONFIG_USB_DWC3_HAPS=m +CONFIG_USB_DWC3_GOOGLE=m +CONFIG_USB_DWC2=y +CONFIG_USB_DWC2_HOST=y + +# +# Gadget/Dual-role mode requires USB Gadget support to be enabled +# +CONFIG_USB_DWC2_PCI=m +# CONFIG_USB_DWC2_DEBUG is not set +# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set +CONFIG_USB_CHIPIDEA=m +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_PCI=m +CONFIG_USB_CHIPIDEA_MSM=m +CONFIG_USB_CHIPIDEA_NPCM=m +CONFIG_USB_CHIPIDEA_GENERIC=m +CONFIG_USB_ISP1760=m +CONFIG_USB_ISP1760_HCD=y +CONFIG_USB_ISP1761_UDC=y +# CONFIG_USB_ISP1760_HOST_ROLE is not set +# CONFIG_USB_ISP1760_GADGET_ROLE is not set +CONFIG_USB_ISP1760_DUAL_ROLE=y + +# +# USB port drivers +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_SIMPLE=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_VISOR=m +CONFIG_USB_SERIAL_IPAQ=m +CONFIG_USB_SERIAL_IR=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_F8153X=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_IPW=m +CONFIG_USB_SERIAL_IUU=m +CONFIG_USB_SERIAL_KEYSPAN_PDA=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_KLSI=m +CONFIG_USB_SERIAL_KOBIL_SCT=m +CONFIG_USB_SERIAL_MCT_U232=m +CONFIG_USB_SERIAL_METRO=m +CONFIG_USB_SERIAL_MOS7720=m +CONFIG_USB_SERIAL_MOS7715_PARPORT=y +CONFIG_USB_SERIAL_MOS7840=m +CONFIG_USB_SERIAL_MXUPORT=m +CONFIG_USB_SERIAL_NAVMAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QCAUX=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SPCP8X5=m +CONFIG_USB_SERIAL_SAFE=m +# CONFIG_USB_SERIAL_SAFE_PADDED is not set +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_SYMBOL=m +CONFIG_USB_SERIAL_TI=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_SERIAL_OMNINET=m +CONFIG_USB_SERIAL_OPTICON=m +CONFIG_USB_SERIAL_XSENS_MT=m +CONFIG_USB_SERIAL_WISHBONE=m +CONFIG_USB_SERIAL_SSU100=m +CONFIG_USB_SERIAL_QT2=m +CONFIG_USB_SERIAL_UPD78F0730=m +CONFIG_USB_SERIAL_XR=m +CONFIG_USB_SERIAL_DEBUG=m + +# +# USB Miscellaneous drivers +# +CONFIG_USB_USS720=m +CONFIG_USB_EMI62=m +CONFIG_USB_EMI26=m +CONFIG_USB_ADUTUX=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LCD=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_APPLEDISPLAY=m +CONFIG_APPLE_MFI_FASTCHARGE=m +CONFIG_USB_LJCA=m +CONFIG_USB_USBIO=m +CONFIG_USB_SISUSBVGA=m +CONFIG_USB_LD=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_TEST=m +CONFIG_USB_EHSET_TEST_FIXTURE=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_YUREX=m +CONFIG_USB_EZUSB_FX2=m +CONFIG_USB_HUB_USB251XB=m +CONFIG_USB_HSIC_USB3503=m +CONFIG_USB_HSIC_USB4604=m +CONFIG_USB_LINK_LAYER_TEST=m +CONFIG_USB_CHAOSKEY=m +CONFIG_USB_ATM=m +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_CXACRU=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_XUSBATM=m + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +CONFIG_NOP_USB_XCEIV=m +CONFIG_USB_GPIO_VBUS=m +CONFIG_TAHVO_USB=m +CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y +CONFIG_USB_ISP1301=m +# end of USB Physical Layer drivers + +CONFIG_USB_GADGET=m +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_U_SERIAL_CONSOLE=y + +# +# USB Peripheral Controller +# +CONFIG_USB_GR_UDC=m +CONFIG_USB_R8A66597=m +CONFIG_USB_PXA27X=m +CONFIG_USB_SNP_CORE=m +# CONFIG_USB_M66592 is not set +CONFIG_USB_BDC_UDC=m +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_NET2280=m +CONFIG_USB_GOKU=m +CONFIG_USB_EG20T=m +CONFIG_USB_MAX3420_UDC=m +CONFIG_USB_CDNS2_UDC=m +# CONFIG_USB_DUMMY_HCD is not set +# end of USB Peripheral Controller + +CONFIG_USB_LIBCOMPOSITE=m +CONFIG_USB_F_ACM=m +CONFIG_USB_F_SS_LB=m +CONFIG_USB_U_SERIAL=m +CONFIG_USB_U_ETHER=m +CONFIG_USB_U_AUDIO=m +CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_OBEX=m +CONFIG_USB_F_NCM=m +CONFIG_USB_F_ECM=m +CONFIG_USB_F_PHONET=m +CONFIG_USB_F_EEM=m +CONFIG_USB_F_SUBSET=m +CONFIG_USB_F_RNDIS=m +CONFIG_USB_F_MASS_STORAGE=m +CONFIG_USB_F_FS=m +CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC1_LEGACY=m +CONFIG_USB_F_UAC2=m +CONFIG_USB_F_UVC=m +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_MIDI2=m +CONFIG_USB_F_HID=m +CONFIG_USB_F_PRINTER=m +CONFIG_USB_F_TCM=m +CONFIG_USB_CONFIGFS=m +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y +CONFIG_USB_CONFIGFS_OBEX=y +CONFIG_USB_CONFIGFS_NCM=y +CONFIG_USB_CONFIGFS_ECM=y +CONFIG_USB_CONFIGFS_ECM_SUBSET=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_USB_CONFIGFS_EEM=y +CONFIG_USB_CONFIGFS_PHONET=y +CONFIG_USB_CONFIGFS_MASS_STORAGE=y +CONFIG_USB_CONFIGFS_F_LB_SS=y +CONFIG_USB_CONFIGFS_F_FS=y +CONFIG_USB_CONFIGFS_F_UAC1=y +CONFIG_USB_CONFIGFS_F_UAC1_LEGACY=y +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +CONFIG_USB_CONFIGFS_F_MIDI2=y +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_F_PRINTER=y +CONFIG_USB_CONFIGFS_F_TCM=y + +# +# USB Gadget precomposed configurations +# +CONFIG_USB_ZERO=m +CONFIG_USB_AUDIO=m +CONFIG_GADGET_UAC1=y +# CONFIG_GADGET_UAC1_LEGACY is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_ETH_EEM=y +CONFIG_USB_G_NCM=m +CONFIG_USB_GADGETFS=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_GADGET_TARGET=m +CONFIG_USB_G_SERIAL=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_G_NOKIA=m +CONFIG_USB_G_ACM_MS=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_G_HID=m +CONFIG_USB_G_DBGP=m +# CONFIG_USB_G_DBGP_PRINTK is not set +CONFIG_USB_G_DBGP_SERIAL=y +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_RAW_GADGET=m +# end of USB Gadget precomposed configurations + +CONFIG_TYPEC=m +CONFIG_TYPEC_TCPM=m +CONFIG_TYPEC_TCPCI=m +CONFIG_TYPEC_RT1711H=m +CONFIG_TYPEC_MT6360=m +CONFIG_TYPEC_TCPCI_MT6370=m +CONFIG_TYPEC_TCPCI_MAXIM=m +CONFIG_TYPEC_FUSB302=m +CONFIG_TYPEC_WCOVE=m +CONFIG_TYPEC_UCSI=m +CONFIG_UCSI_CCG=m +CONFIG_UCSI_ACPI=m +CONFIG_UCSI_STM32G0=m +CONFIG_CROS_EC_UCSI=m +CONFIG_TYPEC_TPS6598X=m +CONFIG_TYPEC_ANX7411=m +CONFIG_TYPEC_RT1719=m +CONFIG_TYPEC_HD3SS3220=m +CONFIG_TYPEC_STUSB160X=m +CONFIG_TYPEC_WUSB3801=m + +# +# USB Type-C Multiplexer/DeMultiplexer Switch support +# +CONFIG_TYPEC_MUX_FSA4480=m +CONFIG_TYPEC_MUX_GPIO_SBU=m +CONFIG_TYPEC_MUX_PI3USB30532=m +CONFIG_TYPEC_MUX_INTEL_PMC=m +CONFIG_TYPEC_MUX_IT5205=m +CONFIG_TYPEC_MUX_NB7VPQ904M=m +CONFIG_TYPEC_MUX_PS883X=m +CONFIG_TYPEC_MUX_PTN36502=m +CONFIG_TYPEC_MUX_TUSB1046=m +CONFIG_TYPEC_MUX_WCD939X_USBSS=m +# end of USB Type-C Multiplexer/DeMultiplexer Switch support + +# +# USB Type-C Alternate Mode drivers +# +CONFIG_TYPEC_DP_ALTMODE=m +CONFIG_TYPEC_NVIDIA_ALTMODE=m +CONFIG_TYPEC_TBT_ALTMODE=m +# end of USB Type-C Alternate Mode drivers + +CONFIG_USB_ROLE_SWITCH=y +CONFIG_USB_ROLES_INTEL_XHCI=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_BLOCK_MINORS=8 +CONFIG_SDIO_UART=m +# CONFIG_MMC_TEST is not set +CONFIG_MMC_CRYPTO=y + +# +# MMC/SD/SDIO Host Controller Drivers +# +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_IO_ACCESSORS=y +CONFIG_MMC_SDHCI_UHS2=m +CONFIG_MMC_SDHCI_PCI=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_ACPI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMC_SDHCI_F_SDH30=m +CONFIG_MMC_WBSD=m +CONFIG_MMC_ALCOR=m +CONFIG_MMC_TIFM_SD=m +CONFIG_MMC_SPI=m +CONFIG_MMC_SDRICOH_CS=m +CONFIG_MMC_CB710=m +CONFIG_MMC_VIA_SDMMC=m +CONFIG_MMC_VUB300=m +CONFIG_MMC_USHC=m +CONFIG_MMC_USDHI6ROL0=m +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_REALTEK_USB=m +CONFIG_MMC_CQHCI=m +CONFIG_MMC_HSQ=m +CONFIG_MMC_TOSHIBA_PCI=m +CONFIG_MMC_MTK=m +CONFIG_MMC_SDHCI_XENON=m +CONFIG_SCSI_UFSHCD=m +CONFIG_SCSI_UFS_BSG=y +CONFIG_SCSI_UFS_CRYPTO=y +# CONFIG_SCSI_UFS_HWMON is not set +CONFIG_SCSI_UFSHCD_PCI=m +CONFIG_SCSI_UFS_DWC_TC_PCI=m +CONFIG_SCSI_UFSHCD_PLATFORM=m +CONFIG_SCSI_UFS_CDNS_PLATFORM=m +CONFIG_MEMSTICK=m +# CONFIG_MEMSTICK_DEBUG is not set + +# +# MemoryStick drivers +# +# CONFIG_MEMSTICK_UNSAFE_RESUME is not set +CONFIG_MSPRO_BLOCK=m +CONFIG_MS_BLOCK=m + +# +# MemoryStick Host Controller Drivers +# +CONFIG_MEMSTICK_TIFM_MS=m +CONFIG_MEMSTICK_JMICRON_38X=m +CONFIG_MEMSTICK_R592=m +CONFIG_MEMSTICK_REALTEK_USB=m +CONFIG_LEDS_EXPRESSWIRE=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_CLASS_FLASH=m +CONFIG_LEDS_CLASS_MULTICOLOR=m +CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y + +# +# LED drivers +# +CONFIG_LEDS_88PM860X=m +CONFIG_LEDS_AAEON=m +CONFIG_LEDS_APU=m +CONFIG_LEDS_OSRAM_AMS_AS3668=m +CONFIG_LEDS_AW200XX=m +CONFIG_LEDS_CHT_WCOVE=m +CONFIG_LEDS_CROS_EC=m +CONFIG_LEDS_LM3530=m +CONFIG_LEDS_LM3532=m +CONFIG_LEDS_LM3533=m +CONFIG_LEDS_LM3642=m +CONFIG_LEDS_MT6323=m +CONFIG_LEDS_PCA9532=m +CONFIG_LEDS_PCA9532_GPIO=y +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_LP3944=m +CONFIG_LEDS_LP3952=m +CONFIG_LEDS_LP50XX=m +CONFIG_LEDS_LP8788=m +CONFIG_LEDS_PCA955X=m +CONFIG_LEDS_PCA955X_GPIO=y +CONFIG_LEDS_PCA963X=m +CONFIG_LEDS_PCA995X=m +CONFIG_LEDS_QNAP_MCU=m +CONFIG_LEDS_WM831X_STATUS=m +CONFIG_LEDS_WM8350=m +CONFIG_LEDS_DA903X=m +CONFIG_LEDS_DA9052=m +CONFIG_LEDS_DAC124S085=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_BD2606MVV=m +CONFIG_LEDS_BD2802=m +CONFIG_LEDS_INTEL_SS4200=m +CONFIG_LEDS_LT3593=m +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_MAX5970=m +CONFIG_LEDS_MC13783=m +CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TLC591XX=m +CONFIG_LEDS_MAX77705=m +CONFIG_LEDS_MAX8997=m +CONFIG_LEDS_LM355x=m +CONFIG_LEDS_MENF21BMC=m +CONFIG_LEDS_IS31FL319X=m +CONFIG_LEDS_UPBOARD=m + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +CONFIG_LEDS_BLINKM=m +CONFIG_LEDS_BLINKM_MULTICOLOR=y +CONFIG_LEDS_MLXCPLD=m +CONFIG_LEDS_MLXREG=m +CONFIG_LEDS_USER=m +CONFIG_LEDS_NIC78BX=m +CONFIG_LEDS_SPI_BYTE=m +CONFIG_LEDS_TI_LMU_COMMON=m +CONFIG_LEDS_LM36274=m +CONFIG_LEDS_TPS6105X=m + +# +# Flash and Torch LED drivers +# +CONFIG_LEDS_AS3645A=m +CONFIG_LEDS_LM3601X=m +CONFIG_LEDS_MT6370_FLASH=m +CONFIG_LEDS_RT8515=m +CONFIG_LEDS_SGM3140=m + +# +# RGB LED drivers +# +CONFIG_LEDS_KTD202X=m +CONFIG_LEDS_LP5812=m +CONFIG_LEDS_PWM_MULTICOLOR=m +CONFIG_LEDS_MT6370_RGB=m + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=m +CONFIG_LEDS_TRIGGER_ONESHOT=m +CONFIG_LEDS_TRIGGER_DISK=y +CONFIG_LEDS_TRIGGER_MTD=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_CPU=y +CONFIG_LEDS_TRIGGER_ACTIVITY=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m + +# +# iptables trigger is under Netfilter config (LED target) +# +CONFIG_LEDS_TRIGGER_TRANSIENT=m +CONFIG_LEDS_TRIGGER_CAMERA=m +CONFIG_LEDS_TRIGGER_PANIC=y +CONFIG_LEDS_TRIGGER_NETDEV=m +CONFIG_LEDS_TRIGGER_PATTERN=m +CONFIG_LEDS_TRIGGER_TTY=m +CONFIG_LEDS_TRIGGER_INPUT_EVENTS=m + +# +# Simatic LED drivers +# +CONFIG_LEDS_SIEMENS_SIMATIC_IPC=m +CONFIG_LEDS_SIEMENS_SIMATIC_IPC_APOLLOLAKE=m +CONFIG_LEDS_SIEMENS_SIMATIC_IPC_F7188X=m +CONFIG_LEDS_SIEMENS_SIMATIC_IPC_ELKHARTLAKE=m +CONFIG_ACCESSIBILITY=y +# CONFIG_A11Y_BRAILLE_CONSOLE is not set + +# +# Speakup console speech +# +CONFIG_SPEAKUP=m +CONFIG_SPEAKUP_SYNTH_ACNTSA=m +CONFIG_SPEAKUP_SYNTH_APOLLO=m +CONFIG_SPEAKUP_SYNTH_AUDPTR=m +CONFIG_SPEAKUP_SYNTH_BNS=m +CONFIG_SPEAKUP_SYNTH_DECTLK=m +CONFIG_SPEAKUP_SYNTH_DECEXT=m +CONFIG_SPEAKUP_SYNTH_LTLK=m +CONFIG_SPEAKUP_SYNTH_SOFT=m +CONFIG_SPEAKUP_SYNTH_SPKOUT=m +CONFIG_SPEAKUP_SYNTH_TXPRT=m +CONFIG_SPEAKUP_SYNTH_DUMMY=m +# end of Speakup console speech + +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y +CONFIG_INFINIBAND_VIRT_DMA=y +CONFIG_INFINIBAND_BNXT_RE=m +CONFIG_INFINIBAND_BNG_RE=m +CONFIG_INFINIBAND_CXGB4=m +CONFIG_INFINIBAND_EFA=m +CONFIG_INFINIBAND_ERDMA=m +CONFIG_INFINIBAND_HFI1=m +# CONFIG_HFI1_DEBUG_SDMA_ORDER is not set +# CONFIG_SDMA_VERBOSITY is not set +CONFIG_INFINIBAND_IONIC=m +CONFIG_INFINIBAND_IRDMA=m +CONFIG_MANA_INFINIBAND=m +CONFIG_MLX4_INFINIBAND=m +CONFIG_MLX5_INFINIBAND=m +CONFIG_INFINIBAND_MTHCA=m +# CONFIG_INFINIBAND_MTHCA_DEBUG is not set +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QEDR=m +CONFIG_INFINIBAND_USNIC=m +CONFIG_INFINIBAND_VMWARE_PVRDMA=m +CONFIG_INFINIBAND_RDMAVT=m +CONFIG_RDMA_RXE=m +CONFIG_RDMA_SIW=m +CONFIG_INFINIBAND_IPOIB=m +CONFIG_INFINIBAND_IPOIB_CM=y +# CONFIG_INFINIBAND_IPOIB_DEBUG is not set +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_SRPT=m +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_ISERT=m +CONFIG_INFINIBAND_RTRS=m +CONFIG_INFINIBAND_RTRS_CLIENT=m +CONFIG_INFINIBAND_RTRS_SERVER=m +CONFIG_INFINIBAND_OPA_VNIC=m +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_EDAC=y +# CONFIG_EDAC_DEBUG is not set +CONFIG_EDAC_DECODE_MCE=m +CONFIG_EDAC_GHES=y +CONFIG_EDAC_SCRUB=y +CONFIG_EDAC_ECS=y +CONFIG_EDAC_MEM_REPAIR=y +CONFIG_EDAC_AMD64=m +CONFIG_EDAC_E752X=m +CONFIG_EDAC_I82975X=m +CONFIG_EDAC_I3000=m +CONFIG_EDAC_I3200=m +CONFIG_EDAC_IE31200=m +CONFIG_EDAC_X38=m +CONFIG_EDAC_I5400=m +CONFIG_EDAC_I7CORE=m +CONFIG_EDAC_I5100=m +CONFIG_EDAC_I7300=m +CONFIG_EDAC_SBRIDGE=m +CONFIG_EDAC_SKX=m +CONFIG_EDAC_I10NM=m +CONFIG_EDAC_IMH=m +CONFIG_EDAC_PND2=m +CONFIG_EDAC_IGEN6=m +CONFIG_RTC_LIB=y +CONFIG_RTC_MC146818_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +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_88PM860X=m +CONFIG_RTC_DRV_88PM80X=m +CONFIG_RTC_DRV_ABB5ZES3=m +CONFIG_RTC_DRV_ABEOZ9=m +CONFIG_RTC_DRV_ABX80X=m +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_DS1307_CENTURY=y +CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y +CONFIG_RTC_DRV_DS1672=m +CONFIG_RTC_DRV_LP8788=m +CONFIG_RTC_DRV_MAX6900=m +CONFIG_RTC_DRV_MAX8907=m +CONFIG_RTC_DRV_MAX8925=m +CONFIG_RTC_DRV_MAX8998=m +CONFIG_RTC_DRV_MAX8997=m +CONFIG_RTC_DRV_MAX31335=m +CONFIG_RTC_DRV_NCT6694=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_ISL1208=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_X1205=m +CONFIG_RTC_DRV_PCF8523=m +CONFIG_RTC_DRV_PCF85363=m +CONFIG_RTC_DRV_PCF8563=m +CONFIG_RTC_DRV_PCF8583=m +CONFIG_RTC_DRV_M41T80=m +CONFIG_RTC_DRV_M41T80_WDT=y +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_PALMAS=m +CONFIG_RTC_DRV_TPS6586X=m +CONFIG_RTC_DRV_TPS6594=m +CONFIG_RTC_DRV_TPS65910=m +CONFIG_RTC_DRV_RC5T583=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_RX8010=m +CONFIG_RTC_DRV_RX8111=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_RV3028=m +CONFIG_RTC_DRV_RV3032=m +CONFIG_RTC_DRV_RV8803=m +CONFIG_RTC_DRV_SD2405AL=m +CONFIG_RTC_DRV_SD3078=m + +# +# SPI RTC drivers +# +CONFIG_RTC_DRV_M41T93=m +CONFIG_RTC_DRV_M41T94=m +CONFIG_RTC_DRV_DS1302=m +CONFIG_RTC_DRV_DS1305=m +CONFIG_RTC_DRV_DS1343=m +CONFIG_RTC_DRV_DS1347=m +CONFIG_RTC_DRV_DS1390=m +CONFIG_RTC_DRV_MAX6916=m +CONFIG_RTC_DRV_R9701=m +CONFIG_RTC_DRV_RX4581=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_MAX6902=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_MCP795=m +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +CONFIG_RTC_DRV_DS3232=m +CONFIG_RTC_DRV_DS3232_HWMON=y +CONFIG_RTC_DRV_PCF2127=m +CONFIG_RTC_DRV_PCF85063=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RV3029_HWMON=y +CONFIG_RTC_DRV_RX6110=m + +# +# Platform RTC drivers +# +CONFIG_RTC_DRV_CMOS=y +CONFIG_RTC_DRV_DS1286=m +CONFIG_RTC_DRV_DS1511=m +CONFIG_RTC_DRV_DS1553=m +CONFIG_RTC_DRV_DS1685_FAMILY=m +CONFIG_RTC_DRV_DS1685=y +# CONFIG_RTC_DRV_DS1689 is not set +# CONFIG_RTC_DRV_DS17285 is not set +# CONFIG_RTC_DRV_DS17485 is not set +# CONFIG_RTC_DRV_DS17885 is not set +CONFIG_RTC_DRV_DS1742=m +CONFIG_RTC_DRV_DS2404=m +CONFIG_RTC_DRV_DA9052=m +CONFIG_RTC_DRV_DA9055=m +CONFIG_RTC_DRV_DA9063=m +CONFIG_RTC_DRV_STK17TA8=m +CONFIG_RTC_DRV_M48T86=m +CONFIG_RTC_DRV_M48T35=m +CONFIG_RTC_DRV_M48T59=m +CONFIG_RTC_DRV_MSM6242=m +CONFIG_RTC_DRV_RP5C01=m +CONFIG_RTC_DRV_WM831X=m +CONFIG_RTC_DRV_WM8350=m +CONFIG_RTC_DRV_CROS_EC=m + +# +# on-CPU RTC drivers +# +CONFIG_RTC_DRV_FTRTC010=m +CONFIG_RTC_DRV_PCAP=m +CONFIG_RTC_DRV_MC13XXX=m +CONFIG_RTC_DRV_MT6397=m +CONFIG_RTC_DRV_GOLDFISH=m +CONFIG_RTC_DRV_WILCO_EC=m + +# +# HID Sensor RTC drivers +# +CONFIG_RTC_DRV_HID_SENSOR_TIME=m +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=m +CONFIG_INTEL_IDMA64=m +CONFIG_INTEL_IDXD_BUS=m +CONFIG_INTEL_IDXD=m +# CONFIG_INTEL_IDXD_COMPAT is not set +CONFIG_INTEL_IDXD_SVM=y +CONFIG_INTEL_IDXD_PERFMON=y +CONFIG_INTEL_IOATDMA=m +CONFIG_PLX_DMA=m +CONFIG_XILINX_DMA=m +CONFIG_XILINX_XDMA=m +CONFIG_AMD_AE4DMA=m +CONFIG_AMD_PTDMA=m +CONFIG_AMD_QDMA=m +CONFIG_QCOM_HIDMA_MGMT=m +CONFIG_QCOM_HIDMA=m +CONFIG_DW_DMAC_CORE=m +CONFIG_DW_DMAC=m +CONFIG_DW_DMAC_PCI=m +CONFIG_DW_EDMA=m +CONFIG_DW_EDMA_PCIE=m +CONFIG_HSU_DMA=y +CONFIG_SF_PDMA=m +CONFIG_INTEL_LDMA=y + +# +# DMA Clients +# +CONFIG_ASYNC_TX_DMA=y +# CONFIG_DMATEST is not set +CONFIG_DMA_ENGINE_RAID=y + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +CONFIG_SW_SYNC=y +CONFIG_UDMABUF=y +CONFIG_DMABUF_MOVE_NOTIFY=y +# CONFIG_DMABUF_DEBUG is not set +# CONFIG_DMABUF_SELFTESTS is not set +CONFIG_DMABUF_HEAPS=y +CONFIG_DMABUF_HEAPS_SYSTEM=y +CONFIG_DMABUF_HEAPS_CMA=y +# end of DMABUF options + +CONFIG_DCA=m +CONFIG_UIO=m +CONFIG_UIO_CIF=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_DMEM_GENIRQ=m +CONFIG_UIO_AEC=m +CONFIG_UIO_SERCOS3=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_NETX=m +CONFIG_UIO_MF624=m +CONFIG_UIO_HV_GENERIC=m +CONFIG_UIO_DFL=m +CONFIG_UIO_PCI_GENERIC_SVA=m +CONFIG_VFIO=m +CONFIG_VFIO_DEVICE_CDEV=y +CONFIG_VFIO_GROUP=y +CONFIG_VFIO_CONTAINER=y +CONFIG_VFIO_IOMMU_TYPE1=m +CONFIG_VFIO_NOIOMMU=y +CONFIG_VFIO_VIRQFD=y +# CONFIG_VFIO_DEBUGFS is not set + +# +# VFIO support for PCI devices +# +CONFIG_VFIO_PCI_CORE=m +CONFIG_VFIO_PCI_INTX=y +CONFIG_VFIO_PCI=m +CONFIG_VFIO_PCI_VGA=y +CONFIG_VFIO_PCI_IGD=y +CONFIG_VFIO_PCI_DMABUF=y +CONFIG_MLX5_VFIO_PCI=m +CONFIG_PDS_VFIO_PCI=m +CONFIG_VIRTIO_VFIO_PCI=m +CONFIG_VIRTIO_VFIO_PCI_ADMIN_LEGACY=y +CONFIG_QAT_VFIO_PCI=m +CONFIG_XE_VFIO_PCI=m +# end of VFIO support for PCI devices + +CONFIG_VFIO_MDEV=m +CONFIG_IRQ_BYPASS_MANAGER=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VMGENID=m +CONFIG_VBOXGUEST=m +CONFIG_NITRO_ENCLAVES=m +CONFIG_ACRN_HSM=m +CONFIG_EFI_SECRET=m +CONFIG_SEV_GUEST=m +CONFIG_TDX_GUEST_DRIVER=m +CONFIG_TSM_GUEST=y +CONFIG_TSM_REPORTS=m +CONFIG_TSM_MEASUREMENTS=y +CONFIG_TSM=y +CONFIG_VIRTIO_ANCHOR=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI_LIB=y +CONFIG_VIRTIO_PCI_LIB_LEGACY=y +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_PCI_ADMIN_LEGACY=y +CONFIG_VIRTIO_PCI_LEGACY=y +CONFIG_VIRTIO_VDPA=m +CONFIG_VIRTIO_PMEM=m +CONFIG_VIRTIO_BALLOON=y +CONFIG_VIRTIO_MEM=m +CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MMIO=y +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTIO_DMA_SHARED_BUFFER=m +# CONFIG_VIRTIO_DEBUG is not set +CONFIG_VIRTIO_RTC=m +CONFIG_VIRTIO_RTC_PTP=y +CONFIG_VIRTIO_RTC_CLASS=y +CONFIG_VDPA=m +CONFIG_VDPA_SIM=m +CONFIG_VDPA_SIM_NET=m +CONFIG_VDPA_SIM_BLOCK=m +CONFIG_VDPA_USER=m +CONFIG_IFCVF=m +CONFIG_MLX5_VDPA=y +CONFIG_MLX5_VDPA_NET=m +# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set +CONFIG_VP_VDPA=m +CONFIG_ALIBABA_ENI_VDPA=m +CONFIG_SNET_VDPA=m +CONFIG_PDS_VDPA=m +CONFIG_OCTEONEP_VDPA=m +CONFIG_VHOST_IOTLB=m +CONFIG_VHOST_RING=m +CONFIG_VHOST_TASK=y +CONFIG_VHOST=m +CONFIG_VHOST_MENU=y +CONFIG_VHOST_NET=m +CONFIG_VHOST_SCSI=m +CONFIG_VHOST_VSOCK=m +CONFIG_VHOST_VDPA=m +# CONFIG_VHOST_CROSS_ENDIAN_LEGACY is not set +CONFIG_VHOST_ENABLE_FORK_OWNER_CONTROL=y + +# +# Microsoft Hyper-V guest support +# +CONFIG_HYPERV=y +# CONFIG_HYPERV_VTL_MODE is not set +CONFIG_HYPERV_TIMER=y +CONFIG_HYPERV_UTILS=m +CONFIG_HYPERV_BALLOON=m +CONFIG_HYPERV_VMBUS=m +CONFIG_MSHV_ROOT=m +# end of Microsoft Hyper-V guest support + +# +# Xen driver support +# +CONFIG_XEN_BALLOON=y +CONFIG_XEN_BALLOON_MEMORY_HOTPLUG=y +CONFIG_XEN_MEMORY_HOTPLUG_LIMIT=512 +CONFIG_XEN_SCRUB_PAGES_DEFAULT=y +CONFIG_XEN_DEV_EVTCHN=m +CONFIG_XEN_BACKEND=y +CONFIG_XENFS=m +CONFIG_XEN_COMPAT_XENFS=y +CONFIG_XEN_SYS_HYPERVISOR=y +CONFIG_XEN_XENBUS_FRONTEND=y +CONFIG_XEN_GNTDEV=m +CONFIG_XEN_GNTDEV_DMABUF=y +CONFIG_XEN_GRANT_DEV_ALLOC=m +CONFIG_XEN_GRANT_DMA_ALLOC=y +CONFIG_SWIOTLB_XEN=y +CONFIG_XEN_PCI_STUB=y +CONFIG_XEN_PCIDEV_BACKEND=m +CONFIG_XEN_PVCALLS_FRONTEND=m +# CONFIG_XEN_PVCALLS_BACKEND is not set +CONFIG_XEN_SCSI_BACKEND=m +CONFIG_XEN_PRIVCMD=m +CONFIG_XEN_PRIVCMD_EVENTFD=y +CONFIG_XEN_ACPI_PROCESSOR=y +CONFIG_XEN_MCE_LOG=y +CONFIG_XEN_HAVE_PVMMU=y +CONFIG_XEN_EFI=y +CONFIG_XEN_AUTO_XLATE=y +CONFIG_XEN_ACPI=y +CONFIG_XEN_SYMS=y +CONFIG_XEN_HAVE_VPMU=y +CONFIG_XEN_FRONT_PGDIR_SHBUF=m +CONFIG_XEN_UNPOPULATED_ALLOC=y +CONFIG_XEN_GRANT_DMA_OPS=y +CONFIG_XEN_VIRTIO=y +# CONFIG_XEN_VIRTIO_FORCE_GRANT is not set +# end of Xen driver support + +CONFIG_GREYBUS=m +CONFIG_GREYBUS_BEAGLEPLAY=m +CONFIG_GREYBUS_ES2=m +CONFIG_COMEDI=m +# CONFIG_COMEDI_DEBUG is not set +CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048 +CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480 +CONFIG_COMEDI_MISC_DRIVERS=y +CONFIG_COMEDI_BOND=m +CONFIG_COMEDI_TEST=m +CONFIG_COMEDI_PARPORT=m +CONFIG_COMEDI_ISA_DRIVERS=y +CONFIG_COMEDI_PCL711=m +CONFIG_COMEDI_PCL724=m +CONFIG_COMEDI_PCL726=m +CONFIG_COMEDI_PCL730=m +CONFIG_COMEDI_PCL812=m +CONFIG_COMEDI_PCL816=m +CONFIG_COMEDI_PCL818=m +CONFIG_COMEDI_PCM3724=m +CONFIG_COMEDI_AMPLC_DIO200_ISA=m +CONFIG_COMEDI_AMPLC_PC236_ISA=m +CONFIG_COMEDI_AMPLC_PC263_ISA=m +CONFIG_COMEDI_RTI800=m +CONFIG_COMEDI_RTI802=m +CONFIG_COMEDI_DAC02=m +CONFIG_COMEDI_DAS16M1=m +CONFIG_COMEDI_DAS08_ISA=m +CONFIG_COMEDI_DAS16=m +CONFIG_COMEDI_DAS800=m +CONFIG_COMEDI_DAS1800=m +CONFIG_COMEDI_DAS6402=m +CONFIG_COMEDI_DT2801=m +CONFIG_COMEDI_DT2811=m +CONFIG_COMEDI_DT2814=m +CONFIG_COMEDI_DT2815=m +CONFIG_COMEDI_DT2817=m +CONFIG_COMEDI_DT282X=m +CONFIG_COMEDI_DMM32AT=m +CONFIG_COMEDI_FL512=m +CONFIG_COMEDI_AIO_AIO12_8=m +CONFIG_COMEDI_AIO_IIRO_16=m +CONFIG_COMEDI_II_PCI20KC=m +CONFIG_COMEDI_C6XDIGIO=m +CONFIG_COMEDI_MPC624=m +CONFIG_COMEDI_ADQ12B=m +CONFIG_COMEDI_NI_AT_A2150=m +CONFIG_COMEDI_NI_AT_AO=m +CONFIG_COMEDI_NI_ATMIO=m +CONFIG_COMEDI_NI_ATMIO16D=m +CONFIG_COMEDI_NI_LABPC_ISA=m +CONFIG_COMEDI_PCMAD=m +CONFIG_COMEDI_PCMDA12=m +CONFIG_COMEDI_PCMMIO=m +CONFIG_COMEDI_PCMUIO=m +CONFIG_COMEDI_MULTIQ3=m +CONFIG_COMEDI_S526=m +CONFIG_COMEDI_PCI_DRIVERS=m +CONFIG_COMEDI_8255_PCI=m +CONFIG_COMEDI_ADDI_WATCHDOG=m +CONFIG_COMEDI_ADDI_APCI_1032=m +CONFIG_COMEDI_ADDI_APCI_1500=m +CONFIG_COMEDI_ADDI_APCI_1516=m +CONFIG_COMEDI_ADDI_APCI_1564=m +CONFIG_COMEDI_ADDI_APCI_16XX=m +CONFIG_COMEDI_ADDI_APCI_2032=m +CONFIG_COMEDI_ADDI_APCI_2200=m +CONFIG_COMEDI_ADDI_APCI_3120=m +CONFIG_COMEDI_ADDI_APCI_3501=m +CONFIG_COMEDI_ADDI_APCI_3XXX=m +CONFIG_COMEDI_ADL_PCI6208=m +CONFIG_COMEDI_ADL_PCI7250=m +CONFIG_COMEDI_ADL_PCI7X3X=m +CONFIG_COMEDI_ADL_PCI8164=m +CONFIG_COMEDI_ADL_PCI9111=m +CONFIG_COMEDI_ADL_PCI9118=m +CONFIG_COMEDI_ADV_PCI1710=m +CONFIG_COMEDI_ADV_PCI1720=m +CONFIG_COMEDI_ADV_PCI1723=m +CONFIG_COMEDI_ADV_PCI1724=m +CONFIG_COMEDI_ADV_PCI1760=m +CONFIG_COMEDI_ADV_PCI_DIO=m +CONFIG_COMEDI_AMPLC_DIO200_PCI=m +CONFIG_COMEDI_AMPLC_PC236_PCI=m +CONFIG_COMEDI_AMPLC_PC263_PCI=m +CONFIG_COMEDI_AMPLC_PCI224=m +CONFIG_COMEDI_AMPLC_PCI230=m +CONFIG_COMEDI_CONTEC_PCI_DIO=m +CONFIG_COMEDI_DAS08_PCI=m +CONFIG_COMEDI_DT3000=m +CONFIG_COMEDI_DYNA_PCI10XX=m +CONFIG_COMEDI_GSC_HPDI=m +CONFIG_COMEDI_MF6X4=m +CONFIG_COMEDI_ICP_MULTI=m +CONFIG_COMEDI_DAQBOARD2000=m +CONFIG_COMEDI_JR3_PCI=m +CONFIG_COMEDI_KE_COUNTER=m +CONFIG_COMEDI_CB_PCIDAS64=m +CONFIG_COMEDI_CB_PCIDAS=m +CONFIG_COMEDI_CB_PCIDDA=m +CONFIG_COMEDI_CB_PCIMDAS=m +CONFIG_COMEDI_CB_PCIMDDA=m +CONFIG_COMEDI_ME4000=m +CONFIG_COMEDI_ME_DAQ=m +CONFIG_COMEDI_NI_6527=m +CONFIG_COMEDI_NI_65XX=m +CONFIG_COMEDI_NI_660X=m +CONFIG_COMEDI_NI_670X=m +CONFIG_COMEDI_NI_LABPC_PCI=m +CONFIG_COMEDI_NI_PCIDIO=m +CONFIG_COMEDI_NI_PCIMIO=m +CONFIG_COMEDI_RTD520=m +CONFIG_COMEDI_S626=m +CONFIG_COMEDI_MITE=m +CONFIG_COMEDI_NI_TIOCMD=m +CONFIG_COMEDI_PCMCIA_DRIVERS=m +CONFIG_COMEDI_CB_DAS16_CS=m +CONFIG_COMEDI_DAS08_CS=m +CONFIG_COMEDI_NI_DAQ_700_CS=m +CONFIG_COMEDI_NI_DAQ_DIO24_CS=m +CONFIG_COMEDI_NI_LABPC_CS=m +CONFIG_COMEDI_NI_MIO_CS=m +CONFIG_COMEDI_QUATECH_DAQP_CS=m +CONFIG_COMEDI_USB_DRIVERS=m +CONFIG_COMEDI_DT9812=m +CONFIG_COMEDI_NI_USB6501=m +CONFIG_COMEDI_USBDUX=m +CONFIG_COMEDI_USBDUXFAST=m +CONFIG_COMEDI_USBDUXSIGMA=m +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMEDI_8254=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_8255_SA=m +CONFIG_COMEDI_KCOMEDILIB=m +CONFIG_COMEDI_AMPLC_DIO200=m +CONFIG_COMEDI_AMPLC_PC236=m +CONFIG_COMEDI_DAS08=m +CONFIG_COMEDI_ISADMA=m +CONFIG_COMEDI_NI_LABPC=m +CONFIG_COMEDI_NI_LABPC_ISADMA=m +CONFIG_COMEDI_NI_TIO=m +CONFIG_COMEDI_NI_ROUTING=m +CONFIG_COMEDI_TESTS=m +CONFIG_COMEDI_TESTS_EXAMPLE=m +CONFIG_COMEDI_TESTS_NI_ROUTES=m +# CONFIG_GPIB is not set +CONFIG_STAGING=y +CONFIG_RTL8723BS=m + +# +# IIO staging drivers +# + +# +# Accelerometers +# +CONFIG_ADIS16203=m +# end of Accelerometers + +# +# Analog to digital converters +# +CONFIG_AD7816=m +# end of Analog to digital converters + +# +# Analog digital bi-direction converters +# +CONFIG_ADT7316=m +CONFIG_ADT7316_SPI=m +CONFIG_ADT7316_I2C=m +# end of Analog digital bi-direction converters + +# +# Direct Digital Synthesis +# +CONFIG_AD9832=m +CONFIG_AD9834=m +# end of Direct Digital Synthesis + +# +# Network Analyzer, Impedance Converters +# +CONFIG_AD5933=m +# end of Network Analyzer, Impedance Converters +# end of IIO staging drivers + +CONFIG_FB_SM750=m +CONFIG_STAGING_MEDIA=y +# CONFIG_INTEL_ATOMISP is not set +CONFIG_DVB_AV7110_IR=y +CONFIG_DVB_AV7110=m +CONFIG_DVB_AV7110_OSD=y +CONFIG_DVB_SP8870=m +CONFIG_VIDEO_IPU3_IMGU=m +CONFIG_VIDEO_INTEL_IPU7=m + +# +# StarFive media platform drivers +# +# CONFIG_STAGING_MEDIA_DEPRECATED is not set +CONFIG_FB_TFT=m +CONFIG_FB_TFT_AGM1264K_FL=m +CONFIG_FB_TFT_BD663474=m +CONFIG_FB_TFT_HX8340BN=m +CONFIG_FB_TFT_HX8347D=m +CONFIG_FB_TFT_HX8353D=m +CONFIG_FB_TFT_HX8357D=m +CONFIG_FB_TFT_ILI9163=m +CONFIG_FB_TFT_ILI9320=m +CONFIG_FB_TFT_ILI9325=m +CONFIG_FB_TFT_ILI9340=m +CONFIG_FB_TFT_ILI9341=m +CONFIG_FB_TFT_ILI9481=m +CONFIG_FB_TFT_ILI9486=m +CONFIG_FB_TFT_PCD8544=m +CONFIG_FB_TFT_RA8875=m +CONFIG_FB_TFT_S6D02A1=m +CONFIG_FB_TFT_S6D1121=m +CONFIG_FB_TFT_SEPS525=m +CONFIG_FB_TFT_SH1106=m +CONFIG_FB_TFT_SSD1289=m +CONFIG_FB_TFT_SSD1305=m +CONFIG_FB_TFT_SSD1306=m +CONFIG_FB_TFT_SSD1331=m +CONFIG_FB_TFT_SSD1351=m +CONFIG_FB_TFT_ST7735R=m +CONFIG_FB_TFT_ST7789V=m +CONFIG_FB_TFT_TINYLCD=m +CONFIG_FB_TFT_TLS8204=m +CONFIG_FB_TFT_UC1611=m +CONFIG_FB_TFT_UC1701=m +CONFIG_FB_TFT_UPD161704=m +CONFIG_MOST_COMPONENTS=m +CONFIG_MOST_NET=m +CONFIG_MOST_VIDEO=m +CONFIG_GREYBUS_AUDIO=m +CONFIG_GREYBUS_AUDIO_APB_CODEC=m +CONFIG_GREYBUS_BOOTROM=m +CONFIG_GREYBUS_FIRMWARE=m +CONFIG_GREYBUS_HID=m +CONFIG_GREYBUS_LIGHT=m +CONFIG_GREYBUS_LOG=m +CONFIG_GREYBUS_LOOPBACK=m +CONFIG_GREYBUS_POWER=m +CONFIG_GREYBUS_RAW=m +CONFIG_GREYBUS_VIBRATOR=m +CONFIG_GREYBUS_BRIDGED_PHY=m +CONFIG_GREYBUS_GPIO=m +CONFIG_GREYBUS_I2C=m +CONFIG_GREYBUS_PWM=m +CONFIG_GREYBUS_SDIO=m +CONFIG_GREYBUS_SPI=m +CONFIG_GREYBUS_UART=m +CONFIG_GREYBUS_USB=m +CONFIG_VME_BUS=y + +# +# VME Bridge Drivers +# +CONFIG_VME_TSI148=m +CONFIG_VME_FAKE=m + +# +# VME Device Drivers +# +CONFIG_VME_USER=m +# CONFIG_GOLDFISH is not set +CONFIG_CHROME_PLATFORMS=y +CONFIG_CHROMEOS_ACPI=m +CONFIG_CHROMEOS_LAPTOP=m +CONFIG_CHROMEOS_PSTORE=m +CONFIG_CHROMEOS_TBMC=m +CONFIG_CROS_EC=m +CONFIG_CROS_EC_I2C=m +CONFIG_CROS_EC_ISHTP=m +CONFIG_CROS_EC_SPI=m +CONFIG_CROS_EC_UART=m +CONFIG_CROS_EC_LPC=m +CONFIG_CROS_EC_PROTO=m +CONFIG_CROS_KBD_LED_BACKLIGHT=m +CONFIG_CROS_EC_CHARDEV=m +CONFIG_CROS_EC_LIGHTBAR=m +CONFIG_CROS_EC_DEBUGFS=m +CONFIG_CROS_EC_SENSORHUB=m +CONFIG_CROS_EC_SYSFS=m +CONFIG_CROS_EC_TYPEC_ALTMODES=y +CONFIG_CROS_EC_TYPEC=m +CONFIG_CROS_HPS_I2C=m +CONFIG_CROS_USBPD_LOGGER=m +CONFIG_CROS_USBPD_NOTIFY=m +CONFIG_CHROMEOS_PRIVACY_SCREEN=m +CONFIG_CROS_TYPEC_SWITCH=m +CONFIG_WILCO_EC=m +CONFIG_WILCO_EC_DEBUGFS=m +CONFIG_WILCO_EC_EVENTS=m +CONFIG_WILCO_EC_TELEMETRY=m +CONFIG_MELLANOX_PLATFORM=y +CONFIG_MLX_PLATFORM=m +CONFIG_MLXREG_DPU=m +CONFIG_MLXREG_HOTPLUG=m +CONFIG_MLXREG_IO=m +CONFIG_MLXREG_LC=m +CONFIG_NVSW_SN2201=m +CONFIG_SURFACE_PLATFORMS=y +CONFIG_SURFACE3_WMI=m +CONFIG_SURFACE_3_POWER_OPREGION=m +CONFIG_SURFACE_ACPI_NOTIFY=m +CONFIG_SURFACE_AGGREGATOR_CDEV=m +CONFIG_SURFACE_AGGREGATOR_HUB=m +CONFIG_SURFACE_AGGREGATOR_REGISTRY=m +CONFIG_SURFACE_AGGREGATOR_TABLET_SWITCH=m +CONFIG_SURFACE_DTX=m +CONFIG_SURFACE_GPE=m +CONFIG_SURFACE_HOTPLUG=m +CONFIG_SURFACE_PLATFORM_PROFILE=m +CONFIG_SURFACE_PRO3_BUTTON=m +CONFIG_SURFACE_AGGREGATOR=m +CONFIG_SURFACE_AGGREGATOR_BUS=y +# CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION is not set +CONFIG_X86_PLATFORM_DEVICES=y +CONFIG_WMI_BMOF=m +CONFIG_HUAWEI_WMI=m +CONFIG_X86_PLATFORM_DRIVERS_UNIWILL=y +CONFIG_UNIWILL_LAPTOP=m +CONFIG_UV_SYSFS=m +CONFIG_MXM_WMI=m +CONFIG_NVIDIA_WMI_EC_BACKLIGHT=m +CONFIG_XIAOMI_WMI=m +CONFIG_REDMI_WMI=m +CONFIG_GIGABYTE_WMI=m +CONFIG_ACERHDF=m +CONFIG_ACER_WIRELESS=m +CONFIG_ACER_WMI=m +CONFIG_AMD_HSMP=m + +# +# AMD HSMP Driver +# +CONFIG_AMD_HSMP_ACPI=m +CONFIG_AMD_HSMP_PLAT=m +# end of AMD HSMP Driver + +CONFIG_AMD_PMF=m +CONFIG_AMD_PMF_DEBUG=y +CONFIG_AMD_PMC=m +CONFIG_AMD_MP2_STB=y +CONFIG_AMD_HFI=y +CONFIG_AMD_3D_VCACHE=m +CONFIG_AMD_WBRF=y +CONFIG_AMD_ISP_PLATFORM=m +CONFIG_ADV_SWBUTTON=m +CONFIG_APPLE_GMUX=m +CONFIG_ASUS_LAPTOP=m +CONFIG_ASUS_WIRELESS=m +CONFIG_ASUS_ARMOURY=m +CONFIG_ASUS_WMI=m +CONFIG_ASUS_WMI_DEPRECATED_ATTRS=y +CONFIG_ASUS_NB_WMI=m +CONFIG_ASUS_TF103C_DOCK=m +CONFIG_AYANEO_EC=m +CONFIG_MERAKI_MX100=m +CONFIG_EEEPC_LAPTOP=m +CONFIG_EEEPC_WMI=m +CONFIG_X86_PLATFORM_DRIVERS_DELL=y +CONFIG_ALIENWARE_WMI=m +CONFIG_ALIENWARE_WMI_LEGACY=y +CONFIG_ALIENWARE_WMI_WMAX=y +CONFIG_DCDBAS=m +CONFIG_DELL_LAPTOP=m +CONFIG_DELL_RBU=m +CONFIG_DELL_RBTN=m +CONFIG_DELL_PC=m +CONFIG_DELL_SMBIOS=m +CONFIG_DELL_SMBIOS_WMI=y +CONFIG_DELL_SMBIOS_SMM=y +CONFIG_DELL_SMO8800=m +CONFIG_DELL_UART_BACKLIGHT=m +CONFIG_DELL_WMI=m +CONFIG_DELL_WMI_PRIVACY=y +CONFIG_DELL_WMI_AIO=m +CONFIG_DELL_WMI_DESCRIPTOR=m +CONFIG_DELL_WMI_DDV=m +CONFIG_DELL_WMI_LED=m +CONFIG_DELL_WMI_SYSMAN=m +CONFIG_DELL_DW5826E_RESET=m +CONFIG_AMILO_RFKILL=m +CONFIG_FUJITSU_LAPTOP=m +CONFIG_FUJITSU_TABLET=m +CONFIG_GPD_POCKET_FAN=m +CONFIG_X86_PLATFORM_DRIVERS_HP=y +CONFIG_HP_ACCEL=m +CONFIG_HP_WMI=m +CONFIG_HP_BIOSCFG=m +CONFIG_WIRELESS_HOTKEY=m +CONFIG_IBM_RTL=m +CONFIG_SENSORS_HDAPS=m +CONFIG_INTEL_ATOMISP2_PDX86=y +CONFIG_INTEL_ATOMISP2_LED=m +CONFIG_INTEL_ATOMISP2_PM=m +CONFIG_INTEL_IFS=m +CONFIG_INTEL_SAR_INT1092=m +CONFIG_INTEL_SKL_INT3472=m +CONFIG_INTEL_PMC_CORE=m +CONFIG_INTEL_PMC_SSRAM_TELEMETRY=m +CONFIG_INTEL_PMT_CLASS=m +CONFIG_INTEL_PMT_TELEMETRY=m +CONFIG_INTEL_PMT_CRASHLOG=m +CONFIG_INTEL_PMT_DISCOVERY=m + +# +# Intel Speed Select Technology interface support +# +CONFIG_INTEL_SPEED_SELECT_TPMI=m +CONFIG_INTEL_SPEED_SELECT_INTERFACE=m +# end of Intel Speed Select Technology interface support + +CONFIG_INTEL_TELEMETRY=m +CONFIG_INTEL_WMI=y +CONFIG_INTEL_WMI_SBL_FW_UPDATE=m +CONFIG_INTEL_WMI_THUNDERBOLT=m + +# +# Intel Uncore Frequency Control +# +CONFIG_INTEL_UNCORE_FREQ_CONTROL_TPMI=m +CONFIG_INTEL_UNCORE_FREQ_CONTROL=m +# end of Intel Uncore Frequency Control + +CONFIG_INTEL_HID_EVENT=m +CONFIG_INTEL_VBTN=m +CONFIG_INTEL_EHL_PSE_IO=m +CONFIG_INTEL_INT0002_VGPIO=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_BXTWC_PMIC_TMU=m +CONFIG_INTEL_BYTCRC_PWRSRC=m +CONFIG_INTEL_CHTDC_TI_PWRBTN=m +CONFIG_INTEL_CHTWC_INT33FE=m +CONFIG_INTEL_ISHTP_ECLITE=m +CONFIG_INTEL_MRFLD_PWRBTN=m +CONFIG_INTEL_PUNIT_IPC=m +CONFIG_INTEL_RST=m +CONFIG_INTEL_SDSI=m +CONFIG_INTEL_SMARTCONNECT=m +CONFIG_INTEL_TPMI_POWER_DOMAINS=m +CONFIG_INTEL_TPMI=m +CONFIG_INTEL_PLR_TPMI=m +CONFIG_INTEL_TURBO_MAX_3=y +CONFIG_INTEL_VSEC=m +CONFIG_IDEAPAD_LAPTOP=m +CONFIG_LENOVO_WMI_HOTKEY_UTILITIES=m +CONFIG_LENOVO_WMI_CAMERA=m +CONFIG_LENOVO_YMC=m +CONFIG_THINKPAD_ACPI=m +CONFIG_THINKPAD_ACPI_ALSA_SUPPORT=y +CONFIG_THINKPAD_ACPI_DEBUGFACILITIES=y +# CONFIG_THINKPAD_ACPI_DEBUG is not set +# CONFIG_THINKPAD_ACPI_UNSAFE_LEDS is not set +CONFIG_THINKPAD_ACPI_VIDEO=y +CONFIG_THINKPAD_ACPI_HOTKEY_POLL=y +CONFIG_THINKPAD_LMI=m +CONFIG_YOGABOOK=m +CONFIG_YT2_1380=m +CONFIG_LENOVO_WMI_CAPDATA=m +CONFIG_LENOVO_WMI_EVENTS=m +CONFIG_LENOVO_WMI_HELPERS=m +CONFIG_LENOVO_WMI_GAMEZONE=m +CONFIG_LENOVO_WMI_TUNING=m +CONFIG_ACPI_QUICKSTART=m +CONFIG_MEEGOPAD_ANX7428=m +CONFIG_MSI_EC=m +CONFIG_MSI_LAPTOP=m +CONFIG_MSI_WMI=m +CONFIG_MSI_WMI_PLATFORM=m +CONFIG_PCENGINES_APU2=m +CONFIG_PORTWELL_EC=m +CONFIG_BARCO_P50_GPIO=m +CONFIG_SAMSUNG_GALAXYBOOK=m +CONFIG_SAMSUNG_LAPTOP=m +CONFIG_SAMSUNG_Q10=m +CONFIG_ACPI_TOSHIBA=m +CONFIG_TOSHIBA_BT_RFKILL=m +CONFIG_TOSHIBA_HAPS=m +# CONFIG_TOSHIBA_WMI is not set +CONFIG_ACPI_CMPC=m +CONFIG_COMPAL_LAPTOP=m +CONFIG_LG_LAPTOP=m +CONFIG_PANASONIC_LAPTOP=m +CONFIG_SONY_LAPTOP=m +CONFIG_SONYPI_COMPAT=y +CONFIG_SYSTEM76_ACPI=m +CONFIG_TOPSTAR_LAPTOP=m +CONFIG_SERIAL_MULTI_INSTANTIATE=m +CONFIG_TOUCHSCREEN_DMI=y +CONFIG_INSPUR_PLATFORM_PROFILE=m +CONFIG_DASHARO_ACPI=m +CONFIG_X86_ANDROID_TABLETS=m +CONFIG_FW_ATTR_CLASS=m +CONFIG_INTEL_IPS=m +CONFIG_INTEL_SCU_IPC=y +CONFIG_INTEL_SCU=y +CONFIG_INTEL_SCU_PCI=y +CONFIG_INTEL_SCU_PLATFORM=m +CONFIG_INTEL_SCU_IPC_UTIL=m +CONFIG_SIEMENS_SIMATIC_IPC=m +CONFIG_SIEMENS_SIMATIC_IPC_BATT=m +CONFIG_SIEMENS_SIMATIC_IPC_BATT_APOLLOLAKE=m +CONFIG_SIEMENS_SIMATIC_IPC_BATT_ELKHARTLAKE=m +CONFIG_SIEMENS_SIMATIC_IPC_BATT_F7188X=m +CONFIG_SILICOM_PLATFORM=m +CONFIG_WINMATE_FM07_KEYS=m +CONFIG_SEL3350_PLATFORM=m +CONFIG_OXP_EC=m +CONFIG_TUXEDO_NB04_WMI_AB=m +CONFIG_P2SB=y +CONFIG_ACPI_WMI=m +CONFIG_ACPI_WMI_LEGACY_DEVICE_NAMES=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y +CONFIG_COMMON_CLK_WM831X=m +CONFIG_LMK04832=m +CONFIG_COMMON_CLK_MAX9485=m +CONFIG_COMMON_CLK_SI5341=m +CONFIG_COMMON_CLK_SI5351=m +CONFIG_COMMON_CLK_SI544=m +CONFIG_COMMON_CLK_CDCE706=m +CONFIG_COMMON_CLK_TPS68470=m +CONFIG_COMMON_CLK_CS2000_CP=m +CONFIG_CLK_TWL=m +CONFIG_CLK_TWL6040=m +CONFIG_COMMON_CLK_PALMAS=m +CONFIG_COMMON_CLK_PWM=m +CONFIG_XILINX_VCU=m +CONFIG_HWSPINLOCK=y + +# +# 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=m +CONFIG_IOMMU_IOVA=y +CONFIG_IOMMU_API=y +CONFIG_IOMMUFD_DRIVER=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +# end of Generic IOMMU Pagetable Support + +# CONFIG_IOMMU_DEBUGFS is not set +# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set +CONFIG_IOMMU_DEFAULT_DMA_LAZY=y +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_IOMMU_DMA=y +CONFIG_IOMMU_SVA=y +CONFIG_IOMMU_IOPF=y +CONFIG_AMD_IOMMU=y +# CONFIG_AMD_IOMMU_IOMMUFD is not set +CONFIG_DMAR_TABLE=y +CONFIG_INTEL_IOMMU=y +CONFIG_INTEL_IOMMU_SVM=y +CONFIG_INTEL_IOMMU_DEFAULT_ON=y +CONFIG_INTEL_IOMMU_FLOPPY_WA=y +CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON=y +CONFIG_INTEL_IOMMU_PERF_EVENTS=y +CONFIG_IOMMUFD_DRIVER_CORE=y +CONFIG_IOMMUFD=m +CONFIG_IRQ_REMAP=y +CONFIG_HYPERV_IOMMU=y +CONFIG_VIRTIO_IOMMU=y +CONFIG_GENERIC_PT=y +# CONFIG_DEBUG_GENERIC_PT is not set +CONFIG_IOMMU_PT=y +CONFIG_IOMMU_PT_AMDV1=y +CONFIG_IOMMU_PT_VTDSS=y +CONFIG_IOMMU_PT_X86_64=y + +# +# Remoteproc drivers +# +CONFIG_REMOTEPROC=y +CONFIG_REMOTEPROC_CDEV=y +# end of Remoteproc drivers + +# +# Rpmsg drivers +# +CONFIG_RPMSG=m +CONFIG_RPMSG_CHAR=m +CONFIG_RPMSG_CTRL=m +CONFIG_RPMSG_NS=m +CONFIG_RPMSG_QCOM_GLINK=m +CONFIG_RPMSG_QCOM_GLINK_RPM=m +CONFIG_RPMSG_VIRTIO=m +# end of Rpmsg drivers + +CONFIG_SOUNDWIRE=m + +# +# SoundWire Devices +# +CONFIG_SOUNDWIRE_AMD=m +CONFIG_SOUNDWIRE_CADENCE=m +CONFIG_SOUNDWIRE_INTEL=m +CONFIG_SOUNDWIRE_QCOM=m +CONFIG_SOUNDWIRE_GENERIC_ALLOCATION=m + +# +# 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 + +# +# fujitsu SoC drivers +# +# end of fujitsu 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 + +CONFIG_WPCM450_SOC=m + +# +# Qualcomm SoC drivers +# +CONFIG_QCOM_MDT_LOADER=m +CONFIG_QCOM_PMIC_PDCHARGER_ULOG=m +CONFIG_QCOM_QMI_HELPERS=m +CONFIG_QCOM_PBS=m +# end of Qualcomm SoC drivers + +CONFIG_SOC_TI=y + +# +# Xilinx SoC drivers +# +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + +# +# PM Domains +# + +# +# Amlogic PM Domains +# +# end of Amlogic PM Domains + +# +# Broadcom PM Domains +# +# end of Broadcom PM Domains + +# +# i.MX PM Domains +# +# end of i.MX PM Domains + +# +# Qualcomm PM Domains +# +# end of Qualcomm PM Domains +# end of PM Domains + +CONFIG_PM_DEVFREQ=y + +# +# DEVFREQ Governors +# +CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y +CONFIG_DEVFREQ_GOV_PERFORMANCE=y +CONFIG_DEVFREQ_GOV_POWERSAVE=y +CONFIG_DEVFREQ_GOV_USERSPACE=y +CONFIG_DEVFREQ_GOV_PASSIVE=y + +# +# DEVFREQ Drivers +# +CONFIG_PM_DEVFREQ_EVENT=y +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +CONFIG_EXTCON_ADC_JACK=m +CONFIG_EXTCON_AXP288=m +CONFIG_EXTCON_FSA9480=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_INTEL_INT3496=m +CONFIG_EXTCON_INTEL_CHT_WC=m +CONFIG_EXTCON_INTEL_MRFLD=m +CONFIG_EXTCON_LC824206XA=m +CONFIG_EXTCON_MAX14577=m +CONFIG_EXTCON_MAX3355=m +CONFIG_EXTCON_MAX77693=m +CONFIG_EXTCON_MAX77843=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTCON_MAX14526=m +CONFIG_EXTCON_PALMAS=m +CONFIG_EXTCON_PTN5150=m +CONFIG_EXTCON_RT8973A=m +CONFIG_EXTCON_SM5502=m +CONFIG_EXTCON_USB_GPIO=m +CONFIG_EXTCON_USBC_CROS_EC=m +CONFIG_EXTCON_USBC_TUSB320=m +CONFIG_MEMORY=y +CONFIG_FPGA_DFL_EMIF=m +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +CONFIG_IIO_BUFFER_CB=m +CONFIG_IIO_BUFFER_DMA=m +CONFIG_IIO_BUFFER_DMAENGINE=m +CONFIG_IIO_BUFFER_HW_CONSUMER=m +CONFIG_IIO_KFIFO_BUF=m +CONFIG_IIO_TRIGGERED_BUFFER=m +CONFIG_IIO_CONFIGFS=m +CONFIG_IIO_GTS_HELPER=m +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_SW_DEVICE=m +CONFIG_IIO_SW_TRIGGER=m +CONFIG_IIO_TRIGGERED_EVENT=m +CONFIG_IIO_BACKEND=m + +# +# Accelerometers +# +CONFIG_ADIS16201=m +CONFIG_ADIS16209=m +CONFIG_ADXL313=m +CONFIG_ADXL313_I2C=m +CONFIG_ADXL313_SPI=m +CONFIG_ADXL345=m +CONFIG_ADXL345_I2C=m +CONFIG_ADXL345_SPI=m +CONFIG_ADXL355=m +CONFIG_ADXL355_I2C=m +CONFIG_ADXL355_SPI=m +CONFIG_ADXL367=m +CONFIG_ADXL367_SPI=m +CONFIG_ADXL367_I2C=m +CONFIG_ADXL372=m +CONFIG_ADXL372_SPI=m +CONFIG_ADXL372_I2C=m +CONFIG_ADXL380=m +CONFIG_ADXL380_SPI=m +CONFIG_ADXL380_I2C=m +CONFIG_BMA220=m +CONFIG_BMA220_I2C=m +CONFIG_BMA220_SPI=m +CONFIG_BMA400=m +CONFIG_BMA400_I2C=m +CONFIG_BMA400_SPI=m +CONFIG_BMC150_ACCEL=m +CONFIG_BMC150_ACCEL_I2C=m +CONFIG_BMC150_ACCEL_SPI=m +CONFIG_BMI088_ACCEL=m +CONFIG_BMI088_ACCEL_I2C=m +CONFIG_BMI088_ACCEL_SPI=m +CONFIG_DA280=m +CONFIG_DA311=m +CONFIG_DMARD06=m +CONFIG_DMARD09=m +CONFIG_DMARD10=m +CONFIG_FXLS8962AF=m +CONFIG_FXLS8962AF_I2C=m +CONFIG_FXLS8962AF_SPI=m +CONFIG_HID_SENSOR_ACCEL_3D=m +CONFIG_IIO_CROS_EC_ACCEL_LEGACY=m +CONFIG_IIO_ST_ACCEL_3AXIS=m +CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m +CONFIG_IIO_ST_ACCEL_SPI_3AXIS=m +CONFIG_IIO_KX022A=m +CONFIG_IIO_KX022A_SPI=m +CONFIG_IIO_KX022A_I2C=m +CONFIG_KXSD9=m +CONFIG_KXSD9_SPI=m +CONFIG_KXSD9_I2C=m +CONFIG_KXCJK1013=m +CONFIG_MC3230=m +CONFIG_MMA7455=m +CONFIG_MMA7455_I2C=m +CONFIG_MMA7455_SPI=m +CONFIG_MMA7660=m +CONFIG_MMA8452=m +CONFIG_MMA9551_CORE=m +CONFIG_MMA9551=m +CONFIG_MMA9553=m +CONFIG_MSA311=m +CONFIG_MXC4005=m +CONFIG_MXC6255=m +CONFIG_SCA3000=m +CONFIG_SCA3300=m +CONFIG_STK8312=m +CONFIG_STK8BA50=m +# end of Accelerometers + +# +# Analog to digital converters +# +CONFIG_IIO_ADC_HELPER=m +CONFIG_AD_SIGMA_DELTA=m +CONFIG_AD4000=m +CONFIG_AD4030=m +CONFIG_AD4062=m +CONFIG_AD4080=m +CONFIG_AD4130=m +CONFIG_AD4134=m +CONFIG_AD4170_4=m +CONFIG_AD4695=m +CONFIG_AD4851=m +CONFIG_AD7091R=m +CONFIG_AD7091R5=m +CONFIG_AD7091R8=m +CONFIG_AD7124=m +CONFIG_AD7173=m +CONFIG_AD7191=m +CONFIG_AD7192=m +CONFIG_AD7266=m +CONFIG_AD7280=m +CONFIG_AD7291=m +CONFIG_AD7292=m +CONFIG_AD7298=m +CONFIG_AD7380=m +CONFIG_AD7405=m +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7625=m +CONFIG_AD7766=m +CONFIG_AD7768_1=m +CONFIG_AD7779=m +CONFIG_AD7780=m +CONFIG_AD7791=m +CONFIG_AD7793=m +CONFIG_AD7887=m +CONFIG_AD7923=m +CONFIG_AD7944=m +CONFIG_AD7949=m +CONFIG_AD799X=m +CONFIG_AD9467=m +CONFIG_ADE9000=m +CONFIG_AXP20X_ADC=m +CONFIG_AXP288_ADC=m +CONFIG_CC10001_ADC=m +CONFIG_DA9150_GPADC=m +CONFIG_DLN2_ADC=m +CONFIG_ENVELOPE_DETECTOR=m +CONFIG_GEHC_PMC_ADC=m +CONFIG_HI8435=m +CONFIG_HX711=m +CONFIG_INA2XX_ADC=m +CONFIG_INTEL_DC_TI_ADC=m +CONFIG_INTEL_MRFLD_ADC=m +CONFIG_LP8788_ADC=m +CONFIG_LTC2309=m +CONFIG_LTC2471=m +CONFIG_LTC2485=m +CONFIG_LTC2496=m +CONFIG_LTC2497=m +CONFIG_MAX1027=m +CONFIG_MAX11100=m +CONFIG_MAX1118=m +CONFIG_MAX11205=m +CONFIG_MAX11410=m +CONFIG_MAX1241=m +CONFIG_MAX1363=m +CONFIG_MAX14001=m +CONFIG_MAX34408=m +CONFIG_MAX77541_ADC=m +CONFIG_MAX9611=m +CONFIG_MCP320X=m +CONFIG_MCP3422=m +CONFIG_MCP3564=m +CONFIG_MCP3911=m +CONFIG_MEDIATEK_MT6359_AUXADC=m +CONFIG_MEDIATEK_MT6360_ADC=m +CONFIG_MEDIATEK_MT6370_ADC=m +CONFIG_MEN_Z188_ADC=m +CONFIG_MP2629_ADC=m +CONFIG_NAU7802=m +CONFIG_NCT7201=m +CONFIG_PAC1921=m +CONFIG_PAC1934=m +CONFIG_PALMAS_GPADC=m +CONFIG_QCOM_VADC_COMMON=m +CONFIG_QCOM_SPMI_IADC=m +CONFIG_QCOM_SPMI_VADC=m +CONFIG_QCOM_SPMI_ADC5=m +CONFIG_ROHM_BD79112=m +CONFIG_ROHM_BD79124=m +CONFIG_RICHTEK_RTQ6056=m +CONFIG_SD_ADC_MODULATOR=m +CONFIG_TI_ADC081C=m +CONFIG_TI_ADC0832=m +CONFIG_TI_ADC084S021=m +CONFIG_TI_ADC108S102=m +CONFIG_TI_ADC12138=m +CONFIG_TI_ADC128S052=m +CONFIG_TI_ADC161S626=m +CONFIG_TI_ADS1015=m +CONFIG_TI_ADS1018=m +CONFIG_TI_ADS1100=m +CONFIG_TI_ADS1119=m +CONFIG_TI_ADS124S08=m +CONFIG_TI_ADS1298=m +CONFIG_TI_ADS131E08=m +CONFIG_TI_ADS131M02=m +CONFIG_TI_ADS7138=m +CONFIG_TI_ADS7924=m +CONFIG_TI_ADS7950=m +CONFIG_TI_ADS8344=m +CONFIG_TI_ADS8688=m +CONFIG_TI_LMP92064=m +CONFIG_TI_TLC4541=m +CONFIG_TI_TSC2046=m +CONFIG_TWL4030_MADC=m +CONFIG_TWL6030_GPADC=m +CONFIG_VF610_ADC=m +CONFIG_VIPERBOARD_ADC=m +CONFIG_XILINX_XADC=m +# end of Analog to digital converters + +# +# Analog to digital and digital to analog converters +# +CONFIG_AD74115=m +CONFIG_AD74413R=m +CONFIG_STX104=m +# end of Analog to digital and digital to analog converters + +# +# Analog Front Ends +# +CONFIG_IIO_RESCALE=m +# end of Analog Front Ends + +# +# Amplifiers +# +CONFIG_AD8366=m +CONFIG_ADA4250=m +CONFIG_ADL8113=m +CONFIG_HMC425=m +# end of Amplifiers + +# +# Capacitance to digital converters +# +CONFIG_AD7150=m +CONFIG_AD7746=m +# end of Capacitance to digital converters + +# +# Chemical Sensors +# +CONFIG_AOSONG_AGS02MA=m +CONFIG_ATLAS_PH_SENSOR=m +CONFIG_ATLAS_EZO_SENSOR=m +CONFIG_BME680=m +CONFIG_BME680_I2C=m +CONFIG_BME680_SPI=m +CONFIG_CCS811=m +CONFIG_ENS160=m +CONFIG_ENS160_I2C=m +CONFIG_ENS160_SPI=m +CONFIG_IAQCORE=m +CONFIG_MHZ19B=m +CONFIG_PMS7003=m +CONFIG_SCD30_CORE=m +CONFIG_SCD30_I2C=m +CONFIG_SCD30_SERIAL=m +CONFIG_SCD4X=m +CONFIG_SEN0322=m +CONFIG_SENSIRION_SGP30=m +CONFIG_SENSIRION_SGP40=m +CONFIG_SPS30=m +CONFIG_SPS30_I2C=m +CONFIG_SPS30_SERIAL=m +CONFIG_SENSEAIR_SUNRISE_CO2=m +CONFIG_VZ89X=m +# end of Chemical Sensors + +CONFIG_IIO_CROS_EC_SENSORS_CORE=m +CONFIG_IIO_CROS_EC_SENSORS=m +CONFIG_IIO_CROS_EC_SENSORS_LID_ANGLE=m +CONFIG_IIO_CROS_EC_ACTIVITY=m + +# +# Hid Sensor IIO Common +# +CONFIG_HID_SENSOR_IIO_COMMON=m +CONFIG_HID_SENSOR_IIO_TRIGGER=m +# end of Hid Sensor IIO Common + +CONFIG_IIO_INV_SENSORS_TIMESTAMP=m +CONFIG_IIO_MS_SENSORS_I2C=m + +# +# IIO SCMI Sensors +# +# end of IIO SCMI Sensors + +# +# SSP Sensor Common +# +CONFIG_IIO_SSP_SENSORS_COMMONS=m +CONFIG_IIO_SSP_SENSORHUB=m +# end of SSP Sensor Common + +CONFIG_IIO_ST_SENSORS_I2C=m +CONFIG_IIO_ST_SENSORS_SPI=m +CONFIG_IIO_ST_SENSORS_CORE=m + +# +# Digital to analog converters +# +CONFIG_AD3530R=m +CONFIG_AD3552R_HS=m +CONFIG_AD3552R_LIB=m +CONFIG_AD3552R=m +CONFIG_AD5064=m +CONFIG_AD5360=m +CONFIG_AD5380=m +CONFIG_AD5421=m +CONFIG_AD5446=m +CONFIG_AD5446_SPI=m +CONFIG_AD5446_I2C=m +CONFIG_AD5449=m +CONFIG_AD5592R_BASE=m +CONFIG_AD5592R=m +CONFIG_AD5593R=m +CONFIG_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD9739A=m +CONFIG_LTC2688=m +CONFIG_AD5686=m +CONFIG_AD5686_SPI=m +CONFIG_AD5696_I2C=m +CONFIG_AD5755=m +CONFIG_AD5758=m +CONFIG_AD5761=m +CONFIG_AD5764=m +CONFIG_AD5766=m +CONFIG_AD5770R=m +CONFIG_AD5791=m +CONFIG_AD7293=m +CONFIG_AD7303=m +CONFIG_AD8460=m +CONFIG_AD8801=m +CONFIG_BD79703=m +CONFIG_CIO_DAC=m +CONFIG_DPOT_DAC=m +CONFIG_DS4424=m +CONFIG_LTC1660=m +CONFIG_LTC2632=m +CONFIG_LTC2664=m +CONFIG_M62332=m +CONFIG_MAX517=m +CONFIG_MAX22007=m +CONFIG_MAX5522=m +CONFIG_MAX5821=m +CONFIG_MCP4725=m +CONFIG_MCP4728=m +CONFIG_MCP47FEB02=m +CONFIG_MCP4821=m +CONFIG_MCP4922=m +CONFIG_TI_DAC082S085=m +CONFIG_TI_DAC5571=m +CONFIG_TI_DAC7311=m +CONFIG_TI_DAC7612=m +CONFIG_VF610_DAC=m +# end of Digital to analog converters + +# +# IIO dummy driver +# +CONFIG_IIO_SIMPLE_DUMMY=m +# CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set +# CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set +# end of IIO dummy driver + +# +# Filters +# +CONFIG_ADMV8818=m +# end of Filters + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +CONFIG_AD9523=m +# end of Clock Generator/Distribution + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +CONFIG_ADF4350=m +CONFIG_ADF4371=m +CONFIG_ADF4377=m +CONFIG_ADMFM2000=m +CONFIG_ADMV1013=m +CONFIG_ADMV1014=m +CONFIG_ADMV4420=m +CONFIG_ADRF6780=m +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL + +# +# Digital gyroscope sensors +# +CONFIG_ADIS16080=m +CONFIG_ADIS16130=m +CONFIG_ADIS16136=m +CONFIG_ADIS16260=m +CONFIG_ADXRS290=m +CONFIG_ADXRS450=m +CONFIG_BMG160=m +CONFIG_BMG160_I2C=m +CONFIG_BMG160_SPI=m +CONFIG_FXAS21002C=m +CONFIG_FXAS21002C_I2C=m +CONFIG_FXAS21002C_SPI=m +CONFIG_HID_SENSOR_GYRO_3D=m +CONFIG_MPU3050=m +CONFIG_MPU3050_I2C=m +CONFIG_IIO_ST_GYRO_3AXIS=m +CONFIG_IIO_ST_GYRO_I2C_3AXIS=m +CONFIG_IIO_ST_GYRO_SPI_3AXIS=m +CONFIG_ITG3200=m +# end of Digital gyroscope sensors + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +CONFIG_AFE4403=m +CONFIG_AFE4404=m +CONFIG_MAX30100=m +CONFIG_MAX30102=m +# end of Heart Rate Monitors +# end of Health Sensors + +# +# Humidity sensors +# +CONFIG_AM2315=m +CONFIG_DHT11=m +CONFIG_ENS210=m +CONFIG_HDC100X=m +CONFIG_HDC2010=m +CONFIG_HDC3020=m +CONFIG_HID_SENSOR_HUMIDITY=m +CONFIG_HTS221=m +CONFIG_HTS221_I2C=m +CONFIG_HTS221_SPI=m +CONFIG_HTU21=m +CONFIG_SI7005=m +CONFIG_SI7020=m +# end of Humidity sensors + +# +# Inertial measurement units +# +CONFIG_ADIS16400=m +CONFIG_ADIS16460=m +CONFIG_ADIS16475=m +CONFIG_ADIS16480=m +CONFIG_ADIS16550=m +CONFIG_BMI160=m +CONFIG_BMI160_I2C=m +CONFIG_BMI160_SPI=m +CONFIG_BMI270=m +CONFIG_BMI270_I2C=m +CONFIG_BMI270_SPI=m +CONFIG_BMI323=m +CONFIG_BMI323_I2C=m +CONFIG_BMI323_SPI=m +CONFIG_BOSCH_BNO055=m +CONFIG_BOSCH_BNO055_SERIAL=m +CONFIG_BOSCH_BNO055_I2C=m +CONFIG_FXOS8700=m +CONFIG_FXOS8700_I2C=m +CONFIG_FXOS8700_SPI=m +CONFIG_KMX61=m +CONFIG_INV_ICM42600=m +CONFIG_INV_ICM42600_I2C=m +CONFIG_INV_ICM42600_SPI=m +CONFIG_INV_ICM45600=m +CONFIG_INV_ICM45600_I2C=m +CONFIG_INV_ICM45600_SPI=m +CONFIG_INV_ICM45600_I3C=m +CONFIG_INV_MPU6050_IIO=m +CONFIG_INV_MPU6050_I2C=m +CONFIG_INV_MPU6050_SPI=m +CONFIG_SMI240=m +CONFIG_SMI330=m +CONFIG_SMI330_I2C=m +CONFIG_SMI330_SPI=m +CONFIG_IIO_ST_LSM6DSX=m +CONFIG_IIO_ST_LSM6DSX_I2C=m +CONFIG_IIO_ST_LSM6DSX_SPI=m +CONFIG_IIO_ST_LSM6DSX_I3C=m +CONFIG_IIO_ST_LSM9DS0=m +CONFIG_IIO_ST_LSM9DS0_I2C=m +CONFIG_IIO_ST_LSM9DS0_SPI=m +# end of Inertial measurement units + +CONFIG_IIO_ADIS_LIB=m +CONFIG_IIO_ADIS_LIB_BUFFER=y + +# +# Light sensors +# +CONFIG_ACPI_ALS=m +CONFIG_ADJD_S311=m +CONFIG_ADUX1020=m +CONFIG_AL3000A=m +CONFIG_AL3010=m +CONFIG_AL3320A=m +CONFIG_APDS9160=m +CONFIG_APDS9300=m +CONFIG_APDS9306=m +CONFIG_APDS9960=m +CONFIG_AS73211=m +CONFIG_BH1745=m +CONFIG_BH1750=m +CONFIG_BH1780=m +CONFIG_CM32181=m +CONFIG_CM3232=m +CONFIG_CM3323=m +CONFIG_CM3605=m +CONFIG_CM36651=m +CONFIG_IIO_CROS_EC_LIGHT_PROX=m +CONFIG_GP2AP002=m +CONFIG_GP2AP020A00F=m +CONFIG_IQS621_ALS=m +CONFIG_SENSORS_ISL29018=m +CONFIG_SENSORS_ISL29028=m +CONFIG_ISL29125=m +CONFIG_ISL76682=m +CONFIG_HID_SENSOR_ALS=m +CONFIG_HID_SENSOR_PROX=m +CONFIG_JSA1212=m +CONFIG_ROHM_BU27034=m +CONFIG_RPR0521=m +CONFIG_SENSORS_LM3533=m +CONFIG_LTR390=m +CONFIG_LTR501=m +CONFIG_LTRF216A=m +CONFIG_LV0104CS=m +CONFIG_MAX44000=m +CONFIG_MAX44009=m +CONFIG_NOA1305=m +CONFIG_OPT3001=m +CONFIG_OPT4001=m +CONFIG_OPT4060=m +CONFIG_PA12203001=m +CONFIG_SI1133=m +CONFIG_SI1145=m +CONFIG_STK3310=m +CONFIG_ST_UVIS25=m +CONFIG_ST_UVIS25_I2C=m +CONFIG_ST_UVIS25_SPI=m +CONFIG_TCS3414=m +CONFIG_TCS3472=m +CONFIG_SENSORS_TSL2563=m +CONFIG_TSL2583=m +CONFIG_TSL2591=m +CONFIG_TSL2772=m +CONFIG_TSL4531=m +CONFIG_US5182D=m +CONFIG_VCNL4000=m +CONFIG_VCNL4035=m +CONFIG_VEML3235=m +CONFIG_VEML6030=m +CONFIG_VEML6040=m +CONFIG_VEML6046X00=m +CONFIG_VEML6070=m +CONFIG_VEML6075=m +CONFIG_VL6180=m +CONFIG_ZOPT2201=m +# end of Light sensors + +# +# Magnetometer sensors +# +CONFIG_AK8974=m +CONFIG_AK8975=m +CONFIG_AK09911=m +CONFIG_ALS31300=m +CONFIG_BMC150_MAGN=m +CONFIG_BMC150_MAGN_I2C=m +CONFIG_BMC150_MAGN_SPI=m +CONFIG_MAG3110=m +CONFIG_HID_SENSOR_MAGNETOMETER_3D=m +CONFIG_MMC35240=m +CONFIG_MMC5633=m +CONFIG_IIO_ST_MAGN_3AXIS=m +CONFIG_IIO_ST_MAGN_I2C_3AXIS=m +CONFIG_IIO_ST_MAGN_SPI_3AXIS=m +CONFIG_INFINEON_TLV493D=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_HMC5843_I2C=m +CONFIG_SENSORS_HMC5843_SPI=m +CONFIG_SENSORS_RM3100=m +CONFIG_SENSORS_RM3100_I2C=m +CONFIG_SENSORS_RM3100_SPI=m +CONFIG_SI7210=m +CONFIG_TI_TMAG5273=m +CONFIG_YAMAHA_YAS530=m +# end of Magnetometer sensors + +# +# Multiplexers +# +CONFIG_IIO_MUX=m +# end of Multiplexers + +# +# Inclinometer sensors +# +CONFIG_HID_SENSOR_INCLINOMETER_3D=m +CONFIG_HID_SENSOR_DEVICE_ROTATION=m +# end of Inclinometer sensors + +# +# Triggers - standalone +# +CONFIG_IIO_HRTIMER_TRIGGER=m +CONFIG_IIO_INTERRUPT_TRIGGER=m +CONFIG_IIO_TIGHTLOOP_TRIGGER=m +CONFIG_IIO_SYSFS_TRIGGER=m +# end of Triggers - standalone + +# +# Linear and angular position sensors +# +CONFIG_IQS624_POS=m +CONFIG_HID_SENSOR_CUSTOM_INTEL_HINGE=m +# end of Linear and angular position sensors + +# +# Digital potentiometers +# +CONFIG_AD5110=m +CONFIG_AD5272=m +CONFIG_DS1803=m +CONFIG_MAX5432=m +CONFIG_MAX5481=m +CONFIG_MAX5487=m +CONFIG_MCP4018=m +CONFIG_MCP4131=m +CONFIG_MCP4531=m +CONFIG_MCP41010=m +CONFIG_TPL0102=m +CONFIG_X9250=m +# end of Digital potentiometers + +# +# Digital potentiostats +# +CONFIG_LMP91000=m +# end of Digital potentiostats + +# +# Pressure sensors +# +CONFIG_ABP060MG=m +CONFIG_ABP2030PA=m +CONFIG_ABP2030PA_I2C=m +CONFIG_ABP2030PA_SPI=m +CONFIG_ROHM_BM1390=m +CONFIG_BMP280=m +CONFIG_BMP280_I2C=m +CONFIG_BMP280_SPI=m +CONFIG_IIO_CROS_EC_BARO=m +CONFIG_DLHL60D=m +CONFIG_DPS310=m +CONFIG_HID_SENSOR_PRESS=m +CONFIG_HP03=m +CONFIG_HSC030PA=m +CONFIG_HSC030PA_I2C=m +CONFIG_HSC030PA_SPI=m +CONFIG_ICP10100=m +CONFIG_MPL115=m +CONFIG_MPL115_I2C=m +CONFIG_MPL115_SPI=m +CONFIG_MPL3115=m +CONFIG_MPRLS0025PA=m +CONFIG_MPRLS0025PA_I2C=m +CONFIG_MPRLS0025PA_SPI=m +CONFIG_MS5611=m +CONFIG_MS5611_I2C=m +CONFIG_MS5611_SPI=m +CONFIG_MS5637=m +CONFIG_SDP500=m +CONFIG_IIO_ST_PRESS=m +CONFIG_IIO_ST_PRESS_I2C=m +CONFIG_IIO_ST_PRESS_SPI=m +CONFIG_T5403=m +CONFIG_HP206C=m +CONFIG_ZPA2326=m +CONFIG_ZPA2326_I2C=m +CONFIG_ZPA2326_SPI=m +CONFIG_ADP810=m +# end of Pressure sensors + +# +# Lightning sensors +# +CONFIG_AS3935=m +# end of Lightning sensors + +# +# Proximity and distance sensors +# +CONFIG_CROS_EC_MKBP_PROXIMITY=m +CONFIG_D3323AA=m +CONFIG_HX9023S=m +CONFIG_IRSD200=m +CONFIG_ISL29501=m +CONFIG_LIDAR_LITE_V2=m +CONFIG_MB1232=m +CONFIG_PING=m +CONFIG_RFD77402=m +CONFIG_SRF04=m +CONFIG_SX_COMMON=m +CONFIG_SX9310=m +CONFIG_SX9324=m +CONFIG_SX9360=m +CONFIG_SX9500=m +CONFIG_SRF08=m +CONFIG_VCNL3020=m +CONFIG_VL53L0X_I2C=m +CONFIG_AW96103=m +# end of Proximity and distance sensors + +# +# Resolver to digital converters +# +CONFIG_AD2S90=m +CONFIG_AD2S1200=m +CONFIG_AD2S1210=m +# end of Resolver to digital converters + +# +# Temperature sensors +# +CONFIG_IQS620AT_TEMP=m +CONFIG_LTC2983=m +CONFIG_MAXIM_THERMOCOUPLE=m +CONFIG_HID_SENSOR_TEMP=m +CONFIG_MLX90614=m +CONFIG_MLX90632=m +CONFIG_MLX90635=m +CONFIG_TMP006=m +CONFIG_TMP007=m +CONFIG_TMP117=m +CONFIG_TSYS01=m +CONFIG_TSYS02D=m +CONFIG_MAX30208=m +CONFIG_MAX31856=m +CONFIG_MAX31865=m +CONFIG_MCP9600=m +# end of Temperature sensors + +CONFIG_NTB=m +CONFIG_NTB_MSI=y +# CONFIG_NTB_AMD is not set +CONFIG_NTB_IDT=m +CONFIG_NTB_INTEL=m +CONFIG_NTB_EPF=m +CONFIG_NTB_SWITCHTEC=m +CONFIG_NTB_PINGPONG=m +CONFIG_NTB_TOOL=m +CONFIG_NTB_PERF=m +# CONFIG_NTB_MSI_TEST is not set +CONFIG_NTB_TRANSPORT=m +CONFIG_PWM=y +# CONFIG_PWM_DEBUG is not set +CONFIG_PWM_PROVIDE_GPIO=y +CONFIG_PWM_CLK=m +CONFIG_PWM_CRC=y +CONFIG_PWM_CROS_EC=m +CONFIG_PWM_DWC_CORE=m +CONFIG_PWM_DWC=m +CONFIG_PWM_GPIO=m +CONFIG_PWM_IQS620A=m +CONFIG_PWM_LP3943=m +CONFIG_PWM_LPSS=y +CONFIG_PWM_LPSS_PCI=y +CONFIG_PWM_LPSS_PLATFORM=y +CONFIG_PWM_MAX7360=m +CONFIG_PWM_PCA9685=m +CONFIG_PWM_TWL=m +CONFIG_PWM_TWL_LED=m + +# +# IRQ chip support +# +CONFIG_IRQ_MSI_LIB=y +CONFIG_MADERA_IRQ=m +# end of IRQ chip support + +CONFIG_IPACK_BUS=m +CONFIG_BOARD_TPCI200=m +CONFIG_SERIAL_IPOCTAL=m +CONFIG_RESET_CONTROLLER=y +CONFIG_RESET_GPIO=m +CONFIG_RESET_SIMPLE=y +CONFIG_RESET_TI_SYSCON=m +CONFIG_RESET_TI_TPS380X=m + +# +# PHY Subsystem +# +CONFIG_PHY_COMMON_PROPS=y +CONFIG_GENERIC_PHY=y +CONFIG_GENERIC_PHY_MIPI_DPHY=y +CONFIG_PHY_GOOGLE_USB=m +CONFIG_USB_LGM_PHY=m +CONFIG_PHY_CAN_TRANSCEIVER=m + +# +# PHY drivers for Broadcom platforms +# +CONFIG_BCM_KONA_USB2_PHY=m +# end of PHY drivers for Broadcom platforms + +CONFIG_PHY_PXA_28NM_HSIC=m +CONFIG_PHY_PXA_28NM_USB2=m +CONFIG_PHY_CPCAP_USB=m +CONFIG_PHY_QCOM_USB_HS=m +CONFIG_PHY_QCOM_USB_HSIC=m +CONFIG_PHY_SAMSUNG_USB2=m +CONFIG_PHY_TUSB1210=m +CONFIG_PHY_INTEL_LGM_EMMC=m +# end of PHY Subsystem + +CONFIG_POWERCAP=y +CONFIG_INTEL_RAPL_CORE=m +CONFIG_INTEL_RAPL=m +CONFIG_INTEL_RAPL_TPMI=m +CONFIG_IDLE_INJECT=y +CONFIG_MCB=m +CONFIG_MCB_PCI=m +CONFIG_MCB_LPC=m + +# +# Performance monitor support +# +CONFIG_DWC_PCIE_PMU=m +CONFIG_CXL_PMU=m +# end of Performance monitor support + +CONFIG_RAS=y +CONFIG_RAS_CEC=y +# CONFIG_RAS_CEC_DEBUG is not set +CONFIG_AMD_ATL=m +CONFIG_AMD_ATL_PRM=y +CONFIG_RAS_FMPM=m +CONFIG_USB4=m +# CONFIG_USB4_DEBUGFS_WRITE is not set +# CONFIG_USB4_DMA_TEST is not set + +# +# Android +# +CONFIG_ANDROID_BINDER_IPC=m +# CONFIG_ANDROID_BINDER_IPC_RUST is not set +CONFIG_ANDROID_BINDERFS=m +CONFIG_ANDROID_BINDER_DEVICES="" +# end of Android + +CONFIG_LIBNVDIMM=y +CONFIG_BLK_DEV_PMEM=m +CONFIG_ND_CLAIM=y +CONFIG_ND_BTT=m +CONFIG_BTT=y +CONFIG_ND_PFN=m +CONFIG_NVDIMM_PFN=y +CONFIG_NVDIMM_DAX=y +CONFIG_RAMDAX=m +CONFIG_NVDIMM_KEYS=y +# CONFIG_NVDIMM_SECURITY_TEST is not set +CONFIG_DAX=y +CONFIG_DEV_DAX=m +CONFIG_DEV_DAX_PMEM=m +CONFIG_DEV_DAX_HMEM=m +CONFIG_DEV_DAX_CXL=m +CONFIG_DEV_DAX_HMEM_DEVICES=y +CONFIG_DEV_DAX_KMEM=m +CONFIG_NVMEM=y +CONFIG_NVMEM_SYSFS=y +# CONFIG_NVMEM_LAYOUTS is not set +CONFIG_NVMEM_QNAP_MCU_EEPROM=m +CONFIG_NVMEM_RAVE_SP_EEPROM=m +CONFIG_NVMEM_RMEM=m +CONFIG_NVMEM_SPMI_SDAM=m + +# +# HW tracing support +# +CONFIG_STM=m +CONFIG_STM_PROTO_BASIC=m +CONFIG_STM_PROTO_SYS_T=m +CONFIG_STM_DUMMY=m +CONFIG_STM_SOURCE_CONSOLE=m +CONFIG_STM_SOURCE_HEARTBEAT=m +CONFIG_STM_SOURCE_FTRACE=m +CONFIG_INTEL_TH=m +CONFIG_INTEL_TH_PCI=m +CONFIG_INTEL_TH_ACPI=m +CONFIG_INTEL_TH_GTH=m +CONFIG_INTEL_TH_STH=m +CONFIG_INTEL_TH_MSU=m +CONFIG_INTEL_TH_PTI=m +# CONFIG_INTEL_TH_DEBUG is not set +# end of HW tracing support + +CONFIG_FPGA=m +CONFIG_ALTERA_PR_IP_CORE=m +CONFIG_FPGA_MGR_ALTERA_PS_SPI=m +CONFIG_FPGA_MGR_ALTERA_CVP=m +CONFIG_FPGA_MGR_XILINX_CORE=m +CONFIG_FPGA_MGR_XILINX_SELECTMAP=m +CONFIG_FPGA_MGR_XILINX_SPI=m +CONFIG_FPGA_MGR_MACHXO2_SPI=m +CONFIG_FPGA_BRIDGE=m +CONFIG_ALTERA_FREEZE_BRIDGE=m +CONFIG_XILINX_PR_DECOUPLER=m +CONFIG_FPGA_REGION=m +CONFIG_FPGA_DFL=m +CONFIG_FPGA_DFL_FME=m +CONFIG_FPGA_DFL_FME_MGR=m +CONFIG_FPGA_DFL_FME_BRIDGE=m +CONFIG_FPGA_DFL_FME_REGION=m +CONFIG_FPGA_DFL_AFU=m +CONFIG_FPGA_DFL_NIOS_INTEL_PAC_N3000=m +CONFIG_FPGA_DFL_PCI=m +# CONFIG_FPGA_M10_BMC_SEC_UPDATE is not set +CONFIG_FPGA_MGR_MICROCHIP_SPI=m +CONFIG_FPGA_MGR_LATTICE_SYSCONFIG=m +CONFIG_FPGA_MGR_LATTICE_SYSCONFIG_SPI=m +CONFIG_TEE=m +CONFIG_TEE_DMABUF_HEAPS=y +CONFIG_OPTEE_STATIC_PROTMEM_POOL=y +CONFIG_AMDTEE=m +CONFIG_MULTIPLEXER=m + +# +# Multiplexer drivers +# +CONFIG_MUX_ADG792A=m +CONFIG_MUX_ADGS1408=m +CONFIG_MUX_GPIO=m +# end of Multiplexer drivers + +CONFIG_PM_OPP=y +CONFIG_SIOX=m +CONFIG_SIOX_BUS_GPIO=m +CONFIG_SLIMBUS=m +CONFIG_INTERCONNECT=y +CONFIG_I8254=m +CONFIG_COUNTER=m +CONFIG_104_QUAD_8=m +CONFIG_INTEL_QEP=m +CONFIG_INTERRUPT_CNT=m +CONFIG_MOST=m +CONFIG_MOST_USB_HDM=m +CONFIG_MOST_CDEV=m +CONFIG_MOST_SND=m +CONFIG_PECI=m +CONFIG_PECI_CPU=m +CONFIG_HTE=y +# end of Device Drivers + +# +# Ubuntu Supplied Third-Party Device Drivers +# +CONFIG_UBUNTU_ODM_DRIVERS=y +CONFIG_UBUNTU_HOST=m +CONFIG_IGH_ECAT=m +CONFIG_IGH_ECAT_GENERIC_DEVICE=m +CONFIG_IGH_ECAT_ENABLE_EOE=y +# end of Ubuntu Supplied Third-Party Device Drivers + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_VALIDATE_FS_PARSER=y +CONFIG_FS_IOMAP=y +CONFIG_FS_STACK=y +CONFIG_BUFFER_HEAD=y +CONFIG_LEGACY_DIRECT_IO=y +# CONFIG_EXT2_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_JFS_FS=m +CONFIG_JFS_POSIX_ACL=y +CONFIG_JFS_SECURITY=y +# CONFIG_JFS_DEBUG is not set +CONFIG_JFS_STATISTICS=y +CONFIG_XFS_FS=m +CONFIG_XFS_SUPPORT_V4=y +CONFIG_XFS_SUPPORT_ASCII_CI=y +CONFIG_XFS_QUOTA=y +CONFIG_XFS_POSIX_ACL=y +CONFIG_XFS_RT=y +# CONFIG_XFS_ONLINE_SCRUB is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XFS_DEBUG is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_DEBUG_MASKLOG=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_EXPERIMENTAL is not set +CONFIG_NILFS2_FS=m +CONFIG_F2FS_FS=m +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +# CONFIG_F2FS_CHECK_FS is not set +# CONFIG_F2FS_FAULT_INJECTION is not set +CONFIG_F2FS_FS_COMPRESSION=y +CONFIG_F2FS_FS_LZO=y +CONFIG_F2FS_FS_LZORLE=y +CONFIG_F2FS_FS_LZ4=y +CONFIG_F2FS_FS_LZ4HC=y +CONFIG_F2FS_FS_ZSTD=y +# CONFIG_F2FS_IOSTAT is not set +CONFIG_F2FS_UNFAIR_RWSEM=y +CONFIG_ZONEFS_FS=m +CONFIG_FS_DAX=y +CONFIG_FS_DAX_PMD=y +CONFIG_FS_POSIX_ACL=y +CONFIG_EXPORTFS=y +CONFIG_EXPORTFS_BLOCK_OPS=y +CONFIG_FILE_LOCKING=y +CONFIG_FS_ENCRYPTION=y +CONFIG_FS_ENCRYPTION_ALGS=y +CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y +CONFIG_FS_VERITY=y +CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +CONFIG_FANOTIFY=y +CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=m +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QUOTACTL=y +CONFIG_AUTOFS_FS=m +CONFIG_FUSE_FS=y +CONFIG_CUSE=m +CONFIG_VIRTIO_FS=m +CONFIG_FUSE_DAX=y +CONFIG_FUSE_PASSTHROUGH=y +CONFIG_FUSE_IO_URING=y +CONFIG_OVERLAY_FS=m +# CONFIG_OVERLAY_FS_REDIRECT_DIR is not set +CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y +# CONFIG_OVERLAY_FS_INDEX is not set +CONFIG_OVERLAY_FS_XINO_AUTO=y +# CONFIG_OVERLAY_FS_METACOPY is not set +# CONFIG_OVERLAY_FS_DEBUG is not set + +# +# Caches +# +CONFIG_NETFS_SUPPORT=m +CONFIG_NETFS_STATS=y +CONFIG_NETFS_DEBUG=y +CONFIG_FSCACHE=y +CONFIG_FSCACHE_STATS=y +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +CONFIG_CACHEFILES_ERROR_INJECTION=y +# CONFIG_CACHEFILES_ONDEMAND is not set +# end of Caches + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +# end of CD-ROM/DVD Filesystems + +# +# DOS/FAT/EXFAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=m +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=m +CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" +CONFIG_NTFS3_FS=m +# CONFIG_NTFS3_64BIT_CLUSTER is not set +CONFIG_NTFS3_LZX_XPRESS=y +CONFIG_NTFS3_FS_POSIX_ACL=y +CONFIG_NTFS_FS=m +# 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=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_CHILDREN=y +CONFIG_PROC_PID_ARCH_STATUS=y +CONFIG_PROC_CPU_RESCTRL=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_TMPFS_INODE64=y +CONFIG_TMPFS_QUOTA=y +CONFIG_ARCH_SUPPORTS_HUGETLBFS=y +CONFIG_HUGETLBFS=y +# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set +CONFIG_HUGETLB_PAGE=y +CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y +CONFIG_HUGETLB_PMD_PAGE_TABLE_SHARING=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y +CONFIG_CONFIGFS_FS=y +CONFIG_EFIVAR_FS=y +# end of Pseudo filesystems + +CONFIG_MISC_FILESYSTEMS=y +CONFIG_ORANGEFS_FS=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_AFFS_FS=m +CONFIG_ECRYPT_FS=y +CONFIG_ECRYPT_FS_MESSAGING=y +CONFIG_HFS_FS=m +CONFIG_HFSPLUS_FS=m +CONFIG_BEFS_FS=m +# CONFIG_BEFS_DEBUG is not set +CONFIG_BFS_FS=m +CONFIG_EFS_FS=m +CONFIG_JFFS2_FS=m +CONFIG_JFFS2_FS_DEBUG=0 +CONFIG_JFFS2_FS_WRITEBUFFER=y +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +# CONFIG_JFFS2_SUMMARY is not set +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_FS_POSIX_ACL=y +CONFIG_JFFS2_FS_SECURITY=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_ZLIB=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +# CONFIG_JFFS2_CMODE_NONE is not set +# CONFIG_JFFS2_CMODE_PRIORITY is not set +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_CMODE_FAVOURLZO=y +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UBIFS_FS_ZSTD=y +# CONFIG_UBIFS_ATIME_SUPPORT is not set +CONFIG_UBIFS_FS_XATTR=y +CONFIG_UBIFS_FS_SECURITY=y +CONFIG_UBIFS_FS_AUTHENTICATION=y +CONFIG_CRAMFS=m +CONFIG_CRAMFS_BLOCKDEV=y +CONFIG_CRAMFS_MTD=y +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SQUASHFS_DECOMP_SINGLE=y +CONFIG_SQUASHFS_DECOMP_MULTI=y +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +CONFIG_SQUASHFS_CHOICE_DECOMP_BY_MOUNT=y +CONFIG_SQUASHFS_MOUNT_DECOMP_THREADS=y +CONFIG_SQUASHFS_XATTR=y +# CONFIG_SQUASHFS_COMP_CACHE_FULL is not set +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SQUASHFS_LZ4=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_ZSTD=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_VXFS_FS=m +CONFIG_MINIX_FS=m +CONFIG_OMFS_FS=m +CONFIG_HPFS_FS=m +CONFIG_QNX4FS_FS=m +CONFIG_QNX6FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_RESCTRL_FS=y +CONFIG_RESCTRL_FS_PSEUDO_LOCK=y +CONFIG_ROMFS_FS=m +CONFIG_ROMFS_BACKED_BY_BLOCK=y +# CONFIG_ROMFS_BACKED_BY_MTD is not set +# CONFIG_ROMFS_BACKED_BY_BOTH is not set +CONFIG_ROMFS_ON_BLOCK=y +CONFIG_PSTORE=y +CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 +CONFIG_PSTORE_COMPRESS=y +# CONFIG_PSTORE_CONSOLE is not set +# CONFIG_PSTORE_PMSG is not set +# CONFIG_PSTORE_FTRACE is not set +CONFIG_PSTORE_RAM=m +CONFIG_PSTORE_ZONE=m +CONFIG_PSTORE_BLK=m +CONFIG_PSTORE_BLK_BLKDEV="" +CONFIG_PSTORE_BLK_KMSG_SIZE=64 +CONFIG_PSTORE_BLK_MAX_REASON=2 +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +# CONFIG_UFS_DEBUG is not set +CONFIG_EROFS_FS=m +# CONFIG_EROFS_FS_DEBUG is not set +CONFIG_EROFS_FS_XATTR=y +CONFIG_EROFS_FS_POSIX_ACL=y +CONFIG_EROFS_FS_SECURITY=y +CONFIG_EROFS_FS_BACKED_BY_FILE=y +CONFIG_EROFS_FS_ZIP=y +CONFIG_EROFS_FS_ZIP_LZMA=y +CONFIG_EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS=16 +CONFIG_EROFS_FS_ZIP_DEFLATE=y +CONFIG_EROFS_FS_ZIP_ZSTD=y +CONFIG_EROFS_FS_ZIP_ACCEL=y +CONFIG_EROFS_FS_PCPU_KTHREAD=y +# CONFIG_EROFS_FS_PCPU_KTHREAD_HIPRI is not set +# CONFIG_EROFS_FS_PAGE_CACHE_SHARE is not set +CONFIG_VBOXSF_FS=m +CONFIG_NETWORK_FILESYSTEMS=y +CONFIG_NFS_FS=m +CONFIG_NFS_V2=m +CONFIG_NFS_V3=m +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=m +CONFIG_NFS_SWAP=y +CONFIG_NFS_V4_0=y +CONFIG_NFS_V4_2=y +CONFIG_PNFS_FILE_LAYOUT=m +CONFIG_PNFS_BLOCK=m +CONFIG_PNFS_FLEXFILE_LAYOUT=m +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +CONFIG_NFS_V4_1_MIGRATION=y +CONFIG_NFS_V4_SECURITY_LABEL=y +CONFIG_NFS_FSCACHE=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_USE_KERNEL_DNS=y +CONFIG_NFS_DEBUG=y +CONFIG_NFS_DISABLE_UDP_SUPPORT=y +# CONFIG_NFS_V4_2_READ_PLUS is not set +CONFIG_NFSD=m +# CONFIG_NFSD_V2 is not set +CONFIG_NFSD_V3_ACL=y +CONFIG_NFSD_V4=y +CONFIG_NFSD_PNFS=y +CONFIG_NFSD_BLOCKLAYOUT=y +CONFIG_NFSD_SCSILAYOUT=y +CONFIG_NFSD_FLEXFILELAYOUT=y +CONFIG_NFSD_V4_2_INTER_SSC=y +CONFIG_NFSD_V4_SECURITY_LABEL=y +# CONFIG_NFSD_LEGACY_CLIENT_TRACKING is not set +CONFIG_NFSD_V4_DELEG_TIMESTAMPS=y +# CONFIG_NFSD_V4_POSIX_ACLS is not set +CONFIG_GRACE_PERIOD=m +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +# CONFIG_NFS_LOCALIO is not set +CONFIG_NFS_V4_2_SSC_HELPER=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_BACKCHANNEL=y +CONFIG_SUNRPC_SWAP=y +CONFIG_RPCSEC_GSS_KRB5=m +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA=y +CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y +CONFIG_SUNRPC_DEBUG=y +# CONFIG_SUNRPC_DEBUG_TRACE is not set +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_CEPH_FS=m +CONFIG_CEPH_FSCACHE=y +CONFIG_CEPH_FS_POSIX_ACL=y +CONFIG_CEPH_FS_SECURITY_LABEL=y +CONFIG_CIFS=m +# CONFIG_CIFS_STATS2 is not set +CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y +CONFIG_CIFS_UPCALL=y +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +CONFIG_CIFS_DEBUG=y +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_DEBUG_DUMP_KEYS is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_SWN_UPCALL=y +# CONFIG_CIFS_SMB_DIRECT is not set +CONFIG_CIFS_FSCACHE=y +# CONFIG_CIFS_COMPRESSION is not set +CONFIG_SMB_SERVER=m +CONFIG_SMB_SERVER_SMBDIRECT=y +CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y +CONFIG_SMB_SERVER_KERBEROS5=y +CONFIG_SMBFS=m +CONFIG_CODA_FS=m +CONFIG_AFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FSCACHE=y +# CONFIG_AFS_DEBUG_CURSOR is not set +CONFIG_9P_FS=m +CONFIG_9P_FSCACHE=y +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_9P_FS_SECURITY=y +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_737=m +CONFIG_NLS_CODEPAGE_775=m +CONFIG_NLS_CODEPAGE_850=m +CONFIG_NLS_CODEPAGE_852=m +CONFIG_NLS_CODEPAGE_855=m +CONFIG_NLS_CODEPAGE_857=m +CONFIG_NLS_CODEPAGE_860=m +CONFIG_NLS_CODEPAGE_861=m +CONFIG_NLS_CODEPAGE_862=m +CONFIG_NLS_CODEPAGE_863=m +CONFIG_NLS_CODEPAGE_864=m +CONFIG_NLS_CODEPAGE_865=m +CONFIG_NLS_CODEPAGE_866=m +CONFIG_NLS_CODEPAGE_869=m +CONFIG_NLS_CODEPAGE_936=m +CONFIG_NLS_CODEPAGE_950=m +CONFIG_NLS_CODEPAGE_932=m +CONFIG_NLS_CODEPAGE_949=m +CONFIG_NLS_CODEPAGE_874=m +CONFIG_NLS_ISO8859_8=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_2=m +CONFIG_NLS_ISO8859_3=m +CONFIG_NLS_ISO8859_4=m +CONFIG_NLS_ISO8859_5=m +CONFIG_NLS_ISO8859_6=m +CONFIG_NLS_ISO8859_7=m +CONFIG_NLS_ISO8859_9=m +CONFIG_NLS_ISO8859_13=m +CONFIG_NLS_ISO8859_14=m +CONFIG_NLS_ISO8859_15=m +CONFIG_NLS_KOI8_R=m +CONFIG_NLS_KOI8_U=m +CONFIG_NLS_MAC_ROMAN=m +CONFIG_NLS_MAC_CELTIC=m +CONFIG_NLS_MAC_CENTEURO=m +CONFIG_NLS_MAC_CROATIAN=m +CONFIG_NLS_MAC_CYRILLIC=m +CONFIG_NLS_MAC_GAELIC=m +CONFIG_NLS_MAC_GREEK=m +CONFIG_NLS_MAC_ICELAND=m +CONFIG_NLS_MAC_INUIT=m +CONFIG_NLS_MAC_ROMANIAN=m +CONFIG_NLS_MAC_TURKISH=m +CONFIG_NLS_UTF8=m +CONFIG_NLS_UCS2_UTILS=m +CONFIG_DLM=m +# CONFIG_DLM_DEBUG is not set +CONFIG_UNICODE=y +CONFIG_IO_WQ=y +# end of File systems + +# +# Security options +# +CONFIG_KEYS=y +CONFIG_KEYS_REQUEST_CACHE=y +CONFIG_PERSISTENT_KEYRINGS=y +CONFIG_BIG_KEYS=y +CONFIG_TRUSTED_KEYS=y +CONFIG_HAVE_TRUSTED_KEYS=y +CONFIG_TRUSTED_KEYS_TPM=y +CONFIG_ENCRYPTED_KEYS=y +CONFIG_USER_DECRYPTED_DATA=y +CONFIG_KEY_DH_OPERATIONS=y +CONFIG_KEY_NOTIFICATIONS=y +CONFIG_SECURITY_DMESG_RESTRICT=y +CONFIG_PROC_MEM_ALWAYS_FORCE=y +# CONFIG_PROC_MEM_FORCE_PTRACE is not set +# CONFIG_PROC_MEM_NO_FORCE is not set +CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y +CONFIG_SECURITY=y +CONFIG_HAS_SECURITY_AUDIT=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_INFINIBAND=y +CONFIG_SECURITY_NETWORK_XFRM=y +CONFIG_SECURITY_PATH=y +CONFIG_INTEL_TXT=y +CONFIG_LSM_MMAP_MIN_ADDR=0 +# CONFIG_STATIC_USERMODEHELPER is not set +CONFIG_SECURITY_SELINUX=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DEVELOP=y +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9 +CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256 +CONFIG_SECURITY_SELINUX_AVC_HASH_BITS=9 +# CONFIG_SECURITY_SELINUX_DEBUG is not set +CONFIG_SECURITY_SMACK=y +# CONFIG_SECURITY_SMACK_BRINGUP is not set +CONFIG_SECURITY_SMACK_NETFILTER=y +CONFIG_SECURITY_SMACK_APPEND_SIGNALS=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048 +CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024 +# CONFIG_SECURITY_TOMOYO_OMIT_USERSPACE_LOADER is not set +CONFIG_SECURITY_TOMOYO_POLICY_LOADER="/sbin/tomoyo-init" +CONFIG_SECURITY_TOMOYO_ACTIVATION_TRIGGER="/sbin/init" +# CONFIG_SECURITY_TOMOYO_INSECURE_BUILTIN_SETTING is not set +CONFIG_SECURITY_APPARMOR=y +# CONFIG_SECURITY_APPARMOR_DEBUG is not set +CONFIG_SECURITY_APPARMOR_INTROSPECT_POLICY=y +CONFIG_SECURITY_APPARMOR_HASH=y +CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y +CONFIG_SECURITY_APPARMOR_EXPORT_BINARY=y +CONFIG_SECURITY_APPARMOR_PARANOID_LOAD=y +# CONFIG_SECURITY_APPARMOR_RESTRICT_USERNS is not set +# CONFIG_SECURITY_APPARMOR_PACKET_MEDIATION_ENABLED is not set +# CONFIG_SECURITY_LOADPIN is not set +CONFIG_SECURITY_YAMA=y +CONFIG_SECURITY_SAFESETID=y +CONFIG_SECURITY_LOCKDOWN_LSM=y +CONFIG_SECURITY_LOCKDOWN_LSM_EARLY=y +CONFIG_LOCK_DOWN_IN_SECURE_BOOT=y +CONFIG_LOCK_DOWN_KERNEL_FORCE_NONE=y +# CONFIG_LOCK_DOWN_KERNEL_FORCE_INTEGRITY is not set +# CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY is not set +CONFIG_SECURITY_LANDLOCK=y +CONFIG_SECURITY_IPE=y +CONFIG_IPE_BOOT_POLICY="" +CONFIG_IPE_POLICY_SIG_SECONDARY_KEYRING=y +CONFIG_IPE_POLICY_SIG_PLATFORM_KEYRING=y + +# +# IPE Trust Providers +# +CONFIG_IPE_PROP_DM_VERITY=y +CONFIG_IPE_PROP_DM_VERITY_SIGNATURE=y +CONFIG_IPE_PROP_FS_VERITY=y +CONFIG_IPE_PROP_FS_VERITY_BUILTIN_SIG=y +# end of IPE Trust Providers + +CONFIG_INTEGRITY=y +CONFIG_INTEGRITY_SIGNATURE=y +CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y +CONFIG_INTEGRITY_TRUSTED_KEYRING=y +CONFIG_INTEGRITY_PLATFORM_KEYRING=y +CONFIG_INTEGRITY_MACHINE_KEYRING=y +# CONFIG_INTEGRITY_CA_MACHINE_KEYRING is not set +CONFIG_LOAD_UEFI_KEYS=y +CONFIG_INTEGRITY_AUDIT=y +CONFIG_IMA=y +CONFIG_IMA_KEXEC=y +CONFIG_IMA_MEASURE_PCR_IDX=10 +CONFIG_IMA_LSM_RULES=y +CONFIG_IMA_NG_TEMPLATE=y +# CONFIG_IMA_SIG_TEMPLATE is not set +CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng" +# CONFIG_IMA_DEFAULT_HASH_SHA1 is not set +CONFIG_IMA_DEFAULT_HASH_SHA256=y +# CONFIG_IMA_DEFAULT_HASH_SHA512 is not set +CONFIG_IMA_DEFAULT_HASH="sha256" +# CONFIG_IMA_WRITE_POLICY is not set +# CONFIG_IMA_READ_POLICY is not set +CONFIG_IMA_APPRAISE=y +CONFIG_IMA_ARCH_POLICY=y +# CONFIG_IMA_APPRAISE_BUILD_POLICY is not set +CONFIG_IMA_APPRAISE_BOOTPARAM=y +CONFIG_IMA_APPRAISE_MODSIG=y +# CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY is not set +# CONFIG_IMA_BLACKLIST_KEYRING is not set +# CONFIG_IMA_LOAD_X509 is not set +CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS=y +CONFIG_IMA_QUEUE_EARLY_BOOT_KEYS=y +CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT=y +# CONFIG_IMA_DISABLE_HTABLE is not set +CONFIG_IMA_KEXEC_EXTRA_MEMORY_KB=0 +CONFIG_EVM=y +CONFIG_EVM_ATTR_FSUUID=y +CONFIG_EVM_EXTRA_SMACK_XATTRS=y +CONFIG_EVM_ADD_XATTRS=y +# CONFIG_EVM_LOAD_X509 is not set +# CONFIG_DEFAULT_SECURITY_SELINUX is not set +# CONFIG_DEFAULT_SECURITY_SMACK is not set +# CONFIG_DEFAULT_SECURITY_TOMOYO is not set +CONFIG_DEFAULT_SECURITY_APPARMOR=y +# CONFIG_DEFAULT_SECURITY_DAC is not set +CONFIG_LSM="landlock,lockdown,yama,integrity,apparmor,bpf" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_CC_HAS_AUTO_VAR_INIT_PATTERN=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_BARE=y +CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO=y +# CONFIG_INIT_STACK_NONE is not set +# CONFIG_INIT_STACK_ALL_PATTERN is not set +CONFIG_INIT_STACK_ALL_ZERO=y +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y +# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set +CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y +CONFIG_ZERO_CALL_USED_REGS=y +# end of Memory initialization + +# +# Bounds checking +# +CONFIG_FORTIFY_SOURCE=y +CONFIG_HARDENED_USERCOPY=y +CONFIG_HARDENED_USERCOPY_DEFAULT_ON=y +# end of Bounds checking + +# +# Hardening of kernel data structures +# +CONFIG_LIST_HARDENED=y +# CONFIG_RUST_BITMAP_HARDENED is not set +# CONFIG_BUG_ON_DATA_CORRUPTION is not set +# end of Hardening of kernel data structures + +CONFIG_RANDSTRUCT_NONE=y +# end of Kernel hardening options +# end of Security options + +CONFIG_XOR_BLOCKS=m +CONFIG_ASYNC_CORE=m +CONFIG_ASYNC_MEMCPY=m +CONFIG_ASYNC_XOR=m +CONFIG_ASYNC_PQ=m +CONFIG_ASYNC_RAID6_RECOV=m +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_SIG=y +CONFIG_CRYPTO_SIG2=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_KPP=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_HKDF=m +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_USER=m +# CONFIG_CRYPTO_SELFTESTS is not set +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_PCRYPT=m +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_AUTHENC=m +CONFIG_CRYPTO_KRB5ENC=m +CONFIG_CRYPTO_BENCHMARK=m +CONFIG_CRYPTO_ENGINE=m +# end of Crypto core or helper + +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_DH=y +CONFIG_CRYPTO_DH_RFC7919_GROUPS=y +CONFIG_CRYPTO_ECC=y +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_ECDSA=m +CONFIG_CRYPTO_ECRDSA=m +CONFIG_CRYPTO_MLDSA=m +# end of Public-key cryptography + +# +# Block ciphers +# +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_ARIA=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_BLOWFISH_COMMON=m +CONFIG_CRYPTO_CAMELLIA=m +CONFIG_CRYPTO_CAST_COMMON=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_FCRYPT=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_SM4=m +CONFIG_CRYPTO_SM4_GENERIC=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_TWOFISH_COMMON=m +# end of Block ciphers + +# +# Length-preserving ciphers and modes +# +CONFIG_CRYPTO_ADIANTUM=m +CONFIG_CRYPTO_CHACHA20=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_HCTR2=m +CONFIG_CRYPTO_LRW=m +CONFIG_CRYPTO_PCBC=m +CONFIG_CRYPTO_XCTR=m +CONFIG_CRYPTO_XTS=y +# end of Length-preserving ciphers and modes + +# +# AEAD (authenticated encryption with associated data) ciphers +# +CONFIG_CRYPTO_AEGIS128=m +CONFIG_CRYPTO_CHACHA20POLY1305=m +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_GENIV=y +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_ECHAINIV=m +CONFIG_CRYPTO_ESSIV=m +# end of AEAD (authenticated encryption with associated data) ciphers + +# +# Hashes, digests, and MACs +# +CONFIG_CRYPTO_BLAKE2B=m +CONFIG_CRYPTO_CMAC=m +CONFIG_CRYPTO_GHASH=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_RMD160=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=y +CONFIG_CRYPTO_SHA3=y +CONFIG_CRYPTO_SM3_GENERIC=m +CONFIG_CRYPTO_STREEBOG=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_XCBC=m +CONFIG_CRYPTO_XXHASH=m +# end of Hashes, digests, and MACs + +# +# CRCs (cyclic redundancy checks) +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32=m +# end of CRCs (cyclic redundancy checks) + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_LZO=y +CONFIG_CRYPTO_842=m +CONFIG_CRYPTO_LZ4=m +CONFIG_CRYPTO_LZ4HC=m +CONFIG_CRYPTO_ZSTD=m +# end of Compression + +# +# Random number generation +# +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +CONFIG_CRYPTO_DRBG_HASH=y +CONFIG_CRYPTO_DRBG_CTR=y +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64 +CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32 +CONFIG_CRYPTO_JITTERENTROPY_OSR=1 +CONFIG_CRYPTO_KDF800108_CTR=y +CONFIG_CRYPTO_DF80090A=y +# end of Random number generation + +# +# Userspace interface +# +CONFIG_CRYPTO_USER_API=m +CONFIG_CRYPTO_USER_API_HASH=m +CONFIG_CRYPTO_USER_API_SKCIPHER=m +CONFIG_CRYPTO_USER_API_RNG=m +# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set +CONFIG_CRYPTO_USER_API_AEAD=m +# CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE is not set +# end of Userspace interface + +# +# Accelerated Cryptographic Algorithms for CPU (x86) +# +CONFIG_CRYPTO_AES_NI_INTEL=m +CONFIG_CRYPTO_BLOWFISH_X86_64=m +CONFIG_CRYPTO_CAMELLIA_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_CAST5_AVX_X86_64=m +CONFIG_CRYPTO_CAST6_AVX_X86_64=m +CONFIG_CRYPTO_DES3_EDE_X86_64=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX_X86_64=m +CONFIG_CRYPTO_SERPENT_AVX2_X86_64=m +CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64=m +CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m +CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m +CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64=m +CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64=m +CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64=m +CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=m +CONFIG_CRYPTO_SM3_AVX_X86_64=m +CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m +# end of Accelerated Cryptographic Algorithms for CPU (x86) + +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_DEV_PADLOCK=y +CONFIG_CRYPTO_DEV_PADLOCK_AES=m +CONFIG_CRYPTO_DEV_PADLOCK_SHA=m +CONFIG_CRYPTO_DEV_ATMEL_I2C=m +CONFIG_CRYPTO_DEV_ATMEL_ECC=m +CONFIG_CRYPTO_DEV_ATMEL_SHA204A=m +CONFIG_CRYPTO_DEV_CCP=y +CONFIG_CRYPTO_DEV_CCP_DD=m +CONFIG_CRYPTO_DEV_SP_CCP=y +CONFIG_CRYPTO_DEV_CCP_CRYPTO=m +CONFIG_CRYPTO_DEV_SP_PSP=y +# CONFIG_CRYPTO_DEV_CCP_DEBUGFS is not set +CONFIG_CRYPTO_DEV_NITROX=m +CONFIG_CRYPTO_DEV_NITROX_CNN55XX=m +CONFIG_CRYPTO_DEV_QAT=m +CONFIG_CRYPTO_DEV_QAT_DH895xCC=m +CONFIG_CRYPTO_DEV_QAT_C3XXX=m +CONFIG_CRYPTO_DEV_QAT_C62X=m +CONFIG_CRYPTO_DEV_QAT_4XXX=m +CONFIG_CRYPTO_DEV_QAT_420XX=m +CONFIG_CRYPTO_DEV_QAT_6XXX=m +CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m +CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m +CONFIG_CRYPTO_DEV_QAT_C62XVF=m +# CONFIG_CRYPTO_DEV_QAT_ERROR_INJECTION is not set +CONFIG_CRYPTO_DEV_IAA_CRYPTO=m +# CONFIG_CRYPTO_DEV_IAA_CRYPTO_STATS is not set +CONFIG_CRYPTO_DEV_CHELSIO=m +CONFIG_CRYPTO_DEV_VIRTIO=m +CONFIG_CRYPTO_DEV_SAFEXCEL=m +CONFIG_CRYPTO_DEV_AMLOGIC_GXL=m +# CONFIG_CRYPTO_DEV_AMLOGIC_GXL_DEBUG is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +CONFIG_PKCS8_PRIVATE_KEY_PARSER=m +CONFIG_PKCS7_MESSAGE_PARSER=y +# CONFIG_PKCS7_WAIVE_AUTHATTRS_REJECTION_FOR_MLDSA is not set +CONFIG_PKCS7_TEST_KEY=m +CONFIG_SIGNED_PE_FILE_VERIFICATION=y +# CONFIG_FIPS_SIGNATURE_SELFTEST is not set + +# +# Certificates for signature checking +# +CONFIG_MODULE_SIG_KEY="certs/signing_key.pem" +CONFIG_MODULE_SIG_KEY_TYPE_RSA=y +# CONFIG_MODULE_SIG_KEY_TYPE_ECDSA is not set +CONFIG_SYSTEM_TRUSTED_KEYRING=y +CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem" +CONFIG_SYSTEM_EXTRA_CERTIFICATE=y +CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096 +CONFIG_SECONDARY_TRUSTED_KEYRING=y +# CONFIG_SECONDARY_TRUSTED_KEYRING_SIGNED_BY_BUILTIN is not set +CONFIG_SYSTEM_BLACKLIST_KEYRING=y +CONFIG_SYSTEM_BLACKLIST_HASH_LIST="" +CONFIG_SYSTEM_REVOCATION_LIST=y +CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem" +# CONFIG_SYSTEM_BLACKLIST_AUTH_UPDATE is not set +# end of Certificates for signature checking + +CONFIG_CRYPTO_KRB5=m +CONFIG_CRYPTO_KRB5_SELFTESTS=y +CONFIG_BINARY_PRINTF=y + +# +# Library routines +# +CONFIG_RAID6_PQ=m +CONFIG_RAID6_PQ_BENCHMARK=y +CONFIG_LINEAR_RANGES=y +CONFIG_PACKING=y +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_CORDIC=m +# CONFIG_PRIME_NUMBERS is not set +CONFIG_RATIONAL=y +CONFIG_GENERIC_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_ARCH_HAS_FAST_MULTIPLIER=y +CONFIG_ARCH_USE_SYM_ANNOTATIONS=y +CONFIG_CRC7=m +CONFIG_CRC8=m +CONFIG_CRC16=y +CONFIG_CRC_CCITT=y +CONFIG_CRC_ITU_T=m +CONFIG_CRC_T10DIF=y +CONFIG_CRC_T10DIF_ARCH=y +CONFIG_CRC32=y +CONFIG_CRC32_ARCH=y +CONFIG_CRC64=y +CONFIG_CRC64_ARCH=y +CONFIG_CRC_OPTIMIZATIONS=y + +# +# Crypto library routines +# +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_LIB_UTILS=y +CONFIG_CRYPTO_LIB_AES=y +CONFIG_CRYPTO_LIB_AES_ARCH=y +CONFIG_CRYPTO_LIB_AESGCM=y +CONFIG_CRYPTO_LIB_ARC4=m +CONFIG_CRYPTO_LIB_GF128MUL=y +CONFIG_CRYPTO_LIB_BLAKE2B=m +CONFIG_CRYPTO_LIB_BLAKE2S_ARCH=y +CONFIG_CRYPTO_LIB_CHACHA=y +CONFIG_CRYPTO_LIB_CHACHA_ARCH=y +CONFIG_CRYPTO_LIB_CURVE25519=m +CONFIG_CRYPTO_LIB_CURVE25519_ARCH=y +CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y +CONFIG_CRYPTO_LIB_DES=m +CONFIG_CRYPTO_LIB_MD5=y +CONFIG_CRYPTO_LIB_MLDSA=m +CONFIG_CRYPTO_LIB_NH=m +CONFIG_CRYPTO_LIB_NH_ARCH=y +CONFIG_CRYPTO_LIB_POLY1305=y +CONFIG_CRYPTO_LIB_POLY1305_ARCH=y +CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y +CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11 +CONFIG_CRYPTO_LIB_POLYVAL=m +CONFIG_CRYPTO_LIB_POLYVAL_ARCH=y +CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y +CONFIG_CRYPTO_LIB_SHA1=y +CONFIG_CRYPTO_LIB_SHA1_ARCH=y +CONFIG_CRYPTO_LIB_SHA256=y +CONFIG_CRYPTO_LIB_SHA256_ARCH=y +CONFIG_CRYPTO_LIB_SHA512=y +CONFIG_CRYPTO_LIB_SHA512_ARCH=y +CONFIG_CRYPTO_LIB_SHA3=y +CONFIG_CRYPTO_LIB_SM3=m +# end of Crypto library routines + +CONFIG_XXHASH=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_842_COMPRESS=m +CONFIG_842_DECOMPRESS=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m +CONFIG_LZ4_DECOMPRESS=y +CONFIG_ZSTD_COMMON=y +CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_DECOMPRESS=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_X86=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_ARM64=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_RISCV=y +CONFIG_XZ_DEC_MICROLZMA=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_TEST=m +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_REED_SOLOMON=m +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_BCH=m +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m +CONFIG_BTREE=y +CONFIG_INTERVAL_TREE=y +CONFIG_INTERVAL_TREE_SPAN_ITER=y +CONFIG_XARRAY_MULTI=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_CLOSURES=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_IOPORT_MAP=y +CONFIG_HAS_DMA=y +CONFIG_DMA_OPS_HELPERS=y +CONFIG_NEED_SG_DMA_FLAGS=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_HAS_FORCE_DMA_UNENCRYPTED=y +CONFIG_SWIOTLB=y +CONFIG_SWIOTLB_DYNAMIC=y +CONFIG_DMA_NEED_SYNC=y +CONFIG_DMA_COHERENT_POOL=y +CONFIG_DMA_CMA=y +CONFIG_DMA_NUMA_CMA=y + +# +# Default contiguous memory area size: +# +CONFIG_CMA_SIZE_MBYTES=0 +CONFIG_CMA_SIZE_SEL_MBYTES=y +# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set +# CONFIG_CMA_SIZE_SEL_MIN is not set +# CONFIG_CMA_SIZE_SEL_MAX is not set +CONFIG_CMA_ALIGNMENT=8 +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set +CONFIG_SGL_ALLOC=y +CONFIG_IOMMU_HELPER=y +CONFIG_CHECK_SIGNATURE=y +CONFIG_CPUMASK_OFFSTACK=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_GLOB=y +CONFIG_NLATTR=y +CONFIG_LRU_CACHE=m +CONFIG_CLZ_TAB=y +CONFIG_IRQ_POLL=y +CONFIG_MPILIB=y +CONFIG_SIGNATURE=y +CONFIG_DIMLIB=y +CONFIG_LIBFDT=y +CONFIG_OID_REGISTRY=y +CONFIG_UCS2_STRING=y +CONFIG_HAVE_GENERIC_VDSO=y +CONFIG_GENERIC_GETTIMEOFDAY=y +CONFIG_GENERIC_VDSO_OVERFLOW_PROTECT=y +CONFIG_VDSO_GETRANDOM=y +CONFIG_FONT_SUPPORT=y +CONFIG_FONTS=y +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +# CONFIG_FONT_6x11 is not set +# CONFIG_FONT_7x14 is not set +# CONFIG_FONT_PEARL_8x8 is not set +CONFIG_FONT_ACORN_8x8=y +# CONFIG_FONT_MINI_4x6 is not set +CONFIG_FONT_6x10=y +# CONFIG_FONT_10x18 is not set +# CONFIG_FONT_SUN8x16 is not set +# CONFIG_FONT_SUN12x22 is not set +CONFIG_FONT_TER10x18=y +CONFIG_FONT_TER16x32=y +# CONFIG_FONT_6x8 is not set +CONFIG_SG_POOL=y +CONFIG_ARCH_HAS_PMEM_API=y +CONFIG_MEMREGION=y +CONFIG_ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION=y +CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y +CONFIG_ARCH_HAS_COPY_MC=y +CONFIG_ARCH_STACKWALK=y +CONFIG_STACKDEPOT=y +CONFIG_STACKDEPOT_MAX_FRAMES=64 +CONFIG_SBITMAP=y +CONFIG_PARMAN=m +CONFIG_OBJAGG=m +# CONFIG_LWQ_TEST is not set +# end of Library routines + +CONFIG_PLDMFW=y +CONFIG_ASN1_ENCODER=y +CONFIG_POLYNOMIAL=m +CONFIG_FIRMWARE_TABLE=y +CONFIG_UNION_FIND=y +CONFIG_MIN_HEAP=y + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set +CONFIG_PRINTK_EXECUTION_CTX=y +# CONFIG_STACKTRACE_BUILD_ID is not set +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=3 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_DYNAMIC_DEBUG=y +CONFIG_DYNAMIC_DEBUG_CORE=y +CONFIG_SYMBOLIC_ERRNAME=y +CONFIG_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_BUGVERBOSE_DETAILED is not set +# end of printk and dmesg options + +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO=y +CONFIG_AS_HAS_NON_CONST_ULEB128=y +# CONFIG_DEBUG_INFO_NONE is not set +# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +CONFIG_DEBUG_INFO_DWARF5=y +# CONFIG_DEBUG_INFO_REDUCED is not set +CONFIG_DEBUG_INFO_COMPRESSED_NONE=y +# CONFIG_DEBUG_INFO_COMPRESSED_ZLIB is not set +# CONFIG_DEBUG_INFO_COMPRESSED_ZSTD is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +CONFIG_DEBUG_INFO_BTF=y +CONFIG_PAHOLE_HAS_LANG_EXCLUDE=y +CONFIG_DEBUG_INFO_BTF_MODULES=y +# CONFIG_MODULE_ALLOW_BTF_MISMATCH is not set +CONFIG_GDB_SCRIPTS=y +CONFIG_FRAME_WARN=1024 +# 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_DEBUG_FORCE_FUNCTION_ALIGN_64B is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_FRAME_POINTER=y +CONFIG_OBJTOOL=y +# CONFIG_OBJTOOL_WERROR is not set +CONFIG_STACK_VALIDATION=y +CONFIG_VMLINUX_MAP=y +CONFIG_BUILTIN_MODULE_RANGES=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=0x01b6 +CONFIG_MAGIC_SYSRQ_SERIAL=y +CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE="" +CONFIG_DEBUG_FS=y +CONFIG_DEBUG_FS_ALLOW_ALL=y +# CONFIG_DEBUG_FS_ALLOW_NONE is not set +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_KGDB=y +CONFIG_KGDB_HONOUR_BLOCKLIST=y +CONFIG_KGDB_SERIAL_CONSOLE=y +# CONFIG_KGDB_TESTS is not set +CONFIG_KGDB_LOW_LEVEL_TRAP=y +CONFIG_KGDB_KDB=y +CONFIG_KDB_DEFAULT_ENABLE=0x1 +CONFIG_KDB_KEYBOARD=y +CONFIG_KDB_CONTINUE_CATASTROPHIC=0 +CONFIG_ARCH_HAS_EARLY_DEBUG=y +CONFIG_ARCH_HAS_UBSAN=y +CONFIG_UBSAN=y +# CONFIG_UBSAN_TRAP is not set +CONFIG_CC_HAS_UBSAN_BOUNDS_STRICT=y +CONFIG_UBSAN_BOUNDS=y +CONFIG_UBSAN_BOUNDS_STRICT=y +CONFIG_UBSAN_SHIFT=y +# CONFIG_UBSAN_DIV_ZERO is not set +CONFIG_UBSAN_BOOL=y +CONFIG_UBSAN_ENUM=y +# CONFIG_UBSAN_ALIGNMENT is not set +# CONFIG_TEST_UBSAN is not set +CONFIG_HAVE_ARCH_KCSAN=y +CONFIG_HAVE_KCSAN_COMPILER=y +# CONFIG_KCSAN is not set +# end of Generic Kernel Debugging Instruments + +# +# Networking Debugging +# +# CONFIG_NET_DEV_REFCNT_TRACKER is not set +# CONFIG_NET_NS_REFCNT_TRACKER is not set +# CONFIG_DEBUG_NET is not set +# CONFIG_DEBUG_NET_SMALL_RTNL is not set +# end of Networking Debugging + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_SLUB_DEBUG=y +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_PAGE_OWNER is not set +# CONFIG_PAGE_TABLE_CHECK is not set +CONFIG_PAGE_POISONING=y +# CONFIG_DEBUG_PAGE_REF is not set +# CONFIG_DEBUG_RODATA_TEST is not set +CONFIG_ARCH_HAS_DEBUG_WX=y +CONFIG_DEBUG_WX=y +CONFIG_ARCH_HAS_PTDUMP=y +CONFIG_PTDUMP=y +# CONFIG_PTDUMP_DEBUGFS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_PER_VMA_LOCK_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SHRINKER_DEBUG is not set +# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_SCHED_STACK_END_CHECK=y +CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y +CONFIG_DEBUG_VFS=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 is not set +CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_MEM_ALLOC_PROFILING 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=y +CONFIG_KFENCE_SAMPLE_INTERVAL=0 +CONFIG_KFENCE_NUM_OBJECTS=255 +# CONFIG_KFENCE_DEFERRABLE is not set +# CONFIG_KFENCE_STATIC_KEYS is not set +CONFIG_KFENCE_STRESS_TEST_FAULTS=0 +CONFIG_HAVE_ARCH_KMSAN=y +# end of Memory Debugging + +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Oops, Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_TIMEOUT=0 +CONFIG_LOCKUP_DETECTOR=y +CONFIG_SOFTLOCKUP_DETECTOR=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=0 +CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_HARDLOCKUP_DETECTOR_PREFER_BUDDY is not set +CONFIG_HARDLOCKUP_DETECTOR_PERF=y +# CONFIG_HARDLOCKUP_DETECTOR_BUDDY is not set +# CONFIG_HARDLOCKUP_DETECTOR_ARCH is not set +CONFIG_HARDLOCKUP_DETECTOR_COUNTS_HRTIMER=y +CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_DETECT_HUNG_TASK=y +CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=0 +CONFIG_DETECT_HUNG_TASK_BLOCKER=y +# CONFIG_WQ_WATCHDOG is not set +CONFIG_WQ_CPU_INTENSIVE_REPORT=y +# CONFIG_TEST_LOCKUP is not set +# end of Debug Oops, Lockups and Hangs + +# +# Scheduler Debugging +# +CONFIG_SCHED_INFO=y +CONFIG_SCHEDSTATS=y +# end of Scheduler Debugging + +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_DEBUG_ATOMIC 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_NMI_CHECK_CPU=y +# CONFIG_DEBUG_IRQFLAGS is not set +CONFIG_STACKTRACE=y +# 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_DEBUG_CLOSURES is not set +# CONFIG_DEBUG_MAPLE_TREE is not set +# end of Debug kernel data structures + +# +# 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=60 +CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0 +CONFIG_RCU_CPU_STALL_CPUTIME=y +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + +# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set +# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set +CONFIG_LATENCYTOP=y +# CONFIG_DEBUG_CGROUP_REF is not set +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_NOP_TRACER=y +CONFIG_HAVE_RETHOOK=y +CONFIG_RETHOOK=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_FREGS=y +CONFIG_HAVE_FTRACE_GRAPH_FUNC=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_HAVE_SINGLE_FTRACE_DIRECT_OPS=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_HAVE_FTRACE_REGS_HAVING_PT_REGS=y +CONFIG_HAVE_DYNAMIC_FTRACE_NO_PATCHABLE=y +CONFIG_HAVE_DYNAMIC_FTRACE_WITH_JMP=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_FENTRY=y +CONFIG_HAVE_OBJTOOL_MCOUNT=y +CONFIG_HAVE_OBJTOOL_NOP_MCOUNT=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=y +CONFIG_BUILDTIME_MCOUNT_SORT=y +CONFIG_TRACER_MAX_TRACE=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_TRACEFS_AUTOMOUNT_DEPRECATED=y +CONFIG_BOOTTIME_TRACING=y +CONFIG_FUNCTION_TRACER=y +CONFIG_FUNCTION_GRAPH_TRACER=y +CONFIG_FUNCTION_GRAPH_RETVAL=y +CONFIG_FUNCTION_GRAPH_RETADDR=y +CONFIG_FUNCTION_TRACE_ARGS=y +CONFIG_DYNAMIC_FTRACE=y +CONFIG_DYNAMIC_FTRACE_WITH_REGS=y +CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y +CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y +CONFIG_DYNAMIC_FTRACE_WITH_JMP=y +CONFIG_FUNCTION_SELF_TRACING=y +CONFIG_FPROBE=y +CONFIG_FUNCTION_PROFILER=y +CONFIG_STACK_TRACER=y +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_PREEMPT_TRACER is not set +CONFIG_SCHED_TRACER=y +CONFIG_HWLAT_TRACER=y +CONFIG_OSNOISE_TRACER=y +CONFIG_TIMERLAT_TRACER=y +CONFIG_MMIOTRACE=y +CONFIG_FTRACE_SYSCALLS=y +CONFIG_TRACE_SYSCALL_BUF_SIZE_DEFAULT=63 +CONFIG_TRACER_SNAPSHOT=y +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_FPROBE_EVENTS=y +CONFIG_PROBE_EVENTS_BTF_ARGS=y +CONFIG_KPROBE_EVENTS=y +# CONFIG_KPROBE_EVENTS_ON_NOTRACE is not set +CONFIG_UPROBE_EVENTS=y +CONFIG_EPROBE_EVENTS=y +CONFIG_BPF_EVENTS=y +CONFIG_DYNAMIC_EVENTS=y +CONFIG_PROBE_EVENTS=y +CONFIG_BPF_KPROBE_OVERRIDE=y +CONFIG_FTRACE_MCOUNT_USE_CC=y +CONFIG_TRACING_MAP=y +CONFIG_SYNTH_EVENTS=y +CONFIG_USER_EVENTS=y +CONFIG_HIST_TRIGGERS=y +CONFIG_TRACE_EVENT_INJECT=y +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_TRACE_EVAL_MAP_FILE is not set +# CONFIG_FTRACE_RECORD_RECURSION is not set +# CONFIG_FTRACE_VALIDATE_RCU_IS_WATCHING is not set +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_FTRACE_SORT_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set +# CONFIG_MMIOTRACE_TEST is not set +# CONFIG_PREEMPTIRQ_DELAY_TEST is not set +# CONFIG_SYNTH_EVENT_GEN_TEST is not set +# CONFIG_KPROBE_EVENT_GEN_TEST is not set +# CONFIG_HIST_TRIGGERS_DEBUG is not set +CONFIG_RV_MON_EVENTS=y +CONFIG_RV_MON_MAINTENANCE_EVENTS=y +CONFIG_DA_MON_EVENTS_ID=y +CONFIG_RV=y +CONFIG_RV_PER_TASK_MONITORS=2 +CONFIG_RV_MON_WWNR=y +# CONFIG_RV_MON_RTAPP is not set +CONFIG_RV_REACTORS=y +CONFIG_RV_REACT_PRINTK=y +CONFIG_RV_REACT_PANIC=y +# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set +CONFIG_SAMPLES=y +CONFIG_SAMPLE_AUXDISPLAY=y +# CONFIG_SAMPLE_TRACE_EVENTS is not set +# CONFIG_SAMPLE_TRACE_CUSTOM_EVENTS is not set +CONFIG_SAMPLE_TRACE_PRINTK=m +# CONFIG_SAMPLE_FTRACE_DIRECT is not set +# CONFIG_SAMPLE_FTRACE_DIRECT_MULTI is not set +# CONFIG_SAMPLE_FTRACE_OPS is not set +CONFIG_SAMPLE_TRACE_ARRAY=m +# CONFIG_SAMPLE_KOBJECT is not set +# CONFIG_SAMPLE_KPROBES is not set +# CONFIG_SAMPLE_HW_BREAKPOINT is not set +# CONFIG_SAMPLE_FPROBE is not set +# CONFIG_SAMPLE_KFIFO is not set +# CONFIG_SAMPLE_KDB is not set +# CONFIG_SAMPLE_RPMSG_CLIENT is not set +# CONFIG_SAMPLE_LIVEPATCH is not set +# CONFIG_SAMPLE_CONFIGFS is not set +CONFIG_SAMPLE_TSM_MR=m +# CONFIG_SAMPLE_VFIO_MDEV_MTTY is not set +# CONFIG_SAMPLE_VFIO_MDEV_MDPY is not set +# CONFIG_SAMPLE_VFIO_MDEV_MDPY_FB is not set +# CONFIG_SAMPLE_VFIO_MDEV_MBOCHS is not set +CONFIG_SAMPLE_WATCHDOG=y +CONFIG_SAMPLE_HUNG_TASK=m +# CONFIG_SAMPLES_RUST is not set + +# +# DAMON Samples +# +# end of DAMON Samples + +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y +CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +CONFIG_STRICT_DEVMEM=y +# CONFIG_IO_STRICT_DEVMEM is not set + +# +# x86 Debugging +# +CONFIG_EARLY_PRINTK_USB=y +# CONFIG_X86_VERBOSE_BOOTUP is not set +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +CONFIG_EARLY_PRINTK_USB_XDBC=y +# CONFIG_EFI_PGT_DUMP is not set +# CONFIG_DEBUG_TLBFLUSH is not set +# CONFIG_IOMMU_DEBUG is not set +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +# CONFIG_X86_DECODER_SELFTEST is not set +# CONFIG_IO_DELAY_0X80 is not set +CONFIG_IO_DELAY_0XED=y +# CONFIG_IO_DELAY_UDELAY is not set +# CONFIG_IO_DELAY_NONE is not set +# CONFIG_DEBUG_BOOT_PARAMS is not set +# 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=m +# CONFIG_UNWINDER_ORC is not set +CONFIG_UNWINDER_FRAME_POINTER=y +# end of x86 Debugging + +# +# Kernel Testing and Coverage +# +# CONFIG_KUNIT is not set +CONFIG_NOTIFIER_ERROR_INJECTION=m +CONFIG_PM_NOTIFIER_ERROR_INJECT=m +# CONFIG_NETDEV_NOTIFIER_ERROR_INJECT is not set +CONFIG_FUNCTION_ERROR_INJECTION=y +# CONFIG_FAULT_INJECTION is not set +CONFIG_ARCH_HAS_KCOV=y +# CONFIG_KCOV is not set +CONFIG_RUNTIME_TESTING_MENU=y +# CONFIG_TEST_DHRY is not set +# CONFIG_LKDTM is not set +# CONFIG_TEST_DIV64 is not set +# CONFIG_TEST_MULDIV64 is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_TEST_REF_TRACKER 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_ASYNC_RAID6_TEST is not set +# CONFIG_TEST_HEXDUMP is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_BITMAP is not set +# CONFIG_TEST_XARRAY is not set +# CONFIG_TEST_MAPLE_TREE is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_IDA is not set +# CONFIG_TEST_PARMAN is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_BITOPS is not set +# CONFIG_TEST_VMALLOC is not set +CONFIG_TEST_BPF=m +# CONFIG_FIND_BIT_BENCHMARK is not set +# CONFIG_FIND_BIT_BENCHMARK_RUST is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_SYSCTL is not set +# CONFIG_CONTEXT_ANALYSIS_TEST is not set +# CONFIG_LIVEUPDATE_TEST is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_STATIC_KEYS is not set +# CONFIG_TEST_DYNAMIC_DEBUG is not set +# CONFIG_TEST_KMOD is not set +# CONFIG_TEST_KALLSYMS is not set +# CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_OBJAGG is not set +# CONFIG_TEST_MEMINIT is not set +# CONFIG_TEST_HMM is not set +# CONFIG_TEST_FREE_PAGES is not set +# CONFIG_TEST_FPU is not set +# CONFIG_TEST_CLOCKSOURCE_WATCHDOG is not set +# CONFIG_TEST_OBJPOOL is not set +# CONFIG_TEST_KEXEC_HANDOVER is not set +CONFIG_ARCH_USE_MEMTEST=y +CONFIG_MEMTEST=y +# CONFIG_HYPERV_TESTING is not set +# end of Kernel Testing and Coverage + +# +# Rust hacking +# +# CONFIG_RUST_DEBUG_ASSERTIONS is not set +CONFIG_RUST_OVERFLOW_CHECKS=y +# CONFIG_RUST_BUILD_ASSERT_ALLOW is not set +# end of Rust hacking +# end of Kernel hacking + +CONFIG_IO_URING_ZCRX=y +CONFIG_IO_URING_BPF=y diff --git a/research/h25-c05-at-random-producer-events/inputs/input-004.data b/research/h25-c05-at-random-producer-events/inputs/input-004.data new file mode 100644 index 0000000000..8c5157c925 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-004.data @@ -0,0 +1,2031 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * linux/fs/exec.c + * + * Copyright (C) 1991, 1992 Linus Torvalds + */ + +/* + * #!-checking implemented by tytso. + */ +/* + * Demand-loading implemented 01.12.91 - no need to read anything but + * the header into memory. The inode of the executable is put into + * "current->executable", and page faults do the actual loading. Clean. + * + * Once more I can proudly say that linux stood up to being changed: it + * was less than 2 hours work to get demand-loading completely implemented. + * + * Demand loading changed July 1993 by Eric Youngdale. Use mmap instead, + * current->executable is only used by the procfs. This allows a dispatch + * table to check for several different types of binary formats. We keep + * trying until we recognize the file or we run out of supported binary + * formats. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include "internal.h" + +#include + +/* For vma exec functions. */ +#include "../mm/internal.h" + +static int bprm_creds_from_file(struct linux_binprm *bprm); + +int suid_dumpable = 0; + +static LIST_HEAD(formats); +static DEFINE_RWLOCK(binfmt_lock); + +void __register_binfmt(struct linux_binfmt * fmt, int insert) +{ + write_lock(&binfmt_lock); + insert ? list_add(&fmt->lh, &formats) : + list_add_tail(&fmt->lh, &formats); + write_unlock(&binfmt_lock); +} + +EXPORT_SYMBOL(__register_binfmt); + +void unregister_binfmt(struct linux_binfmt * fmt) +{ + write_lock(&binfmt_lock); + list_del(&fmt->lh); + write_unlock(&binfmt_lock); +} + +EXPORT_SYMBOL(unregister_binfmt); + +static inline void put_binfmt(struct linux_binfmt * fmt) +{ + module_put(fmt->module); +} + +bool path_noexec(const struct path *path) +{ + /* If it's an anonymous inode make sure that we catch any shenanigans. */ + VFS_WARN_ON_ONCE(IS_ANON_FILE(d_inode(path->dentry)) && + !(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC)); + return (path->mnt->mnt_flags & MNT_NOEXEC) || + (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); +} + +#ifdef CONFIG_MMU +/* + * The nascent bprm->mm is not visible until exec_mmap() but it can + * use a lot of memory, account these pages in current->mm temporary + * for oom_badness()->get_mm_rss(). Once exec succeeds or fails, we + * change the counter back via acct_arg_size(0). + */ +static void acct_arg_size(struct linux_binprm *bprm, unsigned long pages) +{ + struct mm_struct *mm = current->mm; + long diff = (long)(pages - bprm->vma_pages); + + if (!mm || !diff) + return; + + bprm->vma_pages = pages; + add_mm_counter(mm, MM_ANONPAGES, diff); +} + +static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, + int write) +{ + struct page *page; + struct vm_area_struct *vma = bprm->vma; + struct mm_struct *mm = bprm->mm; + int ret; + + /* + * Avoid relying on expanding the stack down in GUP (which + * does not work for STACK_GROWSUP anyway), and just do it + * ahead of time. + */ + if (!mmap_read_lock_maybe_expand(mm, vma, pos, write)) + return NULL; + + /* + * We are doing an exec(). 'current' is the process + * doing the exec and 'mm' is the new process's mm. + */ + ret = get_user_pages_remote(mm, pos, 1, + write ? FOLL_WRITE : 0, + &page, NULL); + mmap_read_unlock(mm); + if (ret <= 0) + return NULL; + + if (write) + acct_arg_size(bprm, vma_pages(vma)); + + return page; +} + +static void put_arg_page(struct page *page) +{ + put_page(page); +} + +static void free_arg_pages(struct linux_binprm *bprm) +{ +} + +static void flush_arg_page(struct linux_binprm *bprm, unsigned long pos, + struct page *page) +{ + flush_cache_page(bprm->vma, pos, page_to_pfn(page)); +} + +static bool valid_arg_len(struct linux_binprm *bprm, long len) +{ + return len <= MAX_ARG_STRLEN; +} + +#else + +static inline void acct_arg_size(struct linux_binprm *bprm, unsigned long pages) +{ +} + +static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, + int write) +{ + struct page *page; + + page = bprm->page[pos / PAGE_SIZE]; + if (!page && write) { + page = alloc_page(GFP_HIGHUSER|__GFP_ZERO); + if (!page) + return NULL; + bprm->page[pos / PAGE_SIZE] = page; + } + + return page; +} + +static void put_arg_page(struct page *page) +{ +} + +static void free_arg_page(struct linux_binprm *bprm, int i) +{ + if (bprm->page[i]) { + __free_page(bprm->page[i]); + bprm->page[i] = NULL; + } +} + +static void free_arg_pages(struct linux_binprm *bprm) +{ + int i; + + for (i = 0; i < MAX_ARG_PAGES; i++) + free_arg_page(bprm, i); +} + +static void flush_arg_page(struct linux_binprm *bprm, unsigned long pos, + struct page *page) +{ +} + +static bool valid_arg_len(struct linux_binprm *bprm, long len) +{ + return len <= bprm->p; +} + +#endif /* CONFIG_MMU */ + +/* + * Create a new mm_struct and populate it with a temporary stack + * vm_area_struct. We don't have enough context at this point to set the stack + * flags, permissions, and offset, so we use temporary values. We'll update + * them later in setup_arg_pages(). + */ +static int bprm_mm_init(struct linux_binprm *bprm) +{ + int err; + struct mm_struct *mm = NULL; + + bprm->mm = mm = mm_alloc(); + err = -ENOMEM; + if (!mm) + goto err; + + /* Save current stack limit for all calculations made during exec. */ + task_lock(current->group_leader); + bprm->rlim_stack = current->signal->rlim[RLIMIT_STACK]; + task_unlock(current->group_leader); + +#ifndef CONFIG_MMU + bprm->p = PAGE_SIZE * MAX_ARG_PAGES - sizeof(void *); +#else + err = create_init_stack_vma(bprm->mm, &bprm->vma, &bprm->p); + if (err) + goto err; +#endif + + return 0; + +err: + if (mm) { + bprm->mm = NULL; + mmdrop(mm); + } + + return err; +} + +struct user_arg_ptr { +#ifdef CONFIG_COMPAT + bool is_compat; +#endif + union { + const char __user *const __user *native; +#ifdef CONFIG_COMPAT + const compat_uptr_t __user *compat; +#endif + } ptr; +}; + +static const char __user *get_user_arg_ptr(struct user_arg_ptr argv, int nr) +{ + const char __user *native; + +#ifdef CONFIG_COMPAT + if (unlikely(argv.is_compat)) { + compat_uptr_t compat; + + if (get_user(compat, argv.ptr.compat + nr)) + return ERR_PTR(-EFAULT); + + return compat_ptr(compat); + } +#endif + + if (get_user(native, argv.ptr.native + nr)) + return ERR_PTR(-EFAULT); + + return native; +} + +/* + * count() counts the number of strings in array ARGV. + */ +static int count(struct user_arg_ptr argv, int max) +{ + int i = 0; + + if (argv.ptr.native != NULL) { + for (;;) { + const char __user *p = get_user_arg_ptr(argv, i); + + if (!p) + break; + + if (IS_ERR(p)) + return -EFAULT; + + if (i >= max) + return -E2BIG; + ++i; + + if (fatal_signal_pending(current)) + return -ERESTARTNOHAND; + cond_resched(); + } + } + return i; +} + +static int count_strings_kernel(const char *const *argv) +{ + int i; + + if (!argv) + return 0; + + for (i = 0; argv[i]; ++i) { + if (i >= MAX_ARG_STRINGS) + return -E2BIG; + if (fatal_signal_pending(current)) + return -ERESTARTNOHAND; + cond_resched(); + } + return i; +} + +static inline int bprm_set_stack_limit(struct linux_binprm *bprm, + unsigned long limit) +{ +#ifdef CONFIG_MMU + /* Avoid a pathological bprm->p. */ + if (bprm->p < limit) + return -E2BIG; + bprm->argmin = bprm->p - limit; +#endif + return 0; +} +static inline bool bprm_hit_stack_limit(struct linux_binprm *bprm) +{ +#ifdef CONFIG_MMU + return bprm->p < bprm->argmin; +#else + return false; +#endif +} + +/* + * Calculate bprm->argmin from: + * - _STK_LIM + * - ARG_MAX + * - bprm->rlim_stack.rlim_cur + * - bprm->argc + * - bprm->envc + * - bprm->p + */ +static int bprm_stack_limits(struct linux_binprm *bprm) +{ + unsigned long limit, ptr_size; + + /* + * Limit to 1/4 of the max stack size or 3/4 of _STK_LIM + * (whichever is smaller) for the argv+env strings. + * This ensures that: + * - the remaining binfmt code will not run out of stack space, + * - the program will have a reasonable amount of stack left + * to work from. + */ + limit = _STK_LIM / 4 * 3; + limit = min(limit, bprm->rlim_stack.rlim_cur / 4); + /* + * We've historically supported up to 32 pages (ARG_MAX) + * of argument strings even with small stacks + */ + limit = max_t(unsigned long, limit, ARG_MAX); + /* Reject totally pathological counts. */ + if (bprm->argc < 0 || bprm->envc < 0) + return -E2BIG; + /* + * We must account for the size of all the argv and envp pointers to + * the argv and envp strings, since they will also take up space in + * the stack. They aren't stored until much later when we can't + * signal to the parent that the child has run out of stack space. + * Instead, calculate it here so it's possible to fail gracefully. + * + * In the case of argc = 0, make sure there is space for adding a + * empty string (which will bump argc to 1), to ensure confused + * userspace programs don't start processing from argv[1], thinking + * argc can never be 0, to keep them from walking envp by accident. + * See do_execveat_common(). + */ + if (check_add_overflow(max(bprm->argc, 1), bprm->envc, &ptr_size) || + check_mul_overflow(ptr_size, sizeof(void *), &ptr_size)) + return -E2BIG; + if (limit <= ptr_size) + return -E2BIG; + limit -= ptr_size; + + return bprm_set_stack_limit(bprm, limit); +} + +/* + * 'copy_strings()' copies argument/environment strings from the old + * processes's memory to the new process's stack. The call to get_user_pages() + * ensures the destination page is created and not swapped out. + */ +static int copy_strings(int argc, struct user_arg_ptr argv, + struct linux_binprm *bprm) +{ + struct page *kmapped_page = NULL; + char *kaddr = NULL; + unsigned long kpos = 0; + int ret; + + while (argc-- > 0) { + const char __user *str; + int len; + unsigned long pos; + + ret = -EFAULT; + str = get_user_arg_ptr(argv, argc); + if (IS_ERR(str)) + goto out; + + len = strnlen_user(str, MAX_ARG_STRLEN); + if (!len) + goto out; + + ret = -E2BIG; + if (!valid_arg_len(bprm, len)) + goto out; + + /* We're going to work our way backwards. */ + pos = bprm->p; + str += len; + bprm->p -= len; + if (bprm_hit_stack_limit(bprm)) + goto out; + + while (len > 0) { + int offset, bytes_to_copy; + + if (fatal_signal_pending(current)) { + ret = -ERESTARTNOHAND; + goto out; + } + cond_resched(); + + offset = pos % PAGE_SIZE; + if (offset == 0) + offset = PAGE_SIZE; + + bytes_to_copy = offset; + if (bytes_to_copy > len) + bytes_to_copy = len; + + offset -= bytes_to_copy; + pos -= bytes_to_copy; + str -= bytes_to_copy; + len -= bytes_to_copy; + + if (!kmapped_page || kpos != (pos & PAGE_MASK)) { + struct page *page; + + page = get_arg_page(bprm, pos, 1); + if (!page) { + ret = -E2BIG; + goto out; + } + + if (kmapped_page) { + flush_dcache_page(kmapped_page); + kunmap_local(kaddr); + put_arg_page(kmapped_page); + } + kmapped_page = page; + kaddr = kmap_local_page(kmapped_page); + kpos = pos & PAGE_MASK; + flush_arg_page(bprm, kpos, kmapped_page); + } + if (copy_from_user(kaddr+offset, str, bytes_to_copy)) { + ret = -EFAULT; + goto out; + } + } + } + ret = 0; +out: + if (kmapped_page) { + flush_dcache_page(kmapped_page); + kunmap_local(kaddr); + put_arg_page(kmapped_page); + } + return ret; +} + +/* + * Copy and argument/environment string from the kernel to the processes stack. + */ +int copy_string_kernel(const char *arg, struct linux_binprm *bprm) +{ + int len = strnlen(arg, MAX_ARG_STRLEN) + 1 /* terminating NUL */; + unsigned long pos = bprm->p; + + if (len == 0) + return -EFAULT; + if (!valid_arg_len(bprm, len)) + return -E2BIG; + + /* We're going to work our way backwards. */ + arg += len; + bprm->p -= len; + if (bprm_hit_stack_limit(bprm)) + return -E2BIG; + + while (len > 0) { + unsigned int bytes_to_copy = min(len, + min_not_zero(offset_in_page(pos), PAGE_SIZE)); + struct page *page; + + pos -= bytes_to_copy; + arg -= bytes_to_copy; + len -= bytes_to_copy; + + page = get_arg_page(bprm, pos, 1); + if (!page) + return -E2BIG; + flush_arg_page(bprm, pos & PAGE_MASK, page); + memcpy_to_page(page, offset_in_page(pos), arg, bytes_to_copy); + put_arg_page(page); + } + + return 0; +} +EXPORT_SYMBOL(copy_string_kernel); + +static int copy_strings_kernel(int argc, const char *const *argv, + struct linux_binprm *bprm) +{ + while (argc-- > 0) { + int ret = copy_string_kernel(argv[argc], bprm); + if (ret < 0) + return ret; + if (fatal_signal_pending(current)) + return -ERESTARTNOHAND; + cond_resched(); + } + return 0; +} + +#ifdef CONFIG_MMU + +/* + * Finalizes the stack vm_area_struct. The flags and permissions are updated, + * the stack is optionally relocated, and some extra space is added. + */ +int setup_arg_pages(struct linux_binprm *bprm, + unsigned long stack_top, + int executable_stack) +{ + int ret; + unsigned long stack_shift; + struct mm_struct *mm = current->mm; + struct vm_area_struct *vma = bprm->vma; + struct vm_area_struct *prev = NULL; + vm_flags_t vm_flags; + unsigned long stack_base; + unsigned long stack_size; + unsigned long stack_expand; + unsigned long rlim_stack; + struct mmu_gather tlb; + struct vma_iterator vmi; + +#ifdef CONFIG_STACK_GROWSUP + /* Limit stack size */ + stack_base = bprm->rlim_stack.rlim_max; + + stack_base = calc_max_stack_size(stack_base); + + /* Add space for stack randomization. */ + if (current->flags & PF_RANDOMIZE) + stack_base += (STACK_RND_MASK << PAGE_SHIFT); + + /* Make sure we didn't let the argument array grow too large. */ + if (vma->vm_end - vma->vm_start > stack_base) + return -ENOMEM; + + stack_base = PAGE_ALIGN(stack_top - stack_base); + + stack_shift = vma->vm_start - stack_base; + mm->arg_start = bprm->p - stack_shift; + bprm->p = vma->vm_end - stack_shift; +#else + stack_top = arch_align_stack(stack_top); + stack_top = PAGE_ALIGN(stack_top); + + if (unlikely(stack_top < mmap_min_addr) || + unlikely(vma->vm_end - vma->vm_start >= stack_top - mmap_min_addr)) + return -ENOMEM; + + stack_shift = vma->vm_end - stack_top; + + bprm->p -= stack_shift; + mm->arg_start = bprm->p; +#endif + + bprm->exec -= stack_shift; + + if (mmap_write_lock_killable(mm)) + return -EINTR; + + vm_flags = VM_STACK_FLAGS; + + /* + * Adjust stack execute permissions; explicitly enable for + * EXSTACK_ENABLE_X, disable for EXSTACK_DISABLE_X and leave alone + * (arch default) otherwise. + */ + if (unlikely(executable_stack == EXSTACK_ENABLE_X)) + vm_flags |= VM_EXEC; + else if (executable_stack == EXSTACK_DISABLE_X) + vm_flags &= ~VM_EXEC; + vm_flags |= mm->def_flags; + vm_flags |= VM_STACK_INCOMPLETE_SETUP; + + vma_iter_init(&vmi, mm, vma->vm_start); + + tlb_gather_mmu(&tlb, mm); + ret = mprotect_fixup(&vmi, &tlb, vma, &prev, vma->vm_start, vma->vm_end, + vm_flags); + tlb_finish_mmu(&tlb); + + if (ret) + goto out_unlock; + BUG_ON(prev != vma); + + if (unlikely(vm_flags & VM_EXEC)) { + pr_warn_once("process '%pD4' started with executable stack\n", + bprm->file); + } + + /* Move stack pages down in memory. */ + if (stack_shift) { + /* + * During bprm_mm_init(), we create a temporary stack at STACK_TOP_MAX. Once + * the binfmt code determines where the new stack should reside, we shift it to + * its final location. + */ + ret = relocate_vma_down(vma, stack_shift); + if (ret) + goto out_unlock; + } + + /* mprotect_fixup is overkill to remove the temporary stack flags */ + vm_flags_clear(vma, VM_STACK_INCOMPLETE_SETUP); + + stack_expand = 131072UL; /* randomly 32*4k (or 2*64k) pages */ + stack_size = vma->vm_end - vma->vm_start; + /* + * Align this down to a page boundary as expand_stack + * will align it up. + */ + rlim_stack = bprm->rlim_stack.rlim_cur & PAGE_MASK; + + stack_expand = min(rlim_stack, stack_size + stack_expand); + +#ifdef CONFIG_STACK_GROWSUP + stack_base = vma->vm_start + stack_expand; +#else + stack_base = vma->vm_end - stack_expand; +#endif + current->mm->start_stack = bprm->p; + ret = expand_stack_locked(vma, stack_base); + if (ret) + ret = -EFAULT; + +out_unlock: + mmap_write_unlock(mm); + return ret; +} +EXPORT_SYMBOL(setup_arg_pages); + +#else + +/* + * Transfer the program arguments and environment from the holding pages + * onto the stack. The provided stack pointer is adjusted accordingly. + */ +int transfer_args_to_stack(struct linux_binprm *bprm, + unsigned long *sp_location) +{ + unsigned long index, stop, sp; + int ret = 0; + + stop = bprm->p >> PAGE_SHIFT; + sp = *sp_location; + + for (index = MAX_ARG_PAGES; index-- > stop; ) { + unsigned int offset = index == stop ? bprm->p & ~PAGE_MASK : 0; + char *src = kmap_local_page(bprm->page[index]) + offset; + sp -= PAGE_SIZE - offset; + if (copy_to_user((void *) sp, src, PAGE_SIZE - offset) != 0) + ret = -EFAULT; + kunmap_local(src); + if (ret) + goto out; + } + + bprm->exec += *sp_location - MAX_ARG_PAGES * PAGE_SIZE; + *sp_location = sp; + +out: + return ret; +} +EXPORT_SYMBOL(transfer_args_to_stack); + +#endif /* CONFIG_MMU */ + +/* + * On success, caller must call do_close_execat() on the returned + * struct file to close it. + */ +static struct file *do_open_execat(int fd, struct filename *name, int flags) +{ + int err; + struct file *file __free(fput) = NULL; + struct open_flags open_exec_flags = { + .open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC, + .acc_mode = MAY_EXEC, + .intent = LOOKUP_OPEN, + .lookup_flags = LOOKUP_FOLLOW, + }; + + if ((flags & + ~(AT_SYMLINK_NOFOLLOW | AT_EMPTY_PATH | AT_EXECVE_CHECK)) != 0) + return ERR_PTR(-EINVAL); + if (flags & AT_SYMLINK_NOFOLLOW) + open_exec_flags.lookup_flags &= ~LOOKUP_FOLLOW; + + file = do_file_open(fd, name, &open_exec_flags); + if (IS_ERR(file)) + return file; + + if (path_noexec(&file->f_path)) + return ERR_PTR(-EACCES); + + /* + * In the past the regular type check was here. It moved to may_open() in + * 633fb6ac3980 ("exec: move S_ISREG() check earlier"). Since then it is + * an invariant that all non-regular files error out before we get here. + */ + if (WARN_ON_ONCE(!S_ISREG(file_inode(file)->i_mode))) + return ERR_PTR(-EACCES); + + err = exe_file_deny_write_access(file); + if (err) + return ERR_PTR(err); + + return no_free_ptr(file); +} + +/** + * open_exec - Open a path name for execution + * + * @name: path name to open with the intent of executing it. + * + * Returns ERR_PTR on failure or allocated struct file on success. + * + * As this is a wrapper for the internal do_open_execat(), callers + * must call exe_file_allow_write_access() before fput() on release. Also see + * do_close_execat(). + */ +struct file *open_exec(const char *name) +{ + CLASS(filename_kernel, filename)(name); + return do_open_execat(AT_FDCWD, filename, 0); +} +EXPORT_SYMBOL(open_exec); + +#if defined(CONFIG_BINFMT_FLAT) || defined(CONFIG_BINFMT_ELF_FDPIC) +ssize_t read_code(struct file *file, unsigned long addr, loff_t pos, size_t len) +{ + ssize_t res = vfs_read(file, (void __user *)addr, len, &pos); + if (res > 0) + flush_icache_user_range(addr, addr + len); + return res; +} +EXPORT_SYMBOL(read_code); +#endif + +/* + * Maps the mm_struct mm into the current task struct. + * On success, this function returns with exec_update_lock + * held for writing. + */ +static int exec_mmap(struct mm_struct *mm) +{ + struct task_struct *tsk; + struct mm_struct *old_mm, *active_mm; + int ret; + + /* Notify parent that we're no longer interested in the old VM */ + tsk = current; + old_mm = current->mm; + /* Clean up futexes and release the mm */ + exec_mm_release(tsk, old_mm); + + ret = down_write_killable(&tsk->signal->exec_update_lock); + if (ret) + return ret; + + if (old_mm) { + /* + * If there is a pending fatal signal perhaps a signal + * whose default action is to create a coredump get + * out and die instead of going through with the exec. + */ + ret = mmap_read_lock_killable(old_mm); + if (ret) { + up_write(&tsk->signal->exec_update_lock); + return ret; + } + } + + task_lock(tsk); + membarrier_exec_mmap(mm); + + local_irq_disable(); + active_mm = tsk->active_mm; + tsk->active_mm = mm; + tsk->mm = mm; + mm_init_cid(mm, tsk); + /* + * This prevents preemption while active_mm is being loaded and + * it and mm are being updated, which could cause problems for + * lazy tlb mm refcounting when these are updated by context + * switches. Not all architectures can handle irqs off over + * activate_mm yet. + */ + if (!IS_ENABLED(CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM)) + local_irq_enable(); + activate_mm(active_mm, mm); + if (IS_ENABLED(CONFIG_ARCH_WANT_IRQS_OFF_ACTIVATE_MM)) + local_irq_enable(); + lru_gen_add_mm(mm); + task_unlock(tsk); + lru_gen_use_mm(mm); + if (old_mm) { + mmap_read_unlock(old_mm); + BUG_ON(active_mm != old_mm); + setmax_mm_hiwater_rss(&tsk->signal->maxrss, old_mm); + mm_update_next_owner(old_mm); + mmput(old_mm); + } else { + mmdrop_lazy_tlb(active_mm); + } + + futex_exec_done(tsk); + return 0; +} + +static int de_thread(struct task_struct *tsk) +{ + struct signal_struct *sig = tsk->signal; + struct sighand_struct *oldsighand = tsk->sighand; + spinlock_t *lock = &oldsighand->siglock; + + if (thread_group_empty(tsk)) + goto no_thread_group; + + /* + * Kill all other threads in the thread group. + */ + spin_lock_irq(lock); + if ((sig->flags & SIGNAL_GROUP_EXIT) || sig->group_exec_task) { + /* + * Another group action in progress, just + * return so that the signal is processed. + */ + spin_unlock_irq(lock); + return -EAGAIN; + } + + sig->group_exec_task = tsk; + sig->notify_count = zap_other_threads(tsk); + if (!thread_group_leader(tsk)) + sig->notify_count--; + + while (sig->notify_count) { + __set_current_state(TASK_KILLABLE); + spin_unlock_irq(lock); + schedule(); + if (__fatal_signal_pending(tsk)) + goto killed; + spin_lock_irq(lock); + } + spin_unlock_irq(lock); + + /* + * At this point all other threads have exited, all we have to + * do is to wait for the thread group leader to become inactive, + * and to assume its PID: + */ + if (!thread_group_leader(tsk)) { + struct task_struct *leader = tsk->group_leader; + + for (;;) { + cgroup_threadgroup_change_begin(tsk); + write_lock_irq(&tasklist_lock); + /* + * Do this under tasklist_lock to ensure that + * exit_notify() can't miss ->group_exec_task + */ + sig->notify_count = -1; + if (likely(leader->exit_state)) + break; + __set_current_state(TASK_KILLABLE); + write_unlock_irq(&tasklist_lock); + cgroup_threadgroup_change_end(tsk); + schedule(); + if (__fatal_signal_pending(tsk)) + goto killed; + } + + /* + * The only record we have of the real-time age of a + * process, regardless of execs it's done, is start_time. + * All the past CPU time is accumulated in signal_struct + * from sister threads now dead. But in this non-leader + * exec, nothing survives from the original leader thread, + * whose birth marks the true age of this process now. + * When we take on its identity by switching to its PID, we + * also take its birthdate (always earlier than our own). + */ + tsk->start_time = leader->start_time; + tsk->start_boottime = leader->start_boottime; + + BUG_ON(!same_thread_group(leader, tsk)); + /* + * An exec() starts a new thread group with the + * TGID of the previous thread group. Rehash the + * two threads with a switched PID, and release + * the former thread group leader: + */ + + /* Become a process group leader with the old leader's pid. + * The old leader becomes a thread of the this thread group. + */ + exchange_tids(tsk, leader); + transfer_pid(leader, tsk, PIDTYPE_TGID); + transfer_pid(leader, tsk, PIDTYPE_PGID); + transfer_pid(leader, tsk, PIDTYPE_SID); + + list_replace_rcu(&leader->tasks, &tsk->tasks); + list_replace_init(&leader->sibling, &tsk->sibling); + + tsk->group_leader = tsk; + leader->group_leader = tsk; + + tsk->exit_signal = SIGCHLD; + leader->exit_signal = -1; + + BUG_ON(leader->exit_state != EXIT_ZOMBIE); + leader->exit_state = EXIT_DEAD; + /* + * We are going to release_task()->ptrace_unlink() silently, + * the tracer can sleep in do_wait(). EXIT_DEAD guarantees + * the tracer won't block again waiting for this thread. + */ + if (unlikely(leader->ptrace)) + __wake_up_parent(leader, leader->parent); + write_unlock_irq(&tasklist_lock); + cgroup_threadgroup_change_end(tsk); + + release_task(leader); + } + + sig->group_exec_task = NULL; + sig->notify_count = 0; + +no_thread_group: + /* we have changed execution domain */ + tsk->exit_signal = SIGCHLD; + + BUG_ON(!thread_group_leader(tsk)); + return 0; + +killed: + /* protects against exit_notify() and __exit_signal() */ + read_lock(&tasklist_lock); + sig->group_exec_task = NULL; + sig->notify_count = 0; + read_unlock(&tasklist_lock); + return -EAGAIN; +} + + +/* + * This function makes sure the current process has its own signal table, + * so that flush_signal_handlers can later reset the handlers without + * disturbing other processes. (Other processes might share the signal + * table via the CLONE_SIGHAND option to clone().) + */ +static int unshare_sighand(struct task_struct *me) +{ + struct sighand_struct *oldsighand = me->sighand; + + if (refcount_read(&oldsighand->count) != 1) { + struct sighand_struct *newsighand; + /* + * This ->sighand is shared with the CLONE_SIGHAND + * but not CLONE_THREAD task, switch to the new one. + */ + newsighand = kmem_cache_alloc(sighand_cachep, GFP_KERNEL); + if (!newsighand) + return -ENOMEM; + + refcount_set(&newsighand->count, 1); + + write_lock_irq(&tasklist_lock); + spin_lock(&oldsighand->siglock); + memcpy(newsighand->action, oldsighand->action, + sizeof(newsighand->action)); + rcu_assign_pointer(me->sighand, newsighand); + spin_unlock(&oldsighand->siglock); + write_unlock_irq(&tasklist_lock); + + __cleanup_sighand(oldsighand); + } + return 0; +} + +/* + * This is unlocked -- the string will always be NUL-terminated, but + * may show overlapping contents if racing concurrent reads. + */ +void __set_task_comm(struct task_struct *tsk, const char *buf, bool exec) +{ + size_t len = min(strlen(buf), sizeof(tsk->comm) - 1); + + trace_task_rename(tsk, buf); + memcpy(tsk->comm, buf, len); + memset(&tsk->comm[len], 0, sizeof(tsk->comm) - len); + perf_event_comm(tsk, exec); +} + +static void posixtimer_exec(struct task_struct *me) +{ +#ifdef CONFIG_POSIX_TIMERS + spin_lock_irq(&me->sighand->siglock); + posix_cpu_timers_exit(me); + spin_unlock_irq(&me->sighand->siglock); + exit_itimers(me); + flush_itimer_signals(); +#endif +} + +/* + * Calling this is the point of no return. None of the failures will be + * seen by userspace since either the process is already taking a fatal + * signal (via de_thread() or coredump), or will have SEGV raised + * (after exec_mmap()) by search_binary_handler (see below). + */ +int begin_new_exec(struct linux_binprm * bprm) +{ + struct task_struct *me = current; + int retval; + + /* Once we are committed compute the creds */ + retval = bprm_creds_from_file(bprm); + if (retval) + return retval; + + /* + * This tracepoint marks the point before flushing the old exec where + * the current task is still unchanged, but errors are fatal (point of + * no return). The later "sched_process_exec" tracepoint is called after + * the current task has successfully switched to the new exec. + */ + trace_sched_prepare_exec(current, bprm); + + /* + * Ensure all future errors are fatal. + */ + bprm->point_of_no_return = true; + + /* Make this the only thread in the thread group */ + retval = de_thread(me); + if (retval) + goto out; + + /* + * This must be done here to ensure that POSIX CPU timers which were + * armed on the current task are dequeued from me::posix_cputimers. + * Otherwise in case of a TID switch the deletion of the related POSIX + * timer would not remove an enqueued timer because the TID lookup + * of the old TID fails. + */ + posixtimer_exec(me); + + /* see the comment in check_unsafe_exec() */ + current->fs->in_exec = 0; + /* + * Cancel any io_uring activity across execve + */ + io_uring_task_cancel(); + + /* Ensure the files table is not shared. */ + retval = unshare_files(); + if (retval) + goto out; + + /* + * We have to apply CLOEXEC before we change whether the process is + * dumpable (in setup_new_exec) to avoid a race with a process in userspace + * trying to access the should-be-closed file descriptors of a process + * undergoing exec(2). + * + * This can block on filesystem ->flush() handlers, including waiting + * for FUSE daemons, so do it before exec_mmap takes the + * exec_update_lock. + * This must happen after the point of no return, and after unsharing + * the FD table. + */ + do_close_on_exec(me->files); + + /* + * Must be called _before_ exec_mmap() as bprm->mm is + * not visible until then. Doing it here also ensures + * we don't race against replace_mm_exe_file(). + */ + retval = set_mm_exe_file(bprm->mm, bprm->file); + if (retval) + goto out; + + /* If the binary is not readable then enforce mm->dumpable=0 */ + would_dump(bprm, bprm->file); + if (bprm->have_execfd) + would_dump(bprm, bprm->executable); + + /* + * Release all of the old mmap stuff + */ + acct_arg_size(bprm, 0); + retval = exec_mmap(bprm->mm); + if (retval) + goto out; + + bprm->mm = NULL; + + retval = exec_task_namespaces(); + if (retval) + goto out_unlock; + + /* + * Make the signal table private. + */ + retval = unshare_sighand(me); + if (retval) + goto out_unlock; + + me->flags &= ~(PF_RANDOMIZE | PF_FORKNOEXEC | + PF_NOFREEZE | PF_NO_SETAFFINITY); + flush_thread(); + me->personality &= ~bprm->per_clear; + + clear_syscall_work_syscall_user_dispatch(me); + + if (bprm->secureexec) { + /* Make sure parent cannot signal privileged process. */ + me->pdeath_signal = 0; + + /* + * For secureexec, reset the stack limit to sane default to + * avoid bad behavior from the prior rlimits. This has to + * happen before arch_pick_mmap_layout(), which examines + * RLIMIT_STACK, but after the point of no return to avoid + * needing to clean up the change on failure. + */ + if (bprm->rlim_stack.rlim_cur > _STK_LIM) + bprm->rlim_stack.rlim_cur = _STK_LIM; + } + + me->sas_ss_sp = me->sas_ss_size = 0; + + /* + * Figure out dumpability. Note that this checking only of current + * is wrong, but userspace depends on it. This should be testing + * bprm->secureexec instead. + */ + if (bprm->interp_flags & BINPRM_FLAGS_ENFORCE_NONDUMP || + !(uid_eq(current_euid(), current_uid()) && + gid_eq(current_egid(), current_gid()))) + set_dumpable(current->mm, suid_dumpable); + else + set_dumpable(current->mm, SUID_DUMP_USER); + + perf_event_exec(); + + /* + * If the original filename was empty, alloc_bprm() made up a path + * that will probably not be useful to admins running ps or similar. + * Let's fix it up to be something reasonable. + */ + if (bprm->comm_from_dentry) { + /* + * Hold RCU lock to keep the name from being freed behind our back. + * Use acquire semantics to make sure the terminating NUL from + * __d_alloc() is seen. + * + * Note, we're deliberately sloppy here. We don't need to care about + * detecting a concurrent rename and just want a terminated name. + */ + rcu_read_lock(); + __set_task_comm(me, smp_load_acquire(&bprm->file->f_path.dentry->d_name.name), + true); + rcu_read_unlock(); + } else { + __set_task_comm(me, kbasename(bprm->filename), true); + } + + /* An exec changes our domain. We are no longer part of the thread + group */ + WRITE_ONCE(me->self_exec_id, me->self_exec_id + 1); + flush_signal_handlers(me, 0); + + retval = set_cred_ucounts(bprm->cred); + if (retval < 0) + goto out_unlock; + + /* + * install the new credentials for this executable + */ + security_bprm_committing_creds(bprm); + + commit_creds(bprm->cred); + bprm->cred = NULL; + + /* + * Disable monitoring for regular users + * when executing setuid binaries. Must + * wait until new credentials are committed + * by commit_creds() above + */ + if (get_dumpable(me->mm) != SUID_DUMP_USER) + perf_event_exit_task(me); + /* + * cred_guard_mutex must be held at least to this point to prevent + * ptrace_attach() from altering our determination of the task's + * credentials; any time after this it may be unlocked. + */ + security_bprm_committed_creds(bprm); + + /* Pass the opened binary to the interpreter. */ + if (bprm->have_execfd) { + retval = FD_ADD(0, bprm->executable); + if (retval < 0) + goto out_unlock; + bprm->executable = NULL; + bprm->execfd = retval; + } + return 0; + +out_unlock: + up_write(&me->signal->exec_update_lock); + if (!bprm->cred) + mutex_unlock(&me->signal->cred_guard_mutex); + +out: + return retval; +} +EXPORT_SYMBOL(begin_new_exec); + +void would_dump(struct linux_binprm *bprm, struct file *file) +{ + struct inode *inode = file_inode(file); + struct mnt_idmap *idmap = file_mnt_idmap(file); + if (inode_permission(idmap, inode, MAY_READ) < 0) { + struct user_namespace *old, *user_ns; + bprm->interp_flags |= BINPRM_FLAGS_ENFORCE_NONDUMP; + + /* Ensure mm->user_ns contains the executable */ + user_ns = old = bprm->mm->user_ns; + while ((user_ns != &init_user_ns) && + !privileged_wrt_inode_uidgid(user_ns, idmap, inode)) + user_ns = user_ns->parent; + + if (old != user_ns) { + bprm->mm->user_ns = get_user_ns(user_ns); + put_user_ns(old); + } + } +} +EXPORT_SYMBOL(would_dump); + +void setup_new_exec(struct linux_binprm * bprm) +{ + /* Setup things that can depend upon the personality */ + struct task_struct *me = current; + + arch_pick_mmap_layout(me->mm, &bprm->rlim_stack); + + arch_setup_new_exec(); + + /* Set the new mm task size. We have to do that late because it may + * depend on TIF_32BIT which is only updated in flush_thread() on + * some architectures like powerpc + */ + me->mm->task_size = TASK_SIZE; + up_write(&me->signal->exec_update_lock); + mutex_unlock(&me->signal->cred_guard_mutex); +} +EXPORT_SYMBOL(setup_new_exec); + +/* Runs immediately before start_thread() takes over. */ +void finalize_exec(struct linux_binprm *bprm) +{ + /* Store any stack rlimit changes before starting thread. */ + task_lock(current->group_leader); + current->signal->rlim[RLIMIT_STACK] = bprm->rlim_stack; + task_unlock(current->group_leader); +} +EXPORT_SYMBOL(finalize_exec); + +/* + * Prepare credentials and lock ->cred_guard_mutex. + * setup_new_exec() commits the new creds and drops the lock. + * Or, if exec fails before, free_bprm() should release ->cred + * and unlock. + */ +static int prepare_bprm_creds(struct linux_binprm *bprm) +{ + if (mutex_lock_interruptible(¤t->signal->cred_guard_mutex)) + return -ERESTARTNOINTR; + + bprm->cred = prepare_exec_creds(); + if (likely(bprm->cred)) + return 0; + + mutex_unlock(¤t->signal->cred_guard_mutex); + return -ENOMEM; +} + +/* Matches do_open_execat() */ +static void do_close_execat(struct file *file) +{ + if (!file) + return; + exe_file_allow_write_access(file); + fput(file); +} + +static void free_bprm(struct linux_binprm *bprm) +{ + if (bprm->mm) { + acct_arg_size(bprm, 0); + mmput(bprm->mm); + } + free_arg_pages(bprm); + if (bprm->cred) { + /* in case exec fails before de_thread() succeeds */ + current->fs->in_exec = 0; + mutex_unlock(¤t->signal->cred_guard_mutex); + abort_creds(bprm->cred); + } + do_close_execat(bprm->file); + if (bprm->executable) + fput(bprm->executable); + /* If a binfmt changed the interp, free it. */ + if (bprm->interp != bprm->filename) + kfree(bprm->interp); + kfree(bprm->fdpath); + kfree(bprm); +} + +static struct linux_binprm *alloc_bprm(int fd, struct filename *filename, int flags) +{ + struct linux_binprm *bprm; + struct file *file; + int retval = -ENOMEM; + + file = do_open_execat(fd, filename, flags); + if (IS_ERR(file)) + return ERR_CAST(file); + + bprm = kzalloc_obj(*bprm); + if (!bprm) { + do_close_execat(file); + return ERR_PTR(-ENOMEM); + } + + bprm->file = file; + + if (fd == AT_FDCWD || filename->name[0] == '/') { + bprm->filename = filename->name; + } else { + if (filename->name[0] == '\0') { + bprm->fdpath = kasprintf(GFP_KERNEL, "/dev/fd/%d", fd); + bprm->comm_from_dentry = 1; + } else { + bprm->fdpath = kasprintf(GFP_KERNEL, "/dev/fd/%d/%s", + fd, filename->name); + } + if (!bprm->fdpath) + goto out_free; + + /* + * Record that a name derived from an O_CLOEXEC fd will be + * inaccessible after exec. This allows the code in exec to + * choose to fail when the executable is not mmaped into the + * interpreter and an open file descriptor is not passed to + * the interpreter. This makes for a better user experience + * than having the interpreter start and then immediately fail + * when it finds the executable is inaccessible. + */ + if (get_close_on_exec(fd)) + bprm->interp_flags |= BINPRM_FLAGS_PATH_INACCESSIBLE; + + bprm->filename = bprm->fdpath; + } + bprm->interp = bprm->filename; + + /* + * At this point, security_file_open() has already been called (with + * __FMODE_EXEC) and access control checks for AT_EXECVE_CHECK will + * stop just after the security_bprm_creds_for_exec() call in + * bprm_execve(). Indeed, the kernel should not try to parse the + * content of the file with exec_binprm() nor change the calling + * thread, which means that the following security functions will not + * be called: + * - security_bprm_check() + * - security_bprm_creds_from_file() + * - security_bprm_committing_creds() + * - security_bprm_committed_creds() + */ + bprm->is_check = !!(flags & AT_EXECVE_CHECK); + + retval = bprm_mm_init(bprm); + if (!retval) + return bprm; + +out_free: + free_bprm(bprm); + return ERR_PTR(retval); +} + +DEFINE_CLASS(bprm, struct linux_binprm *, if (!IS_ERR(_T)) free_bprm(_T), + alloc_bprm(fd, name, flags), int fd, struct filename *name, int flags) + +int bprm_change_interp(const char *interp, struct linux_binprm *bprm) +{ + /* If a binfmt changed the interp, free it first. */ + if (bprm->interp != bprm->filename) + kfree(bprm->interp); + bprm->interp = kstrdup(interp, GFP_KERNEL); + if (!bprm->interp) + return -ENOMEM; + return 0; +} +EXPORT_SYMBOL(bprm_change_interp); + +/* + * determine how safe it is to execute the proposed program + * - the caller must hold ->cred_guard_mutex to protect against + * PTRACE_ATTACH or seccomp thread-sync + */ +static void check_unsafe_exec(struct linux_binprm *bprm) +{ + struct task_struct *p = current, *t; + unsigned n_fs; + + if (p->ptrace) + bprm->unsafe |= LSM_UNSAFE_PTRACE; + + /* + * This isn't strictly necessary, but it makes it harder for LSMs to + * mess up. + */ + if (task_no_new_privs(current)) + bprm->unsafe |= LSM_UNSAFE_NO_NEW_PRIVS; + + /* + * If another task is sharing our fs, we cannot safely + * suid exec because the differently privileged task + * will be able to manipulate the current directory, etc. + * It would be nice to force an unshare instead... + * + * Otherwise we set fs->in_exec = 1 to deny clone(CLONE_FS) + * from another sub-thread until de_thread() succeeds, this + * state is protected by cred_guard_mutex we hold. + */ + n_fs = 1; + read_seqlock_excl(&p->fs->seq); + rcu_read_lock(); + for_other_threads(p, t) { + if (t->fs == p->fs) + n_fs++; + } + rcu_read_unlock(); + + /* "users" and "in_exec" locked for copy_fs() */ + if (p->fs->users > n_fs) + bprm->unsafe |= LSM_UNSAFE_SHARE; + else + p->fs->in_exec = 1; + read_sequnlock_excl(&p->fs->seq); +} + +static void bprm_fill_uid(struct linux_binprm *bprm, struct file *file) +{ + /* Handle suid and sgid on files */ + struct mnt_idmap *idmap; + struct inode *inode = file_inode(file); + unsigned int mode; + vfsuid_t vfsuid; + vfsgid_t vfsgid; + int err; + + if (!mnt_may_suid(file->f_path.mnt)) + return; + + if (task_no_new_privs(current)) + return; + + mode = READ_ONCE(inode->i_mode); + if (!(mode & (S_ISUID|S_ISGID))) + return; + + idmap = file_mnt_idmap(file); + + /* Be careful if suid/sgid is set */ + inode_lock(inode); + + /* Atomically reload and check mode/uid/gid now that lock held. */ + mode = inode->i_mode; + vfsuid = i_uid_into_vfsuid(idmap, inode); + vfsgid = i_gid_into_vfsgid(idmap, inode); + err = inode_permission(idmap, inode, MAY_EXEC); + inode_unlock(inode); + + /* Did the exec bit vanish out from under us? Give up. */ + if (err) + return; + + /* We ignore suid/sgid if there are no mappings for them in the ns */ + if (!vfsuid_has_mapping(bprm->cred->user_ns, vfsuid) || + !vfsgid_has_mapping(bprm->cred->user_ns, vfsgid)) + return; + + if (mode & S_ISUID) { + bprm->per_clear |= PER_CLEAR_ON_SETID; + bprm->cred->euid = vfsuid_into_kuid(vfsuid); + } + + if ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) { + bprm->per_clear |= PER_CLEAR_ON_SETID; + bprm->cred->egid = vfsgid_into_kgid(vfsgid); + } +} + +/* + * Compute brpm->cred based upon the final binary. + */ +static int bprm_creds_from_file(struct linux_binprm *bprm) +{ + /* Compute creds based on which file? */ + struct file *file = bprm->execfd_creds ? bprm->executable : bprm->file; + + bprm_fill_uid(bprm, file); + return security_bprm_creds_from_file(bprm, file); +} + +/* + * Fill the binprm structure from the inode. + * Read the first BINPRM_BUF_SIZE bytes + * + * This may be called multiple times for binary chains (scripts for example). + */ +static int prepare_binprm(struct linux_binprm *bprm) +{ + loff_t pos = 0; + + memset(bprm->buf, 0, BINPRM_BUF_SIZE); + return kernel_read(bprm->file, bprm->buf, BINPRM_BUF_SIZE, &pos); +} + +/* + * Arguments are '\0' separated strings found at the location bprm->p + * points to; chop off the first by relocating brpm->p to right after + * the first '\0' encountered. + */ +int remove_arg_zero(struct linux_binprm *bprm) +{ + unsigned long offset; + char *kaddr; + struct page *page; + + if (!bprm->argc) + return 0; + + do { + offset = bprm->p & ~PAGE_MASK; + page = get_arg_page(bprm, bprm->p, 0); + if (!page) + return -EFAULT; + kaddr = kmap_local_page(page); + + for (; offset < PAGE_SIZE && kaddr[offset]; + offset++, bprm->p++) + ; + + kunmap_local(kaddr); + put_arg_page(page); + } while (offset == PAGE_SIZE); + + bprm->p++; + bprm->argc--; + + return 0; +} +EXPORT_SYMBOL(remove_arg_zero); + +/* + * cycle the list of binary formats handler, until one recognizes the image + */ +static int search_binary_handler(struct linux_binprm *bprm) +{ + struct linux_binfmt *fmt; + int retval; + + retval = prepare_binprm(bprm); + if (retval < 0) + return retval; + + retval = security_bprm_check(bprm); + if (retval) + return retval; + + read_lock(&binfmt_lock); + list_for_each_entry(fmt, &formats, lh) { + if (!try_module_get(fmt->module)) + continue; + read_unlock(&binfmt_lock); + + retval = fmt->load_binary(bprm); + + read_lock(&binfmt_lock); + put_binfmt(fmt); + if (bprm->point_of_no_return || (retval != -ENOEXEC)) { + read_unlock(&binfmt_lock); + return retval; + } + } + read_unlock(&binfmt_lock); + + return -ENOEXEC; +} + +/* binfmt handlers will call back into begin_new_exec() on success. */ +static int exec_binprm(struct linux_binprm *bprm) +{ + pid_t old_pid, old_vpid; + int ret, depth; + + /* Need to fetch pid before load_binary changes it */ + old_pid = current->pid; + rcu_read_lock(); + old_vpid = task_pid_nr_ns(current, task_active_pid_ns(current->parent)); + rcu_read_unlock(); + + /* This allows 4 levels of binfmt rewrites before failing hard. */ + for (depth = 0;; depth++) { + struct file *exec; + if (depth > 5) + return -ELOOP; + + ret = search_binary_handler(bprm); + if (ret < 0) + return ret; + if (!bprm->interpreter) + break; + + exec = bprm->file; + bprm->file = bprm->interpreter; + bprm->interpreter = NULL; + + exe_file_allow_write_access(exec); + if (unlikely(bprm->have_execfd)) { + if (bprm->executable) { + fput(exec); + return -ENOEXEC; + } + bprm->executable = exec; + } else + fput(exec); + } + + audit_bprm(bprm); + trace_sched_process_exec(current, old_pid, bprm); + ptrace_event(PTRACE_EVENT_EXEC, old_vpid); + proc_exec_connector(current); + return 0; +} + +static int bprm_execve(struct linux_binprm *bprm) +{ + int retval; + + retval = prepare_bprm_creds(bprm); + if (retval) + return retval; + + /* + * Check for unsafe execution states before exec_binprm(), which + * will call back into begin_new_exec(), into bprm_creds_from_file(), + * where setuid-ness is evaluated. + */ + check_unsafe_exec(bprm); + current->in_execve = 1; + sched_mm_cid_before_execve(current); + + sched_exec(); + + /* Set the unchanging part of bprm->cred */ + retval = security_bprm_creds_for_exec(bprm); + if (retval || bprm->is_check) + goto out; + + retval = exec_binprm(bprm); + if (retval < 0) + goto out; + + sched_mm_cid_after_execve(current); + rseq_execve(current); + /* execve succeeded */ + current->in_execve = 0; + user_events_execve(current); + acct_update_integrals(current); + task_numa_free(current, false); + return retval; + +out: + /* + * If past the point of no return ensure the code never + * returns to the userspace process. Use an existing fatal + * signal if present otherwise terminate the process with + * SIGSEGV. + */ + if (bprm->point_of_no_return && !fatal_signal_pending(current)) + force_fatal_sig(SIGSEGV); + + sched_mm_cid_after_execve(current); + rseq_force_update(); + current->in_execve = 0; + + return retval; +} + +static int do_execveat_common(int fd, struct filename *filename, + struct user_arg_ptr argv, + struct user_arg_ptr envp, + int flags) +{ + int retval; + + /* + * We move the actual failure in case of RLIMIT_NPROC excess from + * set*uid() to execve() because too many poorly written programs + * don't check setuid() return code. Here we additionally recheck + * whether NPROC limit is still exceeded. + */ + if ((current->flags & PF_NPROC_EXCEEDED) && + is_rlimit_overlimit(current_ucounts(), UCOUNT_RLIMIT_NPROC, rlimit(RLIMIT_NPROC))) + return -EAGAIN; + + /* We're below the limit (still or again), so we don't want to make + * further execve() calls fail. */ + current->flags &= ~PF_NPROC_EXCEEDED; + + CLASS(bprm, bprm)(fd, filename, flags); + if (IS_ERR(bprm)) + return PTR_ERR(bprm); + + retval = count(argv, MAX_ARG_STRINGS); + if (retval < 0) + return retval; + bprm->argc = retval; + + retval = count(envp, MAX_ARG_STRINGS); + if (retval < 0) + return retval; + bprm->envc = retval; + + retval = bprm_stack_limits(bprm); + if (retval < 0) + return retval; + + retval = copy_string_kernel(bprm->filename, bprm); + if (retval < 0) + return retval; + bprm->exec = bprm->p; + + retval = copy_strings(bprm->envc, envp, bprm); + if (retval < 0) + return retval; + + retval = copy_strings(bprm->argc, argv, bprm); + if (retval < 0) + return retval; + + /* + * When argv is empty, add an empty string ("") as argv[0] to + * ensure confused userspace programs that start processing + * from argv[1] won't end up walking envp. See also + * bprm_stack_limits(). + */ + if (bprm->argc == 0) { + retval = copy_string_kernel("", bprm); + if (retval < 0) + return retval; + bprm->argc = 1; + + pr_warn_once("process '%s' launched '%s' with NULL argv: empty string added\n", + current->comm, bprm->filename); + } + + return bprm_execve(bprm); +} + +int kernel_execve(const char *kernel_filename, + const char *const *argv, const char *const *envp) +{ + int retval; + + /* It is non-sense for kernel threads to call execve */ + if (WARN_ON_ONCE(current->flags & PF_KTHREAD)) + return -EINVAL; + + CLASS(filename_kernel, filename)(kernel_filename); + CLASS(bprm, bprm)(AT_FDCWD, filename, 0); + if (IS_ERR(bprm)) + return PTR_ERR(bprm); + + retval = count_strings_kernel(argv); + if (WARN_ON_ONCE(retval == 0)) + return -EINVAL; + if (retval < 0) + return retval; + bprm->argc = retval; + + retval = count_strings_kernel(envp); + if (retval < 0) + return retval; + bprm->envc = retval; + + retval = bprm_stack_limits(bprm); + if (retval < 0) + return retval; + + retval = copy_string_kernel(bprm->filename, bprm); + if (retval < 0) + return retval; + bprm->exec = bprm->p; + + retval = copy_strings_kernel(bprm->envc, envp, bprm); + if (retval < 0) + return retval; + + retval = copy_strings_kernel(bprm->argc, argv, bprm); + if (retval < 0) + return retval; + + return bprm_execve(bprm); +} + +void set_binfmt(struct linux_binfmt *new) +{ + struct mm_struct *mm = current->mm; + + if (mm->binfmt) + module_put(mm->binfmt->module); + + mm->binfmt = new; + if (new) + __module_get(new->module); +} +EXPORT_SYMBOL(set_binfmt); + +/* + * set_dumpable stores three-value SUID_DUMP_* into mm->flags. + */ +void set_dumpable(struct mm_struct *mm, int value) +{ + if (WARN_ON((unsigned)value > SUID_DUMP_ROOT)) + return; + + __mm_flags_set_mask_dumpable(mm, value); +} + +static inline struct user_arg_ptr native_arg(const char __user *const __user *p) +{ + return (struct user_arg_ptr){.ptr.native = p}; +} + +SYSCALL_DEFINE3(execve, + const char __user *, filename, + const char __user *const __user *, argv, + const char __user *const __user *, envp) +{ + CLASS(filename, name)(filename); + return do_execveat_common(AT_FDCWD, name, + native_arg(argv), native_arg(envp), 0); +} + +SYSCALL_DEFINE5(execveat, + int, fd, const char __user *, filename, + const char __user *const __user *, argv, + const char __user *const __user *, envp, + int, flags) +{ + CLASS(filename_uflags, name)(filename, flags); + return do_execveat_common(fd, name, + native_arg(argv), native_arg(envp), flags); +} + +#ifdef CONFIG_COMPAT + +static inline struct user_arg_ptr compat_arg(const compat_uptr_t __user *p) +{ + return (struct user_arg_ptr){.is_compat = true, .ptr.compat = p}; +} + +COMPAT_SYSCALL_DEFINE3(execve, const char __user *, filename, + const compat_uptr_t __user *, argv, + const compat_uptr_t __user *, envp) +{ + CLASS(filename, name)(filename); + return do_execveat_common(AT_FDCWD, name, + compat_arg(argv), compat_arg(envp), 0); +} + +COMPAT_SYSCALL_DEFINE5(execveat, int, fd, + const char __user *, filename, + const compat_uptr_t __user *, argv, + const compat_uptr_t __user *, envp, + int, flags) +{ + CLASS(filename_uflags, name)(filename, flags); + return do_execveat_common(fd, name, + compat_arg(argv), compat_arg(envp), flags); +} +#endif + +#ifdef CONFIG_SYSCTL + +static int proc_dointvec_minmax_coredump(const struct ctl_table *table, int write, + void *buffer, size_t *lenp, loff_t *ppos) +{ + int error = proc_dointvec_minmax(table, write, buffer, lenp, ppos); + + if (!error && write) + validate_coredump_safety(); + return error; +} + +static const struct ctl_table fs_exec_sysctls[] = { + { + .procname = "suid_dumpable", + .data = &suid_dumpable, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax_coredump, + .extra1 = SYSCTL_ZERO, + .extra2 = SYSCTL_TWO, + }, +}; + +static int __init init_fs_exec_sysctls(void) +{ + register_sysctl_init("fs", fs_exec_sysctls); + return 0; +} + +fs_initcall(init_fs_exec_sysctls); +#endif /* CONFIG_SYSCTL */ + +#ifdef CONFIG_EXEC_KUNIT_TEST +#include "tests/exec_kunit.c" +#endif diff --git a/research/h25-c05-at-random-producer-events/inputs/input-005.data b/research/h25-c05-at-random-producer-events/inputs/input-005.data new file mode 100644 index 0000000000..b4a4e90e8e --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-005.data @@ -0,0 +1,37 @@ +{ + "correction_of_possible_misreading": "Original OS/loader/POSIX integrity premises are explicitly present. No specific reviewed arbitrary CPU/random/FPU contract was supplied for Unit12 does not mean all OS integrity or provider semantics are absent. Refusing every OS-provider semantic boundary and demanding full internal kernel implementation proof could strengthen the original assurance without textual basis.", + "costs": "OPEN_NOT_ZERO", + "directly_read_original": { + "bytes": 11353, + "path": "outputs/c05-v03-completion-20261102T055710Z/prerequisite-source/native_tcb_v1.py.txt", + "sha256": "865943df5cfdbf9383362d7fb2b76c6d0fd895cf0a0e20d550a26b579606b5d7" + }, + "exact_scope_and_temporal_distinction": "This module/check/receipt concerns initial native corroboration before other driver imports/native builds, after the captured sealed Root guard. It relies on rather than proves native hashing/POSIX/OS-loader integrity and a closed bootstrap interval; it explicitly places inode-zero executable mappings in OS TCB and denies a reusable private-ABI PASS. The wording does not itself state that all OS integrity trust expires at bootstrap. Conversely, this initial receipt alone does not supply arbitrary compiler/private-callee ABI conformance, complete K coverage or actual future mapping/descriptor/policy/source lifetime. Reusing the existing integrity premise for a specific kernel-provider interface requires an explicit applicability/origin/ownership/interval argument, not either wholesale rejection or automatic unlimited extension.", + "exact_source": [ + { + "lines": "1\u20137", + "quote": "Initial native TCB corroboration, before other driver imports or native builds.\n\nNo imports. The parent authenticates this source and the expected native closure\nbefore launch, then calls after its captured sealed root guard. Native hashing,\nPOSIX, OS/loader integrity and the closed bootstrap interval are explicit trust\npremises, not established by this check. The existing217file probe audit remains\nseparate. This receipt is never a scientific verdict or reusable private-ABI PASS." + }, + { + "lines": "106\u2013108", + "quote": "inode = int(inode_text, 10)\nif inode == 0:\n continue # anonymous/kernel executable mappings belong to explicit OS TCB" + } + ], + "full_C05": false, + "full_V03": false, + "new_primitive_contract_admitted": false, + "no_new_acquisition_or_execution": true, + "preserves_prior_question": { + "path": "consultation/k-contract-review/PRO14-PRIMITIVE-BOUNDARY-QUESTION-v1.json", + "sha256": "a82e33c95ed63659515afa98d2e21a69ba69e69665ef7b758ab24dea7a8fd127" + }, + "question_to_add_to_Pro14": "Given these exact explicit original OS/POSIX/loader premises, identify which auxv scalar/payload producer clauses can legitimately terminate at a genuine OS-provider ABI/semantic contract without strengthening trust, what actual provider/version/owner/temporal evidence instantiates that reuse, and where additional assumptions begin. Do not demand proof of all kernel internals simply because a helper call occurs; do not infer arbitrary compiler/private ABI correctness or lifetime from the initial receipt. Separate unchanged existing integrity assumptions from new semantic/origin/coverage claims. Preserve the genuine missing RSEQ/CLOCK definitional proof gaps and Unit12 STOP.", + "recorded_utc": "2026-11-02T17:25:49.377072+00:00", + "root_reported_published_reference": { + "head": "2a26450dea25d7648b585befce5ed375857a8f90", + "note": "Root supplied publication reference; this reviewer directly checked retained ordinary original bytes above, with no remote acquisition.", + "path": "snapshot/original/native_tcb/native_tcb_v1.py.txt" + }, + "schema": "h25-pro14-existing-os-tcb-boundary-supplement-v2", + "unit12_remains_stopped": true +} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-006.data b/research/h25-c05-at-random-producer-events/inputs/input-006.data new file mode 100644 index 0000000000..cc61cb9b3e --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-006.data @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#ifndef _UAPI_LINUX_AUXVEC_H +#define _UAPI_LINUX_AUXVEC_H + +#include + +/* Symbolic values for the entries in the auxiliary table + put on the initial stack */ +#define AT_NULL 0 /* end of vector */ +#define AT_IGNORE 1 /* entry should be ignored */ +#define AT_EXECFD 2 /* file descriptor of program */ +#define AT_PHDR 3 /* program headers for program */ +#define AT_PHENT 4 /* size of program header entry */ +#define AT_PHNUM 5 /* number of program headers */ +#define AT_PAGESZ 6 /* system page size */ +#define AT_BASE 7 /* base address of interpreter */ +#define AT_FLAGS 8 /* flags */ +#define AT_ENTRY 9 /* entry point of program */ +#define AT_NOTELF 10 /* program is not ELF */ +#define AT_UID 11 /* real uid */ +#define AT_EUID 12 /* effective uid */ +#define AT_GID 13 /* real gid */ +#define AT_EGID 14 /* effective gid */ +#define AT_PLATFORM 15 /* string identifying CPU for optimizations */ +#define AT_HWCAP 16 /* arch dependent hints at CPU capabilities */ +#define AT_CLKTCK 17 /* frequency at which times() increments */ +/* AT_* values 18 through 22 are reserved */ +#define AT_SECURE 23 /* secure mode boolean */ +#define AT_BASE_PLATFORM 24 /* string identifying real platform, may + * differ from AT_PLATFORM. */ +#define AT_RANDOM 25 /* address of 16 random bytes */ +#define AT_HWCAP2 26 /* extension of AT_HWCAP */ +#define AT_RSEQ_FEATURE_SIZE 27 /* rseq supported feature size */ +#define AT_RSEQ_ALIGN 28 /* rseq allocation alignment */ +#define AT_HWCAP3 29 /* extension of AT_HWCAP */ +#define AT_HWCAP4 30 /* extension of AT_HWCAP */ + +#define AT_EXECFN 31 /* filename of program */ + +#ifndef AT_MINSIGSTKSZ +#define AT_MINSIGSTKSZ 51 /* minimal stack size for signal delivery */ +#endif + +#endif /* _UAPI_LINUX_AUXVEC_H */ diff --git a/research/h25-c05-at-random-producer-events/inputs/input-007.data b/research/h25-c05-at-random-producer-events/inputs/input-007.data new file mode 100644 index 0000000000..2ba5f166e5 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-007.data @@ -0,0 +1,392 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_X86_ELF_H +#define _ASM_X86_ELF_H + +/* + * ELF register definitions.. + */ +#include + +#include +#include +#include +#include +#include + +typedef unsigned long elf_greg_t; + +#define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; + +typedef struct user_i387_struct elf_fpregset_t; + +#ifdef __i386__ + +#define R_386_NONE 0 +#define R_386_32 1 +#define R_386_PC32 2 +#define R_386_GOT32 3 +#define R_386_PLT32 4 +#define R_386_COPY 5 +#define R_386_GLOB_DAT 6 +#define R_386_JMP_SLOT 7 +#define R_386_RELATIVE 8 +#define R_386_GOTOFF 9 +#define R_386_GOTPC 10 +#define R_386_NUM 11 + +/* + * These are used to set parameters in the core dumps. + */ +#define ELF_CLASS ELFCLASS32 +#define ELF_DATA ELFDATA2LSB +#define ELF_ARCH EM_386 + +#else + +/* x86-64 relocation types */ +#define R_X86_64_NONE 0 /* No reloc */ +#define R_X86_64_64 1 /* Direct 64 bit */ +#define R_X86_64_PC32 2 /* PC relative 32 bit signed */ +#define R_X86_64_GOT32 3 /* 32 bit GOT entry */ +#define R_X86_64_PLT32 4 /* 32 bit PLT address */ +#define R_X86_64_COPY 5 /* Copy symbol at runtime */ +#define R_X86_64_GLOB_DAT 6 /* Create GOT entry */ +#define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */ +#define R_X86_64_RELATIVE 8 /* Adjust by program base */ +#define R_X86_64_GOTPCREL 9 /* 32 bit signed pc relative offset to GOT */ +#define R_X86_64_GOTPCRELX 41 +#define R_X86_64_REX_GOTPCRELX 42 +#define R_X86_64_32 10 /* Direct 32 bit zero extended */ +#define R_X86_64_32S 11 /* Direct 32 bit sign extended */ +#define R_X86_64_16 12 /* Direct 16 bit zero extended */ +#define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */ +#define R_X86_64_8 14 /* Direct 8 bit sign extended */ +#define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */ +#define R_X86_64_PC64 24 /* Place relative 64-bit signed */ + +/* + * These are used to set parameters in the core dumps. + */ +#define ELF_CLASS ELFCLASS64 +#define ELF_DATA ELFDATA2LSB +#define ELF_ARCH EM_X86_64 + +#endif + +#include + +extern unsigned int vdso64_enabled; +extern unsigned int vdso32_enabled; + +/* + * This is used to ensure we don't load something for the wrong architecture. + */ +#define elf_check_arch_ia32(x) \ + (((x)->e_machine == EM_386) || ((x)->e_machine == EM_486)) + +#include + +#ifdef CONFIG_X86_32 +#include + +#define elf_check_arch(x) elf_check_arch_ia32(x) + +/* SVR4/i386 ABI (pages 3-31, 3-32) says that when the program starts %edx + contains a pointer to a function which might be registered using `atexit'. + This provides a mean for the dynamic linker to call DT_FINI functions for + shared libraries that have been loaded before the code runs. + + A value of 0 tells we have no such handler. + + We might as well make sure everything else is cleared too (except for %esp), + just to make things more deterministic. + */ +#define ELF_PLAT_INIT(_r, load_addr) \ + do { \ + _r->bx = 0; _r->cx = 0; _r->dx = 0; \ + _r->si = 0; _r->di = 0; _r->bp = 0; \ + _r->ax = 0; \ +} while (0) + +/* + * regs is struct pt_regs, pr_reg is elf_gregset_t (which is + * now struct_user_regs, they are different) + */ + +#define ELF_CORE_COPY_REGS(pr_reg, regs) \ +do { \ + pr_reg[0] = regs->bx; \ + pr_reg[1] = regs->cx; \ + pr_reg[2] = regs->dx; \ + pr_reg[3] = regs->si; \ + pr_reg[4] = regs->di; \ + pr_reg[5] = regs->bp; \ + pr_reg[6] = regs->ax; \ + pr_reg[7] = regs->ds; \ + pr_reg[8] = regs->es; \ + pr_reg[9] = regs->fs; \ + savesegment(gs, pr_reg[10]); \ + pr_reg[11] = regs->orig_ax; \ + pr_reg[12] = regs->ip; \ + pr_reg[13] = regs->cs; \ + pr_reg[14] = regs->flags; \ + pr_reg[15] = regs->sp; \ + pr_reg[16] = regs->ss; \ +} while (0); + +#define ELF_PLATFORM (utsname()->machine) +#define set_personality_64bit() do { } while (0) + +#else /* CONFIG_X86_32 */ + +/* + * This is used to ensure we don't load something for the wrong architecture. + */ +#define elf_check_arch(x) \ + ((x)->e_machine == EM_X86_64) + +#define compat_elf_check_arch(x) \ + ((elf_check_arch_ia32(x) && ia32_enabled_verbose()) || \ + (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64)) + +static inline void elf_common_init(struct thread_struct *t, + struct pt_regs *regs, const u16 ds) +{ + /* ax gets execve's return value. */ + /*regs->ax = */ regs->bx = regs->cx = regs->dx = 0; + regs->si = regs->di = regs->bp = 0; + regs->r8 = regs->r9 = regs->r10 = regs->r11 = 0; + regs->r12 = regs->r13 = regs->r14 = regs->r15 = 0; + t->fsbase = t->gsbase = 0; + t->fsindex = t->gsindex = 0; + t->ds = t->es = ds; +} + +#define ELF_PLAT_INIT(_r, load_addr) \ + elf_common_init(¤t->thread, _r, 0) + +#define COMPAT_ELF_PLAT_INIT(regs, load_addr) \ + elf_common_init(¤t->thread, regs, __USER_DS) + +void compat_start_thread(struct pt_regs *regs, u32 new_ip, u32 new_sp, bool x32); +#define COMPAT_START_THREAD(ex, regs, new_ip, new_sp) \ + compat_start_thread(regs, new_ip, new_sp, ex->e_machine == EM_X86_64) + +void set_personality_ia32(bool); +#define COMPAT_SET_PERSONALITY(ex) \ + set_personality_ia32((ex).e_machine == EM_X86_64) + +#define COMPAT_ELF_PLATFORM ("i686") + +/* + * regs is struct pt_regs, pr_reg is elf_gregset_t (which is + * now struct_user_regs, they are different). Assumes current is the process + * getting dumped. + */ + +#define ELF_CORE_COPY_REGS(pr_reg, regs) \ +do { \ + unsigned v; \ + (pr_reg)[0] = (regs)->r15; \ + (pr_reg)[1] = (regs)->r14; \ + (pr_reg)[2] = (regs)->r13; \ + (pr_reg)[3] = (regs)->r12; \ + (pr_reg)[4] = (regs)->bp; \ + (pr_reg)[5] = (regs)->bx; \ + (pr_reg)[6] = (regs)->r11; \ + (pr_reg)[7] = (regs)->r10; \ + (pr_reg)[8] = (regs)->r9; \ + (pr_reg)[9] = (regs)->r8; \ + (pr_reg)[10] = (regs)->ax; \ + (pr_reg)[11] = (regs)->cx; \ + (pr_reg)[12] = (regs)->dx; \ + (pr_reg)[13] = (regs)->si; \ + (pr_reg)[14] = (regs)->di; \ + (pr_reg)[15] = (regs)->orig_ax; \ + (pr_reg)[16] = (regs)->ip; \ + (pr_reg)[17] = (regs)->cs; \ + (pr_reg)[18] = (regs)->flags; \ + (pr_reg)[19] = (regs)->sp; \ + (pr_reg)[20] = (regs)->ss; \ + (pr_reg)[21] = x86_fsbase_read_cpu(); \ + (pr_reg)[22] = x86_gsbase_read_cpu_inactive(); \ + asm("movl %%ds,%0" : "=r" (v)); (pr_reg)[23] = v; \ + asm("movl %%es,%0" : "=r" (v)); (pr_reg)[24] = v; \ + asm("movl %%fs,%0" : "=r" (v)); (pr_reg)[25] = v; \ + asm("movl %%gs,%0" : "=r" (v)); (pr_reg)[26] = v; \ +} while (0); + +/* I'm not sure if we can use '-' here */ +#define ELF_PLATFORM ("x86_64") +extern void set_personality_64bit(void); +extern int force_personality32; + +#endif /* !CONFIG_X86_32 */ + +#define CORE_DUMP_USE_REGSET +#define ELF_EXEC_PAGESIZE 4096 + +/* + * This is the base location for PIE (ET_DYN with INTERP) loads. On + * 64-bit, this is above 4GB to leave the entire 32-bit address + * space open for things that want to use the area for 32-bit pointers. + */ +#define ELF_ET_DYN_BASE (mmap_is_ia32() ? 0x000400000UL : \ + (DEFAULT_MAP_WINDOW / 3 * 2)) + +/* This yields a mask that user programs can use to figure out what + instruction set this CPU supports. This could be done in user space, + but it's not easy, and we've already done it here. */ + +#define ELF_HWCAP (boot_cpu_data.x86_capability[CPUID_1_EDX]) + +extern u32 elf_hwcap2; + +/* + * HWCAP2 supplies mask with kernel enabled CPU features, so that + * the application can discover that it can safely use them. + * The bits are defined in uapi/asm/hwcap2.h. + */ +#define ELF_HWCAP2 (elf_hwcap2) + +/* This yields a string that ld.so will use to load implementation + specific libraries for optimization. This is more specific in + intent than poking at uname or /proc/cpuinfo. + + For the moment, we have only optimizations for the Intel generations, + but that could change... */ + +#define SET_PERSONALITY(ex) set_personality_64bit() + +/* + * An executable for which elf_read_implies_exec() returns TRUE will + * have the READ_IMPLIES_EXEC personality flag set automatically. + * + * The decision process for determining the results are: + * + * CPU: | lacks NX* | has NX, ia32 | has NX, x86_64 | + * ELF: | | | | + * ---------------------|------------|------------------|----------------| + * missing PT_GNU_STACK | exec-all | exec-all | exec-none | + * PT_GNU_STACK == RWX | exec-stack | exec-stack | exec-stack | + * PT_GNU_STACK == RW | exec-none | exec-none | exec-none | + * + * exec-all : all PROT_READ user mappings are executable, except when + * backed by files on a noexec-filesystem. + * exec-none : only PROT_EXEC user mappings are executable. + * exec-stack: only the stack and PROT_EXEC user mappings are executable. + * + * *this column has no architectural effect: NX markings are ignored by + * hardware, but may have behavioral effects when "wants X" collides with + * "cannot be X" constraints in memory permission flags, as in + * https://lkml.kernel.org/r/20190418055759.GA3155@mellanox.com + * + */ +#define elf_read_implies_exec(ex, executable_stack) \ + (mmap_is_ia32() && executable_stack == EXSTACK_DEFAULT) + +struct task_struct; + +#define ARCH_DLINFO_IA32 \ +do { \ + if (VDSO_CURRENT_BASE) { \ + NEW_AUX_ENT(AT_SYSINFO, VDSO_ENTRY); \ + NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_CURRENT_BASE); \ + } \ + NEW_AUX_ENT(AT_MINSIGSTKSZ, get_sigframe_size()); \ +} while (0) + +/* + * True on X86_32 or when emulating IA32 on X86_64 + */ +static inline int mmap_is_ia32(void) +{ + return IS_ENABLED(CONFIG_X86_32) || + (IS_ENABLED(CONFIG_COMPAT) && + test_thread_flag(TIF_ADDR32)); +} + +extern unsigned long task_size_32bit(void); +extern unsigned long task_size_64bit(int full_addr_space); +extern unsigned long get_mmap_base(int is_legacy); +extern bool mmap_address_hint_valid(unsigned long addr, unsigned long len); +extern unsigned long get_sigframe_size(void); + +#ifdef CONFIG_X86_32 + +#define __STACK_RND_MASK(is32bit) (0x7ff) +#define STACK_RND_MASK (0x7ff) + +#define ARCH_DLINFO ARCH_DLINFO_IA32 + +/* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes */ + +#else /* CONFIG_X86_32 */ + +/* 1GB for 64bit, 8MB for 32bit */ +#define __STACK_RND_MASK(is32bit) ((is32bit) ? 0x7ff : 0x3fffff) +#define STACK_RND_MASK __STACK_RND_MASK(mmap_is_ia32()) + +#define ARCH_DLINFO \ +do { \ + if (vdso64_enabled) \ + NEW_AUX_ENT(AT_SYSINFO_EHDR, \ + (unsigned long __force)current->mm->context.vdso); \ + NEW_AUX_ENT(AT_MINSIGSTKSZ, get_sigframe_size()); \ +} while (0) + +/* As a historical oddity, the x32 and x86_64 vDSOs are controlled together. */ +#define ARCH_DLINFO_X32 \ +do { \ + if (vdso64_enabled) \ + NEW_AUX_ENT(AT_SYSINFO_EHDR, \ + (unsigned long __force)current->mm->context.vdso); \ + NEW_AUX_ENT(AT_MINSIGSTKSZ, get_sigframe_size()); \ +} while (0) + +#define AT_SYSINFO 32 + +#define COMPAT_ARCH_DLINFO \ +if (exec->e_machine == EM_X86_64) \ + ARCH_DLINFO_X32; \ +else if (IS_ENABLED(CONFIG_IA32_EMULATION)) \ + ARCH_DLINFO_IA32 + +#define COMPAT_ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000) + +#endif /* !CONFIG_X86_32 */ + +#define VDSO_CURRENT_BASE ((unsigned long)current->mm->context.vdso) + +#define VDSO_ENTRY \ + ((unsigned long)current->mm->context.vdso + \ + vdso32_image.sym___kernel_vsyscall) + +struct linux_binprm; + +#define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1 +extern int arch_setup_additional_pages(struct linux_binprm *bprm, + int uses_interp); +extern int compat_arch_setup_additional_pages(struct linux_binprm *bprm, + int uses_interp, bool x32); +#define COMPAT_ARCH_SETUP_ADDITIONAL_PAGES(bprm, ex, interpreter) \ + compat_arch_setup_additional_pages(bprm, interpreter, \ + (ex->e_machine == EM_X86_64)) + +extern bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs); + +/* Do not change the values. See get_align_mask() */ +enum align_flags { + ALIGN_VA_32 = BIT(0), + ALIGN_VA_64 = BIT(1), +}; + +struct va_alignment { + int flags; + unsigned long mask; + unsigned long bits; +} ____cacheline_aligned; + +extern struct va_alignment va_align; +#endif /* _ASM_X86_ELF_H */ diff --git a/research/h25-c05-at-random-producer-events/inputs/input-008.data b/research/h25-c05-at-random-producer-events/inputs/input-008.data new file mode 100644 index 0000000000..55a2f3320b --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-008.data @@ -0,0 +1,202 @@ +"""Initial native TCB corroboration, before other driver imports or native builds. + +No imports. The parent authenticates this source and the expected native closure +before launch, then calls after its captured sealed root guard. Native hashing, +POSIX, OS/loader integrity and the closed bootstrap interval are explicit trust +premises, not established by this check. The existing217file probe audit remains +separate. This receipt is never a scientific verdict or reusable private-ABI PASS. +""" +_MAX_FILES = 32 +_MAX_FILE_BYTES = 67108864 +_MAX_TOTAL_FILE_BYTES = 268435456 +_MAX_MAP_BYTES = 524288 +_MAX_MAP_LINES = 4096 +_MAX_LINE_BYTES = 8192 +_MAX_EXEC_MAPS = 256 +_CHUNK = 1048576 + + +def _need(condition, message): + if not condition: + raise RuntimeError(message) + + +def _native_ops(root, api): + _need(type(api) is tuple and len(api) == 4, 'Native TCB requires sealed bootstrap API') + root_sha = api[0]() + namespace = root.__dict__ + posix = namespace['posix'] + native_hash_module = namespace['_hashlib'] + function = namespace['_SHA256'] + builtin_type = namespace['BuiltinFunctionType'] + module_type = namespace['ModuleType'] + _need(type(posix) is module_type and type(native_hash_module) is module_type, + 'Native TCB module type differs') + _need(type(function) is builtin_type and function.__self__ is native_hash_module and + function.__name__ == 'openssl_sha256' and + native_hash_module.__dict__.get('openssl_sha256') is function, + 'Native TCB hash function owner differs') + functions = {} + for alias, name in (('open', 'open'), ('read', 'read'), ('fstat', 'fstat'), + ('close', 'close'), ('major', 'major'), ('minor', 'minor'), ('getpid', 'getpid')): + value = posix.__dict__.get(name) + _need(type(value) is builtin_type and value.__self__ is posix and value.__name__ == name, + 'Native TCB POSIX primitive owner differs: ' + name) + functions[alias] = value + _need(functions['open'] is namespace['_OPEN'] and functions['read'] is namespace['_READ'] and + functions['fstat'] is namespace['_FSTAT'] and functions['close'] is namespace['_CLOSE'], + 'Native TCB primitive differs from pristine root') + functions.update({'sha256': function, 'flags': namespace['_FLAGS'], 'posix': posix, + 'hash_module': native_hash_module, 'root_sha256': root_sha}) + return functions + + +def _expected_inventory(expected_files, expected_hashlib_origin): + _need(type(expected_files) is tuple and 1 <= len(expected_files) <= _MAX_FILES, + 'Native TCB expected file inventory type/count differs') + _need(type(expected_hashlib_origin) is str, 'Native TCB expected hashlib origin type differs') + inventory = {} + total = 0 + for row in expected_files: + _need(type(row) is tuple and len(row) == 3, 'Native TCB expected row shape differs') + path, digest, size = row + _need(type(path) is str and path.startswith('/') and len(path) <= 4096 and + all(32 < ord(character) < 127 for character in path) and + path not in inventory and not path.endswith(' (deleted)'), + 'Native TCB expected canonical path differs') + _need(type(digest) is str and len(digest) == 64 and + all(character in '0123456789abcdef' for character in digest), + 'Native TCB expected digest differs') + _need(type(size) is int and 0 < size <= _MAX_FILE_BYTES, + 'Native TCB expected size differs') + total += size + _need(total <= _MAX_TOTAL_FILE_BYTES, 'Native TCB expected total bytes exceed bound') + inventory[path] = (digest, size) + _need(expected_hashlib_origin in inventory, 'Native TCB hashlib origin is undeclared') + return inventory, total + + +def _read_maps(ops): + descriptor = ops['open']('/proc/self/maps', ops['flags']) + try: + info = ops['fstat'](descriptor) + _need((info.st_mode & 0o170000) == 0o100000, 'Native TCB maps pseudo-file type differs') + parts, count = [], 0 + while True: + block = ops['read'](descriptor, min(65536, _MAX_MAP_BYTES + 1 - count)) + if not block: + break + count += len(block) + _need(count <= _MAX_MAP_BYTES, 'Native TCB maps byte bound exceeded') + parts.append(block) + raw = b''.join(parts) + finally: + ops['close'](descriptor) + lines = raw.splitlines() + _need(len(lines) <= _MAX_MAP_LINES, 'Native TCB maps line bound exceeded') + executable = [] + for line in lines: + _need(len(line) <= _MAX_LINE_BYTES, 'Native TCB maps line byte bound exceeded') + fields = line.split(None, 5) + _need(len(fields) >= 5, 'Native TCB maps row shape differs') + address, permissions, offset, device, inode_text = fields[:5] + _need(len(permissions) == 4, 'Native TCB map permissions shape differs') + if permissions[2:3] != b'x': + continue + inode = int(inode_text, 10) + if inode == 0: + continue # anonymous/kernel executable mappings belong to explicit OS TCB + _need(len(fields) == 6 and fields[5].startswith(b'/') and + not fields[5].endswith(b' (deleted)'), 'Native TCB executable map path differs') + path = fields[5].decode('ascii') + span, pair = address.split(b'-'), device.split(b':') + _need(len(span) == 2 and len(pair) == 2, 'Native TCB map address/device shape differs') + start, end = int(span[0], 16), int(span[1], 16) + _need(0 <= start < end < (1 << 64), 'Native TCB map address bounds differ') + row = (path, int(pair[0], 16), int(pair[1], 16), inode, + start, end, int(offset, 16), permissions.decode('ascii')) + executable.append(row) + _need(len(executable) <= _MAX_EXEC_MAPS, 'Native TCB executable map count exceeded') + _need(executable, 'Native TCB no file-backed executable mappings observed') + return tuple(sorted(executable)), len(raw), ops['sha256'](raw).hexdigest() + + +def _fingerprint(info): + return (info.st_dev, info.st_ino, info.st_mode, info.st_size, info.st_mtime_ns, info.st_ctime_ns) + + +def _hash_file(ops, path, expected_digest, expected_size): + """Production uses only freshly captured native ops; controls may separately + instrument this internal reader on an exclusively created temporary file.""" + descriptor = ops['open'](path, ops['flags']) + try: + before = ops['fstat'](descriptor) + _need((before.st_mode & 0o170000) == 0o100000 and before.st_size == expected_size, + 'Native TCB regular-file type/size differs: ' + path) + digest, count = ops['sha256'](), 0 + while True: + block = ops['read'](descriptor, min(_CHUNK, expected_size + 1 - count)) + if not block: + break + count += len(block) + _need(count <= expected_size, 'Native TCB file grew during hashing: ' + path) + digest.update(block) + after = ops['fstat'](descriptor) + _need(_fingerprint(before) == _fingerprint(after) and count == expected_size, + 'Native TCB file changed during hashing: ' + path) + actual = digest.hexdigest() + _need(actual == expected_digest, 'Native TCB file digest differs: ' + path) + return {'path': path, 'expected_sha256': expected_digest, 'observed_sha256': actual, + 'expected_bytes': expected_size, 'observed_bytes': count, + 'device': after.st_dev, 'device_major': ops['major'](after.st_dev), + 'device_minor': ops['minor'](after.st_dev), 'inode': after.st_ino, + 'mode': after.st_mode, 'mtime_ns': after.st_mtime_ns, 'ctime_ns': after.st_ctime_ns} + finally: + ops['close'](descriptor) + + +def verify_native_tcb(bootstrap_root, bootstrap_api, expected_files, expected_hashlib_origin): + """Corroborate the parent's declared initial native file closure, freshly.""" + ops = _native_ops(bootstrap_root, bootstrap_api) + inventory, expected_total = _expected_inventory(expected_files, expected_hashlib_origin) + native_hash_module = ops['hash_module'] + origin = native_hash_module.__dict__.get('__file__') + _need(type(origin) is str and origin == expected_hashlib_origin, + 'Native TCB actual hashlib origin differs') + mappings_before, maps_before_bytes, maps_before_sha = _read_maps(ops) + mapped_paths = {row[0] for row in mappings_before} + _need(mapped_paths == set(inventory), 'Native TCB declared/executable mapped file closure differs') + files = [] + for path, expected_digest, expected_size in expected_files: + observed = _hash_file(ops, path, expected_digest, expected_size) + current = tuple(row for row in mappings_before if row[0] == path) + _need(current and all(row[1] == observed['device_major'] and + row[2] == observed['device_minor'] and row[3] == observed['inode'] + for row in current), 'Native TCB mapped/current file identity differs: ' + path) + observed['executable_mapping_count'] = len(current) + observed['executable_mappings'] = [ + {'start': hex(row[4]), 'end': hex(row[5]), 'offset': row[6], 'permissions': row[7]} + for row in current] + files.append(observed) + mappings_after, maps_after_bytes, maps_after_sha = _read_maps(ops) + _need(mappings_after == mappings_before, 'Native TCB executable mappings changed during audit') + final_ops = _native_ops(bootstrap_root, bootstrap_api) + _need(final_ops['hash_module'] is native_hash_module and final_ops['sha256'] is ops['sha256'] and + native_hash_module.__dict__.get('__file__') == origin and + final_ops['root_sha256'] == ops['root_sha256'], 'Native TCB root/hash provenance changed') + for name in ('open', 'read', 'fstat', 'close', 'major', 'minor', 'getpid'): + _need(final_ops[name] is ops[name], 'Native TCB captured primitive drifted: ' + name) + return {'schema': 'h25-initial-native-tcb-v1', 'status': 'MATCHED_DECLARED_INITIAL_NATIVE_FILES', + 'root_source_sha256': ops['root_sha256'], 'pid': ops['getpid'](), + 'hashlib_origin': origin, 'hashlib_module_id': id(native_hash_module), + 'hash_function_id': id(ops['sha256']), 'hash_function_name': 'openssl_sha256', + 'hash_function_owned_by_root_module': True, 'files': files, + 'declared_file_count': len(files), 'expected_total_file_bytes': expected_total, + 'observed_total_file_bytes': sum(row['observed_bytes'] for row in files), + 'executable_mapping_count': len(mappings_before), + 'maps_before_bytes': maps_before_bytes, 'maps_after_bytes': maps_after_bytes, + 'maps_before_sha256': maps_before_sha, 'maps_after_sha256': maps_after_sha, + 'executable_mappings_stable': True, 'probe_private_abi_access': False, + 'scientific_admission': False, 'reusable_pass': False, + 'trust_boundary': 'Parent-authenticated fresh startup and declared native/OS/loader primitives; corroboration does not self-prove hostile-OS or compromised-hash integrity.', + 'kernel_anonymous_executable_maps': 'Excluded from declared native file closure; remain in explicit OS trust boundary.'} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-009.data b/research/h25-c05-at-random-producer-events/inputs/input-009.data new file mode 100644 index 0000000000..5c402788da --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-009.data @@ -0,0 +1,112 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_ELF_H +#define _LINUX_ELF_H + +#include +#include +#include + +#ifndef elf_read_implies_exec + /* Executables for which elf_read_implies_exec() returns TRUE will + have the READ_IMPLIES_EXEC personality flag set automatically. + Override in asm/elf.h as needed. */ +# define elf_read_implies_exec(ex, have_pt_gnu_stack) 0 +#endif +#ifndef SET_PERSONALITY +#define SET_PERSONALITY(ex) \ + set_personality(PER_LINUX | (current->personality & (~PER_MASK))) +#endif + +#ifndef SET_PERSONALITY2 +#define SET_PERSONALITY2(ex, state) \ + SET_PERSONALITY(ex) +#endif + +#ifndef START_THREAD +#define START_THREAD(elf_ex, regs, elf_entry, start_stack) \ + start_thread(regs, elf_entry, start_stack) +#endif + +#if defined(ARCH_HAS_SETUP_ADDITIONAL_PAGES) && !defined(ARCH_SETUP_ADDITIONAL_PAGES) +#define ARCH_SETUP_ADDITIONAL_PAGES(bprm, ex, interpreter) \ + arch_setup_additional_pages(bprm, interpreter) +#endif + +#define ELF32_GNU_PROPERTY_ALIGN 4 +#define ELF64_GNU_PROPERTY_ALIGN 8 + +#if ELF_CLASS == ELFCLASS32 + +extern Elf32_Dyn _DYNAMIC []; +#define elfhdr elf32_hdr +#define elf_phdr elf32_phdr +#define elf_shdr elf32_shdr +#define elf_note elf32_note +#define elf_addr_t Elf32_Off +#define Elf_Half Elf32_Half +#define Elf_Word Elf32_Word +#define ELF_GNU_PROPERTY_ALIGN ELF32_GNU_PROPERTY_ALIGN + +#else + +extern Elf64_Dyn _DYNAMIC []; +#define elfhdr elf64_hdr +#define elf_phdr elf64_phdr +#define elf_shdr elf64_shdr +#define elf_note elf64_note +#define elf_addr_t Elf64_Off +#define Elf_Half Elf64_Half +#define Elf_Word Elf64_Word +#define ELF_GNU_PROPERTY_ALIGN ELF64_GNU_PROPERTY_ALIGN + +#endif + +/* Optional callbacks to write extra ELF notes. */ +struct file; +struct coredump_params; + +#ifndef CONFIG_ARCH_HAVE_EXTRA_ELF_NOTES +static inline int elf_coredump_extra_notes_size(void) { return 0; } +static inline int elf_coredump_extra_notes_write(struct coredump_params *cprm) { return 0; } +#else +extern int elf_coredump_extra_notes_size(void); +extern int elf_coredump_extra_notes_write(struct coredump_params *cprm); +#endif + +/* + * NT_GNU_PROPERTY_TYPE_0 header: + * Keep this internal until/unless there is an agreed UAPI definition. + * pr_type values (GNU_PROPERTY_*) are public and defined in the UAPI header. + */ +struct gnu_property { + u32 pr_type; + u32 pr_datasz; +}; + +struct arch_elf_state; + +#ifndef CONFIG_ARCH_USE_GNU_PROPERTY +static inline int arch_parse_elf_property(u32 type, const void *data, + size_t datasz, bool compat, + struct arch_elf_state *arch) +{ + return 0; +} +#else +extern int arch_parse_elf_property(u32 type, const void *data, size_t datasz, + bool compat, struct arch_elf_state *arch); +#endif + +#ifdef CONFIG_ARCH_HAVE_ELF_PROT +int arch_elf_adjust_prot(int prot, const struct arch_elf_state *state, + bool has_interp, bool is_interp); +#else +static inline int arch_elf_adjust_prot(int prot, + const struct arch_elf_state *state, + bool has_interp, bool is_interp) +{ + return prot; +} +#endif + +#endif /* _LINUX_ELF_H */ diff --git a/research/h25-c05-at-random-producer-events/inputs/input-010.data b/research/h25-c05-at-random-producer-events/inputs/input-010.data new file mode 100644 index 0000000000..bb2ad252c1 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-010.data @@ -0,0 +1,30 @@ +{ + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:44:49.626720+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/elf.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"elf.h\"", + "content-length": "3037", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:44:49 GMT", + "etag": "\"5c402788da19e71ba282d02c3f813a384b9a8e90\"", + "expires": "Thu, 30 Oct 2036 17:44:49 GMT", + "last-modified": "Mon, 02 Nov 2026 17:44:49 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "include/linux/elf.h", + "new_kernel_implementation_bodies_allowed": false, + "new_source_file_cap": 1, + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit13/input/include/linux/elf.h", + "per_file_cap": 1048576, + "sha256": "ca735899fd2c19c7d387f6a361d54878b3feff287ab025295f215f606e9f5e3e", + "size_bytes": 3037, + "started_utc": "2026-11-02T17:44:47.871799+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/elf.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" +} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-011.data b/research/h25-c05-at-random-producer-events/inputs/input-011.data new file mode 100644 index 0000000000..92f326cd85 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-011.data @@ -0,0 +1,194 @@ + + + +~ubuntu-kernel/ubuntu/+source/linux/+git/noble - [no description] + + + + + + + + + + + + + + +
+ + + + +
+summaryrefslogtreecommitdiff
+ + + +
+
+
+ + + + +
tag nameUbuntu-hwe-7.0-7.0.0-42.42_24.04.1 (ec4271d73fa5db6b362dd68a77a560827945e633)
tag date2026-10-19 14:51:55 +0200
tagged byStefan Bader <stefan.bader@canonical.com>
tagged objectcommit 88cb661f6b...
+
Ubuntu-hwe-7.0-7.0.0-42.42~24.04.1
-----BEGIN PGP SIGNATURE----- + +iQIzBAABCgAdFiEE2118yvOZTjOV2k0+6Gdd7svuzqMFAmrWEmsACgkQ6Gdd7svu +zqPTFhAA1r+hA5to0Ndc5e/TUx8uPJnr67eZUi6HG+SfTcEwRIZD9wwG0h2+XFik +RfTab3hWyNeeQdUBLyJNQLhsZrvCsn5hg3yVa2hdf7aFCsfODxHPbUJ1Vf1lW8w1 +O21hsCFQlK8NYRaF7pNprMg/ErYrThxfiV3/Tm6hb9Cz/YobERTpH/B5jTWVNHo7 +SSqLBd6rqYUiK/VK91tqHg9gpvu4OVn3nWZ9S58/k9riT6s8G+wGICkSxc6z1aBh +6YwCpdnf0qHTRKducrcJyvxE33KRuBCTDvMeydPshi/axlwuI1YOKLsoS0szP6cE +w+csryWu37ZFh5Vob1P5QxNr6erWIzil1kbvsIbhLUG5IYylahTirU2cbZ1gk4Xu +9cqkeeQFcdUlosfXDahJzuXvlrOlWK4uVmDjc3XL88HKyAukXpvb0/zY9qM4IRG6 +jw3mOUT7ErBlslpMCa++DQSWp3LQ2zcW7o7fB1+sbvBM8fr46sYw8xzc+E4fipmo +k6dqGSI86l3LxPRgNsfXxusTGr+XISvicyeZwlTkL89c3YqIUbA5MJb22c6h2tU/ +J2XTMFd0iu4E9DxogpbMQuiAxxYybU3lROcGmTPkWfBLFwvTUE/9JdBYZzzmzfMQ +k4Iofw87NgcHBFD19JJhl59igm7WXL06GEP+ZSDx++lS1E5xHCM= +=afIv +-----END PGP SIGNATURE----- +
+ +
+ + diff --git a/research/h25-c05-at-random-producer-events/inputs/input-012.data b/research/h25-c05-at-random-producer-events/inputs/input-012.data new file mode 100644 index 0000000000..a0f242854a --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-012.data @@ -0,0 +1,532 @@ +"""Owned Linux child domains for one trusted, single-threaded parent process. + +Source proposal only. No target was imported or run during authoring. The +external launcher must authenticate the OS, interpreter, system modules and +original subreaper installer before importing this module. This is the original +closed child-domain premise, not a sandbox against hostile forking or a hostile +host. Acquisition/unwind ambiguity quarantines the parent; it never authorizes +another launch or a completion. The enclosing guard must observe parent exit. +""" +import os +import signal +import subprocess +import time +import epoch_schema_v5 as schema + +_TYPE, _LEN = type, len +_OPEN, _READ, _CLOSE = os.open, os.read, os.close +_STAT = os.stat +_SCANDIR, _GETPID, _GETPGRP, _GETSID = os.scandir, os.getpid, os.getpgrp, os.getsid +_PIDFD_OPEN, _PIDFD_SIGNAL = os.pidfd_open, signal.pidfd_send_signal +_WAITPID, _CLOCK, _SLEEP = os.waitpid, time.monotonic, time.sleep +_POPEN, _POLL = subprocess.Popen, subprocess.Popen.poll +_PAGE_BYTES = os.sysconf('SC_PAGE_SIZE') +_DOMAINS = [] +MAX_GENERATIONS = 128 +MAX_PROC_ENTRIES = 131072 +MAX_PROC_BYTES = 8192 +CLEANUP_SECONDS = 2.0 + + +def _state(capability): + schema.need(_TYPE(capability) is object, 'exact owned domain capability required') + for token, state in _DOMAINS: + if token is capability: + return state + raise schema.EpochStop('unregistered owned domain') + + +def refresh_unknown_owner(owner): + # These are exact V5 ErrorOwner state references captured by the original + # parent before use. Read only the pinned private shape; no projection, + # callback, native I/O or interpretation of historical release slot9. + for native in owner['native_errors']: + if native is None: + continue + io = native[7] + if (io[0] or io[1] or io[2] or io[4] or io[6] or io[10] or io[11] or + io[5] is not None or native[5][1] or io[7][4] == 1): + owner['quarantine'][0] = True + if io[5] is not None: + owner['iterator_uncertain'][0] = True + + +def _fresh_acquisition(state): + # This shares the original parent's preallocated unknown-resource owner. + # Pending acquisition and delivered census failure are independent of a + # later Python close return. Neither flag is cleared by cleanup. + owner = state['unknown_owner'] + refresh_unknown_owner(owner) + schema.need(state['quarantine'] is False and state['acquisition_in_flight'] is False and + state['io_uncertain'] is False and owner['quarantine'][0] is False and + owner['pending'][0] is False and owner['iterator_uncertain'][0] is False, + 'uncertain ownership prohibits a fresh native acquisition') + + +def _opaque(state, error, slot): + # Preallocated slots retain the actual delivered object, without formatting. + # A secondary never replaces the first primary. Slots are finite and an + # overflow means quarantine, not a successful evidence projection. + state['quarantine'] = True + if state['primary'][0] is None: + state['primary'][0] = error + elif state['secondary'][slot] is None: + state['secondary'][slot] = error + else: + state['overflow'][0] = error + + +def _proc(pid, state): + schema.integer(pid, 1, (1 << 31) - 1) + descriptor = None + primary = None + _fresh_acquisition(state) + # The uncertain acquisition flag is set before the native entry. If open + # raises after an undisclosed descriptor acquisition, parent exit is needed. + try: + try: + _STAT('/proc/' + str(pid) + '/stat', dir_fd=None, follow_symlinks=False) + except (FileNotFoundError, ProcessLookupError): + # Only the pinned metadata-only primitive establishes absence. + # An exception from a later acquisition never proves no FD existed. + return None + state['acquisition_in_flight'] = True + state['unknown_owner']['pending'][0] = True + descriptor = _OPEN('/proc/' + str(pid) + '/stat', + os.O_RDONLY | os.O_CLOEXEC | os.O_NOFOLLOW | os.O_NONBLOCK) + state['acquisition_in_flight'] = False + state['unknown_owner']['pending'][0] = False + raw = _READ(descriptor, MAX_PROC_BYTES + 1) + schema.need(_TYPE(raw) is bytes and _LEN(raw) <= MAX_PROC_BYTES, + 'bounded proc stat read differs') + end = raw.rfind(b') ') + schema.need(end >= 0, 'malformed proc stat') + fields = raw[end + 2:].split() + schema.need(_LEN(fields) >= 22 and raw[:raw.find(b' ')] == str(pid).encode('ascii'), + 'proc stat identity or shape differs') + row = (pid, int(fields[1]), int(fields[2]), int(fields[3]), + int(fields[19]), fields[0].decode('ascii'), int(fields[21]) * _PAGE_BYTES) + schema.need(row[4] > 0 and row[6] >= 0, 'proc generation or RSS differs') + return row + except BaseException as error: + primary = error + if state['unknown_owner']['primary'][0] is None: + state['unknown_owner']['primary'][0] = error + state['quarantine'] = True + state['unknown_owner']['quarantine'][0] = True + _opaque(state, error, 0) + raise + finally: + if descriptor is not None: + # Burn before entry; a failed native close is not retried. + owned = descriptor + descriptor = None + try: + _CLOSE(owned) + except BaseException as close_error: + if state['unknown_owner']['primary'][0] is None: + state['unknown_owner']['primary'][0] = close_error + state['quarantine'] = True + state['unknown_owner']['quarantine'][0] = True + state['io_uncertain'] = True + _opaque(state, close_error, 1) + if primary is None: + raise + + +def _census(state): + iterator = None + primary = None + rows = {} + _fresh_acquisition(state) + state['acquisition_in_flight'] = True + state['unknown_owner']['pending'][0] = True + try: + iterator = _SCANDIR('/proc') + state['acquisition_in_flight'] = False + state['unknown_owner']['pending'][0] = False + count = 0 + for entry in iterator: + count += 1 + schema.need(count <= MAX_PROC_ENTRIES, 'proc census entry bound exceeded') + name = entry.name + if name.isdecimal(): + row = _proc(int(name), state) + if row is not None: + rows[row[0]] = row + return rows + except BaseException as error: + primary = error + # All delivered iteration/body failures latch before optional helper + # entry. A no-op/successful close cannot establish release afterward. + if state['unknown_owner']['primary'][0] is None: + state['unknown_owner']['primary'][0] = error + state['quarantine'] = True + state['io_uncertain'] = True + state['unknown_owner']['quarantine'][0] = True + state['unknown_owner']['iterator_uncertain'][0] = True + _opaque(state, error, 2) + raise + finally: + if iterator is not None: + owned = iterator + iterator = None + try: + owned.close() + except BaseException as close_error: + if state['unknown_owner']['primary'][0] is None: + state['unknown_owner']['primary'][0] = close_error + state['quarantine'] = True + state['unknown_owner']['quarantine'][0] = True + state['unknown_owner']['iterator_uncertain'][0] = True + state['io_uncertain'] = True + _opaque(state, close_error, 3) + if primary is None: + raise + + +def create_domain(unknown_owner): + """Called only after the original same-process subreaper was installed.""" + schema.need(_LEN(_DOMAINS) < 4, 'two modes by two producers domain bound exceeded') + schema.exact(unknown_owner, ('quarantine', 'pending', 'iterator_uncertain', 'primary', 'native_errors')) + for key in ('quarantine', 'pending', 'iterator_uncertain', 'primary'): + schema.need(_TYPE(unknown_owner[key]) is list and _LEN(unknown_owner[key]) == 1, + 'original parent unknown-resource slot differs') + schema.need(_TYPE(unknown_owner['native_errors']) is list and _LEN(unknown_owner['native_errors']) == 4, + 'exact two-mode V5 error-owner registry required') + for native in unknown_owner['native_errors']: + schema.need(native is None or (_TYPE(native) is list and _LEN(native) == 9 and + _TYPE(native[7]) is list and _LEN(native[7]) == 13), + 'original captured V5 error-owner shape differs') + refresh_unknown_owner(unknown_owner) + schema.need(all(unknown_owner[key][0] is False for key in + ('quarantine', 'pending', 'iterator_uncertain')) and unknown_owner['primary'][0] is None, + 'unknown-resource parent already requires teardown') + token = object() + state = {'rows': [None] * MAX_GENERATIONS, 'fds': [None] * MAX_GENERATIONS, + 'fd_attempted': [False] * MAX_GENERATIONS, + 'fd_closed': [False] * MAX_GENERATIONS, 'count': 0, + 'groups': set(), 'reaped': [], 'after_root': set(), + 'process': None, 'root': None, 'returncode': None, + 'parent_pid': _GETPID(), 'parent_group': _GETPGRP(), 'parent_session': _GETSID(0), + 'phase': 'CONSTRUCTING', 'quarantine': False, + 'acquisition_in_flight': False, 'io_uncertain': False, 'primary': [None], + 'unknown_owner': unknown_owner, + 'secondary': [None] * 16, 'overflow': [None], + 'final_rows': None, 'closure_confirmed': False} + _DOMAINS.append((token, state)) + try: + rows = _census(state) + schema.need(not any(row[1] == state['parent_pid'] for row in rows.values()), + 'parent has preexisting child processes') + state['phase'] = 'RESERVED' + return token + except BaseException as error: + if unknown_owner['primary'][0] is None: + unknown_owner['primary'][0] = error + unknown_owner['quarantine'][0] = True + state['quarantine'] = True + _opaque(state, error, 4) + state['phase'] = 'STOP' + raise + + +def _add(state, row): + _fresh_acquisition(state) + key = row[0], row[4] + schema.need(row[0] != state['parent_pid'], 'parent cannot enter own child domain') + for index in range(state['count']): + prior = state['rows'][index] + if prior is not None and (prior[0], prior[4]) == key: + if row[2] != state['parent_group']: + state['groups'].add((row[2], row[3])) + return True + index = state['count'] + schema.need(index < MAX_GENERATIONS, 'owned process generation bound exceeded') + # Reserve the slot before native acquisition. No role/generation slot is + # recycled after a failed or disappeared acquisition. + state['count'] = index + 1 + state['rows'][index] = row + state['acquisition_in_flight'] = True + state['unknown_owner']['pending'][0] = True + try: + state['fds'][index] = _PIDFD_OPEN(row[0], 0) + state['acquisition_in_flight'] = False + state['unknown_owner']['pending'][0] = False + current = _proc(row[0], state) + if current is None or (current[0], current[4]) != key: + return False # The actual FD stays owned for one terminal close. + if current[2] != state['parent_group']: + state['groups'].add((current[2], current[3])) + return True + except BaseException as error: + if state['unknown_owner']['primary'][0] is None: + state['unknown_owner']['primary'][0] = error + state['quarantine'] = True + state['unknown_owner']['quarantine'][0] = True + _opaque(state, error, 5) + raise + + +def observe(capability): + state = _state(capability) + all_rows = _census(state) + known = set() + for index in range(state['count']): + prior = state['rows'][index] + current = None if prior is None else all_rows.get(prior[0]) + if current is not None and current[4] == prior[4]: + known.add(current[0]) + _add(state, current) + for unused in range(MAX_GENERATIONS + 1): + changed = False + for pid, row in all_rows.items(): + if pid not in known and (row[1] == state['parent_pid'] or row[1] in known): + if _add(state, row): + known.add(pid) + changed = True + if not changed: + break + else: + raise schema.EpochStop('child-domain closure iteration bound exceeded') + return all_rows, tuple(all_rows[pid] for pid in sorted(known)) + + +def adopt_popen(capability, process): + state = _state(capability) + schema.need(state['phase'] == 'RESERVED' and state['process'] is None and + _TYPE(process) is _POPEN, 'Popen ownership or one-attempt state differs') + state['process'] = process # Exact original return, never a supplied proxy. + row = _proc(process.pid, state) + schema.need(row is not None and row[1] == state['parent_pid'] and + row[2] == row[3] == process.pid, + 'new child PID/session/generation missing before first poll') + state['root'] = row + schema.need(_add(state, row) is True, 'original child pidfd generation not owned') + state['phase'] = 'RUNNING' + return row + + +def poll_owned(capability): + state = _state(capability) + schema.need(state['phase'] == 'RUNNING' and _TYPE(state['process']) is _POPEN, + 'original running Popen required') + result = _POLL(state['process']) + if result is not None: + schema.integer(result, -128, 255) + state['returncode'] = result + return result + + +def _kill(state): + for index in range(state['count']): + fd, prior = state['fds'][index], state['rows'][index] + if fd is None or state['fd_attempted'][index]: + continue + current = _proc(prior[0], state) + if current is not None and current[4] == prior[4] and current[5] != 'Z': + try: + _PIDFD_SIGNAL(fd, signal.SIGKILL, None, 0) + except ProcessLookupError: + pass + + +def finish_domain(capability): + """Always attempted, including Popen exceptions; no caller closure claims.""" + state = _state(capability) + schema.need(state['phase'] in ('RESERVED', 'RUNNING'), 'domain cleanup replay') + state['phase'] = 'CLEANUP_CONSUMED' + started = _CLOCK() + primary = None + try: + _fresh_acquisition(state) + while True: + all_rows, current = observe(capability) + process = state['process'] + if process is not None and process.returncode is not None: + for row in current: + if row[0] != process.pid: + state['after_root'].add((row[0], row[4])) + _kill(state) + if process is not None: + result = _POLL(process) + if result is not None: + state['returncode'] = result + for index in range(state['count']): + prior = state['rows'][index] + row = _proc(prior[0], state) + if (row is None or row[4] != prior[4] or row[1] != state['parent_pid'] or + (process is not None and row[0] == process.pid)): + continue + try: + pid, status = _WAITPID(row[0], os.WNOHANG) + except ChildProcessError: + continue + if pid: + state['reaped'].append((pid, prior[4], status)) + all_rows, current = observe(capability) + remaining = tuple(row for row in all_rows.values() + if row[1] == state['parent_pid'] or (row[2], row[3]) in state['groups'] or + any(prior is not None and (row[0], row[4]) == (prior[0], prior[4]) + for prior in state['rows'][:state['count']])) + state['final_rows'] = remaining + if not current and not remaining: + state['closure_confirmed'] = True + break + if _CLOCK() - started >= CLEANUP_SECONDS: + break + _SLEEP(0.01) + except BaseException as error: + primary = error + if state['unknown_owner']['primary'][0] is None: + state['unknown_owner']['primary'][0] = error + state['quarantine'] = True + state['unknown_owner']['quarantine'][0] = True + _opaque(state, error, 6) + raise + finally: + # Every known FD gets one attempt even if a prior close failed. Native + # return/boxing, Python call-entry and final unwind still have no total + # recovery theorem; any such failure forbids minting and parent reuse. + first_close = None + for index in range(state['count']): + descriptor = state['fds'][index] + if descriptor is None or state['fd_attempted'][index]: + continue + state['fd_attempted'][index] = True + try: + _CLOSE(descriptor) + state['fd_closed'][index] = True + except BaseException as error: + if state['unknown_owner']['primary'][0] is None: + state['unknown_owner']['primary'][0] = error + state['quarantine'] = True + state['unknown_owner']['quarantine'][0] = True + state['io_uncertain'] = True + _opaque(state, error, 7) + if first_close is None: + first_close = error + state['phase'] = 'CLOSED' if primary is None and first_close is None else 'STOP' + if primary is None and first_close is not None: + raise first_close + + +def terminal_facts(capability): + state = _state(capability) + _fresh_acquisition(state) + schema.need(state['phase'] == 'CLOSED' and state['quarantine'] is False and + state['acquisition_in_flight'] is False and state['io_uncertain'] is False and state['root'] is not None and + state['returncode'] == 0 and state['closure_confirmed'] is True and + state['final_rows'] == () and not state['after_root'] and not state['reaped'] and + all(fd is None or (state['fd_attempted'][index] and state['fd_closed'][index]) + for index, fd in enumerate(state['fds'])), + 'owned terminal domain is incomplete, failed, orphaned or quarantined') + # Fresh census after FD cleanup. This is independent of receipt booleans. + rows = _census(state) + schema.need(not any(row[1] == state['parent_pid'] or + (row[2], row[3]) in state['groups'] for row in rows.values()), + 'postcleanup owned child/group still present') + return {'root': list(state['root']), 'returncode': state['returncode'], + 'owned_generations': [list(row) for row in state['rows'][:state['count']]], + 'groups': [list(pair) for pair in sorted(state['groups'])], + 'remaining': [], 'adopted_reaps': [], 'observed_after_root_exit': [], + 'pidfd_close_attempted': list(state['fd_attempted'][:state['count']]), + 'pidfd_close_confirmed': list(state['fd_closed'][:state['count']]), + 'source': 'original in-process Popen and owned generation registry', + 'hostile_fork_or_privileged_host_resistance_claimed': False} + + +def stop_slots(capability): + state = _state(capability) + return state['primary'], state['secondary'], state['overflow'], { + 'phase': state['phase'], 'quarantine': state['quarantine'], + 'acquisition_in_flight': state['acquisition_in_flight'], + 'io_uncertain': state['io_uncertain'], + 'shared_pending': state['unknown_owner']['pending'][0], + 'shared_iterator_uncertain': state['unknown_owner']['iterator_uncertain'][0], + 'shared_quarantine': state['unknown_owner']['quarantine'][0], + 'closure_confirmed': state['closure_confirmed'], + 'pidfd_close_attempted': list(state['fd_attempted'][:state['count']]), + 'pidfd_close_confirmed': list(state['fd_closed'][:state['count']])} + + +def prefix_exit1_terminal_facts(capability): + """Return cleanup/exit DATA for an actual owned prefix child exiting 1. + + Separate from production terminal_facts. Never creates an epoch ticket, + ParentCompletion, source admission, or control-family acceptance. + """ + state = _state(capability) + owner = state['unknown_owner'] + try: + schema.need(_GETPID() == state['parent_pid'], + 'prefix terminal observer is not the owning parent') + _fresh_acquisition(state) + schema.need(owner['primary'][0] is None and + state['primary'][0] is None, + 'earlier error forbids prefix terminal observation') + schema.need( + state['phase'] == 'CLOSED' and + state['quarantine'] is False and + state['acquisition_in_flight'] is False and + state['io_uncertain'] is False and + state['root'] is not None and + _TYPE(state['returncode']) is int and + state['returncode'] == 1 and + state['closure_confirmed'] is True and + state['final_rows'] == () and + not state['after_root'] and + not state['reaped'] and + all(fd is None or + (state['fd_attempted'][index] and state['fd_closed'][index]) + for index, fd in enumerate(state['fds'])), + 'owned exit1 prefix domain is incomplete or quarantined', + ) + rows = _census(state) + schema.need( + not any(row[1] == state['parent_pid'] or + (row[2], row[3]) in state['groups'] + for row in rows.values()), + 'postcleanup owned prefix child/group still present', + ) + return { + 'schema': 'h25-prefix-exit1-terminal-facts-v1', + 'root': list(state['root']), + 'returncode': state['returncode'], + 'owned_generations': [ + list(row) for row in state['rows'][:state['count']] + ], + 'groups': [list(pair) for pair in sorted(state['groups'])], + 'remaining': [], + 'adopted_reaps': [], + 'observed_after_root_exit': [], + 'pidfd_close_attempted': list( + state['fd_attempted'][:state['count']] + ), + 'pidfd_close_confirmed': list( + state['fd_closed'][:state['count']] + ), + 'source': 'original in-process Popen and owned generation registry', + 'production_completion': False, + 'refusal_semantics_authenticated_by_this_function': False, + 'hostile_fork_or_privileged_host_resistance_claimed': False, + } + except BaseException as error: + if owner['primary'][0] is None: + prior = state['primary'][0] + owner['primary'][0] = error if prior is None else prior + primary = owner['primary'][0] + if state['primary'][0] is None: + state['primary'][0] = primary + if error is not primary: + if state['secondary'][8] is None: + state['secondary'][8] = error + elif state['overflow'][0] is None: + state['overflow'][0] = error + state['quarantine'] = True + owner['quarantine'][0] = True + # Do not change phase: an invalid early call must not prevent + # finish_domain from reaching its known-FD cleanup. + if primary is error: + raise + raise primary diff --git a/research/h25-c05-at-random-producer-events/inputs/input-013.data b/research/h25-c05-at-random-producer-events/inputs/input-013.data new file mode 100644 index 0000000000..754ffb93fe --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-013.data @@ -0,0 +1,49 @@ +{ + "costs": "OPEN_NOT_ZERO", + "loaded_policy_proved": false, + "native_policy_selected_or_installed": false, + "read_only_metadata_queries": [ + { + "argv": [ + "dpkg-query", + "-W", + "-f=${Package}\\t${Version}\\t${source:Package}\\t${source:Version}\\t${Architecture}\\n", + "linux-modules-7.0.0-42-generic", + "linux-image-7.0.0-42-generic", + "apparmor" + ], + "returncode": 0, + "stdout": "apparmor\t4.0.1really4.0.1-0ubuntu0.24.04.9\tapparmor\t4.0.1really4.0.1-0ubuntu0.24.04.9\tamd64\nlinux-image-7.0.0-42-generic\t7.0.0-42.42~24.04.1\tlinux-signed-hwe-7.0\t7.0.0-42.42~24.04.1\tamd64\nlinux-modules-7.0.0-42-generic\t7.0.0-42.42~24.04.1\tlinux-hwe-7.0\t7.0.0-42.42~24.04.1\tamd64\n" + }, + { + "argv": [ + "dpkg-query", + "-S", + "/usr/sbin/apparmor_parser", + "/boot/config-7.0.0-42-generic" + ], + "returncode": 1, + "stderr": "dpkg-query: no path found matching pattern /usr/sbin/apparmor_parser\n", + "stdout": "linux-modules-7.0.0-42-generic: /boot/config-7.0.0-42-generic\n" + }, + { + "argv": [ + "dpkg-query", + "-S", + "/sbin/apparmor_parser" + ], + "returncode": 0, + "stderr": "", + "stdout": "apparmor: /sbin/apparmor_parser\n" + } + ], + "recorded_utc": "2026-11-02T16:37:23.914452+00:00", + "retained_config": { + "original_path": "/boot/config-7.0.0-42-generic", + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/config-7.0.0-42-generic.data", + "sha256": "8da949fb637f675c8a1170a2bfc5f029b2642f54e0efe8dbb54ca95c6324cf8d", + "size_bytes": 308206 + }, + "source_binary_correspondence_proved": false, + "source_reader_cap": 1048576 +} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-014.data b/research/h25-c05-at-random-producer-events/inputs/input-014.data new file mode 100644 index 0000000000..7ff24451fa --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-014.data @@ -0,0 +1,37 @@ +{ + "schema": "h25-at-random-producer-events-source/v1", + "unit": "13", + "started_utc": "2026-11-02T17:43:46.352854+00:00", + "input_gate_deadline_utc": "2026-11-02T17:58:46.352854+00:00", + "hard_deadline_utc": "2026-11-02T18:28:46.352854+00:00", + "initial_no_independent_progress_deadline_utc": "2026-11-02T18:13:46.352854+00:00", + "objective": "Implement and independentlyreview one exact-source AT_RANDOM producer-event provenance proof and bounded witness:16byte namedkernelRNGrequest, matchingbuffer/length/allocatedspan transfer, matchingpointer tag, and explicitfailure/partialtransfer behavior. No stablememory/handoff equality unless separatelyjustified underoriginalpremises.", + "explicit_scope_revision_from_Pro14": "Pro14 proposed successfulnativeELFhandoffmemoryequalsseed. Independentreview found latertrace_sched_process_exec/ptrace_event afterELFhandler inretainedfs/exec.c; originalOSintegrityalone isnot no-writerlease. This selected prerequisite is explicitlysmallerproducer-event relation, not a claimedhandofftheorem or change tooriginalC05/fullV03objective.", + "Pro14_response_sha256": "e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a", + "checkpoints": { + "P1": "Independentlyauthenticate exactretainedbinfmt/provider/auxvec/nativeABI/config and sourceOSpremise inputs for thisoneproducer; atmost specificallynamedinclude/linux/elf.h samecommit definitionheader ifessential. Allindispensabledefsforclaim available, completeauxvcataloguenotrequired.", + "P2": "Independentacceptance of precisestateful producer-event proposition and sourceargument includingnativepointerconversion/stackallocation/arraylength/provider/copy/tag/failure ordering, explicitprimitivecontractboundary and no forgedhandoffmemorypreservation/actualinstance.", + "P3": "Implement exact-source-specific boundedcanonicalinteger-onlywitness/checker and independentlyauthoredsemanticcounterexamples forchangedlength/provider/argvpointer/copysource/copyfailureassuccess; controlsreasonrelationsbeyondchecksumreject. No fabricatedseedbytes/admissionflags.", + "P4": "Independentcritical acceptance of exactsource proof/code/controls and finalsourcefreeze with meaningfulnormal/-O results and boundedstandaloneexportrecipe, readyforscopedpublication; no originalruntime/completeKcredit." + }, + "input_cap": { + "only_new_source_allowed": "include/linux/elf.h at88cb661f6b53f472167d39a72241b5396e34ab2a", + "new_definition_header_files": 1, + "per_file_bytes": 1048576, + "no_new_kernel_implementation_bodies": true + }, + "source_reuse": "ExactUnit12sourceindex1022b415e1a85962e18e84484beae918fbce6ff51431fe28cc752ffb73179940; Unit11fs/exec.c/config/OSsourceprovenance andoriginalTCB/native/parent/domainrefs read-only. Units01\u201312remainclosed.", + "source_gate": "BeforeexplicitindependentP1release onlyinputavailability/claimanalysis; no implementation. Pro14criticalreviewpending; noinvalidhandoffclaim may beadopted.", + "execution_scope": "OnlyNEWstaticchecker/newownedDATAfixtures undernormal/-O asneeded; no original/kernel/nativeTCB/compiler/Popen/namespace/scientific/processinspection orpolicyoperation. No originalsourceedits.", + "repair_policy": "Atmostone10minsource repair withinfixed45min; noautomaticextensions/newbudget. Only genuinehigherindependentlyacceptedlocalcheckpoint resets thisround30minclock.", + "STOP": "Indispensabledefinition/provider/conversion/ownership/failure edgeunresolved, input15min/hard45min/noindependentincrease30min, or proposedproofneedsunapprovedassumption. Freezeexactpaths/hashesandstop. Negative/partialfacts are notwholecheckpointcredit.", + "original_limits": "512childsource/64MiBfile/256MiBcapture and allrawcodecs;parent8192source/16384stage;receiver48modules/512globals/twocaptures;unchangedcommands/native6env/sixroles/genuineproc/Popen/4domains/C07/rawcustody/fixedELFexpectations.", + "full_C05": false, + "full_V03": false, + "original_activity_credit_added": 0, + "original_completion_percent": 43.5, + "new_scientific_budget": false, + "current_guarded_attempt_approved": false, + "app_goal_separately_paused": true, + "outside_costs": "OPEN_NOT_ZERO" +} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-015.data b/research/h25-c05-at-random-producer-events/inputs/input-015.data new file mode 100644 index 0000000000..c46f652d03 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-015.data @@ -0,0 +1,202 @@ +ChatGPT said: +Decision + +These provenance proofs may terminate at the existing OS/loader trust boundary. Requiring recursive verification of ChaCha, entropy collection, FPU sizing, or CPU detection merely to identify a genuine kernel-supplied input would strengthen the original assurance requirement. What must still be proved is the particular interface, its arguments, the destination and ownership of its output, and its relationship to the admitted execution. + +I read the complete +original native TCB, its profile, and the relevant parent and supervisor bodies. The TCB expressly presupposes OS/loader and POSIX integrity, excludes inode-zero executable mappings from its file-backed inventory, and places them within the OS trust boundary. The +supervisor similarly relies on genuine native operations while disclaiming authentication of native memory by file hashes. + +That premise must include the ordinary operational meaning already required for exec, mappings, POSIX I/O, and process ownership. Interpreting it as merely “unchanged kernel bytes” would leave the original checks without their necessary semantics. + +The exact Unit12 kernel bodies remained inaccessible through my Launchpad fetch. Their detailed statements below are therefore reported retained-source findings, not newly verified reads. This is an access limitation, not evidence of source absence. + +Where the proof stops + +The legitimate termination point is a named OS/loader interface guarantee, with source evidence binding the particular producer to that interface. It is not every private helper merely because its name appears in kernel source. + +For example, the ELF loader supplies AT_RANDOM as an address of sixteen random bytes, while the x86 ABI defines AT_MINSIGSTKSZ as the kernel’s signal-frame requirement for the current hardware configuration. These meanings allow a scoped provider contract without independently reproducing their implementation algorithms. +Linux manual page ++1 + +The distinction is between origin and the stronger functional claims subsequently used. Establishing that sixteen bytes came from the genuine kernel RNG does not establish statistical independence or cryptographic strength. Establishing the genuine kernel-advertised signal-stack requirement does not derive its exact numerical value. If later reasoning needs either stronger property, it must obtain the corresponding evidence rather than silently assuming it. + +An initial TCB receipt also does not establish a perpetual trusted interval. The +parent separately checks actual process identity, captured primitives, receiver/source bindings, and deadlines. Those checks do not create C07 lifetime protection or compiler channel confinement. + +Precise quantified boundary + +Define +𝑇 +( +𝐷 +, +Γ +0 +) +T(D,Γ +0 + ​ + +) from the unchanged programs and actual launch mechanism under the original premises, independently of K, including failures and interruptions. For each relevant event in every trace, establish an ordinary +𝐹 +/ +𝐴 +F/A origin, an +𝑁 +/ +𝐿 +N/L relation, or a named provider relation. + +For provider +𝑝 +p, the permitted proof rule is + +𝐻 +O +S +( +𝑒 +) +∧ +ActualProvider +⁡ +𝑝 +( +𝑒 +) +∧ +ArgumentsAndOwnership +⁡ +𝑝 +( +𝑒 +) +   +⟹ +   +𝑅 +𝑝 +( +𝑒 +) +. +H +OS + ​ + +(e)∧ActualProvider +p + ​ + +(e)∧ArgumentsAndOwnership +p + ​ + +(e)⟹R +p + ​ + +(e). + +Here +𝐻 +O +S +H +OS + ​ + + is the original premise where applicable, not a newly minted approval flag. Source work establishes the dispatch and argument relation; genuine instance evidence establishes the actual subject and applicable context. The provider premise supplies only the declared semantics. + +A kernel correctly returning foreign proc data or received-FD contents does not close those payloads’ origins. Likewise, the inode-zero exclusion does not authenticate arbitrary anonymous code. + +Minimum evidence for the reported categories +Category Sufficient scoped boundary and remaining evidence +RSEQ Resolve the exact selected UAPI declaration, meaning of end, alignment, and the producer’s arithmetic before claiming numerical size/alignment relations. Do not substitute sizeof for active extent. get_count_order, CLOCKS_PER_SEC/`USER_HZ`, and native ELF aliases are definitional questions, not reasons to audit the whole kernel. Later writes to registered RSEQ memory require a separate owned-registration/update contract. +Random seed Establish the sixteen-byte request, genuine provider dispatch, copy length, fresh exec-stack destination, and AT_RANDOM pointer relationship. The origin proof can stop at the kernel RNG. Entropy contributors and ChaCha internals need not be recursively verified for this claim. +Signal-frame requirement Bind the actual native ABI’s AT_MINSIGSTKSZ to its genuine provider. Preserve the reported unconditional emission and configured IA32/FPU effects. No guessed constant or silently simplified native-only formula is permissible. Proving every FPU calculation is unnecessary unless reproducing the numerical result is itself required. +vDSO/vvar Preserve the reported vdso64_enabled guard without inventing a null test. Account separately for kernel-provided executable code, dynamic data, selected ABI, and actual mapping. The existing OS boundary covers genuine kernel implementation integrity; a pointer-range check or source tag does not establish actual mapping correspondence or all subsequent observations. +CPU and execution state Give HWCAP fields their selected ABI meanings and bind credentials, secure-exec state, and any executable FD to the actual exec. Prove an FD branch absent or establish its ownership. Direct CPU instructions and arbitrary hypervisor leaves are not automatically covered by an auxv contract. + +Selecting this particular kernel/configuration remains an instance-admission matter. The source association is not a reproducible-build or running-memory proof, but neither does the original contract require inventing such a proof merely to use its declared OS premise. + +One next complete operation + +Complete a source proof and bounded witness for the original AT_RANDOM producer path. This is a distinct, narrow operation using retained inputs, not a reopening of Unit12 or a claim to complete the auxv catalogue. + +Its exact success proposition should be + +successful native ELF handoff +⇒ +∃ +𝑝 +, +𝑏 +, +∣ +𝑏 +∣ += +16 +, +𝐴 +𝑇 +R +A +N +D +O +M += +𝑝 +, +𝑀 +h +a +n +d +o +f +f +[ +𝑝 +: +𝑝 ++ +16 +] += +𝑏 +, +successful native ELF handoff⇒∃p,b,∣b∣=16,AT +RANDOM + ​ + +=p,M +handoff + ​ + +[p:p+16]=b, + +where +𝑏 +b was supplied by the named kernel RNG for that invocation, and +𝑝 +p identifies the allocated initial-stack span. This is a statement at handoff, before userspace can overwrite the bytes. It makes no statistical claim and no claim that the bytes remain unchanged forever. + +The operation should do the following. + +Authenticate the retained fs/binfmt_elf.c, relevant auxvec/ELF declarations, and provider source against the retained index. Check the complete local path from buffer declaration through generation, allocation, copy, tag emission, and failure exits. +Establish source and destination correspondence for partial writes as well as success. A failed or interrupted path must not acquire a completed-handoff claim. +Produce the proof and a canonical, integer-only witness describing the provider relation, source anchors, and outstanding actual-exec binding. It must contain neither fabricated seed bytes nor an admission flag. +Independently challenge the argument with changed request length, a substituted provider, a pointer into argv, a mismatched copy source, and a copy failure incorrectly treated as success. These must test the reasoning, not merely checksum rejection. + +Use a separate fixed source unit with a 15-minute input gate and at most 60 minutes overall. No new kernel implementation bodies are needed. If native ELF aliases remain essential and unresolved, permit only the specifically named same-commit definition header include/linux/elf.h; stop if further definitions are indispensable. The upstream location is an acquisition lead, not a substitute for the target version. +GitHub + +Success is independent acceptance of this one provenance theorem. STOP on an unresolved provider, tag, conversion, ownership, or failure-path edge. Do not respond by expanding into entropy or FPU internals. Future genuine-owner binding remains necessary; source pins cannot manufacture an actual exec or mapping. + +No additional user assurance decision is needed to author this narrow proof under the original OS/loader premise. Accepting stronger entropy guarantees, arbitrary outside payloads, private GCC correctness, or a perpetual integrity interval would require additional evidence or an explicit assurance change. + +Full C05/full V03 remain false. Complete channel coverage, C07 lifetime, inventory fit, the intact baseline, and all named V03 controls remain required. All limits, scores, costs marked OPEN_NOT_ZERO, and original authorship and lineage remain unchanged, including Chris R/Clear1nsight, Pro/Codex/Sol Max, PR6321/6029/5864, unpaidmoon/Cursor Grok PR6339, and Douglas R. Colkitt. \ No newline at end of file diff --git a/research/h25-c05-at-random-producer-events/inputs/input-016.data b/research/h25-c05-at-random-producer-events/inputs/input-016.data new file mode 100644 index 0000000000..5dfa7790d5 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-016.data @@ -0,0 +1,205 @@ +{ + "all_old_units_01_12_closed": true, + "costs": "OPEN_NOT_ZERO", + "disposition": "ACCEPT_SCOPED_OS_PROVIDER_TERMINATION_AND_EXPLICIT_SMALLER_EVENT_COMPONENT_DO_NOT_ACCEPT_HANDOFF_MEMORY_THEOREM", + "findings": [ + { + "claim": "Origin proofs may terminate at a sufficiently specified genuine OS/loader provider interface under the applicable original integrity premises. Recursive RNG/FPU implementation proof is not universally mandated by C05.", + "classification": "ACCEPT_SCOPED_PROVIDER_BOUNDARY", + "evidence": "native_tcb1\u20138 explicitly assumes native hashing/POSIX/OS-loader integrity/closed bootstrap;107\u2013108 places inode-zero executable mappings in explicit OS TCB. Independent provider-boundary0d91b34... shows actual later operational use.", + "id": "P14-A01", + "limits": "Provider semantics must be declared and applicable; actual dispatch/arguments/subject/ownership/interval still need evidence. No entropy quality, arbitrary private GCC ABI, perpetually trusted interval or unclassified payload origin follows." + }, + { + "claim": "T(D,Gamma0) must be defined independently of K, including failures/interruption; every relevant input event then needs allowed origin/relation or sufficient exclusion/irrelevance.", + "classification": "ACCEPT_QUANTIFIERS_WITH_REALIZATION_OBLIGATIONS", + "evidence": "Consistent with Pro13 independent review and original fixed-oracle/actual-fact distinction.", + "id": "P14-A02", + "limits": "A named provider or kernel file hash is not a minted approval flag; source identity does not establish actual future provider/mapping/FD/namespace/attachment facts." + }, + { + "claim": "The proposed M_handoff[p:p+16]=b statement needs preservation beyond generation/copy/tag events.", + "classification": "DO_NOT_ADOPT_HANDOFF_EQUALITY_UNDER_OS_INTEGRITY_ALONE", + "evidence": "binfmt_elf361\u2013363 performs later auxv copy;1297\u20131383 continues through mm/brk/personality/register/finalize/start_thread and returns. Exact fs/exec1702\u20131744 runs audit/trace_sched_process_exec/ptrace_event(PTRACE_EVENT_EXEC) after handler success before return to user context. START_THREAD is not by itself actual userspace handoff.", + "id": "P14-F01", + "limits": "Correct OS behavior can support authorized memory modifications. Need a specifically applicable original no-writer/nontracing/closed-host argument and proof of later own-write range separation, or label the smaller event theorem. No claim here that an actual forbidden tracer exists or that no original premise could suffice." + }, + { + "claim": "Even copy-return memory equality must not be inferred without a sufficient concurrency/exclusivity premise.", + "classification": "TRANSFER_SUCCESS_NOT_ATOMIC_OR_PERSISTENT_SNAPSHOT", + "evidence": "copy_to_user has source,destination,length and residual/error behavior; logical successful writes do not exclude another actor overwriting already-written bytes during or after the transfer.", + "id": "P14-F02", + "limits": "Prove completed transfer provenance under applicable genuine copy semantics; do not make a static witness/checker report a memory snapshot or supply unprovided exclusion by definition." + }, + { + "claim": "Seed-copy failure immediately aborts before AT_RANDOM emission; later failures do not erase already reached events and do not establish a completed table or handoff.", + "classification": "FAILURE_AND_COMPLETION_BOUNDARIES_MUST_BE_EXPLICIT", + "evidence": "binfmt_elf202\u2013230 platform/baseplatform/seed copies returnEFAULT;319\u2013324 lock/VMA failures;327\u2013357 put_user/string failures;361\u2013363 final auxv-copy failure/success;1297\u20131300 propagates negative result;exec1784\u20131798 fatal post-point-of-no-return handling.", + "id": "P14-F03", + "limits": "Partial writes must remain partial-event facts. A zero seed-copy result is not create_elf_tables success, and create_elf_tables success is not unconditional handoff. Interrupted execution gets no future event claim." + }, + { + "claim": "The AT_RANDOM address is a numeric auxv word derived from u_rand_bytes, not proof of a live owned span or a dereferenced memory value.", + "classification": "NATIVE_NUMERIC_AND_OBJECT_RELATIONS_REQUIRE_EXACT_DEFINITIONS", + "evidence": "binfmt_elf179 declares unsigned char[16];226 requests sizeof that array;227\u2013230 uses STACK_ALLOC and same source;266 casts (elf_addr_t)(unsigned long)u_rand_bytes. STACK_ALLOC/ROUND branches141\u2013152 and native aliases determine width/arithmetic.", + "id": "P14-F04", + "limits": "Prove native class/pointer/unsigned-long/Elf64_Addr width and no truncation using exact selected declarations. Until established, model p decrement as unsigned arithmetic modulo width; do not assume nonwrapping fresh in-range span or disjoint later writes." + }, + { + "claim": "A bounded AT_RANDOM producer-event source proof/witness is legitimate without new assurance permission merely to author it.", + "classification": "ACCEPT_EXPLICITLY_SMALLER_NEXT_SOURCE_OPERATION", + "evidence": "Retained source and original provider premise can support a distinct local prerequisite. Parent explicitly selects this smaller subproblem.", + "id": "P14-A03", + "limits": "No handoff-memory equality, ownership lease or whole auxv/K/enclosure/C05 credit. All closed Units01\u201312 remain closed; proposed new source unit needs its own gate/bounds. At most same-commit include/linux/elf.h definition header if essential; no other new implementation bodies or recursive expansion." + } + ], + "full_C05": false, + "full_V03": false, + "new_scientific_budget": false, + "next_operation_requirements": [ + "Authenticate exact retained source/definition pins; optionally acquire only same-commit include/linux/elf.h if native aliases are indispensable. A master branch URL is only a lead, never a target-version substitute. STOP if further indispensable definitions/implementation bodies are needed.", + "State a source-level event/def-use theorem, not a memory-content theorem. Define completion at each event site and exclude missing/failed/interrupted future events without erasing earlier events.", + "Prove16-byte array/request/copy agreement, actual source-buffer identity, computed destination, native conversion width and exact AT_RANDOM tag identity. State address arithmetic/range/ownership premises rather than assuming them.", + "Retain all local failure paths and subsequent create_elf_tables/ELF/exec boundaries. Show how partial copy results prevent the corresponding completion claim; successful earlier events do not establish successful later handoff.", + "Use genuine provider semantics only at declared specific interfaces under applicable original OS/loader premises. No source checker may claim actual seed bytes, exclusive stack state, provider observation or current approval.", + "Canonical integer-only witness should identify G/C/K/U anchors, source pins, length, types, symbolic address relation, completion/failure sites, conditional premises and unresolved actual-owner obligations; no fabricated seed/transcript/admission flags/self-hash cycle.", + "Independent controls should challenge semantic reasoning withchanged request/buffer/copy length, substituted provider/source, pointer into argv, narrowing conversion, failure branch reachingcompletion, and later overwrite/tracer scenario that leaves event theorem intact but refutes an unjustified memory/handoff corollary. Do not count mere checksum refusals as all these semantic controls.", + "Future genuine actual exec/native ABI/provider/subject/stack bounds/mapping/descriptor/namespace/policy/lifetime evidence and all original approvals remain outside this source component. No new generic helper or original/compiler/native/namespace execution." + ], + "operations": { + "compiler_native_namespace_policy_or_target_operations": 0, + "new_source_acquisition": 0, + "original_execution": 0, + "protected_runtime_reads": 0, + "source_bytes_only": true, + "tests": 0, + "writes_only": "consultation/k-contract-review/PRO14-CRITICAL-ASSESSMENT-v1.*" + }, + "original_activity_credit_added": 0, + "original_completion_percent": 43.5, + "original_premise_scope": "Original OS/POSIX/loader trust is present and operationally used after bootstrap; it need not be re-proved through ChaCha/FPU internals for a genuine named-origin claim. Its initial receipt does not create a perpetual no-writer or no-tracer lease. Original C10 no-concurrent/async/tracing wording is attached to bounded adapter/error proof; applying it to future compiler exec-stack preservation needs an explicit scope argument. Closed-domain source disclaims hostile-host/fork sandbox protection; do not silently turn that into either unlimited attacker coverage or an unproved exclusion premise.", + "public_source_qualification": "Pro14 could not access actual Launchpad bodies. This reviewer independently read the cited retained exact bodies, including the post-handler PTRACE_EVENT_EXEC site. Pro external manpages/master-header links are not exact Ubuntu realization proofs.", + "read_complete_response": true, + "report_pins": { + "binfmt_elf": { + "bytes": 58558, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/fs/binfmt_elf.c", + "sha256": "1939cf7c82077d1a0793777be7ca0e11985750cbaff8c342ce2b2e4647c50102" + }, + "exec": { + "bytes": 50792, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/fs/exec.c", + "sha256": "4eb89b8d5d23050d9a9741f73979fe95fc083b897b2744f08fd395da62f4a698" + }, + "generic_auxvec": { + "bytes": 1834, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/uapi/linux/auxvec.h", + "sha256": "8dadb9bdd5f00bbcbb6439086f5a9d429b4eff457a61b11ce08941d1dd8d60fa" + }, + "native_elf_header": { + "bytes": 12164, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/include/asm/elf.h", + "sha256": "59b9c134388114d4b5bd489cc7f278ca5b1e3a3619e908361c09b233eca9fce1" + }, + "native_tcb": { + "bytes": 11353, + "path": "outputs/c05-v03-completion-20261102T055710Z/prerequisite-source/native_tcb_v1.py.txt", + "sha256": "865943df5cfdbf9383362d7fb2b76c6d0fd895cf0a0e20d550a26b579606b5d7" + }, + "original_domain": { + "bytes": 23942, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit05/implementation/parent_domain_v1.py", + "sha256": "a51264289803b4b17bb262f2460ddd4ed72500aaa21e5eb80fa2db4583689361" + }, + "pro13_review": { + "bytes": 10737, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/k-contract-review/PRO13-CRITICAL-ASSESSMENT-v1.json", + "sha256": "6f862f822a8d612e9cb4dfb73f1fe1eaecbfb99ec153e69dac741220b4450726" + }, + "pro14": { + "bytes": 9191, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/RESPONSE-v14.txt", + "sha256": "e3bba7ac28c412bf908958413edac163f12195c89128852a12e1917ad916084a" + }, + "pro14_DOM": { + "bytes": 57777, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/RESPONSE-DOM-v14.json", + "sha256": "3f28d6386649794aa08ba88f45e7cbd924519f1d7aa7d216a89ef902b52fd3a6" + }, + "pro14_completion": { + "bytes": 325, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/COMPLETE-RECEIPT-v14.json", + "sha256": "357cced3be3609a6b12201bf86e048eaa1bb9c2d75c63672b1dc3206333ec111" + }, + "provider_boundary": { + "bytes": 24374, + "path": "outputs/c05-v03-completion-20261102T055710Z/consultation/provider-boundary-review/PROVIDER-BOUNDARY-REVIEW-v1.json", + "sha256": "0d91b34b3fc68a33dffccbafc313bc473a55028e9a6b66a7b6ee89e65e08efe4" + }, + "rng": { + "bytes": 53564, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/drivers/char/random.c", + "sha256": "260c4030164fa73c27e55b21f28ec1f4dfc126cc80ab6aa56482223aa3534a8f" + }, + "uapi_elf": { + "bytes": 19317, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/uapi/linux/elf.h", + "sha256": "15613d116a6c77c4826036740dd5023c6a7779c776acd3ac7a1a661fe7432b3c" + }, + "unit12_STOP": { + "bytes": 15976, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/review/INPUT-GATE-v1.json", + "sha256": "0615f564480c6ada24750de4be0a1ca95787a96b23e15be2cdcda62063af8b79" + }, + "x86_auxvec": { + "bytes": 571, + "path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/include/uapi/asm/auxvec.h", + "sha256": "7e50a100bacd7bd784538466bba53e931bdfc4f13f855258c77665f932368d8d" + } + }, + "response_completion": { + "assistant_turn": "fallback-turn-20:2:assistant", + "chat_url": "https://chatgpt.com/c/6ae7bbbd-5ce0-83ea-beb9-456283ffae81", + "deadline_utc": "2026-11-02T17:41:37.343Z", + "links": 5, + "observed_utc": "2026-11-02T17:38:23.750Z", + "response_complete_observed": true, + "stop_absent": true, + "text_characters": 9057 + }, + "reviewed_utc": "2026-11-02T17:45:17.206999+00:00", + "runtime_admission": false, + "schema": "h25-pro14-independent-critical-assessment-v1", + "strongest_recommended_source_component": { + "events": [ + { + "claim": "Named genuine RNG invocation is passed the address of local k_rand_bytes and requested length sizeof(unsigned char[16])=16. Normal provider semantics define its delivered bytes; no statistical property is asserted.", + "event": "G", + "not_claimed": "Independent proof of RNG algorithm/entropy quality, actual current invocation or seed value.", + "site": "binfmt_elf179,226" + }, + { + "claim": "The source requests transfer from that same local buffer to u_rand_bytes with the same16-byte length. Nonzero residual aborts withEFAULT before tag event; zero denotes completed logical transfer under the declared genuine copy contract.", + "event": "C", + "not_claimed": "Atomic snapshot, final memory equality, exclusive writer ownership, persistent unmodified bytes or handoff.", + "site": "binfmt_elf227\u2013230" + }, + { + "claim": "If control reaches this site, NEW_AUX_ENT writes AT_RANDOM and the native-width numeric conversion of that destination into the kernel saved_auxv sequence. Def-use/native-width proof must be explicit.", + "event": "K", + "not_claimed": "That a later consumer has observed the entry, that the pointee is unchanged, or that the whole constructor succeeds.", + "site": "binfmt_elf235\u2013239,266" + }, + { + "claim": "If reached, the later copy requests transfer of the constructed saved_auxv sequence to the designated user stack table. Its own residual controls constructor failure.", + "event": "U", + "not_claimed": "Persistent table or seed memory snapshot, userspace handoff or actual instance binding.", + "site": "binfmt_elf360\u2013363" + } + ], + "name": "AT_RANDOM local producer-event provenance relation", + "quantification": "For every actual execution prefix of the exact selected source under applicable original genuine OS/loader semantics, establish the specified actual arguments/def-use/completion implication for each reached G/C/K/U event. Failed/interrupted prefixes do not imply future events. Do not define source executions as only those already satisfying the desired relation.", + "required_separate_corollary": "Any assertion that memory contents equal RNG bytes at copy completion, table completion or first userspace handoff needs a separately justified preservation/exclusivity/range argument at the chosen boundary. Event provenance alone does not prove it.", + "scope_revision": "Explicit narrower prerequisite/subproblem; not weakening the original C05/full V03 goal. No completion of those goals or old checkpoints follows." + } +} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-017.data b/research/h25-c05-at-random-producer-events/inputs/input-017.data new file mode 100644 index 0000000000..fb857faaf0 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-017.data @@ -0,0 +1,2148 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * linux/fs/binfmt_elf.c + * + * These are the functions used to load ELF format executables as used + * on SVr4 machines. Information on the format may be found in the book + * "UNIX SYSTEM V RELEASE 4 Programmers Guide: Ansi C and Programming Support + * Tools". + * + * Copyright 1993, 1994: Eric Youngdale (ericy@cais.com). + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef ELF_COMPAT +#define ELF_COMPAT 0 +#endif + +#ifndef user_long_t +#define user_long_t long +#endif +#ifndef user_siginfo_t +#define user_siginfo_t siginfo_t +#endif + +/* That's for binfmt_elf_fdpic to deal with */ +#ifndef elf_check_fdpic +#define elf_check_fdpic(ex) false +#endif + +static int load_elf_binary(struct linux_binprm *bprm); + +/* + * If we don't support core dumping, then supply a NULL so we + * don't even try. + */ +#ifdef CONFIG_ELF_CORE +static int elf_core_dump(struct coredump_params *cprm); +#else +#define elf_core_dump NULL +#endif + +#if ELF_EXEC_PAGESIZE > PAGE_SIZE +#define ELF_MIN_ALIGN ELF_EXEC_PAGESIZE +#else +#define ELF_MIN_ALIGN PAGE_SIZE +#endif + +#ifndef ELF_CORE_EFLAGS +#define ELF_CORE_EFLAGS 0 +#endif + +#define ELF_PAGESTART(_v) ((_v) & ~(int)(ELF_MIN_ALIGN-1)) +#define ELF_PAGEOFFSET(_v) ((_v) & (ELF_MIN_ALIGN-1)) +#define ELF_PAGEALIGN(_v) (((_v) + ELF_MIN_ALIGN - 1) & ~(ELF_MIN_ALIGN - 1)) + +static struct linux_binfmt elf_format = { + .module = THIS_MODULE, + .load_binary = load_elf_binary, +#ifdef CONFIG_COREDUMP + .core_dump = elf_core_dump, + .min_coredump = ELF_EXEC_PAGESIZE, +#endif +}; + +#define BAD_ADDR(x) (unlikely((unsigned long)(x) >= TASK_SIZE)) + +static inline void elf_coredump_set_mm_eflags(struct mm_struct *mm, u32 flags) +{ +#ifdef CONFIG_ARCH_HAS_ELF_CORE_EFLAGS + mm->saved_e_flags = flags; +#endif +} + +static inline u32 elf_coredump_get_mm_eflags(struct mm_struct *mm, u32 flags) +{ +#ifdef CONFIG_ARCH_HAS_ELF_CORE_EFLAGS + flags = mm->saved_e_flags; +#endif + return flags; +} + +/* + * We need to explicitly zero any trailing portion of the page that follows + * p_filesz when it ends before the page ends (e.g. bss), otherwise this + * memory will contain the junk from the file that should not be present. + */ +static int padzero(unsigned long address) +{ + unsigned long nbyte; + + nbyte = ELF_PAGEOFFSET(address); + if (nbyte) { + nbyte = ELF_MIN_ALIGN - nbyte; + if (clear_user((void __user *)address, nbyte)) + return -EFAULT; + } + return 0; +} + +/* Let's use some macros to make this stack manipulation a little clearer */ +#ifdef CONFIG_STACK_GROWSUP +#define STACK_ADD(sp, items) ((elf_addr_t __user *)(sp) + (items)) +#define STACK_ROUND(sp, items) \ + ((15 + (unsigned long) ((sp) + (items))) &~ 15UL) +#define STACK_ALLOC(sp, len) ({ \ + elf_addr_t __user *old_sp = (elf_addr_t __user *)sp; sp += len; \ + old_sp; }) +#else +#define STACK_ADD(sp, items) ((elf_addr_t __user *)(sp) - (items)) +#define STACK_ROUND(sp, items) \ + (((unsigned long) (sp - items)) &~ 15UL) +#define STACK_ALLOC(sp, len) (sp -= len) +#endif + +#ifndef ELF_BASE_PLATFORM +/* + * AT_BASE_PLATFORM indicates the "real" hardware/microarchitecture. + * If the arch defines ELF_BASE_PLATFORM (in asm/elf.h), the value + * will be copied to the user stack in the same manner as AT_PLATFORM. + */ +#define ELF_BASE_PLATFORM NULL +#endif + +static int +create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec, + unsigned long interp_load_addr, + unsigned long e_entry, unsigned long phdr_addr) +{ + struct mm_struct *mm = current->mm; + unsigned long p = bprm->p; + int argc = bprm->argc; + int envc = bprm->envc; + elf_addr_t __user *sp; + elf_addr_t __user *u_platform; + elf_addr_t __user *u_base_platform; + elf_addr_t __user *u_rand_bytes; + const char *k_platform = ELF_PLATFORM; + const char *k_base_platform = ELF_BASE_PLATFORM; + unsigned char k_rand_bytes[16]; + int items; + elf_addr_t *elf_info; + elf_addr_t flags = 0; + int ei_index; + const struct cred *cred = current_cred(); + struct vm_area_struct *vma; + + /* + * In some cases (e.g. Hyper-Threading), we want to avoid L1 + * evictions by the processes running on the same package. One + * thing we can do is to shuffle the initial stack for them. + */ + + p = arch_align_stack(p); + + /* + * If this architecture has a platform capability string, copy it + * to userspace. In some cases (Sparc), this info is impossible + * for userspace to get any other way, in others (i386) it is + * merely difficult. + */ + u_platform = NULL; + if (k_platform) { + size_t len = strlen(k_platform) + 1; + + u_platform = (elf_addr_t __user *)STACK_ALLOC(p, len); + if (copy_to_user(u_platform, k_platform, len)) + return -EFAULT; + } + + /* + * If this architecture has a "base" platform capability + * string, copy it to userspace. + */ + u_base_platform = NULL; + if (k_base_platform) { + size_t len = strlen(k_base_platform) + 1; + + u_base_platform = (elf_addr_t __user *)STACK_ALLOC(p, len); + if (copy_to_user(u_base_platform, k_base_platform, len)) + return -EFAULT; + } + + /* + * Generate 16 random bytes for userspace PRNG seeding. + */ + get_random_bytes(k_rand_bytes, sizeof(k_rand_bytes)); + u_rand_bytes = (elf_addr_t __user *) + STACK_ALLOC(p, sizeof(k_rand_bytes)); + if (copy_to_user(u_rand_bytes, k_rand_bytes, sizeof(k_rand_bytes))) + return -EFAULT; + + /* Create the ELF interpreter info */ + elf_info = (elf_addr_t *)mm->saved_auxv; + /* update AT_VECTOR_SIZE_BASE if the number of NEW_AUX_ENT() changes */ +#define NEW_AUX_ENT(id, val) \ + do { \ + *elf_info++ = id; \ + *elf_info++ = val; \ + } while (0) + +#ifdef ARCH_DLINFO + /* + * ARCH_DLINFO must come first so PPC can do its special alignment of + * AUXV. + * update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT() in + * ARCH_DLINFO changes + */ + ARCH_DLINFO; +#endif + NEW_AUX_ENT(AT_HWCAP, ELF_HWCAP); + NEW_AUX_ENT(AT_PAGESZ, ELF_EXEC_PAGESIZE); + NEW_AUX_ENT(AT_CLKTCK, CLOCKS_PER_SEC); + NEW_AUX_ENT(AT_PHDR, phdr_addr); + NEW_AUX_ENT(AT_PHENT, sizeof(struct elf_phdr)); + NEW_AUX_ENT(AT_PHNUM, exec->e_phnum); + NEW_AUX_ENT(AT_BASE, interp_load_addr); + if (bprm->interp_flags & BINPRM_FLAGS_PRESERVE_ARGV0) + flags |= AT_FLAGS_PRESERVE_ARGV0; + NEW_AUX_ENT(AT_FLAGS, flags); + NEW_AUX_ENT(AT_ENTRY, e_entry); + NEW_AUX_ENT(AT_UID, from_kuid_munged(cred->user_ns, cred->uid)); + NEW_AUX_ENT(AT_EUID, from_kuid_munged(cred->user_ns, cred->euid)); + NEW_AUX_ENT(AT_GID, from_kgid_munged(cred->user_ns, cred->gid)); + NEW_AUX_ENT(AT_EGID, from_kgid_munged(cred->user_ns, cred->egid)); + NEW_AUX_ENT(AT_SECURE, bprm->secureexec); + NEW_AUX_ENT(AT_RANDOM, (elf_addr_t)(unsigned long)u_rand_bytes); +#ifdef ELF_HWCAP2 + NEW_AUX_ENT(AT_HWCAP2, ELF_HWCAP2); +#endif +#ifdef ELF_HWCAP3 + NEW_AUX_ENT(AT_HWCAP3, ELF_HWCAP3); +#endif +#ifdef ELF_HWCAP4 + NEW_AUX_ENT(AT_HWCAP4, ELF_HWCAP4); +#endif + NEW_AUX_ENT(AT_EXECFN, bprm->exec); + if (k_platform) { + NEW_AUX_ENT(AT_PLATFORM, + (elf_addr_t)(unsigned long)u_platform); + } + if (k_base_platform) { + NEW_AUX_ENT(AT_BASE_PLATFORM, + (elf_addr_t)(unsigned long)u_base_platform); + } + if (bprm->have_execfd) { + NEW_AUX_ENT(AT_EXECFD, bprm->execfd); + } +#ifdef CONFIG_RSEQ + NEW_AUX_ENT(AT_RSEQ_FEATURE_SIZE, offsetof(struct rseq, end)); + NEW_AUX_ENT(AT_RSEQ_ALIGN, rseq_alloc_align()); +#endif +#undef NEW_AUX_ENT + /* AT_NULL is zero; clear the rest too */ + memset(elf_info, 0, (char *)mm->saved_auxv + + sizeof(mm->saved_auxv) - (char *)elf_info); + + /* And advance past the AT_NULL entry. */ + elf_info += 2; + + ei_index = elf_info - (elf_addr_t *)mm->saved_auxv; + sp = STACK_ADD(p, ei_index); + + items = (argc + 1) + (envc + 1) + 1; + bprm->p = STACK_ROUND(sp, items); + + /* Point sp at the lowest address on the stack */ +#ifdef CONFIG_STACK_GROWSUP + sp = (elf_addr_t __user *)bprm->p - items - ei_index; + bprm->exec = (unsigned long)sp; /* XXX: PARISC HACK */ +#else + sp = (elf_addr_t __user *)bprm->p; +#endif + + + /* + * Grow the stack manually; some architectures have a limit on how + * far ahead a user-space access may be in order to grow the stack. + */ + if (mmap_write_lock_killable(mm)) + return -EINTR; + vma = find_extend_vma_locked(mm, bprm->p); + mmap_write_unlock(mm); + if (!vma) + return -EFAULT; + + /* Now, let's put argc (and argv, envp if appropriate) on the stack */ + if (put_user(argc, sp++)) + return -EFAULT; + + /* Populate list of argv pointers back to argv strings. */ + p = mm->arg_end = mm->arg_start; + while (argc-- > 0) { + size_t len; + if (put_user((elf_addr_t)p, sp++)) + return -EFAULT; + len = strnlen_user((void __user *)p, MAX_ARG_STRLEN); + if (!len || len > MAX_ARG_STRLEN) + return -EINVAL; + p += len; + } + if (put_user(0, sp++)) + return -EFAULT; + mm->arg_end = p; + + /* Populate list of envp pointers back to envp strings. */ + mm->env_end = mm->env_start = p; + while (envc-- > 0) { + size_t len; + if (put_user((elf_addr_t)p, sp++)) + return -EFAULT; + len = strnlen_user((void __user *)p, MAX_ARG_STRLEN); + if (!len || len > MAX_ARG_STRLEN) + return -EINVAL; + p += len; + } + if (put_user(0, sp++)) + return -EFAULT; + mm->env_end = p; + + /* Put the elf_info on the stack in the right place. */ + if (copy_to_user(sp, mm->saved_auxv, ei_index * sizeof(elf_addr_t))) + return -EFAULT; + return 0; +} + +/* + * Map "eppnt->p_filesz" bytes from "filep" offset "eppnt->p_offset" + * into memory at "addr". (Note that p_filesz is rounded up to the + * next page, so any extra bytes from the file must be wiped.) + */ +static unsigned long elf_map(struct file *filep, unsigned long addr, + const struct elf_phdr *eppnt, int prot, int type, + unsigned long total_size) +{ + unsigned long map_addr; + unsigned long size = eppnt->p_filesz + ELF_PAGEOFFSET(eppnt->p_vaddr); + unsigned long off = eppnt->p_offset - ELF_PAGEOFFSET(eppnt->p_vaddr); + addr = ELF_PAGESTART(addr); + size = ELF_PAGEALIGN(size); + + /* mmap() will return -EINVAL if given a zero size, but a + * segment with zero filesize is perfectly valid */ + if (!size) + return addr; + + /* + * total_size is the size of the ELF (interpreter) image. + * The _first_ mmap needs to know the full size, otherwise + * randomization might put this image into an overlapping + * position with the ELF binary image. (since size < total_size) + * So we first map the 'big' image - and unmap the remainder at + * the end. (which unmap is needed for ELF images with holes.) + */ + if (total_size) { + total_size = ELF_PAGEALIGN(total_size); + map_addr = vm_mmap(filep, addr, total_size, prot, type, off); + if (!BAD_ADDR(map_addr)) + vm_munmap(map_addr+size, total_size-size); + } else + map_addr = vm_mmap(filep, addr, size, prot, type, off); + + if ((type & MAP_FIXED_NOREPLACE) && + PTR_ERR((void *)map_addr) == -EEXIST) + pr_info("%d (%s): Uhuuh, elf segment at %px requested but the memory is mapped already\n", + task_pid_nr(current), current->comm, (void *)addr); + + return(map_addr); +} + +/* + * Map "eppnt->p_filesz" bytes from "filep" offset "eppnt->p_offset" + * into memory at "addr". Memory from "p_filesz" through "p_memsz" + * rounded up to the next page is zeroed. + */ +static unsigned long elf_load(struct file *filep, unsigned long addr, + const struct elf_phdr *eppnt, int prot, int type, + unsigned long total_size) +{ + unsigned long zero_start, zero_end; + unsigned long map_addr; + + if (eppnt->p_filesz) { + map_addr = elf_map(filep, addr, eppnt, prot, type, total_size); + if (BAD_ADDR(map_addr)) + return map_addr; + if (eppnt->p_memsz > eppnt->p_filesz) { + zero_start = map_addr + ELF_PAGEOFFSET(eppnt->p_vaddr) + + eppnt->p_filesz; + zero_end = map_addr + ELF_PAGEOFFSET(eppnt->p_vaddr) + + eppnt->p_memsz; + + /* + * Zero the end of the last mapped page but ignore + * any errors if the segment isn't writable. + */ + if (padzero(zero_start) && (prot & PROT_WRITE)) + return -EFAULT; + } + } else { + map_addr = zero_start = ELF_PAGESTART(addr); + zero_end = zero_start + ELF_PAGEOFFSET(eppnt->p_vaddr) + + eppnt->p_memsz; + } + if (eppnt->p_memsz > eppnt->p_filesz) { + /* + * Map the last of the segment. + * If the header is requesting these pages to be + * executable, honour that (ppc32 needs this). + */ + int error; + + zero_start = ELF_PAGEALIGN(zero_start); + zero_end = ELF_PAGEALIGN(zero_end); + + error = vm_brk_flags(zero_start, zero_end - zero_start, + prot & PROT_EXEC ? VM_EXEC : 0); + if (error) + map_addr = error; + } + return map_addr; +} + + +static unsigned long total_mapping_size(const struct elf_phdr *phdr, int nr) +{ + elf_addr_t min_addr = -1; + elf_addr_t max_addr = 0; + bool pt_load = false; + int i; + + for (i = 0; i < nr; i++) { + if (phdr[i].p_type == PT_LOAD) { + min_addr = min(min_addr, ELF_PAGESTART(phdr[i].p_vaddr)); + max_addr = max(max_addr, phdr[i].p_vaddr + phdr[i].p_memsz); + pt_load = true; + } + } + return pt_load ? (max_addr - min_addr) : 0; +} + +static int elf_read(struct file *file, void *buf, size_t len, loff_t pos) +{ + ssize_t rv; + + rv = kernel_read(file, buf, len, &pos); + if (unlikely(rv != len)) { + return (rv < 0) ? rv : -EIO; + } + return 0; +} + +static unsigned long maximum_alignment(struct elf_phdr *cmds, int nr) +{ + unsigned long alignment = 0; + int i; + + for (i = 0; i < nr; i++) { + if (cmds[i].p_type == PT_LOAD) { + unsigned long p_align = cmds[i].p_align; + + /* skip non-power of two alignments as invalid */ + if (!is_power_of_2(p_align)) + continue; + alignment = max(alignment, p_align); + } + } + + /* ensure we align to at least one page */ + return ELF_PAGEALIGN(alignment); +} + +/** + * load_elf_phdrs() - load ELF program headers + * @elf_ex: ELF header of the binary whose program headers should be loaded + * @elf_file: the opened ELF binary file + * + * Loads ELF program headers from the binary file elf_file, which has the ELF + * header pointed to by elf_ex, into a newly allocated array. The caller is + * responsible for freeing the allocated data. Returns NULL upon failure. + */ +static struct elf_phdr *load_elf_phdrs(const struct elfhdr *elf_ex, + struct file *elf_file) +{ + struct elf_phdr *elf_phdata = NULL; + int retval = -1; + unsigned int size; + + /* + * If the size of this structure has changed, then punt, since + * we will be doing the wrong thing. + */ + if (elf_ex->e_phentsize != sizeof(struct elf_phdr)) + goto out; + + /* Sanity check the number of program headers... */ + /* ...and their total size. */ + size = sizeof(struct elf_phdr) * elf_ex->e_phnum; + if (size == 0 || size > 65536) + goto out; + + elf_phdata = kmalloc(size, GFP_KERNEL); + if (!elf_phdata) + goto out; + + /* Read in the program headers */ + retval = elf_read(elf_file, elf_phdata, size, elf_ex->e_phoff); + +out: + if (retval) { + kfree(elf_phdata); + elf_phdata = NULL; + } + return elf_phdata; +} + +#ifndef CONFIG_ARCH_BINFMT_ELF_STATE + +/** + * struct arch_elf_state - arch-specific ELF loading state + * + * This structure is used to preserve architecture specific data during + * the loading of an ELF file, throughout the checking of architecture + * specific ELF headers & through to the point where the ELF load is + * known to be proceeding (ie. SET_PERSONALITY). + * + * This implementation is a dummy for architectures which require no + * specific state. + */ +struct arch_elf_state { +}; + +#define INIT_ARCH_ELF_STATE {} + +/** + * arch_elf_pt_proc() - check a PT_LOPROC..PT_HIPROC ELF program header + * @ehdr: The main ELF header + * @phdr: The program header to check + * @elf: The open ELF file + * @is_interp: True if the phdr is from the interpreter of the ELF being + * loaded, else false. + * @state: Architecture-specific state preserved throughout the process + * of loading the ELF. + * + * Inspects the program header phdr to validate its correctness and/or + * suitability for the system. Called once per ELF program header in the + * range PT_LOPROC to PT_HIPROC, for both the ELF being loaded and its + * interpreter. + * + * Return: Zero to proceed with the ELF load, non-zero to fail the ELF load + * with that return code. + */ +static inline int arch_elf_pt_proc(struct elfhdr *ehdr, + struct elf_phdr *phdr, + struct file *elf, bool is_interp, + struct arch_elf_state *state) +{ + /* Dummy implementation, always proceed */ + return 0; +} + +/** + * arch_check_elf() - check an ELF executable + * @ehdr: The main ELF header + * @has_interp: True if the ELF has an interpreter, else false. + * @interp_ehdr: The interpreter's ELF header + * @state: Architecture-specific state preserved throughout the process + * of loading the ELF. + * + * Provides a final opportunity for architecture code to reject the loading + * of the ELF & cause an exec syscall to return an error. This is called after + * all program headers to be checked by arch_elf_pt_proc have been. + * + * Return: Zero to proceed with the ELF load, non-zero to fail the ELF load + * with that return code. + */ +static inline int arch_check_elf(struct elfhdr *ehdr, bool has_interp, + struct elfhdr *interp_ehdr, + struct arch_elf_state *state) +{ + /* Dummy implementation, always proceed */ + return 0; +} + +#endif /* !CONFIG_ARCH_BINFMT_ELF_STATE */ + +static inline int make_prot(u32 p_flags, struct arch_elf_state *arch_state, + bool has_interp, bool is_interp) +{ + int prot = 0; + + if (p_flags & PF_R) + prot |= PROT_READ; + if (p_flags & PF_W) + prot |= PROT_WRITE; + if (p_flags & PF_X) + prot |= PROT_EXEC; + + return arch_elf_adjust_prot(prot, arch_state, has_interp, is_interp); +} + +/* This is much more generalized than the library routine read function, + so we keep this separate. Technically the library read function + is only provided so that we can read a.out libraries that have + an ELF header */ + +static unsigned long load_elf_interp(struct elfhdr *interp_elf_ex, + struct file *interpreter, + unsigned long no_base, struct elf_phdr *interp_elf_phdata, + struct arch_elf_state *arch_state) +{ + struct elf_phdr *eppnt; + unsigned long load_addr = 0; + int load_addr_set = 0; + unsigned long error = ~0UL; + unsigned long total_size; + int i; + + /* First of all, some simple consistency checks */ + if (interp_elf_ex->e_type != ET_EXEC && + interp_elf_ex->e_type != ET_DYN) + goto out; + if (!elf_check_arch(interp_elf_ex) || + elf_check_fdpic(interp_elf_ex)) + goto out; + if (!can_mmap_file(interpreter)) + goto out; + + total_size = total_mapping_size(interp_elf_phdata, + interp_elf_ex->e_phnum); + if (!total_size) { + error = -EINVAL; + goto out; + } + + eppnt = interp_elf_phdata; + for (i = 0; i < interp_elf_ex->e_phnum; i++, eppnt++) { + if (eppnt->p_type == PT_LOAD) { + int elf_type = MAP_PRIVATE; + int elf_prot = make_prot(eppnt->p_flags, arch_state, + true, true); + unsigned long vaddr = 0; + unsigned long k, map_addr; + + vaddr = eppnt->p_vaddr; + if (interp_elf_ex->e_type == ET_EXEC || load_addr_set) + elf_type |= MAP_FIXED; + else if (no_base && interp_elf_ex->e_type == ET_DYN) + load_addr = -vaddr; + + map_addr = elf_load(interpreter, load_addr + vaddr, + eppnt, elf_prot, elf_type, total_size); + total_size = 0; + error = map_addr; + if (BAD_ADDR(map_addr)) + goto out; + + if (!load_addr_set && + interp_elf_ex->e_type == ET_DYN) { + load_addr = map_addr - ELF_PAGESTART(vaddr); + load_addr_set = 1; + } + + /* + * Check to see if the section's size will overflow the + * allowed task size. Note that p_filesz must always be + * <= p_memsize so it's only necessary to check p_memsz. + */ + k = load_addr + eppnt->p_vaddr; + if (BAD_ADDR(k) || + eppnt->p_filesz > eppnt->p_memsz || + eppnt->p_memsz > TASK_SIZE || + TASK_SIZE - eppnt->p_memsz < k) { + error = -ENOMEM; + goto out; + } + } + } + + error = load_addr; +out: + return error; +} + +/* + * These are the functions used to load ELF style executables and shared + * libraries. There is no binary dependent code anywhere else. + */ + +static int parse_elf_property(const char *data, size_t *off, size_t datasz, + struct arch_elf_state *arch, + bool have_prev_type, u32 *prev_type) +{ + size_t o, step; + const struct gnu_property *pr; + int ret; + + if (*off == datasz) + return -ENOENT; + + if (WARN_ON_ONCE(*off > datasz || *off % ELF_GNU_PROPERTY_ALIGN)) + return -EIO; + o = *off; + datasz -= *off; + + if (datasz < sizeof(*pr)) + return -ENOEXEC; + pr = (const struct gnu_property *)(data + o); + o += sizeof(*pr); + datasz -= sizeof(*pr); + + if (pr->pr_datasz > datasz) + return -ENOEXEC; + + WARN_ON_ONCE(o % ELF_GNU_PROPERTY_ALIGN); + step = round_up(pr->pr_datasz, ELF_GNU_PROPERTY_ALIGN); + if (step > datasz) + return -ENOEXEC; + + /* Properties are supposed to be unique and sorted on pr_type: */ + if (have_prev_type && pr->pr_type <= *prev_type) + return -ENOEXEC; + *prev_type = pr->pr_type; + + ret = arch_parse_elf_property(pr->pr_type, data + o, + pr->pr_datasz, ELF_COMPAT, arch); + if (ret) + return ret; + + *off = o + step; + return 0; +} + +#define NOTE_DATA_SZ SZ_1K +#define NOTE_NAME_SZ (sizeof(NN_GNU_PROPERTY_TYPE_0)) + +static int parse_elf_properties(struct file *f, const struct elf_phdr *phdr, + struct arch_elf_state *arch) +{ + union { + struct elf_note nhdr; + char data[NOTE_DATA_SZ]; + } note; + loff_t pos; + ssize_t n; + size_t off, datasz; + int ret; + bool have_prev_type; + u32 prev_type; + + if (!IS_ENABLED(CONFIG_ARCH_USE_GNU_PROPERTY) || !phdr) + return 0; + + /* load_elf_binary() shouldn't call us unless this is true... */ + if (WARN_ON_ONCE(phdr->p_type != PT_GNU_PROPERTY)) + return -ENOEXEC; + + /* If the properties are crazy large, that's too bad (for now): */ + if (phdr->p_filesz > sizeof(note)) + return -ENOEXEC; + + pos = phdr->p_offset; + n = kernel_read(f, ¬e, phdr->p_filesz, &pos); + + BUILD_BUG_ON(sizeof(note) < sizeof(note.nhdr) + NOTE_NAME_SZ); + if (n < 0 || n < sizeof(note.nhdr) + NOTE_NAME_SZ) + return -EIO; + + if (note.nhdr.n_type != NT_GNU_PROPERTY_TYPE_0 || + note.nhdr.n_namesz != NOTE_NAME_SZ || + strncmp(note.data + sizeof(note.nhdr), + NN_GNU_PROPERTY_TYPE_0, n - sizeof(note.nhdr))) + return -ENOEXEC; + + off = round_up(sizeof(note.nhdr) + NOTE_NAME_SZ, + ELF_GNU_PROPERTY_ALIGN); + if (off > n) + return -ENOEXEC; + + if (note.nhdr.n_descsz > n - off) + return -ENOEXEC; + datasz = off + note.nhdr.n_descsz; + + have_prev_type = false; + do { + ret = parse_elf_property(note.data, &off, datasz, arch, + have_prev_type, &prev_type); + have_prev_type = true; + } while (!ret); + + return ret == -ENOENT ? 0 : ret; +} + +static int load_elf_binary(struct linux_binprm *bprm) +{ + struct file *interpreter = NULL; /* to shut gcc up */ + unsigned long load_bias = 0, phdr_addr = 0; + int first_pt_load = 1; + unsigned long error; + struct elf_phdr *elf_ppnt, *elf_phdata, *interp_elf_phdata = NULL; + struct elf_phdr *elf_property_phdata = NULL; + unsigned long elf_brk; + bool brk_moved = false; + int retval, i; + unsigned long elf_entry; + unsigned long e_entry; + unsigned long interp_load_addr = 0; + unsigned long start_code, end_code, start_data, end_data; + unsigned long reloc_func_desc __maybe_unused = 0; + int executable_stack = EXSTACK_DEFAULT; + struct elfhdr *elf_ex = (struct elfhdr *)bprm->buf; + struct elfhdr *interp_elf_ex = NULL; + struct arch_elf_state arch_state = INIT_ARCH_ELF_STATE; + struct mm_struct *mm; + struct pt_regs *regs; + + retval = -ENOEXEC; + /* First of all, some simple consistency checks */ + if (memcmp(elf_ex->e_ident, ELFMAG, SELFMAG) != 0) + goto out; + + if (elf_ex->e_type != ET_EXEC && elf_ex->e_type != ET_DYN) + goto out; + if (!elf_check_arch(elf_ex)) + goto out; + if (elf_check_fdpic(elf_ex)) + goto out; + if (!can_mmap_file(bprm->file)) + goto out; + + elf_phdata = load_elf_phdrs(elf_ex, bprm->file); + if (!elf_phdata) + goto out; + + elf_ppnt = elf_phdata; + for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++) { + char *elf_interpreter; + + if (elf_ppnt->p_type == PT_GNU_PROPERTY) { + elf_property_phdata = elf_ppnt; + continue; + } + + if (elf_ppnt->p_type != PT_INTERP) + continue; + + /* + * This is the program interpreter used for shared libraries - + * for now assume that this is an a.out format binary. + */ + retval = -ENOEXEC; + if (elf_ppnt->p_filesz > PATH_MAX || elf_ppnt->p_filesz < 2) + goto out_free_ph; + + retval = -ENOMEM; + elf_interpreter = kmalloc(elf_ppnt->p_filesz, GFP_KERNEL); + if (!elf_interpreter) + goto out_free_ph; + + retval = elf_read(bprm->file, elf_interpreter, elf_ppnt->p_filesz, + elf_ppnt->p_offset); + if (retval < 0) + goto out_free_interp; + /* make sure path is NULL terminated */ + retval = -ENOEXEC; + if (elf_interpreter[elf_ppnt->p_filesz - 1] != '\0') + goto out_free_interp; + + interpreter = open_exec(elf_interpreter); + kfree(elf_interpreter); + retval = PTR_ERR(interpreter); + if (IS_ERR(interpreter)) + goto out_free_ph; + + /* + * If the binary is not readable then enforce mm->dumpable = 0 + * regardless of the interpreter's permissions. + */ + would_dump(bprm, interpreter); + + interp_elf_ex = kmalloc_obj(*interp_elf_ex); + if (!interp_elf_ex) { + retval = -ENOMEM; + goto out_free_file; + } + + /* Get the exec headers */ + retval = elf_read(interpreter, interp_elf_ex, + sizeof(*interp_elf_ex), 0); + if (retval < 0) + goto out_free_dentry; + + break; + +out_free_interp: + kfree(elf_interpreter); + goto out_free_ph; + } + + elf_ppnt = elf_phdata; + for (i = 0; i < elf_ex->e_phnum; i++, elf_ppnt++) + switch (elf_ppnt->p_type) { + case PT_GNU_STACK: + if (elf_ppnt->p_flags & PF_X) + executable_stack = EXSTACK_ENABLE_X; + else + executable_stack = EXSTACK_DISABLE_X; + break; + + case PT_LOPROC ... PT_HIPROC: + retval = arch_elf_pt_proc(elf_ex, elf_ppnt, + bprm->file, false, + &arch_state); + if (retval) + goto out_free_dentry; + break; + } + + /* Some simple consistency checks for the interpreter */ + if (interpreter) { + retval = -ELIBBAD; + /* Not an ELF interpreter */ + if (memcmp(interp_elf_ex->e_ident, ELFMAG, SELFMAG) != 0) + goto out_free_dentry; + /* Verify the interpreter has a valid arch */ + if (!elf_check_arch(interp_elf_ex) || + elf_check_fdpic(interp_elf_ex)) + goto out_free_dentry; + + /* Load the interpreter program headers */ + interp_elf_phdata = load_elf_phdrs(interp_elf_ex, + interpreter); + if (!interp_elf_phdata) + goto out_free_dentry; + + /* Pass PT_LOPROC..PT_HIPROC headers to arch code */ + elf_property_phdata = NULL; + elf_ppnt = interp_elf_phdata; + for (i = 0; i < interp_elf_ex->e_phnum; i++, elf_ppnt++) + switch (elf_ppnt->p_type) { + case PT_GNU_PROPERTY: + elf_property_phdata = elf_ppnt; + break; + + case PT_LOPROC ... PT_HIPROC: + retval = arch_elf_pt_proc(interp_elf_ex, + elf_ppnt, interpreter, + true, &arch_state); + if (retval) + goto out_free_dentry; + break; + } + } + + retval = parse_elf_properties(interpreter ?: bprm->file, + elf_property_phdata, &arch_state); + if (retval) + goto out_free_dentry; + + /* + * Allow arch code to reject the ELF at this point, whilst it's + * still possible to return an error to the code that invoked + * the exec syscall. + */ + retval = arch_check_elf(elf_ex, + !!interpreter, interp_elf_ex, + &arch_state); + if (retval) + goto out_free_dentry; + + /* Flush all traces of the currently running executable */ + retval = begin_new_exec(bprm); + if (retval) + goto out_free_dentry; + + /* Do this immediately, since STACK_TOP as used in setup_arg_pages + may depend on the personality. */ + SET_PERSONALITY2(*elf_ex, &arch_state); + if (elf_read_implies_exec(*elf_ex, executable_stack)) + current->personality |= READ_IMPLIES_EXEC; + + const int snapshot_randomize_va_space = READ_ONCE(randomize_va_space); + if (!(current->personality & ADDR_NO_RANDOMIZE) && snapshot_randomize_va_space) + current->flags |= PF_RANDOMIZE; + + setup_new_exec(bprm); + + /* Do this so that we can load the interpreter, if need be. We will + change some of these later */ + retval = setup_arg_pages(bprm, randomize_stack_top(STACK_TOP), + executable_stack); + if (retval < 0) + goto out_free_dentry; + + elf_brk = 0; + + start_code = ~0UL; + end_code = 0; + start_data = 0; + end_data = 0; + + /* Now we do a little grungy work by mmapping the ELF image into + the correct location in memory. */ + for(i = 0, elf_ppnt = elf_phdata; + i < elf_ex->e_phnum; i++, elf_ppnt++) { + int elf_prot, elf_flags; + unsigned long k, vaddr; + unsigned long total_size = 0; + unsigned long alignment; + + if (elf_ppnt->p_type != PT_LOAD) + continue; + + elf_prot = make_prot(elf_ppnt->p_flags, &arch_state, + !!interpreter, false); + + elf_flags = MAP_PRIVATE; + + vaddr = elf_ppnt->p_vaddr; + /* + * The first time through the loop, first_pt_load is true: + * layout will be calculated. Once set, use MAP_FIXED since + * we know we've already safely mapped the entire region with + * MAP_FIXED_NOREPLACE in the once-per-binary logic following. + */ + if (!first_pt_load) { + elf_flags |= MAP_FIXED; + } else if (elf_ex->e_type == ET_EXEC) { + /* + * This logic is run once for the first LOAD Program + * Header for ET_EXEC binaries. No special handling + * is needed. + */ + elf_flags |= MAP_FIXED_NOREPLACE; + } else if (elf_ex->e_type == ET_DYN) { + /* + * This logic is run once for the first LOAD Program + * Header for ET_DYN binaries to calculate the + * randomization (load_bias) for all the LOAD + * Program Headers. + */ + + /* + * Calculate the entire size of the ELF mapping + * (total_size), used for the initial mapping, + * due to load_addr_set which is set to true later + * once the initial mapping is performed. + * + * Note that this is only sensible when the LOAD + * segments are contiguous (or overlapping). If + * used for LOADs that are far apart, this would + * cause the holes between LOADs to be mapped, + * running the risk of having the mapping fail, + * as it would be larger than the ELF file itself. + * + * As a result, only ET_DYN does this, since + * some ET_EXEC (e.g. ia64) may have large virtual + * memory holes between LOADs. + * + */ + total_size = total_mapping_size(elf_phdata, + elf_ex->e_phnum); + if (!total_size) { + retval = -EINVAL; + goto out_free_dentry; + } + + /* Calculate any requested alignment. */ + alignment = maximum_alignment(elf_phdata, elf_ex->e_phnum); + + /** + * DOC: PIE handling + * + * There are effectively two types of ET_DYN ELF + * binaries: programs (i.e. PIE: ET_DYN with + * PT_INTERP) and loaders (i.e. static PIE: ET_DYN + * without PT_INTERP, usually the ELF interpreter + * itself). Loaders must be loaded away from programs + * since the program may otherwise collide with the + * loader (especially for ET_EXEC which does not have + * a randomized position). + * + * For example, to handle invocations of + * "./ld.so someprog" to test out a new version of + * the loader, the subsequent program that the + * loader loads must avoid the loader itself, so + * they cannot share the same load range. Sufficient + * room for the brk must be allocated with the + * loader as well, since brk must be available with + * the loader. + * + * Therefore, programs are loaded offset from + * ELF_ET_DYN_BASE and loaders are loaded into the + * independently randomized mmap region (0 load_bias + * without MAP_FIXED nor MAP_FIXED_NOREPLACE). + * + * See below for "brk" handling details, which is + * also affected by program vs loader and ASLR. + */ + if (interpreter) { + /* On ET_DYN with PT_INTERP, we do the ASLR. */ + load_bias = ELF_ET_DYN_BASE; + if (current->flags & PF_RANDOMIZE) + load_bias += arch_mmap_rnd(); + /* Adjust alignment as requested. */ + if (alignment) + load_bias &= ~(alignment - 1); + elf_flags |= MAP_FIXED_NOREPLACE; + } else { + /* + * For ET_DYN without PT_INTERP, we rely on + * the architectures's (potentially ASLR) mmap + * base address (via a load_bias of 0). + * + * When a large alignment is requested, we + * must do the allocation at address "0" right + * now to discover where things will load so + * that we can adjust the resulting alignment. + * In this case (load_bias != 0), we can use + * MAP_FIXED_NOREPLACE to make sure the mapping + * doesn't collide with anything. + */ + if (alignment > ELF_MIN_ALIGN) { + load_bias = elf_load(bprm->file, 0, elf_ppnt, + elf_prot, elf_flags, total_size); + if (BAD_ADDR(load_bias)) { + retval = IS_ERR_VALUE(load_bias) ? + PTR_ERR((void*)load_bias) : -EINVAL; + goto out_free_dentry; + } + vm_munmap(load_bias, total_size); + /* Adjust alignment as requested. */ + if (alignment) + load_bias &= ~(alignment - 1); + elf_flags |= MAP_FIXED_NOREPLACE; + } else + load_bias = 0; + } + + /* + * Since load_bias is used for all subsequent loading + * calculations, we must lower it by the first vaddr + * so that the remaining calculations based on the + * ELF vaddrs will be correctly offset. The result + * is then page aligned. + */ + load_bias = ELF_PAGESTART(load_bias - vaddr); + } + + error = elf_load(bprm->file, load_bias + vaddr, elf_ppnt, + elf_prot, elf_flags, total_size); + if (BAD_ADDR(error)) { + retval = IS_ERR_VALUE(error) ? + PTR_ERR((void*)error) : -EINVAL; + goto out_free_dentry; + } + + if (first_pt_load) { + first_pt_load = 0; + if (elf_ex->e_type == ET_DYN) { + load_bias += error - + ELF_PAGESTART(load_bias + vaddr); + reloc_func_desc = load_bias; + } + } + + /* + * Figure out which segment in the file contains the Program + * Header table, and map to the associated memory address. + */ + if (elf_ppnt->p_offset <= elf_ex->e_phoff && + elf_ex->e_phoff < elf_ppnt->p_offset + elf_ppnt->p_filesz) { + phdr_addr = elf_ex->e_phoff - elf_ppnt->p_offset + + elf_ppnt->p_vaddr; + } + + k = elf_ppnt->p_vaddr; + if ((elf_ppnt->p_flags & PF_X) && k < start_code) + start_code = k; + if (start_data < k) + start_data = k; + + /* + * Check to see if the section's size will overflow the + * allowed task size. Note that p_filesz must always be + * <= p_memsz so it is only necessary to check p_memsz. + */ + if (BAD_ADDR(k) || elf_ppnt->p_filesz > elf_ppnt->p_memsz || + elf_ppnt->p_memsz > TASK_SIZE || + TASK_SIZE - elf_ppnt->p_memsz < k) { + /* set_brk can never work. Avoid overflows. */ + retval = -EINVAL; + goto out_free_dentry; + } + + k = elf_ppnt->p_vaddr + elf_ppnt->p_filesz; + + if ((elf_ppnt->p_flags & PF_X) && end_code < k) + end_code = k; + if (end_data < k) + end_data = k; + k = elf_ppnt->p_vaddr + elf_ppnt->p_memsz; + if (k > elf_brk) + elf_brk = k; + } + + e_entry = elf_ex->e_entry + load_bias; + phdr_addr += load_bias; + elf_brk += load_bias; + start_code += load_bias; + end_code += load_bias; + start_data += load_bias; + end_data += load_bias; + + if (interpreter) { + elf_entry = load_elf_interp(interp_elf_ex, + interpreter, + load_bias, interp_elf_phdata, + &arch_state); + if (!IS_ERR_VALUE(elf_entry)) { + /* + * load_elf_interp() returns relocation + * adjustment + */ + interp_load_addr = elf_entry; + elf_entry += interp_elf_ex->e_entry; + } + if (BAD_ADDR(elf_entry)) { + retval = IS_ERR_VALUE(elf_entry) ? + (int)elf_entry : -EINVAL; + goto out_free_dentry; + } + reloc_func_desc = interp_load_addr; + + exe_file_allow_write_access(interpreter); + fput(interpreter); + + kfree(interp_elf_ex); + kfree(interp_elf_phdata); + } else { + elf_entry = e_entry; + if (BAD_ADDR(elf_entry)) { + retval = -EINVAL; + goto out_free_dentry; + } + } + + kfree(elf_phdata); + + set_binfmt(&elf_format); + +#ifdef ARCH_HAS_SETUP_ADDITIONAL_PAGES + retval = ARCH_SETUP_ADDITIONAL_PAGES(bprm, elf_ex, !!interpreter); + if (retval < 0) + goto out; +#endif /* ARCH_HAS_SETUP_ADDITIONAL_PAGES */ + + retval = create_elf_tables(bprm, elf_ex, interp_load_addr, + e_entry, phdr_addr); + if (retval < 0) + goto out; + + mm = current->mm; + mm->end_code = end_code; + mm->start_code = start_code; + mm->start_data = start_data; + mm->end_data = end_data; + mm->start_stack = bprm->p; + + elf_coredump_set_mm_eflags(mm, elf_ex->e_flags); + + /** + * DOC: "brk" handling + * + * For architectures with ELF randomization, when executing a + * loader directly (i.e. static PIE: ET_DYN without PT_INTERP), + * move the brk area out of the mmap region and into the unused + * ELF_ET_DYN_BASE region. Since "brk" grows up it may collide + * early with the stack growing down or other regions being put + * into the mmap region by the kernel (e.g. vdso). + * + * In the CONFIG_COMPAT_BRK case, though, everything is turned + * off because we're not allowed to move the brk at all. + */ + if (!IS_ENABLED(CONFIG_COMPAT_BRK) && + IS_ENABLED(CONFIG_ARCH_HAS_ELF_RANDOMIZE) && + elf_ex->e_type == ET_DYN && !interpreter) { + elf_brk = ELF_ET_DYN_BASE; + /* This counts as moving the brk, so let brk(2) know. */ + brk_moved = true; + } + mm->start_brk = mm->brk = ELF_PAGEALIGN(elf_brk); + + if ((current->flags & PF_RANDOMIZE) && snapshot_randomize_va_space > 1) { + /* + * If we didn't move the brk to ELF_ET_DYN_BASE (above), + * leave a gap between .bss and brk. + */ + if (!brk_moved) + mm->brk = mm->start_brk = mm->brk + PAGE_SIZE; + + mm->brk = mm->start_brk = arch_randomize_brk(mm); + brk_moved = true; + } + +#ifdef compat_brk_randomized + if (brk_moved) + current->brk_randomized = 1; +#endif + + if (current->personality & MMAP_PAGE_ZERO) { + /* Why this, you ask??? Well SVr4 maps page 0 as read-only, + and some applications "depend" upon this behavior. + Since we do not have the power to recompile these, we + emulate the SVr4 behavior. Sigh. */ + error = vm_mmap(NULL, 0, PAGE_SIZE, PROT_READ | PROT_EXEC, + MAP_FIXED | MAP_PRIVATE, 0); + + retval = do_mseal(0, PAGE_SIZE, 0); + if (retval) + pr_warn_ratelimited("pid=%d, couldn't seal address 0, ret=%d.\n", + task_pid_nr(current), retval); + } + + regs = current_pt_regs(); +#ifdef ELF_PLAT_INIT + /* + * The ABI may specify that certain registers be set up in special + * ways (on i386 %edx is the address of a DT_FINI function, for + * example. In addition, it may also specify (eg, PowerPC64 ELF) + * that the e_entry field is the address of the function descriptor + * for the startup routine, rather than the address of the startup + * routine itself. This macro performs whatever initialization to + * the regs structure is required as well as any relocations to the + * function descriptor entries when executing dynamically links apps. + */ + ELF_PLAT_INIT(regs, reloc_func_desc); +#endif + + finalize_exec(bprm); + START_THREAD(elf_ex, regs, elf_entry, bprm->p); + retval = 0; +out: + return retval; + + /* error cleanup */ +out_free_dentry: + kfree(interp_elf_ex); + kfree(interp_elf_phdata); +out_free_file: + exe_file_allow_write_access(interpreter); + if (interpreter) + fput(interpreter); +out_free_ph: + kfree(elf_phdata); + goto out; +} + +#ifdef CONFIG_ELF_CORE +/* + * ELF core dumper + * + * Modelled on fs/exec.c:aout_core_dump() + * Jeremy Fitzhardinge + */ + +/* An ELF note in memory */ +struct memelfnote +{ + const char *name; + int type; + unsigned int datasz; + void *data; +}; + +static int notesize(struct memelfnote *en) +{ + int sz; + + sz = sizeof(struct elf_note); + sz += roundup(strlen(en->name) + 1, 4); + sz += roundup(en->datasz, 4); + + return sz; +} + +static int writenote(struct memelfnote *men, struct coredump_params *cprm) +{ + struct elf_note en; + en.n_namesz = strlen(men->name) + 1; + en.n_descsz = men->datasz; + en.n_type = men->type; + + return dump_emit(cprm, &en, sizeof(en)) && + dump_emit(cprm, men->name, en.n_namesz) && dump_align(cprm, 4) && + dump_emit(cprm, men->data, men->datasz) && dump_align(cprm, 4); +} + +static void fill_elf_header(struct elfhdr *elf, int segs, + u16 machine, u32 flags) +{ + memset(elf, 0, sizeof(*elf)); + + memcpy(elf->e_ident, ELFMAG, SELFMAG); + elf->e_ident[EI_CLASS] = ELF_CLASS; + elf->e_ident[EI_DATA] = ELF_DATA; + elf->e_ident[EI_VERSION] = EV_CURRENT; + elf->e_ident[EI_OSABI] = ELF_OSABI; + + elf->e_type = ET_CORE; + elf->e_machine = machine; + elf->e_version = EV_CURRENT; + elf->e_phoff = sizeof(struct elfhdr); + elf->e_flags = flags; + elf->e_ehsize = sizeof(struct elfhdr); + elf->e_phentsize = sizeof(struct elf_phdr); + elf->e_phnum = segs; +} + +static void fill_elf_note_phdr(struct elf_phdr *phdr, int sz, loff_t offset) +{ + phdr->p_type = PT_NOTE; + phdr->p_offset = offset; + phdr->p_vaddr = 0; + phdr->p_paddr = 0; + phdr->p_filesz = sz; + phdr->p_memsz = 0; + phdr->p_flags = 0; + phdr->p_align = 4; +} + +static void __fill_note(struct memelfnote *note, const char *name, int type, + unsigned int sz, void *data) +{ + note->name = name; + note->type = type; + note->datasz = sz; + note->data = data; +} + +#define fill_note(note, type, sz, data) \ + __fill_note(note, NN_ ## type, NT_ ## type, sz, data) + +/* + * fill up all the fields in prstatus from the given task struct, except + * registers which need to be filled up separately. + */ +static void fill_prstatus(struct elf_prstatus_common *prstatus, + struct task_struct *p, long signr) +{ + prstatus->pr_info.si_signo = prstatus->pr_cursig = signr; + prstatus->pr_sigpend = p->pending.signal.sig[0]; + prstatus->pr_sighold = p->blocked.sig[0]; + rcu_read_lock(); + prstatus->pr_ppid = task_pid_vnr(rcu_dereference(p->real_parent)); + rcu_read_unlock(); + prstatus->pr_pid = task_pid_vnr(p); + prstatus->pr_pgrp = task_pgrp_vnr(p); + prstatus->pr_sid = task_session_vnr(p); + if (thread_group_leader(p)) { + struct task_cputime cputime; + + /* + * This is the record for the group leader. It shows the + * group-wide total, not its individual thread total. + */ + thread_group_cputime(p, &cputime); + prstatus->pr_utime = ns_to_kernel_old_timeval(cputime.utime); + prstatus->pr_stime = ns_to_kernel_old_timeval(cputime.stime); + } else { + u64 utime, stime; + + task_cputime(p, &utime, &stime); + prstatus->pr_utime = ns_to_kernel_old_timeval(utime); + prstatus->pr_stime = ns_to_kernel_old_timeval(stime); + } + + prstatus->pr_cutime = ns_to_kernel_old_timeval(p->signal->cutime); + prstatus->pr_cstime = ns_to_kernel_old_timeval(p->signal->cstime); +} + +static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p, + struct mm_struct *mm) +{ + const struct cred *cred; + unsigned int i, len; + unsigned int state; + + /* first copy the parameters from user space */ + memset(psinfo, 0, sizeof(struct elf_prpsinfo)); + + len = mm->arg_end - mm->arg_start; + if (len >= ELF_PRARGSZ) + len = ELF_PRARGSZ-1; + if (copy_from_user(&psinfo->pr_psargs, + (const char __user *)mm->arg_start, len)) + return -EFAULT; + for(i = 0; i < len; i++) + if (psinfo->pr_psargs[i] == 0) + psinfo->pr_psargs[i] = ' '; + psinfo->pr_psargs[len] = 0; + + rcu_read_lock(); + psinfo->pr_ppid = task_pid_vnr(rcu_dereference(p->real_parent)); + rcu_read_unlock(); + psinfo->pr_pid = task_pid_vnr(p); + psinfo->pr_pgrp = task_pgrp_vnr(p); + psinfo->pr_sid = task_session_vnr(p); + + state = READ_ONCE(p->__state); + i = state ? ffz(~state) + 1 : 0; + psinfo->pr_state = i; + psinfo->pr_sname = (i > 5) ? '.' : "RSDTZW"[i]; + psinfo->pr_zomb = psinfo->pr_sname == 'Z'; + psinfo->pr_nice = task_nice(p); + psinfo->pr_flag = p->flags; + rcu_read_lock(); + cred = __task_cred(p); + SET_UID(psinfo->pr_uid, from_kuid_munged(cred->user_ns, cred->uid)); + SET_GID(psinfo->pr_gid, from_kgid_munged(cred->user_ns, cred->gid)); + rcu_read_unlock(); + get_task_comm(psinfo->pr_fname, p); + + return 0; +} + +static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) +{ + elf_addr_t *auxv = (elf_addr_t *) mm->saved_auxv; + int i = 0; + do + i += 2; + while (auxv[i - 2] != AT_NULL); + fill_note(note, AUXV, i * sizeof(elf_addr_t), auxv); +} + +static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, + const kernel_siginfo_t *siginfo) +{ + copy_siginfo_to_external(csigdata, siginfo); + fill_note(note, SIGINFO, sizeof(*csigdata), csigdata); +} + +/* + * Format of NT_FILE note: + * + * long count -- how many files are mapped + * long page_size -- units for file_ofs + * array of [COUNT] elements of + * long start + * long end + * long file_ofs + * followed by COUNT filenames in ASCII: "FILE1" NUL "FILE2" NUL... + */ +static int fill_files_note(struct memelfnote *note, struct coredump_params *cprm) +{ + unsigned count, size, names_ofs, remaining, n; + user_long_t *data; + user_long_t *start_end_ofs; + char *name_base, *name_curpos; + int i; + + /* *Estimated* file count and total data size needed */ + count = cprm->vma_count; + if (count > UINT_MAX / 64) + return -EINVAL; + size = count * 64; + + names_ofs = (2 + 3 * count) * sizeof(data[0]); + alloc: + /* paranoia check */ + if (size >= core_file_note_size_limit) { + pr_warn_once("coredump Note size too large: %u (does kernel.core_file_note_size_limit sysctl need adjustment?\n", + size); + return -EINVAL; + } + size = round_up(size, PAGE_SIZE); + /* + * "size" can be 0 here legitimately. + * Let it ENOMEM and omit NT_FILE section which will be empty anyway. + */ + data = kvmalloc(size, GFP_KERNEL); + if (ZERO_OR_NULL_PTR(data)) + return -ENOMEM; + + start_end_ofs = data + 2; + name_base = name_curpos = ((char *)data) + names_ofs; + remaining = size - names_ofs; + count = 0; + for (i = 0; i < cprm->vma_count; i++) { + struct core_vma_metadata *m = &cprm->vma_meta[i]; + struct file *file; + const char *filename; + + file = m->file; + if (!file) + continue; + filename = file_path(file, name_curpos, remaining); + if (IS_ERR(filename)) { + if (PTR_ERR(filename) == -ENAMETOOLONG) { + kvfree(data); + size = size * 5 / 4; + goto alloc; + } + continue; + } + + /* file_path() fills at the end, move name down */ + /* n = strlen(filename) + 1: */ + n = (name_curpos + remaining) - filename; + remaining = filename - name_curpos; + memmove(name_curpos, filename, n); + name_curpos += n; + + *start_end_ofs++ = m->start; + *start_end_ofs++ = m->end; + *start_end_ofs++ = m->pgoff; + count++; + } + + /* Now we know exact count of files, can store it */ + data[0] = count; + data[1] = PAGE_SIZE; + /* + * Count usually is less than mm->map_count, + * we need to move filenames down. + */ + n = cprm->vma_count - count; + if (n != 0) { + unsigned shift_bytes = n * 3 * sizeof(data[0]); + memmove(name_base - shift_bytes, name_base, + name_curpos - name_base); + name_curpos -= shift_bytes; + } + + size = name_curpos - (char *)data; + fill_note(note, FILE, size, data); + return 0; +} + +#include + +struct elf_thread_core_info { + struct elf_thread_core_info *next; + struct task_struct *task; + struct elf_prstatus prstatus; + struct memelfnote notes[]; +}; + +struct elf_note_info { + struct elf_thread_core_info *thread; + struct memelfnote psinfo; + struct memelfnote signote; + struct memelfnote auxv; + struct memelfnote files; + user_siginfo_t csigdata; + size_t size; + int thread_notes; +}; + +#ifdef CORE_DUMP_USE_REGSET +/* + * When a regset has a writeback hook, we call it on each thread before + * dumping user memory. On register window machines, this makes sure the + * user memory backing the register data is up to date before we read it. + */ +static void do_thread_regset_writeback(struct task_struct *task, + const struct user_regset *regset) +{ + if (regset->writeback) + regset->writeback(task, regset, 1); +} + +#ifndef PRSTATUS_SIZE +#define PRSTATUS_SIZE sizeof(struct elf_prstatus) +#endif + +#ifndef SET_PR_FPVALID +#define SET_PR_FPVALID(S) ((S)->pr_fpvalid = 1) +#endif + +static int fill_thread_core_info(struct elf_thread_core_info *t, + const struct user_regset_view *view, + long signr, struct elf_note_info *info) +{ + unsigned int note_iter, view_iter; + + /* + * NT_PRSTATUS is the one special case, because the regset data + * goes into the pr_reg field inside the note contents, rather + * than being the whole note contents. We fill the regset in here. + * We assume that regset 0 is NT_PRSTATUS. + */ + fill_prstatus(&t->prstatus.common, t->task, signr); + regset_get(t->task, &view->regsets[0], + sizeof(t->prstatus.pr_reg), &t->prstatus.pr_reg); + + fill_note(&t->notes[0], PRSTATUS, PRSTATUS_SIZE, &t->prstatus); + info->size += notesize(&t->notes[0]); + + do_thread_regset_writeback(t->task, &view->regsets[0]); + + /* + * Each other regset might generate a note too. For each regset + * that has no core_note_type or is inactive, skip it. + */ + note_iter = 1; + for (view_iter = 1; view_iter < view->n; ++view_iter) { + const struct user_regset *regset = &view->regsets[view_iter]; + int note_type = regset->core_note_type; + const char *note_name = regset->core_note_name; + bool is_fpreg = note_type == NT_PRFPREG; + void *data; + int ret; + + do_thread_regset_writeback(t->task, regset); + if (!note_type) // not for coredumps + continue; + if (regset->active && regset->active(t->task, regset) <= 0) + continue; + + ret = regset_get_alloc(t->task, regset, ~0U, &data); + if (ret < 0) + continue; + + if (WARN_ON_ONCE(note_iter >= info->thread_notes)) + break; + + if (is_fpreg) + SET_PR_FPVALID(&t->prstatus); + + /* There should be a note name, but if not, guess: */ + if (WARN_ON_ONCE(!note_name)) + note_name = "LINUX"; + else + /* Warn on non-legacy-compatible names, for now. */ + WARN_ON_ONCE(strcmp(note_name, + is_fpreg ? "CORE" : "LINUX")); + + __fill_note(&t->notes[note_iter], note_name, note_type, + ret, data); + + info->size += notesize(&t->notes[note_iter]); + note_iter++; + } + + return 1; +} +#else +static int fill_thread_core_info(struct elf_thread_core_info *t, + const struct user_regset_view *view, + long signr, struct elf_note_info *info) +{ + struct task_struct *p = t->task; + elf_fpregset_t *fpu; + + fill_prstatus(&t->prstatus.common, p, signr); + elf_core_copy_task_regs(p, &t->prstatus.pr_reg); + + fill_note(&t->notes[0], PRSTATUS, sizeof(t->prstatus), &t->prstatus); + info->size += notesize(&t->notes[0]); + + fpu = kzalloc_obj(elf_fpregset_t); + if (!fpu || !elf_core_copy_task_fpregs(p, fpu)) { + kfree(fpu); + return 1; + } + + t->prstatus.pr_fpvalid = 1; + fill_note(&t->notes[1], PRFPREG, sizeof(*fpu), fpu); + info->size += notesize(&t->notes[1]); + + return 1; +} +#endif + +static int fill_note_info(struct elfhdr *elf, int phdrs, + struct elf_note_info *info, + struct coredump_params *cprm) +{ + struct task_struct *dump_task = current; + const struct user_regset_view *view; + struct elf_thread_core_info *t; + struct elf_prpsinfo *psinfo; + struct core_thread *ct; + u16 machine; + u32 flags; + + psinfo = kmalloc_obj(*psinfo); + if (!psinfo) + return 0; + fill_note(&info->psinfo, PRPSINFO, sizeof(*psinfo), psinfo); + +#ifdef CORE_DUMP_USE_REGSET + view = task_user_regset_view(dump_task); + + /* + * Figure out how many notes we're going to need for each thread. + */ + info->thread_notes = 0; + for (int i = 0; i < view->n; ++i) + if (view->regsets[i].core_note_type != 0) + ++info->thread_notes; + + /* + * Sanity check. We rely on regset 0 being in NT_PRSTATUS, + * since it is our one special case. + */ + if (unlikely(info->thread_notes == 0) || + unlikely(view->regsets[0].core_note_type != NT_PRSTATUS)) { + WARN_ON(1); + return 0; + } + + machine = view->e_machine; + flags = view->e_flags; +#else + view = NULL; + info->thread_notes = 2; + machine = ELF_ARCH; + flags = ELF_CORE_EFLAGS; +#endif + + /* + * Override ELF e_flags with value taken from process, + * if arch needs that. + */ + flags = elf_coredump_get_mm_eflags(dump_task->mm, flags); + + /* + * Initialize the ELF file header. + */ + fill_elf_header(elf, phdrs, machine, flags); + + /* + * Allocate a structure for each thread. + */ + info->thread = kzalloc_flex(*info->thread, notes, info->thread_notes); + if (unlikely(!info->thread)) + return 0; + + info->thread->task = dump_task; + for (ct = dump_task->signal->core_state->dumper.next; ct; ct = ct->next) { + t = kzalloc_flex(*t, notes, info->thread_notes); + if (unlikely(!t)) + return 0; + + t->task = ct->task; + t->next = info->thread->next; + info->thread->next = t; + } + + /* + * Now fill in each thread's information. + */ + for (t = info->thread; t != NULL; t = t->next) + if (!fill_thread_core_info(t, view, cprm->siginfo->si_signo, info)) + return 0; + + /* + * Fill in the two process-wide notes. + */ + fill_psinfo(psinfo, dump_task->group_leader, dump_task->mm); + info->size += notesize(&info->psinfo); + + fill_siginfo_note(&info->signote, &info->csigdata, cprm->siginfo); + info->size += notesize(&info->signote); + + fill_auxv_note(&info->auxv, current->mm); + info->size += notesize(&info->auxv); + + if (fill_files_note(&info->files, cprm) == 0) + info->size += notesize(&info->files); + + return 1; +} + +/* + * Write all the notes for each thread. When writing the first thread, the + * process-wide notes are interleaved after the first thread-specific note. + */ +static int write_note_info(struct elf_note_info *info, + struct coredump_params *cprm) +{ + bool first = true; + struct elf_thread_core_info *t = info->thread; + + do { + int i; + + if (!writenote(&t->notes[0], cprm)) + return 0; + + if (first && !writenote(&info->psinfo, cprm)) + return 0; + if (first && !writenote(&info->signote, cprm)) + return 0; + if (first && !writenote(&info->auxv, cprm)) + return 0; + if (first && info->files.data && + !writenote(&info->files, cprm)) + return 0; + + for (i = 1; i < info->thread_notes; ++i) + if (t->notes[i].data && + !writenote(&t->notes[i], cprm)) + return 0; + + first = false; + t = t->next; + } while (t); + + return 1; +} + +static void free_note_info(struct elf_note_info *info) +{ + struct elf_thread_core_info *threads = info->thread; + while (threads) { + unsigned int i; + struct elf_thread_core_info *t = threads; + threads = t->next; + WARN_ON(t->notes[0].data && t->notes[0].data != &t->prstatus); + for (i = 1; i < info->thread_notes; ++i) + kvfree(t->notes[i].data); + kfree(t); + } + kfree(info->psinfo.data); + kvfree(info->files.data); +} + +static void fill_extnum_info(struct elfhdr *elf, struct elf_shdr *shdr4extnum, + elf_addr_t e_shoff, int segs) +{ + elf->e_shoff = e_shoff; + elf->e_shentsize = sizeof(*shdr4extnum); + elf->e_shnum = 1; + elf->e_shstrndx = SHN_UNDEF; + + memset(shdr4extnum, 0, sizeof(*shdr4extnum)); + + shdr4extnum->sh_type = SHT_NULL; + shdr4extnum->sh_size = elf->e_shnum; + shdr4extnum->sh_link = elf->e_shstrndx; + shdr4extnum->sh_info = segs; +} + +/* + * Actual dumper + * + * This is a two-pass process; first we find the offsets of the bits, + * and then they are actually written out. If we run out of core limit + * we just truncate. + */ +static int elf_core_dump(struct coredump_params *cprm) +{ + int has_dumped = 0; + int segs, i; + struct elfhdr elf; + loff_t offset = 0, dataoff; + struct elf_note_info info = { }; + struct elf_phdr *phdr4note = NULL; + struct elf_shdr *shdr4extnum = NULL; + Elf_Half e_phnum; + elf_addr_t e_shoff; + + /* + * The number of segs are recored into ELF header as 16bit value. + * Please check DEFAULT_MAX_MAP_COUNT definition when you modify here. + */ + segs = cprm->vma_count + elf_core_extra_phdrs(cprm); + + /* for notes section */ + segs++; + + /* If segs > PN_XNUM(0xffff), then e_phnum overflows. To avoid + * this, kernel supports extended numbering. Have a look at + * include/linux/elf.h for further information. */ + e_phnum = segs > PN_XNUM ? PN_XNUM : segs; + + /* + * Collect all the non-memory information about the process for the + * notes. This also sets up the file header. + */ + if (!fill_note_info(&elf, e_phnum, &info, cprm)) + goto end_coredump; + + has_dumped = 1; + + offset += sizeof(elf); /* ELF header */ + offset += segs * sizeof(struct elf_phdr); /* Program headers */ + + /* Write notes phdr entry */ + { + size_t sz = info.size; + + /* For cell spufs and x86 xstate */ + sz += elf_coredump_extra_notes_size(); + + phdr4note = kmalloc_obj(*phdr4note); + if (!phdr4note) + goto end_coredump; + + fill_elf_note_phdr(phdr4note, sz, offset); + offset += sz; + } + + dataoff = offset = roundup(offset, ELF_EXEC_PAGESIZE); + + offset += cprm->vma_data_size; + offset += elf_core_extra_data_size(cprm); + e_shoff = offset; + + if (e_phnum == PN_XNUM) { + shdr4extnum = kmalloc_obj(*shdr4extnum); + if (!shdr4extnum) + goto end_coredump; + fill_extnum_info(&elf, shdr4extnum, e_shoff, segs); + } + + offset = dataoff; + + if (!dump_emit(cprm, &elf, sizeof(elf))) + goto end_coredump; + + if (!dump_emit(cprm, phdr4note, sizeof(*phdr4note))) + goto end_coredump; + + /* Write program headers for segments dump */ + for (i = 0; i < cprm->vma_count; i++) { + struct core_vma_metadata *meta = cprm->vma_meta + i; + struct elf_phdr phdr; + + phdr.p_type = PT_LOAD; + phdr.p_offset = offset; + phdr.p_vaddr = meta->start; + phdr.p_paddr = 0; + phdr.p_filesz = meta->dump_size; + phdr.p_memsz = meta->end - meta->start; + offset += phdr.p_filesz; + phdr.p_flags = 0; + if (meta->flags & VM_READ) + phdr.p_flags |= PF_R; + if (meta->flags & VM_WRITE) + phdr.p_flags |= PF_W; + if (meta->flags & VM_EXEC) + phdr.p_flags |= PF_X; + phdr.p_align = ELF_EXEC_PAGESIZE; + + if (!dump_emit(cprm, &phdr, sizeof(phdr))) + goto end_coredump; + } + + if (!elf_core_write_extra_phdrs(cprm, offset)) + goto end_coredump; + + /* write out the notes section */ + if (!write_note_info(&info, cprm)) + goto end_coredump; + + /* For cell spufs and x86 xstate */ + if (elf_coredump_extra_notes_write(cprm)) + goto end_coredump; + + /* Align to page */ + dump_skip_to(cprm, dataoff); + + for (i = 0; i < cprm->vma_count; i++) { + struct core_vma_metadata *meta = cprm->vma_meta + i; + + if (!dump_user_range(cprm, meta->start, meta->dump_size)) + goto end_coredump; + } + + if (!elf_core_write_extra_data(cprm)) + goto end_coredump; + + if (e_phnum == PN_XNUM) { + if (!dump_emit(cprm, shdr4extnum, sizeof(*shdr4extnum))) + goto end_coredump; + } + +end_coredump: + free_note_info(&info); + kfree(shdr4extnum); + kfree(phdr4note); + return has_dumped; +} + +#endif /* CONFIG_ELF_CORE */ + +static int __init init_elf_binfmt(void) +{ + register_binfmt(&elf_format); + return 0; +} + +static void __exit exit_elf_binfmt(void) +{ + /* Remove the COFF and ELF loaders. */ + unregister_binfmt(&elf_format); +} + +core_initcall(init_elf_binfmt); +module_exit(exit_elf_binfmt); + +#ifdef CONFIG_BINFMT_ELF_KUNIT_TEST +#include "tests/binfmt_elf_kunit.c" +#endif diff --git a/research/h25-c05-at-random-producer-events/inputs/input-018.data b/research/h25-c05-at-random-producer-events/inputs/input-018.data new file mode 100644 index 0000000000..483d626034 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-018.data @@ -0,0 +1,514 @@ +{ + "costs": "OPEN_NOT_ZERO", + "deadline_utc": "2026-11-02T17:43:00+00:00", + "explicit_nonimplications": [ + "Initial check does not independently prove provider integrity or self-authenticate native memory.", + "A bounded initial receipt is not an indefinite mapping/file/policy lease.", + "Receipt freshness limitations do not imply all OS trust expires immediately.", + "inode0 exclusion delegates a declared class to OS trust; it does not independently authenticate each skipped mapping or admit arbitrary future anonymous code.", + "Trusted provider integrity does not mean all compiler-relevant inputs/facts are enumerated, consumed, irrelevant or already witnessed.", + "Correct Linux behavior does not establish actual policy installation/namespace/visibility/immutability/acquisition or lifetime.", + "Eight initial native file pins do not prove private compiler ABI/callee effects or universal compiler correctness.", + "Binding/shape checks and serialized booleans do not create external bootstrap/current runtime authority." + ], + "findings": [ + { + "classification": "EXPLICIT_PREMISE", + "id": "T01", + "lines": [ + 1, + 8 + ], + "source": "native_tcb", + "statement": "Native hashing, POSIX, OS/loader integrity and closed bootstrap interval are explicit premises; the initial check does not establish them. Receipt is not a scientific or reusable private-ABI PASS.", + "temporal_scope": "Closed bootstrap is expressly temporal for startup authenticity. No sentence says all OS/POSIX provider trust expires when the initial checker returns." + }, + { + "classification": "EXPLICIT_PROVIDER_BOUNDARY", + "id": "T02", + "lines": [ + 79, + 121 + ], + "source": "native_tcb", + "specific_anchors": [ + 107, + 108, + 121 + ], + "statement": "inode-zero executable rows are skipped from the declared file-backed executable map set and assigned by comment to explicit OS TCB. Raw maps are hashed; skipped mappings are not individually returned as executable file records.", + "temporal_scope": "This avoids treating a deliberately excluded genuine kernel/anonymous map as an undeclared ninth file. It is a declared treatment, not independent origin/authenticity evidence for every skipped mapping or future executable anonymous page." + }, + { + "classification": "BOUNDED_OBSERVATION_CONTRACT", + "id": "T03", + "lines": [ + 158, + 202 + ], + "source": "native_tcb", + "specific_anchors": [ + 166, + 168, + 171, + 175, + 181, + 182, + 183, + 188, + 199, + 200, + 201, + 202 + ], + "statement": "Fresh actual initial maps/file/device/inode/primitive checks bracket the audit; returned receipt says scientific_admission=false,reusable_pass=false and OS/kernel-anonymous maps remain explicit trust.", + "temporal_scope": "The checks corroborate their stated audit interval. They do not mint an indefinite mapping/custody/policy lease. This limit on evidence does not erase the underlying provider premise for later operations." + }, + { + "classification": "EXPLICIT_RUNTIME_NATIVE_PROVIDER_USE", + "id": "T04", + "lines": [ + 143, + 175 + ], + "source": "supervisor", + "specific_anchors": [ + 144, + 145, + 151, + 157, + 161, + 166, + 167, + 168, + 169, + 170, + 172, + 175 + ], + "statement": "Original installer authenticates its supplement, performs same-process PR_GET/SET/GET_CHILD_SUBREAPER through typed libc call, then retains CDLL/function for whole queue. Return trust explicitly names OS/loader/initial stdlib; file pins do not authenticate native memory.", + "temporal_scope": "The same-process subreaper/native keeper is intended to support subsequent child supervision, beyond initial source import. No operation was run in this audit." + }, + { + "additional_lines": [ + 228, + 323 + ], + "classification": "POST_BOOTSTRAP_OPERATIONAL_DEPENDENCY", + "id": "T05", + "lines": [ + 108, + 140 + ], + "source": "supervisor", + "statement": "Actual proc PID/PPID/PGID/SID/startticks/RSS census, pidfd creation/recheck/signalling, poll/waitpid, clocks and final census drive owned-domain facts.", + "temporal_scope": "Meaning of these returned facts and native effects requires genuine Linux behavior during observation, cleanup and final custody. Supervisor proc also maps PermissionError to no row: correct OS behavior alone is not proof of complete required visibility." + }, + { + "classification": "POST_BOOTSTRAP_OPERATIONAL_DEPENDENCY", + "id": "T06", + "lines": [ + 354, + 456 + ], + "source": "supervisor", + "specific_anchors": [ + 360, + 370, + 376, + 389, + 392, + 395, + 396, + 402, + 405, + 407, + 420, + 433, + 442, + 447, + 454 + ], + "statement": "run_root observes actual Popen PID/session, enforces alarms/resource observations, finishes owned cleanup and stable file custody before result. It retains no hostile-fork/concurrent-child claim.", + "temporal_scope": "Trust in correct provider semantics is used throughout a run and its cleanup. The static source supplies no current run or runtime authority." + }, + { + "additional_lines": [ + 79, + 185 + ], + "classification": "EXPLICIT_SCOPE_AND_LATER_USE", + "id": "T07", + "lines": [ + 1, + 23 + ], + "source": "domain", + "statement": "External launcher authenticates OS/runtime/modules/subreaper before import. Closed child domain is not a hostile host/fork sandbox. Captured POSIX,PIDFD,waitpid,clock/page-size primitives are later used for bounded actual proc acquisition and census.", + "temporal_scope": "Authentication entry point is before import; the required semantics extend to each subsequent native use under the closed-process assumptions." + }, + { + "classification": "POST_BOOTSTRAP_OPERATIONAL_DEPENDENCY", + "id": "T08", + "lines": [ + 234, + 436 + ], + "source": "domain", + "specific_anchors": [ + 253, + 256, + 295, + 299, + 300, + 303, + 310, + 314, + 329, + 334, + 362, + 373, + 376, + 388, + 390, + 398, + 414, + 424, + 425, + 436 + ], + "statement": "Exact original Popen object, generation-checked pidfds, actual signals/reaps/closures and fresh terminal census underpin terminal facts. Native return/boxing/call-entry/final-unwind total recovery is expressly not proved; ambiguity forbids mint/reuse.", + "temporal_scope": "These are actual later ownership/terminal operations conditional on correct OS/native behavior and stated visibility/domain/error premises. Serialized receipt flags or provider trust alone do not perform them." + }, + { + "additional_lines": [ + 132, + 158 + ], + "classification": "POST_BOOTSTRAP_BINDING_AND_OS_USE", + "id": "T09", + "lines": [ + 1, + 8 + ], + "source": "parent", + "statement": "Original trusted parent must authenticate source/receiver/initial OS/runtime before import. Repeated _guard requires same parent PID, original Popen/POSIX/resource/clock/signal bindings, receiver/config bindings and current shared deadline.", + "temporal_scope": "Binding guards occur after construction, around run/accept/export. They depend on genuine native provider semantics; Python identity checks are not memory-code self-authentication." + }, + { + "additional_lines": [ + 541, + 690 + ], + "classification": "CONCRETE_LIFETIME_OBSERVATION_DEPENDENCY", + "id": "T10", + "lines": [ + 406, + 517 + ], + "source": "parent", + "specific_anchors": [ + 481, + 489, + 492, + 497, + 502, + 504, + 584, + 585, + 590, + 607, + 620, + 622, + 626, + 628, + 633, + 659, + 682, + 683 + ], + "statement": "Parent creates exclusive session, owns locks, retains original native keeper, snapshots sources/stage, performs real Popen and domain observations/cleanup, then requires terminal and parent-limit checks.", + "temporal_scope": "Correct POSIX/OS behavior already supports this full sequence. Actual acquisition, retained ownership and successful execution of the sequence remain separate facts, not implied by trustworthy provider identity." + }, + { + "additional_lines": [ + 855, + 868 + ], + "classification": "LATE_CUSTODY_AND_AUTHORITY_DEPENDENCY", + "id": "T11", + "lines": [ + 763, + 852 + ], + "source": "parent", + "specific_anchors": [ + 773, + 787, + 788, + 789, + 792, + 809, + 820, + 822, + 836, + 839, + 842, + 862 + ], + "statement": "Fresh terminal/source/stage/raw-file checks and bounded clock precede the sole ParentCompletion mint and export. Native full/gain qualification remains false.", + "temporal_scope": "Trustworthy kernel/POSIX semantics are needed at late checks and teardown. Pre/post matching file observations do not establish exclusion of intermediate mutation without C07 ownership/lifetime premise." + }, + { + "classification": "INDEPENDENT_ORIGINAL_OBLIGATIONS", + "id": "T12", + "lines": [ + 9, + 83 + ], + "source": "conditions", + "specific_anchors": [ + 12, + 32, + 42, + 47, + 52, + 57, + 62, + 67, + 77 + ], + "statement": "C01 authenticates original startup; C05 independently requires complete current source/header/search/macro/compiler/specs/link/library witness; C07 requires owned immutable ancestors; C09 parent actual launch/terminal authority; C10/C11 preserve error assumptions/limits; C12 durable retention; C14 full funding/execution.", + "temporal_scope": "All are marked not discharged. Existing provider integrity supplies no automatic discharge of origin coverage, lifetime, private ABI, costs or current approval." + }, + { + "additional_lines": [ + 163, + 179 + ], + "classification": "INDEPENDENT_CURRENT_AUTHORITY_AND_CLOSURE_CONTRACT", + "id": "T13", + "lines": [ + 54, + 81 + ], + "source": "interface", + "specific_anchors": [ + 58, + 60, + 62, + 64, + 71, + 75, + 76, + 78, + 79, + 81, + 173, + 177 + ], + "statement": "Actual PopenPID, parent limits, initial profile and immutable stage are parent-owned facts; nonce is data only; native/header/compiler/link current admission and whole-domain/source lifetime remain parent-exclusive. Source closure is independently reviewed with512/256MiB bounds; all gates unset.", + "temporal_scope": "Provider integrity does not mint these current facts/capabilities or supply the complete actual selection." + }, + { + "classification": "DECLARED_NATIVE_FILE_SCOPE_ONLY", + "id": "T14", + "lines": [ + 1, + 138 + ], + "source": "native_profile", + "specific_anchors": [ + 2, + 18, + 31, + 38, + 49, + 60, + 71, + 84, + 95, + 137, + 138 + ], + "statement": "Eight initial Python/hashlib/loader/native-library rows, static ELF/file pins only, pending guarded runtime corroboration. No cc1/compiler file row. Explicit OS/loader/initial native C trust differs from in-memory self-authentication.", + "temporal_scope": "Neither eight file hashes nor generic OS trust constitute a theorem about arbitrary compiler-private object layout, private callee register effects or correctness of every routine in a pinned native library." + } + ], + "full_C05": false, + "full_V03": false, + "local_commit": "49cec92fbd601f3ad619924f25d5f563a0c9e9ad", + "operations": { + "all_units_01_through_12_remain_closed": true, + "goal_budget_approval_status_change": false, + "network_source_acquisition": false, + "new_code_or_policy": false, + "original_native_TCB_compiler_namespace_Popen_tests_or_scientific_execution": false, + "protected_runtime_read_or_enumeration": false, + "source_import_or_function_execution": false, + "source_mutation": false, + "source_text_cap_bytes": 1048576 + }, + "original_completion_percent": 43.5, + "original_denominators_unchanged": true, + "pro14": "Independent report frozen without reading Pro14; parent consultation comparison remains separate.", + "publication_binding": { + "checkpoint_ci_status_only": "Recorded17:28 checkpoint says in_progress; no current hosted-CI claim.", + "local_remote_commit_object_unavailable": "Read-only ls-tree returned fatal:not-a-tree for2a26; expected because local identical-tree commit is49ce. Binding uses supplied retained exact remote inventory, not an invented local object.", + "no_remote_refresh_or_acquisition": true, + "retained_remote_checkpoint": { + "bytes": 72749, + "git_blob": "5e8c99fa46b44e2f1325024800e568d1d9c0479a", + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/evidence/PR6377-REMOTE-CHECKPOINT-v2.json", + "sha256": "be3c8f6f8ff1ae57a55f34f12499e4566358aa952590b17dc9daee83d2ed4335" + }, + "seven_source_sha256_bytes_git_blob_and_regular_modes_independently_matched": true + }, + "published_head": "2a26450dea25d7648b585befce5ed375857a8f90", + "published_tree": "86f578e5889cfdcf3688963ce679857d45d2e6ed", + "remaining_runtime_observations": [ + { + "anchors": [ + "parent:1-8,86-95,314-403", + "supervisor:45-54", + "conditions:C01/C02/C08/C09" + ], + "id": "R01", + "need": "Genuine independently admitted enclosing parent, exact source/import/config closure before import and actual original f5/API4/provider launch/flags/environment/path/one-task context.", + "status": "No new current runtime admission or bootstrap authority established by this source audit." + }, + { + "anchors": [ + "native_tcb:24-51,79-121,158-202", + "native_profile:137-138", + "supervisor:143-175" + ], + "id": "R02", + "need": "Actual initial-native corroboration for the admitted launch: captured root/native owners, expected8file profile, real bounded maps before/after, device/inode/currentfile comparisons and correct native keeper.", + "status": "Static source and expected file/profile records are not the observations. Per-mapping provenance of skipped inode0 entries is not independently established by the skip." + }, + { + "anchors": [ + "supervisor:143-175,108-140", + "domain:188-231", + "parent:481-502" + ], + "id": "R03", + "need": "Actual same-process subreaper installation/readback and retained CDLL/function; owned locks/empty initial child census; genuine proc namespace and visibility for all processes required by the closed domain.", + "status": "Correct Linux semantics do not by themselves establish which namespace, permissions, actor set or subreaper state was selected/retained." + }, + { + "anchors": [ + "domain:234-436", + "parent:621-690", + "parent:161-203", + "conditions:C09-C12" + ], + "id": "R04", + "need": "Actual owned Popen object/PID/startticks/PGID/SID, generation-checked pidfds, stream ownership, waits/reaps, postcleanup census/close outcomes and enclosing observation of parent exit on uncertainty.", + "status": "No future serialized record, nonce or success flag substitutes for the real operations. Closed-domain/no-hostile-fork and failure-delivery assumptions remain." + }, + { + "anchors": [ + "conditions:C07", + "parent:206-311,584-590,787-790", + "interface:75-81" + ], + "id": "R05", + "need": "Actual source/stage/ancestor ownership and the claimed immutable/readable/writable partition for the entire interval through descendants, custody and cleanup; admitted remount/policy/FD/mapping effects if a new enclosure is selected.", + "status": "Provider correctness makes successful operations meaningful; it does not prove those operations occurred, exclude outside writers, or turn before/after hashes into lifetime exclusion." + }, + { + "anchors": [ + "native_tcb:107-108,201-202", + "conditions:C05", + "interface:173" + ], + "id": "R06", + "need": "For compiler-relevant N/L/K: explicitly selected kernel/provider context and exact relevant facts, or a bounded approved source/observer/relevance disposition. Preserve initial kernel/vDSO provider integrity already assigned to OS TCB.", + "status": "No new blanket all-kernel-data premise; no demand here to reprove entire kernel correctness. Genuine provider identity/integrity does not enumerate consumed values or show relevance/irrelevance. Arbitrary future anonymous code is not admitted by inode0 alone." + }, + { + "anchors": [ + "conditions:C05/C06", + "interface:78,173,176", + "native_profile:2-98" + ], + "id": "R07", + "need": "Independently approved complete actual project/system/search/macro/compiler/specs/link/library input/witness selection and original bounds/codecs/aliases; exact compiler-private layout/callee-effect evidence if such an interpretation is claimed.", + "status": "OS/loader integrity does not prove private cc1 ABI/layout/callee behavior or compiler input-origin completeness. This is not a demand for universal compiler correctness." + }, + { + "anchors": [ + "conditions:C13-C14", + "parent:86-95,158,618-620,822-845" + ], + "id": "R08", + "need": "Complete original resource/funding/execution approvals and paid observations including setup, copying/authentication, native controls, compilation, custody, failure and final teardown.", + "status": "Source-only model observations, static hashes and a correct OS provider add no funding, run authority, physical bill or completion credit." + } + ], + "reviewed_utc": "2026-11-02T17:38:18.751750+00:00", + "schema": "h25-provider-boundary-source-premise-review/v1", + "scope": "Independent read-only premise audit; not a policy/assurance adoption, implementation, runtime proof or reopened source unit.", + "separate_dimensions": { + "actual_instance_and_origin_coverage": "Which concrete process/mapping/provider/input/fact is selected and relevant; actual observations and complete approved C05 witness.", + "lifetime_and_authority": "Actual successful acquisition/retention/exclusion/terminal ownership and externally authenticated current admission; not supplied by integrity alone.", + "private_compiler_behavior": "Layout/register/memory/control/callee claims about cc1 are separate from correct kernel/POSIX behavior.", + "provider_integrity": "Existing named OS/POSIX/loader/hash-provider correctness premise and genuine semantics while used." + }, + "source_gate_credit_added": 0, + "source_pins": { + "conditions": { + "bytes": 6940, + "git_blob": "fee8188ea8f1d965aa3ebdccb8d0e50d6ae66b3e", + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/publication-linux7-channel-audit-v1/repo-v2/research/h25-c05-linux7-channel-audit/snapshot/original/conditions/CONDITIONS.json", + "publication_checkpoint_match": true, + "sha256": "70e237d6ee4ac2ccaadf01615e8106999718eb1fbb3cf7644c9fc6d3fd4463fe" + }, + "domain": { + "bytes": 23942, + "git_blob": "a0f242854af2ca10fec3d01a4ef049ed38527b18", + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/publication-linux7-channel-audit-v1/repo-v2/research/h25-c05-linux7-channel-audit/snapshot/original/domain/parent_domain_v1.py.txt", + "publication_checkpoint_match": true, + "sha256": "a51264289803b4b17bb262f2460ddd4ed72500aaa21e5eb80fa2db4583689361" + }, + "interface": { + "bytes": 6956, + "git_blob": "d02e2d681e78e37674afcd52624c6a2fe8c537dd", + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/publication-linux7-channel-audit-v1/repo-v2/research/h25-c05-linux7-channel-audit/snapshot/original/interface/INTERFACE.json", + "publication_checkpoint_match": true, + "sha256": "30820f1f2d27d4d4306d8ba63db5329f89182912f7f915aede35b9ce62359491" + }, + "native_profile": { + "bytes": 4935, + "git_blob": "c5a39d7f8377b611e8ced44d9c9bb1fb52da4d67", + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/publication-linux7-channel-audit-v1/repo-v2/research/h25-c05-linux7-channel-audit/snapshot/original/tcb_profile/NATIVE-INITIAL-TCB-v1.json", + "publication_checkpoint_match": true, + "sha256": "610492b3fc06baa0560175edc3ba27057de00d00b8fd3d58dbe55e5a371c042a" + }, + "native_tcb": { + "bytes": 11353, + "git_blob": "55a2f3320bd4d959722ebc66ab21681ff7acf105", + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/publication-linux7-channel-audit-v1/repo-v2/research/h25-c05-linux7-channel-audit/snapshot/original/native_tcb/native_tcb_v1.py.txt", + "publication_checkpoint_match": true, + "sha256": "865943df5cfdbf9383362d7fb2b76c6d0fd895cf0a0e20d550a26b579606b5d7" + }, + "parent": { + "bytes": 54168, + "git_blob": "3191be75708be4bca371aba59f8502d29d24af9a", + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/publication-linux7-channel-audit-v1/repo-v2/research/h25-c05-linux7-channel-audit/snapshot/original/parent_completion/parent_completion_v1.py.txt", + "publication_checkpoint_match": true, + "sha256": "d4ee1b7ce4a42b73261984ffb1b9ceb5bb0165223e04a253588f83b99f6981a5" + }, + "supervisor": { + "bytes": 23047, + "git_blob": "73ed60fe21ce62d415e5f4c65f84a36906a03c93", + "path": "/home/d3lerium/.codex/.chatgpt-projects/g-p-6ad5817fd84881918865926b6fd51453/outputs/c05-v03-completion-20261102T055710Z/publication-linux7-channel-audit-v1/repo-v2/research/h25-c05-linux7-channel-audit/snapshot/original/supervisor/h25_parent_supervisor.py.txt", + "publication_checkpoint_match": true, + "sha256": "cfb09a18dd10b597cc6d5a8139ee769bef679bc44ae029329755e3d97b055075" + } + }, + "strongest_justified_minimal_conditional_claim": "Under the original explicitly trusted OS/POSIX/loader/native-hashing and authenticated closed-startup/closed-domain premises, the named later successful OS operations may be interpreted with their genuine Linux semantics when actually performed by the admitted original parent. This reuses provider integrity already required by the source; it does not introduce a new global OS-integrity axiom merely because the initial checker has returned. The initial receipt itself remains a bounded fresh corroboration. Complete compiler-input origin/witness coverage, relevant K dispositions, private compiler ABI/callee interpretations, actual interval ownership/installed policy, original error/resource conditions and current parent/runtime admission require their own stated evidence.", + "supported_temporal_inference": "Existing genuine-OS/POSIX provider semantics are relied upon after bootstrap through launch, observation, cleanup, terminal checks, custody and parent teardown. There is no source basis for automatic universal expiration at bootstrap. This is an interpretation of the explicit premise and actual use sites, not an independently proved perpetual integrity guarantee." +} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-019.data b/research/h25-c05-at-random-producer-events/inputs/input-019.data new file mode 100644 index 0000000000..7ff4d29911 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-019.data @@ -0,0 +1,1716 @@ +// SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) +/* + * Copyright (C) 2017-2024 Jason A. Donenfeld . All Rights Reserved. + * Copyright Matt Mackall , 2003, 2004, 2005 + * Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All rights reserved. + * + * This driver produces cryptographically secure pseudorandom data. It is divided + * into roughly six sections, each with a section header: + * + * - Initialization and readiness waiting. + * - Fast key erasure RNG, the "crng". + * - Entropy accumulation and extraction routines. + * - Entropy collection routines. + * - Userspace reader/writer interfaces. + * - Sysctl interface. + * + * The high level overview is that there is one input pool, into which + * various pieces of data are hashed. Prior to initialization, some of that + * data is then "credited" as having a certain number of bits of entropy. + * When enough bits of entropy are available, the hash is finalized and + * handed as a key to a stream cipher that expands it indefinitely for + * various consumers. This key is periodically refreshed as the various + * entropy collectors, described below, add data to the input pool. + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef CONFIG_VDSO_GETRANDOM +#include +#include +#include +#endif +#include +#include +#include +#include +#include + +/********************************************************************* + * + * Initialization and readiness waiting. + * + * Much of the RNG infrastructure is devoted to various dependencies + * being able to wait until the RNG has collected enough entropy and + * is ready for safe consumption. + * + *********************************************************************/ + +/* + * crng_init is protected by base_crng->lock, and only increases + * its value (from empty->early->ready). + */ +static enum { + CRNG_EMPTY = 0, /* Little to no entropy collected */ + CRNG_EARLY = 1, /* At least POOL_EARLY_BITS collected */ + CRNG_READY = 2 /* Fully initialized with POOL_READY_BITS collected */ +} crng_init __read_mostly = CRNG_EMPTY; +static DEFINE_STATIC_KEY_FALSE(crng_is_ready); +#define crng_ready() (static_branch_likely(&crng_is_ready) || crng_init >= CRNG_READY) +/* Various types of waiters for crng_init->CRNG_READY transition. */ +static DECLARE_WAIT_QUEUE_HEAD(crng_init_wait); +static struct fasync_struct *fasync; +static ATOMIC_NOTIFIER_HEAD(random_ready_notifier); + +/* Control how we warn userspace. */ +static struct ratelimit_state urandom_warning = + RATELIMIT_STATE_INIT_FLAGS("urandom_warning", HZ, 3, RATELIMIT_MSG_ON_RELEASE); +static int ratelimit_disable __read_mostly = 0; +module_param_named(ratelimit_disable, ratelimit_disable, int, 0644); +MODULE_PARM_DESC(ratelimit_disable, "Disable random ratelimit suppression"); + +/* + * Returns whether or not the input pool has been seeded and thus guaranteed + * to supply cryptographically secure random numbers. This applies to: the + * /dev/urandom device, the get_random_bytes function, and the get_random_{u8, + * u16,u32,u64,long} family of functions. + * + * Returns: true if the input pool has been seeded. + * false if the input pool has not been seeded. + */ +bool rng_is_initialized(void) +{ + return crng_ready(); +} +EXPORT_SYMBOL(rng_is_initialized); + +static void __cold crng_set_ready(struct work_struct *work) +{ + static_branch_enable(&crng_is_ready); +} + +/* Used by wait_for_random_bytes(), and considered an entropy collector, below. */ +static void try_to_generate_entropy(void); + +/* + * Wait for the input pool to be seeded and thus guaranteed to supply + * cryptographically secure random numbers. This applies to: the /dev/urandom + * device, the get_random_bytes function, and the get_random_{u8,u16,u32,u64, + * long} family of functions. Using any of these functions without first + * calling this function forfeits the guarantee of security. + * + * Returns: 0 if the input pool has been seeded. + * -ERESTARTSYS if the function was interrupted by a signal. + */ +int wait_for_random_bytes(void) +{ + while (!crng_ready()) { + int ret; + + try_to_generate_entropy(); + ret = wait_event_interruptible_timeout(crng_init_wait, crng_ready(), HZ); + if (ret) + return ret > 0 ? 0 : ret; + } + return 0; +} +EXPORT_SYMBOL(wait_for_random_bytes); + +/* + * Add a callback function that will be invoked when the crng is initialised, + * or immediately if it already has been. Only use this is you are absolutely + * sure it is required. Most users should instead be able to test + * `rng_is_initialized()` on demand, or make use of `get_random_bytes_wait()`. + */ +int __cold execute_with_initialized_rng(struct notifier_block *nb) +{ + unsigned long flags; + int ret = 0; + + spin_lock_irqsave(&random_ready_notifier.lock, flags); + if (crng_ready()) + nb->notifier_call(nb, 0, NULL); + else + ret = raw_notifier_chain_register((struct raw_notifier_head *)&random_ready_notifier.head, nb); + spin_unlock_irqrestore(&random_ready_notifier.lock, flags); + return ret; +} + +/********************************************************************* + * + * Fast key erasure RNG, the "crng". + * + * These functions expand entropy from the entropy extractor into + * long streams for external consumption using the "fast key erasure" + * RNG described at . + * + * There are a few exported interfaces for use by other drivers: + * + * void get_random_bytes(void *buf, size_t len) + * u8 get_random_u8() + * u16 get_random_u16() + * u32 get_random_u32() + * u32 get_random_u32_below(u32 ceil) + * u32 get_random_u32_above(u32 floor) + * u32 get_random_u32_inclusive(u32 floor, u32 ceil) + * u64 get_random_u64() + * unsigned long get_random_long() + * + * These interfaces will return the requested number of random bytes + * into the given buffer or as a return value. This is equivalent to + * a read from /dev/urandom. The u8, u16, u32, u64, long family of + * functions may be higher performance for one-off random integers, + * because they do a bit of buffering and do not invoke reseeding + * until the buffer is emptied. + * + *********************************************************************/ + +enum { + CRNG_RESEED_START_INTERVAL = HZ, + CRNG_RESEED_INTERVAL = 60 * HZ +}; + +static struct { + u8 key[CHACHA_KEY_SIZE] __aligned(__alignof__(long)); + unsigned long generation; + spinlock_t lock; +} base_crng = { + .lock = __SPIN_LOCK_UNLOCKED(base_crng.lock) +}; + +struct crng { + u8 key[CHACHA_KEY_SIZE]; + unsigned long generation; + local_lock_t lock; +}; + +static DEFINE_PER_CPU(struct crng, crngs) = { + .generation = ULONG_MAX, + .lock = INIT_LOCAL_LOCK(crngs.lock), +}; + +/* + * Return the interval until the next reseeding, which is normally + * CRNG_RESEED_INTERVAL, but during early boot, it is at an interval + * proportional to the uptime. + */ +static unsigned int crng_reseed_interval(void) +{ + static bool early_boot = true; + + if (unlikely(READ_ONCE(early_boot))) { + time64_t uptime = ktime_get_seconds(); + if (uptime >= CRNG_RESEED_INTERVAL / HZ * 2) + WRITE_ONCE(early_boot, false); + else + return max_t(unsigned int, CRNG_RESEED_START_INTERVAL, + (unsigned int)uptime / 2 * HZ); + } + return CRNG_RESEED_INTERVAL; +} + +/* Used by crng_reseed() and crng_make_state() to extract a new seed from the input pool. */ +static void extract_entropy(void *buf, size_t len); + +/* This extracts a new crng key from the input pool. */ +static void crng_reseed(struct work_struct *work) +{ + static DECLARE_DELAYED_WORK(next_reseed, crng_reseed); + unsigned long flags; + unsigned long next_gen; + u8 key[CHACHA_KEY_SIZE]; + + /* Immediately schedule the next reseeding, so that it fires sooner rather than later. */ + if (likely(system_dfl_wq)) + queue_delayed_work(system_dfl_wq, &next_reseed, crng_reseed_interval()); + + extract_entropy(key, sizeof(key)); + + /* + * We copy the new key into the base_crng, overwriting the old one, + * and update the generation counter. We avoid hitting ULONG_MAX, + * because the per-cpu crngs are initialized to ULONG_MAX, so this + * forces new CPUs that come online to always initialize. + */ + spin_lock_irqsave(&base_crng.lock, flags); + memcpy(base_crng.key, key, sizeof(base_crng.key)); + next_gen = base_crng.generation + 1; + if (next_gen == ULONG_MAX) + ++next_gen; + WRITE_ONCE(base_crng.generation, next_gen); +#ifdef CONFIG_VDSO_GETRANDOM + /* base_crng.generation's invalid value is ULONG_MAX, while + * vdso_k_rng_data->generation's invalid value is 0, so add one to the + * former to arrive at the latter. Use smp_store_release so that this + * is ordered with the write above to base_crng.generation. Pairs with + * the smp_rmb() before the syscall in the vDSO code. + * + * Cast to unsigned long for 32-bit architectures, since atomic 64-bit + * operations are not supported on those architectures. This is safe + * because base_crng.generation is a 32-bit value. On big-endian + * architectures it will be stored in the upper 32 bits, but that's okay + * because the vDSO side only checks whether the value changed, without + * actually using or interpreting the value. + */ + smp_store_release((unsigned long *)&vdso_k_rng_data->generation, next_gen + 1); +#endif + if (!static_branch_likely(&crng_is_ready)) + crng_init = CRNG_READY; + spin_unlock_irqrestore(&base_crng.lock, flags); + memzero_explicit(key, sizeof(key)); +} + +/* + * This generates a ChaCha block using the provided key, and then + * immediately overwrites that key with half the block. It returns + * the resultant ChaCha state to the user, along with the second + * half of the block containing 32 bytes of random data that may + * be used; random_data_len may not be greater than 32. + * + * The returned ChaCha state contains within it a copy of the old + * key value, at index 4, so the state should always be zeroed out + * immediately after using in order to maintain forward secrecy. + * If the state cannot be erased in a timely manner, then it is + * safer to set the random_data parameter to &chacha_state->x[4] + * so that this function overwrites it before returning. + */ +static void crng_fast_key_erasure(u8 key[CHACHA_KEY_SIZE], + struct chacha_state *chacha_state, + u8 *random_data, size_t random_data_len) +{ + u8 first_block[CHACHA_BLOCK_SIZE]; + + BUG_ON(random_data_len > 32); + + chacha_init_consts(chacha_state); + memcpy(&chacha_state->x[4], key, CHACHA_KEY_SIZE); + memset(&chacha_state->x[12], 0, sizeof(u32) * 4); + chacha20_block(chacha_state, first_block); + + memcpy(key, first_block, CHACHA_KEY_SIZE); + memcpy(random_data, first_block + CHACHA_KEY_SIZE, random_data_len); + memzero_explicit(first_block, sizeof(first_block)); +} + +/* + * This function returns a ChaCha state that you may use for generating + * random data. It also returns up to 32 bytes on its own of random data + * that may be used; random_data_len may not be greater than 32. + */ +static void crng_make_state(struct chacha_state *chacha_state, + u8 *random_data, size_t random_data_len) +{ + unsigned long flags; + struct crng *crng; + + BUG_ON(random_data_len > 32); + + /* + * For the fast path, we check whether we're ready, unlocked first, and + * then re-check once locked later. In the case where we're really not + * ready, we do fast key erasure with the base_crng directly, extracting + * when crng_init is CRNG_EMPTY. + */ + if (!crng_ready()) { + bool ready; + + spin_lock_irqsave(&base_crng.lock, flags); + ready = crng_ready(); + if (!ready) { + if (crng_init == CRNG_EMPTY) + extract_entropy(base_crng.key, sizeof(base_crng.key)); + crng_fast_key_erasure(base_crng.key, chacha_state, + random_data, random_data_len); + } + spin_unlock_irqrestore(&base_crng.lock, flags); + if (!ready) + return; + } + + local_lock_irqsave(&crngs.lock, flags); + crng = raw_cpu_ptr(&crngs); + + /* + * If our per-cpu crng is older than the base_crng, then it means + * somebody reseeded the base_crng. In that case, we do fast key + * erasure on the base_crng, and use its output as the new key + * for our per-cpu crng. This brings us up to date with base_crng. + */ + if (unlikely(crng->generation != READ_ONCE(base_crng.generation))) { + spin_lock(&base_crng.lock); + crng_fast_key_erasure(base_crng.key, chacha_state, + crng->key, sizeof(crng->key)); + crng->generation = base_crng.generation; + spin_unlock(&base_crng.lock); + } + + /* + * Finally, when we've made it this far, our per-cpu crng has an up + * to date key, and we can do fast key erasure with it to produce + * some random data and a ChaCha state for the caller. All other + * branches of this function are "unlikely", so most of the time we + * should wind up here immediately. + */ + crng_fast_key_erasure(crng->key, chacha_state, random_data, random_data_len); + local_unlock_irqrestore(&crngs.lock, flags); +} + +static void _get_random_bytes(void *buf, size_t len) +{ + struct chacha_state chacha_state; + u8 tmp[CHACHA_BLOCK_SIZE]; + size_t first_block_len; + + if (!len) + return; + + first_block_len = min_t(size_t, 32, len); + crng_make_state(&chacha_state, buf, first_block_len); + len -= first_block_len; + buf += first_block_len; + + while (len) { + if (len < CHACHA_BLOCK_SIZE) { + chacha20_block(&chacha_state, tmp); + memcpy(buf, tmp, len); + memzero_explicit(tmp, sizeof(tmp)); + break; + } + + chacha20_block(&chacha_state, buf); + if (unlikely(chacha_state.x[12] == 0)) + ++chacha_state.x[13]; + len -= CHACHA_BLOCK_SIZE; + buf += CHACHA_BLOCK_SIZE; + } + + chacha_zeroize_state(&chacha_state); +} + +/* + * This returns random bytes in arbitrary quantities. The quality of the + * random bytes is as good as /dev/urandom. In order to ensure that the + * randomness provided by this function is okay, the function + * wait_for_random_bytes() should be called and return 0 at least once + * at any point prior. + */ +void get_random_bytes(void *buf, size_t len) +{ + _get_random_bytes(buf, len); +} +EXPORT_SYMBOL(get_random_bytes); + +static ssize_t get_random_bytes_user(struct iov_iter *iter) +{ + struct chacha_state chacha_state; + u8 block[CHACHA_BLOCK_SIZE]; + size_t ret = 0, copied; + + if (unlikely(!iov_iter_count(iter))) + return 0; + + /* + * Immediately overwrite the ChaCha key at index 4 with random + * bytes, in case userspace causes copy_to_iter() below to sleep + * forever, so that we still retain forward secrecy in that case. + */ + crng_make_state(&chacha_state, (u8 *)&chacha_state.x[4], + CHACHA_KEY_SIZE); + /* + * However, if we're doing a read of len <= 32, we don't need to + * use chacha_state after, so we can simply return those bytes to + * the user directly. + */ + if (iov_iter_count(iter) <= CHACHA_KEY_SIZE) { + ret = copy_to_iter(&chacha_state.x[4], CHACHA_KEY_SIZE, iter); + goto out_zero_chacha; + } + + for (;;) { + chacha20_block(&chacha_state, block); + if (unlikely(chacha_state.x[12] == 0)) + ++chacha_state.x[13]; + + copied = copy_to_iter(block, sizeof(block), iter); + ret += copied; + if (!iov_iter_count(iter) || copied != sizeof(block)) + break; + + BUILD_BUG_ON(PAGE_SIZE % sizeof(block) != 0); + if (ret % PAGE_SIZE == 0) { + if (signal_pending(current)) + break; + cond_resched(); + } + } + + memzero_explicit(block, sizeof(block)); +out_zero_chacha: + chacha_zeroize_state(&chacha_state); + return ret ? ret : -EFAULT; +} + +/* + * Batched entropy returns random integers. The quality of the random + * number is as good as /dev/urandom. In order to ensure that the randomness + * provided by this function is okay, the function wait_for_random_bytes() + * should be called and return 0 at least once at any point prior. + */ + +#define DEFINE_BATCHED_ENTROPY(type) \ +struct batch_ ##type { \ + /* \ + * We make this 1.5x a ChaCha block, so that we get the \ + * remaining 32 bytes from fast key erasure, plus one full \ + * block from the detached ChaCha state. We can increase \ + * the size of this later if needed so long as we keep the \ + * formula of (integer_blocks + 0.5) * CHACHA_BLOCK_SIZE. \ + */ \ + type entropy[CHACHA_BLOCK_SIZE * 3 / (2 * sizeof(type))]; \ + local_lock_t lock; \ + unsigned long generation; \ + unsigned int position; \ +}; \ + \ +static DEFINE_PER_CPU(struct batch_ ##type, batched_entropy_ ##type) = { \ + .lock = INIT_LOCAL_LOCK(batched_entropy_ ##type.lock), \ + .position = UINT_MAX \ +}; \ + \ +type get_random_ ##type(void) \ +{ \ + type ret; \ + unsigned long flags; \ + struct batch_ ##type *batch; \ + unsigned long next_gen; \ + \ + if (!crng_ready()) { \ + _get_random_bytes(&ret, sizeof(ret)); \ + return ret; \ + } \ + \ + local_lock_irqsave(&batched_entropy_ ##type.lock, flags); \ + batch = raw_cpu_ptr(&batched_entropy_##type); \ + \ + next_gen = READ_ONCE(base_crng.generation); \ + if (batch->position >= ARRAY_SIZE(batch->entropy) || \ + next_gen != batch->generation) { \ + _get_random_bytes(batch->entropy, sizeof(batch->entropy)); \ + batch->position = 0; \ + batch->generation = next_gen; \ + } \ + \ + ret = batch->entropy[batch->position]; \ + batch->entropy[batch->position] = 0; \ + ++batch->position; \ + local_unlock_irqrestore(&batched_entropy_ ##type.lock, flags); \ + return ret; \ +} \ +EXPORT_SYMBOL(get_random_ ##type); + +DEFINE_BATCHED_ENTROPY(u8) +DEFINE_BATCHED_ENTROPY(u16) +DEFINE_BATCHED_ENTROPY(u32) +DEFINE_BATCHED_ENTROPY(u64) + +u32 __get_random_u32_below(u32 ceil) +{ + /* + * This is the slow path for variable ceil. It is still fast, most of + * the time, by doing traditional reciprocal multiplication and + * opportunistically comparing the lower half to ceil itself, before + * falling back to computing a larger bound, and then rejecting samples + * whose lower half would indicate a range indivisible by ceil. The use + * of `-ceil % ceil` is analogous to `2^32 % ceil`, but is computable + * in 32-bits. + */ + u32 rand = get_random_u32(); + u64 mult; + + /* + * This function is technically undefined for ceil == 0, and in fact + * for the non-underscored constant version in the header, we build bug + * on that. But for the non-constant case, it's convenient to have that + * evaluate to being a straight call to get_random_u32(), so that + * get_random_u32_inclusive() can work over its whole range without + * undefined behavior. + */ + if (unlikely(!ceil)) + return rand; + + mult = (u64)ceil * rand; + if (unlikely((u32)mult < ceil)) { + u32 bound = -ceil % ceil; + while (unlikely((u32)mult < bound)) + mult = (u64)ceil * get_random_u32(); + } + return mult >> 32; +} +EXPORT_SYMBOL(__get_random_u32_below); + +#ifdef CONFIG_SMP +/* + * This function is called when the CPU is coming up, with entry + * CPUHP_RANDOM_PREPARE, which comes before CPUHP_WORKQUEUE_PREP. + */ +int __cold random_prepare_cpu(unsigned int cpu) +{ + /* + * When the cpu comes back online, immediately invalidate both + * the per-cpu crng and all batches, so that we serve fresh + * randomness. + */ + per_cpu_ptr(&crngs, cpu)->generation = ULONG_MAX; + per_cpu_ptr(&batched_entropy_u8, cpu)->position = UINT_MAX; + per_cpu_ptr(&batched_entropy_u16, cpu)->position = UINT_MAX; + per_cpu_ptr(&batched_entropy_u32, cpu)->position = UINT_MAX; + per_cpu_ptr(&batched_entropy_u64, cpu)->position = UINT_MAX; + return 0; +} +#endif + + +/********************************************************************** + * + * Entropy accumulation and extraction routines. + * + * Callers may add entropy via: + * + * static void mix_pool_bytes(const void *buf, size_t len) + * + * After which, if added entropy should be credited: + * + * static void credit_init_bits(size_t bits) + * + * Finally, extract entropy via: + * + * static void extract_entropy(void *buf, size_t len) + * + **********************************************************************/ + +enum { + POOL_BITS = BLAKE2S_HASH_SIZE * 8, + POOL_READY_BITS = POOL_BITS, /* When crng_init->CRNG_READY */ + POOL_EARLY_BITS = POOL_READY_BITS / 2 /* When crng_init->CRNG_EARLY */ +}; + +static struct { + struct blake2s_ctx hash; + spinlock_t lock; + unsigned int init_bits; +} input_pool = { + .hash.h = { BLAKE2S_IV0 ^ (0x01010000 | BLAKE2S_HASH_SIZE), + BLAKE2S_IV1, BLAKE2S_IV2, BLAKE2S_IV3, BLAKE2S_IV4, + BLAKE2S_IV5, BLAKE2S_IV6, BLAKE2S_IV7 }, + .hash.outlen = BLAKE2S_HASH_SIZE, + .lock = __SPIN_LOCK_UNLOCKED(input_pool.lock), +}; + +static void _mix_pool_bytes(const void *buf, size_t len) +{ + blake2s_update(&input_pool.hash, buf, len); +} + +/* + * This function adds bytes into the input pool. It does not + * update the initialization bit counter; the caller should call + * credit_init_bits if this is appropriate. + */ +static void mix_pool_bytes(const void *buf, size_t len) +{ + unsigned long flags; + + spin_lock_irqsave(&input_pool.lock, flags); + _mix_pool_bytes(buf, len); + spin_unlock_irqrestore(&input_pool.lock, flags); +} + +/* + * This is an HKDF-like construction for using the hashed collected entropy + * as a PRF key, that's then expanded block-by-block. + */ +static void extract_entropy(void *buf, size_t len) +{ + unsigned long flags; + u8 seed[BLAKE2S_HASH_SIZE], next_key[BLAKE2S_HASH_SIZE]; + struct { + unsigned long rdseed[32 / sizeof(long)]; + size_t counter; + } block; + size_t i, longs; + + for (i = 0; i < ARRAY_SIZE(block.rdseed);) { + longs = arch_get_random_seed_longs(&block.rdseed[i], ARRAY_SIZE(block.rdseed) - i); + if (longs) { + i += longs; + continue; + } + longs = arch_get_random_longs(&block.rdseed[i], ARRAY_SIZE(block.rdseed) - i); + if (longs) { + i += longs; + continue; + } + block.rdseed[i++] = random_get_entropy(); + } + + spin_lock_irqsave(&input_pool.lock, flags); + + /* seed = HASHPRF(last_key, entropy_input) */ + blake2s_final(&input_pool.hash, seed); + + /* next_key = HASHPRF(seed, RDSEED || 0) */ + block.counter = 0; + blake2s(seed, sizeof(seed), (const u8 *)&block, sizeof(block), next_key, sizeof(next_key)); + blake2s_init_key(&input_pool.hash, BLAKE2S_HASH_SIZE, next_key, sizeof(next_key)); + + spin_unlock_irqrestore(&input_pool.lock, flags); + memzero_explicit(next_key, sizeof(next_key)); + + while (len) { + i = min_t(size_t, len, BLAKE2S_HASH_SIZE); + /* output = HASHPRF(seed, RDSEED || ++counter) */ + ++block.counter; + blake2s(seed, sizeof(seed), (const u8 *)&block, sizeof(block), buf, i); + len -= i; + buf += i; + } + + memzero_explicit(seed, sizeof(seed)); + memzero_explicit(&block, sizeof(block)); +} + +#define credit_init_bits(bits) if (!crng_ready()) _credit_init_bits(bits) + +static void __cold _credit_init_bits(size_t bits) +{ + static DECLARE_WORK(set_ready, crng_set_ready); + unsigned int new, orig, add; + unsigned long flags; + int m; + + if (!bits) + return; + + add = min_t(size_t, bits, POOL_BITS); + + orig = READ_ONCE(input_pool.init_bits); + do { + new = min_t(unsigned int, POOL_BITS, orig + add); + } while (!try_cmpxchg(&input_pool.init_bits, &orig, new)); + + if (orig < POOL_READY_BITS && new >= POOL_READY_BITS) { + crng_reseed(NULL); /* Sets crng_init to CRNG_READY under base_crng.lock. */ + if (system_dfl_wq) + queue_work(system_dfl_wq, &set_ready); + atomic_notifier_call_chain(&random_ready_notifier, 0, NULL); +#ifdef CONFIG_VDSO_GETRANDOM + WRITE_ONCE(vdso_k_rng_data->is_ready, true); +#endif + wake_up_interruptible(&crng_init_wait); + kill_fasync(&fasync, SIGIO, POLL_IN); + pr_notice("crng init done\n"); + m = ratelimit_state_get_miss(&urandom_warning); + if (m) + pr_notice("%d urandom warning(s) missed due to ratelimiting\n", m); + } else if (orig < POOL_EARLY_BITS && new >= POOL_EARLY_BITS) { + spin_lock_irqsave(&base_crng.lock, flags); + /* Check if crng_init is CRNG_EMPTY, to avoid race with crng_reseed(). */ + if (crng_init == CRNG_EMPTY) { + extract_entropy(base_crng.key, sizeof(base_crng.key)); + crng_init = CRNG_EARLY; + } + spin_unlock_irqrestore(&base_crng.lock, flags); + } +} + + +/********************************************************************** + * + * Entropy collection routines. + * + * The following exported functions are used for pushing entropy into + * the above entropy accumulation routines: + * + * void add_device_randomness(const void *buf, size_t len); + * void add_hwgenerator_randomness(const void *buf, size_t len, size_t entropy, bool sleep_after); + * void add_bootloader_randomness(const void *buf, size_t len); + * void add_vmfork_randomness(const void *unique_vm_id, size_t len); + * void add_interrupt_randomness(int irq); + * void add_input_randomness(unsigned int type, unsigned int code, unsigned int value); + * void add_disk_randomness(struct gendisk *disk); + * + * add_device_randomness() adds data to the input pool that + * is likely to differ between two devices (or possibly even per boot). + * This would be things like MAC addresses or serial numbers, or the + * read-out of the RTC. This does *not* credit any actual entropy to + * the pool, but it initializes the pool to different values for devices + * that might otherwise be identical and have very little entropy + * available to them (particularly common in the embedded world). + * + * add_hwgenerator_randomness() is for true hardware RNGs, and will credit + * entropy as specified by the caller. If the entropy pool is full it will + * block until more entropy is needed. + * + * add_bootloader_randomness() is called by bootloader drivers, such as EFI + * and device tree, and credits its input depending on whether or not the + * command line option 'random.trust_bootloader' is set. + * + * add_vmfork_randomness() adds a unique (but not necessarily secret) ID + * representing the current instance of a VM to the pool, without crediting, + * and then force-reseeds the crng so that it takes effect immediately. + * + * add_interrupt_randomness() uses the interrupt timing as random + * inputs to the entropy pool. Using the cycle counters and the irq source + * as inputs, it feeds the input pool roughly once a second or after 64 + * interrupts, crediting 1 bit of entropy for whichever comes first. + * + * add_input_randomness() uses the input layer interrupt timing, as well + * as the event type information from the hardware. + * + * add_disk_randomness() uses what amounts to the seek time of block + * layer request events, on a per-disk_devt basis, as input to the + * entropy pool. Note that high-speed solid state drives with very low + * seek times do not make for good sources of entropy, as their seek + * times are usually fairly consistent. + * + * The last two routines try to estimate how many bits of entropy + * to credit. They do this by keeping track of the first and second + * order deltas of the event timings. + * + **********************************************************************/ + +static bool trust_cpu __initdata = true; +static bool trust_bootloader __initdata = true; +static int __init parse_trust_cpu(char *arg) +{ + return kstrtobool(arg, &trust_cpu); +} +static int __init parse_trust_bootloader(char *arg) +{ + return kstrtobool(arg, &trust_bootloader); +} +early_param("random.trust_cpu", parse_trust_cpu); +early_param("random.trust_bootloader", parse_trust_bootloader); + +static int random_pm_notification(struct notifier_block *nb, unsigned long action, void *data) +{ + unsigned long flags, entropy = random_get_entropy(); + + /* + * Encode a representation of how long the system has been suspended, + * in a way that is distinct from prior system suspends. + */ + ktime_t stamps[] = { ktime_get(), ktime_get_boottime(), ktime_get_real() }; + + spin_lock_irqsave(&input_pool.lock, flags); + _mix_pool_bytes(&action, sizeof(action)); + _mix_pool_bytes(stamps, sizeof(stamps)); + _mix_pool_bytes(&entropy, sizeof(entropy)); + spin_unlock_irqrestore(&input_pool.lock, flags); + + if (crng_ready() && (action == PM_RESTORE_PREPARE || + (action == PM_POST_SUSPEND && !IS_ENABLED(CONFIG_PM_AUTOSLEEP) && + !IS_ENABLED(CONFIG_PM_USERSPACE_AUTOSLEEP)))) { + crng_reseed(NULL); + pr_notice("crng reseeded on system resumption\n"); + } + return 0; +} + +static struct notifier_block pm_notifier = { .notifier_call = random_pm_notification }; + +/* + * This is called extremely early, before time keeping functionality is + * available, but arch randomness is. Interrupts are not yet enabled. + */ +void __init random_init_early(const char *command_line) +{ + unsigned long entropy[BLAKE2S_BLOCK_SIZE / sizeof(long)]; + size_t i, longs, arch_bits; + +#if defined(LATENT_ENTROPY_PLUGIN) + static const u8 compiletime_seed[BLAKE2S_BLOCK_SIZE] __initconst __latent_entropy; + _mix_pool_bytes(compiletime_seed, sizeof(compiletime_seed)); +#endif + + for (i = 0, arch_bits = sizeof(entropy) * 8; i < ARRAY_SIZE(entropy);) { + longs = arch_get_random_seed_longs(entropy, ARRAY_SIZE(entropy) - i); + if (longs) { + _mix_pool_bytes(entropy, sizeof(*entropy) * longs); + i += longs; + continue; + } + longs = arch_get_random_longs(entropy, ARRAY_SIZE(entropy) - i); + if (longs) { + _mix_pool_bytes(entropy, sizeof(*entropy) * longs); + i += longs; + continue; + } + arch_bits -= sizeof(*entropy) * 8; + ++i; + } + + _mix_pool_bytes(init_utsname(), sizeof(*(init_utsname()))); + _mix_pool_bytes(command_line, strlen(command_line)); + + /* Reseed if already seeded by earlier phases. */ + if (crng_ready()) + crng_reseed(NULL); + else if (trust_cpu) + _credit_init_bits(arch_bits); +} + +/* + * This is called a little bit after the prior function, and now there is + * access to timestamps counters. Interrupts are not yet enabled. + */ +void __init random_init(void) +{ + unsigned long entropy = random_get_entropy(); + ktime_t now = ktime_get_real(); + + _mix_pool_bytes(&now, sizeof(now)); + _mix_pool_bytes(&entropy, sizeof(entropy)); + add_latent_entropy(); + + /* + * If we were initialized by the cpu or bootloader before workqueues + * are initialized, then we should enable the static branch here. + */ + if (!static_branch_likely(&crng_is_ready) && crng_init >= CRNG_READY) + crng_set_ready(NULL); + + /* Reseed if already seeded by earlier phases. */ + if (crng_ready()) + crng_reseed(NULL); + + WARN_ON(register_pm_notifier(&pm_notifier)); + + WARN(!entropy, "Missing cycle counter and fallback timer; RNG " + "entropy collection will consequently suffer."); +} + +/* + * Add device- or boot-specific data to the input pool to help + * initialize it. + * + * None of this adds any entropy; it is meant to avoid the problem of + * the entropy pool having similar initial state across largely + * identical devices. + */ +void add_device_randomness(const void *buf, size_t len) +{ + unsigned long entropy = random_get_entropy(); + unsigned long flags; + + spin_lock_irqsave(&input_pool.lock, flags); + _mix_pool_bytes(&entropy, sizeof(entropy)); + _mix_pool_bytes(buf, len); + spin_unlock_irqrestore(&input_pool.lock, flags); +} +EXPORT_SYMBOL(add_device_randomness); + +/* + * Interface for in-kernel drivers of true hardware RNGs. Those devices + * may produce endless random bits, so this function will sleep for + * some amount of time after, if the sleep_after parameter is true. + */ +void add_hwgenerator_randomness(const void *buf, size_t len, size_t entropy, bool sleep_after) +{ + mix_pool_bytes(buf, len); + credit_init_bits(entropy); + + /* + * Throttle writing to once every reseed interval, unless we're not yet + * initialized or no entropy is credited. + */ + if (sleep_after && !kthread_should_stop() && (crng_ready() || !entropy)) + schedule_timeout_interruptible(crng_reseed_interval()); +} +EXPORT_SYMBOL_GPL(add_hwgenerator_randomness); + +/* + * Handle random seed passed by bootloader, and credit it depending + * on the command line option 'random.trust_bootloader'. + */ +void __init add_bootloader_randomness(const void *buf, size_t len) +{ + mix_pool_bytes(buf, len); + if (trust_bootloader) + credit_init_bits(len * 8); +} + +#if IS_ENABLED(CONFIG_VMGENID) +static BLOCKING_NOTIFIER_HEAD(vmfork_chain); + +/* + * Handle a new unique VM ID, which is unique, not secret, so we + * don't credit it, but we do immediately force a reseed after so + * that it's used by the crng posthaste. + */ +void __cold add_vmfork_randomness(const void *unique_vm_id, size_t len) +{ + add_device_randomness(unique_vm_id, len); + if (crng_ready()) { + crng_reseed(NULL); + pr_notice("crng reseeded due to virtual machine fork\n"); + } + blocking_notifier_call_chain(&vmfork_chain, 0, NULL); +} +#if IS_MODULE(CONFIG_VMGENID) +EXPORT_SYMBOL_GPL(add_vmfork_randomness); +#endif + +int __cold register_random_vmfork_notifier(struct notifier_block *nb) +{ + return blocking_notifier_chain_register(&vmfork_chain, nb); +} +EXPORT_SYMBOL_GPL(register_random_vmfork_notifier); + +int __cold unregister_random_vmfork_notifier(struct notifier_block *nb) +{ + return blocking_notifier_chain_unregister(&vmfork_chain, nb); +} +EXPORT_SYMBOL_GPL(unregister_random_vmfork_notifier); +#endif + +struct fast_pool { + unsigned long pool[4]; + unsigned long last; + unsigned int count; + struct timer_list mix; +}; + +static void mix_interrupt_randomness(struct timer_list *work); + +static DEFINE_PER_CPU(struct fast_pool, irq_randomness) = { +#ifdef CONFIG_64BIT +#define FASTMIX_PERM SIPHASH_PERMUTATION + .pool = { SIPHASH_CONST_0, SIPHASH_CONST_1, SIPHASH_CONST_2, SIPHASH_CONST_3 }, +#else +#define FASTMIX_PERM HSIPHASH_PERMUTATION + .pool = { HSIPHASH_CONST_0, HSIPHASH_CONST_1, HSIPHASH_CONST_2, HSIPHASH_CONST_3 }, +#endif + .mix = __TIMER_INITIALIZER(mix_interrupt_randomness, 0) +}; + +/* + * This is [Half]SipHash-1-x, starting from an empty key. Because + * the key is fixed, it assumes that its inputs are non-malicious, + * and therefore this has no security on its own. s represents the + * four-word SipHash state, while v represents a two-word input. + */ +static void fast_mix(unsigned long s[4], unsigned long v1, unsigned long v2) +{ + s[3] ^= v1; + FASTMIX_PERM(s[0], s[1], s[2], s[3]); + s[0] ^= v1; + s[3] ^= v2; + FASTMIX_PERM(s[0], s[1], s[2], s[3]); + s[0] ^= v2; +} + +#ifdef CONFIG_SMP +/* + * This function is called when the CPU has just come online, with + * entry CPUHP_AP_RANDOM_ONLINE, just after CPUHP_AP_WORKQUEUE_ONLINE. + */ +int __cold random_online_cpu(unsigned int cpu) +{ + /* + * During CPU shutdown and before CPU onlining, add_interrupt_ + * randomness() may schedule mix_interrupt_randomness(), and + * set the MIX_INFLIGHT flag. However, because the worker can + * be scheduled on a different CPU during this period, that + * flag will never be cleared. For that reason, we zero out + * the flag here, which runs just after workqueues are onlined + * for the CPU again. This also has the effect of setting the + * irq randomness count to zero so that new accumulated irqs + * are fresh. + */ + per_cpu_ptr(&irq_randomness, cpu)->count = 0; + return 0; +} +#endif + +static void mix_interrupt_randomness(struct timer_list *work) +{ + struct fast_pool *fast_pool = container_of(work, struct fast_pool, mix); + /* + * The size of the copied stack pool is explicitly 2 longs so that we + * only ever ingest half of the siphash output each time, retaining + * the other half as the next "key" that carries over. The entropy is + * supposed to be sufficiently dispersed between bits so on average + * we don't wind up "losing" some. + */ + unsigned long pool[2]; + unsigned int count; + + /* Check to see if we're running on the wrong CPU due to hotplug. */ + local_irq_disable(); + if (fast_pool != this_cpu_ptr(&irq_randomness)) { + local_irq_enable(); + return; + } + + /* + * Copy the pool to the stack so that the mixer always has a + * consistent view, before we reenable irqs again. + */ + memcpy(pool, fast_pool->pool, sizeof(pool)); + count = fast_pool->count; + fast_pool->count = 0; + fast_pool->last = jiffies; + local_irq_enable(); + + mix_pool_bytes(pool, sizeof(pool)); + credit_init_bits(clamp_t(unsigned int, (count & U16_MAX) / 64, 1, sizeof(pool) * 8)); + + memzero_explicit(pool, sizeof(pool)); +} + +void add_interrupt_randomness(int irq) +{ + enum { MIX_INFLIGHT = 1U << 31 }; + unsigned long entropy = random_get_entropy(); + struct fast_pool *fast_pool = this_cpu_ptr(&irq_randomness); + struct pt_regs *regs = get_irq_regs(); + unsigned int new_count; + + fast_mix(fast_pool->pool, entropy, + (regs ? instruction_pointer(regs) : _RET_IP_) ^ swab(irq)); + new_count = ++fast_pool->count; + + if (new_count & MIX_INFLIGHT) + return; + + if (new_count < 1024 && !time_is_before_jiffies(fast_pool->last + HZ)) + return; + + fast_pool->count |= MIX_INFLIGHT; + if (!timer_pending(&fast_pool->mix)) { + fast_pool->mix.expires = jiffies; + add_timer_on(&fast_pool->mix, raw_smp_processor_id()); + } +} +EXPORT_SYMBOL_GPL(add_interrupt_randomness); + +/* There is one of these per entropy source */ +struct timer_rand_state { + unsigned long last_time; + long last_delta, last_delta2; +}; + +/* + * This function adds entropy to the entropy "pool" by using timing + * delays. It uses the timer_rand_state structure to make an estimate + * of how many bits of entropy this call has added to the pool. The + * value "num" is also added to the pool; it should somehow describe + * the type of event that just happened. + */ +static void add_timer_randomness(struct timer_rand_state *state, unsigned int num) +{ + unsigned long entropy = random_get_entropy(), now = jiffies, flags; + long delta, delta2, delta3; + unsigned int bits; + + /* + * If we're in a hard IRQ, add_interrupt_randomness() will be called + * sometime after, so mix into the fast pool. + */ + if (in_hardirq()) { + fast_mix(this_cpu_ptr(&irq_randomness)->pool, entropy, num); + } else { + spin_lock_irqsave(&input_pool.lock, flags); + _mix_pool_bytes(&entropy, sizeof(entropy)); + _mix_pool_bytes(&num, sizeof(num)); + spin_unlock_irqrestore(&input_pool.lock, flags); + } + + if (crng_ready()) + return; + + /* + * Calculate number of bits of randomness we probably added. + * We take into account the first, second and third-order deltas + * in order to make our estimate. + */ + delta = now - READ_ONCE(state->last_time); + WRITE_ONCE(state->last_time, now); + + delta2 = delta - READ_ONCE(state->last_delta); + WRITE_ONCE(state->last_delta, delta); + + delta3 = delta2 - READ_ONCE(state->last_delta2); + WRITE_ONCE(state->last_delta2, delta2); + + if (delta < 0) + delta = -delta; + if (delta2 < 0) + delta2 = -delta2; + if (delta3 < 0) + delta3 = -delta3; + if (delta > delta2) + delta = delta2; + if (delta > delta3) + delta = delta3; + + /* + * delta is now minimum absolute delta. Round down by 1 bit + * on general principles, and limit entropy estimate to 11 bits. + */ + bits = min(fls(delta >> 1), 11); + + /* + * As mentioned above, if we're in a hard IRQ, add_interrupt_randomness() + * will run after this, which uses a different crediting scheme of 1 bit + * per every 64 interrupts. In order to let that function do accounting + * close to the one in this function, we credit a full 64/64 bit per bit, + * and then subtract one to account for the extra one added. + */ + if (in_hardirq()) + this_cpu_ptr(&irq_randomness)->count += max(1u, bits * 64) - 1; + else + _credit_init_bits(bits); +} + +void add_input_randomness(unsigned int type, unsigned int code, unsigned int value) +{ + static unsigned char last_value; + static struct timer_rand_state input_timer_state = { INITIAL_JIFFIES }; + + /* Ignore autorepeat and the like. */ + if (value == last_value) + return; + + last_value = value; + add_timer_randomness(&input_timer_state, + (type << 4) ^ code ^ (code >> 4) ^ value); +} +EXPORT_SYMBOL_GPL(add_input_randomness); + +#ifdef CONFIG_BLOCK +void add_disk_randomness(struct gendisk *disk) +{ + if (!disk || !disk->random) + return; + /* First major is 1, so we get >= 0x200 here. */ + add_timer_randomness(disk->random, 0x100 + disk_devt(disk)); +} +EXPORT_SYMBOL_GPL(add_disk_randomness); + +void __cold rand_initialize_disk(struct gendisk *disk) +{ + struct timer_rand_state *state; + + /* + * If kzalloc returns null, we just won't use that entropy + * source. + */ + state = kzalloc_obj(struct timer_rand_state); + if (state) { + state->last_time = INITIAL_JIFFIES; + disk->random = state; + } +} +#endif + +struct entropy_timer_state { + unsigned long entropy; + struct timer_list timer; + atomic_t samples; + unsigned int samples_per_bit; +}; + +/* + * Each time the timer fires, we expect that we got an unpredictable jump in + * the cycle counter. Even if the timer is running on another CPU, the timer + * activity will be touching the stack of the CPU that is generating entropy. + * + * Note that we don't re-arm the timer in the timer itself - we are happy to be + * scheduled away, since that just makes the load more complex, but we do not + * want the timer to keep ticking unless the entropy loop is running. + * + * So the re-arming always happens in the entropy loop itself. + */ +static void __cold entropy_timer(struct timer_list *timer) +{ + struct entropy_timer_state *state = container_of(timer, struct entropy_timer_state, timer); + unsigned long entropy = random_get_entropy(); + + mix_pool_bytes(&entropy, sizeof(entropy)); + if (atomic_inc_return(&state->samples) % state->samples_per_bit == 0) + credit_init_bits(1); +} + +/* + * If we have an actual cycle counter, see if we can generate enough entropy + * with timing noise. + */ +static void __cold try_to_generate_entropy(void) +{ + enum { NUM_TRIAL_SAMPLES = 8192, MAX_SAMPLES_PER_BIT = HZ / 15 }; + u8 stack_bytes[sizeof(struct entropy_timer_state) + SMP_CACHE_BYTES - 1]; + struct entropy_timer_state *stack = PTR_ALIGN((void *)stack_bytes, SMP_CACHE_BYTES); + unsigned int i, num_different = 0; + unsigned long last = random_get_entropy(); + cpumask_var_t timer_cpus; + int cpu = -1; + + for (i = 0; i < NUM_TRIAL_SAMPLES - 1; ++i) { + stack->entropy = random_get_entropy(); + if (stack->entropy != last) + ++num_different; + last = stack->entropy; + } + stack->samples_per_bit = DIV_ROUND_UP(NUM_TRIAL_SAMPLES, num_different + 1); + if (stack->samples_per_bit > MAX_SAMPLES_PER_BIT) + return; + + atomic_set(&stack->samples, 0); + timer_setup_on_stack(&stack->timer, entropy_timer, 0); + if (!alloc_cpumask_var(&timer_cpus, GFP_KERNEL)) + goto out; + + while (!crng_ready() && !signal_pending(current)) { + /* + * Check !timer_pending() and then ensure that any previous callback has finished + * executing by checking timer_delete_sync_try(), before queueing the next one. + */ + if (!timer_pending(&stack->timer) && timer_delete_sync_try(&stack->timer) >= 0) { + unsigned int num_cpus; + + /* + * Preemption must be disabled here, both to read the current CPU number + * and to avoid scheduling a timer on a dead CPU. + */ + preempt_disable(); + + /* Only schedule callbacks on timer CPUs that are online. */ + cpumask_and(timer_cpus, housekeeping_cpumask(HK_TYPE_TIMER), cpu_online_mask); + num_cpus = cpumask_weight(timer_cpus); + /* In very bizarre case of misconfiguration, fallback to all online. */ + if (unlikely(num_cpus == 0)) { + *timer_cpus = *cpu_online_mask; + num_cpus = cpumask_weight(timer_cpus); + } + + /* Basic CPU round-robin, which avoids the current CPU. */ + do { + cpu = cpumask_next(cpu, timer_cpus); + if (cpu >= nr_cpu_ids) + cpu = cpumask_first(timer_cpus); + } while (cpu == smp_processor_id() && num_cpus > 1); + + /* Expiring the timer at `jiffies` means it's the next tick. */ + stack->timer.expires = jiffies; + + add_timer_on(&stack->timer, cpu); + + preempt_enable(); + } + mix_pool_bytes(&stack->entropy, sizeof(stack->entropy)); + schedule(); + stack->entropy = random_get_entropy(); + } + mix_pool_bytes(&stack->entropy, sizeof(stack->entropy)); + + free_cpumask_var(timer_cpus); +out: + timer_delete_sync(&stack->timer); + timer_destroy_on_stack(&stack->timer); +} + + +/********************************************************************** + * + * Userspace reader/writer interfaces. + * + * getrandom(2) is the primary modern interface into the RNG and should + * be used in preference to anything else. + * + * Reading from /dev/random has the same functionality as calling + * getrandom(2) with flags=0. In earlier versions, however, it had + * vastly different semantics and should therefore be avoided, to + * prevent backwards compatibility issues. + * + * Reading from /dev/urandom has the same functionality as calling + * getrandom(2) with flags=GRND_INSECURE. Because it does not block + * waiting for the RNG to be ready, it should not be used. + * + * Writing to either /dev/random or /dev/urandom adds entropy to + * the input pool but does not credit it. + * + * Polling on /dev/random indicates when the RNG is initialized, on + * the read side, and when it wants new entropy, on the write side. + * + * Both /dev/random and /dev/urandom have the same set of ioctls for + * adding entropy, getting the entropy count, zeroing the count, and + * reseeding the crng. + * + **********************************************************************/ + +SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags) +{ + struct iov_iter iter; + int ret; + + if (flags & ~(GRND_NONBLOCK | GRND_RANDOM | GRND_INSECURE)) + return -EINVAL; + + /* + * Requesting insecure and blocking randomness at the same time makes + * no sense. + */ + if ((flags & (GRND_INSECURE | GRND_RANDOM)) == (GRND_INSECURE | GRND_RANDOM)) + return -EINVAL; + + if (!crng_ready() && !(flags & GRND_INSECURE)) { + if (flags & GRND_NONBLOCK) + return -EAGAIN; + ret = wait_for_random_bytes(); + if (unlikely(ret)) + return ret; + } + + ret = import_ubuf(ITER_DEST, ubuf, len, &iter); + if (unlikely(ret)) + return ret; + return get_random_bytes_user(&iter); +} + +static __poll_t random_poll(struct file *file, poll_table *wait) +{ + poll_wait(file, &crng_init_wait, wait); + return crng_ready() ? EPOLLIN | EPOLLRDNORM : EPOLLOUT | EPOLLWRNORM; +} + +static ssize_t write_pool_user(struct iov_iter *iter) +{ + u8 block[BLAKE2S_BLOCK_SIZE]; + ssize_t ret = 0; + size_t copied; + + if (unlikely(!iov_iter_count(iter))) + return 0; + + for (;;) { + copied = copy_from_iter(block, sizeof(block), iter); + ret += copied; + mix_pool_bytes(block, copied); + if (!iov_iter_count(iter) || copied != sizeof(block)) + break; + + BUILD_BUG_ON(PAGE_SIZE % sizeof(block) != 0); + if (ret % PAGE_SIZE == 0) { + if (signal_pending(current)) + break; + cond_resched(); + } + } + + memzero_explicit(block, sizeof(block)); + return ret ? ret : -EFAULT; +} + +static ssize_t random_write_iter(struct kiocb *kiocb, struct iov_iter *iter) +{ + return write_pool_user(iter); +} + +static ssize_t urandom_read_iter(struct kiocb *kiocb, struct iov_iter *iter) +{ + static int maxwarn = 10; + + /* + * Opportunistically attempt to initialize the RNG on platforms that + * have fast cycle counters, but don't (for now) require it to succeed. + */ + if (!crng_ready()) + try_to_generate_entropy(); + + if (!crng_ready()) { + if (!ratelimit_disable && maxwarn <= 0) + ratelimit_state_inc_miss(&urandom_warning); + else if (ratelimit_disable || __ratelimit(&urandom_warning)) { + --maxwarn; + pr_notice("%s: uninitialized urandom read (%zu bytes read)\n", + current->comm, iov_iter_count(iter)); + } + } + + return get_random_bytes_user(iter); +} + +static ssize_t random_read_iter(struct kiocb *kiocb, struct iov_iter *iter) +{ + int ret; + + if (!crng_ready() && + ((kiocb->ki_flags & (IOCB_NOWAIT | IOCB_NOIO)) || + (kiocb->ki_filp->f_flags & O_NONBLOCK))) + return -EAGAIN; + + ret = wait_for_random_bytes(); + if (ret != 0) + return ret; + return get_random_bytes_user(iter); +} + +static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg) +{ + int __user *p = (int __user *)arg; + int ent_count; + + switch (cmd) { + case RNDGETENTCNT: + /* Inherently racy, no point locking. */ + if (put_user(input_pool.init_bits, p)) + return -EFAULT; + return 0; + case RNDADDTOENTCNT: + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + if (get_user(ent_count, p)) + return -EFAULT; + if (ent_count < 0) + return -EINVAL; + credit_init_bits(ent_count); + return 0; + case RNDADDENTROPY: { + struct iov_iter iter; + ssize_t ret; + int len; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + if (get_user(ent_count, p++)) + return -EFAULT; + if (ent_count < 0) + return -EINVAL; + if (get_user(len, p++)) + return -EFAULT; + ret = import_ubuf(ITER_SOURCE, p, len, &iter); + if (unlikely(ret)) + return ret; + ret = write_pool_user(&iter); + if (unlikely(ret < 0)) + return ret; + /* Since we're crediting, enforce that it was all written into the pool. */ + if (unlikely(ret != len)) + return -EFAULT; + credit_init_bits(ent_count); + return 0; + } + case RNDZAPENTCNT: + case RNDCLEARPOOL: + /* No longer has any effect. */ + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + return 0; + case RNDRESEEDCRNG: + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + if (!crng_ready()) + return -ENODATA; + crng_reseed(NULL); + return 0; + default: + return -EINVAL; + } +} + +static int random_fasync(int fd, struct file *filp, int on) +{ + return fasync_helper(fd, filp, on, &fasync); +} + +const struct file_operations random_fops = { + .read_iter = random_read_iter, + .write_iter = random_write_iter, + .poll = random_poll, + .unlocked_ioctl = random_ioctl, + .compat_ioctl = compat_ptr_ioctl, + .fasync = random_fasync, + .llseek = noop_llseek, + .splice_read = copy_splice_read, + .splice_write = iter_file_splice_write, +}; + +const struct file_operations urandom_fops = { + .read_iter = urandom_read_iter, + .write_iter = random_write_iter, + .unlocked_ioctl = random_ioctl, + .compat_ioctl = compat_ptr_ioctl, + .fasync = random_fasync, + .llseek = noop_llseek, + .splice_read = copy_splice_read, + .splice_write = iter_file_splice_write, +}; + + +/******************************************************************** + * + * Sysctl interface. + * + * These are partly unused legacy knobs with dummy values to not break + * userspace and partly still useful things. They are usually accessible + * in /proc/sys/kernel/random/ and are as follows: + * + * - boot_id - a UUID representing the current boot. + * + * - uuid - a random UUID, different each time the file is read. + * + * - poolsize - the number of bits of entropy that the input pool can + * hold, tied to the POOL_BITS constant. + * + * - entropy_avail - the number of bits of entropy currently in the + * input pool. Always <= poolsize. + * + * - write_wakeup_threshold - the amount of entropy in the input pool + * below which write polls to /dev/random will unblock, requesting + * more entropy, tied to the POOL_READY_BITS constant. It is writable + * to avoid breaking old userspaces, but writing to it does not + * change any behavior of the RNG. + * + * - urandom_min_reseed_secs - fixed to the value CRNG_RESEED_INTERVAL. + * It is writable to avoid breaking old userspaces, but writing + * to it does not change any behavior of the RNG. + * + ********************************************************************/ + +#ifdef CONFIG_SYSCTL + +#include + +static int sysctl_random_min_urandom_seed = CRNG_RESEED_INTERVAL / HZ; +static int sysctl_random_write_wakeup_bits = POOL_READY_BITS; +static int sysctl_poolsize = POOL_BITS; +static u8 sysctl_bootid[UUID_SIZE]; + +/* + * This function is used to return both the bootid UUID, and random + * UUID. The difference is in whether table->data is NULL; if it is, + * then a new UUID is generated and returned to the user. + */ +static int proc_do_uuid(const struct ctl_table *table, int write, void *buf, + size_t *lenp, loff_t *ppos) +{ + u8 tmp_uuid[UUID_SIZE], *uuid; + char uuid_string[UUID_STRING_LEN + 1]; + struct ctl_table fake_table = { + .data = uuid_string, + .maxlen = UUID_STRING_LEN + }; + + if (write) + return -EPERM; + + uuid = table->data; + if (!uuid) { + uuid = tmp_uuid; + generate_random_uuid(uuid); + } else { + static DEFINE_SPINLOCK(bootid_spinlock); + + spin_lock(&bootid_spinlock); + if (!uuid[8]) + generate_random_uuid(uuid); + spin_unlock(&bootid_spinlock); + } + + snprintf(uuid_string, sizeof(uuid_string), "%pU", uuid); + return proc_dostring(&fake_table, 0, buf, lenp, ppos); +} + +/* The same as proc_dointvec, but writes don't change anything. */ +static int proc_do_rointvec(const struct ctl_table *table, int write, void *buf, + size_t *lenp, loff_t *ppos) +{ + return write ? 0 : proc_dointvec(table, 0, buf, lenp, ppos); +} + +static const struct ctl_table random_table[] = { + { + .procname = "poolsize", + .data = &sysctl_poolsize, + .maxlen = sizeof(int), + .mode = 0444, + .proc_handler = proc_dointvec, + }, + { + .procname = "entropy_avail", + .data = &input_pool.init_bits, + .maxlen = sizeof(int), + .mode = 0444, + .proc_handler = proc_dointvec, + }, + { + .procname = "write_wakeup_threshold", + .data = &sysctl_random_write_wakeup_bits, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_do_rointvec, + }, + { + .procname = "urandom_min_reseed_secs", + .data = &sysctl_random_min_urandom_seed, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_do_rointvec, + }, + { + .procname = "boot_id", + .data = &sysctl_bootid, + .mode = 0444, + .proc_handler = proc_do_uuid, + }, + { + .procname = "uuid", + .mode = 0444, + .proc_handler = proc_do_uuid, + }, +}; + +/* + * random_init() is called before sysctl_init(), + * so we cannot call register_sysctl_init() in random_init() + */ +static int __init random_sysctls_init(void) +{ + register_sysctl_init("kernel/random", random_table); + return 0; +} +device_initcall(random_sysctls_init); +#endif diff --git a/research/h25-c05-at-random-producer-events/inputs/input-020.data b/research/h25-c05-at-random-producer-events/inputs/input-020.data new file mode 100644 index 0000000000..411f93aeca --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-020.data @@ -0,0 +1,915 @@ +{ + "P2_P3_P4_claimed": false, + "admission": { + "costs": "OPEN_NOT_ZERO", + "full_C05": false, + "full_V03": false, + "installer_or_policy_loaded": false, + "new_scientific_budget": false, + "original_activity_credit_added": 0, + "original_completion_percent": 43.5, + "original_denominators_limits_unchanged": true, + "policy_or_instance_selected": false + }, + "authorship_and_licenses": "Retainedexactsourcecopyright/SPDXnotices,COPYING,GPL-2.0andLinux-syscall-note,AppArmorLICENSE+debian/copyright; existingChrisR/Clear1nsight,Pro/Codex/SolMax,PR6321/6029/5864,unpaidmoon/CursorGrokPR6339,DouglasR.Colkittlineagepreserved.", + "complete_P1_claimed": false, + "control_input_receipts": [ + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/HOST-PACKAGE-FACTS-v1.json", + "sha256": "d942241a0e6c6a639cc0b864f3d45ca16d68949f2766e5c936f5095db6a71256", + "size_bytes": 1741 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/SOURCE-CONTROL-ASSOCIATION-v1.json", + "sha256": "2eb7b9217bdaeeec5692725d457b4dffa207d5c5465aa5e647aec510e003c92d", + "size_bytes": 2570 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/sourcepublication-linux.data", + "sha256": "b13dda99ae06c0760d32a0ece4b8a0ccac015603ea6839515b265434ef0e34fb", + "size_bytes": 2706 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/linux-dsc.data", + "sha256": "6c1ca3791021ad23375f330c69fd9dee96265f577819aea19d0a6a8fbad62a00", + "size_bytes": 6439 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/signed-kernel-dsc.data", + "sha256": "ca636f63e146513b61604c22b1c2ec41bd511ba3a739b2841a5e567b14afde90", + "size_bytes": 2742 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/apparmor-dsc.data", + "sha256": "3b43e3d2f3157c06084590cc1e86b38e7e285c3b292ccfd9834515a48aed79d3", + "size_bytes": 3434 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/kernel-repository-metadata.data", + "sha256": "476969a5757d2d7c27f36df0a42fe37f0854c02661f1d1298ecb9a4e846a2b58", + "size_bytes": 2514 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/kernel-cgit-root.data", + "sha256": "82449d065e88731549dc0caff2a44283d79a1bc2fa1c05b40275c4dc7d288392", + "size_bytes": 27120 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/EXACT-SOURCE-ACQUISITION-v1.json", + "sha256": "da7ad90b4e0e0c428d10aafd547768d194deb2cc5eb6bbf43daaa9bbfed040da", + "size_bytes": 24517 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/ADDITIONAL-EXACT-SOURCE-ACQUISITION-v1.json", + "sha256": "f396186217193d69aa024a8e4b77f0c62d64d573bc77a51ce882fac8fcdc310c", + "size_bytes": 13387 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/APPARMOR-ARCHIVE-ACQUISITION-v1.json", + "sha256": "5c51f2125701fd3efe81ded84988a2a21915cc300dd9559d48560ce93694cf75", + "size_bytes": 2705 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/APPARMOR-SELECTED-SOURCE-FAILURE-v1.json", + "sha256": "5437809e7c57be6d4d17c41057683ede4d78a573fe91eaa5b93469fe22623898", + "size_bytes": 481 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/APPARMOR-SELECTED-SOURCE-v2.json", + "sha256": "39d681f7523ea818a8ea636058eb713f99239c93f0920e989968eb8c22c49156", + "size_bytes": 29047 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/APPARMOR-PATCH-AFFECTEDNESS-v1.json", + "sha256": "8a42aa4f42d4ef93c44c27decef33ede346b123e3124a7c0400fa4417a5fb532", + "size_bytes": 35345 + }, + { + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/APPARMOR-PATCH-AFFECTEDNESS-v2.json", + "sha256": "96ff349bbcbccc5a095d35ee4b097963b150771deb34835c3181301609270ffa", + "size_bytes": 58719 + } + ], + "disposition": "EXACT_SOURCE_INPUT_SUBSET_AVAILABLE_FULL_FEASIBILITY_HOLD", + "exact_apparmor_source_inputs": { + "active_series_patches": 33, + "actual_selected_policy_ABI": "UNSELECTED_UNPROVED", + "affectedness_v1_limitation": "rootprefixed+++pathsnotfullynormalized; parser_misc emptyaffectedlistincompleteandrejected asunaffectednessproof; v2preservesraw+strip1+hunks", + "archive_acquisition_receipt": "APPARMOR-ARCHIVE-ACQUISITION-v1.json", + "debian_selected_files": 40, + "dsc_pinned_source_archives_whole_size_and_SHA_before_parse": true, + "first_failed_archive_root_assumption": "apparmor-4.0.1 vs observedapparmor-v4.0.1; preservedfailure beforecorrectedselectedread", + "installed_parser_semantics_or_policy_ABI_proved": false, + "ordered_all_active_patch_input_files_retained": true, + "patch_headers_plus_hunks_recorded": "APPARMOR-PATCH-AFFECTEDNESS-v2.json", + "patches_executed_or_applied": false, + "relevant_static_fact": "Ubuntu promptingpatchchangesparser main/interface/misc/policy/yacc andotherfiles; selectedupstreamrawfilescannotbeclaimedinstalledbehavior", + "retained_regular_selected_files": 54, + "selected_source_applied_composition_proved": false, + "selected_source_manifest": "APPARMOR-SELECTED-SOURCE-v2.json", + "upstream_selected_files": 14 + }, + "exact_kernel_source": { + "Git_object_reconstruction_or_tag_signature_verified": false, + "advertised_branch_log_404_preserved": true, + "discovered_repository_branch": "hwe-7.0-next", + "dsc_advertised_branch": "hwe-7.0", + "files_requested_by_explicit_exact_commit": true, + "full_orig_archive_acquired": false, + "full_orig_archive_refusal_reason": "declared254937830bytesexceeds67108864bytearchivecap; boundedexactcommitfile route instead", + "full_orig_archive_sha256": "c6343795c8c7e4feff55f5b309365c8e0eaf49cd6abcb412e32315313f149536", + "full_orig_archive_size_bytes": 254937830, + "independent_full_tree_or_reproducible_build_verified": false, + "official_repository": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble", + "primary_HTTPS_tag_commit_and_file_association": true, + "refused_or_failed_files": [ + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:16.063089+00:00", + "exception_type": "ValueError", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/debian.master/changelog?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"changelog\"", + "content-length": "1483023", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:13 GMT", + "etag": "\"03ef030f936d424b1f5afbcc0abfab64e649aeef\"", + "expires": "Thu, 30 Oct 2036 16:39:14 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:14 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "message": "source reader cap exceeded", + "name": "debian.master/changelog", + "outcome": "failure", + "reader_cap": 1048576, + "started_utc": "2026-11-02T16:39:12.848203+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/debian.master/changelog?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + } + ], + "reported_tree": "af2682cb9926390521a9ca1ae825fd3ef55e2857", + "retained_body_count_including_tag_commit_HTML_and_licenses": 25, + "retained_body_records": [ + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:08.429876+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/tag/?h=Ubuntu-hwe-7.0-7.0.0-42.42_24.04.1", + "headers": { + "connection": "close", + "content-type": "text/html; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:07 GMT", + "expires": "Mon, 02 Nov 2026 16:44:08 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:08 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "transfer-encoding": "chunked" + }, + "name": "kernel-exact-tag", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/kernel-exact-tag", + "reader_cap": 1048576, + "sha256": "28bd3a67da1dcee4bf0f87d3b52dd4d755bb0b34677769876afc90a1890a7ecb", + "size_bytes": 15884, + "started_utc": "2026-11-02T16:39:07.043075+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/tag/?h=Ubuntu-hwe-7.0-7.0.0-42.42_24.04.1" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:10.385379+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/commit/?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-type": "text/html; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:07 GMT", + "expires": "Thu, 30 Oct 2036 16:39:08 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:08 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "transfer-encoding": "chunked" + }, + "name": "kernel-exact-commit", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/kernel-exact-commit", + "reader_cap": 1048576, + "sha256": "f4c2391e61e4017e200a2e7f4bd40294c7b6b586172a9aec5e722a61834f98a3", + "size_bytes": 760400, + "started_utc": "2026-11-02T16:39:07.043805+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/commit/?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:09.156516+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/lsm.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"lsm.c\"", + "content-length": "85116", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:07 GMT", + "etag": "\"2f7a33a57dce0f6ac41fb8bc8d3d6def5eb1befd\"", + "expires": "Thu, 30 Oct 2036 16:39:08 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:08 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/lsm.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/lsm.c", + "reader_cap": 1048576, + "sha256": "2ca0d185cb272958c4a8ae7c2da0c923db9648765411187f940443f34c228021", + "size_bytes": 85116, + "started_utc": "2026-11-02T16:39:07.044317+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/lsm.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:08.704383+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/file.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"file.c\"", + "content-length": "27463", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:07 GMT", + "etag": "\"80cd3f95e7bb8f774ff59cf1132195f85461d2ed\"", + "expires": "Thu, 30 Oct 2036 16:39:08 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:08 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/file.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/file.c", + "reader_cap": 1048576, + "sha256": "4e32fb7dcaaef6f5e4f41f638257d2aa462cd68827d6a4a0e9af6db1ad12a5c4", + "size_bytes": 27463, + "started_utc": "2026-11-02T16:39:07.044781+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/file.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:10.176840+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/domain.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"domain.c\"", + "content-length": "46410", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:09 GMT", + "etag": "\"1421800afa7d5a920cabe2dc83f3105128676049\"", + "expires": "Thu, 30 Oct 2036 16:39:09 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:09 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/domain.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/domain.c", + "reader_cap": 1048576, + "sha256": "87bee91898fdf119b8c7b58ad5b2078df83db68c5dca397d4e1a49e62d090a9b", + "size_bytes": 46410, + "started_utc": "2026-11-02T16:39:08.431213+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/domain.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:09.970056+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/policy_compat.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"policy_compat.c\"", + "content-length": "9514", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:09 GMT", + "etag": "\"08a7a9d825ea425f71a0f50a5febcc11e8b7d2e5\"", + "expires": "Thu, 30 Oct 2036 16:39:09 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:09 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/policy_compat.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/policy_compat.c", + "reader_cap": 1048576, + "sha256": "2934dd788f1536ed3c1d201b27fb3179fb69296985975db81b78c6c0d73b3e39", + "size_bytes": 9514, + "started_utc": "2026-11-02T16:39:08.704783+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/policy_compat.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:11.414679+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/security.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"security.c\"", + "content-length": "170477", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:09 GMT", + "etag": "\"7ecf542eaf9d1f99291ed10b37d4a293de4071e8\"", + "expires": "Thu, 30 Oct 2036 16:39:10 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:10 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/security.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/security.c", + "reader_cap": 1048576, + "sha256": "7f3c7c418c468ce48d093d62ec054a80b4112c42f08aa0fbb480c806190dfd6b", + "size_bytes": 170477, + "started_utc": "2026-11-02T16:39:09.157367+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/security.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:11.546088+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/lsm_hook_defs.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"lsm_hook_defs.h\"", + "content-length": "25085", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:10 GMT", + "etag": "\"64ffe8c2dacd3fe6b3684438ecb986fc737793b6\"", + "expires": "Thu, 30 Oct 2036 16:39:10 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:10 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "include/linux/lsm_hook_defs.h", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/include/linux/lsm_hook_defs.h", + "reader_cap": 1048576, + "sha256": "c57d584e9bd85686e599dbad10351bc61f0ee9e49a382a7fc8470c6ce461864a", + "size_bytes": 25085, + "started_utc": "2026-11-02T16:39:09.970855+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/lsm_hook_defs.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:11.593889+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/kernel/bpf/bpf_lsm.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"bpf_lsm.c\"", + "content-length": "13968", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:11 GMT", + "etag": "\"8fc5256d3f8ec3c78793a3c4f3a83089357efbd6\"", + "expires": "Thu, 30 Oct 2036 16:39:11 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:11 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "kernel/bpf/bpf_lsm.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/kernel/bpf/bpf_lsm.c", + "reader_cap": 1048576, + "sha256": "2d952607f3a280deef7bd67273c61b1bfa37c2ccc80b3438a417d1246143aa38", + "size_bytes": 13968, + "started_utc": "2026-11-02T16:39:10.177667+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/kernel/bpf/bpf_lsm.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:12.139407+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/fs/exec.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"exec.c\"", + "content-length": "50792", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:11 GMT", + "etag": "\"8c5157c925cd58a316e72db1566fb135cf9b493c\"", + "expires": "Thu, 30 Oct 2036 16:39:11 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:11 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "fs/exec.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/fs/exec.c", + "reader_cap": 1048576, + "sha256": "4eb89b8d5d23050d9a9741f73979fe95fc083b897b2744f08fd395da62f4a698", + "size_bytes": 50792, + "started_utc": "2026-11-02T16:39:10.386401+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/fs/exec.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:13.224169+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/security.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"security.h\"", + "content-length": "67210", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:12 GMT", + "etag": "\"d6b1aec4340ff210edfa4f685da76ee9e9fe577b\"", + "expires": "Thu, 30 Oct 2036 16:39:12 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:12 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "include/linux/security.h", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/include/linux/security.h", + "reader_cap": 1048576, + "sha256": "e36e0172b2e2f02d6b2779b43546f0f2b5feef561cfdd5a1a8e0979bcd8becab", + "size_bytes": 67210, + "started_utc": "2026-11-02T16:39:11.415579+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/security.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:12.809814+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/bpf_lsm.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"bpf_lsm.h\"", + "content-length": "2923", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:12 GMT", + "etag": "\"dda272d78f013f7f13534514971b82d15de39514\"", + "expires": "Thu, 30 Oct 2036 16:39:12 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:12 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "include/linux/bpf_lsm.h", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/include/linux/bpf_lsm.h", + "reader_cap": 1048576, + "sha256": "5502c75dc1d43f329960404ea34dcc28247f75bd913d4a16196caa020eb95e5d", + "size_bytes": 2923, + "started_utc": "2026-11-02T16:39:11.546920+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/bpf_lsm.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:12.847109+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/include/file.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"file.h\"", + "content-length": "3945", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:12 GMT", + "etag": "\"4e6fb486c560530311d7ecf8065723edbf15636c\"", + "expires": "Thu, 30 Oct 2036 16:39:12 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:12 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/include/file.h", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/include/file.h", + "reader_cap": 1048576, + "sha256": "d25446bb8751491eb8604d8207cda605b1d7cc676e29c65fb87a541e4a29f764", + "size_bytes": 3945, + "started_utc": "2026-11-02T16:39:11.594693+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/include/file.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:13.624625+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/include/domain.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"domain.h\"", + "content-length": "808", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:12 GMT", + "etag": "\"77f9a0ed0f04821648f7431f063dc7573920b98e\"", + "expires": "Thu, 30 Oct 2036 16:39:13 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:13 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/include/domain.h", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/include/domain.h", + "reader_cap": 1048576, + "sha256": "48f541a0d54f28c6cb8920bd776768977f5ea634f7e50e652e5329c53d7ee8d4", + "size_bytes": 808, + "started_utc": "2026-11-02T16:39:12.140257+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/include/domain.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:14.265452+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/include/perms.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"perms.h\"", + "content-length": "7326", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:13 GMT", + "etag": "\"d0e6d5d9bfea8f883ff68956eb47a52b97da3163\"", + "expires": "Thu, 30 Oct 2036 16:39:13 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:13 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/include/perms.h", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/include/perms.h", + "reader_cap": 1048576, + "sha256": "cc761a2902191115f6b66cfffbf162b77bfc0c1ae608e14dbbbc8987543adce6", + "size_bytes": 7326, + "started_utc": "2026-11-02T16:39:12.810647+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/include/perms.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:39:14.644631+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/COPYING?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"COPYING\"", + "content-length": "496", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:39:14 GMT", + "etag": "\"a635a38ef9405fdfcfe97f3a435393c1e9cae971\"", + "expires": "Thu, 30 Oct 2036 16:39:14 GMT", + "last-modified": "Mon, 02 Nov 2026 16:39:14 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "COPYING", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/COPYING", + "reader_cap": 1048576, + "sha256": "fb5a425bd3b3cd6071a3a9aff9909a859e7c1158d54d32e07658398cd67eb6a0", + "size_bytes": 496, + "started_utc": "2026-11-02T16:39:13.224607+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/COPYING?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:07.934171+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/policy_unpack.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"policy_unpack.c\"", + "content-length": "46382", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:06 GMT", + "etag": "\"40aac4e0dca6a40772dc817d9fef4c2d5c23a813\"", + "expires": "Thu, 30 Oct 2036 16:44:06 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:06 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/policy_unpack.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/policy_unpack.c", + "reader_cap": 1048576, + "sha256": "33db4e8bcc716a543ac3c4c62ffbdba650e4e5afb5d7ad5b7642cd17d9b22f82", + "size_bytes": 46382, + "started_utc": "2026-11-02T16:44:05.178320+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/policy_unpack.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:08.281544+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/apparmorfs.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"apparmorfs.c\"", + "content-length": "84690", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:06 GMT", + "etag": "\"b7e7568203f29d5c889744074ae0664d0bfb7a42\"", + "expires": "Thu, 30 Oct 2036 16:44:06 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:06 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/apparmor/apparmorfs.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/apparmor/apparmorfs.c", + "reader_cap": 1048576, + "sha256": "8e46c8dc1a57b746bd16dbf2f90a73a165ea97c339c61e4688a88464c7ae4340", + "size_bytes": 84690, + "started_utc": "2026-11-02T16:44:05.179113+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/apparmor/apparmorfs.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:07.529984+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/bpf/hooks.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"hooks.c\"", + "content-length": "967", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:06 GMT", + "etag": "\"7b98f5d1e2be83901a6ebde2fb5e165756bac8b1\"", + "expires": "Thu, 30 Oct 2036 16:44:06 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:06 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "security/bpf/hooks.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/security/bpf/hooks.c", + "reader_cap": 1048576, + "sha256": "62d8cfa542e8c11da8eda2dece5b6cc9b5d5f9544c59645dba96b969bd0d71c0", + "size_bytes": 967, + "started_utc": "2026-11-02T16:44:05.179609+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/security/bpf/hooks.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:07.567871+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/lsm_hooks.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"lsm_hooks.h\"", + "content-length": "7104", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:06 GMT", + "etag": "\"d6870f74df4b2f30e12c01d7949e298f480402aa\"", + "expires": "Thu, 30 Oct 2036 16:44:06 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:06 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "include/linux/lsm_hooks.h", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/include/linux/lsm_hooks.h", + "reader_cap": 1048576, + "sha256": "03dc141a1b157826ace850cfc27414095b1201f4e8a348d9f4b41223da523bfd", + "size_bytes": 7104, + "started_utc": "2026-11-02T16:44:05.180098+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/lsm_hooks.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:10.356702+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/fs/namei.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"namei.c\"", + "content-length": "178206", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:08 GMT", + "etag": "\"1d6b7b46cea05b88740a744ee6983b7480562280\"", + "expires": "Thu, 30 Oct 2036 16:44:08 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:08 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "fs/namei.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/fs/namei.c", + "reader_cap": 1048576, + "sha256": "ef8fb4d3daf848f6cff20a7a08c6023cf9db33fc7f54d87d66591219faf18d95", + "size_bytes": 178206, + "started_utc": "2026-11-02T16:44:07.530224+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/fs/namei.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:09.513214+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/fs/stat.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"stat.c\"", + "content-length": "27236", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:08 GMT", + "etag": "\"c461c30542340841911766e8b052d42933156707\"", + "expires": "Thu, 30 Oct 2036 16:44:08 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:08 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "fs/stat.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/fs/stat.c", + "reader_cap": 1048576, + "sha256": "d2adefa2b4f6fccb24a086eb994c9c1774e348c34bcc50ddfe4785c64c145724", + "size_bytes": 27236, + "started_utc": "2026-11-02T16:44:07.568102+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/fs/stat.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:09.797604+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/ipc/shm.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"shm.c\"", + "content-length": "46245", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:08 GMT", + "etag": "\"b3e8a58e177d3ba12c484656e20e6aa383009daa\"", + "expires": "Thu, 30 Oct 2036 16:44:08 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:08 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "ipc/shm.c", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/ipc/shm.c", + "reader_cap": 1048576, + "sha256": "c17dbd4fa25ceb56a2ba584fbc1018599079744aaae62cadc731f22c07e73fdc", + "size_bytes": 46245, + "started_utc": "2026-11-02T16:44:07.934542+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/ipc/shm.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:09.895523+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/LICENSES/preferred/GPL-2.0?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"GPL-2.0\"", + "content-length": "18600", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:09 GMT", + "etag": "\"ea8e93dc44bc462a2be34e484432cf2b9ec88527\"", + "expires": "Thu, 30 Oct 2036 16:44:09 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:09 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "LICENSES/preferred/GPL-2.0", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/LICENSES/preferred/GPL-2.0", + "reader_cap": 1048576, + "sha256": "8780e78a1a737e127f25a65f6d95269bffd36158dc261114de7859b490bfc5aa", + "size_bytes": 18600, + "started_utc": "2026-11-02T16:44:08.286959+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/LICENSES/preferred/GPL-2.0?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T16:44:10.722584+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/LICENSES/exceptions/Linux-syscall-note?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"Linux-syscall-note\"", + "content-length": "1258", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 16:44:10 GMT", + "etag": "\"9abdad71fafdf29de61157bfa9a31e244a32f5b8\"", + "expires": "Thu, 30 Oct 2036 16:44:10 GMT", + "last-modified": "Mon, 02 Nov 2026 16:44:10 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "name": "LICENSES/exceptions/Linux-syscall-note", + "outcome": "retained", + "path": "outputs/c05-v03-completion-20261102T055710Z/unit11/kernel/exact-source/LICENSES/exceptions/Linux-syscall-note", + "reader_cap": 1048576, + "sha256": "8e378ab93586eb55135d3bc119cce787f7324f48394777d00c34fa3d0be3303f", + "size_bytes": 1258, + "started_utc": "2026-11-02T16:44:09.513618+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/LICENSES/exceptions/Linux-syscall-note?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + } + ], + "selected_exact_tag": "Ubuntu-hwe-7.0-7.0.0-42.42_24.04.1", + "tag_object_reported": "ec4271d73fa5db6b362dd68a77a560827945e633", + "tagged_commit": "88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + "frozen_utc": "2026-11-02T16:47:32.399079+00:00", + "package_association": { + "apparmor_package_source_exact_version": "4.0.1really4.0.1-0ubuntu0.24.04.9", + "boot_config_sha256": "8da949fb637f675c8a1170a2bfc5f029b2642f54e0efe8dbb54ca95c6324cf8d", + "boot_config_size_bytes": 308206, + "exact_version": "7.0.0-42.42~24.04.1", + "merged_usr_other_spelling_initial_failure_retained": true, + "modules_package": "linux-modules-7.0.0-42-generic", + "parser_owner_metadata_spelling": "/sbin/apparmor_parser", + "running_release_reported": "7.0.0-42-generic", + "signed_image_source_wrapper": "linux-signed-hwe-7.0", + "signed_wrapper_dsc_exact_unsigned_and_buildinfo_build_dependency": true, + "source": "linux-hwe-7.0", + "source_binary_or_live_memory_correspondence_proved": false + }, + "remaining_frontier": [ + "Complete relevant appliedAppArmorparser composition andactualselectedpolicyABI, includingUbuntuoverlayeffects", + "Connectedordinary/metadata/FD/IPC/proc/nonfileK closure and unchangedparent/compiler-domain compatibility", + "ActualBPFprogram/map/attach/enforcement/authorityandlifetimeproofifsupplementproposed", + "Original-compatible actual selection and512row/wire/capture/physical fit; no row savings inferred from source availability", + "Declaredpackage/tag/source association isdistinctfromindependentlyestablishedrunningbinarycorrespondence" + ], + "resource_limits": { + "compressed_archive_bytes": 67108864, + "decoded_archive_total_bytes_per_archive": 268435456, + "new_source_execution_or_compilation": false, + "original_runtime_limits_changed": false, + "per_source_file_bytes": 1048576, + "physical_costs": "OPEN_NOT_ZERO", + "selected_tar_decoded_bytes": [ + 18155520, + 788480 + ], + "tarfile_member_counts_not_raw_header_counts": [ + 4167, + 144 + ] + }, + "retained_limit_and_transport_failures": [ + "sandboxDNSfailuresfor3exactofficialmetadatarequests beforeauthorizedoutside-sandboxread-onlyretrieval", + "webservice inaccessible/timeout/robots results preserved raw; notuniversalabsenceproof", + "DSCadvertisedhwe-7.0 branchlog404; exacttag discoveredfromsameofficialrepositoryroot", + "debian.master/changelog exceeded1MiBsource-reader cap; nocapraise", + "kernelorigarchive254937830bytes exceeds64MiB andwasnotrequested", + "firstAppArmorarchive-rootassumptionfailedbeforeselectedbodyextraction", + "affectednessv1pathnormalizationlimitation retained; v2correctedmetadataonly" + ], + "schema": "h25-unit11-version-bound-source-availability/v1", + "scope": "boundedofficialsourceavailabilityandstaticassociation; noinstaller,policyselection/load/privilegegrant or originalexecution", + "source_only_channel_observations": { + "AppArmor_hook_registration_source": "exact-source/security/apparmor/lsm.c:2159-2274", + "BPF_disabled_hooks_and_attach_checks_source": "exact-source/kernel/bpf/bpf_lsm.c:39-59,119-143", + "BPF_registration_source": "exact-source/security/bpf/hooks.c", + "complete_residual_channel_or_original_compatibility_proof": false, + "configured_BPF_LSM_and_registered_bpf_are_observations_only": true, + "getattr_hook_present": true, + "no_actual_BPF_program_map_or_attach_authority_proved": true, + "old_format_GETATTR_addition_source": "exact-source/security/apparmor/policy_compat.c:78-103", + "unconfined_file_delegation_allowance_source": "exact-source/security/apparmor/file.c:767-770,839-849" + }, + "unit": "11" +} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-021.data b/research/h25-c05-at-random-producer-events/inputs/input-021.data new file mode 100644 index 0000000000..9abdad71fa --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-021.data @@ -0,0 +1,25 @@ +SPDX-Exception-Identifier: Linux-syscall-note +SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html +SPDX-Licenses: GPL-2.0, GPL-2.0+, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+, GPL-2.0-only, GPL-2.0-or-later +Usage-Guide: + This exception is used together with one of the above SPDX-Licenses + to mark user space API (uapi) header files so they can be included + into non GPL compliant user space application code. + To use this exception add it with the keyword WITH to one of the + identifiers in the SPDX-Licenses tag: + SPDX-License-Identifier: WITH Linux-syscall-note +License-Text: + + NOTE! This copyright does *not* cover user programs that use kernel + services by normal system calls - this is merely considered normal use + of the kernel, and does *not* fall under the heading of "derived work". + Also note that the GPL below is copyrighted by the Free Software + Foundation, but the instance of code that it refers to (the Linux + kernel) is copyrighted by me and others who actually wrote it. + + Also note that the only valid version of the GPL as far as the kernel + is concerned is _this_ particular version of the license (ie v2, not + v2.2 or v3.x or whatever), unless explicitly otherwise stated. + + Linus Torvalds + diff --git a/research/h25-c05-at-random-producer-events/inputs/input-022.data b/research/h25-c05-at-random-producer-events/inputs/input-022.data new file mode 100644 index 0000000000..ee30dcd809 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-022.data @@ -0,0 +1,615 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#ifndef _UAPI_LINUX_ELF_H +#define _UAPI_LINUX_ELF_H + +#include +#include + +/* 32-bit ELF base types. */ +typedef __u32 Elf32_Addr; +typedef __u16 Elf32_Half; +typedef __u32 Elf32_Off; +typedef __s32 Elf32_Sword; +typedef __u32 Elf32_Word; +typedef __u16 Elf32_Versym; + +/* 64-bit ELF base types. */ +typedef __u64 Elf64_Addr; +typedef __u16 Elf64_Half; +typedef __s16 Elf64_SHalf; +typedef __u64 Elf64_Off; +typedef __s32 Elf64_Sword; +typedef __u32 Elf64_Word; +typedef __u64 Elf64_Xword; +typedef __s64 Elf64_Sxword; +typedef __u16 Elf64_Versym; + +/* These constants are for the segment types stored in the image headers */ +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 /* Thread local storage segment */ +#define PT_LOOS 0x60000000 /* OS-specific */ +#define PT_HIOS 0x6fffffff /* OS-specific */ +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7fffffff +#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550) +#define PT_GNU_STACK (PT_LOOS + 0x474e551) +#define PT_GNU_RELRO (PT_LOOS + 0x474e552) +#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553) + + +/* ARM MTE memory tag segment type */ +#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC + 0x2) + +/* + * Extended Numbering + * + * If the real number of program header table entries is larger than + * or equal to PN_XNUM(0xffff), it is set to sh_info field of the + * section header at index 0, and PN_XNUM is set to e_phnum + * field. Otherwise, the section header at index 0 is zero + * initialized, if it exists. + * + * Specifications are available in: + * + * - Oracle: Linker and Libraries. + * Part No: 817–1984–19, August 2011. + * https://docs.oracle.com/cd/E18752_01/pdf/817-1984.pdf + * + * - System V ABI AMD64 Architecture Processor Supplement + * Draft Version 0.99.4, + * January 13, 2010. + * http://www.cs.washington.edu/education/courses/cse351/12wi/supp-docs/abi.pdf + */ +#define PN_XNUM 0xffff + +/* These constants define the different elf file types */ +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 +#define ET_CORE 4 +#define ET_LOPROC 0xff00 +#define ET_HIPROC 0xffff + +/* This is the info that is needed to parse the dynamic section of the file */ +#define DT_NULL 0 +#define DT_NEEDED 1 +#define DT_PLTRELSZ 2 +#define DT_PLTGOT 3 +#define DT_HASH 4 +#define DT_STRTAB 5 +#define DT_SYMTAB 6 +#define DT_RELA 7 +#define DT_RELASZ 8 +#define DT_RELAENT 9 +#define DT_STRSZ 10 +#define DT_SYMENT 11 +#define DT_INIT 12 +#define DT_FINI 13 +#define DT_SONAME 14 +#define DT_RPATH 15 +#define DT_SYMBOLIC 16 +#define DT_REL 17 +#define DT_RELSZ 18 +#define DT_RELENT 19 +#define DT_PLTREL 20 +#define DT_DEBUG 21 +#define DT_TEXTREL 22 +#define DT_JMPREL 23 +#define DT_ENCODING 32 +#define OLD_DT_LOOS 0x60000000 +#define DT_LOOS 0x6000000d +#define DT_HIOS 0x6ffff000 +#define DT_VALRNGLO 0x6ffffd00 +#define DT_VALRNGHI 0x6ffffdff +#define DT_ADDRRNGLO 0x6ffffe00 +#define DT_GNU_HASH 0x6ffffef5 +#define DT_ADDRRNGHI 0x6ffffeff +#define DT_VERSYM 0x6ffffff0 +#define DT_RELACOUNT 0x6ffffff9 +#define DT_RELCOUNT 0x6ffffffa +#define DT_FLAGS_1 0x6ffffffb +#define DT_VERDEF 0x6ffffffc +#define DT_VERDEFNUM 0x6ffffffd +#define DT_VERNEED 0x6ffffffe +#define DT_VERNEEDNUM 0x6fffffff +#define OLD_DT_HIOS 0x6fffffff +#define DT_LOPROC 0x70000000 +#define DT_HIPROC 0x7fffffff + +/* This info is needed when parsing the symbol table */ +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 + +#define STN_UNDEF 0 + +#define STT_NOTYPE 0 +#define STT_OBJECT 1 +#define STT_FUNC 2 +#define STT_SECTION 3 +#define STT_FILE 4 +#define STT_COMMON 5 +#define STT_TLS 6 + +#define VER_FLG_BASE 0x1 +#define VER_FLG_WEAK 0x2 + +#define ELF_ST_BIND(x) ((x) >> 4) +#define ELF_ST_TYPE(x) ((x) & 0xf) +#define ELF32_ST_BIND(x) ELF_ST_BIND(x) +#define ELF32_ST_TYPE(x) ELF_ST_TYPE(x) +#define ELF64_ST_BIND(x) ELF_ST_BIND(x) +#define ELF64_ST_TYPE(x) ELF_ST_TYPE(x) + +typedef struct { + Elf32_Sword d_tag; + union { + Elf32_Sword d_val; + Elf32_Addr d_ptr; + } d_un; +} Elf32_Dyn; + +typedef struct { + Elf64_Sxword d_tag; /* entry tag value */ + union { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; + +/* The following are used with relocations */ +#define ELF32_R_SYM(x) ((x) >> 8) +#define ELF32_R_TYPE(x) ((x) & 0xff) + +#define ELF64_R_SYM(i) ((i) >> 32) +#define ELF64_R_TYPE(i) ((i) & 0xffffffff) + +typedef struct elf32_rel { + Elf32_Addr r_offset; + Elf32_Word r_info; +} Elf32_Rel; + +typedef struct elf64_rel { + Elf64_Addr r_offset; /* Location at which to apply the action */ + Elf64_Xword r_info; /* index and type of relocation */ +} Elf64_Rel; + +typedef struct elf32_rela { + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} Elf32_Rela; + +typedef struct elf64_rela { + Elf64_Addr r_offset; /* Location at which to apply the action */ + Elf64_Xword r_info; /* index and type of relocation */ + Elf64_Sxword r_addend; /* Constant addend used to compute value */ +} Elf64_Rela; + +typedef struct elf32_sym { + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf32_Half st_shndx; +} Elf32_Sym; + +typedef struct elf64_sym { + Elf64_Word st_name; /* Symbol name, index in string tbl */ + unsigned char st_info; /* Type and binding attributes */ + unsigned char st_other; /* No defined meaning, 0 */ + Elf64_Half st_shndx; /* Associated section index */ + Elf64_Addr st_value; /* Value of the symbol */ + Elf64_Xword st_size; /* Associated symbol size */ +} Elf64_Sym; + + +#define EI_NIDENT 16 + +typedef struct elf32_hdr { + unsigned char e_ident[EI_NIDENT]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; /* Entry point */ + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} Elf32_Ehdr; + +typedef struct elf64_hdr { + unsigned char e_ident[EI_NIDENT]; /* ELF "magic number" */ + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; /* Entry point virtual address */ + Elf64_Off e_phoff; /* Program header table file offset */ + Elf64_Off e_shoff; /* Section header table file offset */ + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; + +/* These constants define the permissions on sections in the program + header, p_flags. */ +#define PF_R 0x4 +#define PF_W 0x2 +#define PF_X 0x1 + +typedef struct elf32_phdr { + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +typedef struct elf64_phdr { + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; /* Segment file offset */ + Elf64_Addr p_vaddr; /* Segment virtual address */ + Elf64_Addr p_paddr; /* Segment physical address */ + Elf64_Xword p_filesz; /* Segment size in file */ + Elf64_Xword p_memsz; /* Segment size in memory */ + Elf64_Xword p_align; /* Segment alignment, file & memory */ +} Elf64_Phdr; + +/* sh_type */ +#define SHT_NULL 0 +#define SHT_PROGBITS 1 +#define SHT_SYMTAB 2 +#define SHT_STRTAB 3 +#define SHT_RELA 4 +#define SHT_HASH 5 +#define SHT_DYNAMIC 6 +#define SHT_NOTE 7 +#define SHT_NOBITS 8 +#define SHT_REL 9 +#define SHT_SHLIB 10 +#define SHT_DYNSYM 11 +#define SHT_NUM 12 +#define SHT_LOPROC 0x70000000 +#define SHT_HIPROC 0x7fffffff +#define SHT_LOUSER 0x80000000 +#define SHT_HIUSER 0xffffffff + +/* sh_flags */ +#define SHF_WRITE 0x1 +#define SHF_ALLOC 0x2 +#define SHF_EXECINSTR 0x4 +#define SHF_MERGE 0x10 +#define SHF_STRINGS 0x20 +#define SHF_INFO_LINK 0x40 +#define SHF_LINK_ORDER 0x80 +#define SHF_OS_NONCONFORMING 0x100 +#define SHF_GROUP 0x200 +#define SHF_TLS 0x400 +#define SHF_RELA_LIVEPATCH 0x00100000 +#define SHF_RO_AFTER_INIT 0x00200000 +#define SHF_ORDERED 0x04000000 +#define SHF_EXCLUDE 0x08000000 +#define SHF_MASKOS 0x0ff00000 +#define SHF_MASKPROC 0xf0000000 + +/* special section indexes */ +#define SHN_UNDEF 0 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_HIPROC 0xff1f +#define SHN_LIVEPATCH 0xff20 +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_HIRESERVE 0xffff + +typedef struct elf32_shdr { + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} Elf32_Shdr; + +typedef struct elf64_shdr { + Elf64_Word sh_name; /* Section name, index in string tbl */ + Elf64_Word sh_type; /* Type of section */ + Elf64_Xword sh_flags; /* Miscellaneous section attributes */ + Elf64_Addr sh_addr; /* Section virtual addr at execution */ + Elf64_Off sh_offset; /* Section file offset */ + Elf64_Xword sh_size; /* Size of section in bytes */ + Elf64_Word sh_link; /* Index of another section */ + Elf64_Word sh_info; /* Additional section information */ + Elf64_Xword sh_addralign; /* Section alignment */ + Elf64_Xword sh_entsize; /* Entry size if section holds table */ +} Elf64_Shdr; + +#define EI_MAG0 0 /* e_ident[] indexes */ +#define EI_MAG1 1 +#define EI_MAG2 2 +#define EI_MAG3 3 +#define EI_CLASS 4 +#define EI_DATA 5 +#define EI_VERSION 6 +#define EI_OSABI 7 +#define EI_PAD 8 + +#define ELFMAG0 0x7f /* EI_MAG */ +#define ELFMAG1 'E' +#define ELFMAG2 'L' +#define ELFMAG3 'F' +#define ELFMAG "\177ELF" +#define SELFMAG 4 + +#define ELFCLASSNONE 0 /* EI_CLASS */ +#define ELFCLASS32 1 +#define ELFCLASS64 2 +#define ELFCLASSNUM 3 + +#define ELFDATANONE 0 /* e_ident[EI_DATA] */ +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 + +#define EV_NONE 0 /* e_version, EI_VERSION */ +#define EV_CURRENT 1 +#define EV_NUM 2 + +#define ELFOSABI_NONE 0 +#define ELFOSABI_LINUX 3 + +#ifndef ELF_OSABI +#define ELF_OSABI ELFOSABI_NONE +#endif + +/* Note definitions: NN_ defines names. NT_ defines types. */ + +#define NN_GNU_PROPERTY_TYPE_0 "GNU" +#define NT_GNU_PROPERTY_TYPE_0 5 + +/* + * Notes used in ET_CORE. Architectures export some of the arch register sets + * using the corresponding note types via the PTRACE_GETREGSET and + * PTRACE_SETREGSET requests. + */ +#define NN_PRSTATUS "CORE" +#define NT_PRSTATUS 1 +#define NN_PRFPREG "CORE" +#define NT_PRFPREG 2 +#define NN_PRPSINFO "CORE" +#define NT_PRPSINFO 3 +#define NN_TASKSTRUCT "CORE" +#define NT_TASKSTRUCT 4 +#define NN_AUXV "CORE" +#define NT_AUXV 6 +/* + * Note to userspace developers: size of NT_SIGINFO note may increase + * in the future to accomodate more fields, don't assume it is fixed! + */ +#define NN_SIGINFO "CORE" +#define NT_SIGINFO 0x53494749 +#define NN_FILE "CORE" +#define NT_FILE 0x46494c45 +#define NN_PRXFPREG "LINUX" +#define NT_PRXFPREG 0x46e62b7f /* copied from gdb5.1/include/elf/common.h */ +#define NN_PPC_VMX "LINUX" +#define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */ +#define NN_PPC_SPE "LINUX" +#define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */ +#define NN_PPC_VSX "LINUX" +#define NT_PPC_VSX 0x102 /* PowerPC VSX registers */ +#define NN_PPC_TAR "LINUX" +#define NT_PPC_TAR 0x103 /* Target Address Register */ +#define NN_PPC_PPR "LINUX" +#define NT_PPC_PPR 0x104 /* Program Priority Register */ +#define NN_PPC_DSCR "LINUX" +#define NT_PPC_DSCR 0x105 /* Data Stream Control Register */ +#define NN_PPC_EBB "LINUX" +#define NT_PPC_EBB 0x106 /* Event Based Branch Registers */ +#define NN_PPC_PMU "LINUX" +#define NT_PPC_PMU 0x107 /* Performance Monitor Registers */ +#define NN_PPC_TM_CGPR "LINUX" +#define NT_PPC_TM_CGPR 0x108 /* TM checkpointed GPR Registers */ +#define NN_PPC_TM_CFPR "LINUX" +#define NT_PPC_TM_CFPR 0x109 /* TM checkpointed FPR Registers */ +#define NN_PPC_TM_CVMX "LINUX" +#define NT_PPC_TM_CVMX 0x10a /* TM checkpointed VMX Registers */ +#define NN_PPC_TM_CVSX "LINUX" +#define NT_PPC_TM_CVSX 0x10b /* TM checkpointed VSX Registers */ +#define NN_PPC_TM_SPR "LINUX" +#define NT_PPC_TM_SPR 0x10c /* TM Special Purpose Registers */ +#define NN_PPC_TM_CTAR "LINUX" +#define NT_PPC_TM_CTAR 0x10d /* TM checkpointed Target Address Register */ +#define NN_PPC_TM_CPPR "LINUX" +#define NT_PPC_TM_CPPR 0x10e /* TM checkpointed Program Priority Register */ +#define NN_PPC_TM_CDSCR "LINUX" +#define NT_PPC_TM_CDSCR 0x10f /* TM checkpointed Data Stream Control Register */ +#define NN_PPC_PKEY "LINUX" +#define NT_PPC_PKEY 0x110 /* Memory Protection Keys registers */ +#define NN_PPC_DEXCR "LINUX" +#define NT_PPC_DEXCR 0x111 /* PowerPC DEXCR registers */ +#define NN_PPC_HASHKEYR "LINUX" +#define NT_PPC_HASHKEYR 0x112 /* PowerPC HASHKEYR register */ +#define NN_386_TLS "LINUX" +#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */ +#define NN_386_IOPERM "LINUX" +#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */ +#define NN_X86_XSTATE "LINUX" +#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */ +/* Old binutils treats 0x203 as a CET state */ +#define NN_X86_SHSTK "LINUX" +#define NT_X86_SHSTK 0x204 /* x86 SHSTK state */ +#define NN_X86_XSAVE_LAYOUT "LINUX" +#define NT_X86_XSAVE_LAYOUT 0x205 /* XSAVE layout description */ +#define NN_S390_HIGH_GPRS "LINUX" +#define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */ +#define NN_S390_TIMER "LINUX" +#define NT_S390_TIMER 0x301 /* s390 timer register */ +#define NN_S390_TODCMP "LINUX" +#define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */ +#define NN_S390_TODPREG "LINUX" +#define NT_S390_TODPREG 0x303 /* s390 TOD programmable register */ +#define NN_S390_CTRS "LINUX" +#define NT_S390_CTRS 0x304 /* s390 control registers */ +#define NN_S390_PREFIX "LINUX" +#define NT_S390_PREFIX 0x305 /* s390 prefix register */ +#define NN_S390_LAST_BREAK "LINUX" +#define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */ +#define NN_S390_SYSTEM_CALL "LINUX" +#define NT_S390_SYSTEM_CALL 0x307 /* s390 system call restart data */ +#define NN_S390_TDB "LINUX" +#define NT_S390_TDB 0x308 /* s390 transaction diagnostic block */ +#define NN_S390_VXRS_LOW "LINUX" +#define NT_S390_VXRS_LOW 0x309 /* s390 vector registers 0-15 upper half */ +#define NN_S390_VXRS_HIGH "LINUX" +#define NT_S390_VXRS_HIGH 0x30a /* s390 vector registers 16-31 */ +#define NN_S390_GS_CB "LINUX" +#define NT_S390_GS_CB 0x30b /* s390 guarded storage registers */ +#define NN_S390_GS_BC "LINUX" +#define NT_S390_GS_BC 0x30c /* s390 guarded storage broadcast control block */ +#define NN_S390_RI_CB "LINUX" +#define NT_S390_RI_CB 0x30d /* s390 runtime instrumentation */ +#define NN_S390_PV_CPU_DATA "LINUX" +#define NT_S390_PV_CPU_DATA 0x30e /* s390 protvirt cpu dump data */ +#define NN_ARM_VFP "LINUX" +#define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */ +#define NN_ARM_TLS "LINUX" +#define NT_ARM_TLS 0x401 /* ARM TLS register */ +#define NN_ARM_HW_BREAK "LINUX" +#define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */ +#define NN_ARM_HW_WATCH "LINUX" +#define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */ +#define NN_ARM_SYSTEM_CALL "LINUX" +#define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */ +#define NN_ARM_SVE "LINUX" +#define NT_ARM_SVE 0x405 /* ARM Scalable Vector Extension registers */ +#define NN_ARM_PAC_MASK "LINUX" +#define NT_ARM_PAC_MASK 0x406 /* ARM pointer authentication code masks */ +#define NN_ARM_PACA_KEYS "LINUX" +#define NT_ARM_PACA_KEYS 0x407 /* ARM pointer authentication address keys */ +#define NN_ARM_PACG_KEYS "LINUX" +#define NT_ARM_PACG_KEYS 0x408 /* ARM pointer authentication generic key */ +#define NN_ARM_TAGGED_ADDR_CTRL "LINUX" +#define NT_ARM_TAGGED_ADDR_CTRL 0x409 /* arm64 tagged address control (prctl()) */ +#define NN_ARM_PAC_ENABLED_KEYS "LINUX" +#define NT_ARM_PAC_ENABLED_KEYS 0x40a /* arm64 ptr auth enabled keys (prctl()) */ +#define NN_ARM_SSVE "LINUX" +#define NT_ARM_SSVE 0x40b /* ARM Streaming SVE registers */ +#define NN_ARM_ZA "LINUX" +#define NT_ARM_ZA 0x40c /* ARM SME ZA registers */ +#define NN_ARM_ZT "LINUX" +#define NT_ARM_ZT 0x40d /* ARM SME ZT registers */ +#define NN_ARM_FPMR "LINUX" +#define NT_ARM_FPMR 0x40e /* ARM floating point mode register */ +#define NN_ARM_POE "LINUX" +#define NT_ARM_POE 0x40f /* ARM POE registers */ +#define NN_ARM_GCS "LINUX" +#define NT_ARM_GCS 0x410 /* ARM GCS state */ +#define NN_ARC_V2 "LINUX" +#define NT_ARC_V2 0x600 /* ARCv2 accumulator/extra registers */ +#define NN_VMCOREDD "LINUX" +#define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note */ +#define NN_MIPS_DSP "LINUX" +#define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers */ +#define NN_MIPS_FP_MODE "LINUX" +#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode */ +#define NN_MIPS_MSA "LINUX" +#define NT_MIPS_MSA 0x802 /* MIPS SIMD registers */ +#define NN_RISCV_CSR "LINUX" +#define NT_RISCV_CSR 0x900 /* RISC-V Control and Status Registers */ +#define NN_RISCV_VECTOR "LINUX" +#define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */ +#define NN_RISCV_TAGGED_ADDR_CTRL "LINUX" +#define NT_RISCV_TAGGED_ADDR_CTRL 0x902 /* RISC-V tagged address control (prctl()) */ +#define NN_RISCV_USER_CFI "LINUX" +#define NT_RISCV_USER_CFI 0x903 /* RISC-V shadow stack state */ +#define NN_LOONGARCH_CPUCFG "LINUX" +#define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */ +#define NN_LOONGARCH_CSR "LINUX" +#define NT_LOONGARCH_CSR 0xa01 /* LoongArch control and status registers */ +#define NN_LOONGARCH_LSX "LINUX" +#define NT_LOONGARCH_LSX 0xa02 /* LoongArch Loongson SIMD Extension registers */ +#define NN_LOONGARCH_LASX "LINUX" +#define NT_LOONGARCH_LASX 0xa03 /* LoongArch Loongson Advanced SIMD Extension registers */ +#define NN_LOONGARCH_LBT "LINUX" +#define NT_LOONGARCH_LBT 0xa04 /* LoongArch Loongson Binary Translation registers */ +#define NN_LOONGARCH_HW_BREAK "LINUX" +#define NT_LOONGARCH_HW_BREAK 0xa05 /* LoongArch hardware breakpoint registers */ +#define NN_LOONGARCH_HW_WATCH "LINUX" +#define NT_LOONGARCH_HW_WATCH 0xa06 /* LoongArch hardware watchpoint registers */ + +/* Note header in a PT_NOTE section */ +typedef struct elf32_note { + Elf32_Word n_namesz; /* Name size */ + Elf32_Word n_descsz; /* Content size */ + Elf32_Word n_type; /* Content type */ +} Elf32_Nhdr; + +/* Note header in a PT_NOTE section */ +typedef struct elf64_note { + Elf64_Word n_namesz; /* Name size */ + Elf64_Word n_descsz; /* Content size */ + Elf64_Word n_type; /* Content type */ +} Elf64_Nhdr; + +/* .note.gnu.property types for EM_AARCH64: */ +#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000 + +/* Bits for GNU_PROPERTY_AARCH64_FEATURE_1_BTI */ +#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0) + +typedef struct { + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} Elf32_Verdef; + +typedef struct { + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} Elf64_Verdef; + +typedef struct { + Elf32_Word vda_name; + Elf32_Word vda_next; +} Elf32_Verdaux; + +typedef struct { + Elf64_Word vda_name; + Elf64_Word vda_next; +} Elf64_Verdaux; + +#endif /* _UAPI_LINUX_ELF_H */ diff --git a/research/h25-c05-at-random-producer-events/inputs/input-023.data b/research/h25-c05-at-random-producer-events/inputs/input-023.data new file mode 100644 index 0000000000..d06b0441ed --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-023.data @@ -0,0 +1,369 @@ +{ + "complete_dependency_input_gate": false, + "exact_commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "new_source_bytes": 312962, + "new_source_file_count": 12, + "no_source_execution": true, + "sources": [ + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:17:29.910133+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/fs/binfmt_elf.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"binfmt_elf.c\"", + "content-length": "58558", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:17:28 GMT", + "etag": "\"fb857faaf0d62ab56c4c9f2e31e26eddb297e3ad\"", + "expires": "Thu, 30 Oct 2036 17:17:28 GMT", + "last-modified": "Mon, 02 Nov 2026 17:17:28 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/fs/binfmt_elf.c", + "sha256": "1939cf7c82077d1a0793777be7ca0e11985750cbaff8c342ce2b2e4647c50102", + "size_bytes": 58558, + "source_file_limit": 12, + "source_path": "fs/binfmt_elf.c", + "started_utc": "2026-11-02T17:17:27.222701+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/fs/binfmt_elf.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:17:29.297225+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/include/asm/elf.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"elf.h\"", + "content-length": "12164", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:17:28 GMT", + "etag": "\"2ba5f166e58fee4c2cd194daaddfe2712b845641\"", + "expires": "Thu, 30 Oct 2036 17:17:28 GMT", + "last-modified": "Mon, 02 Nov 2026 17:17:28 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/include/asm/elf.h", + "sha256": "59b9c134388114d4b5bd489cc7f278ca5b1e3a3619e908361c09b233eca9fce1", + "size_bytes": 12164, + "source_file_limit": 12, + "source_path": "arch/x86/include/asm/elf.h", + "started_utc": "2026-11-02T17:17:27.223537+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/include/asm/elf.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:43.469913+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/uapi/linux/auxvec.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"auxvec.h\"", + "content-length": "1834", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:42 GMT", + "etag": "\"cc61cb9b3e9af86a41b50d5221a1b94f4d6591bb\"", + "expires": "Thu, 30 Oct 2036 17:19:42 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:42 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/uapi/linux/auxvec.h", + "sha256": "8dadb9bdd5f00bbcbb6439086f5a9d429b4eff457a61b11ce08941d1dd8d60fa", + "size_bytes": 1834, + "source_file_limit": 12, + "source_path": "include/uapi/linux/auxvec.h", + "started_utc": "2026-11-02T17:19:41.548741+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/uapi/linux/auxvec.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:49.437636+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/include/uapi/asm/auxvec.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"auxvec.h\"", + "content-length": "571", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:42 GMT", + "etag": "\"bdde9e18f94eebeb6a01342aadd34213f42cc950\"", + "expires": "Thu, 30 Oct 2036 17:19:47 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:47 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/include/uapi/asm/auxvec.h", + "sha256": "7e50a100bacd7bd784538466bba53e931bdfc4f13f855258c77665f932368d8d", + "size_bytes": 571, + "source_file_limit": 12, + "source_path": "arch/x86/include/uapi/asm/auxvec.h", + "started_utc": "2026-11-02T17:19:41.549639+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/include/uapi/asm/auxvec.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:43.583797+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/uapi/linux/elf.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"elf.h\"", + "content-length": "19317", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:42 GMT", + "etag": "\"ee30dcd80901fc1fca274339466caf9dcf9f3b85\"", + "expires": "Thu, 30 Oct 2036 17:19:42 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:42 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/uapi/linux/elf.h", + "sha256": "15613d116a6c77c4826036740dd5023c6a7779c776acd3ac7a1a661fe7432b3c", + "size_bytes": 19317, + "source_file_limit": 12, + "source_path": "include/uapi/linux/elf.h", + "started_utc": "2026-11-02T17:19:41.550080+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/uapi/linux/elf.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:45.599622+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/entry/vdso/vma.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"vma.c\"", + "content-length": "6942", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:42 GMT", + "etag": "\"e7fd7517370f7cda1b9150b590a43e4c40e9de53\"", + "expires": "Thu, 30 Oct 2036 17:19:42 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:42 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/entry/vdso/vma.c", + "sha256": "f5e995c173c4ec30a9a33d71f0fed60e00247b6ef9c6cc3ee7c6488322d6d306", + "size_bytes": 6942, + "source_file_limit": 12, + "source_path": "arch/x86/entry/vdso/vma.c", + "started_utc": "2026-11-02T17:19:41.550502+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/entry/vdso/vma.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:46.429853+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/kernel/signal.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"signal.c\"", + "content-length": "12387", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:44 GMT", + "etag": "\"2404233336ab613293c0db0eac76cb237ab132b3\"", + "expires": "Thu, 30 Oct 2036 17:19:44 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:44 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/kernel/signal.c", + "sha256": "55a684e8cec8ce77090c6104404dfa417f22bea7751077144de2c84dddd964d7", + "size_bytes": 12387, + "source_file_limit": 12, + "source_path": "arch/x86/kernel/signal.c", + "started_utc": "2026-11-02T17:19:43.470123+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/kernel/signal.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:47.073803+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/kernel/process.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"process.c\"", + "content-length": "27057", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:44 GMT", + "etag": "\"4c718f8adc592d5f9db023ecc3f4307cdb726dfe\"", + "expires": "Thu, 30 Oct 2036 17:19:45 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:45 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/kernel/process.c", + "sha256": "7374fadbc5c1f2801f62146044e84fd47cbeadda062817f8b749c06ec26e3b83", + "size_bytes": 27057, + "source_file_limit": 12, + "source_path": "arch/x86/kernel/process.c", + "started_utc": "2026-11-02T17:19:43.583975+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/kernel/process.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:49.015273+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/kernel/cpu/common.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"common.c\"", + "content-length": "77315", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:46 GMT", + "etag": "\"7f0240bd0ac3d2b2b7a15e57e6cfd609cba4b9d9\"", + "expires": "Thu, 30 Oct 2036 17:19:46 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:46 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/arch/x86/kernel/cpu/common.c", + "sha256": "dad3acddb1505d432005b2d15daf7070af5d71c963ea19d2a643235883224ace", + "size_bytes": 77315, + "source_file_limit": 12, + "source_path": "arch/x86/kernel/cpu/common.c", + "started_utc": "2026-11-02T17:19:45.599801+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/arch/x86/kernel/cpu/common.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:50.099733+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/drivers/char/random.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"random.c\"", + "content-length": "53564", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:47 GMT", + "etag": "\"7ff4d29911fd84ca98cfbbced50e06db12087e69\"", + "expires": "Thu, 30 Oct 2036 17:19:47 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:47 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/drivers/char/random.c", + "sha256": "260c4030164fa73c27e55b21f28ec1f4dfc126cc80ab6aa56482223aa3534a8f", + "size_bytes": 53564, + "source_file_limit": 12, + "source_path": "drivers/char/random.c", + "started_utc": "2026-11-02T17:19:46.431557+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/drivers/char/random.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:50.933290+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/kernel/user_namespace.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"user_namespace.c\"", + "content-length": "36754", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:47 GMT", + "etag": "\"bc32c237c22a5fe33aa51768b2e33e81daed09b5\"", + "expires": "Thu, 30 Oct 2036 17:19:48 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:48 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/kernel/user_namespace.c", + "sha256": "4925de5a64d86fe437be68fd4c1ac9aca6d5dc463aa8e7f9d20bb7e4da97edd4", + "size_bytes": 36754, + "source_file_limit": 12, + "source_path": "kernel/user_namespace.c", + "started_utc": "2026-11-02T17:19:47.073975+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/kernel/user_namespace.c?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + }, + { + "aggregate_cap": 8388608, + "commit": "88cb661f6b53f472167d39a72241b5396e34ab2a", + "completed_utc": "2026-11-02T17:19:51.539145+00:00", + "final_url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/rseq.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a", + "headers": { + "connection": "close", + "content-disposition": "inline; filename=\"rseq.h\"", + "content-length": "6499", + "content-security-policy": "default-src 'none'", + "content-type": "text/plain; charset=UTF-8", + "date": "Mon, 02 Nov 2026 17:19:49 GMT", + "etag": "\"7ef79b25e714b92b20ac05ef9a1e121f0a92fbc6\"", + "expires": "Thu, 30 Oct 2036 17:19:50 GMT", + "last-modified": "Mon, 02 Nov 2026 17:19:50 GMT", + "server": "TwistedWeb/20.3.0+lp11", + "x-content-type-options": "nosniff" + }, + "outcome": "retained", + "per_file_cap": 1048576, + "retained_path": "outputs/c05-v03-completion-20261102T055710Z/unit12/source/include/linux/rseq.h", + "sha256": "fbd58ca2fc658cf37a4db2ab5ca9d0bd43cdb35a3de8a30647eae1b87dd436ca", + "size_bytes": 6499, + "source_file_limit": 12, + "source_path": "include/linux/rseq.h", + "started_utc": "2026-11-02T17:19:49.015978+00:00", + "status": 200, + "timeout_seconds": 20, + "url": "https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/noble/plain/include/linux/rseq.h?id=88cb661f6b53f472167d39a72241b5396e34ab2a" + } + ] +} diff --git a/research/h25-c05-at-random-producer-events/inputs/input-024.data b/research/h25-c05-at-random-producer-events/inputs/input-024.data new file mode 100644 index 0000000000..bdde9e18f9 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/inputs/input-024.data @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#ifndef _ASM_X86_AUXVEC_H +#define _ASM_X86_AUXVEC_H +/* + * Architecture-neutral AT_ values in 0-17, leave some room + * for more of them, start the x86-specific ones at 32. + */ +#ifdef __i386__ +#define AT_SYSINFO 32 +#endif +#define AT_SYSINFO_EHDR 33 + +/* entries in ARCH_DLINFO: */ +#if defined(__KERNEL__) && (defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64)) +# define AT_VECTOR_SIZE_ARCH 3 +#else /* else it's non-compat x86-64 */ +# define AT_VECTOR_SIZE_ARCH 2 +#endif + +#endif /* _ASM_X86_AUXVEC_H */ diff --git a/research/h25-c05-at-random-producer-events/licenses/Apache-2.0 b/research/h25-c05-at-random-producer-events/licenses/Apache-2.0 new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/h25-c05-at-random-producer-events/licenses/Apache-2.0 @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/h25-c05-at-random-producer-events/licenses/GPL-2.0 b/research/h25-c05-at-random-producer-events/licenses/GPL-2.0 new file mode 100644 index 0000000000..ea8e93dc44 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/licenses/GPL-2.0 @@ -0,0 +1,357 @@ +Valid-License-Identifier: GPL-2.0 +Valid-License-Identifier: GPL-2.0-only +Valid-License-Identifier: GPL-2.0+ +Valid-License-Identifier: GPL-2.0-or-later +SPDX-URL: https://spdx.org/licenses/GPL-2.0.html +Usage-Guide: + To use this license in source code, put one of the following SPDX + tag/value pairs into a comment according to the placement + guidelines in the licensing rules documentation. + For 'GNU General Public License (GPL) version 2 only' use: + SPDX-License-Identifier: GPL-2.0 + or + SPDX-License-Identifier: GPL-2.0-only + For 'GNU General Public License (GPL) version 2 or any later version' use: + SPDX-License-Identifier: GPL-2.0+ + or + SPDX-License-Identifier: GPL-2.0-or-later +License-Text: + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/research/h25-c05-at-random-producer-events/licenses/Linux-syscall-note b/research/h25-c05-at-random-producer-events/licenses/Linux-syscall-note new file mode 100644 index 0000000000..9abdad71fa --- /dev/null +++ b/research/h25-c05-at-random-producer-events/licenses/Linux-syscall-note @@ -0,0 +1,25 @@ +SPDX-Exception-Identifier: Linux-syscall-note +SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html +SPDX-Licenses: GPL-2.0, GPL-2.0+, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+, GPL-2.0-only, GPL-2.0-or-later +Usage-Guide: + This exception is used together with one of the above SPDX-Licenses + to mark user space API (uapi) header files so they can be included + into non GPL compliant user space application code. + To use this exception add it with the keyword WITH to one of the + identifiers in the SPDX-Licenses tag: + SPDX-License-Identifier: WITH Linux-syscall-note +License-Text: + + NOTE! This copyright does *not* cover user programs that use kernel + services by normal system calls - this is merely considered normal use + of the kernel, and does *not* fall under the heading of "derived work". + Also note that the GPL below is copyrighted by the Free Software + Foundation, but the instance of code that it refers to (the Linux + kernel) is copyrighted by me and others who actually wrote it. + + Also note that the only valid version of the GPL as far as the kernel + is concerned is _this_ particular version of the license (ie v2, not + v2.2 or v3.x or whatever), unless explicitly otherwise stated. + + Linus Torvalds + diff --git a/research/h25-c05-at-random-producer-events/package_reader_v2.py b/research/h25-c05-at-random-producer-events/package_reader_v2.py new file mode 100644 index 0000000000..8c5cf4b121 --- /dev/null +++ b/research/h25-c05-at-random-producer-events/package_reader_v2.py @@ -0,0 +1,92 @@ +"""Bounded package-local reader for NEW Unit13 static DATA only. + +Only literal inputs/input-NNN.data members are read. No arbitrary manifest-path +fallback, original module imports/execution, native observations or admission. +""" +from __future__ import annotations +import os +import stat +import sys +from at_random_producer_v2 import SOURCE_PINS,FILE_CAP,TOTAL_CAP,FormatError,authenticate_sources,make_witness,check_witness + +ATTEMPTS=[] + + +class ReaderState: + def __init__(self): + self.first=None;self.cleanup=[];self.fds=[];self.records=[];self.total=0;self.calls=0;self.pending=False + def fail(self,error): + if self.first is None:self.first=error + elif error is not self.first:self.cleanup.append(error) + return self.first + def slot(self):self.fds.append(None);return len(self.fds)-1 + def close(self,index): + fd=self.fds[index];self.fds[index]=None + if fd is not None: + try:os.close(fd) + except BaseException as error:self.fail(error) + + +def require(condition,code): + if condition is not True:raise FormatError(code) + + +def metadata(info): + return (info.st_dev,info.st_ino,info.st_mode,info.st_nlink,info.st_size,info.st_mtime_ns,info.st_ctime_ns) + + +def read_package(directory): + """Read authenticated fixed corpus; state survives all read/cleanup failures.""" + state=ReaderState();ATTEMPTS.append(state);result=None + try: + require(type(directory) is str and directory.startswith('/') and len(directory)<=4096 and directory.isascii(),'package_absolute_path') + parts=directory.split('/')[1:] + require(len(parts)<=64 and all(part not in ('','.','..') for part in parts),'package_path_spelling') + root=state.slot();state.pending=True + state.fds[root]=os.open(directory,os.O_RDONLY|os.O_DIRECTORY|os.O_NOFOLLOW|os.O_CLOEXEC);state.pending=False + inputs=state.slot();state.pending=True + state.fds[inputs]=os.open('inputs',os.O_RDONLY|os.O_DIRECTORY|os.O_NOFOLLOW|os.O_CLOEXEC,dir_fd=state.fds[root]);state.pending=False + before_root=metadata(os.fstat(state.fds[root]));before_inputs=metadata(os.fstat(state.fds[inputs]));bundle={} + for role,(identifier,size,digest) in SOURCE_PINS.items(): + name='input-%03d.data'%identifier + record={'role':role,'member':name,'chunks':[],'raw':None,'calls':0,'metadata':None};state.records.append(record) + index=state.slot();state.pending=True + state.fds[index]=os.open(name,os.O_RDONLY|os.O_NONBLOCK|os.O_NOFOLLOW|os.O_CLOEXEC,dir_fd=state.fds[inputs]);state.pending=False + try: + before=os.fstat(state.fds[index]);record['metadata']=metadata(before) + require(stat.S_ISREG(before.st_mode) and before.st_nlink==1 and before.st_size==size and size<=FILE_CAP,'package_member_kind_size') + count=0 + while count