All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Daniel Castro <evil.dani@gmail.com>
Cc: xen-devel@lists.xensource.com
Subject: Re: C Macros and Xen RING Macros Questions
Date: Fri, 6 Apr 2012 15:54:15 -0400	[thread overview]
Message-ID: <20120406195414.GA13732@phenom.dumpdata.com> (raw)
In-Reply-To: <CAP2B859xAsT7jPckxOzDranK88hM-o2DYHkFW_bCYqxJU-3UVQ@mail.gmail.com>

On Fri, Apr 06, 2012 at 07:20:13PM +0900, Daniel Castro wrote:
> hello All,
> 
> I am still working on the PV Drivers for SeaBIOS using upstream qemu.
> And, I have two questions.
> 1.
> Here is the location of all relevant data structs:
> blkfront_info:0x000fd620 shared_ring:0x0009a000 private_ring:0x0009b000

I surmise this is the guest PFNs.

> DEBUG Read op private ring at 0x0009b000-0x000ab000, idx 63478
> Here is my problem, when I do:
>         ring_req =
> GLOBALFLAT2GLOBAL(RING_GET_REQUEST(GET_GLOBALFLAT(bi->private),GLOBALFLAT2GLOBAL(GET_GLOBALFLAT(bi->private)->req_prod_pvt)));
>  //please ignore the MACROS for now, or read further down.
> I get:
> After RING_GET_REQUEST operation ring request is at 0xe18ea40f id:0
> But I have the feeling that the request should be between
> 0x0009b000-0x000ab000. Right?

That would imply a physical address - but if you are running with
pagetables (which I think you are?) then it would be virtual address.

You should have some basic macros to translate from virtual to physical
and vice-versa.

> 
> 2.
> As you can see in the above code I use some SeaBIOS macros to access
> 32Bit addresses in 16Bit code. My second questions is: How the memory

16-bit code. Refresh my memory - does that mean you can only
use segments and no paging? So you need to move a 16-bit window
around to get to your 32-bit address?

> access macros affect the RING macros? Do I need to rewrite the ring
> macros to use the memory macros inside, for example:

It should fit within a 16-bit (64K) contingous memory space.
I don't think it matters where that the block is - as long as you
have a segment selector activated for that 16-bit block.

> /* How big is this ring? */
> #define RING_SIZE(_r)                                                   \
>     ((_r)->nr_ents)

That tells you just how many entries are on it. Not how big
the structure is. For that it is sizeof(struct ..).

> 
> Should be instead:
> /* How big is this ring? */
> #define RING_SIZE(_r)                                                   \
>     (GET_GLOBAL((_r)->nr_ents))
> 
> SeaBIOS macros need to be around ALL memory accesses.
> 
> This is a short message for something that might be to complex to
> explain briefly, so please ask any questions that you deem necessary
> to understand. Right now, I am developing the first stage of boot when
> the BIOS requests address 7c00 to get the Boot sector. Once I get this
> working we should have a working prototype for PV-drivers in seabios.
> 
> Thank you all for your interest,
> 
> Daniel
> 
> -- 
> +-=====---------------------------+
> | +---------------------------------+ | This space intentionally blank
> for notetaking.
> | |   | Daniel Castro,                |
> | |   | Consultant/Programmer.|
> | |   | U Andes                         |
> +-------------------------------------+
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

  reply	other threads:[~2012-04-06 19:54 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-06 10:20 C Macros and Xen RING Macros Questions Daniel Castro
2012-04-06 19:54 ` Konrad Rzeszutek Wilk [this message]
2012-04-07 11:16   ` Daniel Castro
2012-04-07 12:39     ` Ian Campbell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120406195414.GA13732@phenom.dumpdata.com \
    --to=konrad.wilk@oracle.com \
    --cc=evil.dani@gmail.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.