All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] x86/amd_nb: Two fixes
@ 2016-06-16 17:13 Borislav Petkov
  2016-06-16 17:13 ` [PATCH 1/2] x86/amd_nb: Return negative value when no northbridges Borislav Petkov
  2016-06-16 17:13 ` [PATCH 2/2] x86/amd_nb: Cleanup init path Borislav Petkov
  0 siblings, 2 replies; 5+ messages in thread
From: Borislav Petkov @ 2016-06-16 17:13 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Tony Battersby, LKML

From: Borislav Petkov <bp@suse.de>

Hi,

the first one is CC:stable so please queue it for tip:x86/urgent when
you get a chance. The second one is a simple cleanup and can go in 4.8.

Thanks.

Borislav Petkov (2):
  x86/amd_nb: Return negative value when no northbridges
  x86/amd_nb: Cleanup init path

 arch/x86/kernel/amd_nb.c | 41 ++++++++++++++++-------------------------
 1 file changed, 16 insertions(+), 25 deletions(-)

-- 
2.7.3

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] x86/amd_nb: Return negative value when no northbridges
  2016-06-16 17:13 [PATCH 0/2] x86/amd_nb: Two fixes Borislav Petkov
@ 2016-06-16 17:13 ` Borislav Petkov
  2016-07-01  7:40   ` [tip:x86/urgent] x86/amd_nb: Fix boot crash on non-AMD systems tip-bot for Borislav Petkov
  2016-06-16 17:13 ` [PATCH 2/2] x86/amd_nb: Cleanup init path Borislav Petkov
  1 sibling, 1 reply; 5+ messages in thread
From: Borislav Petkov @ 2016-06-16 17:13 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Tony Battersby, LKML

From: Borislav Petkov <bp@suse.de>

AMD northbridges users call amd_cache_northbridges() and it returns
a negative value to signal that we weren't able to cache/detect any
northbridges on the system.

At least, it should do so as all its callers expect it to do so. But it
does return a negative value only when kmalloc fails.

Fix it to return -ENODEV if there are no NBs cached as otherwise, amd_nb
users like amd64_edac, for example, which relies on it to know whether
it should load or not, gets loaded on systems like Intel Xeons where it
shouldn't.

Reported-and-tested-by: Tony Battersby <tonyb@cybernetics.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: <stable@vger.kernel.org>
Link: https://lkml.kernel.org/r/5761BEB0.9000807@cybernetics.com
---
 arch/x86/kernel/amd_nb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c
index a147e676fc7b..e991d5c8bb3a 100644
--- a/arch/x86/kernel/amd_nb.c
+++ b/arch/x86/kernel/amd_nb.c
@@ -71,8 +71,8 @@ int amd_cache_northbridges(void)
 	while ((misc = next_northbridge(misc, amd_nb_misc_ids)) != NULL)
 		i++;
 
-	if (i == 0)
-		return 0;
+	if (!i)
+		return -ENODEV;
 
 	nb = kzalloc(i * sizeof(struct amd_northbridge), GFP_KERNEL);
 	if (!nb)
-- 
2.7.3

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/2] x86/amd_nb: Cleanup init path
  2016-06-16 17:13 [PATCH 0/2] x86/amd_nb: Two fixes Borislav Petkov
  2016-06-16 17:13 ` [PATCH 1/2] x86/amd_nb: Return negative value when no northbridges Borislav Petkov
@ 2016-06-16 17:13 ` Borislav Petkov
  2016-07-01  7:46   ` [tip:x86/cpu] x86/amd_nb: Clean up " tip-bot for Borislav Petkov
  1 sibling, 1 reply; 5+ messages in thread
From: Borislav Petkov @ 2016-06-16 17:13 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Tony Battersby, LKML

From: Borislav Petkov <bp@suse.de>

The initcall had unnecessary pr_notice() messages which are useless
noise on distro kernels.

Also, push the GART init error message where it belongs, *after* the
check whether the current hw we're loaded on, supports GART at all.

Signed-off-by: Borislav Petkov <bp@suse.de>
---
 arch/x86/kernel/amd_nb.c | 37 ++++++++++++++-----------------------
 1 file changed, 14 insertions(+), 23 deletions(-)

diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c
index e991d5c8bb3a..e45ec2b4e15e 100644
--- a/arch/x86/kernel/amd_nb.c
+++ b/arch/x86/kernel/amd_nb.c
@@ -219,24 +219,22 @@ int amd_set_subcaches(int cpu, unsigned long mask)
 	return 0;
 }
 
-static int amd_cache_gart(void)
+static void amd_cache_gart(void)
 {
 	u16 i;
 
-       if (!amd_nb_has_feature(AMD_NB_GART))
-               return 0;
-
-       flush_words = kmalloc(amd_nb_num() * sizeof(u32), GFP_KERNEL);
-       if (!flush_words) {
-               amd_northbridges.flags &= ~AMD_NB_GART;
-               return -ENOMEM;
-       }
+	if (!amd_nb_has_feature(AMD_NB_GART))
+		return;
 
-       for (i = 0; i != amd_nb_num(); i++)
-               pci_read_config_dword(node_to_amd_nb(i)->misc, 0x9c,
-                                     &flush_words[i]);
+	flush_words = kmalloc(amd_nb_num() * sizeof(u32), GFP_KERNEL);
+	if (!flush_words) {
+		amd_northbridges.flags &= ~AMD_NB_GART;
+		pr_notice("Cannot initialize GART flush words, GART support disabled\n");
+		return;
+	}
 
-       return 0;
+	for (i = 0; i != amd_nb_num(); i++)
+		pci_read_config_dword(node_to_amd_nb(i)->misc, 0x9c, &flush_words[i]);
 }
 
 void amd_flush_garts(void)
@@ -278,17 +276,10 @@ EXPORT_SYMBOL_GPL(amd_flush_garts);
 
 static __init int init_amd_nbs(void)
 {
-	int err = 0;
+	amd_cache_northbridges();
+	amd_cache_gart();
 
-	err = amd_cache_northbridges();
-
-	if (err < 0)
-		pr_notice("Cannot enumerate AMD northbridges\n");
-
-	if (amd_cache_gart() < 0)
-		pr_notice("Cannot initialize GART flush words, GART support disabled\n");
-
-	return err;
+	return 0;
 }
 
 /* This has to go after the PCI subsystem */
-- 
2.7.3

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [tip:x86/urgent] x86/amd_nb: Fix boot crash on non-AMD systems
  2016-06-16 17:13 ` [PATCH 1/2] x86/amd_nb: Return negative value when no northbridges Borislav Petkov
@ 2016-07-01  7:40   ` tip-bot for Borislav Petkov
  0 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Borislav Petkov @ 2016-07-01  7:40 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: bp, tonyb, linux-kernel, peterz, stable, torvalds, mingo, tglx, hpa

Commit-ID:  1ead852dd88779eda12cb09cc894a03d9abfe1ec
Gitweb:     http://git.kernel.org/tip/1ead852dd88779eda12cb09cc894a03d9abfe1ec
Author:     Borislav Petkov <bp@suse.de>
AuthorDate: Thu, 16 Jun 2016 19:13:49 +0200
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 1 Jul 2016 09:35:35 +0200

x86/amd_nb: Fix boot crash on non-AMD systems

Fix boot crash that triggers if this driver is built into a kernel and
run on non-AMD systems.

AMD northbridges users call amd_cache_northbridges() and it returns
a negative value to signal that we weren't able to cache/detect any
northbridges on the system.

At least, it should do so as all its callers expect it to do so. But it
does return a negative value only when kmalloc() fails.

Fix it to return -ENODEV if there are no NBs cached as otherwise, amd_nb
users like amd64_edac, for example, which relies on it to know whether
it should load or not, gets loaded on systems like Intel Xeons where it
shouldn't.

Reported-and-tested-by: Tony Battersby <tonyb@cybernetics.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: <stable@vger.kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1466097230-5333-2-git-send-email-bp@alien8.de
Link: https://lkml.kernel.org/r/5761BEB0.9000807@cybernetics.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/amd_nb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c
index a147e67..e991d5c 100644
--- a/arch/x86/kernel/amd_nb.c
+++ b/arch/x86/kernel/amd_nb.c
@@ -71,8 +71,8 @@ int amd_cache_northbridges(void)
 	while ((misc = next_northbridge(misc, amd_nb_misc_ids)) != NULL)
 		i++;
 
