From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Albert Herranz <albert_herranz@yahoo.es>
Cc: linux-usb@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org, x86@kernel.org,
linux-ia64@vger.kernel.org
Subject: Re: [LKML] [RFC PATCH v3 05/11] swiotlb: add
Date: Mon, 08 Mar 2010 16:59:40 +0000 [thread overview]
Message-ID: <20100308165940.GC4568@phenom.dumpdata.com> (raw)
In-Reply-To: <1267963912-984-6-git-send-email-albert_herranz@yahoo.es>
On Sun, Mar 07, 2010 at 01:11:46PM +0100, Albert Herranz wrote:
> The current SWIOTLB code uses a default of 64MB for the IO TLB area.
> This size can be influenced using a kernel command line parameter "swiotlb".
> Unfortunately, the parsing of the kernel command line is done _after_ the
> swiotlb is initialized on some architectures.
Why can't it be moved up? I mean move the parsing of the kernel
parameters before the PCI subsystem?
>
> This patch adds a new function swiotlb_set_default_size() which can be used
> before swiotlb_init() to indicate the desired IO TLB area size in bytes.
>
> This will be used later to implement a smaller IO TLB on the Nintendo Wii
> video game console which just comes with 24MB + 64MB of RAM.
Use the io_tlb_nslabs, which is what swiotlb_init_with_default_size uses
(the passed in argument is only used if io_tlb_nslabs is not set).
>
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
> CC: linuxppc-dev@lists.ozlabs.org
> CC: linux-kernel@vger.kernel.org
> CC: x86@kernel.org
> CC: linux-ia64@vger.kernel.org
> ---
> include/linux/swiotlb.h | 2 ++
> lib/swiotlb.c | 27 ++++++++++++++++++++++++++-
> 2 files changed, 28 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
> index 3954228..2af6a45 100644
> --- a/include/linux/swiotlb.h
> +++ b/include/linux/swiotlb.h
> @@ -22,6 +22,8 @@ extern int swiotlb_force;
> */
> #define IO_TLB_SHIFT 11
>
> +extern size_t __init swiotlb_set_default_size(size_t size);
> +
> extern void swiotlb_init(int verbose);
>
> extern void *swiotlb_alloc_boot(size_t bytes, unsigned long nslabs);
> diff --git a/lib/swiotlb.c b/lib/swiotlb.c
> index 8f2dad9..c99512d 100644
> --- a/lib/swiotlb.c
> +++ b/lib/swiotlb.c
> @@ -73,6 +73,11 @@ static char *io_tlb_start, *io_tlb_end;
> static unsigned long io_tlb_nslabs;
>
> /*
> + * Default size for the IO TLB (64MB).
> + */
> +static __initdata size_t io_tlb_default_size = 64 * (1<<20);
> +
> +/*
> * When the IOMMU overflows we return a fallback buffer. This sets the size.
> */
> static unsigned long io_tlb_overflow = 32*1024;
> @@ -117,6 +122,26 @@ setup_io_tlb_npages(char *str)
> __setup("swiotlb=", setup_io_tlb_npages);
> /* make io_tlb_overflow tunable too? */
>
> +/**
> + * swiotlb_set_default_size() - set the default size for the IO TLB
> + * @size: size in bytes of the IO TLB
> + *
> + * A platform can use this function to change the default size of the
> + * IO TLB when the default of 64MB is not suitable.
> + * This function must be called before swiotlb_init().
> + *
> + * Note that on some platforms this is the only way to influence the
> + * size of the IO TLB, as the command line may be parsed _after_ the
> + * IO TLB is initialized.
> + */
> +size_t __init swiotlb_set_default_size(size_t size)
> +{
> + size_t previous_size = io_tlb_default_size;
> +
> + io_tlb_default_size = size;
> + return previous_size;
> +}
> +
> void * __weak __init swiotlb_alloc_boot(size_t size, unsigned long nslabs)
> {
> return alloc_bootmem_low_pages(size);
> @@ -193,7 +218,7 @@ swiotlb_init_with_default_size(size_t default_size, int verbose)
> void __init
> swiotlb_init(int verbose)
> {
> - swiotlb_init_with_default_size(64 * (1<<20), verbose); /* default to 64MB */
> + swiotlb_init_with_default_size(io_tlb_default_size, verbose);
> }
>
> /*
> --
> 1.6.3.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Albert Herranz <albert_herranz@yahoo.es>
Cc: x86@kernel.org, linux-ia64@vger.kernel.org,
linux-usb@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org
Subject: Re: [LKML] [RFC PATCH v3 05/11] swiotlb: add swiotlb_set_default_size()
Date: Mon, 8 Mar 2010 11:59:40 -0500 [thread overview]
Message-ID: <20100308165940.GC4568@phenom.dumpdata.com> (raw)
In-Reply-To: <1267963912-984-6-git-send-email-albert_herranz@yahoo.es>
On Sun, Mar 07, 2010 at 01:11:46PM +0100, Albert Herranz wrote:
> The current SWIOTLB code uses a default of 64MB for the IO TLB area.
> This size can be influenced using a kernel command line parameter "swiotlb".
> Unfortunately, the parsing of the kernel command line is done _after_ the
> swiotlb is initialized on some architectures.
Why can't it be moved up? I mean move the parsing of the kernel
parameters before the PCI subsystem?
>
> This patch adds a new function swiotlb_set_default_size() which can be used
> before swiotlb_init() to indicate the desired IO TLB area size in bytes.
>
> This will be used later to implement a smaller IO TLB on the Nintendo Wii
> video game console which just comes with 24MB + 64MB of RAM.
Use the io_tlb_nslabs, which is what swiotlb_init_with_default_size uses
(the passed in argument is only used if io_tlb_nslabs is not set).
>
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
> CC: linuxppc-dev@lists.ozlabs.org
> CC: linux-kernel@vger.kernel.org
> CC: x86@kernel.org
> CC: linux-ia64@vger.kernel.org
> ---
> include/linux/swiotlb.h | 2 ++
> lib/swiotlb.c | 27 ++++++++++++++++++++++++++-
> 2 files changed, 28 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
> index 3954228..2af6a45 100644
> --- a/include/linux/swiotlb.h
> +++ b/include/linux/swiotlb.h
> @@ -22,6 +22,8 @@ extern int swiotlb_force;
> */
> #define IO_TLB_SHIFT 11
>
> +extern size_t __init swiotlb_set_default_size(size_t size);
> +
> extern void swiotlb_init(int verbose);
>
> extern void *swiotlb_alloc_boot(size_t bytes, unsigned long nslabs);
> diff --git a/lib/swiotlb.c b/lib/swiotlb.c
> index 8f2dad9..c99512d 100644
> --- a/lib/swiotlb.c
> +++ b/lib/swiotlb.c
> @@ -73,6 +73,11 @@ static char *io_tlb_start, *io_tlb_end;
> static unsigned long io_tlb_nslabs;
>
> /*
> + * Default size for the IO TLB (64MB).
> + */
> +static __initdata size_t io_tlb_default_size = 64 * (1<<20);
> +
> +/*
> * When the IOMMU overflows we return a fallback buffer. This sets the size.
> */
> static unsigned long io_tlb_overflow = 32*1024;
> @@ -117,6 +122,26 @@ setup_io_tlb_npages(char *str)
> __setup("swiotlb=", setup_io_tlb_npages);
> /* make io_tlb_overflow tunable too? */
>
> +/**
> + * swiotlb_set_default_size() - set the default size for the IO TLB
> + * @size: size in bytes of the IO TLB
> + *
> + * A platform can use this function to change the default size of the
> + * IO TLB when the default of 64MB is not suitable.
> + * This function must be called before swiotlb_init().
> + *
> + * Note that on some platforms this is the only way to influence the
> + * size of the IO TLB, as the command line may be parsed _after_ the
> + * IO TLB is initialized.
> + */
> +size_t __init swiotlb_set_default_size(size_t size)
> +{
> + size_t previous_size = io_tlb_default_size;
> +
> + io_tlb_default_size = size;
> + return previous_size;
> +}
> +
> void * __weak __init swiotlb_alloc_boot(size_t size, unsigned long nslabs)
> {
> return alloc_bootmem_low_pages(size);
> @@ -193,7 +218,7 @@ swiotlb_init_with_default_size(size_t default_size, int verbose)
> void __init
> swiotlb_init(int verbose)
> {
> - swiotlb_init_with_default_size(64 * (1<<20), verbose); /* default to 64MB */
> + swiotlb_init_with_default_size(io_tlb_default_size, verbose);
> }
>
> /*
> --
> 1.6.3.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Albert Herranz <albert_herranz@yahoo.es>
Cc: linux-usb@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org, x86@kernel.org,
linux-ia64@vger.kernel.org
Subject: Re: [LKML] [RFC PATCH v3 05/11] swiotlb: add swiotlb_set_default_size()
Date: Mon, 8 Mar 2010 11:59:40 -0500 [thread overview]
Message-ID: <20100308165940.GC4568@phenom.dumpdata.com> (raw)
In-Reply-To: <1267963912-984-6-git-send-email-albert_herranz@yahoo.es>
On Sun, Mar 07, 2010 at 01:11:46PM +0100, Albert Herranz wrote:
> The current SWIOTLB code uses a default of 64MB for the IO TLB area.
> This size can be influenced using a kernel command line parameter "swiotlb".
> Unfortunately, the parsing of the kernel command line is done _after_ the
> swiotlb is initialized on some architectures.
Why can't it be moved up? I mean move the parsing of the kernel
parameters before the PCI subsystem?
>
> This patch adds a new function swiotlb_set_default_size() which can be used
> before swiotlb_init() to indicate the desired IO TLB area size in bytes.
>
> This will be used later to implement a smaller IO TLB on the Nintendo Wii
> video game console which just comes with 24MB + 64MB of RAM.
Use the io_tlb_nslabs, which is what swiotlb_init_with_default_size uses
(the passed in argument is only used if io_tlb_nslabs is not set).
>
> Signed-off-by: Albert Herranz <albert_herranz@yahoo.es>
> CC: linuxppc-dev@lists.ozlabs.org
> CC: linux-kernel@vger.kernel.org
> CC: x86@kernel.org
> CC: linux-ia64@vger.kernel.org
> ---
> include/linux/swiotlb.h | 2 ++
> lib/swiotlb.c | 27 ++++++++++++++++++++++++++-
> 2 files changed, 28 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h
> index 3954228..2af6a45 100644
> --- a/include/linux/swiotlb.h
> +++ b/include/linux/swiotlb.h
> @@ -22,6 +22,8 @@ extern int swiotlb_force;
> */
> #define IO_TLB_SHIFT 11
>
> +extern size_t __init swiotlb_set_default_size(size_t size);
> +
> extern void swiotlb_init(int verbose);
>
> extern void *swiotlb_alloc_boot(size_t bytes, unsigned long nslabs);
> diff --git a/lib/swiotlb.c b/lib/swiotlb.c
> index 8f2dad9..c99512d 100644
> --- a/lib/swiotlb.c
> +++ b/lib/swiotlb.c
> @@ -73,6 +73,11 @@ static char *io_tlb_start, *io_tlb_end;
> static unsigned long io_tlb_nslabs;
>
> /*
> + * Default size for the IO TLB (64MB).
> + */
> +static __initdata size_t io_tlb_default_size = 64 * (1<<20);
> +
> +/*
> * When the IOMMU overflows we return a fallback buffer. This sets the size.
> */
> static unsigned long io_tlb_overflow = 32*1024;
> @@ -117,6 +122,26 @@ setup_io_tlb_npages(char *str)
> __setup("swiotlb=", setup_io_tlb_npages);
> /* make io_tlb_overflow tunable too? */
>
> +/**
> + * swiotlb_set_default_size() - set the default size for the IO TLB
> + * @size: size in bytes of the IO TLB
> + *
> + * A platform can use this function to change the default size of the
> + * IO TLB when the default of 64MB is not suitable.
> + * This function must be called before swiotlb_init().
> + *
> + * Note that on some platforms this is the only way to influence the
> + * size of the IO TLB, as the command line may be parsed _after_ the
> + * IO TLB is initialized.
> + */
> +size_t __init swiotlb_set_default_size(size_t size)
> +{
> + size_t previous_size = io_tlb_default_size;
> +
> + io_tlb_default_size = size;
> + return previous_size;
> +}
> +
> void * __weak __init swiotlb_alloc_boot(size_t size, unsigned long nslabs)
> {
> return alloc_bootmem_low_pages(size);
> @@ -193,7 +218,7 @@ swiotlb_init_with_default_size(size_t default_size, int verbose)
> void __init
> swiotlb_init(int verbose)
> {
> - swiotlb_init_with_default_size(64 * (1<<20), verbose); /* default to 64MB */
> + swiotlb_init_with_default_size(io_tlb_default_size, verbose);
> }
>
> /*
> --
> 1.6.3.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2010-03-08 16:59 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-07 12:11 [RFC PATCH v3 00/11] wii: add usb 2.0 support Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 01/11] powerpc: add per-device dma coherent support Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 02/11] powerpc: add min_direct_dma_addr Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 03/11] swiotbl: add back swiotlb_alloc_boot() Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE PowerPC platforms Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-08 16:55 ` [LKML] [RFC PATCH v3 04/11] swiotlb: support Konrad Rzeszutek Wilk
2010-03-08 16:55 ` [LKML] [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE PowerPC platforms Konrad Rzeszutek Wilk
2010-03-08 16:55 ` Konrad Rzeszutek Wilk
2010-03-09 18:07 ` [LKML] [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE Albert Herranz
2010-03-09 18:07 ` [LKML] [RFC PATCH v3 04/11] swiotlb: support NOT_COHERENT_CACHE PowerPC platforms Albert Herranz
2010-03-09 18:07 ` Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 05/11] swiotlb: add swiotlb_set_default_size() Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-07 12:11 ` Albert Herranz
2010-03-08 16:59 ` Konrad Rzeszutek Wilk [this message]
2010-03-08 16:59 ` [LKML] " Konrad Rzeszutek Wilk
2010-03-08 16:59 ` Konrad Rzeszutek Wilk
2010-03-09 18:38 ` Albert Herranz
2010-03-09 18:38 ` Albert Herranz
2010-03-09 18:38 ` Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 06/11] USB: refactor unmap_urb_for_dma/map_urb_for_dma Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 07/11] USB: add HCD_NO_COHERENT_MEM host controller driver flag Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 08/11] wii: have generic dma coherent Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 09/11] wii: add mem2 dma mapping ops Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 10/11] wii: enable swiotlb Albert Herranz
2010-03-07 12:11 ` [RFC PATCH v3 11/11] wii: hollywood ehci controller support Albert Herranz
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=20100308165940.GC4568@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=albert_herranz@yahoo.es \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=x86@kernel.org \
/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.