Skip to content

Commit

Permalink
Merge branch 'master' into upstream-fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff Garzik committed Jan 30, 2007
2 parents 03ee5b1 + c0d4d57 commit 64c9d27
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 55 deletions.
5 changes: 4 additions & 1 deletion arch/powerpc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -526,12 +526,15 @@ config PPC_IBM_CELL_BLADE
select UDBG_RTAS_CONSOLE

config PPC_PS3
bool "Sony PS3"
bool "Sony PS3 (incomplete)"
depends on PPC_MULTIPLATFORM && PPC64
select PPC_CELL
help
This option enables support for the Sony PS3 game console
and other platforms using the PS3 hypervisor.
Support for this platform is not yet complete, so
enabling this will not result in a bootable kernel on a
PS3 system.

config PPC_NATIVE
bool
Expand Down
2 changes: 1 addition & 1 deletion arch/powerpc/kernel/pci_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -1430,7 +1430,7 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus,

for (ln = pci_root_buses.next; ln != &pci_root_buses; ln = ln->next) {
bus = pci_bus_b(ln);
if (in_bus >= bus->number && in_bus < (bus->number + bus->subordinate))
if (in_bus >= bus->number && in_bus <= bus->subordinate)
break;
bus = NULL;
}
Expand Down
3 changes: 2 additions & 1 deletion arch/powerpc/platforms/ps3/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
obj-y += setup.o mm.o smp.o time.o hvcall.o htab.o repository.o
obj-y += setup.o mm.o time.o hvcall.o htab.o repository.o
obj-y += interrupt.o exports.o os-area.o

obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_SPU_BASE) += spu.o
2 changes: 1 addition & 1 deletion arch/powerpc/platforms/ps3/interrupt.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ int ps3_free_io_irq(unsigned int virq)

result = lv1_destruct_io_irq_outlet(virq_to_hw(virq));

if (!result)
if (result)
pr_debug("%s:%d: lv1_destruct_io_irq_outlet failed: %s\n",
__func__, __LINE__, ps3_result(result));

Expand Down
5 changes: 3 additions & 2 deletions block/scsi_ioctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ static int verify_command(struct file *file, unsigned char *cmd)
static int sg_io(struct file *file, request_queue_t *q,
struct gendisk *bd_disk, struct sg_io_hdr *hdr)
{
unsigned long start_time;
unsigned long start_time, timeout;
int writing = 0, ret = 0;
struct request *rq;
char sense[SCSI_SENSE_BUFFERSIZE];
Expand Down Expand Up @@ -271,7 +271,8 @@ static int sg_io(struct file *file, request_queue_t *q,

rq->cmd_type = REQ_TYPE_BLOCK_PC;

rq->timeout = jiffies_to_msecs(hdr->timeout);
timeout = msecs_to_jiffies(hdr->timeout);
rq->timeout = (timeout < INT_MAX) ? timeout : INT_MAX;
if (!rq->timeout)
rq->timeout = q->sg_timeout;
if (!rq->timeout)
Expand Down
25 changes: 0 additions & 25 deletions drivers/net/sky2.c
Original file line number Diff line number Diff line change
Expand Up @@ -3639,29 +3639,6 @@ static int sky2_resume(struct pci_dev *pdev)
out:
return err;
}

/* BIOS resume runs after device (it's a bug in PM)
* as a temporary workaround on suspend/resume leave MSI disabled
*/
static int sky2_suspend_late(struct pci_dev *pdev, pm_message_t state)
{
struct sky2_hw *hw = pci_get_drvdata(pdev);

free_irq(pdev->irq, hw);
if (hw->msi) {
pci_disable_msi(pdev);
hw->msi = 0;
}
return 0;
}

static int sky2_resume_early(struct pci_dev *pdev)
{
struct sky2_hw *hw = pci_get_drvdata(pdev);
struct net_device *dev = hw->dev[0];

return request_irq(pdev->irq, sky2_intr, IRQF_SHARED, dev->name, hw);
}
#endif

static struct pci_driver sky2_driver = {
Expand All @@ -3672,8 +3649,6 @@ static struct pci_driver sky2_driver = {
#ifdef CONFIG_PM
.suspend = sky2_suspend,
.resume = sky2_resume,
.suspend_late = sky2_suspend_late,
.resume_early = sky2_resume_early,
#endif
};

Expand Down
6 changes: 5 additions & 1 deletion fs/buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -2844,7 +2844,6 @@ int try_to_free_buffers(struct page *page)

spin_lock(&mapping->private_lock);
ret = drop_buffers(page, &buffers_to_free);
spin_unlock(&mapping->private_lock);

/*
* If the filesystem writes its buffers by hand (eg ext3)
Expand All @@ -2855,9 +2854,14 @@ int try_to_free_buffers(struct page *page)
* Also, during truncate, discard_buffer will have marked all
* the page's buffers clean. We discover that here and clean
* the page also.
*
* private_lock must be held over this entire operation in order
* to synchronise against __set_page_dirty_buffers and prevent the
* dirty bit from being lost.
*/
if (ret)
cancel_dirty_page(page, PAGE_CACHE_SIZE);
spin_unlock(&mapping->private_lock);
out:
if (buffers_to_free) {
struct buffer_head *bh = buffers_to_free;
Expand Down
41 changes: 18 additions & 23 deletions mm/page-writeback.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,9 @@ get_dirty_limits(long *pbackground, long *pdirty,

#ifdef CONFIG_HIGHMEM
/*
* If this mapping can only allocate from low memory,
* we exclude high memory from our count.
* We always exclude high memory from our count.
*/
if (mapping && !(mapping_gfp_mask(mapping) & __GFP_HIGHMEM))
available_memory -= totalhigh_pages;
available_memory -= totalhigh_pages;
#endif


Expand Down Expand Up @@ -526,28 +524,25 @@ static struct notifier_block __cpuinitdata ratelimit_nb = {
};

/*
* If the machine has a large highmem:lowmem ratio then scale back the default
* dirty memory thresholds: allowing too much dirty highmem pins an excessive
* number of buffer_heads.
* Called early on to tune the page writeback dirty limits.
*
* We used to scale dirty pages according to how total memory
* related to pages that could be allocated for buffers (by
* comparing nr_free_buffer_pages() to vm_total_pages.
*
* However, that was when we used "dirty_ratio" to scale with
* all memory, and we don't do that any more. "dirty_ratio"
* is now applied to total non-HIGHPAGE memory (by subtracting
* totalhigh_pages from vm_total_pages), and as such we can't
* get into the old insane situation any more where we had
* large amounts of dirty pages compared to a small amount of
* non-HIGHMEM memory.
*
* But we might still want to scale the dirty_ratio by how
* much memory the box has..
*/
void __init page_writeback_init(void)
{
long buffer_pages = nr_free_buffer_pages();
long correction;

correction = (100 * 4 * buffer_pages) / vm_total_pages;

if (correction < 100) {
dirty_background_ratio *= correction;
dirty_background_ratio /= 100;
vm_dirty_ratio *= correction;
vm_dirty_ratio /= 100;

if (dirty_background_ratio <= 0)
dirty_background_ratio = 1;
if (vm_dirty_ratio <= 0)
vm_dirty_ratio = 1;
}
mod_timer(&wb_timer, jiffies + dirty_writeback_interval);
writeback_set_ratelimit();
register_cpu_notifier(&ratelimit_nb);
Expand Down

0 comments on commit 64c9d27

Please sign in to comment.