Merge branch 'parisc-4.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux

Pull parisc updates from Helge Deller:
 "The most important changes in this patchset are:

   - re-enable 64bit PCI bus addresses which were temporarily disabled
     for PA-RISC in kernel 4.2

   - fix the 64bit CAS operation in the LWS path which now enables us to
     enable the 64bit gcc atomic builtins even on 32bit userspace with
     64bit kernel

   - fix a long-standing bug which sometimes crashed kernel at bootup
     while serial interrupt wasn't registered yet"

* 'parisc-4.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  parisc: Use platform_device_register_simple("rtc-generic")
  parisc: Drop CONFIG_SMP around update_cr16_clocksource()
  parisc: Use double word condition in 64bit CAS operation
  parisc: Filter out spurious interrupts in PA-RISC irq handler
  parisc: Additionally check for in_atomic() in page fault handler
  PCI,parisc: Enable 64-bit bus addresses on PA-RISC
  parisc: Define ioremap_uc and ioremap_wc
This commit is contained in:
Linus Torvalds 2015-09-08 17:45:05 -07:00
commit 839fe9156f
7 changed files with 21 additions and 24 deletions

View File

@ -137,6 +137,8 @@ static inline void __iomem * ioremap(unsigned long offset, unsigned long size)
return __ioremap(offset, size, _PAGE_NO_CACHE); return __ioremap(offset, size, _PAGE_NO_CACHE);
} }
#define ioremap_nocache(off, sz) ioremap((off), (sz)) #define ioremap_nocache(off, sz) ioremap((off), (sz))
#define ioremap_wc ioremap_nocache
#define ioremap_uc ioremap_nocache
extern void iounmap(const volatile void __iomem *addr); extern void iounmap(const volatile void __iomem *addr);

View File

@ -507,8 +507,8 @@ void do_cpu_irq_mask(struct pt_regs *regs)
struct pt_regs *old_regs; struct pt_regs *old_regs;
unsigned long eirr_val; unsigned long eirr_val;
int irq, cpu = smp_processor_id(); int irq, cpu = smp_processor_id();
#ifdef CONFIG_SMP
struct irq_data *irq_data; struct irq_data *irq_data;
#ifdef CONFIG_SMP
cpumask_t dest; cpumask_t dest;
#endif #endif
@ -521,8 +521,13 @@ void do_cpu_irq_mask(struct pt_regs *regs)
goto set_out; goto set_out;
irq = eirr_to_irq(eirr_val); irq = eirr_to_irq(eirr_val);
#ifdef CONFIG_SMP
irq_data = irq_get_irq_data(irq); irq_data = irq_get_irq_data(irq);
/* Filter out spurious interrupts, mostly from serial port at bootup */
if (unlikely(!irq_desc_has_action(irq_data_to_desc(irq_data))))
goto set_out;
#ifdef CONFIG_SMP
cpumask_copy(&dest, irq_data_get_affinity_mask(irq_data)); cpumask_copy(&dest, irq_data_get_affinity_mask(irq_data));
if (irqd_is_per_cpu(irq_data) && if (irqd_is_per_cpu(irq_data) &&
!cpumask_test_cpu(smp_processor_id(), &dest)) { !cpumask_test_cpu(smp_processor_id(), &dest)) {

View File

@ -821,7 +821,7 @@ cas2_action:
/* 64bit CAS */ /* 64bit CAS */
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT
19: ldd,ma 0(%sr3,%r26), %r29 19: ldd,ma 0(%sr3,%r26), %r29
sub,= %r29, %r25, %r0 sub,*= %r29, %r25, %r0
b,n cas2_end b,n cas2_end
20: std,ma %r24, 0(%sr3,%r26) 20: std,ma %r24, 0(%sr3,%r26)
copy %r0, %r28 copy %r0, %r28

View File

@ -202,7 +202,6 @@ static struct clocksource clocksource_cr16 = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS, .flags = CLOCK_SOURCE_IS_CONTINUOUS,
}; };
#ifdef CONFIG_SMP
int update_cr16_clocksource(void) int update_cr16_clocksource(void)
{ {
/* since the cr16 cycle counters are not synchronized across CPUs, /* since the cr16 cycle counters are not synchronized across CPUs,
@ -214,12 +213,6 @@ int update_cr16_clocksource(void)
return 0; return 0;
} }
#else
int update_cr16_clocksource(void)
{
return 0; /* no change */
}
#endif /*CONFIG_SMP*/
void __init start_cpu_itimer(void) void __init start_cpu_itimer(void)
{ {
@ -231,20 +224,14 @@ void __init start_cpu_itimer(void)
per_cpu(cpu_data, cpu).it_value = next_tick; per_cpu(cpu_data, cpu).it_value = next_tick;
} }
static struct platform_device rtc_generic_dev = {
.name = "rtc-generic",
.id = -1,
};
static int __init rtc_init(void) static int __init rtc_init(void)
{ {
if (platform_device_register(&rtc_generic_dev) < 0) struct platform_device *pdev;
printk(KERN_ERR "unable to register rtc device...\n");
/* not necessarily an error */ pdev = platform_device_register_simple("rtc-generic", -1, NULL, 0);
return 0; return PTR_ERR_OR_ZERO(pdev);
} }
module_init(rtc_init); device_initcall(rtc_init);
void read_persistent_clock(struct timespec *ts) void read_persistent_clock(struct timespec *ts)
{ {

View File

@ -207,7 +207,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
int fault; int fault;
unsigned int flags; unsigned int flags;
if (pagefault_disabled()) if (faulthandler_disabled())
goto no_context; goto no_context;
tsk = current; tsk = current;

View File

@ -1555,8 +1555,11 @@ lba_driver_probe(struct parisc_device *dev)
if (lba_dev->hba.lmmio_space.flags) if (lba_dev->hba.lmmio_space.flags)
pci_add_resource_offset(&resources, &lba_dev->hba.lmmio_space, pci_add_resource_offset(&resources, &lba_dev->hba.lmmio_space,
lba_dev->hba.lmmio_space_offset); lba_dev->hba.lmmio_space_offset);
if (lba_dev->hba.gmmio_space.flags) if (lba_dev->hba.gmmio_space.flags) {
pci_add_resource(&resources, &lba_dev->hba.gmmio_space); /* pci_add_resource(&resources, &lba_dev->hba.gmmio_space); */
pr_warn("LBA: Not registering GMMIO space %pR\n",
&lba_dev->hba.gmmio_space);
}
pci_add_resource(&resources, &lba_dev->hba.bus_num); pci_add_resource(&resources, &lba_dev->hba.bus_num);

View File

@ -2,7 +2,7 @@
# PCI configuration # PCI configuration
# #
config PCI_BUS_ADDR_T_64BIT config PCI_BUS_ADDR_T_64BIT
def_bool y if (ARCH_DMA_ADDR_T_64BIT || (64BIT && !PARISC)) def_bool y if (ARCH_DMA_ADDR_T_64BIT || 64BIT)
depends on PCI depends on PCI
config PCI_MSI config PCI_MSI