The code is correct as it is. The frame number goes into bits 12 upwards of
the MSR, and this is equivalent to writing the full address into bits 0
upwards.
-- Keir
On 23/5/08 15:58, "Jean Guyader" <jean.guyader@xxxxxxxxxxxxx> wrote:
>
> hvmloader: pci range cache policy
>
> Use frame number instead address when we write the msr for the mtrr of
> the pci range.
>
> Signed-off-by: Jean Guyader <jean.guyader@xxxxxxxxxxxxx>
>
> diff -r ef7525e87030 tools/firmware/hvmloader/cacheattr.c
> --- a/tools/firmware/hvmloader/cacheattr.c Fri May 23 11:58:08 2008 +0100
> +++ b/tools/firmware/hvmloader/cacheattr.c Fri May 23 15:53:32 2008 +0100
> @@ -89,9 +89,9 @@ void cacheattr_init(void)
> if ( nr_var_ranges != 0 )
> {
> /* A single UC range covering PCI space. */
> - wrmsr(MSR_MTRRphysBase(0), PCI_MEMBASE);
> + wrmsr(MSR_MTRRphysBase(0), PCI_MEMBASE >> PAGE_SHIFT);
> wrmsr(MSR_MTRRphysMask(0),
> - ((uint64_t)(int32_t)PCI_MEMBASE & addr_mask) | (1u << 11));
> + (((uint64_t)(int32_t)PCI_MEMBASE & addr_mask) | (1u << 11)) >>
> PAGE_SHIFT);
> printf("var MTRRs ... ");
> }
>
> diff -r ef7525e87030 tools/firmware/hvmloader/util.h
> --- a/tools/firmware/hvmloader/util.h Fri May 23 11:58:08 2008 +0100
> +++ b/tools/firmware/hvmloader/util.h Fri May 23 15:53:32 2008 +0100
> @@ -9,6 +9,8 @@
>
> #undef NULL
> #define NULL ((void*)0)
> +
> +#define PAGE_SHIFT 12
>
> void __assert_failed(char *assertion, char *file, int line)
> __attribute__((noreturn));
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|