-	if (i == 0)
-		return 0;
+	if (!i)
+		return -ENODEV;
 
 	nb = kzalloc(i * sizeof(struct amd_northbridge), GFP_KERNEL);
 	if (!nb)

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [tip:x86/cpu] x86/amd_nb: Clean up init path
  2016-06-16 17:13 ` [PATCH 2/2] x86/amd_nb: Cleanup init path Borislav Petkov
@ 2016-07-01  7:46   ` tip-bot for Borislav Petkov
  0 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Borislav Petkov @ 2016-07-01  7:46 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: peterz, hpa, mingo, bp, tglx, linux-kernel, tonyb, torvalds

Commit-ID:  09c6c30e72ce6892b21e6cf76b4508ad82a38636
Gitweb:     http://git.kernel.org/tip/09c6c30e72ce6892b21e6cf76b4508ad82a38636
Author:     Borislav Petkov <bp@suse.de>
AuthorDate: Thu, 16 Jun 2016 19:13:50 +0200
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 1 Jul 2016 09:36:12 +0200

x86/amd_nb: Clean up init path

The initcall had unnecessary pr_notice() messages which are useless
noise on distro kernels.

Also, push the GART init error message where it belongs, *after* the
check whether the current hw we're loaded on, supports GART at all.

Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Battersby <tonyb@cybernetics.com>
Link: http://lkml.kernel.org/r/1466097230-5333-3-git-send-email-bp@alien8.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/amd_nb.c | 37 ++++++++++++++-----------------------
 1 file changed, 14 insertions(+), 23 deletions(-)

diff --git a/arch/x86/kernel/amd_nb.c b/arch/x86/kernel/amd_nb.c
index e991d5c..e45ec2b 100644
--- a/arch/x86/kernel/amd_nb.c
+++ b/arch/x86/kernel/amd_nb.c
@@ -219,24 +219,22 @@ int amd_set_subcaches(int cpu, unsigned long mask)
 	return 0;
 }
 
-static int amd_cache_gart(void)
+static void amd_cache_gart(void)
 {
 	u16 i;
 
-       if (!amd_nb_has_feature(AMD_NB_GART))
-               return 0;
-
-       flush_words = kmalloc(amd_nb_num() * sizeof(u32), GFP_KERNEL);
-       if (!flush_words) {
-               amd_northbridges.flags &= ~AMD_NB_GART;
-               return -ENOMEM;
-       }
+	if (!amd_nb_has_feature(AMD_NB_GART))
+		return;
 
-       for (i = 0; i != amd_nb_num(); i++)
-               pci_read_config_dword(node_to_amd_nb(i)->misc, 0x9c,
-                                     &flush_words[i]);
+	flush_words = kmalloc(amd_nb_num() * sizeof(u32), GFP_KERNEL);
+	if (!flush_words) {
+		amd_northbridges.flags &= ~AMD_NB_GART;
+		pr_notice("Cannot initialize GART flush words, GART support disabled\n");
+		return;
+	}
 
-       return 0;
+	for (i = 0; i != amd_nb_num(); i++)
+		pci_read_config_dword(node_to_amd_nb(i)->misc, 0x9c, &flush_words[i]);
 }
 
 void amd_flush_garts(void)
@@ -278,17 +276,10 @@ EXPORT_SYMBOL_GPL(amd_flush_garts);
 
 static __init int init_amd_nbs(void)
 {
-	int err = 0;
+	amd_cache_northbridges();
+	amd_cache_gart();
 
-	err = amd_cache_northbridges();
-
-	if (err < 0)
-		pr_notice("Cannot enumerate AMD northbridges\n");
-
-	if (amd_cache_gart() < 0)
-		pr_notice("Cannot initialize GART flush words, GART support disabled\n");
-
-	return err;
+	return 0;
 }
 
 /* This has to go after the PCI subsystem */

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-07-01  8:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-16 17:13 [PATCH 0/2] x86/amd_nb: Two fixes Borislav Petkov
2016-06-16 17:13 ` [PATCH 1/2] x86/amd_nb: Return negative value when no northbridges Borislav Petkov
2016-07-01  7:40   ` [tip:x86/urgent] x86/amd_nb: Fix boot crash on non-AMD systems tip-bot for Borislav Petkov
2016-06-16 17:13 ` [PATCH 2/2] x86/amd_nb: Cleanup init path Borislav Petkov
2016-07-01  7:46   ` [tip:x86/cpu] x86/amd_nb: Clean up " tip-bot for Borislav Petkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.