Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (114 commits) [POWERPC] Fix ohare IDE irq workaround on old powermacs [POWERPC] EEH: Power4 systems sometimes need multiple resets. [POWERPC] Include <asm/mmu.h> in arch/powerpc/sysdev/fsl_soc.h for phys_addr_t. [POWERPC] Demacrofy arch/powerpc/platforms/maple/pci.c [POWERPC] Maple U3 HT - reject inappropriate config space access [POWERPC] Fix IPIC pending register assignments [POWERPC] powerpc: fix building gdb against asm/ptrace.h [POWERPC] Remove DISCONTIGMEM cruft from page.h [POWERPC] Merge iSeries i/o operations with the rest [POWERPC] 40x: Fix debug status register defines [POWERPC] Fix compile error in sbc8560 [POWERPC] EEH: support MMIO enable recovery step [POWERPC] EEH: enable MMIO/DMA on frozen slot [POWERPC] EEH: code comment cleanup [POWERPC] EEH: balance pcidev_get/put calls [POWERPC] PPC: Fix xmon stack frame address in backtrace [POWERPC] Add AT_PLATFORM value for Xilinx Virtex-4 FX [POWERPC] Start arch/powerpc/boot code reorganization [POWERPC] Define of_read_ulong helper [POWERPC] iseries: eliminate a couple of warnings ...
This commit is contained in:
@@ -80,7 +80,8 @@ struct hvc_struct {
|
||||
struct tty_struct *tty;
|
||||
unsigned int count;
|
||||
int do_wakeup;
|
||||
char outbuf[N_OUTBUF] __ALIGNED__;
|
||||
char *outbuf;
|
||||
int outbuf_size;
|
||||
int n_outbuf;
|
||||
uint32_t vtermno;
|
||||
struct hv_ops *ops;
|
||||
@@ -319,10 +320,8 @@ static int hvc_open(struct tty_struct *tty, struct file * filp)
|
||||
struct kobject *kobjp;
|
||||
|
||||
/* Auto increments kobject reference if found. */
|
||||
if (!(hp = hvc_get_by_index(tty->index))) {
|
||||
printk(KERN_WARNING "hvc_console: tty open failed, no vty associated with tty.\n");
|
||||
if (!(hp = hvc_get_by_index(tty->index)))
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
spin_lock_irqsave(&hp->lock, flags);
|
||||
/* Check and then increment for fast path open. */
|
||||
@@ -505,7 +504,7 @@ static int hvc_write(struct tty_struct *tty, const unsigned char *buf, int count
|
||||
if (hp->n_outbuf > 0)
|
||||
hvc_push(hp);
|
||||
|
||||
while (count > 0 && (rsize = N_OUTBUF - hp->n_outbuf) > 0) {
|
||||
while (count > 0 && (rsize = hp->outbuf_size - hp->n_outbuf) > 0) {
|
||||
if (rsize > count)
|
||||
rsize = count;
|
||||
memcpy(hp->outbuf + hp->n_outbuf, buf, rsize);
|
||||
@@ -538,7 +537,7 @@ static int hvc_write_room(struct tty_struct *tty)
|
||||
if (!hp)
|
||||
return -1;
|
||||
|
||||
return N_OUTBUF - hp->n_outbuf;
|
||||
return hp->outbuf_size - hp->n_outbuf;
|
||||
}
|
||||
|
||||
static int hvc_chars_in_buffer(struct tty_struct *tty)
|
||||
@@ -729,12 +728,13 @@ static struct kobj_type hvc_kobj_type = {
|
||||
};
|
||||
|
||||
struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int irq,
|
||||
struct hv_ops *ops)
|
||||
struct hv_ops *ops, int outbuf_size)
|
||||
{
|
||||
struct hvc_struct *hp;
|
||||
int i;
|
||||
|
||||
hp = kmalloc(sizeof(*hp), GFP_KERNEL);
|
||||
hp = kmalloc(ALIGN(sizeof(*hp), sizeof(long)) + outbuf_size,
|
||||
GFP_KERNEL);
|
||||
if (!hp)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
@@ -743,6 +743,8 @@ struct hvc_struct __devinit *hvc_alloc(uint32_t vtermno, int irq,
|
||||
hp->vtermno = vtermno;
|
||||
hp->irq = irq;
|
||||
hp->ops = ops;
|
||||
hp->outbuf_size = outbuf_size;
|
||||
hp->outbuf = &((char *)hp)[ALIGN(sizeof(*hp), sizeof(long))];
|
||||
|
||||
kobject_init(&hp->kobj);
|
||||
hp->kobj.ktype = &hvc_kobj_type;
|
||||
|
Reference in New Issue
Block a user