Commit da5ca9a5 authored by Linus Torvalds's avatar Linus Torvalds

Merge http://nfsclient.bkbits.net/linux-2.5

into ppc970.osdl.org:/home/torvalds/v2.5/linux
parents aeb08fc0 157cc3ee
......@@ -1332,6 +1332,11 @@ config X86_BIOS_REBOOT
depends on !(X86_VISWS || X86_VOYAGER)
default y
config X86_TRAMPOLINE
bool
depends on X86_SMP || (X86_VOYAGER && SMP)
default y
config PC
bool
depends on X86 && !EMBEDDED
......
......@@ -1212,4 +1212,5 @@ CONFIG_CRC32=y
CONFIG_X86_SMP=y
CONFIG_X86_HT=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_X86_TRAMPOLINE=y
CONFIG_PC=y
......@@ -18,7 +18,8 @@ obj-$(CONFIG_X86_MSR) += msr.o
obj-$(CONFIG_X86_CPUID) += cpuid.o
obj-$(CONFIG_MICROCODE) += microcode.o
obj-$(CONFIG_APM) += apm.o
obj-$(CONFIG_X86_SMP) += smp.o smpboot.o trampoline.o
obj-$(CONFIG_X86_SMP) += smp.o smpboot.o
obj-$(CONFIG_X86_TRAMPOLINE) += trampoline.o
obj-$(CONFIG_X86_MPPARSE) += mpparse.o
obj-$(CONFIG_X86_LOCAL_APIC) += apic.o nmi.o
obj-$(CONFIG_X86_IO_APIC) += io_apic.o
......
......@@ -20,8 +20,9 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
/* ignore region specifiers */
gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
if (dev == NULL || (*dev->dma_mask < 0xffffffff))
if (dev == NULL || (dev->coherent_dma_mask < 0xffffffff))
gfp |= GFP_DMA;
ret = (void *)__get_free_pages(gfp, get_order(size));
if (ret != NULL) {
......
......@@ -623,7 +623,9 @@ do_boot_cpu(__u8 cpu)
((virt_to_phys(page_table_copies)) & PAGE_MASK)
| _PAGE_RW | _PAGE_USER | _PAGE_PRESENT;
#else
((unsigned long *)swapper_pg_dir)[0] = 0x102007;
((unsigned long *)swapper_pg_dir)[0] =
(virt_to_phys(pg0) & PAGE_MASK)
| _PAGE_RW | _PAGE_USER | _PAGE_PRESENT;
#endif
if(quad_boot) {
......
......@@ -152,7 +152,7 @@ sn_pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *dma_hand
* pcibr_dmatrans_addr ignores a missing PCIIO_DMA_A64 flag on
* PCI-X buses.
*/
if (hwdev->consistent_dma_mask == ~0UL)
if (hwdev->dev.coherent_dma_mask == ~0UL)
*dma_handle = pcibr_dmatrans_addr(vhdl, NULL, phys_addr, size,
PCIIO_DMA_CMD | PCIIO_DMA_A64);
else {
......@@ -169,7 +169,7 @@ sn_pci_alloc_consistent(struct pci_dev *hwdev, size_t size, dma_addr_t *dma_hand
}
}
if (!*dma_handle || *dma_handle > hwdev->consistent_dma_mask) {
if (!*dma_handle || *dma_handle > hwdev->dev.coherent_dma_mask) {
if (dma_map) {
pcibr_dmamap_done(dma_map);
pcibr_dmamap_free(dma_map);
......
......@@ -618,6 +618,7 @@ static void parisc_generic_device_register_recursive( struct parisc_device *dev
tmp1);
/* make the generic dma mask a pointer to the parisc one */
dev->dev.dma_mask = &dev->dma_mask;
dev->dev.coherent_dma_mask = dev->dma_mask;
pr_debug("device_register(%s)\n", dev->dev.bus_id);
device_register(&dev->dev);
}
......
......@@ -372,7 +372,7 @@ static void * pa11_dma_alloc_consistent (struct device *dev, size_t size, dma_ad
** ISA cards will certainly only support 24-bit DMA addressing.
** Not clear if we can, want, or need to support ISA.
*/
if (!dev || *dev->dma_mask != 0xffffffff)
if (!dev || *dev->coherent_dma_mask < 0xffffffff)
gfp |= GFP_DMA;
#endif
return (void *)vaddr;
......
......@@ -54,7 +54,9 @@ struct appldata_mem_data {
u64 freeswap; /* free swap space */
// New in 2.6 -->
u64 pgalloc; /* page allocations */
u64 pgalloc_high; /* page allocations */
u64 pgalloc_normal;
u64 pgalloc_dma;
u64 pgfault; /* page faults (major+minor) */
u64 pgmajfault; /* page faults (major only) */
// <-- New in 2.6
......@@ -69,7 +71,9 @@ static inline void appldata_debug_print(struct appldata_mem_data *mem_data)
P_DEBUG("pgpgout = %8lu KB\n", mem_data->pgpgout);
P_DEBUG("pswpin = %8lu Pages\n", mem_data->pswpin);
P_DEBUG("pswpout = %8lu Pages\n", mem_data->pswpout);
P_DEBUG("pgalloc = %8lu \n", mem_data->pgalloc);
P_DEBUG("pgalloc_high = %8lu \n", mem_data->pgalloc_high);
P_DEBUG("pgalloc_normal = %8lu \n", mem_data->pgalloc_normal);
P_DEBUG("pgalloc_dma = %8lu \n", mem_data->pgalloc_dma);
P_DEBUG("pgfault = %8lu \n", mem_data->pgfault);
P_DEBUG("pgmajfault = %8lu \n", mem_data->pgmajfault);
P_DEBUG("sharedram = %8lu KB\n", mem_data->sharedram);
......@@ -105,11 +109,14 @@ static void appldata_get_mem_data(void *data)
mem_data->pgpgout = ps.pgpgout >> 1;
mem_data->pswpin = ps.pswpin;
mem_data->pswpout = ps.pswpout;
mem_data->pgalloc = ps.pgalloc;
mem_data->pgalloc_high = ps.pgalloc_high;
mem_data->pgalloc_normal = ps.pgalloc_normal;
mem_data->pgalloc_dma = ps.pgalloc_dma;
mem_data->pgfault = ps.pgfault;
mem_data->pgmajfault = ps.pgmajfault;
P_DEBUG("pgalloc = %lu, pgfree = %lu\n", ps.pgalloc, ps.pgfree);
P_DEBUG("pgalloc_high = %lu, pgalloc_normal = %lu, pgalloc_dma = %lu, pgfree = %lu\n",
ps.pgalloc_high, ps.pgalloc_normal, ps.pgalloc_dma, ps.pgfree);
si_meminfo(&val);
mem_data->sharedram = val.sharedram;
......
......@@ -183,7 +183,7 @@ void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
gfp |= GFP_DMA;
dma_mask = 0xffffffff;
} else {
dma_mask = hwdev->consistent_dma_mask;
dma_mask = hwdev->dev.coherent_dma_mask;
}
if (dma_mask == 0)
......
......@@ -187,6 +187,7 @@ static int __init eisa_init_device (struct eisa_root_device *root,
edev->dev.parent = root->dev;
edev->dev.bus = &eisa_bus_type;
edev->dev.dma_mask = &edev->dma_mask;
edev->dev.coherent_dma_mask = edev->dma_mask;
sprintf (edev->dev.bus_id, "%02X:%02X", root->bus_nr, slot);
for (i = 0; i < EISA_MAX_RESOURCES; i++) {
......
......@@ -106,6 +106,7 @@ int __init mca_register_device(int bus, struct mca_device *mca_dev)
sprintf (mca_dev->dev.bus_id, "%02d:%02X", bus, mca_dev->slot);
mca_dev->dma_mask = mca_bus->default_dma_mask;
mca_dev->dev.dma_mask = &mca_dev->dma_mask;
mca_dev->dev.coherent_dma_mask = mca_dev->dma_mask;
if (device_register(&mca_dev->dev))
return 0;
......
......@@ -686,7 +686,7 @@ pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
if (!pci_dma_supported(dev, mask))
return -EIO;
dev->consistent_dma_mask = mask;
dev->dev.coherent_dma_mask = mask;
return 0;
}
......
......@@ -570,7 +570,6 @@ pci_scan_device(struct pci_bus *bus, int devfn)
/* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
set this higher, assuming the system even supports it. */
dev->dma_mask = 0xffffffff;
dev->consistent_dma_mask = 0xffffffff;
if (pci_setup_device(dev) < 0) {
kfree(dev);
return NULL;
......@@ -582,6 +581,7 @@ pci_scan_device(struct pci_bus *bus, int devfn)
pci_name_device(dev);
dev->dev.dma_mask = &dev->dma_mask;
dev->dev.coherent_dma_mask = 0xffffffffull;
return dev;
}
......
......@@ -285,6 +285,12 @@ struct device {
detached from its driver. */
u64 *dma_mask; /* dma mask (if dma'able device) */
u64 coherent_dma_mask;/* Like dma_mask, but for
alloc_coherent mappings as
not all hardware supports
64 bit addresses for consistent
allocations such descriptors. */
struct list_head dma_pools; /* dma pools (if dma'ble) */
void (*release)(struct device * dev);
......
......@@ -80,6 +80,9 @@
/*
* Global page accounting. One instance per CPU. Only unsigned longs are
* allowed.
*
* NOTE: if this structure is changed then mm/page_alloc.c and
* arch/s390/appldata/appldata_mem.c must be updated accordingly
*/
struct page_state {
unsigned long nr_dirty; /* Dirty writeable pages */
......
......@@ -393,11 +393,6 @@ struct pci_dev {
this if your device has broken DMA
or supports 64-bit transfers. */
u64 consistent_dma_mask;/* Like dma_mask, but for
pci_alloc_consistent mappings as
not all hardware supports
64 bit addresses for consistent
allocations such descriptors. */
u32 current_state; /* Current operating state. In ACPI-speak,
this is D0-D3, D0 being fully functional,
and D3 being off. */
......
......@@ -1051,17 +1051,23 @@ int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp)
struct task_struct *p;
struct list_head *l;
struct pid *pid;
int err, retval = -ESRCH;
int retval;
int found;
if (pgrp <= 0)
return -EINVAL;
found = 0;
retval = 0;
for_each_task_pid(pgrp, PIDTYPE_PGID, p, l, pid) {
int err;
found = 1;
err = group_send_sig_info(sig, info, p);
if (retval)
if (!retval)
retval = err;
}
return retval;
return found ? retval : -ESRCH;
}
int
......
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