From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752755AbdKHWFG (ORCPT ); Wed, 8 Nov 2017 17:05:06 -0500 Received: from mail-by2nam03on0053.outbound.protection.outlook.com ([104.47.42.53]:31362 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751245AbdKHWFD (ORCPT ); Wed, 8 Nov 2017 17:05:03 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Subject: Re: [PATCH] x86/mm: Unbreak modules that rely on external PAGE_KERNEL availability To: Borislav Petkov , Linus Torvalds Cc: Thomas Gleixner , Jiri Kosina , Ingo Molnar , "H. Peter Anvin" , LKML , linux-mm , the arch/x86 maintainers , Greg KH References: <20171108211525.4kxwj5ygg3kvfl2a@pd.tnic> <20171108214522.n5ewoijugodmmiec@pd.tnic> From: Tom Lendacky Message-ID: <767a4437-4051-7812-e676-22a7178870d5@amd.com> Date: Wed, 8 Nov 2017 16:04:56 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171108214522.n5ewoijugodmmiec@pd.tnic> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: MWHPR15CA0036.namprd15.prod.outlook.com (10.173.226.150) To MWHPR12MB1151.namprd12.prod.outlook.com (10.169.204.15) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f71e8c86-eaf6-4291-7c3a-08d526f4c213 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603249);SRVR:MWHPR12MB1151; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;3:1YamS9YvTh37yBd0Yb0LeHoLrSoB/QqxRMKZbFHddb6K8MO1p/dgQe23xtOnZIAGEcxu80f7vId2ZKZ9iapnGEF0Vj5hquHBnh8E+pTs2s9mQc/3qnzbpIlQAnBxGYdRYbDcTTLqlRPnTEHbVCpPpFLOiDbvSVxchmISfuY2uUUGKfZ7GffR8iGn0Xbl0Ky237cugZb3VZSPyoTCO03+0d5tPzeVDzIdEchyDe/xJJiLhFranYY+iUk6qcDfkX2A;25:/gf6uh8C47bd+y9zfMigqRaAcbQExiTSxi0oE5UgdN4dbqt02n6BU4sFUepbpzxbCoCzjBTcJ5UlN6LQlBiONx11j3J4izsp+NU/KVLxjBcEe59czx1g3mMAtKUGpJwrcq71Ll+FgP9hV7mjRsa8S1fiAf+u7sW5e1lmCJDnNKx2TL35PIZux3FAJg0yc8xQj61QvAn/xAkFivThL2Fc4PV8Im7kXyB20SKNppgqNW8P0jy0csQrDvEbJ8enMKLpglZjGZziMfb7eE/9rGJRRyikpDpAYKaM0t02PMQiqeu9NylHsp40fI806AzahByeX7S5we6BrDBIb9AIb0HrLg==;31:2BfWO2l8+FXwYh6gyJmoTAT/BLQBD1y5a/seZW/VaBDS2bYw7iv8T+cmXsHMUHMCm7Sfm7+gp0HfGz/ALSfYjgAuQQDBsW/3tisGgg/4aIGKtPQmivaOMqSA3YhjSeX34bqaK7YSuQVOJ5Nf1BOIK6ULXBql00SB/oewkviXckdrRknRDSZYeKWIhGJI3AL30BqDRQ4LfwQGVDnZZu0LKoIUbFjr6NtJrQueWuXDxWw= X-MS-TrafficTypeDiagnostic: MWHPR12MB1151: X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;20:359TtO5q8igX6okro5j0HCzEI0spNCIrer0OlZAjnTL6Ylwkm/VyjsyJb4UzbL8MBB0hV4svRKKpuCoMB0HMGI6P2fx7Lj5bPQh9egVBf0iYP2b1hyIwDhmTZBvI55UiaoCUxZTyj2PY8AZ4hZO8m6cUYdQTTNvtuSLvR/oQamVIO3zlcSfcMtuoSyjHFHHAhfXLAgUcNbRA03a0FGXPpFcDU5YemDGDvdTdUXMk+9AVN92nlrkXsB8bG9eM1Irpxnc+glV6tdQbpiZRsmTRYe26HdEVVqTw4/N6lfYKm6PsvvwdTbVkB6TshlQ3BOAOWsPQGl998GpqYHyTKMpQmV4lWUefNapS3R2wpFTCR0WJwMeN03/BNnWD/R+8oENyyzB4mF4gRoRen87FglYAWXS3zNJRW2ueWxiGTfubEuWrKHS/MdNcovviwMreCbANTPYyK0UEVzWPSXLlS28Or6fHLqlkKHwgn6cpaPvCOhVJlHLZjdxZbMt76m0PjHOJ;4:uuh4MSA7uY1Yw8qRqfFl9gVtShDITm6hpGI8KN36ABRbmF/MHaimbqePI02eBO9/LCVqm0cDvBljafx85F5LYGFF1m8jaq+U+s4ot4pSE+e3hwofCb5ST3lpKJs3HuCezs+L/XTpu9orfnzG5rYJTcXjHerhZs/kE2c2IFEoONJ2EncbbjXM5FNUNVE+JKkEl0CbauZSMVt9fxuGfzmg6klSX7j7J7WIA2tdpbGi0MBlg+F+sHNpPCWLeoN32qFxzv31IGJM0O2XJ5UwzMu9UmBz1grmtIKtWTEnVF+IBIfVzFkFVRdfjhrS/fCBIQiy X-Exchange-Antispam-Report-Test: UriScan:(788757137089); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(3231021)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123558100)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:MWHPR12MB1151;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:MWHPR12MB1151; X-Forefront-PRVS: 0485417665 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(376002)(39860400002)(346002)(199003)(51444003)(189002)(24454002)(101416001)(33646002)(81166006)(81156014)(8936002)(16526018)(7416002)(6666003)(189998001)(5660300001)(65826007)(2950100002)(68736007)(8676002)(64126003)(25786009)(83506002)(3260700006)(77096006)(6486002)(72206003)(229853002)(50466002)(36756003)(106356001)(53546010)(76176999)(478600001)(4326008)(305945005)(90366009)(7736002)(3846002)(6116002)(105586002)(54356999)(50986999)(31686004)(230700001)(86362001)(2906002)(65806001)(97736004)(110136005)(54906003)(58126008)(93886005)(6246003)(31696002)(65956001)(67846002)(53936002)(316002)(66066001)(23676003)(16576012)(47776003);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1151;H:[10.236.64.70];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxMTUxOzIzOlNMOHJ6eHFGZHphelJHckZzZFRZOUtjOGk5?= =?utf-8?B?WWxrRk5hc2M2alQ1V1VBVEpxZlJmZXhhOGc2YmxCYU80V25vZXZpRjg0bDlt?= =?utf-8?B?WU5EM25DcDVCenNjSHl0cXo2bXBnb0JZUGpmTm8yayt4QnE4REl5UmpuYkFK?= =?utf-8?B?V1hUUnhCUzZCZjRXcU1CdktSVGZhQ2lvUzJGaVhuWDhkakhncjRnQlFzUmFW?= =?utf-8?B?c0YzS1Y4UjgrRUNXWHk3WGJETit0SFUxV0xmRkNSa054RmhNZm1yOURTMzhy?= =?utf-8?B?TlczZDZoM0VEeVRDSU9UYmxOdk1kU2pHbEpwKy9YOThXLzZsYUVjR0hjWWNk?= =?utf-8?B?RVBLZEs1VHg0bkovRzNsdDRSVXJWQ3NUYzFoZkw3TGh5L2RQUm5ZLzdZMEs3?= =?utf-8?B?a1dMbklqOGpZV21JWWwxaGljMi9IbUliRnZFbzRnbTF6VnVUNFI3TkF1TFlY?= =?utf-8?B?RDFRWW5XeU13K1lmQmFtTUp3ZS9ZMzlxMmdIT2ZnbGRqN0wyVkxLY1o3NVpD?= =?utf-8?B?aXJtQmxiNks3KzZ2N01BUGs0eTBjZGpzejRQcFFIUlJ4NUVGTlExeG5ZUmJn?= =?utf-8?B?ZmRDTk1JN1pSN2ZXTmVXYXpCRUtmSHNxQWluQWkwUTdMVmErMDNYVlRhMUdj?= =?utf-8?B?NW5EQXFiVkRwdmdTdGdBUE1pVE83ZmpPVVBWbmFLTXMxN0J2aG82VGd0TDJh?= =?utf-8?B?WmEwNG1ZUTNqR3drL3VLWTBTVnNjcnJ4QjRhTndSNk1nMDB2KzZrLzF0cWtE?= =?utf-8?B?czVpb3RJbnczdjBTckczMDkzbkQzNGJUSk1XT2JuV00vUTFXTE10cFJweTNp?= =?utf-8?B?WlhEaUVqK3ZkVGFwMXBIaFEvYkZ1T1lFOElwZkJGZS9kcGtJZG11dDFkZEtm?= =?utf-8?B?SFdON1dVRjlRajltRnhSQXhMc01qOTc0Vm1LVy9XbjRCUkJKVXdRZkJjUHZt?= =?utf-8?B?Ynp6ekpTWVJzWEZjTEg1dGR3ZmMzcTdMTnNkMXRQM0Racm4xc0lWQmowai9C?= =?utf-8?B?QkJYRmszR1R2QXoyWDVQS1R4MjIyWDRZYW9sQjdoc203VHFKb0dTNzN2U3BN?= =?utf-8?B?czdUc3h5WTlUN1d5cWlOUHU0NU1JRXZxUGY5RjJhTzA5V0lMQTk0U09iK3FI?= =?utf-8?B?aGpGeXplQW1PblY5Uk93Z2JnaHB1NXlBRzEvRUk5dnBqR2VYWlQvUlZFaFFD?= =?utf-8?B?Mk1QMEpmUzMxRnBXZFJFRWQvSGI3Ym43cDlMSmZtMUl4UGZEaytYOWFrQXcv?= =?utf-8?B?MXk1K082cFZQV1F0KzRmZU5LSXc2Si9xclRkbHpSRnJTQ0JONG9BZFQrWVdH?= =?utf-8?B?OGp2R3F1N0J1U3hWclBlOG1ZYm12d1VGTUhscDVTNGRxWHJtdDNwYWt3ekRt?= =?utf-8?B?VlhvV2xlbXNOekoyQ3EzNEU3WVZpMDU2SGhka2lVbEVQUm1aQ04rK0ZMT0h4?= =?utf-8?B?UHhqb0pubSs2UXlBaGw5aWxaYkN1N0VkcDFyVHRaejg3ZWg2RlhPMEt0R3di?= =?utf-8?B?OTJ2SzZXV1p5K0Fvam1hNlYySm5vUVVFL3kwdlNBU2YyVGdMREYvaGl1TEVW?= =?utf-8?B?bmk5M0g1WW1KUVZtZmd1aVo1MmFGRUFnU2dUNitIdkR5THBFM2tpaHA0bWFL?= =?utf-8?B?Zy8zZVY4WjlDQVhuQnJ2NnBOTnBQcERha3g4V0N5MEYwNGVHMUZRSFk1dEQ5?= =?utf-8?B?czZFNXdGNWZ3amdRM2ZyQkhxSmNtSVVHd09zcVMvV1FmeWFGcFhJQ2Z3WEp5?= =?utf-8?B?R25WUFlIVEpPSWxieEI5WjRvZkZ0QkdyR1IwdHE1dUMzeUFNZ2N1U2I3VHk4?= =?utf-8?B?UVZXWnI3cnhLNVFub1dzZDhlR2pVTTQ4bzNoYVR2M2I0dnZKN3VQcXVTemNL?= =?utf-8?B?VG1XRWJ2aXpMaHJvbzRDd3FEZms3bW5aMXhoR2x5Z0w0VjhWVThUSmpscGZn?= =?utf-8?B?L1FJcnFGNVBDK3dFWDhhWEFreGZvZzNhUDVOZEF4d1FQNFVHT3BjSGE0bjdI?= =?utf-8?B?dVVzampNQ0FLcHBXUDVzR2ZjTlN2OXJ3T1BPK3RwRTZodXk5Tng3L2NrZlhq?= =?utf-8?Q?5oXM=3D?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;6:Z6vG9FOqqQah6ijqZ2WLeLyfdmzbR0EQD3BXU/4zyf4CPJMf1G6ozRal9ZlTCeYMbpGH2TejAFvpuNe7j/uP7GVVPCBw7oOFcv7/YALi/J0pUBpnYk1bRJIT9Eb5P7hgc45GOwSG5TeCCrLoFoJhHoVLv1aEy9rWNNKl7IpqLhHrYVecVLEouAJcFWOGzkHCDV00q8zXhglxhVfs9IdP55goqis/LgD2iDsnz6Mvrcr9hNY7qWqwHC9TVlLXhP6YitQ4m7XioA0ICzsh+407W/AUYV6uIiD61AvUvHBeWRmNCACgrNTWQEv4/aAfrqBk277K/f9FTc/TV20popp9UtTcYu5Y7lOA4rW8t3yVTk4=;5:luGITQrawOpZs6uLdVmqAPcoLA0ABXHkVl/xPj53S1FP+ihrLrkaStm2+78c9eZ4uuJKQOYUhSsMhxBuUWIZLNJgRTeKYAON6DngaWfWawdto6hpYO05Q7y58S/Qo6eabJZaxZIxIrEash67918JNibE6QCr0PoOIHie8uFAT0Q=;24:Gwwuqsbxn4Max6t0bI+6uwUC3OxPKJO9LaB1xe0dpOtx4yPtHEL6ncw/hzF/f7pTz/vrlGVUEvLChDxKjlvR2vNQYrqDLuCpNUNvQ/mG9Mw=;7:9aGZPXSieu7k26SzJMRcpDQf3B7UEi+0sFlHzyiLQyrDKZUXuNRNAdLF47coKFMtrNkZdbQHPtE6008RIyaOlwXRyDKb/p/VNxs91l4cBu+VL/03VuaEfSXI8zxWsXrgiA3MsoNrr3OiaZwp6zuUU7hncKO6bktOcO676H1iJf78LfqwfrMMRr5XMHIsSKEHFDfW8l3E6omKkA1U6+kxEK6Lf9floNu6ATnE/fIC+SGbJzSQHOUyedmmL5yZv4OU SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1151;20:a0RCo1NGBH1Lu51uRHrmwRWDrbIo4aEPwBGL6MjEfm5EOaSRdKscfrpejbfzA/E/m+4SpXLwJlaxg6kF7cdpM2/rl+XZ/bixv4kdVjMuvIfh6aK6R8PpMeDIVPvXFln2R7GjsbmWGS2C858AsXXz9NSKuLjMD0NIHlbVTb/aV4//t7veKHOaHVLvtQCFeG17zQt6gIT2UZKp3NENexOUOTglyoSywiRsiNPk2lwDAblsmN2wkbDNEh0BbRufGO70 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Nov 2017 22:05:00.3975 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f71e8c86-eaf6-4291-7c3a-08d526f4c213 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1151 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/8/2017 3:45 PM, Borislav Petkov wrote: > On Wed, Nov 08, 2017 at 01:23:37PM -0800, Linus Torvalds wrote: >> I was thinking that maybe we could have a fixed "encrypt" bit in our >> PTE, and then replace that "software bit" with whatever the real >> hardware mask is (if any). > > Right, I don't think that should be hard, unless I'm missing anything. > We read that bit from CPUID and that's bit 47 of the physical address > right now. > > Do you think we could reuse one of those _PAGE_BIT_SOFTW*? > > Right, and then set the proper *hardware* bit everytime we set a > pteval_t. > >> Because it's nasty to have these constants that _used_ to be >> constants, and still _look_ like constants, suddely do stupid memory >> reads from random kernel data. >> >> So _this_ is the underflying problem: >> >> #define _PAGE_ENC (_AT(pteval_t, sme_me_mask)) >> >> because that is simply not how the _PAGE_xyz macros should work! > > Yeah, I still have a funny feeling when looking at that but modulo > better solutions... :-\ > >> So it should have been a fixed bit to begin with, and the dynamic part >> should have been elsewhere. > > Right, Tom, whaddya think? Do you see any issues with doing a software, > "mirror" bit of sorts and then converting to the C-bit when needed? I think that should be doable. It will take some investigation to see what bit can be safely used and to find all of the areas where we would have to translate the software bit to the hardware bit (as you mention below). Thanks, Tom > >> The whole EXPORT_SYMBOL() thing is just a symptom of that fundamental >> error. Modules - GPL or not - should _never_ have to know or care >> about this _PAGE_ENC bit madness, simply because it shouldn't have >> been there. > > Right, so every user of the PAGE_* macros needs to set the C-bit when > SME is enabled and everytime it creates a PTE so that the memory > controller knows how to do the access. I certainly like your idea but > we'd have to audit all the places where we need to convert to the C-bit > from the software encryption bit and how ugly that would get. > > Btw, this is the other reason why the _PAGE_ENC bit is in the PAGE_* > macros: for full encryption, everything that deals with PTEs needs to > set the C-bit. >