From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932914AbdBPPsO (ORCPT ); Thu, 16 Feb 2017 10:48:14 -0500 Received: from mail-bn3nam01on0069.outbound.protection.outlook.com ([104.47.33.69]:27824 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932442AbdBPPsC (ORCPT ); Thu, 16 Feb 2017 10:48:02 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; From: Tom Lendacky Subject: [RFC PATCH v4 25/28] x86: Access the setup data through sysfs decrypted To: , , , , , , , , CC: Rik van Riel , Radim =?utf-8?b?S3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , "Michael S. Tsirkin" , Joerg Roedel , Konrad Rzeszutek Wilk , Paolo Bonzini , Brijesh Singh , Ingo Molnar , Alexander Potapenko , Andy Lutomirski , "H. Peter Anvin" , Borislav Petkov , Andrey Ryabinin , Thomas Gleixner , Larry Woodman , Dmitry Vyukov Date: Thu, 16 Feb 2017 09:47:38 -0600 Message-ID: <20170216154738.19244.37908.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BLUPR0301CA0026.namprd03.prod.outlook.com (10.162.113.164) To MWHPR12MB1150.namprd12.prod.outlook.com (10.169.204.14) X-MS-Office365-Filtering-Correlation-Id: 5813887f-7380-422b-a583-08d456832736 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:MWHPR12MB1150; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;3:3eVmwhYGURLHwt5rKz8dyM/WCPb9dVloNtT8/r3x7YMFyjHt5l0nIpjEHgLUpLMTOEvIc52SGlB0+6UTQem8qIFC4/dALp8zvhys0FqSGOaL+G3N7UYGZqlwXlWEkTQ+eHfkjyHjHkStlkHuwCqv4Y7FyxNxDAG8zbqkgMoLN1CbB1RZ8TGsNznNbHLVl0HEzGA4xeYxJ1bhy8lcO3ZemaCGAbP75Bd+zC0o2/Eaf9gRybLgBcJNdg73aK/yeIuDF98eBICTibxVMEyWVtzVkrIAg2FzAs6Cvh/nNj+my0A=;25:kuG9IWS/3y3rP81IB1ipgXwDbpId0ewHlk1fPBHkr4Jy4CyrHHF5I2RaPBG2dIPwvSeD40vXbySzYf5Th775xyTY7e0O5XvNKeqpiZ62LvcfCVNT27DS2kYDnov6f652YGq1fHBoyyta58VXvE6e8TGRs/diuy306ACLy2uZJ/GHxUBFUrwbDKumgnQ4xEoA/GAaEG62crjD2ZAf8J/lpd85VqVsO0uu0+/20Av7mJEQFEKSdBbnZhEi4BnuvGHRr/3OyfNO8UiwSkwLb2ZECaBG6NqeTpS1nDzKO0tLbfqA231CSmAamKkbV38f9JSb+99SCRq5x4LDbcwgS+Jq96AVDa9+MKy9tdsqbmWcmoij1v9nNt243P+98uLGcW+fl50Nqc3XGAU7S3Ac0yKeXl2Kg3pC0cBj7+zTPkJ2ir34doZgl6IuYhZUeQ0lfaXkIWqPGx7ZxXGpqA0QerPxFg== X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;31:IIReJ1omb1fvMtaBcM5zv79BJTHX+aSr54HiZuQ0REyaLnDw8GJyxODikCOATxk9Ue0+WTwdyUAS2f6ZPLsS1fXBQ3MzoeeLpSFzol4MLdBymCdzmJTI+2UtH7IqME9qRu59KdtDfy0jOg9bVHezUjvfCJvjBD3GcHM20FAtmtdhzArhF/19tXPKoNo0AQIUrS0IDK4xGZ7OJ6bV9LebhTCTgnAHknvetS1L8DaXXpdelQnzhIbeRDCL7tb7lP7T;20:cwDPYNKQRBwl3q9pnmpP6u7bf5Koy6a1uVP+v38O9flylhast6O5N5KtR9yh+Cc03ogiw53WnOF9aV+WdXtC0F4QKaRStmfEPf6OPoUaq5asfEJ7pW1KDCUJOr+Tle2wCifhDDRDAWGhc3jB8pI3OQWr27fOIP9pvZPeYulkeIJXwVg9ET/xIVltj0lzbYtOyrQsKuMyBgwpUDSa0lScCwHQx6Iaw6+NBYps6UUJ2tb/Er0YQnOEdW93MsDpq/LfzQqde3Dc5k69BIA6m2GTub1J8Ff+tRmlkWGAxGrpFcgthcww55a+Cs94pXTFUHdVFZyHRlcU1505KQKnR+kYhyHP3HXoQtjwdtY/NDGGq9IJu9nUL89tatew42oolHU3r56MPihfAdmWYC93Y1tLxu9DDwm6k8OvRXVB140w61soHC1JXxh8ms3SAyNmFBkFzeIO15mFVcpTwHAd8iHxm5Co2rnZVK4366qK1vcxS77PScM3jxrF6t9vf90ecXlZ X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123564025)(20161123558025)(20161123562025)(20161123555025)(6072148);SRVR:MWHPR12MB1150;BCL:0;PCL:0;RULEID:;SRVR:MWHPR12MB1150; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;4:DGKg7VwN4AEsiMKDuVL4dHr96Ew8dOBAOgOqFcKBPRMRCUbc1JaBtG2pj8T1G5Ag7hYL0HqLD9o7GOv/KaPyBefq7FIqpDQuqF65DZ+TFfEx31ft8U15NxE97TqAyHm9oie7b2aBEwlgYHc5jIeS8fKu8GqOeE17EZinvRWHwRNEMVoGhXduF3+n4shQ7ZKiuU9RqPhjVYjyMNTnVmGkrCJ7sz0F0Scv9UPm41BbUmmo34yZSrSCqQibcirXdWg83pPJCcUisgJ7rL5bb64w0sfEw0cchxRHOHNLHuZUQ5G1ZFzVR0usPBqzoPqTzCb8Ch3WIL1epz0ZFGYeI2RMdI6z6CU43BWWWcmTkmmtjiHP7nEDnnR6HzOasl/6KD8ksfdL/b9do0FD7qTxVdORgv7JkfTSFrhl60aCRk7PluSS/gTOIVDY/fBW1xC7P7v/zTDn3uoA4RBV4X5wFMiALZENds29ihtJFYpPoHGryEVKi75O8wUVZ7o1XugT7TCgA++9h0B43FBg6hrGOrGWlCXUlXUTklt/aMo7egzmP9ZU6A8qe9Gcy7iIbn8mWqAf7HshUg9/eU6DHhhMZecEoTg1EpO+tj5hVJ1Ga+MyFVFRxB+NcknJvFsYS8srYrCCw7QLrAkvdoAkcLrNNZDgURy3w535KKhYGlIxeRulQ2Q= X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39410400002)(39850400002)(39860400002)(39840400002)(39450400003)(189002)(199003)(86362001)(25786008)(33646002)(2201001)(53416004)(42186005)(5660300001)(97746001)(9686003)(54356999)(50986999)(106356001)(2906002)(55016002)(101416001)(54906002)(6506006)(76176999)(105586002)(8676002)(92566002)(81156014)(47776003)(50466002)(81166006)(103116003)(6666003)(230700001)(189998001)(83506001)(4001350100001)(38730400002)(68736007)(4326007)(23676002)(1076002)(7416002)(97736004)(305945005)(2950100002)(7736002)(6116002)(69596002)(3846002)(53936002)(389900003)(66066001)(71626007)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1150;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxMTUwOzIzOnIxdEtTdUNheVh4Q2JIeE9xQzVQc3NNWnZC?= =?utf-8?B?RVN5ZVJOWElRL2tYeE1kckxNSUk0cytSS21QOTczWUxZUEJtZUFOSXF6MzRH?= =?utf-8?B?Y3Z3TjdHcURxd2ZqU1lCMnExOC9ENG5rZCtWTzZaMmhuM1NiamZhRlNUMXc0?= =?utf-8?B?c1EzQjUzM2V5S3BvdEpMbTBZbzA3anRnU0FzZFRtK2VvRDV5R2gvNFIzdklJ?= =?utf-8?B?SHYyMVZGWnJnTTdnUnB4SHp5R01MYU5nRGI1NkJ1VE11S2ZMR3kvOWdGQUtq?= =?utf-8?B?RTFHNGVDNnB6WE5iejlMQlpvczgwMWdxVnNjcEhQNDhNcFRzM2Q5bE10Wkh3?= =?utf-8?B?OHhyUHc5NC9pV0pKWWNPV3pTOXNmb2tYaUZwcElFVktGL3VBSUdQWTBITnd1?= =?utf-8?B?eHNCS3RtdkJWK3RIK0g5S2lib3ZjSzhIQkl3UkhBcHZVejdWWHE2REQ5UFBu?= =?utf-8?B?OWpoU1c5WjNNekQ3VFlBS3YrMm51TU5nR1FBYlc4QU0xNjlNYjhXVkhLdlQy?= =?utf-8?B?T2QxOEcxMjVqVU5BRjN3eEZBbTBlSllDMDFqS3pMem1lR1QxUDFKMjJaRHIw?= =?utf-8?B?R2RMb1d0NzNFYXcyMXhwTFFBMUE3MjZtWGMvMlRYQ1V6cEFEUHcvcVlHdSs0?= =?utf-8?B?d29lbU1iZTB2QnhhVEVRSXVvVDdxMUtSQ2xxdEVYU2JoSkVTYzNKa01oUUVG?= =?utf-8?B?QVZ0RE5razZ6bXMwNHVxUVAvNVRiNitMbHJOUC90MHJGTm4ydGl5UEFFZ1lj?= =?utf-8?B?cDdvTkJ2bThnVmU3WEJXekFkczRNWmpYN3lYWDBCREVrUDJ0VTJiR1VwcTRn?= =?utf-8?B?U3NrS1o4b2tITXF3ZkRyUGZVRC84WHNtWU1YZHo0K04vSk9tNDdaaFczcVB2?= =?utf-8?B?YWxZWTErdGdTeWZTckZtcjdqK0xPVUR6OVR5aXJxUXQ1OXl2N2VMY0ZNSndV?= =?utf-8?B?SFoxTTh1NEN6eFRvNTg0b3cyUVlZSFIvQWJ1WXFGRUlVSUJGeHBFUXRkQnBj?= =?utf-8?B?VTd4SHRIY0pYc2J0R2o2aWdqUXFPRjJzeS9icGo0MG5NSndjY3I2ckhDSGxT?= =?utf-8?B?MHRXSFpJL0ZsSzNiUFNIRUF5NC94bU00YXRJeUNTeHp3cVJHWGlDR3ZXdkwr?= =?utf-8?B?NDNCMURySUY0WWlST2taaE80dzgvTTJSK0orSjVTaUd0ZkZDUkhYNXlnZmtL?= =?utf-8?B?ak9zdkkxSkhnazZsNWpDeENkL3Z6K0lXa3NKWnBUTHFIOXY0SUpQanU3SnVQ?= =?utf-8?B?RlVSbEJXMmRQMXQrK3RUamlMUCs0R3BCS1dOcHVIM2dwTVZXNUdUTi9HMTNH?= =?utf-8?B?VXdVWEdzVXYvWTVWRzNuUm1zaGY5UTUvZlU0a3RBMWRSaEVtcGNaR0tJeER1?= =?utf-8?B?MnlKbWQzUDNqWm84QStJa0tqODRxcnlaUm5SQjhtK0NPMG1LZTlYRWtob2Zm?= =?utf-8?B?b0liM005VW1iUzRnRmxmblJUN0k2bzNCOVRmS2NyQi8xZlpzbm1UOFF4Skt4?= =?utf-8?B?dkZsTnVxZVE4bU8xN1pYQUhBOGt3SS8yN0ZORk5yV21zR2Z0MmxKa0NZUGd0?= =?utf-8?B?akdrY3czbE5OblZWcURFc28xYU5taFA1eVFzNjhsMVFnUWlhK1R2SXNpeEtx?= =?utf-8?B?MnF6VGFjTTFZdzY4ZGZJZUdsK0t1Q3pPYS9tRW1JOVNvQ0Fva0RIaEFvT2pj?= =?utf-8?B?ajRUdFIrZzlVZ0diOWtKVmFralVGVWQyTTc2bDhkdjJiMkhHb3grckwyOGl5?= =?utf-8?B?bU1xQ0RrcVlzNFdMT29jODd3Q1llQVBHaW5heWJhbWhGbS95WVJ3N2p5eDl0?= =?utf-8?B?M3VoVkZ5dVdyTDV6YmZ2a2tnN1ZkSVFoL2ZzZ215UXlHdkt3SkRxUVp3RjBs?= =?utf-8?B?eFQyWHN2OXJ4Q2EwWjc5NEZFcHcxcThGZytPaWNMZE1qUjB4WWRRYWxJNC9M?= =?utf-8?B?Z2xJSWxMNytRPT0=?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;6:5gayWuyIzHsiSgc0LYb70igTWkp9aLQxfM2PDDk0F1XBxtot35pGgP03T/W3RlwY7nR+AhAE7sDzULFZLSUt5nFQHZfOvauMFyTbhB2Od1tdNOjIPi4dxIntZuiFAdym18jK7TDF9+r3UC+C9FPNDPDBxdOIyxVvTw+wWH98ErLktxLroghV68Bz8CxMuRsENUqnBbvC7+PuuOS258PxamHPDFebtVepGXIyhyXqvFHuX5NdG7646IR2LlkZWRId1jLlxfcQh9nUczif9nLPYrkBCJAOGJa9WpeFiUBDSU+huXxIaqFNuQR6R8ipYyG0GH2H6KsbhqbUcnR9AsChFX2N9IVJs/iu362Ha/t257IAPEwThFpG9JM7sGXBBHGXVxLVlNvqr3HiDJaclxlTCVYXvqzetiv9dgJPhkGl9BQ=;5:zHRvpvytmGbNjaBx/Ur9iVAp15lO/tV2DVNI1dQXR+2j/Szl4SSOFDMTDoeR4nuG63SRvZmTwMNKLgnwDhxn4nZYTwbcaTkubo8WunnyXyiiCTMMpsIfI7FoQfbyrEAxxNx5BycQg9w3SqStc2SfPg==;24:oSexraf4rL5W546kVAfeiruCWqYpq2tKVr/uj3/HYjCkoW9w0TlQaFBPzI7j4OxKWThakB8IsLjQUvBLq/gHXTVCzJ3vkW7E/HgAWl0kHeM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;7:Q7/iq/qCRl5lIXbIjq8hh0SRM1j3TYLGtBLD8yRaZEQ2h5bQYtm7RYqBWd8n9YmeVJHhHymMyw4dqbSMhJ+VbHHoPEvueAGH1+cDDaTlerEDroMDXA9Z1auQVWx3xqBmNmzX1XfzXzjmc40n+Hukoh0iMhPGQxT4DyCNDHTRTYKa0uqlJJaXarIhYdRvOu//Lh9OYZoAXRrqk3JmJqMT1QzCtyWYpq3fOvFkZ382bOxAm5/BzLWQJjwOtuvUIsvxHdcXBGaUxhZw22gdU8S/JLnZXFZGep7SnxR0j6gV3ACPP55UJ3m8WPX5uZmrn+KE+1IAt0yG1ysV2Log4bIXmQ==;20:PtLRd1N2E3OnCqX+vDJAG+ItTB4aC4DqIeX95g1DYxFukbz4hbTk1avd70aXI1Kq+2WGaRM3BX0AsCdByw8VZZrO9LOtvEwrT1czy5NkbHxUIXZRg3QtlinUF+zZuZM1Eg38jbnShucOYmmGaTrhwZwkEdAfyUHm9fPsFIzRSt1uZCPwd3AooIgdQns/YgcQx9Lvz1y2V86K+d7hnUYm1SCC0/E1KZcN4GF8GnG8zBRrHeuM7Hj/loOy/AN/ITMV X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2017 15:47:42.9910 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1150 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use memremap() to map the setup data. This will make the appropriate decision as to whether a RAM remapping can be done or if a fallback to ioremap_cache() is needed (similar to the setup data debugfs support). Signed-off-by: Tom Lendacky --- arch/x86/kernel/ksysfs.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c index 4afc67f..d653b3e 100644 --- a/arch/x86/kernel/ksysfs.c +++ b/arch/x86/kernel/ksysfs.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -79,12 +80,12 @@ static int get_setup_data_paddr(int nr, u64 *paddr) *paddr = pa_data; return 0; } - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -97,17 +98,17 @@ static int __init get_setup_data_size(int nr, size_t *size) u64 pa_data = boot_params.hdr.setup_data; while (pa_data) { - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; if (nr == i) { *size = data->len; - iounmap(data); + memunmap(data); return 0; } pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -127,12 +128,12 @@ static ssize_t type_show(struct kobject *kobj, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; ret = sprintf(buf, "0x%x\n", data->type); - iounmap(data); + memunmap(data); return ret; } @@ -154,7 +155,7 @@ static ssize_t setup_data_data_read(struct file *fp, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; @@ -170,15 +171,15 @@ static ssize_t setup_data_data_read(struct file *fp, goto out; ret = count; - p = ioremap_cache(paddr + sizeof(*data), data->len); + p = memremap(paddr + sizeof(*data), data->len, MEMREMAP_WB); if (!p) { ret = -ENOMEM; goto out; } memcpy(buf, p + off, count); - iounmap(p); + memunmap(p); out: - iounmap(data); + memunmap(data); return ret; } @@ -250,13 +251,13 @@ static int __init get_setup_data_total_num(u64 pa_data, int *nr) *nr = 0; while (pa_data) { *nr += 1; - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) { ret = -ENOMEM; goto out; } pa_data = data->next; - iounmap(data); + memunmap(data); } out: From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Lendacky Subject: [RFC PATCH v4 25/28] x86: Access the setup data through sysfs decrypted Date: Thu, 16 Feb 2017 09:47:38 -0600 Message-ID: <20170216154738.19244.37908.stgit@tlendack-t1.amdoffice.net> References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20170216154158.19244.66630.stgit-qCXWGYdRb2BnqfbPTmsdiZQ+2ll4COg0XqFh9Ls21Oc@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kasan-dev-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org, linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Cc: Rik van Riel , Larry Woodman , Brijesh Singh , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Radim =?utf-8?b?S3LEjW3DocWZ?= , Andrey Ryabinin , Ingo Molnar , "Michael S. Tsirkin" , Andy Lutomirski , "H. Peter Anvin" , Borislav Petkov , Paolo Bonzini , Alexander Potapenko , Thomas Gleixner , Dmitry Vyukov List-Id: linux-efi@vger.kernel.org Use memremap() to map the setup data. This will make the appropriate decision as to whether a RAM remapping can be done or if a fallback to ioremap_cache() is needed (similar to the setup data debugfs support). Signed-off-by: Tom Lendacky --- arch/x86/kernel/ksysfs.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c index 4afc67f..d653b3e 100644 --- a/arch/x86/kernel/ksysfs.c +++ b/arch/x86/kernel/ksysfs.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -79,12 +80,12 @@ static int get_setup_data_paddr(int nr, u64 *paddr) *paddr = pa_data; return 0; } - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -97,17 +98,17 @@ static int __init get_setup_data_size(int nr, size_t *size) u64 pa_data = boot_params.hdr.setup_data; while (pa_data) { - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; if (nr == i) { *size = data->len; - iounmap(data); + memunmap(data); return 0; } pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -127,12 +128,12 @@ static ssize_t type_show(struct kobject *kobj, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; ret = sprintf(buf, "0x%x\n", data->type); - iounmap(data); + memunmap(data); return ret; } @@ -154,7 +155,7 @@ static ssize_t setup_data_data_read(struct file *fp, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; @@ -170,15 +171,15 @@ static ssize_t setup_data_data_read(struct file *fp, goto out; ret = count; - p = ioremap_cache(paddr + sizeof(*data), data->len); + p = memremap(paddr + sizeof(*data), data->len, MEMREMAP_WB); if (!p) { ret = -ENOMEM; goto out; } memcpy(buf, p + off, count); - iounmap(p); + memunmap(p); out: - iounmap(data); + memunmap(data); return ret; } @@ -250,13 +251,13 @@ static int __init get_setup_data_total_num(u64 pa_data, int *nr) *nr = 0; while (pa_data) { *nr += 1; - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) { ret = -ENOMEM; goto out; } pa_data = data->next; - iounmap(data); + memunmap(data); } out: From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-bn3nam01on0069.outbound.protection.outlook.com ([104.47.33.69]:27824 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932442AbdBPPsC (ORCPT ); Thu, 16 Feb 2017 10:48:02 -0500 From: Tom Lendacky Subject: [RFC PATCH v4 25/28] x86: Access the setup data through sysfs decrypted Date: Thu, 16 Feb 2017 09:47:38 -0600 Message-ID: <20170216154738.19244.37908.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-arch-owner@vger.kernel.org List-ID: To: linux-arch@vger.kernel.org, linux-efi@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, iommu@lists.linux-foundation.org Cc: Rik van Riel , Radim =?utf-8?b?S3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , "Michael S. Tsirkin" , Joerg Roedel , Konrad Rzeszutek Wilk , Paolo Bonzini , Brijesh Singh , Ingo Molnar , Alexander Potapenko , Andy Lutomirski , "H. Peter Anvin" , Borislav Petkov , Andrey Ryabinin , Thomas Gleixner , Larry Woodman , Dmitry Vyukov Message-ID: <20170216154738.IcMq5Sm4f4SkOaeSaQ0_8M4YoYwukqbcUFIuiexW8Co@z> Use memremap() to map the setup data. This will make the appropriate decision as to whether a RAM remapping can be done or if a fallback to ioremap_cache() is needed (similar to the setup data debugfs support). Signed-off-by: Tom Lendacky --- arch/x86/kernel/ksysfs.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c index 4afc67f..d653b3e 100644 --- a/arch/x86/kernel/ksysfs.c +++ b/arch/x86/kernel/ksysfs.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -79,12 +80,12 @@ static int get_setup_data_paddr(int nr, u64 *paddr) *paddr = pa_data; return 0; } - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -97,17 +98,17 @@ static int __init get_setup_data_size(int nr, size_t *size) u64 pa_data = boot_params.hdr.setup_data; while (pa_data) { - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; if (nr == i) { *size = data->len; - iounmap(data); + memunmap(data); return 0; } pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -127,12 +128,12 @@ static ssize_t type_show(struct kobject *kobj, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; ret = sprintf(buf, "0x%x\n", data->type); - iounmap(data); + memunmap(data); return ret; } @@ -154,7 +155,7 @@ static ssize_t setup_data_data_read(struct file *fp, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; @@ -170,15 +171,15 @@ static ssize_t setup_data_data_read(struct file *fp, goto out; ret = count; - p = ioremap_cache(paddr + sizeof(*data), data->len); + p = memremap(paddr + sizeof(*data), data->len, MEMREMAP_WB); if (!p) { ret = -ENOMEM; goto out; } memcpy(buf, p + off, count); - iounmap(p); + memunmap(p); out: - iounmap(data); + memunmap(data); return ret; } @@ -250,13 +251,13 @@ static int __init get_setup_data_total_num(u64 pa_data, int *nr) *nr = 0; while (pa_data) { *nr += 1; - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) { ret = -ENOMEM; goto out; } pa_data = data->next; - iounmap(data); + memunmap(data); } out: From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Lendacky Subject: [RFC PATCH v4 25/28] x86: Access the setup data through sysfs decrypted Date: Thu, 16 Feb 2017 09:47:38 -0600 Message-ID: <20170216154738.19244.37908.stgit@tlendack-t1.amdoffice.net> References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: Rik van Riel , Larry Woodman , Brijesh Singh , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Radim =?utf-8?b?S3LEjW3DocWZ?= , Andrey Ryabinin , Ingo Molnar , "Michael S. Tsirkin" , Andy Lutomirski , "H. Peter Anvin" , Borislav Petkov , Paolo Bonzini , Alexander Potapenko , Thomas Gleixner , Dmitry Vyukov To: , , , , , , , , Return-path: In-Reply-To: <20170216154158.19244.66630.stgit-qCXWGYdRb2BnqfbPTmsdiZQ+2ll4COg0XqFh9Ls21Oc@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org List-Id: kvm.vger.kernel.org Use memremap() to map the setup data. This will make the appropriate decision as to whether a RAM remapping can be done or if a fallback to ioremap_cache() is needed (similar to the setup data debugfs support). Signed-off-by: Tom Lendacky --- arch/x86/kernel/ksysfs.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c index 4afc67f..d653b3e 100644 --- a/arch/x86/kernel/ksysfs.c +++ b/arch/x86/kernel/ksysfs.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -79,12 +80,12 @@ static int get_setup_data_paddr(int nr, u64 *paddr) *paddr = pa_data; return 0; } - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -97,17 +98,17 @@ static int __init get_setup_data_size(int nr, size_t *size) u64 pa_data = boot_params.hdr.setup_data; while (pa_data) { - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; if (nr == i) { *size = data->len; - iounmap(data); + memunmap(data); return 0; } pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -127,12 +128,12 @@ static ssize_t type_show(struct kobject *kobj, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; ret = sprintf(buf, "0x%x\n", data->type); - iounmap(data); + memunmap(data); return ret; } @@ -154,7 +155,7 @@ static ssize_t setup_data_data_read(struct file *fp, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; @@ -170,15 +171,15 @@ static ssize_t setup_data_data_read(struct file *fp, goto out; ret = count; - p = ioremap_cache(paddr + sizeof(*data), data->len); + p = memremap(paddr + sizeof(*data), data->len, MEMREMAP_WB); if (!p) { ret = -ENOMEM; goto out; } memcpy(buf, p + off, count); - iounmap(p); + memunmap(p); out: - iounmap(data); + memunmap(data); return ret; } @@ -250,13 +251,13 @@ static int __init get_setup_data_total_num(u64 pa_data, int *nr) *nr = 0; while (pa_data) { *nr += 1; - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) { ret = -ENOMEM; goto out; } pa_data = data->next; - iounmap(data); + memunmap(data); } out: From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-f70.google.com (mail-it0-f70.google.com [209.85.214.70]) by kanga.kvack.org (Postfix) with ESMTP id D0812680FFB for ; Thu, 16 Feb 2017 10:47:51 -0500 (EST) Received: by mail-it0-f70.google.com with SMTP id 203so42653152ith.3 for ; Thu, 16 Feb 2017 07:47:51 -0800 (PST) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0055.outbound.protection.outlook.com. [104.47.33.55]) by mx.google.com with ESMTPS id i75si7550670itf.96.2017.02.16.07.47.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Feb 2017 07:47:51 -0800 (PST) From: Tom Lendacky Subject: [RFC PATCH v4 25/28] x86: Access the setup data through sysfs decrypted Date: Thu, 16 Feb 2017 09:47:38 -0600 Message-ID: <20170216154738.19244.37908.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: linux-arch@vger.kernel.org, linux-efi@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, iommu@lists.linux-foundation.org Cc: Rik van Riel , Radim =?utf-8?b?S3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , "Michael S. Tsirkin" , Joerg Roedel , Konrad Rzeszutek Wilk , Paolo Bonzini , Brijesh Singh , Ingo Molnar , Alexander Potapenko , Andy Lutomirski , "H. Peter Anvin" , Borislav Petkov , Andrey Ryabinin , Thomas Gleixner , Larry Woodman , Dmitry Vyukov Use memremap() to map the setup data. This will make the appropriate decision as to whether a RAM remapping can be done or if a fallback to ioremap_cache() is needed (similar to the setup data debugfs support). Signed-off-by: Tom Lendacky --- arch/x86/kernel/ksysfs.c | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c index 4afc67f..d653b3e 100644 --- a/arch/x86/kernel/ksysfs.c +++ b/arch/x86/kernel/ksysfs.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -79,12 +80,12 @@ static int get_setup_data_paddr(int nr, u64 *paddr) *paddr = pa_data; return 0; } - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -97,17 +98,17 @@ static int __init get_setup_data_size(int nr, size_t *size) u64 pa_data = boot_params.hdr.setup_data; while (pa_data) { - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; if (nr == i) { *size = data->len; - iounmap(data); + memunmap(data); return 0; } pa_data = data->next; - iounmap(data); + memunmap(data); i++; } return -EINVAL; @@ -127,12 +128,12 @@ static ssize_t type_show(struct kobject *kobj, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; ret = sprintf(buf, "0x%x\n", data->type); - iounmap(data); + memunmap(data); return ret; } @@ -154,7 +155,7 @@ static ssize_t setup_data_data_read(struct file *fp, ret = get_setup_data_paddr(nr, &paddr); if (ret) return ret; - data = ioremap_cache(paddr, sizeof(*data)); + data = memremap(paddr, sizeof(*data), MEMREMAP_WB); if (!data) return -ENOMEM; @@ -170,15 +171,15 @@ static ssize_t setup_data_data_read(struct file *fp, goto out; ret = count; - p = ioremap_cache(paddr + sizeof(*data), data->len); + p = memremap(paddr + sizeof(*data), data->len, MEMREMAP_WB); if (!p) { ret = -ENOMEM; goto out; } memcpy(buf, p + off, count); - iounmap(p); + memunmap(p); out: - iounmap(data); + memunmap(data); return ret; } @@ -250,13 +251,13 @@ static int __init get_setup_data_total_num(u64 pa_data, int *nr) *nr = 0; while (pa_data) { *nr += 1; - data = ioremap_cache(pa_data, sizeof(*data)); + data = memremap(pa_data, sizeof(*data), MEMREMAP_WB); if (!data) { ret = -ENOMEM; goto out; } pa_data = data->next; - iounmap(data); + memunmap(data); } out: -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org