Commit 1bbc9a66 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc

* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
  powerpc/kvm: Remove problematic BUILD_BUG_ON statement
  powerpc/pci: Fix regression in powerpc MSI-X
  powerpc: Avoid giving out RTC dates below EPOCH
  powerpc/mm: Remove debug context clamping from nohash code
  powerpc: Cleanup Kconfig selection of hugetlbfs support
parents 2c75910f 38634e67
...@@ -414,6 +414,10 @@ config ARCH_SPARSEMEM_DEFAULT ...@@ -414,6 +414,10 @@ config ARCH_SPARSEMEM_DEFAULT
config ARCH_POPULATES_NODE_MAP config ARCH_POPULATES_NODE_MAP
def_bool y def_bool y
config SYS_SUPPORTS_HUGETLBFS
def_bool y
depends on PPC_BOOK3S_64
source "mm/Kconfig" source "mm/Kconfig"
config ARCH_MEMORY_PROBE config ARCH_MEMORY_PROBE
......
...@@ -777,7 +777,7 @@ int update_persistent_clock(struct timespec now) ...@@ -777,7 +777,7 @@ int update_persistent_clock(struct timespec now)
return ppc_md.set_rtc_time(&tm); return ppc_md.set_rtc_time(&tm);
} }
void read_persistent_clock(struct timespec *ts) static void __read_persistent_clock(struct timespec *ts)
{ {
struct rtc_time tm; struct rtc_time tm;
static int first = 1; static int first = 1;
...@@ -800,10 +800,23 @@ void read_persistent_clock(struct timespec *ts) ...@@ -800,10 +800,23 @@ void read_persistent_clock(struct timespec *ts)
return; return;
} }
ppc_md.get_rtc_time(&tm); ppc_md.get_rtc_time(&tm);
ts->tv_sec = mktime(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday, ts->tv_sec = mktime(tm.tm_year+1900, tm.tm_mon+1, tm.tm_mday,
tm.tm_hour, tm.tm_min, tm.tm_sec); tm.tm_hour, tm.tm_min, tm.tm_sec);
} }
void read_persistent_clock(struct timespec *ts)
{
__read_persistent_clock(ts);
/* Sanitize it in case real time clock is set below EPOCH */
if (ts->tv_sec < 0) {
ts->tv_sec = 0;
ts->tv_nsec = 0;
}
}
/* clocksource code */ /* clocksource code */
static cycle_t rtc_read(struct clocksource *cs) static cycle_t rtc_read(struct clocksource *cs)
{ {
......
...@@ -48,7 +48,11 @@ static inline void kvmppc_set_exit_type(struct kvm_vcpu *vcpu, int type) {} ...@@ -48,7 +48,11 @@ static inline void kvmppc_set_exit_type(struct kvm_vcpu *vcpu, int type) {}
static inline void kvmppc_account_exit_stat(struct kvm_vcpu *vcpu, int type) static inline void kvmppc_account_exit_stat(struct kvm_vcpu *vcpu, int type)
{ {
/* type has to be known at build time for optimization */ /* type has to be known at build time for optimization */
/* The BUILD_BUG_ON below breaks in funny ways, commented out
* for now ... -BenH
BUILD_BUG_ON(__builtin_constant_p(type)); BUILD_BUG_ON(__builtin_constant_p(type));
*/
switch (type) { switch (type) {
case EXT_INTR_EXITS: case EXT_INTR_EXITS:
vcpu->stat.ext_intr_exits++; vcpu->stat.ext_intr_exits++;
......
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
* also clear mm->cpu_vm_mask bits when processes are migrated * also clear mm->cpu_vm_mask bits when processes are migrated
*/ */
#define DEBUG_MAP_CONSISTENCY //#define DEBUG_MAP_CONSISTENCY
#define DEBUG_CLAMP_LAST_CONTEXT 31 //#define DEBUG_CLAMP_LAST_CONTEXT 31
//#define DEBUG_HARDER //#define DEBUG_HARDER
/* We don't use DEBUG because it tends to be compiled in always nowadays /* We don't use DEBUG because it tends to be compiled in always nowadays
......
...@@ -432,8 +432,6 @@ static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) ...@@ -432,8 +432,6 @@ static int rtas_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
/* Read config space back so we can restore after reset */ /* Read config space back so we can restore after reset */
read_msi_msg(virq, &msg); read_msi_msg(virq, &msg);
entry->msg = msg; entry->msg = msg;
unmask_msi_irq(virq);
} }
return 0; return 0;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/radix-tree.h> #include <linux/radix-tree.h>
#include <linux/cpu.h> #include <linux/cpu.h>
#include <linux/msi.h>
#include <linux/of.h> #include <linux/of.h>
#include <asm/firmware.h> #include <asm/firmware.h>
...@@ -219,6 +220,14 @@ static void xics_unmask_irq(unsigned int virq) ...@@ -219,6 +220,14 @@ static void xics_unmask_irq(unsigned int virq)
static unsigned int xics_startup(unsigned int virq) static unsigned int xics_startup(unsigned int virq)
{ {
/*
* The generic MSI code returns with the interrupt disabled on the
* card, using the MSI mask bits. Firmware doesn't appear to unmask
* at that level, so we do it here by hand.
*/
if (irq_to_desc(virq)->msi_desc)
unmask_msi_irq(virq);
/* unmask it */ /* unmask it */
xics_unmask_irq(virq); xics_unmask_irq(virq);
return 0; return 0;
......
...@@ -135,7 +135,7 @@ config TMPFS_POSIX_ACL ...@@ -135,7 +135,7 @@ config TMPFS_POSIX_ACL
config HUGETLBFS config HUGETLBFS
bool "HugeTLB file system support" bool "HugeTLB file system support"
depends on X86 || IA64 || PPC_BOOK3S_64 || SPARC64 || (S390 && 64BIT) || \ depends on X86 || IA64 || SPARC64 || (S390 && 64BIT) || \
SYS_SUPPORTS_HUGETLBFS || BROKEN SYS_SUPPORTS_HUGETLBFS || BROKEN
help help
hugetlbfs is a filesystem backing for HugeTLB pages, based on hugetlbfs is a filesystem backing for HugeTLB pages, based on
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment