From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933286AbcFOVnw (ORCPT ); Wed, 15 Jun 2016 17:43:52 -0400 Received: from mail.cybernetics.com ([173.71.130.66]:19860 "EHLO mail.cybernetics.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933222AbcFOVnt (ORCPT ); Wed, 15 Jun 2016 17:43:49 -0400 Subject: Re: lk 4.7 regression: EDAC, amd64_edac: Drop pci_register_driver() use To: Borislav Petkov References: <5761BEB0.9000807@cybernetics.com> <20160615211249.GK30309@pd.tnic> Cc: Borislav Petkov , Yazen Ghannam , linux-edac@vger.kernel.org, "linux-kernel@vger.kernel.org" From: Tony Battersby Message-ID: <5761CC0E.4040102@cybernetics.com> Date: Wed, 15 Jun 2016 17:43:42 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 MIME-Version: 1.0 In-Reply-To: <20160615211249.GK30309@pd.tnic> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/15/2016 05:12 PM, Borislav Petkov wrote: > On Wed, Jun 15, 2016 at 04:46:40PM -0400, Tony Battersby wrote: >> The following commit is causing an oops: >> >> 3f37a36b6282 ("EDAC, amd64_edac: Drop pci_register_driver() use") >> >> The oops happens when I "modprobe amd64_edac_mod" on an Intel >> Xeon-based system, or when booting the same system with amd64_edac >> built-in. Obviously the module is not meant for this hardware, but it >> tries to load anyway and then oopses. > Hmm, that shouldn't happen. AFAICT, amd_cache_northbridges() doesn't > prevent us from loading as it should. > > Can you send me your .config please? Privately is fine too. > > It is late here so I can only think of this totally untested fix right > now: > > --- > diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c > index a147e676fc7b..b913c6173c1b 100644 > --- a/arch/x86/kernel/amd_nb.c > +++ b/arch/x86/kernel/amd_nb.c > @@ -72,7 +72,7 @@ int amd_cache_northbridges(void) > i++; > > if (i == 0) > - return 0; > + return -1; > > nb = kzalloc(i * sizeof(struct amd_northbridge), GFP_KERNEL); > if (!nb) > --- > > More staring tomorrow. > > Thanks! > With that patch applied, modprobe amd64_edac_mod correctly reports "No such device" and everything is fine. I also get a new line in dmesg on boot: amd_nb: Cannot enumerate AMD northbridges You might want to consider using -ENODEV instead of -1 for callers such as init_amd_nbs() that use the error value. Tony