mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 03:10:12 +00:00
Merge with /usr/src/ntfs-2.6.git
This commit is contained in:
commit
c1c58ada91
28 changed files with 186 additions and 93 deletions
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 12
|
SUBLEVEL = 12
|
||||||
EXTRAVERSION =-rc4
|
EXTRAVERSION =-rc5
|
||||||
NAME=Woozy Numbat
|
NAME=Woozy Numbat
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -97,7 +97,6 @@ static void ack_vic_irq(unsigned int irq);
|
||||||
static void vic_enable_cpi(void);
|
static void vic_enable_cpi(void);
|
||||||
static void do_boot_cpu(__u8 cpuid);
|
static void do_boot_cpu(__u8 cpuid);
|
||||||
static void do_quad_bootstrap(void);
|
static void do_quad_bootstrap(void);
|
||||||
static inline void wrapper_smp_local_timer_interrupt(struct pt_regs *);
|
|
||||||
|
|
||||||
int hard_smp_processor_id(void);
|
int hard_smp_processor_id(void);
|
||||||
|
|
||||||
|
@ -125,6 +124,14 @@ send_QIC_CPI(__u32 cpuset, __u8 cpi)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
wrapper_smp_local_timer_interrupt(struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
irq_enter();
|
||||||
|
smp_local_timer_interrupt(regs);
|
||||||
|
irq_exit();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
send_one_CPI(__u8 cpu, __u8 cpi)
|
send_one_CPI(__u8 cpu, __u8 cpi)
|
||||||
{
|
{
|
||||||
|
@ -1249,14 +1256,6 @@ smp_vic_timer_interrupt(struct pt_regs *regs)
|
||||||
smp_local_timer_interrupt(regs);
|
smp_local_timer_interrupt(regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
|
||||||
wrapper_smp_local_timer_interrupt(struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
irq_enter();
|
|
||||||
smp_local_timer_interrupt(regs);
|
|
||||||
irq_exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* local (per CPU) timer interrupt. It does both profiling and
|
/* local (per CPU) timer interrupt. It does both profiling and
|
||||||
* process statistics/rescheduling.
|
* process statistics/rescheduling.
|
||||||
*
|
*
|
||||||
|
|
|
@ -479,7 +479,7 @@ void __init ipic_init(phys_addr_t phys_addr,
|
||||||
temp = 0;
|
temp = 0;
|
||||||
for (i = 0 ; i < senses_count ; i++) {
|
for (i = 0 ; i < senses_count ; i++) {
|
||||||
if ((senses[i] & IRQ_SENSE_MASK) == IRQ_SENSE_EDGE) {
|
if ((senses[i] & IRQ_SENSE_MASK) == IRQ_SENSE_EDGE) {
|
||||||
temp |= 1 << (16 - i);
|
temp |= 1 << (15 - i);
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
irq_desc[i + irq_offset + MPC83xx_IRQ_EXT1 - 1].status = 0;
|
irq_desc[i + irq_offset + MPC83xx_IRQ_EXT1 - 1].status = 0;
|
||||||
else
|
else
|
||||||
|
|
|
@ -68,6 +68,7 @@ extern struct smp_ops_t *smp_ops;
|
||||||
|
|
||||||
static void (*pmac_tb_freeze)(int freeze);
|
static void (*pmac_tb_freeze)(int freeze);
|
||||||
static struct device_node *pmac_tb_clock_chip_host;
|
static struct device_node *pmac_tb_clock_chip_host;
|
||||||
|
static u8 pmac_tb_pulsar_addr;
|
||||||
static DEFINE_SPINLOCK(timebase_lock);
|
static DEFINE_SPINLOCK(timebase_lock);
|
||||||
static unsigned long timebase;
|
static unsigned long timebase;
|
||||||
|
|
||||||
|
@ -106,12 +107,9 @@ static void smp_core99_pulsar_tb_freeze(int freeze)
|
||||||
u8 data;
|
u8 data;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* Strangely, the device-tree says address is 0xd2, but darwin
|
|
||||||
* accesses 0xd0 ...
|
|
||||||
*/
|
|
||||||
pmac_low_i2c_setmode(pmac_tb_clock_chip_host, pmac_low_i2c_mode_combined);
|
pmac_low_i2c_setmode(pmac_tb_clock_chip_host, pmac_low_i2c_mode_combined);
|
||||||
rc = pmac_low_i2c_xfer(pmac_tb_clock_chip_host,
|
rc = pmac_low_i2c_xfer(pmac_tb_clock_chip_host,
|
||||||
0xd4 | pmac_low_i2c_read,
|
pmac_tb_pulsar_addr | pmac_low_i2c_read,
|
||||||
0x2e, &data, 1);
|
0x2e, &data, 1);
|
||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
goto bail;
|
goto bail;
|
||||||
|
@ -120,7 +118,7 @@ static void smp_core99_pulsar_tb_freeze(int freeze)
|
||||||
|
|
||||||
pmac_low_i2c_setmode(pmac_tb_clock_chip_host, pmac_low_i2c_mode_stdsub);
|
pmac_low_i2c_setmode(pmac_tb_clock_chip_host, pmac_low_i2c_mode_stdsub);
|
||||||
rc = pmac_low_i2c_xfer(pmac_tb_clock_chip_host,
|
rc = pmac_low_i2c_xfer(pmac_tb_clock_chip_host,
|
||||||
0xd4 | pmac_low_i2c_write,
|
pmac_tb_pulsar_addr | pmac_low_i2c_write,
|
||||||
0x2e, &data, 1);
|
0x2e, &data, 1);
|
||||||
bail:
|
bail:
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
|
@ -185,6 +183,12 @@ static int __init smp_core99_probe(void)
|
||||||
if (ncpus <= 1)
|
if (ncpus <= 1)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
/* HW sync only on these platforms */
|
||||||
|
if (!machine_is_compatible("PowerMac7,2") &&
|
||||||
|
!machine_is_compatible("PowerMac7,3") &&
|
||||||
|
!machine_is_compatible("RackMac3,1"))
|
||||||
|
goto nohwsync;
|
||||||
|
|
||||||
/* Look for the clock chip */
|
/* Look for the clock chip */
|
||||||
for (cc = NULL; (cc = of_find_node_by_name(cc, "i2c-hwclock")) != NULL;) {
|
for (cc = NULL; (cc = of_find_node_by_name(cc, "i2c-hwclock")) != NULL;) {
|
||||||
struct device_node *p = of_get_parent(cc);
|
struct device_node *p = of_get_parent(cc);
|
||||||
|
@ -198,11 +202,18 @@ static int __init smp_core99_probe(void)
|
||||||
goto next;
|
goto next;
|
||||||
switch (*reg) {
|
switch (*reg) {
|
||||||
case 0xd2:
|
case 0xd2:
|
||||||
pmac_tb_freeze = smp_core99_cypress_tb_freeze;
|
if (device_is_compatible(cc, "pulsar-legacy-slewing")) {
|
||||||
printk(KERN_INFO "Timebase clock is Cypress chip\n");
|
pmac_tb_freeze = smp_core99_pulsar_tb_freeze;
|
||||||
|
pmac_tb_pulsar_addr = 0xd2;
|
||||||
|
printk(KERN_INFO "Timebase clock is Pulsar chip\n");
|
||||||
|
} else if (device_is_compatible(cc, "cy28508")) {
|
||||||
|
pmac_tb_freeze = smp_core99_cypress_tb_freeze;
|
||||||
|
printk(KERN_INFO "Timebase clock is Cypress chip\n");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0xd4:
|
case 0xd4:
|
||||||
pmac_tb_freeze = smp_core99_pulsar_tb_freeze;
|
pmac_tb_freeze = smp_core99_pulsar_tb_freeze;
|
||||||
|
pmac_tb_pulsar_addr = 0xd4;
|
||||||
printk(KERN_INFO "Timebase clock is Pulsar chip\n");
|
printk(KERN_INFO "Timebase clock is Pulsar chip\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -210,12 +221,15 @@ static int __init smp_core99_probe(void)
|
||||||
pmac_tb_clock_chip_host = p;
|
pmac_tb_clock_chip_host = p;
|
||||||
smp_ops->give_timebase = smp_core99_give_timebase;
|
smp_ops->give_timebase = smp_core99_give_timebase;
|
||||||
smp_ops->take_timebase = smp_core99_take_timebase;
|
smp_ops->take_timebase = smp_core99_take_timebase;
|
||||||
|
of_node_put(cc);
|
||||||
|
of_node_put(p);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
next:
|
next:
|
||||||
of_node_put(p);
|
of_node_put(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nohwsync:
|
||||||
mpic_request_ipis();
|
mpic_request_ipis();
|
||||||
|
|
||||||
return ncpus;
|
return ncpus;
|
||||||
|
|
|
@ -1750,7 +1750,44 @@ static void __init flatten_device_tree(void)
|
||||||
prom_printf("Device tree struct 0x%x -> 0x%x\n",
|
prom_printf("Device tree struct 0x%x -> 0x%x\n",
|
||||||
RELOC(dt_struct_start), RELOC(dt_struct_end));
|
RELOC(dt_struct_start), RELOC(dt_struct_end));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void __init fixup_device_tree(void)
|
||||||
|
{
|
||||||
|
unsigned long offset = reloc_offset();
|
||||||
|
phandle u3, i2c, mpic;
|
||||||
|
u32 u3_rev;
|
||||||
|
u32 interrupts[2];
|
||||||
|
u32 parent;
|
||||||
|
|
||||||
|
/* Some G5s have a missing interrupt definition, fix it up here */
|
||||||
|
u3 = call_prom("finddevice", 1, 1, ADDR("/u3@0,f8000000"));
|
||||||
|
if ((long)u3 <= 0)
|
||||||
|
return;
|
||||||
|
i2c = call_prom("finddevice", 1, 1, ADDR("/u3@0,f8000000/i2c@f8001000"));
|
||||||
|
if ((long)i2c <= 0)
|
||||||
|
return;
|
||||||
|
mpic = call_prom("finddevice", 1, 1, ADDR("/u3@0,f8000000/mpic@f8040000"));
|
||||||
|
if ((long)mpic <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* check if proper rev of u3 */
|
||||||
|
if (prom_getprop(u3, "device-rev", &u3_rev, sizeof(u3_rev)) <= 0)
|
||||||
|
return;
|
||||||
|
if (u3_rev != 0x35)
|
||||||
|
return;
|
||||||
|
/* does it need fixup ? */
|
||||||
|
if (prom_getproplen(i2c, "interrupts") > 0)
|
||||||
|
return;
|
||||||
|
/* interrupt on this revision of u3 is number 0 and level */
|
||||||
|
interrupts[0] = 0;
|
||||||
|
interrupts[1] = 1;
|
||||||
|
prom_setprop(i2c, "interrupts", &interrupts, sizeof(interrupts));
|
||||||
|
parent = (u32)mpic;
|
||||||
|
prom_setprop(i2c, "interrupt-parent", &parent, sizeof(parent));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void __init prom_find_boot_cpu(void)
|
static void __init prom_find_boot_cpu(void)
|
||||||
{
|
{
|
||||||
|
@ -1919,6 +1956,11 @@ unsigned long __init prom_init(unsigned long r3, unsigned long r4, unsigned long
|
||||||
PTRRELOC(&prom_tce_alloc_end), sizeof(RELOC(prom_tce_alloc_end)));
|
PTRRELOC(&prom_tce_alloc_end), sizeof(RELOC(prom_tce_alloc_end)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fixup any known bugs in the device-tree
|
||||||
|
*/
|
||||||
|
fixup_device_tree();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now finally create the flattened device-tree
|
* Now finally create the flattened device-tree
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -38,7 +38,7 @@ static inline void crypto_kunmap(void *vaddr, int out)
|
||||||
|
|
||||||
static inline void crypto_yield(struct crypto_tfm *tfm)
|
static inline void crypto_yield(struct crypto_tfm *tfm)
|
||||||
{
|
{
|
||||||
if (!in_softirq())
|
if (!in_atomic())
|
||||||
cond_resched();
|
cond_resched();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -245,6 +245,7 @@ int device_add(struct device *dev)
|
||||||
|
|
||||||
if ((error = kobject_add(&dev->kobj)))
|
if ((error = kobject_add(&dev->kobj)))
|
||||||
goto Error;
|
goto Error;
|
||||||
|
kobject_hotplug(&dev->kobj, KOBJ_ADD);
|
||||||
if ((error = device_pm_add(dev)))
|
if ((error = device_pm_add(dev)))
|
||||||
goto PMError;
|
goto PMError;
|
||||||
if ((error = bus_add_device(dev)))
|
if ((error = bus_add_device(dev)))
|
||||||
|
@ -257,14 +258,13 @@ int device_add(struct device *dev)
|
||||||
/* notify platform of device entry */
|
/* notify platform of device entry */
|
||||||
if (platform_notify)
|
if (platform_notify)
|
||||||
platform_notify(dev);
|
platform_notify(dev);
|
||||||
|
|
||||||
kobject_hotplug(&dev->kobj, KOBJ_ADD);
|
|
||||||
Done:
|
Done:
|
||||||
put_device(dev);
|
put_device(dev);
|
||||||
return error;
|
return error;
|
||||||
BusError:
|
BusError:
|
||||||
device_pm_remove(dev);
|
device_pm_remove(dev);
|
||||||
PMError:
|
PMError:
|
||||||
|
kobject_hotplug(&dev->kobj, KOBJ_REMOVE);
|
||||||
kobject_del(&dev->kobj);
|
kobject_del(&dev->kobj);
|
||||||
Error:
|
Error:
|
||||||
if (parent)
|
if (parent)
|
||||||
|
|
|
@ -516,6 +516,11 @@ create_iface(struct device_node *np, struct device *dev)
|
||||||
u32 *psteps, *prate;
|
u32 *psteps, *prate;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
if (np->n_intrs < 1 || np->n_addrs < 1) {
|
||||||
|
printk(KERN_ERR "%s: Missing interrupt or address !\n",
|
||||||
|
np->full_name);
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
if (pmac_low_i2c_lock(np))
|
if (pmac_low_i2c_lock(np))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
|
|
@ -43,15 +43,15 @@ enum saa6752hs_videoformat {
|
||||||
static const struct v4l2_format v4l2_format_table[] =
|
static const struct v4l2_format v4l2_format_table[] =
|
||||||
{
|
{
|
||||||
[SAA6752HS_VF_D1] = {
|
[SAA6752HS_VF_D1] = {
|
||||||
.fmt.pix.width = 720, .fmt.pix.height = 576 },
|
.fmt = { .pix = { .width = 720, .height = 576 }, }, },
|
||||||
[SAA6752HS_VF_2_3_D1] = {
|
[SAA6752HS_VF_2_3_D1] = {
|
||||||
.fmt.pix.width = 480, .fmt.pix.height = 576 },
|
.fmt = { .pix = { .width = 480, .height = 576 }, }, },
|
||||||
[SAA6752HS_VF_1_2_D1] = {
|
[SAA6752HS_VF_1_2_D1] = {
|
||||||
.fmt.pix.width = 352, .fmt.pix.height = 576 },
|
.fmt = { .pix = { .width = 352, .height = 576 }, }, },
|
||||||
[SAA6752HS_VF_SIF] = {
|
[SAA6752HS_VF_SIF] = {
|
||||||
.fmt.pix.width = 352, .fmt.pix.height = 288 },
|
.fmt = { .pix = { .width = 352, .height = 288 }, }, },
|
||||||
[SAA6752HS_VF_UNKNOWN] = {
|
[SAA6752HS_VF_UNKNOWN] = {
|
||||||
.fmt.pix.width = 0, .fmt.pix.height = 0},
|
.fmt = { .pix = { .width = 0, .height = 0 }, }, },
|
||||||
};
|
};
|
||||||
|
|
||||||
struct saa6752hs_state {
|
struct saa6752hs_state {
|
||||||
|
|
|
@ -383,7 +383,10 @@ static int mmc_blk_probe(struct mmc_card *card)
|
||||||
struct mmc_blk_data *md;
|
struct mmc_blk_data *md;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
if (card->csd.cmdclass & ~0x1ff)
|
/*
|
||||||
|
* Check that the card supports the command class(es) we need.
|
||||||
|
*/
|
||||||
|
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
if (card->csd.read_blkbits < 9) {
|
if (card->csd.read_blkbits < 9) {
|
||||||
|
|
|
@ -61,8 +61,8 @@
|
||||||
|
|
||||||
#define DRV_MODULE_NAME "tg3"
|
#define DRV_MODULE_NAME "tg3"
|
||||||
#define PFX DRV_MODULE_NAME ": "
|
#define PFX DRV_MODULE_NAME ": "
|
||||||
#define DRV_MODULE_VERSION "3.27"
|
#define DRV_MODULE_VERSION "3.29"
|
||||||
#define DRV_MODULE_RELDATE "May 5, 2005"
|
#define DRV_MODULE_RELDATE "May 23, 2005"
|
||||||
|
|
||||||
#define TG3_DEF_MAC_MODE 0
|
#define TG3_DEF_MAC_MODE 0
|
||||||
#define TG3_DEF_RX_MODE 0
|
#define TG3_DEF_RX_MODE 0
|
||||||
|
@ -206,6 +206,8 @@ static struct pci_device_id tg3_pci_tbl[] = {
|
||||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
|
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
|
||||||
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5752,
|
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5752,
|
||||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
|
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
|
||||||
|
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5752M,
|
||||||
|
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
|
||||||
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5753,
|
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5753,
|
||||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
|
PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
|
||||||
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5753M,
|
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5753M,
|
||||||
|
@ -8994,7 +8996,7 @@ static int __devinit tg3_do_test_dma(struct tg3 *tp, u32 *buf, dma_addr_t buf_dm
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define TEST_BUFFER_SIZE 0x400
|
#define TEST_BUFFER_SIZE 0x2000
|
||||||
|
|
||||||
static int __devinit tg3_test_dma(struct tg3 *tp)
|
static int __devinit tg3_test_dma(struct tg3 *tp)
|
||||||
{
|
{
|
||||||
|
|
|
@ -659,8 +659,11 @@ ahc_linux_slave_alloc(struct scsi_device *device)
|
||||||
ahc_lock(ahc, &flags);
|
ahc_lock(ahc, &flags);
|
||||||
targ = ahc->platform_data->targets[target_offset];
|
targ = ahc->platform_data->targets[target_offset];
|
||||||
if (targ == NULL) {
|
if (targ == NULL) {
|
||||||
targ = ahc_linux_alloc_target(ahc, starget->channel, starget->id);
|
struct seeprom_config *sc;
|
||||||
struct seeprom_config *sc = ahc->seep_config;
|
|
||||||
|
targ = ahc_linux_alloc_target(ahc, starget->channel,
|
||||||
|
starget->id);
|
||||||
|
sc = ahc->seep_config;
|
||||||
if (targ == NULL)
|
if (targ == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|
|
@ -682,8 +682,6 @@ static void autoconfig_16550a(struct uart_8250_port *up)
|
||||||
* from EXCR1. Switch back to bank 0, change it in MCR. Then
|
* from EXCR1. Switch back to bank 0, change it in MCR. Then
|
||||||
* switch back to bank 2, read it from EXCR1 again and check
|
* switch back to bank 2, read it from EXCR1 again and check
|
||||||
* it's changed. If so, set baud_base in EXCR2 to 921600. -- dwmw2
|
* it's changed. If so, set baud_base in EXCR2 to 921600. -- dwmw2
|
||||||
* On PowerPC we don't want to change baud_base, as we have
|
|
||||||
* a number of different divisors. -- Tom Rini
|
|
||||||
*/
|
*/
|
||||||
serial_outp(up, UART_LCR, 0);
|
serial_outp(up, UART_LCR, 0);
|
||||||
status1 = serial_in(up, UART_MCR);
|
status1 = serial_in(up, UART_MCR);
|
||||||
|
@ -699,16 +697,25 @@ static void autoconfig_16550a(struct uart_8250_port *up)
|
||||||
serial_outp(up, UART_MCR, status1);
|
serial_outp(up, UART_MCR, status1);
|
||||||
|
|
||||||
if ((status2 ^ status1) & UART_MCR_LOOP) {
|
if ((status2 ^ status1) & UART_MCR_LOOP) {
|
||||||
#ifndef CONFIG_PPC
|
unsigned short quot;
|
||||||
|
|
||||||
serial_outp(up, UART_LCR, 0xE0);
|
serial_outp(up, UART_LCR, 0xE0);
|
||||||
|
|
||||||
|
quot = serial_inp(up, UART_DLM) << 8;
|
||||||
|
quot += serial_inp(up, UART_DLL);
|
||||||
|
quot <<= 3;
|
||||||
|
|
||||||
status1 = serial_in(up, 0x04); /* EXCR1 */
|
status1 = serial_in(up, 0x04); /* EXCR1 */
|
||||||
status1 &= ~0xB0; /* Disable LOCK, mask out PRESL[01] */
|
status1 &= ~0xB0; /* Disable LOCK, mask out PRESL[01] */
|
||||||
status1 |= 0x10; /* 1.625 divisor for baud_base --> 921600 */
|
status1 |= 0x10; /* 1.625 divisor for baud_base --> 921600 */
|
||||||
serial_outp(up, 0x04, status1);
|
serial_outp(up, 0x04, status1);
|
||||||
serial_outp(up, UART_LCR, 0);
|
|
||||||
up->port.uartclk = 921600*16;
|
serial_outp(up, UART_DLL, quot & 0xff);
|
||||||
#endif
|
serial_outp(up, UART_DLM, quot >> 8);
|
||||||
|
|
||||||
|
serial_outp(up, UART_LCR, 0);
|
||||||
|
|
||||||
|
up->port.uartclk = 921600*16;
|
||||||
up->port.type = PORT_NS16550A;
|
up->port.type = PORT_NS16550A;
|
||||||
up->capabilities |= UART_NATSEMI;
|
up->capabilities |= UART_NATSEMI;
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -230,7 +230,6 @@ const struct reiserfs_key MAX_KEY = {
|
||||||
__constant_cpu_to_le32(0xffffffff)},}
|
__constant_cpu_to_le32(0xffffffff)},}
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct in_core_key MAX_IN_CORE_KEY = {~0U, ~0U, ~0ULL>>4, 15};
|
|
||||||
|
|
||||||
/* Get delimiting key of the buffer by looking for it in the buffers in the path, starting from the bottom
|
/* Get delimiting key of the buffer by looking for it in the buffers in the path, starting from the bottom
|
||||||
of the path, and going upwards. We must check the path's validity at each step. If the key is not in
|
of the path, and going upwards. We must check the path's validity at each step. If the key is not in
|
||||||
|
|
|
@ -164,7 +164,9 @@ static int finish_unfinished (struct super_block * s)
|
||||||
|
|
||||||
/* compose key to look for "save" links */
|
/* compose key to look for "save" links */
|
||||||
max_cpu_key.version = KEY_FORMAT_3_5;
|
max_cpu_key.version = KEY_FORMAT_3_5;
|
||||||
max_cpu_key.on_disk_key = MAX_IN_CORE_KEY;
|
max_cpu_key.on_disk_key.k_dir_id = ~0U;
|
||||||
|
max_cpu_key.on_disk_key.k_objectid = ~0U;
|
||||||
|
set_cpu_key_k_offset (&max_cpu_key, ~0U);
|
||||||
max_cpu_key.key_length = 3;
|
max_cpu_key.key_length = 3;
|
||||||
|
|
||||||
#ifdef CONFIG_QUOTA
|
#ifdef CONFIG_QUOTA
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
*
|
*
|
||||||
* Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
|
* Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
|
||||||
* Donald Becker, <becker@super.org>
|
* Donald Becker, <becker@super.org>
|
||||||
* Peter De Schrijver, <stud11@cc4.kuleuven.ac.be>
|
* Peter De Schrijver, <stud11@cc4.kuleuven.ac.be>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -19,24 +19,16 @@
|
||||||
#ifndef _LINUX_IF_TR_H
|
#ifndef _LINUX_IF_TR_H
|
||||||
#define _LINUX_IF_TR_H
|
#define _LINUX_IF_TR_H
|
||||||
|
|
||||||
|
|
||||||
/* IEEE 802.5 Token-Ring magic constants. The frame sizes omit the preamble
|
/* IEEE 802.5 Token-Ring magic constants. The frame sizes omit the preamble
|
||||||
and FCS/CRC (frame check sequence). */
|
and FCS/CRC (frame check sequence). */
|
||||||
#define TR_ALEN 6 /* Octets in one ethernet addr */
|
#define TR_ALEN 6 /* Octets in one token-ring addr */
|
||||||
#define TR_HLEN (sizeof(struct trh_hdr)+sizeof(struct trllc))
|
#define TR_HLEN (sizeof(struct trh_hdr)+sizeof(struct trllc))
|
||||||
#define AC 0x10
|
#define AC 0x10
|
||||||
#define LLC_FRAME 0x40
|
#define LLC_FRAME 0x40
|
||||||
#if 0
|
|
||||||
#define ETH_HLEN 14 /* Total octets in header. */
|
|
||||||
#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */
|
|
||||||
#define ETH_DATA_LEN 1500 /* Max. octets in payload */
|
|
||||||
#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* LLC and SNAP constants */
|
/* LLC and SNAP constants */
|
||||||
#define EXTENDED_SAP 0xAA
|
#define EXTENDED_SAP 0xAA
|
||||||
#define UI_CMD 0x03
|
#define UI_CMD 0x03
|
||||||
|
|
||||||
/* This is an Token-Ring frame header. */
|
/* This is an Token-Ring frame header. */
|
||||||
struct trh_hdr {
|
struct trh_hdr {
|
||||||
|
@ -96,14 +88,13 @@ struct tr_statistics {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* source routing stuff */
|
/* source routing stuff */
|
||||||
|
#define TR_RII 0x80
|
||||||
#define TR_RII 0x80
|
#define TR_RCF_DIR_BIT 0x80
|
||||||
#define TR_RCF_DIR_BIT 0x80
|
#define TR_RCF_LEN_MASK 0x1f00
|
||||||
#define TR_RCF_LEN_MASK 0x1f00
|
#define TR_RCF_BROADCAST 0x8000 /* all-routes broadcast */
|
||||||
#define TR_RCF_BROADCAST 0x8000 /* all-routes broadcast */
|
#define TR_RCF_LIMITED_BROADCAST 0xC000 /* single-route broadcast */
|
||||||
#define TR_RCF_LIMITED_BROADCAST 0xC000 /* single-route broadcast */
|
#define TR_RCF_FRAME2K 0x20
|
||||||
#define TR_RCF_FRAME2K 0x20
|
#define TR_RCF_BROADCAST_MASK 0xC000
|
||||||
#define TR_RCF_BROADCAST_MASK 0xC000
|
#define TR_MAXRIFLEN 18
|
||||||
#define TR_MAXRIFLEN 18
|
|
||||||
|
|
||||||
#endif /* _LINUX_IF_TR_H */
|
#endif /* _LINUX_IF_TR_H */
|
||||||
|
|
|
@ -195,6 +195,33 @@ struct _mmc_csd {
|
||||||
#define MMC_VDD_35_36 0x00800000 /* VDD voltage 3.5 ~ 3.6 */
|
#define MMC_VDD_35_36 0x00800000 /* VDD voltage 3.5 ~ 3.6 */
|
||||||
#define MMC_CARD_BUSY 0x80000000 /* Card Power up status bit */
|
#define MMC_CARD_BUSY 0x80000000 /* Card Power up status bit */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Card Command Classes (CCC)
|
||||||
|
*/
|
||||||
|
#define CCC_BASIC (1<<0) /* (0) Basic protocol functions */
|
||||||
|
/* (CMD0,1,2,3,4,7,9,10,12,13,15) */
|
||||||
|
#define CCC_STREAM_READ (1<<1) /* (1) Stream read commands */
|
||||||
|
/* (CMD11) */
|
||||||
|
#define CCC_BLOCK_READ (1<<2) /* (2) Block read commands */
|
||||||
|
/* (CMD16,17,18) */
|
||||||
|
#define CCC_STREAM_WRITE (1<<3) /* (3) Stream write commands */
|
||||||
|
/* (CMD20) */
|
||||||
|
#define CCC_BLOCK_WRITE (1<<4) /* (4) Block write commands */
|
||||||
|
/* (CMD16,24,25,26,27) */
|
||||||
|
#define CCC_ERASE (1<<5) /* (5) Ability to erase blocks */
|
||||||
|
/* (CMD32,33,34,35,36,37,38,39) */
|
||||||
|
#define CCC_WRITE_PROT (1<<6) /* (6) Able to write protect blocks */
|
||||||
|
/* (CMD28,29,30) */
|
||||||
|
#define CCC_LOCK_CARD (1<<7) /* (7) Able to lock down card */
|
||||||
|
/* (CMD16,CMD42) */
|
||||||
|
#define CCC_APP_SPEC (1<<8) /* (8) Application specific */
|
||||||
|
/* (CMD55,56,57,ACMD*) */
|
||||||
|
#define CCC_IO_MODE (1<<9) /* (9) I/O mode */
|
||||||
|
/* (CMD5,39,40,52,53) */
|
||||||
|
#define CCC_SWITCH (1<<10) /* (10) High speed switch */
|
||||||
|
/* (CMD6,34,35,36,37,50) */
|
||||||
|
/* (11) Reserved */
|
||||||
|
/* (CMD?) */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CSD field definitions
|
* CSD field definitions
|
||||||
|
|
|
@ -101,7 +101,6 @@ enum sock_type {
|
||||||
* @sk: internal networking protocol agnostic socket representation
|
* @sk: internal networking protocol agnostic socket representation
|
||||||
* @wait: wait queue for several uses
|
* @wait: wait queue for several uses
|
||||||
* @type: socket type (%SOCK_STREAM, etc)
|
* @type: socket type (%SOCK_STREAM, etc)
|
||||||
* @passcred: credentials (used only in Unix Sockets (aka PF_LOCAL))
|
|
||||||
*/
|
*/
|
||||||
struct socket {
|
struct socket {
|
||||||
socket_state state;
|
socket_state state;
|
||||||
|
|
|
@ -503,7 +503,7 @@ static inline void *netdev_priv(struct net_device *dev)
|
||||||
#define SET_NETDEV_DEV(net, pdev) ((net)->class_dev.dev = (pdev))
|
#define SET_NETDEV_DEV(net, pdev) ((net)->class_dev.dev = (pdev))
|
||||||
|
|
||||||
struct packet_type {
|
struct packet_type {
|
||||||
unsigned short type; /* This is really htons(ether_type). */
|
__be16 type; /* This is really htons(ether_type). */
|
||||||
struct net_device *dev; /* NULL is wildcarded here */
|
struct net_device *dev; /* NULL is wildcarded here */
|
||||||
int (*func) (struct sk_buff *, struct net_device *,
|
int (*func) (struct sk_buff *, struct net_device *,
|
||||||
struct packet_type *);
|
struct packet_type *);
|
||||||
|
|
|
@ -2064,6 +2064,7 @@
|
||||||
|
|
||||||
#define PCI_VENDOR_ID_BROADCOM 0x14e4
|
#define PCI_VENDOR_ID_BROADCOM 0x14e4
|
||||||
#define PCI_DEVICE_ID_TIGON3_5752 0x1600
|
#define PCI_DEVICE_ID_TIGON3_5752 0x1600
|
||||||
|
#define PCI_DEVICE_ID_TIGON3_5752M 0x1601
|
||||||
#define PCI_DEVICE_ID_TIGON3_5700 0x1644
|
#define PCI_DEVICE_ID_TIGON3_5700 0x1644
|
||||||
#define PCI_DEVICE_ID_TIGON3_5701 0x1645
|
#define PCI_DEVICE_ID_TIGON3_5701 0x1645
|
||||||
#define PCI_DEVICE_ID_TIGON3_5702 0x1646
|
#define PCI_DEVICE_ID_TIGON3_5702 0x1646
|
||||||
|
|
|
@ -248,7 +248,7 @@ typedef struct {
|
||||||
|
|
||||||
#define _spin_trylock_bh(lock) ({preempt_disable(); local_bh_disable(); \
|
#define _spin_trylock_bh(lock) ({preempt_disable(); local_bh_disable(); \
|
||||||
_raw_spin_trylock(lock) ? \
|
_raw_spin_trylock(lock) ? \
|
||||||
1 : ({preempt_enable(); local_bh_enable(); 0;});})
|
1 : ({preempt_enable_no_resched(); local_bh_enable(); 0;});})
|
||||||
|
|
||||||
#define _spin_lock(lock) \
|
#define _spin_lock(lock) \
|
||||||
do { \
|
do { \
|
||||||
|
@ -383,7 +383,7 @@ do { \
|
||||||
#define _spin_unlock_bh(lock) \
|
#define _spin_unlock_bh(lock) \
|
||||||
do { \
|
do { \
|
||||||
_raw_spin_unlock(lock); \
|
_raw_spin_unlock(lock); \
|
||||||
preempt_enable(); \
|
preempt_enable_no_resched(); \
|
||||||
local_bh_enable(); \
|
local_bh_enable(); \
|
||||||
__release(lock); \
|
__release(lock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -391,7 +391,7 @@ do { \
|
||||||
#define _write_unlock_bh(lock) \
|
#define _write_unlock_bh(lock) \
|
||||||
do { \
|
do { \
|
||||||
_raw_write_unlock(lock); \
|
_raw_write_unlock(lock); \
|
||||||
preempt_enable(); \
|
preempt_enable_no_resched(); \
|
||||||
local_bh_enable(); \
|
local_bh_enable(); \
|
||||||
__release(lock); \
|
__release(lock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -423,8 +423,8 @@ do { \
|
||||||
#define _read_unlock_bh(lock) \
|
#define _read_unlock_bh(lock) \
|
||||||
do { \
|
do { \
|
||||||
_raw_read_unlock(lock); \
|
_raw_read_unlock(lock); \
|
||||||
|
preempt_enable_no_resched(); \
|
||||||
local_bh_enable(); \
|
local_bh_enable(); \
|
||||||
preempt_enable(); \
|
|
||||||
__release(lock); \
|
__release(lock); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
|
|
@ -386,9 +386,7 @@ int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
|
||||||
wait_queue_t name = { \
|
wait_queue_t name = { \
|
||||||
.task = current, \
|
.task = current, \
|
||||||
.func = autoremove_wake_function, \
|
.func = autoremove_wake_function, \
|
||||||
.task_list = { .next = &(name).task_list, \
|
.task_list = LIST_HEAD_INIT((name).task_list), \
|
||||||
.prev = &(name).task_list, \
|
|
||||||
}, \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DEFINE_WAIT_BIT(name, word, bit) \
|
#define DEFINE_WAIT_BIT(name, word, bit) \
|
||||||
|
|
|
@ -522,7 +522,16 @@ static int __dequeue_signal(struct sigpending *pending, sigset_t *mask,
|
||||||
{
|
{
|
||||||
int sig = 0;
|
int sig = 0;
|
||||||
|
|
||||||
sig = next_signal(pending, mask);
|
/* SIGKILL must have priority, otherwise it is quite easy
|
||||||
|
* to create an unkillable process, sending sig < SIGKILL
|
||||||
|
* to self */
|
||||||
|
if (unlikely(sigismember(&pending->signal, SIGKILL))) {
|
||||||
|
if (!sigismember(mask, SIGKILL))
|
||||||
|
sig = SIGKILL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (likely(!sig))
|
||||||
|
sig = next_signal(pending, mask);
|
||||||
if (sig) {
|
if (sig) {
|
||||||
if (current->notifier) {
|
if (current->notifier) {
|
||||||
if (sigismember(current->notifier_mask, sig)) {
|
if (sigismember(current->notifier_mask, sig)) {
|
||||||
|
|
|
@ -294,7 +294,7 @@ EXPORT_SYMBOL(_spin_unlock_irq);
|
||||||
void __lockfunc _spin_unlock_bh(spinlock_t *lock)
|
void __lockfunc _spin_unlock_bh(spinlock_t *lock)
|
||||||
{
|
{
|
||||||
_raw_spin_unlock(lock);
|
_raw_spin_unlock(lock);
|
||||||
preempt_enable();
|
preempt_enable_no_resched();
|
||||||
local_bh_enable();
|
local_bh_enable();
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(_spin_unlock_bh);
|
EXPORT_SYMBOL(_spin_unlock_bh);
|
||||||
|
@ -318,7 +318,7 @@ EXPORT_SYMBOL(_read_unlock_irq);
|
||||||
void __lockfunc _read_unlock_bh(rwlock_t *lock)
|
void __lockfunc _read_unlock_bh(rwlock_t *lock)
|
||||||
{
|
{
|
||||||
_raw_read_unlock(lock);
|
_raw_read_unlock(lock);
|
||||||
preempt_enable();
|
preempt_enable_no_resched();
|
||||||
local_bh_enable();
|
local_bh_enable();
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(_read_unlock_bh);
|
EXPORT_SYMBOL(_read_unlock_bh);
|
||||||
|
@ -342,7 +342,7 @@ EXPORT_SYMBOL(_write_unlock_irq);
|
||||||
void __lockfunc _write_unlock_bh(rwlock_t *lock)
|
void __lockfunc _write_unlock_bh(rwlock_t *lock)
|
||||||
{
|
{
|
||||||
_raw_write_unlock(lock);
|
_raw_write_unlock(lock);
|
||||||
preempt_enable();
|
preempt_enable_no_resched();
|
||||||
local_bh_enable();
|
local_bh_enable();
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(_write_unlock_bh);
|
EXPORT_SYMBOL(_write_unlock_bh);
|
||||||
|
@ -354,7 +354,7 @@ int __lockfunc _spin_trylock_bh(spinlock_t *lock)
|
||||||
if (_raw_spin_trylock(lock))
|
if (_raw_spin_trylock(lock))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
preempt_enable();
|
preempt_enable_no_resched();
|
||||||
local_bh_enable();
|
local_bh_enable();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1004,7 +1004,7 @@ __generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,
|
||||||
if (pos < size) {
|
if (pos < size) {
|
||||||
retval = generic_file_direct_IO(READ, iocb,
|
retval = generic_file_direct_IO(READ, iocb,
|
||||||
iov, pos, nr_segs);
|
iov, pos, nr_segs);
|
||||||
if (retval >= 0 && !is_sync_kiocb(iocb))
|
if (retval > 0 && !is_sync_kiocb(iocb))
|
||||||
retval = -EIOCBQUEUED;
|
retval = -EIOCBQUEUED;
|
||||||
if (retval > 0)
|
if (retval > 0)
|
||||||
*ppos = pos + retval;
|
*ppos = pos + retval;
|
||||||
|
|
|
@ -626,7 +626,7 @@ static void try_to_unmap_cluster(unsigned long cursor,
|
||||||
pgd_t *pgd;
|
pgd_t *pgd;
|
||||||
pud_t *pud;
|
pud_t *pud;
|
||||||
pmd_t *pmd;
|
pmd_t *pmd;
|
||||||
pte_t *pte;
|
pte_t *pte, *original_pte;
|
||||||
pte_t pteval;
|
pte_t pteval;
|
||||||
struct page *page;
|
struct page *page;
|
||||||
unsigned long address;
|
unsigned long address;
|
||||||
|
@ -658,7 +658,7 @@ static void try_to_unmap_cluster(unsigned long cursor,
|
||||||
if (!pmd_present(*pmd))
|
if (!pmd_present(*pmd))
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
|
|
||||||
for (pte = pte_offset_map(pmd, address);
|
for (original_pte = pte = pte_offset_map(pmd, address);
|
||||||
address < end; pte++, address += PAGE_SIZE) {
|
address < end; pte++, address += PAGE_SIZE) {
|
||||||
|
|
||||||
if (!pte_present(*pte))
|
if (!pte_present(*pte))
|
||||||
|
@ -694,7 +694,7 @@ static void try_to_unmap_cluster(unsigned long cursor,
|
||||||
(*mapcount)--;
|
(*mapcount)--;
|
||||||
}
|
}
|
||||||
|
|
||||||
pte_unmap(pte);
|
pte_unmap(original_pte);
|
||||||
out_unlock:
|
out_unlock:
|
||||||
spin_unlock(&mm->page_table_lock);
|
spin_unlock(&mm->page_table_lock);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4355,16 +4355,7 @@ int tcp_rcv_established(struct sock *sk, struct sk_buff *skb,
|
||||||
goto no_ack;
|
goto no_ack;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eaten) {
|
__tcp_ack_snd_check(sk, 0);
|
||||||
if (tcp_in_quickack_mode(tp)) {
|
|
||||||
tcp_send_ack(sk);
|
|
||||||
} else {
|
|
||||||
tcp_send_delayed_ack(sk);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
__tcp_ack_snd_check(sk, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
no_ack:
|
no_ack:
|
||||||
if (eaten)
|
if (eaten)
|
||||||
__kfree_skb(skb);
|
__kfree_skb(skb);
|
||||||
|
|
|
@ -84,6 +84,7 @@ static int xfrm6_tunnel_check_size(struct sk_buff *skb)
|
||||||
mtu = IPV6_MIN_MTU;
|
mtu = IPV6_MIN_MTU;
|
||||||
|
|
||||||
if (skb->len > mtu) {
|
if (skb->len > mtu) {
|
||||||
|
skb->dev = dst->dev;
|
||||||
icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev);
|
icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu, skb->dev);
|
||||||
ret = -EMSGSIZE;
|
ret = -EMSGSIZE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue