From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965950AbdCVT36 (ORCPT ); Wed, 22 Mar 2017 15:29:58 -0400 Received: from mail-sn1nam02on0081.outbound.protection.outlook.com ([104.47.36.81]:42469 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S934716AbdCVT3p (ORCPT ); Wed, 22 Mar 2017 15:29:45 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=amd.com; From: Yazen Ghannam To: CC: Yazen Ghannam , Tony Luck , Borislav Petkov , , Subject: [PATCH 2/2] x86/mce/AMD: Carve out SMCA bank configuration Date: Wed, 22 Mar 2017 14:29:31 -0500 Message-ID: <1490210971-62346-2-git-send-email-Yazen.Ghannam@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1490210971-62346-1-git-send-email-Yazen.Ghannam@amd.com> References: <1490210971-62346-1-git-send-email-Yazen.Ghannam@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR19CA0034.namprd19.prod.outlook.com (10.172.173.148) To BN6PR1201MB0131.namprd12.prod.outlook.com (10.174.114.144) X-MS-Office365-Filtering-Correlation-Id: fdad48aa-2bb9-4dde-9490-08d47159ca13 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:BN6PR1201MB0131; X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0131;3:mFjlpUN7+VmnHRuuoNcKqCkr18Zqx6OXhNYE0xYHAkxmv80kdhWQXSn3mwV4XPxfXWdZ/YfesK20t2Qr7r/6UwbVU/IgJrD+PdMLYjFZ+UWfnRikAPm8Lzv9R1TYhgPSRoEzdzi3HHgiQ5xL0eLAeEtsX6//C7DN4qbu5q0xoKmH0304sqh3zVx9pwmcD6WEU7RTcQXGT8i3Gaonst3Pij5GyF9/irpUf3y39rFzUXYSJC8bCpATTScvA8+W21Pk3EB0wu5DFZ15qjkf4ILoB6+zep7Ry+TNKvZIRMPeGDM=;25:rAxPHchZoCiX18NFcHD4T3Khn0WvmtycWuIU5O2CTc9FG2pRZEqh3ZVzO+bZiiQXusk8TiWDPPtnQiKhNuZ78F/MfWDODIvmvUkrSDVV0I4PUWLxo/9o5bUc7z6hLbnYS6gUubLRrsW7MozIFIJFS1HFhXth13+jb3lEmZcoTaVJB8dr/mgXWcVLz22ENBxrtXZby2etCoJNSstmqi6HXfeK13pq/f/esteUV0EycvZ/S56Folqye0diYAFCudRJgzT3TjTqP4ydFR4Y6jr410t7s+3MthFatVd1/KkFvRHPvw5HWMFrOhhVgLTBT9YYAQqPMIje1Tgf/ROKUUf5EOI2cyyTAF02JBRsa5BmYlCgPCSr6b5Rj5iv52BDGvVns9lURadFG5xEqeP43H8pb9GfsaNyZ1pN4mAchXl2gyfG65y7+hRFcuYVKsyPlQnfVxpK0BZXyE5xjAgEUm1iFA== X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0131;31:E5+3cwHyoLdNkKczcrFPWzWmewIGzosvTkJM4Yjnhrm41twU+eN/8uJw8s7xQ7T8nKO+ujxy/f3xXc0uN6QanHYS3vFD8Xu/RVaaW7W0QeGF5ViI7v+tEuEpo0iMbsHxg7+s0zSXt12wBjPanOunsY5H9t6fCPscwgArl+R+npCP9FKLqr4ys5XK6cP1Gzj0WPGrPC7XXclPyDcg0zJScjg365KI5vNPN14e19A4agf36XjTmTiPHvdQO2fVWbXf;20:okryUK4A+DDxZP4VHMXU+F2rm/BnQI/+4oSVXT4FdhNe9tNiaU6XuDTIYheiLqioLjnZRcF1TXI2xigQV9iM2fkUqWHTewOEttkvyh191354RWCrkj/c+Si3DSCm63Dz4QJQs9E8S6t6TvvusmNKzmn3aaHbZ8T/dlUD+abK/P87iwpr3HqtE/APsVVl/jG/v0eV6Ygogf4phxH0UsOvmmaz9avuLJyYw/jyUQvTjV1C2OFGqwMTYKpf67dDNk0dQpU+PQhmqW6X4yPEckD8iLRUYBkEojjEJzOKLgMbBMhdOgr2NUXUjDMD9h8XBfo6fi6+BmvLEuOKH4pN0h2OUqdfclh3FGadIBqB7Zb5KJA0Q7cs6HVKyCJKUSQ0zP7LaBRShAnzMUIbzXwymCBp6y2g0UTBJtFdg9zK0dxwxxXBkIpaLDcyLEAVouTw9Xn9m8Mr6C2wlurMU/+Un0x4e9ap1li16miyjipB7pkmP9Qgp4Ym47pDq63yEz5tD30K 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)(20161123558025)(20161123562025)(20161123560025)(20161123564025)(20161123555025)(6072148);SRVR:BN6PR1201MB0131;BCL:0;PCL:0;RULEID:;SRVR:BN6PR1201MB0131; X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0131;4:4Dz3ngjd7oz/CP0+ck4JbgttbsFyzvUbUPfQVeR42H4NyVGLz3thlqb21oZqVIXKAwZJmkjuyB8YFFX+0JqorQ53wxBq1D7yhlw6K6avQhBlKKoqORM6bZ0P4gvKO5yvl/ujjhe7ZgtEW+ZxZCvs+96pSo6CQ5TqF9D3cLaDYTya2Qd7XswLBe2XxFtINuPYzokwTNkaHxpob+qKMrGi+K51/na7zWwMGAozDPOL6LqZ7oa4rObsYKcbsFhVSl7uTuwdfDGt4b9MnpqIx99FKlXl/66ayv2kVNWRtJtCuXcs6igAfNK8cZlyxNayt6aq0Ix8xxlpQB3B8jr9NPgErQqcFTrJocwAt04IPAj4ghjVD94Vjiu+pX8qQWQyWJPB0elYFwNPdPYh460rLVERmR0kyQcyu4FrMf9zXjASAUZmz+zI1G0QC5P1bXsQlJAMsBBM0ZTMI7bYHwFXMQo4dv/cYDeUJET+xScQQ0njnED3O5bihb7/c0koy6ac0Pdb81bQPN8vtadDO0o7v1qxtfKYEmTsaarMoYeJWBry/uywqkfEKGqs/rx6QXGurSjEICvN5Bz48cWSxpcTqspG61Zgfim9mdv6oPJpWtfyYkT++nZdBtb/JS7+enPGghiA9Tg7R1zj5QVlrNjj1JdpXm/4+NajpC/31rpNBI2YfVU= X-Forefront-PRVS: 02543CD7CD X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(979002)(6009001)(39850400002)(39410400002)(39840400002)(39860400002)(39450400003)(48376002)(6116002)(53416004)(50226002)(86362001)(6486002)(81166006)(66066001)(2950100002)(3846002)(25786009)(6666003)(6916009)(8676002)(15650500001)(47776003)(2906002)(305945005)(2351001)(50986999)(50466002)(76176999)(54906002)(5660300001)(36756003)(5003940100001)(42186005)(53936002)(110136004)(7736002)(4326008)(189998001)(38730400002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR1201MB0131;H:yaz-diesel.amd.com;FPR:;SPF:None;MLV:ovrnspm;PTR:InfoNoRecords;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN6PR1201MB0131;23:cBxbYqZbY+4I5QNGUyJfz4dnHCBiLWRGmiZcLmE?= =?us-ascii?Q?C0D6AKrmdTqFjYXmQN1KmMY2ZKLRmNtwXk8Bi2Y1SxzUI2DsQm1K91zYup8u?= =?us-ascii?Q?OD+nIw8TXAfGSehBwnGsIdn3AxfYaZHGu4aLH1VSI5sH8STlLwCzjocCnYpI?= =?us-ascii?Q?G6/SFrM+qNAapcVukeTXVMdC7PQysgDUQNz+ksgKwM7ee+YEXN4hm8P8Th3j?= =?us-ascii?Q?2kOt6wBmPnb3V1tAGbQLkKuJx0jac8fw+/A1hUepwQHMSNXqtraCeVyCzrLw?= =?us-ascii?Q?FiAM7YPIeMBa2v3K+bwXXzLpFdceRoEHKynOsXsDxG6N18lPepIxt0Sb5IEg?= =?us-ascii?Q?RXLNqxWFmnK+Jubctd2gLRdpWQqE1db+XAYhdCdfr0bl+sH1M2yaqZiMioSa?= =?us-ascii?Q?oac0g5l1QhcIDuc6sXBCJlLcKGzWxfRDrlgvbUSqtdaT50t9YyesrXuEMqY8?= =?us-ascii?Q?00v6kIj241VWgo+IKB3PONdSC5SgQ2oz9fRRKx8ydAEL7/snAXVnfVe6Ejxq?= =?us-ascii?Q?c/Vu8Fd8gF/fK44pApuPy6UljSB4l+QNwQtyReHPrWuurq6tub9zmiiigVxF?= =?us-ascii?Q?vLtjMZPKokOQIc2JH5zYbRU+nD7F+cg8YFtdeqE9YZvRSm3ZxvVc3aZBbN/F?= =?us-ascii?Q?v+q+9ypFp6CEZnDjfIDYmC6/H5WdWPUapw4dvA8/bNGoHTzo28IMxxyulHza?= =?us-ascii?Q?StlhP1gl4xkZvekneDaqT4p7ccqPgryfvU55q6Y0jkk2gIf5BjLUoTCThCgg?= =?us-ascii?Q?Q9avYGID2RhjtGHiEIlPfvYQWjDw5sOnG+xsTRtb4adMjxF3WkiVTHsRwNZu?= =?us-ascii?Q?hgLQIAWjFjg43MRhRerSi8mpxGhPl5W20Xmdt7f+4fJB4lbNE/03+fOUQqzB?= =?us-ascii?Q?q0NKs2qBDbTCUuhQwVvI4N4MbA724AcuzhH7sZqteH4RKGWiVt/LyOhrwseP?= =?us-ascii?Q?8eXOJArqimBFxMe0h1tYZY6sHRp9GeW85oOA4wdKokXa2YifjuKKvmVzqYqY?= =?us-ascii?Q?wztn8TsR79FMegXEntIy3E4pUbSRIckCdRPU0KHTb2t87OTC3XI8v/XfBWUp?= =?us-ascii?Q?tArwb8bXwivD38RWFrPw1n5cgcqDjXqVhlYo45EkFaIxvJIDgi+JKK/0mnf0?= =?us-ascii?Q?Vpfn0zCl+LpA=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0131;6:4oIHnp4dlw40c3KQFZWhWTYThpvhhwrQGOtkFOfEKV80w2l2nQdDLDVUiv8cA54d8Pp2GSp/Dai7j5mp2fa5F2AwPhivRM0FBaJ1eFvKddonCxVDOyw3+glwZJhKBwg46F8Ex420mLGL9Z/CjUa7reiLatp+FA+qBjnKBYPcWQAbV8i6IT+HC6SzoGVJSQpRWQAMBKT9G5AMCTx4h0Gbt/tl+SMrUILg8LcbpUBmqOysGH9lEOHybFEjS27FDKegNKNebzfZBnMbGlMC1whJXwcnv/n8MKyze+1irCjqLn9z8BPlh3uwlaTEduLZblgBPi654Ip0qemBg9VQKh94wEgOL+aF4ycUAWpPWW8jN6VUNtZkIIZ1SAS0aPX6s6bChNTFTiRHFu+ndi0Xer9qigCwcfuE3uOEK/WK/o2fdJY=;5:dZDwwsX+/SOVeLjJoOe6IbhcGkFUlioNTaP6HwL1RhtbrWF676KTl1unzsMY4crQQ/JQbobn7cmUbpcQS8Xk1ZesgdDVJkSm6DdygZ4y9VVaIXsDpbPEIxoNdlDwMBGPVMipr0kAdj+u37+sejEPYg==;24:+u+2zxQ6DZFnCgjPLcc7oWTvh5p7LK70FaMEwie/jHCj8CBrfN/htk5CBNZQmAeMGmZdQlC6KaLRz1Xvrpfjx3bGwrVhy2VVUy1aJKP/D3U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR1201MB0131;7:CXxJ2oFgemVsuzzMS+CqCPs6vv61SZ2AAXAIcoEA7w5jL8VvmQDGEi4kKegfX61BXsiWHgeH0vMPcRiHO69mnGaeoVn8R7cXosWapN9nEfwJqb11K8j07V09hQ+pu2vQzDj2Kmx30EXlctTmDMLFqkwDvR9TeHeb9YLYoZPPaigHK1ZBAiPkEl4AU933OjByAxHBWgdRdlfrC0tXaCzqn2ZDJ8SLw8fHUR/4xMs2X6BmKcl2uvMA9Rk+L+x6WDQ4SPfgFju1Rjb7Wj38K+mWhcItz2SJRPzVKTBzi9QrLvtNXSgU0GykJg7NYpWPdaiZXW/gvY5PiSY+I9zmjd6IJQ==;20:tv4yeQYUE+hTagKl279qaxOSLEQmJduVWSW+99d6U9iu4fV/ZbbUs0Oba4KBu5Lm167xi3ZI5IZfyfW0uoFy4L9FKsAORr59zML69a4D8K4RZrNt+Qev6ymSZco+f9i7S4fRitY3NMmt5JkbummrHSO6iro/DjQgxSCdBiHg7FAlD7KWm8ferOfIDAzV3hVA8gCBw+zNdpa9DiAFUQ7GFLuAKoMG5gv+l2M1nFV0XpOhhi2SeQEr9KScGGDmIq3r X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2017 19:29:41.5295 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR1201MB0131 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yazen Ghannam Scalable MCA systems have a new MCA_CONFIG register that we use to configure each bank. We currently use this when we set up thresholding. However, this is logically separate. Move setup of MCA_CONFIG into a separate function. Signed-off-by: Yazen Ghannam --- arch/x86/kernel/cpu/mcheck/mce_amd.c | 48 ++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c index 4e459e0..95870b3 100644 --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c @@ -433,7 +433,7 @@ prepare_threshold_block(unsigned int bank, unsigned int block, u32 addr, int offset, u32 misc_high) { unsigned int cpu = smp_processor_id(); - u32 smca_low, smca_high, smca_addr; + u32 smca_low, smca_high; struct threshold_block b; int new; @@ -457,7 +457,29 @@ prepare_threshold_block(unsigned int bank, unsigned int block, u32 addr, goto set_offset; } - smca_addr = MSR_AMD64_SMCA_MCx_CONFIG(bank); + /* Gather LVT offset for thresholding: */ + if (rdmsr_safe(MSR_CU_DEF_ERR, &smca_low, &smca_high)) + goto out; + + new = (smca_low & SMCA_THR_LVT_OFF) >> 12; + +set_offset: + offset = setup_APIC_mce_threshold(offset, new); + + if ((offset == new) && (mce_threshold_vector != amd_threshold_interrupt)) + mce_threshold_vector = amd_threshold_interrupt; + +done: + mce_threshold_block_init(&b, offset); + +out: + return offset; +} + +static void set_smca_config(unsigned int bank) +{ + u32 smca_low, smca_high; + u32 smca_addr = MSR_AMD64_SMCA_MCx_CONFIG(bank); if (!rdmsr_safe(smca_addr, &smca_low, &smca_high)) { /* @@ -487,24 +509,6 @@ prepare_threshold_block(unsigned int bank, unsigned int block, u32 addr, wrmsr(smca_addr, smca_low, smca_high); } - - /* Gather LVT offset for thresholding: */ - if (rdmsr_safe(MSR_CU_DEF_ERR, &smca_low, &smca_high)) - goto out; - - new = (smca_low & SMCA_THR_LVT_OFF) >> 12; - -set_offset: - offset = setup_APIC_mce_threshold(offset, new); - - if ((offset == new) && (mce_threshold_vector != amd_threshold_interrupt)) - mce_threshold_vector = amd_threshold_interrupt; - -done: - mce_threshold_block_init(&b, offset); - -out: - return offset; } /* cpu init entry point, called from mce.c with preempt off */ @@ -515,8 +519,10 @@ void mce_amd_feature_init(struct cpuinfo_x86 *c) int offset = -1; for (bank = 0; bank < mca_cfg.banks; ++bank) { - if (mce_flags.smca) + if (mce_flags.smca) { get_smca_bank_info(bank); + set_smca_config(bank); + } for (block = 0; block < NR_BLOCKS; ++block) { address = get_block_address(cpu, address, low, high, bank, block); -- 2.7.4