Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 052db7ec authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sparc updates from David Miller:

 1) Move to 4-level page tables on sparc64 and support up to 53-bits of
    physical addressing.  Kernel static image BSS size reduced by
    several megabytes.

 2) M6/M7 cpu support, from Allan Pais.

 3) Move to sparse IRQs, handle hypervisor TLB call errors more
    gracefully, and add T5 perf_event support.  From Bob Picco.

 4) Recognize cdroms and compute geometry from capacity in virtual disk
    driver, also from Allan Pais.

 5) Fix memset() return value on sparc32, from Andreas Larsson.

 6) Respect gfp flags in dma_alloc_coherent on sparc32, from Daniel
    Hellstrom.

 7) Fix handling of compound pages in virtual disk driver, from Dwight
    Engen.

 8) Fix lockdep warnings in LDC layer by moving IRQ requesting to
    ldc_alloc() from ldc_bind().

 9) Increase boot string length to 1024 bytes, from Dave Kleikamp.

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc: (31 commits)
  sparc64: Fix lockdep warnings on reboot on Ultra-5
  sparc64: Increase size of boot string to 1024 bytes
  sparc64: Kill unnecessary tables and increase MAX_BANKS.
  sparc64: sparse irq
  sparc64: Adjust vmalloc region size based upon available virtual address bits.
  sparc64: Increase MAX_PHYS_ADDRESS_BITS to 53.
  sparc64: Use kernel page tables for vmemmap.
  sparc64: Fix physical memory management regressions with large max_phys_bits.
  sparc64: Adjust KTSB assembler to support larger physical addresses.
  sparc64: Define VA hole at run time, rather than at compile time.
  sparc64: Switch to 4-level page tables.
  sparc64: Fix reversed start/end in flush_tlb_kernel_range()
  sparc64: Add vio_set_intr() to enable/disable Rx interrupts
  vio: fix reuse of vio_dring slot
  sunvdc: limit each sg segment to a page
  sunvdc: compute vdisk geometry from capacity
  sunvdc: add cdrom and v1.1 protocol support
  sparc: VIO protocol version 1.6
  sparc64: Fix hibernation code refrence to PAGE_OFFSET.
  sparc64: Move request_irq() from ldc_bind() to ldc_alloc()
  ...
parents fd9879b9 bdcf81b6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -67,6 +67,7 @@ config SPARC64
	select HAVE_SYSCALL_TRACEPOINTS
	select HAVE_CONTEXT_TRACKING
	select HAVE_DEBUG_KMEMLEAK
	select SPARSE_IRQ
	select RTC_DRV_CMOS
	select RTC_DRV_BQ4802
	select RTC_DRV_SUN4V
+4 −2
Original line number Diff line number Diff line
@@ -20,10 +20,12 @@ extern struct bus_type pci_bus_type;

static inline struct dma_map_ops *get_dma_ops(struct device *dev)
{
#if defined(CONFIG_SPARC32) && defined(CONFIG_PCI)
#ifdef CONFIG_SPARC_LEON
	if (sparc_cpu_model == sparc_leon)
		return leon_dma_ops;
	else if (dev->bus == &pci_bus_type)
#endif
#if defined(CONFIG_SPARC32) && defined(CONFIG_PCI)
	if (dev->bus == &pci_bus_type)
		return &pci32_dma_ops;
#endif
	return dma_ops;
+11 −0
Original line number Diff line number Diff line
@@ -2947,6 +2947,16 @@ unsigned long sun4v_vt_set_perfreg(unsigned long reg_num,
				   unsigned long reg_val);
#endif

#define	HV_FAST_T5_GET_PERFREG		0x1a8
#define	HV_FAST_T5_SET_PERFREG		0x1a9

#ifndef	__ASSEMBLY__
unsigned long sun4v_t5_get_perfreg(unsigned long reg_num,
				   unsigned long *reg_val);
unsigned long sun4v_t5_set_perfreg(unsigned long reg_num,
				   unsigned long reg_val);
#endif

/* Function numbers for HV_CORE_TRAP.  */
#define HV_CORE_SET_VER			0x00
#define HV_CORE_PUTCHAR			0x01
@@ -2978,6 +2988,7 @@ unsigned long sun4v_vt_set_perfreg(unsigned long reg_num,
#define HV_GRP_VF_CPU			0x0205
#define HV_GRP_KT_CPU			0x0209
#define HV_GRP_VT_CPU			0x020c
#define HV_GRP_T5_CPU			0x0211
#define HV_GRP_DIAG			0x0300

#ifndef __ASSEMBLY__
+2 −5
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@
 *
 * ino_bucket->irq allocation is made during {sun4v_,}build_irq().
 */
#define NR_IRQS    255
#define NR_IRQS		(2048)

void irq_install_pre_handler(int irq,
			     void (*func)(unsigned int, void *, void *),
@@ -57,11 +57,8 @@ unsigned int sun4u_build_msi(u32 portid, unsigned int *irq_p,
			     unsigned long iclr_base);
void sun4u_destroy_msi(unsigned int irq);

unsigned char irq_alloc(unsigned int dev_handle,
			unsigned int dev_ino);
#ifdef CONFIG_PCI_MSI
unsigned int irq_alloc(unsigned int dev_handle, unsigned int dev_ino);
void irq_free(unsigned int irq);
#endif

void __init init_IRQ(void);
void fixup_irqs(void);
+3 −2
Original line number Diff line number Diff line
@@ -53,13 +53,14 @@ struct ldc_channel;
/* Allocate state for a channel.  */
struct ldc_channel *ldc_alloc(unsigned long id,
			      const struct ldc_channel_config *cfgp,
			      void *event_arg);
			      void *event_arg,
			      const char *name);

/* Shut down and free state for a channel.  */
void ldc_free(struct ldc_channel *lp);

/* Register TX and RX queues of the link with the hypervisor.  */
int ldc_bind(struct ldc_channel *lp, const char *name);
int ldc_bind(struct ldc_channel *lp);

/* For non-RAW protocols we need to complete a handshake before
 * communication can proceed.  ldc_connect() does that, if the
Loading