diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-08-30 18:54:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-08-30 18:54:55 -0400 |
commit | df31405a9a240e8ea882953ea90736ff57b47643 (patch) | |
tree | 082b1c061f976a4f9031f7e44b77d50a959a28de | |
parent | 7c30b0653f1bcaf04f8abf24cad5c1e642a3da47 (diff) | |
parent | 404dda854b8bb04df72405d5088fa3e6100aef36 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
[SUNLANCE]: Fix probing problem.
[SPARC64]: Fix X server hangs due to large pages.
-rw-r--r-- | arch/sparc64/mm/generic.c | 2 | ||||
-rw-r--r-- | drivers/net/sunlance.c | 27 |
2 files changed, 13 insertions, 16 deletions
diff --git a/arch/sparc64/mm/generic.c b/arch/sparc64/mm/generic.c index 8cb06205d265..af9d81db0b38 100644 --- a/arch/sparc64/mm/generic.c +++ b/arch/sparc64/mm/generic.c | |||
@@ -69,6 +69,8 @@ static inline void io_remap_pte_range(struct mm_struct *mm, pte_t * pte, | |||
69 | } else | 69 | } else |
70 | offset += PAGE_SIZE; | 70 | offset += PAGE_SIZE; |
71 | 71 | ||
72 | if (pte_write(entry)) | ||
73 | entry = pte_mkdirty(entry); | ||
72 | do { | 74 | do { |
73 | BUG_ON(!pte_none(*pte)); | 75 | BUG_ON(!pte_none(*pte)); |
74 | set_pte_at(mm, address, pte, entry); | 76 | set_pte_at(mm, address, pte, entry); |
diff --git a/drivers/net/sunlance.c b/drivers/net/sunlance.c index 0e3fdf7c6dd3..ec0413609f36 100644 --- a/drivers/net/sunlance.c +++ b/drivers/net/sunlance.c | |||
@@ -1566,20 +1566,21 @@ static int __exit sunlance_sun4_remove(void) | |||
1566 | static int __devinit sunlance_sbus_probe(struct of_device *dev, const struct of_device_id *match) | 1566 | static int __devinit sunlance_sbus_probe(struct of_device *dev, const struct of_device_id *match) |
1567 | { | 1567 | { |
1568 | struct sbus_dev *sdev = to_sbus_device(&dev->dev); | 1568 | struct sbus_dev *sdev = to_sbus_device(&dev->dev); |
1569 | struct device_node *dp = dev->node; | ||
1570 | int err; | 1569 | int err; |
1571 | 1570 | ||
1572 | if (!strcmp(dp->name, "le")) { | 1571 | if (sdev->parent) { |
1573 | err = sparc_lance_probe_one(sdev, NULL, NULL); | 1572 | struct of_device *parent = &sdev->parent->ofdev; |
1574 | } else if (!strcmp(dp->name, "ledma")) { | ||
1575 | struct sbus_dma *ledma = find_ledma(sdev); | ||
1576 | 1573 | ||
1577 | err = sparc_lance_probe_one(sdev->child, ledma, NULL); | 1574 | if (!strcmp(parent->node->name, "ledma")) { |
1578 | } else { | 1575 | struct sbus_dma *ledma = find_ledma(to_sbus_device(&parent->dev)); |
1579 | BUG_ON(strcmp(dp->name, "lebuffer")); | ||
1580 | 1576 | ||
1581 | err = sparc_lance_probe_one(sdev->child, NULL, sdev); | 1577 | err = sparc_lance_probe_one(sdev, ledma, NULL); |
1582 | } | 1578 | } else if (!strcmp(parent->node->name, "lebuffer")) { |
1579 | err = sparc_lance_probe_one(sdev, NULL, to_sbus_device(&parent->dev)); | ||
1580 | } else | ||
1581 | err = sparc_lance_probe_one(sdev, NULL, NULL); | ||
1582 | } else | ||
1583 | err = sparc_lance_probe_one(sdev, NULL, NULL); | ||
1583 | 1584 | ||
1584 | return err; | 1585 | return err; |
1585 | } | 1586 | } |
@@ -1604,12 +1605,6 @@ static struct of_device_id sunlance_sbus_match[] = { | |||
1604 | { | 1605 | { |
1605 | .name = "le", | 1606 | .name = "le", |
1606 | }, | 1607 | }, |
1607 | { | ||
1608 | .name = "ledma", | ||
1609 | }, | ||
1610 | { | ||
1611 | .name = "lebuffer", | ||
1612 | }, | ||
1613 | {}, | 1608 | {}, |
1614 | }; | 1609 | }; |
1615 | 1610 | ||