Commit 0b021260 authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://kernel.bkbits.net/davem/sparc-2.5

into home.osdl.org:/home/torvalds/v2.5/linux
parents 703d8dae ff97c0a4
......@@ -66,7 +66,7 @@ sparc_ramdisk_image:
sparc_ramdisk_size:
.word 0
.xword reboot_command
.xword bootstr_len
.xword bootstr_info
.word _end
/* We must be careful, 32-bit OpenBOOT will get confused if it
......@@ -740,8 +740,9 @@ swapper_pg_dir:
.data
.align 8
.globl prom_tba
.globl prom_tba, tlb_type
prom_tba: .xword 0
tlb_type: .word 0 /* Must NOT end up in BSS */
.section ".fixup",#alloc,#execinstr
.globl __ret_efault
__ret_efault:
......
......@@ -804,25 +804,20 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,
/* Return the domain nuber for this pci bus */
int pci_domain_nr(struct pci_bus *bus)
int pci_domain_nr(struct pci_bus *pbus)
{
struct pcidev_cookie *cookie = bus->sysdata;
struct pci_pbm_info *pbm = pbus->sysdata;
int ret;
if (cookie != NULL) {
struct pci_pbm_info *pbm = cookie->pbm;
if (pbm == NULL || pbm->parent == NULL) {
ret = -ENXIO;
} else {
struct pci_controller_info *p = pbm->parent;
ret = p->index;
if (p->pbms_same_domain == 0)
ret = ((ret << 1) +
((pbm == &pbm->parent->pbm_B) ? 1 : 0));
}
} else {
if (pbm == NULL || pbm->parent == NULL) {
ret = -ENXIO;
} else {
struct pci_controller_info *p = pbm->parent;
ret = p->index;
if (p->pbms_same_domain == 0)
ret = ((ret << 1) +
((pbm == &pbm->parent->pbm_B) ? 1 : 0));
}
return ret;
......
......@@ -48,8 +48,6 @@ unsigned long *sparc64_valid_addr_bitmap;
unsigned long phys_base;
unsigned long pfn_base;
enum ultra_tlb_layout tlb_type = spitfire;
/* get_new_mmu_context() uses "cache + 1". */
spinlock_t ctx_alloc_lock = SPIN_LOCK_UNLOCKED;
unsigned long tlb_context_cache = CTX_FIRST_VERSION - 1;
......
......@@ -15,16 +15,22 @@
*/
#define BARG_LEN 256
int bootstr_len = BARG_LEN;
static int bootstr_valid = 0;
static char bootstr_buf[BARG_LEN] = { 0 };
struct {
int bootstr_len;
int bootstr_valid;
char bootstr_buf[BARG_LEN];
} bootstr_info = {
.bootstr_len = BARG_LEN,
};
char * __init
prom_getbootargs(void)
{
/* This check saves us from a panic when bootfd patches args. */
if (bootstr_valid) return bootstr_buf;
prom_getstring(prom_chosen_node, "bootargs", bootstr_buf, BARG_LEN);
bootstr_valid = 1;
return bootstr_buf;
if (bootstr_info.bootstr_valid)
return bootstr_info.bootstr_buf;
prom_getstring(prom_chosen_node, "bootargs",
bootstr_info.bootstr_buf, BARG_LEN);
bootstr_info.bootstr_valid = 1;
return bootstr_info.bootstr_buf;
}
......@@ -80,8 +80,8 @@ struct sunkbd {
char name[64];
char phys[32];
char type;
char reset;
char layout;
volatile char reset;
volatile char layout;
};
/*
......
......@@ -102,6 +102,7 @@ struct uart_sunsu_port {
int l1_down;
#ifdef CONFIG_SERIO
struct serio serio;
int serio_open;
#endif
};
......@@ -1021,12 +1022,13 @@ static int sunsu_serio_write(struct serio *serio, unsigned char ch)
static int sunsu_serio_open(struct serio *serio)
{
struct uart_sunsu_port *up = serio->driver;
unsigned long flags;
int ret;
spin_lock_irqsave(&sunsu_serio_lock, flags);
if (serio->private == NULL) {
serio->private = (void *) -1L;
if (!up->serio_open) {
up->serio_open = 1;
ret = 0;
} else
ret = -EBUSY;
......@@ -1037,10 +1039,11 @@ static int sunsu_serio_open(struct serio *serio)
static void sunsu_serio_close(struct serio *serio)
{
struct uart_sunsu_port *up = serio->driver;
unsigned long flags;
spin_lock_irqsave(&sunsu_serio_lock, flags);
serio->private = NULL;
up->serio_open = 0;
spin_unlock_irqrestore(&sunsu_serio_lock, flags);
}
......
......@@ -112,6 +112,7 @@ struct uart_sunzilog_port {
#ifdef CONFIG_SERIO
struct serio serio;
int serio_open;
#endif
};
......@@ -1311,12 +1312,13 @@ static int sunzilog_serio_write(struct serio *serio, unsigned char ch)
static int sunzilog_serio_open(struct serio *serio)
{
struct uart_sunzilog_port *up = serio->driver;
unsigned long flags;
int ret;
spin_lock_irqsave(&sunzilog_serio_lock, flags);
if (serio->private == NULL) {
serio->private = (void *) -1L;
if (!up->serio_open) {
up->serio_open = 1;
ret = 0;
} else
ret = -EBUSY;
......@@ -1327,10 +1329,11 @@ static int sunzilog_serio_open(struct serio *serio)
static void sunzilog_serio_close(struct serio *serio)
{
struct uart_sunzilog_port *up = serio->driver;
unsigned long flags;
spin_lock_irqsave(&sunzilog_serio_lock, flags);
serio->private = NULL;
up->serio_open = 0;
spin_unlock_irqrestore(&sunzilog_serio_lock, flags);
}
......
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