]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/suse-2.6.27.39/patches.xen/xen3-patch-2.6.27.14-15
Imported linux-2.6.27.39 suse/xen patches.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.xen / xen3-patch-2.6.27.14-15
1 From: Greg Kroah-Hartman <gregkh@suse.de>
2 Subject: Linux 2.6.27.15
3
4 Upstream 2.6.27.15 release from kernel.org
5
6 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
7
8 Automatically created from "patches.kernel.org/patch-2.6.27.14-15" by xen-port-patches.py
9
10 --- sle11-2009-03-16.orig/arch/x86/mm/pageattr-xen.c 2009-03-16 16:38:32.000000000 +0100
11 +++ sle11-2009-03-16/arch/x86/mm/pageattr-xen.c 2009-03-16 16:38:34.000000000 +0100
12 @@ -602,6 +602,36 @@ out_unlock:
13 return 0;
14 }
15
16 +static int __cpa_process_fault(struct cpa_data *cpa, unsigned long vaddr,
17 + int primary)
18 +{
19 + /*
20 + * Ignore all non primary paths.
21 + */
22 + if (!primary)
23 + return 0;
24 +
25 + /*
26 + * Ignore the NULL PTE for kernel identity mapping, as it is expected
27 + * to have holes.
28 + * Also set numpages to '1' indicating that we processed cpa req for
29 + * one virtual address page and its pfn. TBD: numpages can be set based
30 + * on the initial value and the level returned by lookup_address().
31 + */
32 + if (within(vaddr, PAGE_OFFSET,
33 + PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT))) {
34 + cpa->numpages = 1;
35 + cpa->pfn = __pa(vaddr) >> PAGE_SHIFT;
36 + return 0;
37 + } else {
38 + WARN(1, KERN_WARNING "CPA: called for zero pte. "
39 + "vaddr = %lx cpa->vaddr = %lx\n", vaddr,
40 + cpa->vaddr);
41 +
42 + return -EINVAL;
43 + }
44 +}
45 +
46 static int __change_page_attr(struct cpa_data *cpa, int primary)
47 {
48 unsigned long address = cpa->vaddr;
49 @@ -612,17 +642,11 @@ static int __change_page_attr(struct cpa
50 repeat:
51 kpte = lookup_address(address, &level);
52 if (!kpte)
53 - return 0;
54 + return __cpa_process_fault(cpa, address, primary);
55
56 old_pte = *kpte;
57 - if (!__pte_val(old_pte)) {
58 - if (!primary)
59 - return 0;
60 - WARN(1, KERN_WARNING "CPA: called for zero pte. "
61 - "vaddr = %lx cpa->vaddr = %lx\n", address,
62 - cpa->vaddr);
63 - return -EINVAL;
64 - }
65 + if (!__pte_val(old_pte))
66 + return __cpa_process_fault(cpa, address, primary);
67
68 if (level == PG_LEVEL_4K) {
69 pte_t new_pte;
70 @@ -697,12 +721,7 @@ static int cpa_process_alias(struct cpa_
71 * mapping already:
72 */
73 if (!(within(cpa->vaddr, PAGE_OFFSET,
74 - PAGE_OFFSET + (max_low_pfn_mapped << PAGE_SHIFT))
75 -#ifdef CONFIG_X86_64
76 - || within(cpa->vaddr, PAGE_OFFSET + (1UL<<32),
77 - PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT))
78 -#endif
79 - )) {
80 + PAGE_OFFSET + (max_pfn_mapped << PAGE_SHIFT)))) {
81
82 alias_cpa = *cpa;
83 alias_cpa.vaddr = (unsigned long) __va(cpa->pfn << PAGE_SHIFT);
84 --- sle11-2009-03-16.orig/arch/x86/pci/irq-xen.c 2009-03-16 16:38:32.000000000 +0100
85 +++ sle11-2009-03-16/arch/x86/pci/irq-xen.c 2009-03-16 16:38:34.000000000 +0100
86 @@ -579,6 +579,7 @@ static __init int intel_router_probe(str
87 case PCI_DEVICE_ID_INTEL_ICH7_1:
88 case PCI_DEVICE_ID_INTEL_ICH7_30:
89 case PCI_DEVICE_ID_INTEL_ICH7_31:
90 + case PCI_DEVICE_ID_INTEL_TGP_LPC:
91 case PCI_DEVICE_ID_INTEL_ESB2_0:
92 case PCI_DEVICE_ID_INTEL_ICH8_0:
93 case PCI_DEVICE_ID_INTEL_ICH8_1: