svn commit: r247814 - in head: . sys/amd64/conf sys/cam/ctl sys/conf sys/i386/conf
Alfred Perlstein
bright at mu.org
Mon Mar 4 22:27:33 UTC 2013
Ken,
By the time ctl_init is called, it looks like enough of the vm is there
such that you could probe for physmem. (I may be wrong and apologize
if so)
Look at kern_mib.c:
> sysctl_hw_physmem(SYSCTL_HANDLER_ARGS)
> {
> u_long val;
>
> val = ctob(physmem);
> return (sysctl_handle_long(oidp, &val, 0, req));
> }
>
> SYSCTL_PROC(_hw, HW_PHYSMEM, physmem, CTLTYPE_ULONG | CTLFLAG_RD,
> 0, 0, sysctl_hw_physmem, "LU", "");
Then the logic could be:
IF (set(tunable_ctl_onoff))
ctl_onoff = tunable_ctl_onoff;
ELSE
ctl_onoff = physmem > ctl_threshold;
This would get you much more people testing the code and the best out of
the box experience for people downloading.
Hope this helps.
-Alfred
On 3/4/13 1:18 PM, Kenneth D. Merry wrote:
> Author: ken
> Date: Mon Mar 4 21:18:45 2013
> New Revision: 247814
> URL: http://svnweb.freebsd.org/changeset/base/247814
>
> Log:
> Re-enable CTL in GENERIC on i386 and amd64, but turn on the CTL disable
> tunable by default.
>
> This will allow GENERIC configurations to boot on small memory boxes, but
> not require end users who want to use CTL to recompile their kernel. They
> can simply set kern.cam.ctl.disable=0 in loader.conf.
>
> The eventual solution to the memory usage problem is to change the way
> CTL allocates memory to be more configurable, but this should fix things
> for small memory situations in the mean time.
>
> UPDATING: Explain the change in the CTL configuration, and
> how users can enable CTL if they would like to use
> it.
>
> sys/conf/options: Add a new option, CTL_DISABLE, that prevents CTL
> from initializing.
>
> ctl.c: If CTL_DISABLE is turned on, don't initialize.
>
> i386/conf/GENERIC,
> amd64/conf/GENERIC: Re-enable device ctl, and add the CTL_DISABLE
> option.
>
> Modified:
> head/UPDATING
> head/sys/amd64/conf/GENERIC
> head/sys/cam/ctl/ctl.c
> head/sys/conf/options
> head/sys/i386/conf/GENERIC
>
> Modified: head/UPDATING
> ==============================================================================
> --- head/UPDATING Mon Mar 4 21:09:22 2013 (r247813)
> +++ head/UPDATING Mon Mar 4 21:18:45 2013 (r247814)
> @@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
> disable the most expensive debugging functionality run
> "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
>
> +20130304:
> + The ctl device has been re-enabled in GENERIC for i386 and amd64,
> + but does not initialize by default (because of the new CTL_DISABLE
> + option) to save memory. To re-enable it, remove the CTL_DISABLE
> + option from the kernel config file or set kern.cam.ctl.disable=0
> + in /boot/loader.conf.
> +
> 20130301:
> The ctl device has been disabled in GENERIC for i386 and amd64.
> This was done due to the extra memory being allocated at system
>
> Modified: head/sys/amd64/conf/GENERIC
> ==============================================================================
> --- head/sys/amd64/conf/GENERIC Mon Mar 4 21:09:22 2013 (r247813)
> +++ head/sys/amd64/conf/GENERIC Mon Mar 4 21:18:45 2013 (r247814)
> @@ -138,7 +138,10 @@ device sa # Sequential Access (tape et
> device cd # CD
> device pass # Passthrough device (direct ATA/SCSI access)
> device ses # Enclosure Services (SES and SAF-TE)
> -#device ctl # CAM Target Layer
> +device ctl # CAM Target Layer
> +options CTL_DISABLE # Disable CTL by default to save memory.
> + # Re-enable with kern.cam.ctl.disable=0 in
> + # /boot/loader.conf
>
> # RAID controllers interfaced to the SCSI subsystem
> device amr # AMI MegaRAID
>
> Modified: head/sys/cam/ctl/ctl.c
> ==============================================================================
> --- head/sys/cam/ctl/ctl.c Mon Mar 4 21:09:22 2013 (r247813)
> +++ head/sys/cam/ctl/ctl.c Mon Mar 4 21:18:45 2013 (r247814)
> @@ -78,6 +78,8 @@ __FBSDID("$FreeBSD$");
> #include <cam/ctl/ctl_scsi_all.h>
> #include <cam/ctl/ctl_error.h>
>
> +#include "opt_ctl.h"
> +
> struct ctl_softc *control_softc = NULL;
>
> /*
> @@ -317,7 +319,11 @@ static int persis_offset;
> static uint8_t ctl_pause_rtr;
> static int ctl_is_single;
> static int index_to_aps_page;
> +#ifdef CTL_DISABLE
> +int ctl_disable = 1;
> +#else
> int ctl_disable = 0;
> +#endif
>
> SYSCTL_NODE(_kern_cam, OID_AUTO, ctl, CTLFLAG_RD, 0, "CAM Target Layer");
> SYSCTL_INT(_kern_cam_ctl, OID_AUTO, disable, CTLFLAG_RDTUN, &ctl_disable, 0,
>
> Modified: head/sys/conf/options
> ==============================================================================
> --- head/sys/conf/options Mon Mar 4 21:09:22 2013 (r247813)
> +++ head/sys/conf/options Mon Mar 4 21:18:45 2013 (r247814)
> @@ -329,6 +329,9 @@ SCSI_PT_DEFAULT_TIMEOUT opt_pt.h
> # Options used only in cam/scsi/scsi_ses.c
> SES_ENABLE_PASSTHROUGH opt_ses.h
>
> +# Options used only in cam/ctl
> +CTL_DISABLE opt_ctl.h
> +
> # Options used in dev/sym/ (Symbios SCSI driver).
> SYM_SETUP_LP_PROBE_MAP opt_sym.h #-Low Priority Probe Map (bits)
> # Allows the ncr to take precedence
>
> Modified: head/sys/i386/conf/GENERIC
> ==============================================================================
> --- head/sys/i386/conf/GENERIC Mon Mar 4 21:09:22 2013 (r247813)
> +++ head/sys/i386/conf/GENERIC Mon Mar 4 21:18:45 2013 (r247814)
> @@ -146,7 +146,10 @@ device sa # Sequential Access (tape et
> device cd # CD
> device pass # Passthrough device (direct ATA/SCSI access)
> device ses # Enclosure Services (SES and SAF-TE)
> -#device ctl # CAM Target Layer
> +device ctl # CAM Target Layer
> +options CTL_DISABLE # Disable CTL by default to save memory.
> + # Re-enable with kern.cam.ctl.disable=0 in
> + # /boot/loader.conf
>
> # RAID controllers interfaced to the SCSI subsystem
> device amr # AMI MegaRAID
>
More information about the svn-src-head
mailing list